commit e9aea64a2e74d808087bb104d60d72862f1dc907 Author: github-actions[bot] Date: Sat Dec 6 01:42:39 2025 +0000 deploy: 6898c126e347e3dbd4cf22a8429f6bb36660eb5f diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/developer/404.html b/developer/404.html new file mode 100644 index 0000000..ce6d4a8 --- /dev/null +++ b/developer/404.html @@ -0,0 +1,18 @@ + + + + + +Tibber Prices - Developer Guide + + + + + + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/developer/api-reference.html b/developer/api-reference.html new file mode 100644 index 0000000..510c9d0 --- /dev/null +++ b/developer/api-reference.html @@ -0,0 +1,96 @@ + + + + + +API Reference | Tibber Prices - Developer Guide + + + + + + + + + +
Skip to main content
Version: Next 🚧

API Reference

+

Documentation of the Tibber GraphQL API used by this integration.

+

GraphQL Endpoint​

+
https://api.tibber.com/v1-beta/gql
+

Authentication: Bearer token in Authorization header

+

Queries Used​

+

User Data Query​

+

Fetches home information and metadata:

+
query {
viewer {
homes {
id
appNickname
address {
address1
postalCode
city
country
}
timeZone
currentSubscription {
priceInfo {
current {
currency
}
}
}
meteringPointData {
consumptionEan
gridAreaCode
}
}
}
}
+

Cached for: 24 hours

+

Price Data Query​

+

Fetches quarter-hourly prices:

+
query($homeId: ID!) {
viewer {
home(id: $homeId) {
currentSubscription {
priceInfo {
range(resolution: QUARTER_HOURLY, first: 384) {
nodes {
total
startsAt
level
}
}
}
}
}
}
}
+

Parameters:

+
    +
  • homeId: Tibber home identifier
  • +
  • resolution: Always QUARTER_HOURLY
  • +
  • first: 384 intervals (4 days of data)
  • +
+

Cached until: Midnight local time

+

Rate Limits​

+

Tibber API rate limits (as of 2024):

+
    +
  • 5000 requests per hour per token
  • +
  • Burst limit: 100 requests per minute
  • +
+

Integration stays well below these limits:

+
    +
  • Polls every 15 minutes = 96 requests/day
  • +
  • User data cached for 24h = 1 request/day
  • +
  • Total: ~100 requests/day per home
  • +
+

Response Format​

+

Price Node Structure​

+
{
"total": 0.2456,
"startsAt": "2024-12-06T14:00:00.000+01:00",
"level": "NORMAL"
}
+

Fields:

+
    +
  • total: Price including VAT and fees (currency's major unit, e.g., EUR)
  • +
  • startsAt: ISO 8601 timestamp with timezone
  • +
  • level: Tibber's own classification (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE)
  • +
+

Currency Information​

+
{
"currency": "EUR"
}
+

Supported currencies:

+
    +
  • EUR (Euro) - displayed as ct/kWh
  • +
  • NOK (Norwegian Krone) - displayed as ΓΈre/kWh
  • +
  • SEK (Swedish Krona) - displayed as ΓΆre/kWh
  • +
+

Error Handling​

+

Common Error Responses​

+

Invalid Token:

+
{
"errors": [{
"message": "Unauthorized",
"extensions": {
"code": "UNAUTHENTICATED"
}
}]
}
+

Rate Limit Exceeded:

+
{
"errors": [{
"message": "Too Many Requests",
"extensions": {
"code": "RATE_LIMIT_EXCEEDED"
}
}]
}
+

Home Not Found:

+
{
"errors": [{
"message": "Home not found",
"extensions": {
"code": "NOT_FOUND"
}
}]
}
+

Integration handles these with:

+
    +
  • Exponential backoff retry (3 attempts)
  • +
  • ConfigEntryAuthFailed for auth errors
  • +
  • ConfigEntryNotReady for temporary failures
  • +
+

Data Transformation​

+

Raw API data is enriched with:

+
    +
  • Trailing 24h average - Calculated from previous intervals
  • +
  • Leading 24h average - Calculated from future intervals
  • +
  • Price difference % - Deviation from average
  • +
  • Custom rating - Based on user thresholds (different from Tibber's level)
  • +
+

See utils/price.py for enrichment logic.

+
+

πŸ’‘ External Resources:

+
+ + \ No newline at end of file diff --git a/developer/architecture.html b/developer/architecture.html new file mode 100644 index 0000000..9c69531 --- /dev/null +++ b/developer/architecture.html @@ -0,0 +1,214 @@ + + + + + +Architecture | Tibber Prices - Developer Guide + + + + + + + + + +
Skip to main content
Version: Next 🚧

Architecture

+

This document provides a visual overview of the integration's architecture, focusing on end-to-end data flow and caching layers.

+

For detailed implementation patterns, see AGENTS.md.

+
+

End-to-End Data Flow​

+ +

Flow Description​

+
    +
  1. +

    Setup (__init__.py)

    +
      +
    • Integration loads, creates coordinator instance
    • +
    • Registers entity platforms (sensor, binary_sensor)
    • +
    • Sets up custom services
    • +
    +
  2. +
  3. +

    Data Fetch (every 15 minutes)

    +
      +
    • Coordinator triggers update via api.py
    • +
    • API client checks persistent cache first (coordinator/cache.py)
    • +
    • If cache valid β†’ return cached data
    • +
    • If cache stale β†’ query Tibber GraphQL API
    • +
    • Store fresh data in persistent cache (survives HA restart)
    • +
    +
  4. +
  5. +

    Price Enrichment

    +
      +
    • Coordinator passes raw prices to DataTransformer
    • +
    • Transformer checks transformation cache (memory)
    • +
    • If cache valid β†’ return enriched data
    • +
    • If cache invalid β†’ enrich via price_utils.py + average_utils.py +
        +
      • Calculate 24h trailing/leading averages
      • +
      • Calculate price differences (% from average)
      • +
      • Assign rating levels (LOW/NORMAL/HIGH)
      • +
      +
    • +
    • Store enriched data in transformation cache
    • +
    +
  6. +
  7. +

    Period Calculation

    +
      +
    • Coordinator passes enriched data to PeriodCalculator
    • +
    • Calculator computes hash from prices + config
    • +
    • If hash matches cache β†’ return cached periods
    • +
    • If hash differs β†’ recalculate best/peak price periods
    • +
    • Store periods with new hash
    • +
    +
  8. +
  9. +

    Entity Updates

    +
      +
    • Coordinator provides complete data (prices + periods)
    • +
    • Sensors read values via unified handlers
    • +
    • Binary sensors evaluate period states
    • +
    • Entities update on quarter-hour boundaries (00/15/30/45)
    • +
    +
  10. +
  11. +

    Service Calls

    +
      +
    • Custom services access coordinator data directly
    • +
    • Return formatted responses (JSON, ApexCharts format)
    • +
    +
  12. +
+
+

Caching Architecture​

+

Overview​

+

The integration uses 5 independent caching layers for optimal performance:

+
LayerLocationLifetimeInvalidationMemory
API Cachecoordinator/cache.py24h (user)
Until midnight (prices)
Automatic50KB
Translation Cacheconst.pyUntil HA restartNever5KB
Config Cachecoordinator/*Until config changeExplicit1KB
Period Cachecoordinator/periods.pyUntil data/config changeHash-based10KB
Transformation Cachecoordinator/data_transformation.pyUntil midnight/configAutomatic60KB
+

Total cache overhead: ~126KB per coordinator instance (main entry + subentries)

+

Cache Coordination​

+ +

Key insight: No cascading invalidations - each cache is independent and rebuilds on-demand.

+

For detailed cache behavior, see Caching Strategy.

+
+

Component Responsibilities​

+

Core Components​

+
ComponentFileResponsibility
API Clientapi.pyGraphQL queries to Tibber, retry logic, error handling
Coordinatorcoordinator.pyUpdate orchestration, cache management, absolute-time scheduling with boundary tolerance
Data Transformercoordinator/data_transformation.pyPrice enrichment (averages, ratings, differences)
Period Calculatorcoordinator/periods.pyBest/peak price period calculation with relaxation
Sensorssensor/80+ entities for prices, levels, ratings, statistics
Binary Sensorsbinary_sensor/Period indicators (best/peak price active)
Servicesservices/Custom service endpoints (get_chartdata, get_apexcharts_yaml, refresh_user_data)
+

Sensor Architecture (Calculator Pattern)​

+

The sensor platform uses Calculator Pattern for clean separation of concerns (refactored Nov 2025):

+
ComponentFilesLinesResponsibility
Entity Classsensor/core.py909Entity lifecycle, coordinator, delegates to calculators
Calculatorssensor/calculators/1,838Business logic (8 specialized calculators)
Attributessensor/attributes/1,209State presentation (8 specialized modules)
Routingsensor/value_getters.py276Centralized sensor β†’ calculator mapping
Chart Exportsensor/chart_data.py144Service call handling, YAML parsing
Helperssensor/helpers.py188Aggregation functions, utilities
+

Calculator Package (sensor/calculators/):

+
    +
  • base.py - Abstract BaseCalculator with coordinator access
  • +
  • interval.py - Single interval calculations (current/next/previous)
  • +
  • rolling_hour.py - 5-interval rolling windows
  • +
  • daily_stat.py - Calendar day min/max/avg statistics
  • +
  • window_24h.py - Trailing/leading 24h windows
  • +
  • volatility.py - Price volatility analysis
  • +
  • trend.py - Complex trend analysis with caching
  • +
  • timing.py - Best/peak price period timing
  • +
  • metadata.py - Home/metering metadata
  • +
+

Benefits:

+
    +
  • 58% reduction in core.py (2,170 β†’ 909 lines)
  • +
  • Clear separation: Calculators (logic) vs Attributes (presentation)
  • +
  • Independent testability for each calculator
  • +
  • Easy to add sensors: Choose calculation pattern, add to routing
  • +
+

Helper Utilities​

+
UtilityFilePurpose
Price Utilsutils/price.pyRating calculation, enrichment, level aggregation
Average Utilsutils/average.pyTrailing/leading 24h average calculations
Entity Utilsentity_utils/Shared icon/color/attribute logic
Translationsconst.pyTranslation loading and caching
+
+

Key Patterns​

+

1. Dual Translation System​

+
    +
  • Standard translations (/translations/*.json): HA-compliant schema for entity names
  • +
  • Custom translations (/custom_translations/*.json): Extended descriptions, usage tips
  • +
  • Both loaded at integration setup, cached in memory
  • +
  • Access via get_translation() helper function
  • +
+

2. Price Data Enrichment​

+

All quarter-hourly price intervals get augmented via utils/price.py:

+
# Original from Tibber API
{
"startsAt": "2025-11-03T14:00:00+01:00",
"total": 0.2534,
"level": "NORMAL"
}

# After enrichment (utils/price.py)
{
"startsAt": "2025-11-03T14:00:00+01:00",
"total": 0.2534,
"level": "NORMAL",
"trailing_avg_24h": 0.2312, # ← Added: 24h trailing average
"difference": 9.6, # ← Added: % diff from trailing avg
"rating_level": "NORMAL" # ← Added: LOW/NORMAL/HIGH based on thresholds
}
+

3. Quarter-Hour Precision​

+
    +
  • API polling: Every 15 minutes (coordinator fetch cycle)
  • +
  • Entity updates: On 00/15/30/45-minute boundaries via coordinator/listeners.py
  • +
  • Timer scheduling: Uses async_track_utc_time_change(minute=[0, 15, 30, 45], second=0) +
      +
    • HA may trigger Β±few milliseconds before/after exact boundary
    • +
    • Smart boundary tolerance (Β±2 seconds) handles scheduling jitter in sensor/helpers.py
    • +
    • If HA schedules at 14:59:58 β†’ rounds to 15:00:00 (shows new interval data)
    • +
    • If HA restarts at 14:59:30 β†’ stays at 14:45:00 (shows current interval data)
    • +
    +
  • +
  • Absolute time tracking: Timer plans for all future boundaries (not relative delays) +
      +
    • Prevents double-updates (if triggered at 14:59:58, next trigger is 15:15:00, not 15:00:00)
    • +
    +
  • +
  • Result: Current price sensors update without waiting for next API poll
  • +
+

4. Calculator Pattern (Sensor Platform)​

+

Sensors organized by calculation method (refactored Nov 2025):

+

Unified Handler Methods (sensor/core.py):

+
    +
  • _get_interval_value(offset, type) - current/next/previous intervals
  • +
  • _get_rolling_hour_value(offset, type) - 5-interval rolling windows
  • +
  • _get_daily_stat_value(day, stat_func) - calendar day min/max/avg
  • +
  • _get_24h_window_value(stat_func) - trailing/leading statistics
  • +
+

Routing (sensor/value_getters.py):

+
    +
  • Single source of truth mapping 80+ entity keys to calculator methods
  • +
  • Organized by calculation type (Interval, Rolling Hour, Daily Stats, etc.)
  • +
+

Calculators (sensor/calculators/):

+
    +
  • Each calculator inherits from BaseCalculator with coordinator access
  • +
  • Focused responsibility: IntervalCalculator, TrendCalculator, etc.
  • +
  • Complex logic isolated (e.g., TrendCalculator has internal caching)
  • +
+

Attributes (sensor/attributes/):

+
    +
  • Separate from business logic, handles state presentation
  • +
  • Builds extra_state_attributes dicts for entity classes
  • +
  • Unified builders: build_sensor_attributes(), build_extra_state_attributes()
  • +
+

Benefits:

+
    +
  • Minimal code duplication across 80+ sensors
  • +
  • Clear separation of concerns (calculation vs presentation)
  • +
  • Easy to extend: Add sensor β†’ choose pattern β†’ add to routing
  • +
  • Independent testability for each component
  • +
+
+

Performance Characteristics​

+

API Call Reduction​

+
    +
  • Without caching: 96 API calls/day (every 15 min)
  • +
  • With caching: ~1-2 API calls/day (only when cache expires)
  • +
  • Reduction: ~98%
  • +
+

CPU Optimization​

+
OptimizationLocationSavings
Config cachingcoordinator/*~50% on config checks
Period cachingcoordinator/periods.py~70% on period recalculation
Lazy loggingThroughout~15% on log-heavy operations
Import optimizationModule structure~20% faster loading
+

Memory Usage​

+
    +
  • Per coordinator instance: ~126KB cache overhead
  • +
  • Typical setup: 1 main + 2 subentries = ~378KB total
  • +
  • Redundancy eliminated: 14% reduction (10KB saved per coordinator)
  • +
+
+ +
+ + \ No newline at end of file diff --git a/developer/assets/css/styles.be4f3d68.css b/developer/assets/css/styles.be4f3d68.css new file mode 100644 index 0000000..e69ea48 --- /dev/null +++ b/developer/assets/css/styles.be4f3d68.css @@ -0,0 +1 @@ +.searchbox__reset:focus,.searchbox__submit:focus{outline:0}@layer docusaurus.infima,docusaurus.theme-common,docusaurus.theme-classic,docusaurus.core,docusaurus.plugin-debug,docusaurus.theme-mermaid,docusaurus.theme-live-codeblock,docusaurus.theme-search-algolia.docsearch,docusaurus.theme-search-algolia;@layer docusaurus.infima{.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.dropdown__link--active,.dropdown__link:hover,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.footer__item{margin-top:0}.footer__items{margin-bottom:0}[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;left:0;opacity:0;position:fixed;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"Β« "}.pagination-nav__link--next .pagination-nav__label:after{content:" Β»"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}}:root{--ifm-font-family-base:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--ifm-heading-font-family:"Space Grotesk",var(--ifm-font-family-base);--ifm-font-family-monospace:"JetBrains Mono","Fira Code","Consolas",monospace;--ifm-color-primary:#00b9e7;--ifm-color-primary-dark:#00a7d0;--ifm-color-primary-darker:#009ec4;--ifm-color-primary-darkest:#0082a2;--ifm-color-primary-light:#00cbfe;--ifm-color-primary-lighter:#19d1ff;--ifm-color-primary-lightest:#4dddff;--ifm-color-success:#00ffa3;--ifm-color-warning:#ffb800;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#00b9e71a;--ifm-global-radius:0.75rem;--ifm-button-border-radius:0.75rem;--ifm-card-border-radius:1rem;--ifm-code-border-radius:0.5rem;--ifm-global-shadow-lw:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;--ifm-global-shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;--ifm-global-shadow-tl:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;--ifm-hero-background-color:linear-gradient(135deg,#00b9e7,#00ffa3)}[data-theme=dark]{--ifm-color-primary:#00d4ff;--ifm-color-primary-dark:#00c0e6;--ifm-color-primary-darker:#00b5d9;--ifm-color-primary-darkest:#0095b3;--ifm-color-primary-light:#19ddff;--ifm-color-primary-lighter:#33e1ff;--ifm-color-primary-lightest:#66e9ff;--ifm-color-success:#00ffb3;--docusaurus-highlighted-code-line-bg:#00d4ff26;--ifm-background-color:#1a1a1a;--ifm-background-surface-color:#242424;--ifm-global-shadow-lw:0 1px 3px 0 #0000004d,0 1px 2px 0 #0003;--ifm-global-shadow-md:0 4px 6px -1px #0000004d,0 2px 4px -1px #0003;--ifm-global-shadow-tl:0 10px 15px -3px #0006,0 4px 6px -2px #0003}.hero--primary{background:linear-gradient(135deg,#00b9e7,#09c 50%,#ffb800);color:#fff;position:relative}.hero--primary:before{background:linear-gradient(135deg,#00b9e7f2,#0099ccf2 50%,#ffb800d9);bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:0}.hero--primary .container{position:relative;z-index:1}[data-theme=dark] .hero--primary{background:linear-gradient(135deg,#00506b,#003d52 50%,#665000)}[data-theme=dark] .hero--primary:before{background:linear-gradient(135deg,#00506bf2,#003d52f2 50%,#665000d9)}[data-theme=light] .theme-doc-version-banner{background-color:#fff4e6;border-color:#ffb800}[data-theme=dark] .theme-doc-version-banner{background-color:#2d2000;border-color:#ffb800}.docusaurus-highlight-code-line{background-color:#00b9e733;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}[data-theme=dark] .docusaurus-highlight-code-line{background-color:#00d4ff33}.theme-doc-sidebar-container{border-right:1px solid var(--ifm-toc-border-color)}.table-of-contents__link--active{color:var(--ifm-color-primary);font-weight:700}.admonition{border-left-width:4px}.admonition-note{border-left-color:var(--ifm-color-primary)}.admonition-tip{border-left-color:var(--ifm-color-success)}.admonition-warning{border-left-color:var(--ifm-color-warning)}.features{padding:4rem 0}.features h3{color:var(--ifm-color-primary)}[data-theme=dark] .features h3{color:var(--ifm-color-primary-lighter)}.card{border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-md);transition:box-shadow .2s ease-in-out,transform .2s ease-in-out}.card:hover{box-shadow:var(--ifm-global-shadow-tl);transform:translateY(-2px)}.navbar{box-shadow:var(--ifm-global-shadow-lw)}code{border-radius:var(--ifm-code-border-radius)}.button{font-weight:600;letter-spacing:.025em;transition:.2s ease-in-out}.button:hover{box-shadow:var(--ifm-global-shadow-md);transform:translateY(-1px)}h1,h2,h3,h4,h5,h6{font-family:var(--ifm-heading-font-family);letter-spacing:-.02em}*{transition-duration:.15s;transition-property:background-color,border-color,color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.searchbox,.searchbox__input{display:inline-block;box-sizing:border-box}.algolia-docsearch-suggestion{border-bottom-color:#3a3dd1}.algolia-docsearch-suggestion--category-header{background-color:#4b54de}.algolia-docsearch-suggestion--highlight{color:#3a33d1}.algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#4d47d5}.aa-cursor .algolia-docsearch-suggestion--content{color:#272296}.aa-cursor .algolia-docsearch-suggestion{background:#ebebfb}.searchbox{height:32px!important;position:relative;visibility:visible!important;white-space:nowrap;width:200px}.searchbox .algolia-autocomplete{display:block;height:100%;width:100%}.searchbox__wrapper{height:100%;position:relative;width:100%;z-index:999}.searchbox__input{appearance:none;background:#fff!important;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;font-size:12px;height:100%;padding:0 26px 0 32px;transition:box-shadow .4s,background .4s;vertical-align:middle;white-space:normal;width:100%}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{background:#fff;box-shadow:inset 0 0 0 1px #aaa;outline:0}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{background-color:#458ee100;border:0;border-radius:16px 0 0 16px;font-size:inherit;height:100%;left:0;margin:0;padding:0;position:absolute;right:inherit;text-align:center;top:0;-webkit-user-select:none;user-select:none;vertical-align:middle;width:32px}.searchbox__submit:before{content:"";display:inline-block;height:100%;margin-right:-4px;vertical-align:middle}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion,.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit svg{fill:#6d7e96;height:14px;vertical-align:middle;width:14px}.searchbox__reset{background:none;border:0;cursor:pointer;display:block;fill:#00000080;font-size:inherit;margin:0;padding:0;position:absolute;right:8px;top:8px;-webkit-user-select:none;user-select:none}.searchbox__reset.hide{display:none}.searchbox__reset svg{display:block;height:8px;margin:4px;width:8px}.searchbox__input:valid~.searchbox__reset{animation-duration:.15s;animation-name:a;display:block}@keyframes a{0%{opacity:0;transform:translate3d(-20%,0,0)}to{opacity:1;transform:none}}.algolia-autocomplete .ds-dropdown-menu:before{background:#373940;border-radius:2px;border-right:1px solid #373940;border-top:1px solid #373940;content:"";display:block;height:14px;position:absolute;top:-7px;transform:rotate(-45deg);width:14px;z-index:1000}.algolia-autocomplete .ds-dropdown-menu{box-shadow:0 1px 0 0 #0003,0 2px 3px 0 #0000001a}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{background:#fff;border-radius:4px;overflow:auto;padding:0;position:relative}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;overflow:hidden;padding:0;position:relative;-webkit-text-decoration:none;text-decoration:none}.algolia-autocomplete .ds-cursor .algolia-docsearch-suggestion--wrapper{background:#f1f1f1;box-shadow:inset -2px 0 0 #61dafb}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{background:#ffe564;padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight{background:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{background:inherit;box-shadow:inset 0 -2px 0 0 #458ee1cc;color:inherit;padding:0 0 1px}.algolia-autocomplete .algolia-docsearch-suggestion--content{cursor:pointer;display:block;float:right;padding:5.33333px 0 5.33333px 10.66667px;position:relative;width:70%}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{background:#ececec;content:"";display:block;height:100%;left:-1px;position:absolute;top:0;width:1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{background-color:#373940;color:#fff;display:none;font-size:14px;font-weight:700;letter-spacing:.08em;margin:0;padding:5px 8px;position:relative;text-transform:uppercase}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{background-color:#fff;float:left;padding:8px 0 0;width:100%}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{color:#777;display:none;float:left;font-size:.9em;padding:5.33333px 10.66667px;position:relative;text-align:right;width:30%;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{background:#ececec;content:"";display:block;height:100%;position:absolute;right:0;top:0;width:1px}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before,.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight{background-color:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--title{color:#02060c;font-size:.9em;font-weight:700;margin-bottom:4px}.algolia-autocomplete .algolia-docsearch-suggestion--text{color:#63676d;display:block;font-size:.85em;line-height:1.2em;padding-right:2px}.algolia-autocomplete .algolia-docsearch-suggestion--version{color:#a6aab1;display:block;font-size:.65em;padding-right:2px;padding-top:2px}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{background-color:#373940;font-size:1.2em;margin-top:-8px;padding:8px 0;text-align:center;width:100%}.algolia-autocomplete .algolia-docsearch-suggestion--no-results .algolia-docsearch-suggestion--text{color:#fff;margin-top:4px}.algolia-autocomplete .algolia-docsearch-suggestion code{background-color:#ebebeb;border:none;border-radius:3px;color:#222;font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:90%;padding:1px 5px}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header{color:#fff;display:block}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column{display:block}.algolia-autocomplete .algolia-docsearch-footer{background-color:#fff;float:right;font-size:0;height:30px;line-height:0;width:100%;z-index:2000}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 18'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath fill='url(%2523a)' d='M59.4.02h13.3a2.37 2.37 0 0 1 2.38 2.37V15.6a2.37 2.37 0 0 1-2.38 2.36H59.4a2.37 2.37 0 0 1-2.38-2.36V2.38A2.37 2.37 0 0 1 59.4.02'/%3E%3Cpath fill='%2523FFF' d='M66.26 4.56c-2.82 0-5.1 2.27-5.1 5.08 0 2.8 2.28 5.07 5.1 5.07 2.8 0 5.1-2.26 5.1-5.07 0-2.8-2.28-5.07-5.1-5.07zm0 8.65c-2 0-3.6-1.6-3.6-3.56 0-1.97 1.6-3.58 3.6-3.58 1.98 0 3.6 1.6 3.6 3.58a3.58 3.58 0 0 1-3.6 3.57zm0-6.4v2.66c0 .07.08.13.15.1l2.4-1.24c.04-.02.06-.1.03-.14a2.96 2.96 0 0 0-2.46-1.5.1.1 0 0 0-.1.1zm-3.33-1.96-.3-.3a.78.78 0 0 0-1.12 0l-.36.36a.77.77 0 0 0 0 1.1l.3.3c.05.05.13.04.17 0 .2-.25.4-.5.6-.7.23-.23.46-.43.7-.6.07-.04.07-.1.03-.16zm5-.8V3.4a.78.78 0 0 0-.78-.78h-1.83a.78.78 0 0 0-.78.78v.63c0 .07.06.12.14.1a5.7 5.7 0 0 1 1.58-.22c.52 0 1.04.07 1.54.2a.1.1 0 0 0 .13-.1z'/%3E%3Cpath fill='%2523182359' d='M102.16 13.76c0 1.46-.37 2.52-1.12 3.2-.75.67-1.9 1-3.44 1-.56 0-1.74-.1-2.67-.3l.34-1.7c.78.17 1.82.2 2.36.2.86 0 1.48-.16 1.84-.5.37-.36.55-.88.55-1.57v-.35a6 6 0 0 1-.84.3 4.2 4.2 0 0 1-1.2.17 4.5 4.5 0 0 1-1.6-.28 3.4 3.4 0 0 1-1.26-.82 3.7 3.7 0 0 1-.8-1.35c-.2-.54-.3-1.5-.3-2.2 0-.67.1-1.5.3-2.06a3.9 3.9 0 0 1 .9-1.43 4.1 4.1 0 0 1 1.45-.92 5.3 5.3 0 0 1 1.94-.37c.7 0 1.35.1 1.97.2a16 16 0 0 1 1.6.33v8.46zm-5.95-4.2c0 .9.2 1.88.6 2.3.4.4.9.62 1.53.62q.51 0 .96-.15a2.8 2.8 0 0 0 .73-.33V6.7a8.5 8.5 0 0 0-1.42-.17c-.76-.02-1.36.3-1.77.8-.4.5-.62 1.4-.62 2.23zm16.13 0c0 .72-.1 1.26-.32 1.85a4.4 4.4 0 0 1-.9 1.53c-.38.42-.85.75-1.4.98-.54.24-1.4.37-1.8.37-.43 0-1.27-.13-1.8-.36a4.1 4.1 0 0 1-1.4-.97 4.5 4.5 0 0 1-.92-1.52 5 5 0 0 1-.33-1.84c0-.72.1-1.4.32-2s.53-1.1.92-1.5c.4-.43.86-.75 1.4-.98a4.55 4.55 0 0 1 1.78-.34 4.7 4.7 0 0 1 1.8.34c.54.23 1 .55 1.4.97q.57.63.9 1.5c.23.6.35 1.3.35 2zm-2.2 0c0-.92-.2-1.7-.6-2.22-.38-.54-.94-.8-1.64-.8-.72 0-1.27.26-1.67.8s-.58 1.3-.58 2.22c0 .93.2 1.56.6 2.1.38.54.94.8 1.64.8s1.25-.26 1.65-.8c.4-.55.6-1.17.6-2.1m6.97 4.7c-3.5.02-3.5-2.8-3.5-3.27L113.57.92l2.15-.34v10c0 .25 0 1.87 1.37 1.88v1.8zm3.77 0h-2.15v-9.2l2.15-.33v9.54zM119.8 3.74c.7 0 1.3-.58 1.3-1.3 0-.7-.58-1.3-1.3-1.3-.73 0-1.3.6-1.3 1.3 0 .72.58 1.3 1.3 1.3m6.43 1c.7 0 1.3.1 1.78.27.5.18.88.42 1.17.73.28.3.5.74.6 1.18.13.46.2.95.2 1.5v5.47a25 25 0 0 1-1.5.25q-1.005.15-2.25.15a6.8 6.8 0 0 1-1.52-.16 3.2 3.2 0 0 1-1.18-.5 2.46 2.46 0 0 1-.76-.9c-.18-.37-.27-.9-.27-1.44 0-.52.1-.85.3-1.2.2-.37.48-.67.83-.9a3.6 3.6 0 0 1 1.23-.5 7 7 0 0 1 2.2-.1l.83.16V8.4c0-.25-.03-.48-.1-.7a1.5 1.5 0 0 0-.3-.58c-.15-.18-.34-.3-.58-.4a2.5 2.5 0 0 0-.92-.17c-.5 0-.94.06-1.35.13-.4.08-.75.16-1 .25l-.27-1.74c.27-.1.67-.18 1.2-.28a9.3 9.3 0 0 1 1.65-.14zm.18 7.74c.66 0 1.15-.04 1.5-.1V10.2a5.1 5.1 0 0 0-2-.1c-.23.03-.45.1-.64.2a1.17 1.17 0 0 0-.47.38c-.13.17-.18.26-.18.52 0 .5.17.8.5.98.32.2.74.3 1.3.3zM84.1 4.8c.72 0 1.3.08 1.8.26.48.17.87.42 1.15.73.3.3.5.72.6 1.17.14.45.2.94.2 1.47v5.48a25 25 0 0 1-1.5.26c-.67.1-1.42.14-2.25.14a6.8 6.8 0 0 1-1.52-.16 3.2 3.2 0 0 1-1.18-.5 2.46 2.46 0 0 1-.76-.9c-.18-.38-.27-.9-.27-1.44 0-.53.1-.86.3-1.22s.5-.65.84-.88a3.6 3.6 0 0 1 1.24-.5 7 7 0 0 1 2.2-.1q.39.045.84.15v-.35c0-.24-.03-.48-.1-.7a1.5 1.5 0 0 0-.3-.58c-.15-.17-.34-.3-.58-.4a2.5 2.5 0 0 0-.9-.15c-.5 0-.96.05-1.37.12-.4.07-.75.15-1 .24l-.26-1.75c.27-.08.67-.17 1.18-.26a9 9 0 0 1 1.66-.15zm.2 7.73c.65 0 1.14-.04 1.48-.1v-2.17a5.1 5.1 0 0 0-1.98-.1c-.24.03-.46.1-.65.18a1.17 1.17 0 0 0-.47.4c-.12.17-.17.26-.17.52 0 .5.18.8.5.98.32.2.75.3 1.3.3zm8.68 1.74c-3.5 0-3.5-2.82-3.5-3.28L89.45.92 91.6.6v10c0 .25 0 1.87 1.38 1.88v1.8z'/%3E%3Cpath fill='%25231D3657' d='M5.03 11.03c0 .7-.26 1.24-.76 1.64q-.75.6-2.1.6c-.88 0-1.6-.14-2.17-.42v-1.2c.36.16.74.3 1.14.38.4.1.78.15 1.13.15.5 0 .88-.1 1.12-.3a.94.94 0 0 0 .35-.77.98.98 0 0 0-.33-.74c-.22-.2-.68-.44-1.37-.72-.72-.3-1.22-.62-1.52-1C.23 8.27.1 7.82.1 7.3c0-.65.22-1.17.7-1.55.46-.37 1.08-.56 1.86-.56.76 0 1.5.16 2.25.48l-.4 1.05c-.7-.3-1.32-.44-1.87-.44-.4 0-.73.08-.94.26a.9.9 0 0 0-.33.72c0 .2.04.38.12.52.08.15.22.3.42.4.2.14.55.3 1.06.52.58.24 1 .47 1.27.67s.47.44.6.7c.12.26.18.57.18.92zM9 13.27c-.92 0-1.64-.27-2.16-.8-.52-.55-.78-1.3-.78-2.24 0-.97.24-1.73.72-2.3.5-.54 1.15-.82 2-.82.78 0 1.4.25 1.85.72.46.48.7 1.14.7 1.97v.67H7.35c0 .58.17 1.02.46 1.33.3.3.7.47 1.24.47.36 0 .68-.04.98-.1a5 5 0 0 0 .98-.33v1.02a3.9 3.9 0 0 1-.94.32 5.7 5.7 0 0 1-1.08.1zm-.22-5.2c-.4 0-.73.12-.97.38s-.37.62-.42 1.1h2.7c0-.48-.13-.85-.36-1.1-.23-.26-.54-.38-.94-.38zm7.7 5.1-.26-.84h-.05c-.28.36-.57.6-.86.74-.28.13-.65.2-1.1.2-.6 0-1.05-.16-1.38-.48-.32-.32-.5-.77-.5-1.34 0-.62.24-1.08.7-1.4.45-.3 1.14-.47 2.07-.5l1.02-.03V9.2c0-.37-.1-.65-.27-.84-.17-.2-.45-.28-.82-.28-.3 0-.6.04-.88.13a7 7 0 0 0-.8.33l-.4-.9a4.4 4.4 0 0 1 1.05-.4 5 5 0 0 1 1.08-.12c.76 0 1.33.18 1.7.5q.6.495.6 1.56v4h-.9zm-1.9-.87c.47 0 .83-.13 1.1-.38.3-.26.43-.62.43-1.08v-.52l-.76.03c-.6.03-1.02.13-1.3.3s-.4.45-.4.82c0 .26.08.47.24.6.16.16.4.23.7.23zm7.57-5.2c.25 0 .46.03.62.06l-.12 1.18a2.4 2.4 0 0 0-.56-.06c-.5 0-.92.16-1.24.5-.3.32-.47.75-.47 1.27v3.1h-1.27V7.23h1l.16 1.05h.05c.2-.36.45-.64.77-.85a1.83 1.83 0 0 1 1.02-.3zm4.12 6.17c-.9 0-1.58-.27-2.05-.8-.47-.52-.7-1.27-.7-2.25 0-1 .24-1.77.73-2.3.5-.54 1.2-.8 2.12-.8.63 0 1.2.1 1.7.34l-.4 1c-.52-.2-.96-.3-1.3-.3-1.04 0-1.55.68-1.55 2.05 0 .67.13 1.17.38 1.5.26.34.64.5 1.13.5a3.23 3.23 0 0 0 1.6-.4v1.1a2.5 2.5 0 0 1-.73.28 4.4 4.4 0 0 1-.93.08m8.28-.1h-1.27V9.5c0-.45-.1-.8-.28-1.02-.18-.23-.47-.34-.88-.34-.53 0-.9.16-1.16.48-.25.3-.38.85-.38 1.6v2.94h-1.26V4.8h1.26v2.12c0 .34-.02.7-.06 1.1h.08a1.76 1.76 0 0 1 .72-.67c.3-.16.66-.24 1.07-.24 1.43 0 2.15.74 2.15 2.2v3.86zM42.2 7.1c.74 0 1.32.28 1.73.82.4.53.62 1.3.62 2.26 0 .97-.2 1.73-.63 2.27-.42.54-1 .82-1.75.82s-1.33-.27-1.75-.8h-.08l-.23.7h-.94V4.8h1.26v2l-.02.64-.03.56h.05c.4-.6 1-.9 1.78-.9zm-.33 1.04c-.5 0-.88.15-1.1.45s-.34.8-.35 1.5v.08c0 .72.12 1.24.35 1.57.23.32.6.48 1.12.48.44 0 .78-.17 1-.53.24-.35.36-.87.36-1.53 0-1.35-.47-2.03-1.4-2.03zm3.24-.92h1.4l1.2 3.37c.18.47.3.92.36 1.34h.04l.18-.72 1.37-4H51l-2.53 6.73c-.46 1.23-1.23 1.85-2.3 1.85-.3 0-.56-.03-.83-.1v-1c.2.05.4.08.65.08.6 0 1.03-.36 1.28-1.06l.22-.56-2.4-5.94z'/%3E%3C/g%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100%;display:block;height:100%;margin-left:auto;margin-right:5px;overflow:hidden;text-indent:-9000px;width:110px}html[data-theme=dark] .algolia-docsearch-footer,html[data-theme=dark] .algolia-docsearch-suggestion--category-header,html[data-theme=dark] .algolia-docsearch-suggestion--wrapper{background:var(--ifm-background-color)!important;color:var(--ifm-font-color-base)!important}html[data-theme=dark] .algolia-docsearch-suggestion--title{color:var(--ifm-font-color-base)!important}html[data-theme=dark] .ds-cursor .algolia-docsearch-suggestion--wrapper{background:var(--ifm-background-surface-color)!important}mark{background-color:#add8e6}@layer docusaurus.core{#__docusaurus-base-url-issue-banner-container{display:none}}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}@layer docusaurus.theme-common{body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.themedComponent_mlkZ{display:none}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}.anchorTargetStickyNavbar_Vzrq{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorTargetHideOnScrollNavbar_vjPI{scroll-margin-top:.5rem}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before{transform:rotate(90deg)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child{margin-bottom:0}}@layer docusaurus.theme-mermaid{.container_lyt7,.container_lyt7>svg{max-width:100%}}@layer docusaurus.theme-classic{:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#nprogress{pointer-events:none}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);-webkit-text-decoration:none;text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;-webkit-text-decoration:underline;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.toggleIcon_g3eP,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.announcementBarContent_xLdY{flex:1 1 auto}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{-webkit-tap-highlight-color:transparent;align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}[data-theme-choice=dark] .darkToggleIcon_wfgR,[data-theme-choice=light] .lightToggleIcon_pyhR,[data-theme-choice=system] .systemToggleIcon_QzmC{display:initial}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.categoryLinkLabel_W154,.linkLabel_WmDU{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}.iconExternalLink_nPIU{margin-left:.3rem}.menuExternalLink_NmtK{align-items:center}.linkLabel_WmDU{line-clamp:2;-webkit-line-clamp:2}.categoryLink_byQd{overflow:hidden}.menu__link--sublist-caret:after{margin-left:var(--ifm-menu-link-padding-vertical)}.categoryLinkLabel_W154{flex:1;line-clamp:2;-webkit-line-clamp:2}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.dropdownNavbarItemMobile_J0Sd{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.navbar__items--right>:last-child{padding-right:0}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}body,html{height:100%}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_Ckt0{background:var(--prism-background-color);border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);color:var(--prism-color);margin-bottom:var(--ifm-leading)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockStandalone_MEMb{padding:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:line-count;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(line-count);opacity:.4}.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_Vdqa{opacity:1!important}.copyButtonIcons_IEyt{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_TrPX,.copyButtonSuccessIcon_cVMy{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_cVMy{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_Vdqa .copyButtonIcon_TrPX{opacity:0;transform:scale(.33)}.copyButtonCopied_Vdqa .copyButtonSuccessIcon_cVMy{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_b1P5{height:1.2rem;width:1.2rem}.wordWrapButtonEnabled_uzNF .wordWrapButtonIcon_b1P5{color:var(--ifm-color-primary)}.buttonGroup_M5ko{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_M5ko button{align-items:center;background:var(--prism-background-color);border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);color:var(--prism-color);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_M5ko button:focus-visible,.buttonGroup_M5ko button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_M5ko button{opacity:.4}.codeBlockContent_QJqH{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_OeMC{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_OeMC+.codeBlockContent_QJqH .codeBlock_a8dz{border-top-left-radius:0;border-top-right-radius:0}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);text-transform:uppercase}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;fill:var(--ifm-alert-foreground-color);height:1.6em;width:1.6em}.admonitionContent_BuS1>:last-child{margin-bottom:0}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*{margin-top:0}.mdxPageWrapper_j9I6{justify-content:center}}@media (min-width:601px){.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{left:inherit!important;right:0!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete .ds-dropdown-menu{background:#0000;border:none;border-radius:4px;height:auto;margin:6px 0 0;max-width:600px;min-width:500px;padding:0;position:relative;text-align:left;top:-6px;z-index:999}}@media (min-width:768px){.algolia-docsearch-suggestion{border-bottom-color:#7671df}.algolia-docsearch-suggestion--subcategory-column{border-right-color:#7671df;color:#4e4726}}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:0 var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:600px){.algolia-autocomplete .ds-dropdown-menu{display:block;left:auto!important;max-height:calc(100% - 5rem);max-width:calc(100% - 2rem);position:fixed!important;right:1rem!important;top:50px!important;width:600px;z-index:100}.algolia-autocomplete .ds-dropdown-menu:before{right:6rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.noPrint_WFHX,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/developer/assets/js/0746f739.f03136e7.js b/developer/assets/js/0746f739.f03136e7.js new file mode 100644 index 0000000..e10617b --- /dev/null +++ b/developer/assets/js/0746f739.f03136e7.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[435],{3936:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next \ud83d\udea7","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","href":"/hass.tibber_prices/developer/intro","label":"Developer Documentation","docId":"intro","unlisted":false},{"type":"category","label":"\ud83c\udfd7\ufe0f Architecture","items":[{"type":"link","href":"/hass.tibber_prices/developer/architecture","label":"Architecture","docId":"architecture","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/timer-architecture","label":"Timer Architecture","docId":"timer-architecture","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/caching-strategy","label":"Caching Strategy","docId":"caching-strategy","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/api-reference","label":"API Reference","docId":"api-reference","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83d\udcbb Development","items":[{"type":"link","href":"/hass.tibber_prices/developer/setup","label":"Development Setup","docId":"setup","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/coding-guidelines","label":"Coding Guidelines","docId":"coding-guidelines","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/critical-patterns","label":"Critical Behavior Patterns - Testing Guide","docId":"critical-patterns","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/debugging","label":"Debugging Guide","docId":"debugging","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83d\udcd0 Advanced Topics","items":[{"type":"link","href":"/hass.tibber_prices/developer/period-calculation-theory","label":"Period Calculation Theory","docId":"period-calculation-theory","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/refactoring-guide","label":"Refactoring Guide","docId":"refactoring-guide","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/performance","label":"Performance Optimization","docId":"performance","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83d\udcdd Contributing","items":[{"type":"link","href":"/hass.tibber_prices/developer/contributing","label":"Contributing Guide","docId":"contributing","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83d\ude80 Release","items":[{"type":"link","href":"/hass.tibber_prices/developer/release-management","label":"Release Notes Generation","docId":"release-management","unlisted":false},{"type":"link","href":"/hass.tibber_prices/developer/testing","label":"Testing","docId":"testing","unlisted":false}],"collapsible":true,"collapsed":false}]},"docs":{"api-reference":{"id":"api-reference","title":"API Reference","description":"Documentation of the Tibber GraphQL API used by this integration.","sidebar":"tutorialSidebar"},"architecture":{"id":"architecture","title":"Architecture","description":"This document provides a visual overview of the integration\'s architecture, focusing on end-to-end data flow and caching layers.","sidebar":"tutorialSidebar"},"caching-strategy":{"id":"caching-strategy","title":"Caching Strategy","description":"This document explains all caching mechanisms in the Tibber Prices integration, their purpose, invalidation logic, and lifetime.","sidebar":"tutorialSidebar"},"coding-guidelines":{"id":"coding-guidelines","title":"Coding Guidelines","description":"Note: For complete coding standards, see AGENTS.md.","sidebar":"tutorialSidebar"},"contributing":{"id":"contributing","title":"Contributing Guide","description":"Welcome! This guide helps you contribute to the Tibber Prices integration.","sidebar":"tutorialSidebar"},"critical-patterns":{"id":"critical-patterns","title":"Critical Behavior Patterns - Testing Guide","description":"Purpose: This documentation lists essential behavior patterns that must be tested to ensure production-quality code and prevent resource leaks.","sidebar":"tutorialSidebar"},"debugging":{"id":"debugging","title":"Debugging Guide","description":"Tips and techniques for debugging the Tibber Prices integration during development.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Developer Documentation","description":"This section contains documentation for contributors and maintainers of the Tibber Prices custom integration.","sidebar":"tutorialSidebar"},"performance":{"id":"performance","title":"Performance Optimization","description":"Guidelines for maintaining and improving integration performance.","sidebar":"tutorialSidebar"},"period-calculation-theory":{"id":"period-calculation-theory","title":"Period Calculation Theory","description":"Overview","sidebar":"tutorialSidebar"},"refactoring-guide":{"id":"refactoring-guide","title":"Refactoring Guide","description":"This guide explains how to plan and execute major refactorings in this project.","sidebar":"tutorialSidebar"},"release-management":{"id":"release-management","title":"Release Notes Generation","description":"This project supports three ways to generate release notes from conventional commits, plus automatic version management.","sidebar":"tutorialSidebar"},"setup":{"id":"setup","title":"Development Setup","description":"Note: This guide is under construction. For now, please refer to AGENTS.md for detailed setup information.","sidebar":"tutorialSidebar"},"testing":{"id":"testing","title":"Testing","description":"Note: This guide is under construction.","sidebar":"tutorialSidebar"},"timer-architecture":{"id":"timer-architecture","title":"Timer Architecture","description":"This document explains the timer/scheduler system in the Tibber Prices integration - what runs when, why, and how they coordinate.","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/developer/assets/js/0e384e19.267cd716.js b/developer/assets/js/0e384e19.267cd716.js new file mode 100644 index 0000000..27103e9 --- /dev/null +++ b/developer/assets/js/0e384e19.267cd716.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[3976],{2053:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"intro","title":"Developer Documentation","description":"This section contains documentation for contributors and maintainers of the Tibber Prices custom integration.","source":"@site/docs/intro.md","sourceDirName":".","slug":"/intro","permalink":"/hass.tibber_prices/developer/intro","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/intro.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","next":{"title":"Architecture","permalink":"/hass.tibber_prices/developer/architecture"}}');var t=i(4848),r=i(8453);const l={},o="Developer Documentation",c={},d=[{value:"\ud83d\udcda Developer Guides",id:"-developer-guides",level:2},{value:"\ud83e\udd16 AI Documentation",id:"-ai-documentation",level:2},{value:"AI-Assisted Development",id:"ai-assisted-development",level:3},{value:"\ud83d\ude80 Quick Start for Contributors",id:"-quick-start-for-contributors",level:2},{value:"\ud83d\udee0\ufe0f Development Tools",id:"\ufe0f-development-tools",level:2},{value:"\ud83d\udce6 Project Structure",id:"-project-structure",level:2},{value:"\ud83d\udd0d Key Concepts",id:"-key-concepts",level:2},{value:"\ud83e\uddea Testing",id:"-testing",level:2},{value:"\ud83d\udcdd Documentation Standards",id:"-documentation-standards",level:2},{value:"\ud83e\udd1d Contributing",id:"-contributing",level:2},{value:"\ud83d\udcc4 License",id:"-license",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"developer-documentation",children:"Developer Documentation"})}),"\n",(0,t.jsxs)(n.p,{children:["This section contains documentation for contributors and maintainers of the ",(0,t.jsx)(n.strong,{children:"Tibber Prices custom integration"}),"."]}),"\n",(0,t.jsx)(n.admonition,{title:"Community Project",type:"info",children:(0,t.jsxs)(n.p,{children:["This is an independent, community-maintained custom integration for Home Assistant. It is ",(0,t.jsx)(n.strong,{children:"not"})," an official Tibber product and is ",(0,t.jsx)(n.strong,{children:"not"})," affiliated with Tibber AS."]})}),"\n",(0,t.jsx)(n.h2,{id:"-developer-guides",children:"\ud83d\udcda Developer Guides"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/setup",children:"Setup"})})," - DevContainer, environment setup, and dependencies"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/architecture",children:"Architecture"})})," - Code structure, patterns, and conventions"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/period-calculation-theory",children:"Period Calculation Theory"})})," - Mathematical foundations, Flex/Distance interaction, Relaxation strategy"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/timer-architecture",children:"Timer Architecture"})})," - Timer system, scheduling, coordination (3 independent timers)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/caching-strategy",children:"Caching Strategy"})})," - Cache layers, invalidation, debugging"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/testing",children:"Testing"})})," - How to run tests and write new test cases"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/release-management",children:"Release Management"})})," - Release workflow and versioning process"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/coding-guidelines",children:"Coding Guidelines"})})," - Style guide, linting, and best practices"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/refactoring-guide",children:"Refactoring Guide"})})," - How to plan and execute major refactorings"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"-ai-documentation",children:"\ud83e\udd16 AI Documentation"}),"\n",(0,t.jsxs)(n.p,{children:["The main AI/Copilot documentation is in ",(0,t.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,t.jsx)(n.code,{children:"AGENTS.md"})}),". This file serves as long-term memory for AI assistants and contains:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Detailed architectural patterns"}),"\n",(0,t.jsx)(n.li,{children:"Code quality rules and conventions"}),"\n",(0,t.jsx)(n.li,{children:"Development workflow guidance"}),"\n",(0,t.jsx)(n.li,{children:"Common pitfalls and anti-patterns"}),"\n",(0,t.jsx)(n.li,{children:"Project-specific patterns and utilities"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Important:"})," When proposing changes to patterns or conventions, always update ",(0,t.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,t.jsx)(n.code,{children:"AGENTS.md"})})," to keep AI guidance consistent."]}),"\n",(0,t.jsx)(n.h3,{id:"ai-assisted-development",children:"AI-Assisted Development"}),"\n",(0,t.jsx)(n.p,{children:"This integration is developed with extensive AI assistance (GitHub Copilot, Claude, and other AI tools). The AI handles:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Pattern Recognition"}),": Understanding and applying Home Assistant best practices"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Code Generation"}),": Implementing features with proper type hints, error handling, and documentation"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Refactoring"}),": Maintaining consistency across the codebase during structural changes"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Translation Management"}),": Keeping 5 language files synchronized"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Documentation"}),": Generating and maintaining comprehensive documentation"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Quality Assurance:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Automated linting with Ruff (120-char line length, max complexity 25)"}),"\n",(0,t.jsx)(n.li,{children:"Home Assistant's type checking and validation"}),"\n",(0,t.jsx)(n.li,{children:"Real-world testing in development environment"}),"\n",(0,t.jsx)(n.li,{children:"Code review by maintainer before merging"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Rapid feature development while maintaining quality"}),"\n",(0,t.jsx)(n.li,{children:"Consistent code patterns across all modules"}),"\n",(0,t.jsx)(n.li,{children:"Comprehensive documentation maintained alongside code"}),"\n",(0,t.jsx)(n.li,{children:"Quick bug fixes with proper understanding of context"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Limitations:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"AI may occasionally miss edge cases or subtle bugs"}),"\n",(0,t.jsx)(n.li,{children:"Some complex Home Assistant patterns may need human review"}),"\n",(0,t.jsx)(n.li,{children:"Translation quality depends on AI's understanding of target language"}),"\n",(0,t.jsx)(n.li,{children:"User feedback is crucial for discovering real-world issues"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["If you're working with AI tools on this project, the ",(0,t.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,t.jsx)(n.code,{children:"AGENTS.md"})})," file provides the context and patterns that ensure consistency."]}),"\n",(0,t.jsx)(n.h2,{id:"-quick-start-for-contributors",children:"\ud83d\ude80 Quick Start for Contributors"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Fork and clone"})," the repository"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Open in DevContainer"}),' (VS Code: "Reopen in Container")']}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Run setup"}),": ",(0,t.jsx)(n.code,{children:"./scripts/setup/setup"})," (happens automatically via ",(0,t.jsx)(n.code,{children:"postCreateCommand"}),")"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Start development environment"}),": ",(0,t.jsx)(n.code,{children:"./scripts/develop"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Make your changes"})," following the ",(0,t.jsx)(n.a,{href:"/hass.tibber_prices/developer/coding-guidelines",children:"Coding Guidelines"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Run linting"}),": ",(0,t.jsx)(n.code,{children:"./scripts/lint"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Validate integration"}),": ",(0,t.jsx)(n.code,{children:"./scripts/release/hassfest"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Test your changes"})," in the running Home Assistant instance"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Commit using Conventional Commits"})," format"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Open a Pull Request"})," with clear description"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\ufe0f-development-tools",children:"\ud83d\udee0\ufe0f Development Tools"}),"\n",(0,t.jsxs)(n.p,{children:["The project includes several helper scripts in ",(0,t.jsx)(n.code,{children:"./scripts/"}),":"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"bootstrap"})," - Initial setup of dependencies"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"develop"})," - Start Home Assistant in debug mode (auto-cleans .egg-info)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"clean"})," - Remove build artifacts and caches"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"lint"})," - Auto-fix code issues with ruff"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"lint-check"})," - Check code without modifications (CI mode)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"hassfest"})," - Validate integration structure (JSON, Python syntax, required files)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"setup"})," - Install development tools (git-cliff, @github/copilot)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"prepare-release"})," - Prepare a new release (bump version, create tag)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"generate-release-notes"})," - Generate release notes from commits"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"-project-structure",children:"\ud83d\udce6 Project Structure"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"custom_components/tibber_prices/\n\u251c\u2500\u2500 __init__.py # Integration setup\n\u251c\u2500\u2500 coordinator.py # Data update coordinator with caching\n\u251c\u2500\u2500 api.py # Tibber GraphQL API client\n\u251c\u2500\u2500 price_utils.py # Price enrichment functions\n\u251c\u2500\u2500 average_utils.py # Average calculation utilities\n\u251c\u2500\u2500 sensor/ # Sensor platform (package)\n\u2502 \u251c\u2500\u2500 __init__.py # Platform setup\n\u2502 \u251c\u2500\u2500 core.py # TibberPricesSensor class\n\u2502 \u251c\u2500\u2500 definitions.py # Entity descriptions\n\u2502 \u251c\u2500\u2500 helpers.py # Pure helper functions\n\u2502 \u2514\u2500\u2500 attributes.py # Attribute builders\n\u251c\u2500\u2500 binary_sensor.py # Binary sensor platform\n\u251c\u2500\u2500 entity_utils/ # Shared entity helpers\n\u2502 \u251c\u2500\u2500 icons.py # Icon mapping logic\n\u2502 \u251c\u2500\u2500 colors.py # Color mapping logic\n\u2502 \u2514\u2500\u2500 attributes.py # Common attribute builders\n\u251c\u2500\u2500 services.py # Custom services\n\u251c\u2500\u2500 config_flow.py # UI configuration flow\n\u251c\u2500\u2500 const.py # Constants and helpers\n\u251c\u2500\u2500 translations/ # Standard HA translations\n\u2514\u2500\u2500 custom_translations/ # Extended translations (descriptions)\n"})}),"\n",(0,t.jsx)(n.h2,{id:"-key-concepts",children:"\ud83d\udd0d Key Concepts"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"DataUpdateCoordinator Pattern:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Centralized data fetching and caching"}),"\n",(0,t.jsx)(n.li,{children:"Automatic entity updates on data changes"}),"\n",(0,t.jsxs)(n.li,{children:["Persistent storage via ",(0,t.jsx)(n.code,{children:"Store"})]}),"\n",(0,t.jsx)(n.li,{children:"Quarter-hour boundary refresh scheduling"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Price Data Enrichment:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Raw API data is enriched with statistical analysis"}),"\n",(0,t.jsx)(n.li,{children:"Trailing/leading 24h averages calculated per interval"}),"\n",(0,t.jsx)(n.li,{children:"Price differences and ratings added"}),"\n",(0,t.jsxs)(n.li,{children:["All via pure functions in ",(0,t.jsx)(n.code,{children:"price_utils.py"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Translation System:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Dual system: ",(0,t.jsx)(n.code,{children:"/translations/"})," (HA schema) + ",(0,t.jsx)(n.code,{children:"/custom_translations/"})," (extended)"]}),"\n",(0,t.jsx)(n.li,{children:"Both must stay in sync across all languages (de, en, nb, nl, sv)"}),"\n",(0,t.jsx)(n.li,{children:"Async loading at integration setup"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"-testing",children:"\ud83e\uddea Testing"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Validate integration structure\n./scripts/release/hassfest\n\n# Run all tests\npytest tests/\n\n# Run specific test file\npytest tests/test_coordinator.py\n\n# Run with coverage\npytest --cov=custom_components.tibber_prices tests/\n"})}),"\n",(0,t.jsx)(n.h2,{id:"-documentation-standards",children:"\ud83d\udcdd Documentation Standards"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"User-facing docs"})," go in ",(0,t.jsx)(n.code,{children:"docs/user/"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Developer docs"})," go in ",(0,t.jsx)(n.code,{children:"docs/development/"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"AI guidance"})," goes in ",(0,t.jsx)(n.code,{children:"AGENTS.md"})]}),"\n",(0,t.jsx)(n.li,{children:"Use clear examples and code snippets"}),"\n",(0,t.jsx)(n.li,{children:"Keep docs up-to-date with code changes"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"-contributing",children:"\ud83e\udd1d Contributing"}),"\n",(0,t.jsxs)(n.p,{children:["See ",(0,t.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/main/CONTRIBUTING.md",children:"CONTRIBUTING.md"})," for detailed contribution guidelines, code of conduct, and pull request process."]}),"\n",(0,t.jsx)(n.h2,{id:"-license",children:"\ud83d\udcc4 License"}),"\n",(0,t.jsxs)(n.p,{children:["This project is licensed under the ",(0,t.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/main/LICENSE",children:"Apache License 2.0"}),"."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," This documentation is for developers. End users should refer to the ",(0,t.jsx)(n.a,{href:"https://jpawlowski.github.io/hass.tibber_prices/user/",children:"User Documentation"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/0fd2f299.823d64a2.js b/developer/assets/js/0fd2f299.823d64a2.js new file mode 100644 index 0000000..7761422 --- /dev/null +++ b/developer/assets/js/0fd2f299.823d64a2.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8657],{7386:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"refactoring-guide","title":"Refactoring Guide","description":"This guide explains how to plan and execute major refactorings in this project.","source":"@site/docs/refactoring-guide.md","sourceDirName":".","slug":"/refactoring-guide","permalink":"/hass.tibber_prices/developer/refactoring-guide","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/refactoring-guide.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Period Calculation Theory","permalink":"/hass.tibber_prices/developer/period-calculation-theory"},"next":{"title":"Performance Optimization","permalink":"/hass.tibber_prices/developer/performance"}}');var l=s(4848),r=s(8453);const t={},a="Refactoring Guide",c={},d=[{value:"When to Plan a Refactoring",id:"when-to-plan-a-refactoring",level:2},{value:"The Planning Process",id:"the-planning-process",level:2},{value:"1. Create a Planning Document",id:"1-create-a-planning-document",level:3},{value:"2. Use the Planning Template",id:"2-use-the-planning-template",level:3},{value:"3. Iterate Freely",id:"3-iterate-freely",level:3},{value:"4. Implementation Phase",id:"4-implementation-phase",level:3},{value:"5. After Completion",id:"5-after-completion",level:3},{value:"Real-World Example",id:"real-world-example",level:2},{value:"Phase-by-Phase Implementation",id:"phase-by-phase-implementation",level:2},{value:"Why Phases Matter",id:"why-phases-matter",level:3},{value:"Phase Structure",id:"phase-structure",level:3},{value:"Example Phase Documentation",id:"example-phase-documentation",level:3},{value:"Testing Strategy",id:"testing-strategy",level:2},{value:"After Each Phase",id:"after-each-phase",level:3},{value:"Comprehensive Testing (Final Phase)",id:"comprehensive-testing-final-phase",level:3},{value:"Common Pitfalls",id:"common-pitfalls",level:2},{value:"\u274c Skip Planning for Large Changes",id:"-skip-planning-for-large-changes",level:3},{value:"\u274c Implement All Phases at Once",id:"-implement-all-phases-at-once",level:3},{value:"\u274c Forget to Update Documentation",id:"-forget-to-update-documentation",level:3},{value:"\u274c Ignore the Planning Directory",id:"-ignore-the-planning-directory",level:3},{value:"Integration with AI Development",id:"integration-with-ai-development",level:2},{value:"Tools and Resources",id:"tools-and-resources",level:2},{value:"Planning Directory",id:"planning-directory",level:3},{value:"Example Plans",id:"example-plans",level:3},{value:"Helper Scripts",id:"helper-scripts",level:3},{value:"FAQ",id:"faq",level:2},{value:"Q: When should I create a plan vs. just start coding?",id:"q-when-should-i-create-a-plan-vs-just-start-coding",level:3},{value:"Q: How detailed should the plan be?",id:"q-how-detailed-should-the-plan-be",level:3},{value:"Q: What if the plan changes during implementation?",id:"q-what-if-the-plan-changes-during-implementation",level:3},{value:"Q: Should every refactoring follow this process?",id:"q-should-every-refactoring-follow-this-process",level:3},{value:"Q: How do I know when a refactoring is successful?",id:"q-how-do-i-know-when-a-refactoring-is-successful",level:3},{value:"Summary",id:"summary",level:2}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.header,{children:(0,l.jsx)(n.h1,{id:"refactoring-guide",children:"Refactoring Guide"})}),"\n",(0,l.jsx)(n.p,{children:"This guide explains how to plan and execute major refactorings in this project."}),"\n",(0,l.jsx)(n.h2,{id:"when-to-plan-a-refactoring",children:"When to Plan a Refactoring"}),"\n",(0,l.jsx)(n.p,{children:"Not every code change needs a detailed plan. Create a refactoring plan when:"}),"\n",(0,l.jsxs)(n.p,{children:["\ud83d\udd34 ",(0,l.jsx)(n.strong,{children:"Major changes requiring planning:"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Splitting modules into packages (>5 files affected, >500 lines moved)"}),"\n",(0,l.jsx)(n.li,{children:"Architectural changes (new packages, module restructuring)"}),"\n",(0,l.jsx)(n.li,{children:"Breaking changes (API changes, config format migrations)"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["\ud83d\udfe1 ",(0,l.jsx)(n.strong,{children:"Medium changes that might benefit from planning:"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Complex features with multiple moving parts"}),"\n",(0,l.jsx)(n.li,{children:"Changes affecting many files (>3 files, unclear best approach)"}),"\n",(0,l.jsx)(n.li,{children:"Refactorings with unclear scope"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["\ud83d\udfe2 ",(0,l.jsx)(n.strong,{children:"Small changes - no planning needed:"})]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["Bug fixes (straightforward, ",(0,l.jsx)(n.code,{children:"<"}),"100 lines)"]}),"\n",(0,l.jsxs)(n.li,{children:["Small features (",(0,l.jsx)(n.code,{children:"<"}),"3 files, clear approach)"]}),"\n",(0,l.jsx)(n.li,{children:"Documentation updates"}),"\n",(0,l.jsx)(n.li,{children:"Cosmetic changes (formatting, renaming)"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"the-planning-process",children:"The Planning Process"}),"\n",(0,l.jsx)(n.h3,{id:"1-create-a-planning-document",children:"1. Create a Planning Document"}),"\n",(0,l.jsxs)(n.p,{children:["Create a file in the ",(0,l.jsx)(n.code,{children:"planning/"})," directory (git-ignored for free iteration):"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# Example:\ntouch planning/my-feature-refactoring-plan.md\n"})}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Note:"})," The ",(0,l.jsx)(n.code,{children:"planning/"})," directory is git-ignored, so you can iterate freely without polluting git history."]}),"\n",(0,l.jsx)(n.h3,{id:"2-use-the-planning-template",children:"2. Use the Planning Template"}),"\n",(0,l.jsx)(n.p,{children:"Every planning document should include:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-markdown",children:"# Refactoring Plan\n\n**Status**: \ud83d\udd04 PLANNING | \ud83d\udea7 IN PROGRESS | \u2705 COMPLETED | \u274c CANCELLED\n**Created**: YYYY-MM-DD\n**Last Updated**: YYYY-MM-DD\n\n## Problem Statement\n\n- What's the issue?\n- Why does it need fixing?\n- Current pain points\n\n## Proposed Solution\n\n- High-level approach\n- File structure (before/after)\n- Module responsibilities\n\n## Migration Strategy\n\n- Phase-by-phase breakdown\n- File lifecycle (CREATE/MODIFY/DELETE/RENAME)\n- Dependencies between phases\n- Testing checkpoints\n\n## Risks & Mitigation\n\n- What could go wrong?\n- How to prevent it?\n- Rollback strategy\n\n## Success Criteria\n\n- Measurable improvements\n- Testing requirements\n- Verification steps\n"})}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.code,{children:"planning/README.md"})," for detailed template explanation."]}),"\n",(0,l.jsx)(n.h3,{id:"3-iterate-freely",children:"3. Iterate Freely"}),"\n",(0,l.jsxs)(n.p,{children:["Since ",(0,l.jsx)(n.code,{children:"planning/"})," is git-ignored:"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Draft multiple versions"}),"\n",(0,l.jsx)(n.li,{children:"Get AI assistance without commit pressure"}),"\n",(0,l.jsx)(n.li,{children:"Refine until the plan is solid"}),"\n",(0,l.jsx)(n.li,{children:"No need to clean up intermediate versions"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"4-implementation-phase",children:"4. Implementation Phase"}),"\n",(0,l.jsx)(n.p,{children:"Once plan is approved:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Follow the phases defined in the plan"}),"\n",(0,l.jsx)(n.li,{children:"Test after each phase (don't skip!)"}),"\n",(0,l.jsx)(n.li,{children:"Update plan if issues discovered"}),"\n",(0,l.jsx)(n.li,{children:"Track progress through phase status"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"5-after-completion",children:"5. After Completion"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Option A: Archive in docs/development/"}),"\nIf the plan has lasting value (successful pattern, reusable approach):"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'mv planning/my-feature-refactoring-plan.md docs/development/\ngit add docs/development/my-feature-refactoring-plan.md\ngit commit -m "docs: archive successful refactoring plan"\n'})}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Option B: Delete"}),"\nIf the plan served its purpose and code is the source of truth:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"rm planning/my-feature-refactoring-plan.md\n"})}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Option C: Keep locally (not committed)"}),'\nFor "why we didn\'t do X" reference:']}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"mkdir -p planning/archive\nmv planning/my-feature-refactoring-plan.md planning/archive/\n# Still git-ignored, just organized\n"})}),"\n",(0,l.jsx)(n.h2,{id:"real-world-example",children:"Real-World Example"}),"\n",(0,l.jsxs)(n.p,{children:["The ",(0,l.jsx)(n.strong,{children:"sensor/ package refactoring"})," (Nov 2025) is a successful example:"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Before:"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sensor.py"})," - 2,574 lines, hard to navigate"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"After:"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"sensor/"})," package with 5 focused modules"]}),"\n",(0,l.jsxs)(n.li,{children:["Each module ",(0,l.jsx)(n.code,{children:"<"}),"800 lines"]}),"\n",(0,l.jsx)(n.li,{children:"Clear separation of concerns"}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Process:"})}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["Created ",(0,l.jsx)(n.code,{children:"planning/module-splitting-plan.md"})," (now in ",(0,l.jsx)(n.code,{children:"docs/development/"}),")"]}),"\n",(0,l.jsx)(n.li,{children:"Defined 6 phases with clear file lifecycle"}),"\n",(0,l.jsx)(n.li,{children:"Implemented phase by phase"}),"\n",(0,l.jsx)(n.li,{children:"Tested after each phase"}),"\n",(0,l.jsx)(n.li,{children:"Documented in AGENTS.md"}),"\n",(0,l.jsxs)(n.li,{children:["Moved plan to ",(0,l.jsx)(n.code,{children:"docs/development/"})," as reference"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Key learnings:"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["Temporary ",(0,l.jsx)(n.code,{children:"_impl.py"})," files avoid Python package conflicts"]}),"\n",(0,l.jsx)(n.li,{children:"Test after EVERY phase (don't accumulate changes)"}),"\n",(0,l.jsx)(n.li,{children:"Clear file lifecycle (CREATE/MODIFY/DELETE/RENAME)"}),"\n",(0,l.jsx)(n.li,{children:"Phase-by-phase approach enables safe rollback"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Note:"})," The complete module splitting plan was documented during implementation but has been superseded by the actual code structure."]}),"\n",(0,l.jsx)(n.h2,{id:"phase-by-phase-implementation",children:"Phase-by-Phase Implementation"}),"\n",(0,l.jsx)(n.h3,{id:"why-phases-matter",children:"Why Phases Matter"}),"\n",(0,l.jsx)(n.p,{children:"Breaking refactorings into phases:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u2705 Enables testing after each change (catch bugs early)"}),"\n",(0,l.jsx)(n.li,{children:"\u2705 Allows rollback to last good state"}),"\n",(0,l.jsx)(n.li,{children:"\u2705 Makes progress visible"}),"\n",(0,l.jsx)(n.li,{children:"\u2705 Reduces cognitive load (focus on one thing)"}),"\n",(0,l.jsx)(n.li,{children:"\u274c Takes more time (but worth it!)"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"phase-structure",children:"Phase Structure"}),"\n",(0,l.jsx)(n.p,{children:"Each phase should:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Have clear goal"})," - What's being changed?"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Document file lifecycle"})," - CREATE/MODIFY/DELETE/RENAME"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Define success criteria"})," - How to verify it worked?"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Include testing steps"})," - What to test?"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Estimate time"})," - Realistic time budget"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"example-phase-documentation",children:"Example Phase Documentation"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-markdown",children:"### Phase 3: Extract Helper Functions (Session 3)\n\n**Goal**: Move pure utility functions to helpers.py\n\n**File Lifecycle**:\n\n- \u2728 CREATE `sensor/helpers.py` (utility functions)\n- \u270f\ufe0f MODIFY `sensor/core.py` (import from helpers.py)\n\n**Steps**:\n\n1. Create sensor/helpers.py\n2. Move pure functions (no state, no self)\n3. Add comprehensive docstrings\n4. Update imports in core.py\n\n**Estimated time**: 45 minutes\n\n**Success criteria**:\n\n- \u2705 All pure functions moved\n- \u2705 `./scripts/lint-check` passes\n- \u2705 HA starts successfully\n- \u2705 All entities work correctly\n"})}),"\n",(0,l.jsx)(n.h2,{id:"testing-strategy",children:"Testing Strategy"}),"\n",(0,l.jsx)(n.h3,{id:"after-each-phase",children:"After Each Phase"}),"\n",(0,l.jsx)(n.p,{children:"Minimum testing checklist:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"# 1. Linting passes\n./scripts/lint-check\n\n# 2. Home Assistant starts\n./scripts/develop\n# Watch for startup errors in logs\n\n# 3. Integration loads\n# Check: Settings \u2192 Devices & Services \u2192 Tibber Prices\n# Verify: All entities appear\n\n# 4. Basic functionality\n# Test: Data updates without errors\n# Check: Entity states update correctly\n"})}),"\n",(0,l.jsx)(n.h3,{id:"comprehensive-testing-final-phase",children:"Comprehensive Testing (Final Phase)"}),"\n",(0,l.jsx)(n.p,{children:"After completing all phases:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Test all entities (sensors, binary sensors)"}),"\n",(0,l.jsx)(n.li,{children:"Test configuration flow (add/modify/remove)"}),"\n",(0,l.jsx)(n.li,{children:"Test options flow (change settings)"}),"\n",(0,l.jsx)(n.li,{children:"Test services (custom service calls)"}),"\n",(0,l.jsx)(n.li,{children:"Test error handling (disconnect API, invalid data)"}),"\n",(0,l.jsx)(n.li,{children:"Test caching (restart HA, verify cache loads)"}),"\n",(0,l.jsx)(n.li,{children:"Test time-based updates (quarter-hour refresh)"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"common-pitfalls",children:"Common Pitfalls"}),"\n",(0,l.jsx)(n.h3,{id:"-skip-planning-for-large-changes",children:"\u274c Skip Planning for Large Changes"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Problem:"}),' "This seems straightforward, I\'ll just start coding..."']}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Result:"})," Halfway through, realize the approach doesn't work. Wasted time."]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Solution:"})," If unsure, spend 30 minutes on a rough plan. Better to plan and discard than get stuck."]}),"\n",(0,l.jsx)(n.h3,{id:"-implement-all-phases-at-once",children:"\u274c Implement All Phases at Once"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Problem:"}),' "I\'ll do all phases, then test everything..."']}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Result:"})," 10+ files changed, 2000+ lines modified, hard to debug if something breaks."]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Solution:"})," Test after EVERY phase. Commit after each successful phase."]}),"\n",(0,l.jsx)(n.h3,{id:"-forget-to-update-documentation",children:"\u274c Forget to Update Documentation"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Problem:"})," Code is refactored, but AGENTS.md and docs/ still reference old structure."]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Result:"})," AI/humans get confused by outdated documentation."]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Solution:"}),' Include "Documentation Phase" at the end of every refactoring plan.']}),"\n",(0,l.jsx)(n.h3,{id:"-ignore-the-planning-directory",children:"\u274c Ignore the Planning Directory"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Problem:"}),' "I\'ll just create the plan in docs/ directly..."']}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Result:"}),' Git history polluted with draft iterations, or pressure to "commit something" too early.']}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Solution:"})," Always use ",(0,l.jsx)(n.code,{children:"planning/"})," for work-in-progress. Move to ",(0,l.jsx)(n.code,{children:"docs/"})," only when done."]}),"\n",(0,l.jsx)(n.h2,{id:"integration-with-ai-development",children:"Integration with AI Development"}),"\n",(0,l.jsx)(n.p,{children:"This project uses AI heavily (GitHub Copilot, Claude). The planning process supports AI development:"}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"AI reads from:"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AGENTS.md"})," - Long-term memory, patterns, conventions (AI-focused)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"docs/development/"})," - Human-readable guides (human-focused)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"planning/"})," - Active refactoring plans (shared context)"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"AI updates:"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AGENTS.md"})," - When patterns change"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"planning/*.md"})," - During refactoring implementation"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"docs/development/"})," - After successful completion"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Why separate AGENTS.md and docs/development/?"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"AGENTS.md"}),": Technical, comprehensive, AI-optimized"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"docs/development/"}),": Practical, focused, human-optimized"]}),"\n",(0,l.jsx)(n.li,{children:"Both stay in sync but serve different audiences"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["See ",(0,l.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:"AGENTS.md"}),' section "Planning Major Refactorings" for AI-specific guidance.']}),"\n",(0,l.jsx)(n.h2,{id:"tools-and-resources",children:"Tools and Resources"}),"\n",(0,l.jsx)(n.h3,{id:"planning-directory",children:"Planning Directory"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"planning/"})," - Git-ignored workspace for drafts"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"planning/README.md"})," - Detailed planning documentation"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"planning/*.md"})," - Active refactoring plans"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"example-plans",children:"Example Plans"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"docs/development/module-splitting-plan.md"})," - \u2705 Completed, archived"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"planning/config-flow-refactoring-plan.md"})," - \ud83d\udd04 Planned (1013 lines \u2192 4 modules)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"planning/binary-sensor-refactoring-plan.md"})," - \ud83d\udd04 Planned (644 lines \u2192 4 modules)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.code,{children:"planning/coordinator-refactoring-plan.md"})," - \ud83d\udd04 Planned (1446 lines, high complexity)"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"helper-scripts",children:"Helper Scripts"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"./scripts/lint-check # Verify code quality\n./scripts/develop # Start HA for testing\n./scripts/lint # Auto-fix issues\n"})}),"\n",(0,l.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,l.jsx)(n.h3,{id:"q-when-should-i-create-a-plan-vs-just-start-coding",children:"Q: When should I create a plan vs. just start coding?"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A:"})," If you're asking this question, you probably need a plan. \ud83d\ude0a"]}),"\n",(0,l.jsx)(n.p,{children:"Simple rule: If you can't describe the entire change in 3 sentences, create a plan."}),"\n",(0,l.jsx)(n.h3,{id:"q-how-detailed-should-the-plan-be",children:"Q: How detailed should the plan be?"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A:"})," Detailed enough to execute without major surprises, but not a line-by-line script."]}),"\n",(0,l.jsx)(n.p,{children:"Good plan level:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Lists all files affected (CREATE/MODIFY/DELETE)"}),"\n",(0,l.jsx)(n.li,{children:"Defines phases with clear boundaries"}),"\n",(0,l.jsx)(n.li,{children:"Includes testing strategy"}),"\n",(0,l.jsx)(n.li,{children:"Estimates time per phase"}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Too detailed:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Exact code snippets for every change"}),"\n",(0,l.jsx)(n.li,{children:"Line-by-line instructions"}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Too vague:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'"Refactor sensor.py to be better"'}),"\n",(0,l.jsx)(n.li,{children:"No phase breakdown"}),"\n",(0,l.jsx)(n.li,{children:"No testing strategy"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"q-what-if-the-plan-changes-during-implementation",children:"Q: What if the plan changes during implementation?"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A:"})," Update the plan! Planning documents are living documents."]}),"\n",(0,l.jsx)(n.p,{children:"If you discover:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'Better approach \u2192 Update "Proposed Solution"'}),"\n",(0,l.jsx)(n.li,{children:'More phases needed \u2192 Add to "Migration Strategy"'}),"\n",(0,l.jsx)(n.li,{children:'New risks \u2192 Update "Risks & Mitigation"'}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Document WHY the plan changed (helps future refactorings)."}),"\n",(0,l.jsx)(n.h3,{id:"q-should-every-refactoring-follow-this-process",children:"Q: Should every refactoring follow this process?"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A:"})," No! Use judgment:"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsxs)(n.strong,{children:["Small changes (",(0,l.jsx)(n.code,{children:"<"}),"100 lines, clear approach)"]}),": Just do it, no plan needed"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Medium changes (unclear scope)"}),": Write rough outline, refine if needed"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Large changes (>500 lines, >5 files)"}),": Full planning process"]}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"q-how-do-i-know-when-a-refactoring-is-successful",children:"Q: How do I know when a refactoring is successful?"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"A:"}),' Check the "Success Criteria" from your plan:']}),"\n",(0,l.jsx)(n.p,{children:"Typical criteria:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"\u2705 All linting checks pass"}),"\n",(0,l.jsx)(n.li,{children:"\u2705 HA starts without errors"}),"\n",(0,l.jsx)(n.li,{children:"\u2705 All entities functional"}),"\n",(0,l.jsx)(n.li,{children:"\u2705 No regressions (existing features work)"}),"\n",(0,l.jsx)(n.li,{children:"\u2705 Code easier to understand/modify"}),"\n",(0,l.jsx)(n.li,{children:"\u2705 Documentation updated"}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"If you can't tick all boxes, the refactoring isn't done."}),"\n",(0,l.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Key takeaways:"})}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Plan when scope is unclear"})," (>500 lines, >5 files, breaking changes)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Use planning/ directory"})," for free iteration (git-ignored)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Work in phases"})," and test after each phase"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Document file lifecycle"})," (CREATE/MODIFY/DELETE/RENAME)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Update documentation"})," after completion (AGENTS.md, docs/)"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Archive or delete"})," plan after implementation"]}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Remember:"})," Good planning prevents half-finished refactorings and makes rollback easier when things go wrong."]}),"\n",(0,l.jsx)(n.hr,{}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Next steps:"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:["Read ",(0,l.jsx)(n.code,{children:"planning/README.md"})," for detailed template"]}),"\n",(0,l.jsxs)(n.li,{children:["Check ",(0,l.jsx)(n.code,{children:"docs/development/module-splitting-plan.md"})," for real example"]}),"\n",(0,l.jsxs)(n.li,{children:["Browse ",(0,l.jsx)(n.code,{children:"planning/"})," for active refactoring plans"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/1000.592a735f.js b/developer/assets/js/1000.592a735f.js new file mode 100644 index 0000000..ed5d41b --- /dev/null +++ b/developer/assets/js/1000.592a735f.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[1e3],{1e3:(e,s,a)=>{a.d(s,{createRadarServices:()=>l.f});var l=a(7846);a(7960)}}]); \ No newline at end of file diff --git a/developer/assets/js/1203.f0df0218.js b/developer/assets/js/1203.f0df0218.js new file mode 100644 index 0000000..eeb565f --- /dev/null +++ b/developer/assets/js/1203.f0df0218.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[1203],{1203:(t,e,i)=>{i.d(e,{diagram:()=>I});var a=i(7633),n=i(797),s=i(451),r=function(){var t=(0,n.K2)(function(t,e,i,a){for(i=i||{},a=t.length;a--;i[t[a]]=e);return i},"o"),e=[1,3],i=[1,4],a=[1,5],s=[1,6],r=[1,7],o=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],h=[55,56,57],c=[2,36],d=[1,37],u=[1,36],x=[1,38],g=[1,35],f=[1,43],p=[1,41],y=[1,14],T=[1,23],m=[1,18],q=[1,19],A=[1,20],_=[1,21],b=[1,22],S=[1,24],k=[1,25],F=[1,26],P=[1,27],C=[1,28],L=[1,29],v=[1,32],I=[1,33],E=[1,34],D=[1,39],z=[1,40],w=[1,42],K=[1,44],U=[1,62],N=[1,61],R=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],B=[1,65],W=[1,66],$=[1,67],Q=[1,68],O=[1,69],X=[1,70],H=[1,71],M=[1,72],Y=[1,73],j=[1,74],G=[1,75],V=[1,76],Z=[4,5,6,7,8,9,10,11,12,13,14,15,18],J=[1,90],tt=[1,91],et=[1,92],it=[1,99],at=[1,93],nt=[1,96],st=[1,94],rt=[1,95],ot=[1,97],lt=[1,98],ht=[1,102],ct=[10,55,56,57],dt=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ut={trace:(0,n.K2)(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:(0,n.K2)(function(t,e,i,a,n,s,r){var o=s.length-1;switch(n){case 23:case 68:this.$=s[o];break;case 24:case 69:this.$=s[o-1]+""+s[o];break;case 26:this.$=s[o-1]+s[o];break;case 27:this.$=[s[o].trim()];break;case 28:s[o-2].push(s[o].trim()),this.$=s[o-2];break;case 29:this.$=s[o-4],a.addClass(s[o-2],s[o]);break;case 37:this.$=[];break;case 42:this.$=s[o].trim(),a.setDiagramTitle(this.$);break;case 43:this.$=s[o].trim(),a.setAccTitle(this.$);break;case 44:case 45:this.$=s[o].trim(),a.setAccDescription(this.$);break;case 46:a.addSection(s[o].substr(8)),this.$=s[o].substr(8);break;case 47:a.addPoint(s[o-3],"",s[o-1],s[o],[]);break;case 48:a.addPoint(s[o-4],s[o-3],s[o-1],s[o],[]);break;case 49:a.addPoint(s[o-4],"",s[o-2],s[o-1],s[o]);break;case 50:a.addPoint(s[o-5],s[o-4],s[o-2],s[o-1],s[o]);break;case 51:a.setXAxisLeftText(s[o-2]),a.setXAxisRightText(s[o]);break;case 52:s[o-1].text+=" \u27f6 ",a.setXAxisLeftText(s[o-1]);break;case 53:a.setXAxisLeftText(s[o]);break;case 54:a.setYAxisBottomText(s[o-2]),a.setYAxisTopText(s[o]);break;case 55:s[o-1].text+=" \u27f6 ",a.setYAxisBottomText(s[o-1]);break;case 56:a.setYAxisBottomText(s[o]);break;case 57:a.setQuadrant1Text(s[o]);break;case 58:a.setQuadrant2Text(s[o]);break;case 59:a.setQuadrant3Text(s[o]);break;case 60:a.setQuadrant4Text(s[o]);break;case 64:case 66:this.$={text:s[o],type:"text"};break;case 65:this.$={text:s[o-1].text+""+s[o],type:s[o-1].type};break;case 67:this.$={text:s[o],type:"markdown"}}},"anonymous"),table:[{18:e,26:1,27:2,28:i,55:a,56:s,57:r},{1:[3]},{18:e,26:8,27:2,28:i,55:a,56:s,57:r},{18:e,26:9,27:2,28:i,55:a,56:s,57:r},t(o,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(h,c,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:u,10:x,12:g,13:f,14:p,18:y,25:T,35:m,37:q,39:A,41:_,42:b,48:S,50:k,51:F,52:P,53:C,54:L,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(o,[2,34]),{27:45,55:a,56:s,57:r},t(h,[2,37]),t(h,c,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:d,5:u,10:x,12:g,13:f,14:p,18:y,25:T,35:m,37:q,39:A,41:_,42:b,48:S,50:k,51:F,52:P,53:C,54:L,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(h,[2,39]),t(h,[2,40]),t(h,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(h,[2,45]),t(h,[2,46]),{18:[1,50]},{4:d,5:u,10:x,12:g,13:f,14:p,43:51,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:52,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:53,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:54,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:55,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:56,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,44:[1,57],47:[1,58],58:60,59:59,63:E,64:D,65:z,66:w,67:K},t(R,[2,64]),t(R,[2,66]),t(R,[2,67]),t(R,[2,70]),t(R,[2,71]),t(R,[2,72]),t(R,[2,73]),t(R,[2,74]),t(R,[2,75]),t(R,[2,76]),t(R,[2,77]),t(R,[2,78]),t(R,[2,79]),t(R,[2,80]),t(o,[2,35]),t(h,[2,38]),t(h,[2,42]),t(h,[2,43]),t(h,[2,44]),{3:64,4:B,5:W,6:$,7:Q,8:O,9:X,10:H,11:M,12:Y,13:j,14:G,15:V,21:63},t(h,[2,53],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,49:[1,77],63:E,64:D,65:z,66:w,67:K}),t(h,[2,56],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,49:[1,78],63:E,64:D,65:z,66:w,67:K}),t(h,[2,57],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,58],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,59],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,60],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),{45:[1,79]},{44:[1,80]},t(R,[2,65]),t(R,[2,81]),t(R,[2,82]),t(R,[2,83]),{3:82,4:B,5:W,6:$,7:Q,8:O,9:X,10:H,11:M,12:Y,13:j,14:G,15:V,18:[1,81]},t(Z,[2,23]),t(Z,[2,1]),t(Z,[2,2]),t(Z,[2,3]),t(Z,[2,4]),t(Z,[2,5]),t(Z,[2,6]),t(Z,[2,7]),t(Z,[2,8]),t(Z,[2,9]),t(Z,[2,10]),t(Z,[2,11]),t(Z,[2,12]),t(h,[2,52],{58:31,43:83,4:d,5:u,10:x,12:g,13:f,14:p,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(h,[2,55],{58:31,43:84,4:d,5:u,10:x,12:g,13:f,14:p,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),{46:[1,85]},{45:[1,86]},{4:J,5:tt,6:et,8:it,11:at,13:nt,16:89,17:st,18:rt,19:ot,20:lt,22:88,23:87},t(Z,[2,24]),t(h,[2,51],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,54],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,47],{22:88,16:89,23:100,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),{46:[1,101]},t(h,[2,29],{10:ht}),t(ct,[2,27],{16:103,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),t(dt,[2,25]),t(dt,[2,13]),t(dt,[2,14]),t(dt,[2,15]),t(dt,[2,16]),t(dt,[2,17]),t(dt,[2,18]),t(dt,[2,19]),t(dt,[2,20]),t(dt,[2,21]),t(dt,[2,22]),t(h,[2,49],{10:ht}),t(h,[2,48],{22:88,16:89,23:104,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),{4:J,5:tt,6:et,8:it,11:at,13:nt,16:89,17:st,18:rt,19:ot,20:lt,22:105},t(dt,[2,26]),t(h,[2,50],{10:ht}),t(ct,[2,28],{16:103,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt})],defaultActions:{8:[2,30],9:[2,31]},parseError:(0,n.K2)(function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},"parseError"),parse:(0,n.K2)(function(t){var e=this,i=[0],a=[],s=[null],r=[],o=this.table,l="",h=0,c=0,d=0,u=r.slice.call(arguments,1),x=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);x.setInput(t,g.yy),g.yy.lexer=x,g.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var p=x.yylloc;r.push(p);var y=x.options&&x.options.ranges;function T(){var t;return"number"!=typeof(t=a.pop()||x.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,n.K2)(function(t){i.length=i.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,n.K2)(T,"lex");for(var m,q,A,_,b,S,k,F,P,C={};;){if(A=i[i.length-1],this.defaultActions[A]?_=this.defaultActions[A]:(null==m&&(m=T()),_=o[A]&&o[A][m]),void 0===_||!_.length||!_[0]){var L="";for(S in P=[],o[A])this.terminals_[S]&&S>2&&P.push("'"+this.terminals_[S]+"'");L=x.showPosition?"Parse error on line "+(h+1)+":\n"+x.showPosition()+"\nExpecting "+P.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[m]||m,line:x.yylineno,loc:p,expected:P})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+m);switch(_[0]){case 1:i.push(m),s.push(x.yytext),r.push(x.yylloc),i.push(_[1]),m=null,q?(m=q,q=null):(c=x.yyleng,l=x.yytext,h=x.yylineno,p=x.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[_[1]][1],C.$=s[s.length-k],C._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},y&&(C._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[l,c,h,g.yy,_[1],s,r].concat(u))))return b;k&&(i=i.slice(0,-1*k*2),s=s.slice(0,-1*k),r=r.slice(0,-1*k)),i.push(this.productions_[_[1]][0]),s.push(C.$),r.push(C._$),F=o[i[i.length-2]][i[i.length-1]],i.push(F);break;case 3:return!0}}return!0},"parse")},xt=function(){return{EOF:1,parseError:(0,n.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,n.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,n.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,n.K2)(function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===a.length?this.yylloc.first_column:0)+a[a.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,n.K2)(function(){return this._more=!0,this},"more"),reject:(0,n.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,n.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,n.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,n.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,n.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,n.K2)(function(t,e){var i,a,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in n)this[s]=n[s];return!1}return!1},"test_match"),next:(0,n.K2)(function(){if(this.done)return this.EOF;var t,e,i,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),s=0;se[0].length)){if(e=i,a=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,n[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,n.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,n.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,n.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,n.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,n.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,n.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,n.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,n.K2)(function(t,e,i,a){switch(i){case 0:case 1:case 3:break;case 2:return 55;case 4:return this.begin("title"),35;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),37;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),39;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 23:case 25:case 31:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 24:this.begin("string");break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;case 29:return this.begin("point_start"),44;case 30:return this.begin("point_x"),45;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}}}();function gt(){this.yy={}}return ut.lexer=xt,(0,n.K2)(gt,"Parser"),gt.prototype=ut,ut.Parser=gt,new gt}();r.parser=r;var o=r,l=(0,a.P$)(),h=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{(0,n.K2)(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:a.UI.quadrantChart?.chartWidth||500,chartWidth:a.UI.quadrantChart?.chartHeight||500,titlePadding:a.UI.quadrantChart?.titlePadding||10,titleFontSize:a.UI.quadrantChart?.titleFontSize||20,quadrantPadding:a.UI.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:a.UI.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:a.UI.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:a.UI.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:a.UI.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:a.UI.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:a.UI.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:a.UI.quadrantChart?.pointTextPadding||5,pointLabelFontSize:a.UI.quadrantChart?.pointLabelFontSize||12,pointRadius:a.UI.quadrantChart?.pointRadius||5,xAxisPosition:a.UI.quadrantChart?.xAxisPosition||"top",yAxisPosition:a.UI.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:l.quadrant1Fill,quadrant2Fill:l.quadrant2Fill,quadrant3Fill:l.quadrant3Fill,quadrant4Fill:l.quadrant4Fill,quadrant1TextFill:l.quadrant1TextFill,quadrant2TextFill:l.quadrant2TextFill,quadrant3TextFill:l.quadrant3TextFill,quadrant4TextFill:l.quadrant4TextFill,quadrantPointFill:l.quadrantPointFill,quadrantPointTextFill:l.quadrantPointTextFill,quadrantXAxisTextFill:l.quadrantXAxisTextFill,quadrantYAxisTextFill:l.quadrantYAxisTextFill,quadrantTitleFill:l.quadrantTitleFill,quadrantInternalBorderStrokeFill:l.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:l.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,n.Rm.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){n.Rm.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){n.Rm.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,i,a){const n=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,s={top:"top"===t&&e?n:0,bottom:"bottom"===t&&e?n:0},r=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,o={left:"left"===this.config.yAxisPosition&&i?r:0,right:"right"===this.config.yAxisPosition&&i?r:0},l=this.config.titleFontSize+2*this.config.titlePadding,h={top:a?l:0},c=this.config.quadrantPadding+o.left,d=this.config.quadrantPadding+s.top+h.top,u=this.config.chartWidth-2*this.config.quadrantPadding-o.left-o.right,x=this.config.chartHeight-2*this.config.quadrantPadding-s.top-s.bottom-h.top;return{xAxisSpace:s,yAxisSpace:o,titleSpace:h,quadrantSpace:{quadrantLeft:c,quadrantTop:d,quadrantWidth:u,quadrantHalfWidth:u/2,quadrantHeight:x,quadrantHalfHeight:x/2}}}getAxisLabels(t,e,i,a){const{quadrantSpace:n,titleSpace:s}=a,{quadrantHalfHeight:r,quadrantHeight:o,quadrantLeft:l,quadrantHalfWidth:h,quadrantTop:c,quadrantWidth:d}=n,u=Boolean(this.data.xAxisRightText),x=Boolean(this.data.yAxisTopText),g=[];return this.data.xAxisLeftText&&e&&g.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&g.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+h+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&i&&g.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+o-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&i&&g.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+r-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),g}getQuadrants(t){const{quadrantSpace:e}=t,{quadrantHalfHeight:i,quadrantLeft:a,quadrantHalfWidth:n,quadrantTop:s}=e,r=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s,width:n,height:i,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s,width:n,height:i,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant4Fill}];for(const o of r)o.text.x=o.x+o.width/2,0===this.data.points.length?(o.text.y=o.y+o.height/2,o.text.horizontalPos="middle"):(o.text.y=o.y+this.config.quadrantTextTopPadding,o.text.horizontalPos="top");return r}getQuadrantPoints(t){const{quadrantSpace:e}=t,{quadrantHeight:i,quadrantLeft:a,quadrantTop:n,quadrantWidth:r}=e,o=(0,s.m4Y)().domain([0,1]).range([a,r+a]),l=(0,s.m4Y)().domain([0,1]).range([i+n,n]);return this.data.points.map(t=>{const e=this.classes.get(t.className);e&&(t={...e,...t});return{x:o(t.x),y:l(t.y),fill:t.color??this.themeConfig.quadrantPointFill,radius:t.radius??this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:o(t.x),y:l(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:t.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:t.strokeWidth??"0px"}})}getBorders(t){const e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:i}=t,{quadrantHalfHeight:a,quadrantHeight:n,quadrantLeft:s,quadrantHalfWidth:r,quadrantTop:o,quadrantWidth:l}=i;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o,x2:s+l+e,y2:o},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+l,y1:o+e,x2:s+l,y2:o+n-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o+n,x2:s+l+e,y2:o+n},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:o+e,x2:s,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:o+e,x2:s+r,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+e,y1:o+a,x2:s+l-e,y2:o+a}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),i=this.config.showTitle&&!!this.data.titleText,a=this.data.points.length>0?"bottom":this.config.xAxisPosition,n=this.calculateSpace(a,t,e,i);return{points:this.getQuadrantPoints(n),quadrants:this.getQuadrants(n),axisLabels:this.getAxisLabels(a,t,e,n),borderLines:this.getBorders(n),title:this.getTitle(i)}}},c=class extends Error{static{(0,n.K2)(this,"InvalidStyleError")}constructor(t,e,i){super(`value for ${t} ${e} is invalid, please use a valid ${i}`),this.name="InvalidStyleError"}};function d(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function u(t){return!/^\d+$/.test(t)}function x(t){return!/^\d+px$/.test(t)}(0,n.K2)(d,"validateHexCode"),(0,n.K2)(u,"validateNumber"),(0,n.K2)(x,"validateSizeInPixels");var g=(0,a.D7)();function f(t){return(0,a.jZ)(t.trim(),g)}(0,n.K2)(f,"textSanitizer");var p=new h;function y(t){p.setData({quadrant1Text:f(t.text)})}function T(t){p.setData({quadrant2Text:f(t.text)})}function m(t){p.setData({quadrant3Text:f(t.text)})}function q(t){p.setData({quadrant4Text:f(t.text)})}function A(t){p.setData({xAxisLeftText:f(t.text)})}function _(t){p.setData({xAxisRightText:f(t.text)})}function b(t){p.setData({yAxisTopText:f(t.text)})}function S(t){p.setData({yAxisBottomText:f(t.text)})}function k(t){const e={};for(const i of t){const[t,a]=i.trim().split(/\s*:\s*/);if("radius"===t){if(u(a))throw new c(t,a,"number");e.radius=parseInt(a)}else if("color"===t){if(d(a))throw new c(t,a,"hex code");e.color=a}else if("stroke-color"===t){if(d(a))throw new c(t,a,"hex code");e.strokeColor=a}else{if("stroke-width"!==t)throw new Error(`style named ${t} is not supported.`);if(x(a))throw new c(t,a,"number of pixels (eg. 10px)");e.strokeWidth=a}}return e}function F(t,e,i,a,n){const s=k(n);p.addPoints([{x:i,y:a,text:f(t.text),className:e,...s}])}function P(t,e){p.addClass(t,k(e))}function C(t){p.setConfig({chartWidth:t})}function L(t){p.setConfig({chartHeight:t})}function v(){const t=(0,a.D7)(),{themeVariables:e,quadrantChart:i}=t;return i&&p.setConfig(i),p.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),p.setData({titleText:(0,a.ab)()}),p.build()}(0,n.K2)(y,"setQuadrant1Text"),(0,n.K2)(T,"setQuadrant2Text"),(0,n.K2)(m,"setQuadrant3Text"),(0,n.K2)(q,"setQuadrant4Text"),(0,n.K2)(A,"setXAxisLeftText"),(0,n.K2)(_,"setXAxisRightText"),(0,n.K2)(b,"setYAxisTopText"),(0,n.K2)(S,"setYAxisBottomText"),(0,n.K2)(k,"parseStyles"),(0,n.K2)(F,"addPoint"),(0,n.K2)(P,"addClass"),(0,n.K2)(C,"setWidth"),(0,n.K2)(L,"setHeight"),(0,n.K2)(v,"getQuadrantData");var I={parser:o,db:{setWidth:C,setHeight:L,setQuadrant1Text:y,setQuadrant2Text:T,setQuadrant3Text:m,setQuadrant4Text:q,setXAxisLeftText:A,setXAxisRightText:_,setYAxisTopText:b,setYAxisBottomText:S,parseStyles:k,addPoint:F,addClass:P,getQuadrantData:v,clear:(0,n.K2)(function(){p.clear(),(0,a.IU)()},"clear"),setAccTitle:a.SV,getAccTitle:a.iN,setDiagramTitle:a.ke,getDiagramTitle:a.ab,getAccDescription:a.m7,setAccDescription:a.EI},renderer:{draw:(0,n.K2)((t,e,i,r)=>{function o(t){return"top"===t?"hanging":"middle"}function l(t){return"left"===t?"start":"middle"}function h(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,n.K2)(o,"getDominantBaseLine"),(0,n.K2)(l,"getTextAnchor"),(0,n.K2)(h,"getTransformation");const c=(0,a.D7)();n.Rm.debug("Rendering quadrant chart\n"+t);const d=c.securityLevel;let u;"sandbox"===d&&(u=(0,s.Ltv)("#i"+e));const x=("sandbox"===d?(0,s.Ltv)(u.nodes()[0].contentDocument.body):(0,s.Ltv)("body")).select(`[id="${e}"]`),g=x.append("g").attr("class","main"),f=c.quadrantChart?.chartWidth??500,p=c.quadrantChart?.chartHeight??500;(0,a.a$)(x,p,f,c.quadrantChart?.useMaxWidth??!0),x.attr("viewBox","0 0 "+f+" "+p),r.db.setHeight(p),r.db.setWidth(f);const y=r.db.getQuadrantData(),T=g.append("g").attr("class","quadrants"),m=g.append("g").attr("class","border"),q=g.append("g").attr("class","data-points"),A=g.append("g").attr("class","labels"),_=g.append("g").attr("class","title");y.title&&_.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",o(y.title.horizontalPos)).attr("text-anchor",l(y.title.verticalPos)).attr("transform",h(y.title)).text(y.title.text),y.borderLines&&m.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",t=>t.x1).attr("y1",t=>t.y1).attr("x2",t=>t.x2).attr("y2",t=>t.y2).style("stroke",t=>t.strokeFill).style("stroke-width",t=>t.strokeWidth);const b=T.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");b.append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill),b.append("text").attr("x",0).attr("y",0).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>o(t.text.horizontalPos)).attr("text-anchor",t=>l(t.text.verticalPos)).attr("transform",t=>h(t.text)).text(t=>t.text.text);A.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(t=>t.text).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>o(t.horizontalPos)).attr("text-anchor",t=>l(t.verticalPos)).attr("transform",t=>h(t));const S=q.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");S.append("circle").attr("cx",t=>t.x).attr("cy",t=>t.y).attr("r",t=>t.radius).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeColor).attr("stroke-width",t=>t.strokeWidth),S.append("text").attr("x",0).attr("y",0).text(t=>t.text.text).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>o(t.text.horizontalPos)).attr("text-anchor",t=>l(t.text.verticalPos)).attr("transform",t=>h(t.text))},"draw")},styles:(0,n.K2)(()=>"","styles")}}}]); \ No newline at end of file diff --git a/developer/assets/js/165.f05a8ee8.js b/developer/assets/js/165.f05a8ee8.js new file mode 100644 index 0000000..9c06f15 --- /dev/null +++ b/developer/assets/js/165.f05a8ee8.js @@ -0,0 +1,2 @@ +/*! For license information please see 165.f05a8ee8.js.LICENSE.txt */ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[165],{165:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw i}}}}function s(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,s=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||h(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||h(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function h(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}n.d(t,{A:()=>Kh});var f="undefined"==typeof window?null:window,p=f?f.navigator:null;f&&f.document;var v,g,y,m,b,x,w,E,k,T,C,P,S,B,D,_,A,M,R,I,N,L,z,O,V,F,X,j,Y=d(""),q=d({}),W=d(function(){}),U="undefined"==typeof HTMLElement?"undefined":d(HTMLElement),H=function(e){return e&&e.instanceString&&G(e.instanceString)?e.instanceString():null},K=function(e){return null!=e&&d(e)==Y},G=function(e){return null!=e&&d(e)===W},Z=function(e){return!ee(e)&&(Array.isArray?Array.isArray(e):null!=e&&e instanceof Array)},$=function(e){return null!=e&&d(e)===q&&!Z(e)&&e.constructor===Object},Q=function(e){return null!=e&&d(e)===d(1)&&!isNaN(e)},J=function(e){return"undefined"===U?void 0:null!=e&&e instanceof HTMLElement},ee=function(e){return te(e)||ne(e)},te=function(e){return"collection"===H(e)&&e._private.single},ne=function(e){return"collection"===H(e)&&!e._private.single},re=function(e){return"core"===H(e)},ae=function(e){return"stylesheet"===H(e)},ie=function(e){return null==e||!(""!==e&&!e.match(/^\s+$/))},oe=function(e){return function(e){return null!=e&&d(e)===q}(e)&&G(e.then)},se=function(e,t){t||(t=function(){if(1===arguments.length)return arguments[0];if(0===arguments.length)return"undefined";for(var e=[],t=0;tt?1:0},be=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n255)return;t.push(Math.floor(i))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t}(e)||function(e){var t,n,r,a,i,o,s,l;function u(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+ge+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(a=parseFloat(c[3]))<0||a>100)return;if(a/=100,void 0!==(i=c[4])&&((i=parseFloat(i))<0||i>1))return;if(0===r)o=s=l=Math.round(255*a);else{var d=a<.5?a*(1+r):a+r-a*r,h=2*a-d;o=Math.round(255*u(h,d,n+1/3)),s=Math.round(255*u(h,d,n)),l=Math.round(255*u(h,d,n-1/3))}t=[o,s,l,i]}return t}(e)},we={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Ee=function(e){for(var t=e.map,n=e.keys,r=n.length,a=0;a=o||t<0||g&&e-p>=c}function x(){var e=t();if(b(e))return w(e);h=setTimeout(x,function(e){var t=o-(e-f);return g?a(t,c-(e-p)):t}(e))}function w(e){return h=void 0,y&&l?m(e):(l=u=void 0,d)}function E(){var e=t(),n=b(e);if(l=arguments,u=this,f=e,n){if(void 0===h)return function(e){return p=e,h=setTimeout(x,o),v?m(e):d}(f);if(g)return clearTimeout(h),h=setTimeout(x,o),m(f)}return void 0===h&&(h=setTimeout(x,o)),d}return o=n(o)||0,e(s)&&(v=!!s.leading,c=(g="maxWait"in s)?r(n(s.maxWait)||0,o):c,y="trailing"in s?!!s.trailing:y),E.cancel=function(){void 0!==h&&clearTimeout(h),p=0,l=f=u=h=void 0},E.flush=function(){return void 0===h?d:w(t())},E}}()),Re=f?f.performance:null,Ie=Re&&Re.now?function(){return Re.now()}:function(){return Date.now()},Ne=function(){if(f){if(f.requestAnimationFrame)return function(e){f.requestAnimationFrame(e)};if(f.mozRequestAnimationFrame)return function(e){f.mozRequestAnimationFrame(e)};if(f.webkitRequestAnimationFrame)return function(e){f.webkitRequestAnimationFrame(e)};if(f.msRequestAnimationFrame)return function(e){f.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout(function(){e(Ie())},1e3/60)}}(),Le=function(e){return Ne(e)},ze=Ie,Oe=9261,Ve=5381,Fe=function(e){for(var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe;!(t=e.next()).done;)n=65599*n+t.value|0;return n},Xe=function(e){return 65599*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe)+e|0},je=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ve;return(t<<5)+t+e|0},Ye=function(e){return 2097152*e[0]+e[1]},qe=function(e,t){return[Xe(e[0],t[0]),je(e[1],t[1])]},We=function(e,t){var n={value:0,done:!1},r=0,a=e.length;return Fe({next:function(){return r=0;r--)e[r]===t&&e.splice(r,1)},ft=function(e){e.splice(0,e.length)},pt=function(e,t,n){return n&&(t=ce(n,t)),e[t]},vt=function(e,t,n,r){n&&(t=ce(n,t)),e[t]=r},gt="undefined"!=typeof Map?Map:function(){return i(function e(){a(this,e),this._obj={}},[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}])}(),yt=function(){return i(function e(t){if(a(this,e),this._obj=Object.create(null),this.size=0,null!=t){var n;n=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t;for(var r=0;r2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&re(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new mt,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:t.parent&&t.parent.isNode()?t.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==a.position.x&&(a.position.x=0),null==a.position.y&&(a.position.y=0),t.renderedPosition){var i=t.renderedPosition,o=e.pan(),s=e.zoom();a.position={x:(i.x-o.x)/s,y:(i.y-o.y)/s}}var l=[];Z(t.classes)?l=t.classes:K(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;ut?1:0},u=function(e,t,a,i,o){var s;if(null==a&&(a=0),null==o&&(o=n),a<0)throw new Error("lo must be non-negative");for(null==i&&(i=e.length);an;0<=n?t++:t--)u.push(t);return u}.apply(this).reverse()).length;iv;0<=v?++h:--h)g.push(i(e,r));return g},p=function(e,t,r,a){var i,o,s;for(null==a&&(a=n),i=e[r];r>t&&a(i,o=e[s=r-1>>1])<0;)e[r]=o,r=s;return e[r]=i},v=function(e,t,r){var a,i,o,s,l;for(null==r&&(r=n),i=e.length,l=t,o=e[t],a=2*t+1;a0;){var w=y.pop(),E=v(w),k=w.id();if(d[k]=E,E!==1/0)for(var T=w.neighborhood().intersect(f),C=0;C0)for(n.unshift(t);c[a];){var i=c[a];n.unshift(i.edge),n.unshift(i.node),a=(r=i.node).id()}return o.spawn(n)}}}},Mt={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,a=n.length,i=new Array(a),o=n,s=function(e){for(var t=0;t0;){if(x(),E++,u===d){for(var k=[],T=a,C=d,P=m[C];k.unshift(T),null!=P&&k.unshift(P),null!=(T=y[C]);)P=m[C=T.id()];return{found:!0,distance:h[u],path:this.spawn(k),steps:E}}p[u]=!0;for(var S=l._private.edges,B=0;BP&&(f[C]=P,y[C]=T,m[C]=x),!a){var S=T*u+k;!a&&f[S]>P&&(f[S]=P,y[S]=k,m[S]=x)}}}for(var B=0;B1&&void 0!==arguments[1]?arguments[1]:i,r=[],a=m(e);;){if(null==a)return t.spawn();var o=y(a),l=o.edge,u=o.pred;if(r.unshift(a[0]),a.same(n)&&r.length>0)break;null!=l&&r.unshift(l),a=u}return s.spawn(r)},hasNegativeWeightCycle:p,negativeWeightCycles:v}}},Vt=Math.sqrt(2),Ft=function(e,t,n){0===n.length&&at("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],a=r[1],i=r[2],o=t[a],s=t[i],l=n,u=l.length-1;u>=0;u--){var c=l[u],d=c[1],h=c[2];(t[d]===o&&t[h]===s||t[d]===s&&t[h]===o)&&l.splice(u,1)}for(var f=0;fr;){var a=Math.floor(Math.random()*t.length);t=Ft(a,e,t),n--}return t},jt={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy(function(e){return e.isLoop()});var a=n.length,i=r.length,o=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),s=Math.floor(a/Vt);if(!(a<2)){for(var l=[],u=0;u0?1:e<0?-1:0},Gt=function(e,t){return Math.sqrt(Zt(e,t))},Zt=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},$t=function(e){for(var t=e.length,n=0,r=0;r=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},nn=function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},rn=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},an=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},on=function(e){var t,n,r,a,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===i.length)t=n=r=a=i[0];else if(2===i.length)t=r=i[0],a=n=i[1];else if(4===i.length){var o=l(i,4);t=o[0],n=o[1],r=o[2],a=o[3]}return e.x1-=a,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},sn=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},ln=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},un=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},cn=function(e,t){return un(e,t.x,t.y)},dn=function(e,t){return un(e,t.x1,t.y1)&&un(e,t.x2,t.y2)},hn=null!==(Bt=Math.hypot)&&void 0!==Bt?Bt:function(e,t){return Math.sqrt(e*e+t*t)};function fn(e,t,n,r,a,i){var o=function(e,t){if(e.length<3)throw new Error("Need at least 3 vertices");var n=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},r=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},a=function(e,t){return{x:e.x*t,y:e.y*t}},i=function(e,t){return e.x*t.y-e.y*t.x},o=function(e){var t=hn(e.x,e.y);return 0===t?{x:0,y:0}:{x:e.x/t,y:e.y/t}},s=function(e,t,o,s){var l=r(t,e),u=r(s,o),c=i(l,u);if(Math.abs(c)<1e-9)return n(e,a(l,.5));var d=i(r(o,e),u)/c;return n(e,a(l,d))},l=e.map(function(e){return{x:e.x,y:e.y}});(function(e){for(var t=0,n=0;n7&&void 0!==arguments[7]?arguments[7]:"auto",c="auto"===u?Rn(a,i):u,d=a/2,h=i/2,f=(c=Math.min(c,d,h))!==d,p=c!==h;if(f){var v=r-h-o;if((s=Pn(e,t,n,r,n-d+c-o,v,n+d-c+o,v,!1)).length>0)return s}if(p){var g=n+d+o;if((s=Pn(e,t,n,r,g,r-h+c-o,g,r+h-c+o,!1)).length>0)return s}if(f){var y=r+h+o;if((s=Pn(e,t,n,r,n-d+c-o,y,n+d-c+o,y,!1)).length>0)return s}if(p){var m=n-d-o;if((s=Pn(e,t,n,r,m,r-h+c-o,m,r+h-c+o,!1)).length>0)return s}var b=n-d+c,x=r-h+c;if((l=Tn(e,t,n,r,b,x,c+o)).length>0&&l[0]<=b&&l[1]<=x)return[l[0],l[1]];var w=n+d-c,E=r-h+c;if((l=Tn(e,t,n,r,w,E,c+o)).length>0&&l[0]>=w&&l[1]<=E)return[l[0],l[1]];var k=n+d-c,T=r+h-c;if((l=Tn(e,t,n,r,k,T,c+o)).length>0&&l[0]>=k&&l[1]>=T)return[l[0],l[1]];var C=n-d+c,P=r+h-c;return(l=Tn(e,t,n,r,C,P,c+o)).length>0&&l[0]<=C&&l[1]>=P?[l[0],l[1]]:[]},vn=function(e,t,n,r,a,i,o){var s=o,l=Math.min(n,a),u=Math.max(n,a),c=Math.min(r,i),d=Math.max(r,i);return l-s<=e&&e<=u+s&&c-s<=t&&t<=d+s},gn=function(e,t,n,r,a,i,o,s,l){var u=Math.min(n,o,a)-l,c=Math.max(n,o,a)+l,d=Math.min(r,s,i)-l,h=Math.max(r,s,i)+l;return!(ec||th)},yn=function(e,t,n,r,a,i,o,s){var l=[];!function(e,t,n,r,a){var i,o,s,l,u,c,d,h;0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),i=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,a[1]=0,d=t/3,i>0?(u=(u=s+Math.sqrt(i))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(i))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),a[0]=-d+u+c,d+=(u+c)/2,a[4]=a[2]=-d,d=Math.sqrt(3)*(-c+u)/2,a[3]=d,a[5]=-d):(a[5]=a[3]=0,0===i?(h=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),a[0]=2*h-d,a[4]=a[2]=-(h+d)):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),h=2*Math.sqrt(o),a[0]=-d+h*Math.cos(l/3),a[2]=-d+h*Math.cos((l+2*Math.PI)/3),a[4]=-d+h*Math.cos((l+4*Math.PI)/3)))}(1*n*n-4*n*a+2*n*o+4*a*a-4*a*o+o*o+r*r-4*r*i+2*r*s+4*i*i-4*i*s+s*s,9*n*a-3*n*n-3*n*o-6*a*a+3*a*o+9*r*i-3*r*r-3*r*s-6*i*i+3*i*s,3*n*n-6*n*a+n*o-n*e+2*a*a+2*a*e-o*e+3*r*r-6*r*i+r*s-r*t+2*i*i+2*i*t-s*t,1*n*a-n*n+n*e-a*e+r*i-r*r+r*t-i*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var d,h,f,p=-1,v=0;v=0?fl?(e-a)*(e-a)+(t-i)*(t-i):u-d},bn=function(e,t,n){for(var r,a,i,o,s=0,l=0;l=e&&e>=i||r<=e&&e<=i))continue;(e-r)/(i-r)*(o-a)+a>t&&s++}return s%2!=0},xn=function(e,t,n,r,a,i,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var d,h=Math.cos(-u),f=Math.sin(-u),p=0;p0){var v=En(c,-l);d=wn(v)}else d=c;return bn(e,t,d)},wn=function(e){for(var t,n,r,a,i,o,s,l,u=new Array(e.length/2),c=0;c=0&&p<=1&&g.push(p),v>=0&&v<=1&&g.push(v),0===g.length)return[];var y=g[0]*s[0]+e,m=g[0]*s[1]+t;return g.length>1?g[0]==g[1]?[y,m]:[y,m,g[1]*s[0]+e,g[1]*s[1]+t]:[y,m]},Cn=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},Pn=function(e,t,n,r,a,i,o,s,l){var u=e-a,c=n-e,d=o-a,h=t-i,f=r-t,p=s-i,v=d*h-p*u,g=c*h-f*u,y=p*c-d*f;if(0!==y){var m=v/y,b=g/y,x=-.001;return x<=m&&m<=1.001&&x<=b&&b<=1.001||l?[e+m*c,t+m*f]:[]}return 0===v||0===g?Cn(e,n,o)===o?[o,s]:Cn(e,n,a)===a?[a,i]:Cn(a,o,n)===n?[n,r]:[]:[]},Sn=function(e,t,n,r,a){var i=[],o=r/2,s=a/2,l=t,u=n;i.push({x:l+o*e[0],y:u+s*e[1]});for(var c=1;c0){var m=En(v,-s);u=wn(m)}else u=v}else u=n;for(var b=0;bu&&(u=t)},d=function(e){return l[e]},h=0;h0?b.edgesTo(m)[0]:m.edgesTo(b)[0];var w=r(x);m=m.id(),u[m]>u[v]+w&&(u[m]=u[v]+w,h.nodes.indexOf(m)<0?h.push(m):h.updateItem(m),l[m]=0,n[m]=[]),u[m]==u[v]+w&&(l[m]=l[m]+l[v],n[m].push(v))}else for(var E=0;E0;){for(var P=t.pop(),S=0;S0&&o.push(n[s]);0!==o.length&&a.push(r.collection(o))}return a}(c,l,t,r);return b=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:tr,o=r,s=0;s=2?sr(e,t,n,0,ar,ir):sr(e,t,n,0,rr)},squaredEuclidean:function(e,t,n){return sr(e,t,n,0,ar)},manhattan:function(e,t,n){return sr(e,t,n,0,rr)},max:function(e,t,n){return sr(e,t,n,-1/0,or)}};function ur(e,t,n,r,a,i){var o;return o=G(e)?e:lr[e]||lr.euclidean,0===t&&G(e)?o(a,i):o(t,n,r,a,i)}lr["squared-euclidean"]=lr.squaredEuclidean,lr.squaredeuclidean=lr.squaredEuclidean;var cr=dt({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),dr=function(e){return cr(e)},hr=function(e,t,n,r,a){var i="kMedoids"!==a?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return ur(e,r.length,i,function(e){return r[e](t)},o,s)},fr=function(e,t,n){for(var r=n.length,a=new Array(r),i=new Array(r),o=new Array(t),s=null,l=0;ln)return!1}return!0},mr=function(e,t,n){for(var r=0;ra&&(a=t[l][u],i=u);o[i].push(e[l])}for(var c=0;c=a.threshold||"dendrogram"===a.mode&&1===e.length)return!1;var f,p=t[o],v=t[r[o]];f="dendrogram"===a.mode?{left:p,right:v,key:p.key}:{value:p.value.concat(v.value),key:p.key},e[p.index]=f,e.splice(v.index,1),t[p.key]=f;for(var g=0;gn[v.key][y.key]&&(i=n[v.key][y.key])):"max"===a.linkage?(i=n[p.key][y.key],n[p.key][y.key]1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n0&&e.splice(0,t)):e=e.slice(t,n);for(var i=0,o=e.length-1;o>=0;o--){var s=e[o];a?isFinite(s)||(e[o]=-1/0,i++):e.splice(o,1)}r&&e.sort(function(e,t){return e-t});var l=e.length,u=Math.floor(l/2);return l%2!=0?e[u+1+i]:(e[u-1+i]+e[u+i])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,a=0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,a=t;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,a=t;ao&&(i=l,o=t[a*e+l])}i>0&&r.push(i)}for(var u=0;u=P?(S=P,P=D,B=_):D>S&&(S=D);for(var A=0;A0?1:0;k[E%u.minIterations*t+z]=O,L+=O}if(L>0&&(E>=u.minIterations-1||E==u.maxIterations-1)){for(var V=0,F=0;F0&&r.push(a);return r}(t,i,o),Y=function(e,t,n){for(var r=Lr(e,t,n),a=0;al&&(s=u,l=c)}n[a]=i[s]}return Lr(e,t,n)}(t,r,j),q={},W=0;W1)}});var l=Object.keys(t).filter(function(e){return t[e].cutVertex}).map(function(t){return e.getElementById(t)});return{cut:e.spawn(l),components:a}},Xr=function(){var e=this,t={},n=0,r=[],a=[],i=e.spawn(e),o=function(s){if(a.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach(function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))}),t[s].index===t[s].low){for(var l=e.spawn();;){var u=a.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),d=l.merge(c);r.push(d),i=i.difference(d)}};return e.forEach(function(e){if(e.isNode()){var n=e.id();n in t||o(n)}}),{cut:i,components:r}},jr={};[wt,At,Mt,It,Lt,Ot,jt,On,Fn,jn,qn,er,Tr,Mr,Or,{hierholzer:function(e){if(!$(e)){var t=arguments;e={root:t[0],directed:t[1]}}var n,r,a,i=Vr(e),o=i.root,s=i.directed,l=this,u=!1;o&&(a=K(o)?this.filter(o)[0].id():o[0].id());var c={},d={};s?l.forEach(function(e){var t=e.id();if(e.isNode()){var a=e.indegree(!0),i=e.outdegree(!0),o=a-i,s=i-a;1==o?n?u=!0:n=t:1==s?r?u=!0:r=t:(s>1||o>1)&&(u=!0),c[t]=[],e.outgoers().forEach(function(e){e.isEdge()&&c[t].push(e.id())})}else d[t]=[void 0,e.target().id()]}):l.forEach(function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?u=!0:r=t:n=t),c[t]=[],e.connectedEdges().forEach(function(e){return c[t].push(e.id())})):d[t]=[e.source().id(),e.target().id()]});var h={found:!1,trail:void 0};if(u)return h;if(r&&n)if(s){if(a&&r!=a)return h;a=r}else{if(a&&r!=a&&n!=a)return h;a||(a=r)}else a||(a=l[0].id());var f=function(e){for(var t,n,r,a=e,i=[e];c[a].length;)t=c[a].shift(),n=d[t][0],a!=(r=d[t][1])?(c[r]=c[r].filter(function(e){return e!=t}),a=r):s||a==n||(c[n]=c[n].filter(function(e){return e!=t}),a=n),i.unshift(t),i.unshift(a);return i},p=[],v=[];for(v=f(a);1!=v.length;)0==c[v[0]].length?(p.unshift(l.getElementById(v.shift())),p.unshift(l.getElementById(v.shift()))):v=f(v.shift()).concat(v);for(var g in p.unshift(l.getElementById(v.shift())),c)if(c[g].length)return h;return h.found=!0,h.trail=this.spawn(p,!0),h}},{hopcroftTarjanBiconnected:Fr,htbc:Fr,htb:Fr,hopcroftTarjanBiconnectedComponents:Fr},{tarjanStronglyConnected:Xr,tsc:Xr,tscc:Xr,tarjanStronglyConnectedComponents:Xr}].forEach(function(e){be(jr,e)});var Yr=function(e){if(!(this instanceof Yr))return new Yr(e);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof e&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Yr.prototype={fulfill:function(e){return qr(this,1,"fulfillValue",e)},reject:function(e){return qr(this,2,"rejectReason",e)},then:function(e,t){var n=this,r=new Yr;return n.onFulfilled.push(Hr(e,r,"fulfill")),n.onRejected.push(Hr(t,r,"reject")),Wr(n),r.proxy}};var qr=function(e,t,n,r){return 0===e.state&&(e.state=t,e[n]=r,Wr(e)),e},Wr=function(e){1===e.state?Ur(e,"onFulfilled",e.fulfillValue):2===e.state&&Ur(e,"onRejected",e.rejectReason)},Ur=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var a=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n-1}}(),a=function(){if(Ya)return ja;Ya=1;var e=Oi();return ja=function(t,n){var r=this.__data__,a=e(r,t);return a<0?(++this.size,r.push([t,n])):r[a][1]=n,this},ja}();function i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&t%1==0&&t0&&this.spawn(r).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){Z(e)||(e=e.match(/\S+/g)||[]);for(var n=this,r=void 0===t,a=[],i=0,o=n.length;i0&&this.spawn(a).updateStyle().emit("class"),n},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},t),n}};To.className=To.classNames=To.classes;var Co={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:fe,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Co.variable="(?:[\\w-.]|(?:\\\\"+Co.metaChar+"))+",Co.className="(?:[\\w-]|(?:\\\\"+Co.metaChar+"))+",Co.value=Co.string+"|"+Co.number,Co.id=Co.variable,function(){var e,t,n;for(e=Co.comparatorOp.split("|"),n=0;n=0||"="!==t&&(Co.comparatorOp+="|\\!"+t)}();var Po=0,So=1,Bo=2,Do=3,_o=4,Ao=5,Mo=6,Ro=7,Io=8,No=9,Lo=10,zo=11,Oo=12,Vo=13,Fo=14,Xo=15,jo=16,Yo=17,qo=18,Wo=19,Uo=20,Ho=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(e,t){return function(e,t){return-1*me(e,t)}(e.selector,t.selector)}),Ko=function(){for(var e,t={},n=0;n0&&u.edgeCount>0)return ot("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return ot("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&ot("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return K(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,i){var o=r.type,s=r.value;switch(o){case Po:var l=e(s);return l.substring(0,l.length-1);case Do:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case Ao:var d=r.operator,h=r.field;return"["+e(d)+h+"]";case _o:return"["+r.field+"]";case Mo:var f=r.operator;return"[["+r.field+n(e(f))+t(s)+"]]";case Ro:return s;case Io:return"#"+s;case No:return"."+s;case Yo:case Xo:return a(r.parent,i)+n(">")+a(r.child,i);case qo:case jo:return a(r.ancestor,i)+" "+a(r.descendant,i);case Wo:var p=a(r.left,i),v=a(r.subject,i),g=a(r.right,i);return p+(p.length>0?" ":"")+v+g;case Uo:return""}},a=function(e,t){return e.checks.reduce(function(n,a,i){return n+(t===e&&0===i?"$":"")+r(a,t)},"")},i="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(a=o||s?""+e:"",i=""+n),u&&(e=a=a.toLowerCase(),n=i=i.toLowerCase()),t){case"*=":r=a.indexOf(i)>=0;break;case"$=":r=a.indexOf(i,a.length-i.length)>=0;break;case"^=":r=0===a.indexOf(i);break;case"=":r=e===n;break;case">":d=!0,r=e>n;break;case">=":d=!0,r=e>=n;break;case"<":d=!0,r=e0;){var u=a.shift();t(u),i.add(u.id()),o&&r(a,i,u)}return e}function ps(e,t,n){if(n.isParent())for(var r=n._private.children,a=0;a1&&void 0!==arguments[1])||arguments[1],ps)},hs.forEachUp=function(e){return fs(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],vs)},hs.forEachUpAndDown=function(e){return fs(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],gs)},hs.ancestors=hs.parents,(us=cs={data:Eo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Eo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Eo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Eo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Eo.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Eo.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=us.data,us.removeAttr=us.removeData;var ys,ms,bs=cs,xs={};function ws(e){return function(t){var n=this;if(void 0===t&&(t=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var r=0,a=n[0],i=a._private.edges,o=0;ot}),minIndegree:Es("indegree",function(e,t){return et}),minOutdegree:Es("outdegree",function(e,t){return et})}),be(xs,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,c=u;u&&(l=l[0]);var d=c?l.position():{x:0,y:0};return a={x:s.x-d.x,y:s.y-d.y},void 0===e?a:a[e]}for(var h=0;h0,g=v;v&&(p=p[0]);var y=g?p.position():{x:0,y:0};void 0!==t?f.position(e,t+y[e]):void 0!==a&&f.position({x:a.x+y.x,y:a.y+y.y})}}else if(!i)return;return this}},ys.modelPosition=ys.point=ys.position,ys.modelPositions=ys.points=ys.positions,ys.renderedPoint=ys.renderedPosition,ys.relativePoint=ys.relativePosition;var Cs,Ps,Ss=ms;Cs=Ps={},Ps.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),a=n.pan(),i=t.x1*r+a.x,o=t.x2*r+a.x,s=t.y1*r+a.y,l=t.y2*r+a.y;return{x1:i,x2:o,y1:s,y2:l,w:o-i,h:l-s}},Ps.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp(function(t){if(t.isParent()){var n=t._private;n.compoundBoundsClean=!1,n.bbCache=null,e||t.emitAndNotify("bounds")}}),this):this},Ps.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,a={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},i=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==i.w&&0!==i.h||((i={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-i.w/2,i.x2=o.x+i.w/2,i.y1=o.y-i.h/2,i.y2=o.y+i.h/2);var s=a.width.left.value;"px"===a.width.left.units&&a.width.val>0&&(s=100*s/a.width.val);var l=a.width.right.value;"px"===a.width.right.units&&a.width.val>0&&(l=100*l/a.width.val);var u=a.height.top.value;"px"===a.height.top.units&&a.height.val>0&&(u=100*u/a.height.val);var c=a.height.bottom.value;"px"===a.height.bottom.units&&a.height.val>0&&(c=100*c/a.height.val);var d=y(a.width.val-i.w,s,l),h=d.biasDiff,f=d.biasComplementDiff,p=y(a.height.val-i.h,u,c),v=p.biasDiff,g=p.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(i.w,i.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(i.w,a.width.val),o.x=(-h+i.x1+i.x2+f)/2,t.autoHeight=Math.max(i.h,a.height.val),o.y=(-v+i.y1+i.y2+g)/2}function y(e,t,n){var r=0,a=0,i=t+n;return e>0&&i>0&&(r=t/i*e,a=n/i*e),{biasDiff:r,biasComplementDiff:a}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},_s=function(e,t){return null==t?e:Ds(e,t.x1,t.y1,t.x2,t.y2)},As=function(e,t,n){return pt(e,t,n)},Ms=function(e,t,n){if(!t.cy().headless()){var r,a,i=t._private,o=i.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,a=o.srcY):"target"===n?(r=o.tgtX,a=o.tgtY):(r=o.midX,a=o.midY);var l=i.arrowBounds=i.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=a-s,u.x2=r+s,u.y2=a+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,an(u,1),Ds(e,u.x1,u.y1,u.x2,u.y2)}}},Rs=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var a=t._private,i=a.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),d=t.pstyle("text-valign"),h=As(i,"labelWidth",n),f=As(i,"labelHeight",n),p=As(i,"labelX",n),v=As(i,"labelY",n),g=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,k=f,T=h,C=T/2,P=k/2;if(m)o=p-C,s=p+C,l=v-P,u=v+P;else{switch(c.value){case"left":o=p-T,s=p;break;case"center":o=p-C,s=p+C;break;case"right":o=p,s=p+T}switch(d.value){case"top":l=v-k,u=v;break;case"center":l=v-P,u=v+P;break;case"bottom":l=v,u=v+k}}var S=g-Math.max(x,w)-E-2,B=g+Math.max(x,w)+E+2,D=y-Math.max(x,w)-E-2,_=y+Math.max(x,w)+E+2;o+=S,s+=B,l+=D,u+=_;var A=n||"main",M=a.labelBounds,R=M[A]=M[A]||{};R.x1=o,R.y1=l,R.x2=s,R.y2=u,R.w=s-o,R.h=u-l,R.leftPad=S,R.rightPad=B,R.topPad=D,R.botPad=_;var I=m&&"autorotate"===b.strValue,N=null!=b.pfValue&&0!==b.pfValue;if(I||N){var L=I?As(a.rstyle,"labelAngle",n):b.pfValue,z=Math.cos(L),O=Math.sin(L),V=(o+s)/2,F=(l+u)/2;if(!m){switch(c.value){case"left":V=s;break;case"right":V=o}switch(d.value){case"top":F=u;break;case"bottom":F=l}}var X=function(e,t){return{x:(e-=V)*z-(t-=F)*O+V,y:e*O+t*z+F}},j=X(o,l),Y=X(o,u),q=X(s,l),W=X(s,u);o=Math.min(j.x,Y.x,q.x,W.x),s=Math.max(j.x,Y.x,q.x,W.x),l=Math.min(j.y,Y.y,q.y,W.y),u=Math.max(j.y,Y.y,q.y,W.y)}var U=A+"Rot",H=M[U]=M[U]||{};H.x1=o,H.y1=l,H.x2=s,H.y2=u,H.w=s-o,H.h=u-l,Ds(e,o,l,s,u),Ds(a.labelBounds.all,o,l,s,u)}return e}},Is=function(e,t){if(!t.cy().headless()){var n=t.pstyle("outline-opacity").value,r=t.pstyle("outline-width").value+t.pstyle("outline-offset").value;Ns(e,t,n,r,"outside",r/2)}},Ns=function(e,t,n,r,a,i){if(!(0===n||r<=0||"inside"===a)){var o=t.cy(),s=t.pstyle("shape").value,l=o.renderer().nodeShapes[s],u=t.position(),c=u.x,d=u.y,h=t.width(),f=t.height();if(l.hasMiterBounds){"center"===a&&(r/=2);var p=l.miterBounds(c,d,h,f,r);_s(e,p)}else null!=i&&i>0&&on(e,[i,i,i,i])}},Ls=function(e,t){var n,r,a,i,o,s,l,u=e._private.cy,c=u.styleEnabled(),d=u.headless(),h=tn(),f=e._private,p=e.isNode(),v=e.isEdge(),g=f.rstyle,y=p&&c?e.pstyle("bounds-expansion").pfValue:[0],m=function(e){return"none"!==e.pstyle("display").value},b=!c||m(e)&&(!v||m(e.source())&&m(e.target()));if(b){var x=0;c&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(x=e.pstyle("overlay-padding").value);var w=0;c&&t.includeUnderlays&&0!==e.pstyle("underlay-opacity").value&&(w=e.pstyle("underlay-padding").value);var E=Math.max(x,w),k=0;if(c&&(k=e.pstyle("width").pfValue/2),p&&t.includeNodes){var T=e.position();o=T.x,s=T.y;var C=e.outerWidth()/2,P=e.outerHeight()/2;Ds(h,n=o-C,a=s-P,r=o+C,i=s+P),c&&Is(h,e),c&&t.includeOutlines&&!d&&Is(h,e),c&&function(e,t){if(!t.cy().headless()){var n=t.pstyle("border-opacity").value,r=t.pstyle("border-width").pfValue,a=t.pstyle("border-position").value;Ns(e,t,n,r,a)}}(h,e)}else if(v&&t.includeEdges)if(c&&!d){var S=e.pstyle("curve-style").strValue;if(n=Math.min(g.srcX,g.midX,g.tgtX),r=Math.max(g.srcX,g.midX,g.tgtX),a=Math.min(g.srcY,g.midY,g.tgtY),i=Math.max(g.srcY,g.midY,g.tgtY),Ds(h,n-=k,a-=k,r+=k,i+=k),"haystack"===S){var B=g.haystackPts;if(B&&2===B.length){if(n=B[0].x,a=B[0].y,n>(r=B[1].x)){var D=n;n=r,r=D}if(a>(i=B[1].y)){var _=a;a=i,i=_}Ds(h,n-k,a-k,r+k,i+k)}}else if("bezier"===S||"unbundled-bezier"===S||he(S,"segments")||he(S,"taxi")){var A;switch(S){case"bezier":case"unbundled-bezier":A=g.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":A=g.linePts}if(null!=A)for(var M=0;M(r=N.x)){var L=n;n=r,r=L}if((a=I.y)>(i=N.y)){var z=a;a=i,i=z}Ds(h,n-=k,a-=k,r+=k,i+=k)}if(c&&t.includeEdges&&v&&(Ms(h,e,"mid-source"),Ms(h,e,"mid-target"),Ms(h,e,"source"),Ms(h,e,"target")),c)if("yes"===e.pstyle("ghost").value){var O=e.pstyle("ghost-offset-x").pfValue,V=e.pstyle("ghost-offset-y").pfValue;Ds(h,h.x1+O,h.y1+V,h.x2+O,h.y2+V)}var F=f.bodyBounds=f.bodyBounds||{};sn(F,h),on(F,y),an(F,1),c&&(n=h.x1,r=h.x2,a=h.y1,i=h.y2,Ds(h,n-E,a-E,r+E,i+E));var X=f.overlayBounds=f.overlayBounds||{};sn(X,h),on(X,y),an(X,1);var j=f.labelBounds=f.labelBounds||{};null!=j.all?((l=j.all).x1=1/0,l.y1=1/0,l.x2=-1/0,l.y2=-1/0,l.w=0,l.h=0):j.all=tn(),c&&t.includeLabels&&(t.includeMainLabels&&Rs(h,e,null),v&&(t.includeSourceLabels&&Rs(h,e,"source"),t.includeTargetLabels&&Rs(h,e,"target")))}return h.x1=Bs(h.x1),h.y1=Bs(h.y1),h.x2=Bs(h.x2),h.y2=Bs(h.y2),h.w=Bs(h.x2-h.x1),h.h=Bs(h.y2-h.y1),h.w>0&&h.h>0&&b&&(on(h,y),an(h,1)),h},zs=function(e){var t=0,n=function(e){return(e?1:0)<0&&void 0!==arguments[0]?arguments[0]:rl,t=arguments.length>1?arguments[1]:void 0,n=0;n=0;s--)o(s);return this},il.removeAllListeners=function(){return this.removeListener("*")},il.emit=il.trigger=function(e,t,n){var r=this.listeners,a=r.length;return this.emitting++,Z(t)||(t=[t]),ll(this,function(e,i){null!=n&&(r=[{event:i.event,type:i.type,namespace:i.namespace,callback:n}],a=r.length);for(var o=function(){var n=r[s];if(n.type===i.type&&(!n.namespace||n.namespace===i.namespace||".*"===n.namespace)&&e.eventMatches(e.context,n,i)){var a=[i];null!=t&&function(e,t){for(var n=0;n1&&!r){var a=this.length-1,i=this[a],o=i._private.data.id;this[a]=void 0,this[e]=i,n.set(o,{ele:i,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var a=r.index;return this.unmergeAt(a),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&K(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=this,a=0;ar&&(r=s,n=o)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,a=this,i=0;i=0&&a1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,r.style().apply(n));var a=n._private.style[e];return null!=a?a:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=!1,a=n.style();if($(e)){var i=e;a.applyBypass(this,i,r),this.emitAndNotify("style")}else if(K(e)){if(void 0===t){var o=this[0];return o?a.getStylePropertyValue(o,e):void 0}a.applyBypass(this,e,t,r),this.emitAndNotify("style")}else if(void 0===e){var s=this[0];return s?a.getRawStyle(s):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=!1,r=t.style(),a=this;if(void 0===e)for(var i=0;i0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Rl.neighbourhood=Rl.neighborhood,Rl.closedNeighbourhood=Rl.closedNeighborhood,Rl.openNeighbourhood=Rl.openNeighborhood,be(Rl,{source:ds(function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t},"source"),target:ds(function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t},"target"),sources:zl({attr:"source"}),targets:zl({attr:"target"})}),be(Rl,{edgesWith:ds(Ol(),"edgesWith"),edgesTo:ds(Ol({thisIsSrc:!0}),"edgesTo")}),be(Rl,{connectedEdges:ds(function(e){for(var t=[],n=0;n0);return i},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Rl.componentsOf=Rl.components;var Fl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==e){var a=new gt,i=!1;if(t){if(t.length>0&&$(t[0])&&!te(t[0])){i=!0;for(var o=[],s=new mt,l=0,u=t.length;l0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=this,i=a.cy(),o=i._private,s=[],l=[],u=0,c=a.length;u0){for(var I=e.length===a.length?a:new Fl(i,e),N=0;N0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=[],a={},i=n._private.cy;function o(e){var n=a[e.id()];t&&e.removed()||n||(a[e.id()]=!0,e.isNode()?(r.push(e),function(e){for(var t=e._private.edges,n=0;n0&&(e?k.emitAndNotify("remove"):t&&k.emit("remove"));for(var T=0;T=.001?function(t,r){for(var a=0;a<4;++a){var i=h(r,e,n);if(0===i)return r;r-=(d(r,e,n)-t)/i}return r}(t,o):0===l?o:function(t,r,a){var i,o,s=0;do{(i=d(o=r+(a-r)/2,e,n)-t)>0?a=o:r=o}while(Math.abs(i)>1e-7&&++s<10);return o}(t,r,r+a)}var p=!1;function v(){p=!0,e===t&&n===r||function(){for(var t=0;t<11;++t)s[t]=d(t*a,e,n)}()}var g=function(a){return p||v(),e===t&&n===r?a:0===a?0:1===a?1:d(f(a),t,r)};g.getControlPoints=function(){return[{x:e,y:t},{x:n,y:r}]};var y="generateBezier("+[e,t,n,r]+")";return g.toString=function(){return y},g}var ql=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,n,r){var a={x:t.x+r.dx*n,v:t.v+r.dv*n,tension:t.tension,friction:t.friction};return{dx:a.v,dv:e(a)}}function n(n,r){var a={dx:n.v,dv:e(n)},i=t(n,.5*r,a),o=t(n,.5*r,i),s=t(n,r,o),l=1/6*(a.dx+2*(i.dx+o.dx)+s.dx),u=1/6*(a.dv+2*(i.dv+o.dv)+s.dv);return n.x=n.x+l*r,n.v=n.v+u*r,n}return function e(t,r,a){var i,o,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,d=1e-4;for(t=parseFloat(t)||500,r=parseFloat(r)||20,a=a||null,l.tension=t,l.friction=r,o=(i=null!==a)?(c=e(t,r))/a*.016:.016;s=n(s||l,o),u.push(1+s.x),c+=16,Math.abs(s.x)>d&&Math.abs(s.v)>d;);return i?function(e){return u[e*(u.length-1)|0]}:c}}(),Wl=function(e,t,n,r){var a=Yl(e,t,n,r);return function(e,t,n){return e+(t-e)*a(n)}},Ul={linear:function(e,t,n){return e+(t-e)*n},ease:Wl(.25,.1,.25,1),"ease-in":Wl(.42,0,1,1),"ease-out":Wl(0,0,.58,1),"ease-in-out":Wl(.42,0,.58,1),"ease-in-sine":Wl(.47,0,.745,.715),"ease-out-sine":Wl(.39,.575,.565,1),"ease-in-out-sine":Wl(.445,.05,.55,.95),"ease-in-quad":Wl(.55,.085,.68,.53),"ease-out-quad":Wl(.25,.46,.45,.94),"ease-in-out-quad":Wl(.455,.03,.515,.955),"ease-in-cubic":Wl(.55,.055,.675,.19),"ease-out-cubic":Wl(.215,.61,.355,1),"ease-in-out-cubic":Wl(.645,.045,.355,1),"ease-in-quart":Wl(.895,.03,.685,.22),"ease-out-quart":Wl(.165,.84,.44,1),"ease-in-out-quart":Wl(.77,0,.175,1),"ease-in-quint":Wl(.755,.05,.855,.06),"ease-out-quint":Wl(.23,1,.32,1),"ease-in-out-quint":Wl(.86,0,.07,1),"ease-in-expo":Wl(.95,.05,.795,.035),"ease-out-expo":Wl(.19,1,.22,1),"ease-in-out-expo":Wl(1,0,0,1),"ease-in-circ":Wl(.6,.04,.98,.335),"ease-out-circ":Wl(.075,.82,.165,1),"ease-in-out-circ":Wl(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return Ul.linear;var r=ql(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":Wl};function Hl(e,t,n,r,a){if(1===r)return n;if(t===n)return n;var i=a(t,n,r);return null==e||((e.roundValue||e.color)&&(i=Math.round(i)),void 0!==e.min&&(i=Math.max(i,e.min)),void 0!==e.max&&(i=Math.min(i,e.max))),i}function Kl(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function Gl(e,t,n,r,a){var i=null!=a?a.type:null;n<0?n=0:n>1&&(n=1);var o=Kl(e,a),s=Kl(t,a);if(Q(o)&&Q(s))return Hl(i,o,s,n,r);if(Z(o)&&Z(s)){for(var l=[],u=0;u0?("spring"===d&&h.push(o.duration),o.easingImpl=Ul[d].apply(null,h)):o.easingImpl=Ul[d]}var f,p=o.easingImpl;if(f=0===o.duration?1:(n-l)/o.duration,o.applying&&(f=o.progress),f<0?f=0:f>1&&(f=1),null==o.delay){var v=o.startPosition,g=o.position;if(g&&a&&!e.locked()){var y={};$l(v.x,g.x)&&(y.x=Gl(v.x,g.x,f,p)),$l(v.y,g.y)&&(y.y=Gl(v.y,g.y,f,p)),e.position(y)}var m=o.startPan,b=o.pan,x=i.pan,w=null!=b&&r;w&&($l(m.x,b.x)&&(x.x=Gl(m.x,b.x,f,p)),$l(m.y,b.y)&&(x.y=Gl(m.y,b.y,f,p)),e.emit("pan"));var E=o.startZoom,k=o.zoom,T=null!=k&&r;T&&($l(E,k)&&(i.zoom=en(i.minZoom,Gl(E,k,f,p),i.maxZoom)),e.emit("zoom")),(w||T)&&e.emit("viewport");var C=o.style;if(C&&C.length>0&&a){for(var P=0;P=0;t--){(0,e[t])()}e.splice(0,e.length)},c=i.length-1;c>=0;c--){var d=i[c],h=d._private;h.stopped?(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.frames)):(h.playing||h.applying)&&(h.playing&&h.applying&&(h.applying=!1),h.started||Ql(0,d,e),Zl(t,d,e,n),h.applying&&(h.applying=!1),u(h.frames),null!=h.step&&h.step(e),d.completed()&&(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.completes)),s=!0)}return n||0!==i.length||0!==o.length||r.push(t),s}for(var i=!1,o=0;o0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var eu={animate:Eo.animate(),animation:Eo.animation(),animated:Eo.animated(),clearQueue:Eo.clearQueue(),delay:Eo.delay(),delayAnimation:Eo.delayAnimation(),stop:Eo.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender(function(t,n){Jl(n,e)},t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&Le(function(n){Jl(n,e),t()})}()}}},tu={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&te(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},nu=function(e){return K(e)?new os(e):e},ru={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new al(tu,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,nu(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,nu(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,nu(t),n),this},once:function(e,t,n){return this.emitter().one(e,nu(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};Eo.eventAliasesOn(ru);var au={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};au.jpeg=au.jpg;var iu={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var n=e.name,r=t.extension("layout",n);if(null!=r){var a;a=K(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var i=new r(be({},e,{cy:t,eles:a}));return i}at("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else at("A `name` must be specified to make a layout");else at("Layout options must be specified to make a layout")}};iu.createLayout=iu.makeLayout=iu.layout;var ou={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var a=this.renderer();!this.destroyed()&&a&&a.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch(function(){for(var n=Object.keys(e),r=0;r0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};lu.invalidateDimensions=lu.resize;var uu={collection:function(e,t){return K(e)?this.$(e):ee(e)?e.collection():Z(e)?(t||(t={}),new Fl(this,e,t.unique,t.removed)):new Fl(this)},nodes:function(e){var t=this.$(function(e){return e.isNode()});return e?t.filter(e):t},edges:function(e){var t=this.$(function(e){return e.isEdge()});return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};uu.elements=uu.filter=uu.$;var cu={},du="t";cu.apply=function(e){for(var t=this,n=t._private.cy.collection(),r=0;r0;if(h||d&&f){var p=void 0;h&&f||h?p=u.properties:f&&(p=u.mappedProperties);for(var v=0;v1&&(g=1),s.color){var w=a.valueMin[0],E=a.valueMax[0],k=a.valueMin[1],T=a.valueMax[1],C=a.valueMin[2],P=a.valueMax[2],S=null==a.valueMin[3]?1:a.valueMin[3],B=null==a.valueMax[3]?1:a.valueMax[3],D=[Math.round(w+(E-w)*g),Math.round(k+(T-k)*g),Math.round(C+(P-C)*g),Math.round(S+(B-S)*g)];n={bypass:a.bypass,name:a.name,value:D,strValue:"rgb("+D[0]+", "+D[1]+", "+D[2]+")"}}else{if(!s.number)return!1;var _=a.valueMin+(a.valueMax-a.valueMin)*g;n=this.parse(a.name,_,a.bypass,h)}if(!n)return v(),!1;n.mapping=a,a=n;break;case o.data:for(var A=a.field.split("."),M=d.data,R=0;R0&&i>0){for(var s={},l=!1,u=0;u0?e.delayAnimation(o).play().promise().then(t):t()}).then(function(){return e.animation({style:s,duration:i,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){n.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1})}else r.transitioning&&(this.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1)},cu.checkTrigger=function(e,t,n,r,a,i){var o=this.properties[t],s=a(o);e.removed()||null!=s&&s(n,r,e)&&i(o)},cu.checkZOrderTrigger=function(e,t,n,r){var a=this;this.checkTrigger(e,t,n,r,function(e){return e.triggersZOrder},function(){a._private.cy.notify("zorder",e)})},cu.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBounds},function(t){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()})},cu.checkConnectedEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBoundsOfConnectedEdges},function(t){e.connectedEdges().forEach(function(e){e.dirtyBoundingBoxCache()})})},cu.checkParallelEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBoundsOfParallelEdges},function(t){e.parallelEdges().forEach(function(e){e.dirtyBoundingBoxCache()})})},cu.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r),this.checkConnectedEdgesBoundsTrigger(e,t,n,r),this.checkParallelEdgesBoundsTrigger(e,t,n,r)};var hu={applyBypass:function(e,t,n,r){var a=[];if("*"===t||"**"===t){if(void 0!==n)for(var i=0;it.length?i.substr(t.length):""}function s(){n=n.length>r.length?n.substr(r.length):""}for(i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(i.match(/^\s*$/))break;var l=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){ot("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}t=l[0];var u=l[1];if("core"!==u)if(new os(u).invalid){ot("Skipping parsing of block: Invalid selector found in string stylesheet: "+u),o();continue}var c=l[2],d=!1;n=c;for(var h=[];;){if(n.match(/^\s*$/))break;var f=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!f){ot("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+c),d=!0;break}r=f[0];var p=f[1],v=f[2];if(this.properties[p])a.parse(p,v)?(h.push({name:p,val:v}),s()):(ot("Skipping property: Invalid property definition in: "+r),s());else ot("Skipping property: Invalid property name in: "+r),s()}if(d){o();break}a.selector(u);for(var g=0;g=7&&"d"===t[0]&&(u=new RegExp(s.data.regex).exec(t))){if(n)return!1;var h=s.data;return{name:e,value:u,strValue:""+t,mapped:h,field:u[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(c=new RegExp(s.mapData.regex).exec(t))){if(n)return!1;if(d.multiple)return!1;var f=s.mapData;if(!d.color&&!d.number)return!1;var p=this.parse(e,c[4]);if(!p||p.mapped)return!1;var v=this.parse(e,c[5]);if(!v||v.mapped)return!1;if(p.pfValue===v.pfValue||p.strValue===v.strValue)return ot("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+p.strValue+"`"),this.parse(e,p.strValue);if(d.color){var g=p.value,y=v.value;if(!(g[0]!==y[0]||g[1]!==y[1]||g[2]!==y[2]||g[3]!==y[3]&&(null!=g[3]&&1!==g[3]||null!=y[3]&&1!==y[3])))return!1}return{name:e,value:c,strValue:""+t,mapped:f,field:c[1],fieldMin:parseFloat(c[2]),fieldMax:parseFloat(c[3]),valueMin:p.value,valueMax:v.value,bypass:n}}}if(d.multiple&&"multiple"!==r){var m;if(m=l?t.split(/\s+/):Z(t)?t:[t],d.evenMultiple&&m.length%2!=0)return null;for(var b=[],x=[],w=[],E="",k=!1,T=0;T0?" ":"")+C.strValue}return d.validate&&!d.validate(b,x)?null:d.singleEnum&&k?1===b.length&&K(b[0])?{name:e,value:b[0],strValue:b[0],bypass:n}:null:{name:e,value:b,pfValue:w,strValue:E,bypass:n,units:x}}var P,S,B=function(){for(var r=0;rd.max||d.strictMax&&t===d.max))return null;var R={name:e,value:t,strValue:""+t+(D||""),units:D,bypass:n};return d.unitless||"px"!==D&&"em"!==D?R.pfValue=t:R.pfValue="px"!==D&&D?this.getEmSizeInPixels()*t:t,"ms"!==D&&"s"!==D||(R.pfValue="ms"===D?t:1e3*t),"deg"!==D&&"rad"!==D||(R.pfValue="rad"===D?t:(P=t,Math.PI*P/180)),"%"===D&&(R.pfValue=t/100),R}if(d.propList){var I=[],N=""+t;if("none"===N);else{for(var L=N.split(/\s*,\s*|\s+/),z=0;z0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:o=(o=(o=Math.min((s-2*t)/n.w,(l-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:o)=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,a=r.pan,i=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),Q(e)?n=e:$(e)&&(n=e.level,null!=e.position?t=Yt(e.position,i,a):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)t.maxZoom||!t.zoomingEnabled?i=!0:(t.zoom=s,a.push("zoom"))}if(r&&(!i||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;Q(l.x)&&(t.pan.x=l.x,o=!1),Q(l.y)&&(t.pan.y=l.y,o=!1),o||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(K(e)){var n=e;e=this.mutableElements().filter(n)}else ee(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),a=this.width(),i=this.height();return{x:(a-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(i-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container,a=this;return n.sizeCache=n.sizeCache||(r?(e=a.window().getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};Eu.centre=Eu.center,Eu.autolockNodes=Eu.autolock,Eu.autoungrabifyNodes=Eu.autoungrabify;var ku={data:Eo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Eo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Eo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Eo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};ku.attr=ku.data,ku.removeAttr=ku.removeData;var Tu=function(e){var t=this,n=(e=be({},e)).container;n&&!J(n)&&J(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var a=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var i=void 0!==f&&void 0!==n&&!e.headless,o=e;o.layout=be({name:i?"grid":"null"},o.layout),o.renderer=be({name:i?"canvas":"null"},o.renderer);var s=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},l=this._private={container:n,ready:!1,options:o,elements:new Fl(this),listeners:[],aniEles:new Fl(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?i:o.styleEnabled,zoom:Q(o.zoom)?o.zoom:1,pan:{x:$(o.pan)&&Q(o.pan.x)?o.pan.x:0,y:$(o.pan)&&Q(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});l.styleEnabled&&t.setStyle([]);var u=be({},o,o.renderer);t.initRenderer(u);!function(e,t){if(e.some(oe))return Gr.all(e).then(t);t(e)}([o.style,o.elements],function(e){var n=e[0],i=e[1];l.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var a=t.mutableElements();a.length>0&&a.remove(),null!=e&&($(e)||Z(e))&&t.add(e),t.one("layoutready",function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")}).one("layoutstop",function(){t.one("done",r),t.emit("done")});var i=be({},t._private.options.layout);i.eles=t.elements(),t.layout(i).run()}(i,function(){t.startAnimationLoop(),l.ready=!0,G(o.ready)&&t.on("ready",o.ready);for(var e=0;e0,l=!!t.boundingBox,u=tn(l?t.boundingBox:structuredClone(n.extent()));if(ee(t.roots))e=t.roots;else if(Z(t.roots)){for(var c=[],d=0;d0;){var D=B(),_=T(D,P);if(_)D.outgoers().filter(function(e){return e.isNode()&&r.has(e)}).forEach(S);else if(null===_){ot("Detected double maximal shift for node `"+D.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var A=0;if(t.avoidOverlap)for(var M=0;M0&&y[0].length<=3?i/2:0),s=2*Math.PI/y[r].length*a;return 0===r&&1===y[0].length&&(o=1),{x:W+o*Math.cos(s),y:U+o*Math.sin(s)}}var c=y[r].length,d=Math.max(1===c?0:l?(u.w-2*t.padding-H.w)/((t.grid?$:c)-1):(u.w-2*t.padding-H.w)/((t.grid?$:c)+1),A);return{x:W+(a+1-(c+1)/2)*d,y:U+(r+1-(V+1)/2)*G}}(e),u,Q[t.direction])}),this};var Au={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Mu(e){this.options=be({},Au,e)}Mu.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,i=r.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));for(var o,s=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/i.length:t.sweep)/Math.max(1,i.length-1),d=0,h=0;h1&&t.avoidOverlap){d*=1.75;var g=Math.cos(c)-Math.cos(0),y=Math.sin(c)-Math.sin(0),m=Math.sqrt(d*d/(g*g+y*y));o=Math.max(m,o)}return r.nodes().layoutPositions(this,t,function(e,n){var r=t.startAngle+n*c*(a?1:-1),i=o*Math.cos(r),s=o*Math.sin(r);return{x:l+i,y:u+s}}),this};var Ru,Iu={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Nu(e){this.options=be({},Iu,e)}Nu.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,a=t.eles,i=a.nodes().not(":parent"),o=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,l=o.y1+o.h/2,u=[],c=0,d=0;d0)Math.abs(m[0].value-x.value)>=g&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var E=y.length>0&&y[0].length>1,k=(Math.min(o.w,o.h)/2-w)/(y.length+E?1:0);w=Math.min(w,k)}for(var T=0,C=0;C1&&t.avoidOverlap){var D=Math.cos(B)-Math.cos(0),_=Math.sin(B)-Math.sin(0),A=Math.sqrt(w*w/(D*D+_*_));T=Math.max(A,T)}P.r=T,T+=w}if(t.equidistant){for(var M=0,R=0,I=0;I=e.numIter)&&(qu(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature=e.animationThreshold&&i(),Le(c)):(nc(r,e),s())};c()}else{for(;u;)u=o(l),l++;nc(r,e),s()}return this},zu.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},zu.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Ou=function(e,t,n){for(var r=n.eles.edges(),a=n.eles.nodes(),i=tn(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:i.w,clientHeight:i.h,boundingBox:i},s=n.eles.components(),l={},u=0;u0){o.graphSet.push(w);for(u=0;ur.count?0:r.graph},Fu=function(e,t,n,r){var a=r.graphSet[n];if(-10)var s=(u=r.nodeOverlap*o)*a/(v=Math.sqrt(a*a+i*i)),l=u*i/v;else{var u,c=Gu(e,a,i),d=Gu(t,-1*a,-1*i),h=d.x-c.x,f=d.y-c.y,p=h*h+f*f,v=Math.sqrt(p);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/p)*h/v,l=u*f/v}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},Ku=function(e,t,n,r){if(n>0)var a=e.maxX-t.minX;else a=t.maxX-e.minX;if(r>0)var i=e.maxY-t.minY;else i=t.maxY-e.minY;return a>=0&&i>=0?Math.sqrt(a*a+i*i):0},Gu=function(e,t,n){var r=e.positionX,a=e.positionY,i=e.height||1,o=e.width||1,s=n/t,l=i/o,u={};return 0===t&&0n?(u.x=r,u.y=a+i/2,u):0t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=a-o*n/2/t,u):0=l)?(u.x=r+i*t/2/n,u.y=a+i/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-i*t/2/n,u.y=a-i/2,u):u},Zu=function(e,t){for(var n=0;n1){var p=t.gravity*d/f,v=t.gravity*h/f;c.offsetX+=p,c.offsetY+=v}}}}},Qu=function(e,t){var n=[],r=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;r<=a;){var i=n[r++],o=e.idToIndex[i],s=e.layoutNodes[o],l=s.children;if(0n)var a={x:n*e/r,y:n*t/r};else a={x:e,y:t};return a},tc=function(e,t){var n=e.parentId;if(null!=n){var r=t.layoutNodes[t.idToIndex[n]],a=!1;return(null==r.maxX||e.maxX+r.padRight>r.maxX)&&(r.maxX=e.maxX+r.padRight,a=!0),(null==r.minX||e.minX-r.padLeftr.maxY)&&(r.maxY=e.maxY+r.padBottom,a=!0),(null==r.minY||e.minY-r.padTopp&&(d+=f+t.componentSpacing,c=0,h=0,f=0)}}},rc={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function ac(e){this.options=be({},rc,e)}ac.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));var i=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===i.h||0===i.w)r.nodes().layoutPositions(this,t,function(e){return{x:i.x1,y:i.y1}});else{var o=a.size(),s=Math.sqrt(o*i.h/i.w),l=Math.round(s),u=Math.round(i.w/i.h*s),c=function(e){if(null==e)return Math.min(l,u);Math.min(l,u)==l?l=e:u=e},d=function(e){if(null==e)return Math.max(l,u);Math.max(l,u)==l?l=e:u=e},h=t.rows,f=null!=t.cols?t.cols:t.columns;if(null!=h&&null!=f)l=h,u=f;else if(null!=h&&null==f)l=h,u=Math.ceil(o/l);else if(null==h&&null!=f)u=f,l=Math.ceil(o/u);else if(u*l>o){var p=c(),v=d();(p-1)*v>=o?c(p-1):(v-1)*p>=o&&d(v-1)}else for(;u*l=o?d(y+1):c(g+1)}var m=i.w/u,b=i.h/l;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=u&&(A=0,_++)},R={},I=0;I(r=mn(e,t,x[w],x[w+1],x[w+2],x[w+3])))return g(n,r),!0}else if("bezier"===i.edgeType||"multibezier"===i.edgeType||"self"===i.edgeType||"compound"===i.edgeType)for(x=i.allpts,w=0;w+5(r=yn(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return g(n,r),!0;m=m||a.source,b=b||a.target;var E=o.getArrowWidth(l,c),k=[{name:"source",x:i.arrowStartX,y:i.arrowStartY,angle:i.srcArrowAngle},{name:"target",x:i.arrowEndX,y:i.arrowEndY,angle:i.tgtArrowAngle},{name:"mid-source",x:i.midX,y:i.midY,angle:i.midsrcArrowAngle},{name:"mid-target",x:i.midX,y:i.midY,angle:i.midtgtArrowAngle}];for(w=0;w0&&(y(m),y(b))}function b(e,t,n){return pt(e,t,n)}function x(n,r){var a,i=n._private,o=p;a=r?r+"-":"",n.boundingBox();var s=i.labelBounds[r||"main"],l=n.pstyle(a+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=b(i.rscratch,"labelX",r),c=b(i.rscratch,"labelY",r),d=b(i.rscratch,"labelAngle",r),h=n.pstyle(a+"text-margin-x").pfValue,f=n.pstyle(a+"text-margin-y").pfValue,v=s.x1-o-h,y=s.x2+o-h,m=s.y1-o-f,x=s.y2+o-f;if(d){var w=Math.cos(d),E=Math.sin(d),k=function(e,t){return{x:(e-=u)*w-(t-=c)*E+u,y:e*E+t*w+c}},T=k(v,m),C=k(v,x),P=k(y,m),S=k(y,x),B=[T.x+h,T.y+f,P.x+h,P.y+f,S.x+h,S.y+f,C.x+h,C.y+f];if(bn(e,t,B))return g(n),!0}else if(un(s,e,t))return g(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){var a=this.getCachedZSortedEles().interactive,i=2/this.cy.zoom(),o=[],s=Math.min(e,n),u=Math.max(e,n),c=Math.min(t,r),d=Math.max(t,r),h=tn({x1:e=s,y1:t=c,x2:n=u,y2:r=d}),f=[{x:h.x1,y:h.y1},{x:h.x2,y:h.y1},{x:h.x2,y:h.y2},{x:h.x1,y:h.y2}],p=[[f[0],f[1]],[f[1],f[2]],[f[2],f[3]],[f[3],f[0]]];function v(e,t,n){return pt(e,t,n)}function g(e,t){var n=e._private,r=i;e.boundingBox();var a=n.labelBounds.main;if(!a)return null;var o=v(n.rscratch,"labelX",t),s=v(n.rscratch,"labelY",t),l=v(n.rscratch,"labelAngle",t),u=e.pstyle("text-margin-x").pfValue,c=e.pstyle("text-margin-y").pfValue,d=a.x1-r-u,h=a.x2+r-u,f=a.y1-r-c,p=a.y2+r-c;if(l){var g=Math.cos(l),y=Math.sin(l),m=function(e,t){return{x:(e-=o)*g-(t-=s)*y+o,y:e*y+t*g+s}};return[m(d,f),m(h,f),m(h,p),m(d,p)]}return[{x:d,y:f},{x:h,y:f},{x:h,y:p},{x:d,y:p}]}function y(e,t,n,r){function a(e,t,n){return(n.y-e.y)*(t.x-e.x)>(t.y-e.y)*(n.x-e.x)}return a(e,n,r)!==a(t,n,r)&&a(e,t,n)!==a(e,t,r)}for(var m=0;m0?-(Math.PI-i.ang):Math.PI+i.ang),zc(t,n,Lc),xc=Nc.nx*Lc.ny-Nc.ny*Lc.nx,wc=Nc.nx*Lc.nx-Nc.ny*-Lc.ny,Tc=Math.asin(Math.max(-1,Math.min(1,xc))),Math.abs(Tc)<1e-6)return mc=t.x,bc=t.y,void(Pc=Bc=0);Ec=1,kc=!1,wc<0?Tc<0?Tc=Math.PI+Tc:(Tc=Math.PI-Tc,Ec=-1,kc=!0):Tc>0&&(Ec=-1,kc=!0),Bc=void 0!==t.radius?t.radius:r,Cc=Tc/2,Dc=Math.min(Nc.len/2,Lc.len/2),a?(Sc=Math.abs(Math.cos(Cc)*Bc/Math.sin(Cc)))>Dc?(Sc=Dc,Pc=Math.abs(Sc*Math.sin(Cc)/Math.cos(Cc))):Pc=Bc:(Sc=Math.min(Dc,Bc),Pc=Math.abs(Sc*Math.sin(Cc)/Math.cos(Cc))),Mc=t.x+Lc.nx*Sc,Rc=t.y+Lc.ny*Sc,mc=Mc-Lc.ny*Pc*Ec,bc=Rc+Lc.nx*Pc*Ec,_c=t.x+Nc.nx*Sc,Ac=t.y+Nc.ny*Sc,Ic=t};function Vc(e,t){0===t.radius?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function Fc(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return 0===r||0===t.radius?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(Oc(e,t,n,r,a),{cx:mc,cy:bc,radius:Pc,startX:_c,startY:Ac,stopX:Mc,stopY:Rc,startAngle:Nc.ang+Math.PI/2*Ec,endAngle:Lc.ang-Math.PI/2*Ec,counterClockwise:kc})}var Xc=.01,jc=Math.sqrt(.02),Yc={};function qc(e){var t=[];if(null!=e){for(var n=0;n0?Math.max(e-t,0):Math.min(e+t,0)},S=P(T,E),B=P(C,k),D=!1;"auto"===g?v=Math.abs(S)>Math.abs(B)?a:r:g===l||g===s?(v=r,D=!0):g!==i&&g!==o||(v=a,D=!0);var _,A=v===r,M=A?B:S,R=A?C:T,I=Kt(R),N=!1;(D&&(m||x)||!(g===s&&R<0||g===l&&R>0||g===i&&R>0||g===o&&R<0)||(M=(I*=-1)*Math.abs(M),N=!0),m)?_=(b<0?1+b:b)*M:_=(b<0?M:0)+b*I;var L=function(e){return Math.abs(e)=Math.abs(M)},z=L(_),O=L(Math.abs(M)-Math.abs(_));if((z||O)&&!N)if(A){var V=Math.abs(R)<=d/2,F=Math.abs(T)<=h/2;if(V){var X=(u.x1+u.x2)/2,j=u.y1,Y=u.y2;n.segpts=[X,j,X,Y]}else if(F){var q=(u.y1+u.y2)/2,W=u.x1,U=u.x2;n.segpts=[W,q,U,q]}else n.segpts=[u.x1,u.y2]}else{var H=Math.abs(R)<=c/2,K=Math.abs(C)<=f/2;if(H){var G=(u.y1+u.y2)/2,Z=u.x1,$=u.x2;n.segpts=[Z,G,$,G]}else if(K){var Q=(u.x1+u.x2)/2,J=u.y1,ee=u.y2;n.segpts=[Q,J,Q,ee]}else n.segpts=[u.x2,u.y1]}else if(A){var te=u.y1+_+(p?d/2*I:0),ne=u.x1,re=u.x2;n.segpts=[ne,te,re,te]}else{var ae=u.x1+_+(p?c/2*I:0),ie=u.y1,oe=u.y2;n.segpts=[ae,ie,ae,oe]}if(n.isRound){var se=e.pstyle("taxi-radius").value,le="arc-radius"===e.pstyle("radius-type").value[0];n.radii=new Array(n.segpts.length/2).fill(se),n.isArcRadius=new Array(n.segpts.length/2).fill(le)}},Yc.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,a=t.tgtPos,i=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,d=t.srcCornerRadius,h=t.tgtCornerRadius,f=t.srcRs,p=t.tgtRs,v=!Q(n.startX)||!Q(n.startY),g=!Q(n.arrowStartX)||!Q(n.arrowStartY),y=!Q(n.endX)||!Q(n.endY),m=!Q(n.arrowEndX)||!Q(n.arrowEndY),b=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),x=Gt({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),w=xv.poolIndex()){var g=p;p=v,v=g}var y=d.srcPos=p.position(),m=d.tgtPos=v.position(),b=d.srcW=p.outerWidth(),x=d.srcH=p.outerHeight(),E=d.tgtW=v.outerWidth(),k=d.tgtH=v.outerHeight(),T=d.srcShape=n.nodeShapes[t.getNodeShape(p)],C=d.tgtShape=n.nodeShapes[t.getNodeShape(v)],P=d.srcCornerRadius="auto"===p.pstyle("corner-radius").value?"auto":p.pstyle("corner-radius").pfValue,S=d.tgtCornerRadius="auto"===v.pstyle("corner-radius").value?"auto":v.pstyle("corner-radius").pfValue,B=d.tgtRs=v._private.rscratch,D=d.srcRs=p._private.rscratch;d.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var _=0;_=jc||(q=Math.sqrt(Math.max(Y*Y,Xc)+Math.max(j*j,Xc)));var W=d.vector={x:Y,y:j},U=d.vectorNorm={x:W.x/q,y:W.y/q},H={x:-U.y,y:U.x};d.nodesOverlap=!Q(q)||C.checkPoint(L[0],L[1],0,E,k,m.x,m.y,S,B)||T.checkPoint(O[0],O[1],0,b,x,y.x,y.y,P,D),d.vectorNormInverse=H,e={nodesOverlap:d.nodesOverlap,dirCounts:d.dirCounts,calculatedIntersection:!0,hasBezier:d.hasBezier,hasUnbundled:d.hasUnbundled,eles:d.eles,srcPos:m,srcRs:B,tgtPos:y,tgtRs:D,srcW:E,srcH:k,tgtW:b,tgtH:x,srcIntn:V,tgtIntn:z,srcShape:C,tgtShape:T,posPts:{x1:X.x2,y1:X.y2,x2:X.x1,y2:X.y1},intersectionPts:{x1:F.x2,y1:F.y2,x2:F.x1,y2:F.y1},vector:{x:-W.x,y:-W.y},vectorNorm:{x:-U.x,y:-U.y},vectorNormInverse:{x:-H.x,y:-H.y}}}var K=N?e:d;M.nodesOverlap=K.nodesOverlap,M.srcIntn=K.srcIntn,M.tgtIntn=K.tgtIntn,M.isRound=R.startsWith("round"),r&&(p.isParent()||p.isChild()||v.isParent()||v.isChild())&&(p.parents().anySame(v)||v.parents().anySame(p)||p.same(v)&&p.isParent())?t.findCompoundLoopPoints(A,K,_,I):p===v?t.findLoopPoints(A,K,_,I):R.endsWith("segments")?t.findSegmentsPoints(A,K):R.endsWith("taxi")?t.findTaxiPoints(A,K):"straight"===R||!I&&d.eles.length%2==1&&_===Math.floor(d.eles.length/2)?t.findStraightEdgePoints(A):t.findBezierPoints(A,K,_,I,N),t.findEndpoints(A),t.tryToCorrectInvalidPoints(A,K),t.checkForInvalidEdgeWarning(A),t.storeAllpts(A),t.storeEdgeProjections(A),t.calculateArrowAngles(A),t.recalculateEdgeLabelProjections(A),t.calculateLabelAngles(A)}},w=0;w0){var J=f,ee=Zt(J,Wt(i)),te=Zt(J,Wt($)),ne=ee;if(te2)Zt(J,{x:$[2],y:$[3]})0){var ge=p,ye=Zt(ge,Wt(i)),me=Zt(ge,Wt(ve)),be=ye;if(me2)Zt(ge,{x:ve[2],y:ve[3]})=u||m){c={cp:v,segment:y};break}}if(c)break}var b=c.cp,x=c.segment,w=(u-h)/x.length,E=x.t1-x.t0,k=s?x.t0+E*w:x.t1-E*w;k=en(0,k,1),t=Jt(b.p0,b.p1,b.p2,k),a=function(e,t,n,r){var a=en(0,r-.001,1),i=en(0,r+.001,1),o=Jt(e,t,n,a),s=Jt(e,t,n,i);return Zc(o,s)}(b.p0,b.p1,b.p2,k);break;case"straight":case"segments":case"haystack":for(var T,C,P,S,B=0,D=r.allpts.length,_=0;_+3=u));_+=2);var A=(u-C)/T;A=en(0,A,1),t=function(e,t,n,r){var a=t.x-e.x,i=t.y-e.y,o=Gt(e,t),s=a/o,l=i/o;return n=null==n?0:n,r=null!=r?r:n*o,{x:e.x+s*r,y:e.y+l*r}}(P,S,A),a=Zc(P,S)}o("labelX",n,t.x),o("labelY",n,t.y),o("labelAutoAngle",n,a)}};u("source"),u("target"),this.applyLabelDimensions(e)}},Kc.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},Kc.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),a=Ue(r,e._private.labelDimsKey);if(pt(n.rscratch,"prefixedLabelDimsKey",t)!==a){vt(n.rscratch,"prefixedLabelDimsKey",t,a);var i=this.calculateLabelDimensions(e,r),o=e.pstyle("line-height").pfValue,s=e.pstyle("text-wrap").strValue,l=pt(n.rscratch,"labelWrapCachedLines",t)||[],u="wrap"!==s?1:Math.max(l.length,1),c=i.height/u,d=c*o,h=i.width,f=i.height+(u-1)*(o-1)*c;vt(n.rstyle,"labelWidth",t,h),vt(n.rscratch,"labelWidth",t,h),vt(n.rstyle,"labelHeight",t,f),vt(n.rscratch,"labelHeight",t,f),vt(n.rscratch,"labelLineHeight",t,d)}},Kc.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",a=e.pstyle(r+"label").strValue,i=e.pstyle("text-transform").value,s=function(e,r){return r?(vt(n.rscratch,e,t,r),r):pt(n.rscratch,e,t)};if(!a)return"";"none"==i||("uppercase"==i?a=a.toUpperCase():"lowercase"==i&&(a=a.toLowerCase()));var l=e.pstyle("text-wrap").value;if("wrap"===l){var u=s("labelKey");if(null!=u&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var c=a.split("\n"),d=e.pstyle("text-max-width").pfValue,h="anywhere"===e.pstyle("text-overflow-wrap").value,f=[],p=/[\s\u200b]+|$/g,v=0;vd){var b,x="",w=0,E=o(g.matchAll(p));try{for(E.s();!(b=E.n()).done;){var k=b.value,T=k[0],C=g.substring(w,k.index);w=k.index+T.length;var P=0===x.length?C:x+C+T;this.calculateLabelDimensions(e,P).width<=d?x+=C+T:(x&&f.push(x),x=C+T)}}catch(A){E.e(A)}finally{E.f()}x.match(/^[\s\u200b]+$/)||f.push(x)}else f.push(g)}s("labelWrapCachedLines",f),a=s("labelWrapCachedText",f.join("\n")),s("labelWrapKey",u)}else if("ellipsis"===l){var S=e.pstyle("text-max-width").pfValue,B="",D=!1;if(this.calculateLabelDimensions(e,a).widthS)break;B+=a[_],_===a.length-1&&(D=!0)}return D||(B+="\u2026"),B}return a},Kc.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},Kc.calculateLabelDimensions=function(e,t){var n=this.cy.window().document,r=e.pstyle("font-style").strValue,a=e.pstyle("font-size").pfValue,i=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,s=this.labelCalcCanvas,l=this.labelCalcCanvasContext;if(!s){s=this.labelCalcCanvas=n.createElement("canvas"),l=this.labelCalcCanvasContext=s.getContext("2d");var u=s.style;u.position="absolute",u.left="-9999px",u.top="-9999px",u.zIndex="-1",u.visibility="hidden",u.pointerEvents="none"}l.font="".concat(r," ").concat(o," ").concat(a,"px ").concat(i);for(var c=0,d=0,h=t.split("\n"),f=0;f1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r=e.desktopTapThreshold2}var P=a(t);g&&(e.hoverData.tapholdCancelled=!0);n=!0,r(v,["mousemove","vmousemove","tapdrag"],t,{x:c[0],y:c[1]});var S=function(e){return{originalEvent:t,type:e,position:{x:c[0],y:c[1]}}},B=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit(S("boxstart")),p[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(g){var D=S("cxtdrag");b?b.emit(D):o.emit(D),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&v===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(S("cxtdragout")),e.hoverData.cxtOver=v,v&&v.emit(S("cxtdragover")))}}else if(e.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var _;if(e.hoverData.justStartedPan){var A=e.hoverData.mdownPos;_={x:(c[0]-A[0])*s,y:(c[1]-A[1])*s},e.hoverData.justStartedPan=!1}else _={x:x[0]*s,y:x[1]*s};o.panBy(_),o.emit(S("dragpan")),e.hoverData.dragged=!0}c=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=p[4]||null!=b&&!b.pannable()){if(b&&b.pannable()&&b.active()&&b.unactivate(),b&&b.grabbed()||v==y||(y&&r(y,["mouseout","tapdragout"],t,{x:c[0],y:c[1]}),v&&r(v,["mouseover","tapdragover"],t,{x:c[0],y:c[1]}),e.hoverData.last=v),b)if(g){if(o.boxSelectionEnabled()&&P)b&&b.grabbed()&&(d(w),b.emit(S("freeon")),w.emit(S("free")),e.dragData.didDrag&&(b.emit(S("dragfreeon")),w.emit(S("dragfree")))),B();else if(b&&b.grabbed()&&e.nodeIsDraggable(b)){var M=!e.dragData.didDrag;M&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||u(w,{inDragLayer:!0});var R={x:0,y:0};if(Q(x[0])&&Q(x[1])&&(R.x+=x[0],R.y+=x[1],M)){var I=e.hoverData.dragDelta;I&&Q(I[0])&&Q(I[1])&&(R.x+=I[0],R.y+=I[1])}e.hoverData.draggingEles=!0,w.silentShift(R).emit(S("position")).emit(S("drag")),e.redrawHint("drag",!0),e.redraw()}}else!function(){var t=e.hoverData.dragDelta=e.hoverData.dragDelta||[];0===t.length?(t.push(x[0]),t.push(x[1])):(t[0]+=x[0],t[1]+=x[1])}();n=!0}else if(g){if(e.hoverData.dragging||!o.boxSelectionEnabled()||!P&&o.panningEnabled()&&o.userPanningEnabled()){if(!e.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()){i(b,e.hoverData.downs)&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,p[4]=0,e.data.bgActivePosistion=Wt(h),e.redrawHint("select",!0),e.redraw())}}else B();b&&b.pannable()&&b.active()&&b.unactivate()}return p[2]=c[0],p[3]=c[1],n?(t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),!1):void 0}},!1),e.registerBinding(t,"mouseup",function(t){if((1!==e.hoverData.which||1===t.which||!e.hoverData.capture)&&e.hoverData.capture){e.hoverData.capture=!1;var i=e.cy,o=e.projectIntoViewport(t.clientX,t.clientY),s=e.selection,l=e.findNearestElement(o[0],o[1],!0,!1),u=e.dragData.possibleDragElements,c=e.hoverData.down,h=a(t);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,c&&c.unactivate();var f=function(e){return{originalEvent:t,type:e,position:{x:o[0],y:o[1]}}};if(3===e.hoverData.which){var p=f("cxttapend");if(c?c.emit(p):i.emit(p),!e.hoverData.cxtDragged){var v=f("cxttap");c?c.emit(v):i.emit(v)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(1===e.hoverData.which){if(r(l,["mouseup","tapend","vmouseup"],t,{x:o[0],y:o[1]}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||(r(c,["click","tap","vclick"],t,{x:o[0],y:o[1]}),x=!1,t.timeStamp-w<=i.multiClickDebounceTime()?(b&&clearTimeout(b),x=!0,w=null,r(c,["dblclick","dbltap","vdblclick"],t,{x:o[0],y:o[1]})):(b=setTimeout(function(){x||r(c,["oneclick","onetap","voneclick"],t,{x:o[0],y:o[1]})},i.multiClickDebounceTime()),w=t.timeStamp)),null!=c||e.dragData.didDrag||e.hoverData.selecting||e.hoverData.dragged||a(t)||(i.$(n).unselect(["tapunselect"]),u.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=i.collection()),l!=c||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===i.selectionType()||h?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):h||(i.$(n).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var g=i.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),g.length>0&&e.redrawHint("eles",!0),i.emit(f("boxend"));var y=function(e){return e.selectable()&&!e.selected()};"additive"===i.selectionType()||h||i.$(n).unmerge(g).unselect(),g.emit(f("box")).stdFilter(y).select().emit(f("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var m=c&&c.grabbed();d(u),m&&(c.emit(f("freeon")),u.emit(f("free")),e.dragData.didDrag&&(c.emit(f("dragfreeon")),u.emit(f("dragfree"))))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}},!1);var k,T,C,P,S,B,D,_,A,M,R,I,N,L,z=[],O=1e5,V=function(t){var n=!1,r=t.deltaY;if(null==r&&(null!=t.wheelDeltaY?r=t.wheelDeltaY/4:null!=t.wheelDelta&&(r=t.wheelDelta/4)),0!==r){if(null==k)if(z.length>=4){var a=z;if(k=function(e,t){for(var n=0;n5}if(k)for(var o=0;o5&&(r=5*Kt(r)),h=r/-250,k&&(h/=O,h*=3),h*=e.wheelSensitivity,1===t.deltaMode&&(h*=33);var f=s.zoom()*Math.pow(10,h);"gesturechange"===t.type&&(f=e.gestureStartZoom*t.scale),s.zoom({level:f,renderedPosition:{x:d[0],y:d[1]}}),s.emit({type:"gesturechange"===t.type?"pinchzoom":"scrollzoom",originalEvent:t,position:{x:c[0],y:c[1]}})}}}};e.registerBinding(e.container,"wheel",V,!0),e.registerBinding(t,"scroll",function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},!0),e.registerBinding(e.container,"gesturestart",function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()},!0),e.registerBinding(e.container,"gesturechange",function(t){e.hasTouchStarted||V(t)},!0),e.registerBinding(e.container,"mouseout",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),e.registerBinding(e.container,"mouseover",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var F,X,j,Y,q,W,U,H=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},K=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",F=function(t){if(e.hasTouchStarted=!0,m(t)){f(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var n=e.cy,a=e.touchData.now,i=e.touchData.earlier;if(t.touches[0]){var o=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);a[0]=o[0],a[1]=o[1]}if(t.touches[1]){o=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);a[2]=o[0],a[3]=o[1]}if(t.touches[2]){o=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);a[4]=o[0],a[5]=o[1]}var l=function(e){return{originalEvent:t,type:e,position:{x:a[0],y:a[1]}}};if(t.touches[1]){e.touchData.singleTouchMoved=!0,d(e.dragData.touchDragEles);var h=e.findContainerClientCoords();M=h[0],R=h[1],I=h[2],N=h[3],T=t.touches[0].clientX-M,C=t.touches[0].clientY-R,P=t.touches[1].clientX-M,S=t.touches[1].clientY-R,L=0<=T&&T<=I&&0<=P&&P<=I&&0<=C&&C<=N&&0<=S&&S<=N;var p=n.pan(),v=n.zoom();B=H(T,C,P,S),D=K(T,C,P,S),A=[((_=[(T+P)/2,(C+S)/2])[0]-p.x)/v,(_[1]-p.y)/v];if(D<4e4&&!t.touches[2]){var g=e.findNearestElement(a[0],a[1],!0,!0),y=e.findNearestElement(a[2],a[3],!0,!0);return g&&g.isNode()?(g.activate().emit(l("cxttapstart")),e.touchData.start=g):y&&y.isNode()?(y.activate().emit(l("cxttapstart")),e.touchData.start=y):n.emit(l("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])n.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var b=e.findNearestElements(a[0],a[1],!0,!0),x=b[0];if(null!=x&&(x.activate(),e.touchData.start=x,e.touchData.starts=b,e.nodeIsGrabbable(x))){var w=e.dragData.touchDragEles=n.collection(),E=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),x.selected()?(E=n.$(function(t){return t.selected()&&e.nodeIsGrabbable(t)}),u(E,{addToList:w})):c(x,{addToList:w}),s(x),x.emit(l("grabon")),E?E.forEach(function(e){e.emit(l("grab"))}):x.emit(l("grab"))}r(x,["touchstart","tapstart","vmousedown"],t,{x:a[0],y:a[1]}),null==x&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||r(e.touchData.start,["taphold"],t,{x:a[0],y:a[1]})},e.tapholdDuration)}if(t.touches.length>=1){for(var k=e.touchData.startPosition=[null,null,null,null,null,null],z=0;z=e.touchTapThreshold2}if(n&&e.touchData.cxt){t.preventDefault();var E=t.touches[0].clientX-M,k=t.touches[0].clientY-R,_=t.touches[1].clientX-M,I=t.touches[1].clientY-R,N=K(E,k,_,I);if(N/D>=2.25||N>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var z=p("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(z),e.touchData.start=null):o.emit(z)}}if(n&&e.touchData.cxt){z=p("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(z):o.emit(z),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var O=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&O===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit(p("cxtdragout")),e.touchData.cxtOver=O,O&&O.emit(p("cxtdragover")))}else if(n&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit(p("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,a[4]=1,a&&0!==a.length&&void 0!==a[0]?(a[2]=(s[0]+s[2]+s[4])/3,a[3]=(s[1]+s[3]+s[5])/3):(a[0]=(s[0]+s[2]+s[4])/3,a[1]=(s[1]+s[3]+s[5])/3,a[2]=(s[0]+s[2]+s[4])/3+1,a[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(n&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),te=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var V=0;V0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(t,"touchcancel",j=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(t,"touchend",Y=function(t){var a=e.touchData.start;if(e.touchData.capture){0===t.touches.length&&(e.touchData.capture=!1),t.preventDefault();var i=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o=e.cy,s=o.zoom(),l=e.touchData.now,u=e.touchData.earlier;if(t.touches[0]){var c=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);l[0]=c[0],l[1]=c[1]}if(t.touches[1]){c=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);l[2]=c[0],l[3]=c[1]}if(t.touches[2]){c=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);l[4]=c[0],l[5]=c[1]}var h,f=function(e){return{originalEvent:t,type:e,position:{x:l[0],y:l[1]}}};if(a&&a.unactivate(),e.touchData.cxt){if(h=f("cxttapend"),a?a.emit(h):o.emit(h),!e.touchData.cxtDragged){var p=f("cxttap");a?a.emit(p):o.emit(p)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!t.touches[2]&&o.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var v=o.collection(e.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,e.redrawHint("select",!0),o.emit(f("boxend"));v.emit(f("box")).stdFilter(function(e){return e.selectable()&&!e.selected()}).select().emit(f("boxselect")),v.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=a&&a.unactivate(),t.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(t.touches[1]);else if(t.touches[0]);else if(!t.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var g=e.dragData.touchDragEles;if(null!=a){var y=a._private.grabbed;d(g),e.redrawHint("drag",!0),e.redrawHint("eles",!0),y&&(a.emit(f("freeon")),g.emit(f("free")),e.dragData.didDrag&&(a.emit(f("dragfreeon")),g.emit(f("dragfree")))),r(a,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]}),a.unactivate(),e.touchData.start=null}else{var m=e.findNearestElement(l[0],l[1],!0,!0);r(m,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]})}var b=e.touchData.startPosition[0]-l[0],x=b*b,w=e.touchData.startPosition[1]-l[1],E=(x+w*w)*s*s;e.touchData.singleTouchMoved||(a||o.$(":selected").unselect(["tapunselect"]),r(a,["tap","vclick"],t,{x:l[0],y:l[1]}),q=!1,t.timeStamp-U<=o.multiClickDebounceTime()?(W&&clearTimeout(W),q=!0,U=null,r(a,["dbltap","vdblclick"],t,{x:l[0],y:l[1]})):(W=setTimeout(function(){q||r(a,["onetap","voneclick"],t,{x:l[0],y:l[1]})},o.multiClickDebounceTime()),U=t.timeStamp)),null!=a&&!e.dragData.didDrag&&a._private.selectable&&E2){for(var f=[c[0],c[1]],p=Math.pow(f[0]-e,2)+Math.pow(f[1]-t,2),v=1;v0)return v[0]}return null},f=Object.keys(d),p=0;p0?u:pn(a,i,e,t,n,r,o,s)},checkPoint:function(e,t,n,r,a,i,o,s){var l=2*(s="auto"===s?Rn(r,a):s);if(xn(e,t,this.points,i,o,r,a-l,[0,-1],n))return!0;if(xn(e,t,this.points,i,o,r-l,a,[0,-1],n))return!0;var u=r/2+2*n,c=a/2+2*n;return!!bn(e,t,[i-u,o-c,i-u,o,i+u,o,i+u,o-c])||(!!kn(e,t,l,l,i+r/2-s,o+a/2-s,n)||!!kn(e,t,l,l,i-r/2+s,o+a/2-s,n))}}},ad.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",_n(3,0)),this.generateRoundPolygon("round-triangle",_n(3,0)),this.generatePolygon("rectangle",_n(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",_n(5,0)),this.generateRoundPolygon("round-pentagon",_n(5,0)),this.generatePolygon("hexagon",_n(6,0)),this.generateRoundPolygon("round-hexagon",_n(6,0)),this.generatePolygon("heptagon",_n(7,0)),this.generateRoundPolygon("round-heptagon",_n(7,0)),this.generatePolygon("octagon",_n(8,0)),this.generateRoundPolygon("round-octagon",_n(8,0));var r=new Array(20),a=Mn(5,0),i=Mn(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*v)break}else if(a){if(f>=e.deqCost*l||f>=e.deqAvgCost*s)break}else if(p>=e.deqNoDrawCost*ud)break;var g=e.deq(t,d,c);if(!(g.length>0))break;for(var y=0;y0&&(e.onDeqd(t,u),!a&&e.shouldRedraw(t,u,d,c)&&r())},a(t))}}},dd=function(){return i(function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:tt;a(this,e),this.idsByKey=new gt,this.keyForId=new gt,this.cachesByLvl=new gt,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=n},[{key:"getIdsFor",value:function(e){null==e&&at("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new mt,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new gt,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach(function(n){return t.deleteCache(e,n)})}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}])}(),hd=7.99,fd={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},pd=dt({getKey:null,doesEleInvalidateKey:tt,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:et,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),vd=function(e,t){var n=this;n.renderer=e,n.onDequeues=[];var r=pd(t);be(n,r),n.lookup=new dd(r.getKey,r.doesEleInvalidateKey),n.setupDequeueing()},gd=vd.prototype;gd.reasons=fd,gd.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},gd.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},gd.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new Dt(function(e,t){return t.reqs-e.reqs})},gd.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},gd.getElement=function(e,t,n,r,a){var i=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!i.allowEdgeTxrCaching&&e.isEdge()||!i.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(Ht(s*n))),r<-4)r=-4;else if(s>=7.99||r>3)return null;var u=Math.pow(2,r),c=t.h*u,d=t.w*u,h=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,h))return null;var f,p=l.get(e,r);if(p&&p.invalidated&&(p.invalidated=!1,p.texture.invalidatedWidth-=p.width),p)return p;if(f=c<=25?25:c<=50?50:50*Math.ceil(c/50),c>1024||d>1024)return null;var v=i.getTextureQueue(f),g=v[v.length-2],y=function(){return i.recycleTexture(f,d)||i.addTexture(f,d)};g||(g=v[v.length-1]),g||(g=y()),g.width-g.usedWidthr;S--)C=i.getElement(e,t,n,S,fd.downscale);P()}else{var B;if(!x&&!w&&!E)for(var D=r-1;D>=-4;D--){var _=l.get(e,D);if(_){B=_;break}}if(b(B))return i.queueElement(e,r),B;g.context.translate(g.usedWidth,0),g.context.scale(u,u),this.drawElement(g.context,e,t,h,!1),g.context.scale(1/u,1/u),g.context.translate(-g.usedWidth,0)}return p={x:g.usedWidth,texture:g,level:r,scale:u,width:d,height:c,scaledLabelShown:h},g.usedWidth+=Math.ceil(d+8),g.eleCaches.push(p),l.set(e,r,p),i.checkTextureFullness(g),p},gd.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},gd.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?ht(t,e):e.fullnessChecks++},gd.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;ht(n,e),e.retired=!0;for(var a=e.eleCaches,i=0;i=t)return i.retired=!1,i.usedWidth=0,i.invalidatedWidth=0,i.fullnessChecks=0,ft(i.eleCaches),i.context.setTransform(1,0,0,1,0,0),i.context.clearRect(0,0,i.width,i.height),ht(r,i),n.push(i),i}},gd.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),a=this.getKey(e),i=r[a];if(i)i.level=Math.max(i.level,t),i.eles.merge(e),i.reqs++,n.updateItem(i);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(o),r[a]=o}},gd.dequeue=function(e){for(var t=this,n=t.getElementQueue(),r=t.getElementKeyToQueue(),a=[],i=t.lookup,o=0;o<1&&n.size()>0;o++){var s=n.pop(),l=s.key,u=s.eles[0],c=i.hasCache(u,s.level);if(r[l]=null,!c){a.push(s);var d=t.getBoundingBox(u);t.getElement(u,d,e,s.level,fd.dequeue)}}return a},gd.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),a=n[r];null!=a&&(1===a.eles.length?(a.reqs=Je,t.updateItem(a),t.pop(),n[r]=null):a.eles.unmerge(e))},gd.onDequeue=function(e){this.onDequeues.push(e)},gd.offDequeue=function(e){ht(this.onDequeues,e)},gd.setupDequeueing=cd({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},a=function(e){if(!s)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};a(1),a(-1);for(var i=c.length-1;i>=0;i--){var o=c[i];o.invalid&&ht(c,o)}}();var d=function(t){var a=(t=t||{}).after;!function(){if(!o){o=tn();for(var t=0;t32767||s>32767)return null;if(i*s>16e6)return null;var l=r.makeLayer(o,n);if(null!=a){var d=c.indexOf(a)+1;c.splice(d,0,l)}else(void 0===t.insert||t.insert)&&c.unshift(l);return l};if(r.skipping&&!i)return null;for(var h=null,f=e.length/1,p=!i,v=0;v=f||!dn(h.bb,g.boundingBox()))&&!(h=d({insert:!0,after:h})))return null;s||p?r.queueLayer(h,g):r.drawEleInLayer(h,g,n,t),h.eles.push(g),m[n]=h}}return s||(p?null:c)},md.getEleLevelForLayerLevel=function(e,t){return e},md.drawEleInLayer=function(e,t,n,r){var a=this.renderer,i=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),a.setImgSmoothing(i,!1),a.drawCachedElement(i,t,null,null,n,true),a.setImgSmoothing(i,!0))},md.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,a=0;a0)return!1;if(i.invalid)return!1;r+=i.eles.length}return r===t.length},md.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},md.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=ze(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,function(e,n,r){t.invalidateLayer(e)}))},md.invalidateLayer=function(e){if(this.lastInvalidationTime=ze(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];ht(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var a=0;a3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!i||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=i?t.pstyle("opacity").value:1,c=i?t.pstyle("line-opacity").value:1,d=t.pstyle("curve-style").value,h=t.pstyle("line-style").value,f=t.pstyle("width").pfValue,p=t.pstyle("line-cap").value,v=t.pstyle("line-outline-width").value,g=t.pstyle("line-outline-color").value,y=u*c,m=u*c,b=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;"straight-triangle"===d?(o.eleStrokeStyle(e,t,n),o.drawEdgeTrianglePath(t,e,s.allpts)):(e.lineWidth=f,e.lineCap=p,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")},x=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;o.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var w=t.pstyle("ghost-offset-x").pfValue,E=t.pstyle("ghost-offset-y").pfValue,k=t.pstyle("ghost-opacity").value,T=y*k;e.translate(w,E),b(T),x(T),e.translate(-w,-E)}else!function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;e.lineWidth=f+v,e.lineCap=p,v>0?(o.colorStrokeStyle(e,g[0],g[1],g[2],n),"straight-triangle"===d?o.drawEdgeTrianglePath(t,e,s.allpts):(o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")):e.lineCap="butt"}();a&&o.drawEdgeUnderlay(e,t),b(),x(),a&&o.drawEdgeOverlay(e,t),o.drawElementText(e,t,null,r),n&&e.translate(l.x1,l.y1)}}},Ld=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n){if(n.visible()){var r=n.pstyle("".concat(e,"-opacity")).value;if(0!==r){var a=this,i=a.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(e,"-padding")).pfValue,l=n.pstyle("".concat(e,"-color")).value;t.lineWidth=s,"self"!==o.edgeType||i?t.lineCap="round":t.lineCap="butt",a.colorStrokeStyle(t,l[0],l[1],l[2],r),a.drawEdgePath(n,t,o.allpts,"solid")}}}};Nd.drawEdgeOverlay=Ld("overlay"),Nd.drawEdgeUnderlay=Ld("underlay"),Nd.drawEdgePath=function(e,t,n,r){var a,i=e._private.rscratch,s=t,l=!1,u=this.usePaths(),c=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var h=n.join("$");i.pathCacheKey&&i.pathCacheKey===h?(a=t=i.pathCache,l=!0):(a=t=new Path2D,i.pathCacheKey=h,i.pathCache=a)}if(s.setLineDash)switch(r){case"dotted":s.setLineDash([1,1]);break;case"dashed":s.setLineDash(c),s.lineDashOffset=d;break;case"solid":s.setLineDash([])}if(!l&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var f=2;f+35&&void 0!==arguments[5]?arguments[5]:5,o=Math.min(i,r/2,a/2);e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.quadraticCurveTo(t+r,n,t+r,n+o),e.lineTo(t+r,n+a-o),e.quadraticCurveTo(t+r,n+a,t+r-o,n+a),e.lineTo(t+o,n+a),e.quadraticCurveTo(t,n+a,t,n+a-o),e.lineTo(t,n+o),e.quadraticCurveTo(t,n,t+o,n),e.closePath()}Od.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),a=Math.ceil(Ht(n*r));t=Math.pow(2,a)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(i&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t);e.textAlign=l,e.textBaseline="bottom"}else{var u=t.element()._private.rscratch.badLine,c=t.pstyle("label"),d=t.pstyle("source-label"),h=t.pstyle("target-label");if(u||(!c||!c.value)&&(!d||!d.value)&&(!h||!h.value))return;e.textAlign="center",e.textBaseline="bottom"}var f,p=!n;n&&(f=n,e.translate(-f.x1,-f.y1)),null==a?(o.drawText(e,t,null,p,i),t.isEdge()&&(o.drawText(e,t,"source",p,i),o.drawText(e,t,"target",p,i))):o.drawText(e,t,a,p,i),n&&e.translate(f.x1,f.y1)},Od.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,a=t.pstyle("font-size").pfValue+"px",i=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+a+" "+i,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},Od.getTextAngle=function(e,t){var n,r=e._private.rscratch,a=t?t+"-":"",i=e.pstyle(a+"text-rotation");if("autorotate"===i.strValue){var o=pt(r,"labelAngle",t);n=e.isEdge()?o:0}else n="none"===i.strValue?0:i.pfValue;return n},Od.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=t._private.rscratch,o=a?t.effectiveOpacity():1;if(!a||0!==o&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var s,l,u=pt(i,"labelX",n),c=pt(i,"labelY",n),d=this.getLabelText(t,n);if(null!=d&&""!==d&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(e,t,a);var h,f=n?n+"-":"",p=pt(i,"labelWidth",n),v=pt(i,"labelHeight",n),g=t.pstyle(f+"text-margin-x").pfValue,y=t.pstyle(f+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle("text-halign").value,x=t.pstyle("text-valign").value;switch(m&&(b="center",x="center"),u+=g,c+=y,0!==(h=r?this.getTextAngle(t,n):0)&&(s=u,l=c,e.translate(s,l),e.rotate(h),u=0,c=0),x){case"top":break;case"center":c+=v/2;break;case"bottom":c+=v}var w=t.pstyle("text-background-opacity").value,E=t.pstyle("text-border-opacity").value,k=t.pstyle("text-border-width").pfValue,T=t.pstyle("text-background-padding").pfValue,C=t.pstyle("text-background-shape").strValue,P="round-rectangle"===C||"roundrectangle"===C,S="circle"===C;if(w>0||k>0&&E>0){var B=e.fillStyle,D=e.strokeStyle,_=e.lineWidth,A=t.pstyle("text-background-color").value,M=t.pstyle("text-border-color").value,R=t.pstyle("text-border-style").value,I=w>0,N=k>0&&E>0,L=u-T;switch(b){case"left":L-=p;break;case"center":L-=p/2}var z=c-v-T,O=p+2*T,V=v+2*T;if(I&&(e.fillStyle="rgba(".concat(A[0],",").concat(A[1],",").concat(A[2],",").concat(w*o,")")),N&&(e.strokeStyle="rgba(".concat(M[0],",").concat(M[1],",").concat(M[2],",").concat(E*o,")"),e.lineWidth=k,e.setLineDash))switch(R){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=k/4,e.setLineDash([]);break;default:e.setLineDash([])}if(P?(e.beginPath(),Vd(e,L,z,O,V,2)):S?(e.beginPath(),function(e,t,n,r,a){var i=Math.min(r,a)/2,o=t+r/2,s=n+a/2;e.beginPath(),e.arc(o,s,i,0,2*Math.PI),e.closePath()}(e,L,z,O,V)):(e.beginPath(),e.rect(L,z,O,V)),I&&e.fill(),N&&e.stroke(),N&&"double"===R){var F=k/2;e.beginPath(),P?Vd(e,L+F,z+F,O-2*F,V-2*F,2):e.rect(L+F,z+F,O-2*F,V-2*F),e.stroke()}e.fillStyle=B,e.strokeStyle=D,e.lineWidth=_,e.setLineDash&&e.setLineDash([])}var X=2*t.pstyle("text-outline-width").pfValue;if(X>0&&(e.lineWidth=X),"wrap"===t.pstyle("text-wrap").value){var j=pt(i,"labelWrapCachedLines",n),Y=pt(i,"labelLineHeight",n),q=p/2,W=this.getLabelJustification(t);switch("auto"===W||("left"===b?"left"===W?u+=-p:"center"===W&&(u+=-q):"center"===b?"left"===W?u+=-q:"right"===W&&(u+=q):"right"===b&&("center"===W?u+=q:"right"===W&&(u+=p))),x){case"top":case"center":case"bottom":c-=(j.length-1)*Y}for(var U=0;U0&&e.strokeText(j[U],u,c),e.fillText(j[U],u,c),c+=Y}else X>0&&e.strokeText(d,u,c),e.fillText(d,u,c);0!==h&&(e.rotate(-h),e.translate(-s,-l))}}};var Fd={drawNode:function(e,t,n){var r,a,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,d=t.position();if(Q(d.x)&&Q(d.y)&&(!s||t.visible())){var h,f,p=s?t.effectiveOpacity():1,v=l.usePaths(),g=!1,y=t.padding();r=t.width()+2*y,a=t.height()+2*y,n&&(f=n,e.translate(-f.x1,-f.y1));for(var m=t.pstyle("background-image").value,b=new Array(m.length),x=new Array(m.length),w=0,E=0;E0&&void 0!==arguments[0]?arguments[0]:S;l.eleFillStyle(e,t,n)},Y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:N;l.colorStrokeStyle(e,B[0],B[1],B[2],t)},q=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V;l.colorStrokeStyle(e,z[0],z[1],z[2],t)},W=function(e,t,n,r){var a,i=l.nodePathCache=l.nodePathCache||[],o=He("polygon"===n?n+","+r.join(","):n,""+t,""+e,""+X),s=i[o],u=!1;return null!=s?(a=s,u=!0,c.pathCache=a):(a=new Path2D,i[o]=c.pathCache=a),{path:a,cacheHit:u}},U=t.pstyle("shape").strValue,H=t.pstyle("shape-polygon-points").pfValue;if(v){e.translate(d.x,d.y);var K=W(r,a,U,H);h=K.path,g=K.cacheHit}var G=function(){if(!g){var n=d;v&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(h||e,n.x,n.y,r,a,X,c)}v?e.fill(h):e.fill()},Z=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=u.backgrounding,i=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasPie(t)&&(l.drawPie(e,t,i),n&&(v||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},J=function(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasStripe(t)&&(e.save(),v?e.clip(c.pathCache):(l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c),e.clip()),l.drawStripe(e,t,i),e.restore(),n&&(v||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},ee=function(){var t=(C>0?C:-C)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:p),n=C>0?0:255;0!==C&&(l.colorFillStyle(e,n,n,n,t),v?e.fill(h):e.fill())},te=function(){if(P>0){if(e.lineWidth=P,e.lineCap=A,e.lineJoin=_,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash(R),e.lineDashOffset=I;break;case"solid":case"double":e.setLineDash([])}if("center"!==M){if(e.save(),e.lineWidth*=2,"inside"===M)v?e.clip(h):e.clip();else{var t=new Path2D;t.rect(-r/2-P,-a/2-P,r+2*P,a+2*P),t.addPath(h),e.clip(t,"evenodd")}v?e.stroke(h):e.stroke(),e.restore()}else v?e.stroke(h):e.stroke();if("double"===D){e.lineWidth=P/3;var n=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",v?e.stroke(h):e.stroke(),e.globalCompositeOperation=n}e.setLineDash&&e.setLineDash([])}},ne=function(){if(L>0){if(e.lineWidth=L,e.lineCap="butt",e.setLineDash)switch(O){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}var n=d;v&&(n={x:0,y:0});var i=l.getNodeShape(t),o=P;"inside"===M&&(o=0),"outside"===M&&(o*=2);var s,u=(r+o+(L+F))/r,c=(a+o+(L+F))/a,h=r*u,f=a*c,p=l.nodeShapes[i].points;if(v)s=W(h,f,i,p).path;if("ellipse"===i)l.drawEllipsePath(s||e,n.x,n.y,h,f);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(i)){var g=0,y=0,m=0;"round-diamond"===i?g=1.4*(o+F+L):"round-heptagon"===i?(g=1.075*(o+F+L),m=-(o/2+F+L)/35):"round-hexagon"===i?g=1.12*(o+F+L):"round-pentagon"===i?(g=1.13*(o+F+L),m=-(o/2+F+L)/15):"round-tag"===i?(g=1.12*(o+F+L),y=.07*(o/2+L+F)):"round-triangle"===i&&(g=(o+F+L)*(Math.PI/2),m=-(o+F/2+L)/Math.PI),0!==g&&(h=r*(u=(r+g)/r),["round-hexagon","round-tag"].includes(i)||(f=a*(c=(a+g)/a)));for(var b=h/2,x=f/2,w=(X="auto"===X?In(h,f):X)+(o+L+F)/2,E=new Array(p.length/2),k=new Array(p.length/2),T=0;T0){if(r=r||n.position(),null==a||null==i){var d=n.padding();a=n.width()+2*d,i=n.height()+2*d}this.colorFillStyle(t,l[0],l[1],l[2],s),this.nodeShapes[u].draw(t,r.x,r.y,a+2*o,i+2*o,c),t.fill()}}}};Fd.drawNodeOverlay=Xd("overlay"),Fd.drawNodeUnderlay=Xd("underlay"),Fd.hasPie=function(e){return(e=e[0])._private.hasPie},Fd.hasStripe=function(e){return(e=e[0])._private.hasStripe},Fd.drawPie=function(e,t,n,r){t=t[0],r=r||t.position();var a,i=t.cy().style(),o=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=r.x,c=r.y,d=t.width(),h=t.height(),f=Math.min(d,h)/2,p=0;if(this.usePaths()&&(u=0,c=0),"%"===o.units?f*=o.pfValue:void 0!==o.pfValue&&(f=o.pfValue/2),"%"===s.units?a=f*s.pfValue:void 0!==s.pfValue&&(a=s.pfValue/2),!(a>=f))for(var v=1;v<=i.pieBackgroundN;v++){var g=t.pstyle("pie-"+v+"-background-size").value,y=t.pstyle("pie-"+v+"-background-color").value,m=t.pstyle("pie-"+v+"-background-opacity").value*n,b=g/100;b+p>1&&(b=1-p);var x=1.5*Math.PI+2*Math.PI*p,w=(x+=l)+2*Math.PI*b;0===g||p>=1||p+b>1||(0===a?(e.beginPath(),e.moveTo(u,c),e.arc(u,c,f,x,w),e.closePath()):(e.beginPath(),e.arc(u,c,f,x,w),e.arc(u,c,a,w,x,!0),e.closePath()),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),p+=b)}},Fd.drawStripe=function(e,t,n,r){t=t[0],r=r||t.position();var a=t.cy().style(),i=r.x,o=r.y,s=t.width(),l=t.height(),u=0,c=this.usePaths();e.save();var d=t.pstyle("stripe-direction").value,h=t.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":e.rotate(-Math.PI/2)}var f=s,p=l;"%"===h.units?(f*=h.pfValue,p*=h.pfValue):void 0!==h.pfValue&&(f=h.pfValue,p=h.pfValue),c&&(i=0,o=0),o-=f/2,i-=p/2;for(var v=1;v<=a.stripeBackgroundN;v++){var g=t.pstyle("stripe-"+v+"-background-size").value,y=t.pstyle("stripe-"+v+"-background-color").value,m=t.pstyle("stripe-"+v+"-background-opacity").value*n,b=g/100;b+u>1&&(b=1-u),0===g||u>=1||u+b>1||(e.beginPath(),e.rect(i,o+p*u,f,p*b),e.closePath(),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),u+=b)}e.restore()};var jd,Yd={};function qd(e,t,n){var r=e.createShader(t);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(r));return r}function Wd(e,t,n){void 0===n&&(n=t);var r=e.makeOffscreenCanvas(t,n),a=r.context=r.getContext("2d");return r.clear=function(){return a.clearRect(0,0,r.width,r.height)},r.clear(),r}function Ud(e){var t=e.pixelRatio,n=e.cy.zoom(),r=e.cy.pan();return{zoom:n*t,pan:{x:r.x*t,y:r.y*t}}}function Hd(e){return"solid"===e.pstyle("background-fill").value&&("none"===e.pstyle("background-image").strValue&&(0===e.pstyle("border-width").value||(0===e.pstyle("border-opacity").value||"solid"===e.pstyle("border-style").value)))}function Kd(e,t){if(e.length!==t.length)return!1;for(var n=0;n>8&255)/255,n[2]=(e>>16&255)/255,n[3]=(e>>24&255)/255,n}function $d(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function Qd(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function Jd(e,t,n){switch(t){case e.FLOAT:return new Float32Array(n);case e.INT:return new Int32Array(n)}}function eh(e,t,n,r,a,i){switch(t){case e.FLOAT:return new Float32Array(n.buffer,i*r,a);case e.INT:return new Int32Array(n.buffer,i*r,a)}}function th(e,t,n,r){var a=l(Qd(e,n),3),i=a[0],o=a[1],s=a[2],u=Jd(e,o,t*i),c=i*s,d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,t*c,e.DYNAMIC_DRAW),e.enableVertexAttribArray(r),o===e.FLOAT?e.vertexAttribPointer(r,i,o,!1,c,0):o===e.INT&&e.vertexAttribIPointer(r,i,o,c,0),e.vertexAttribDivisor(r,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var h=new Array(t),f=0;ft.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!d&&(c[t.NODE]=!0,c[t.SELECT_BOX]=!0);var m=n.style(),b=n.zoom(),x=void 0!==o?o:b,w=n.pan(),E={x:w.x,y:w.y},k={zoom:b,pan:{x:w.x,y:w.y}},T=t.prevViewport;void 0===T||k.zoom!==T.zoom||k.pan.x!==T.pan.x||k.pan.y!==T.pan.y||v&&!p||(t.motionBlurPxRatio=1),s&&(E=s),x*=l,E.x*=l,E.y*=l;var C=t.getCachedZSortedEles();function P(e,n,r,a,i){var o=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",t.colorFillStyle(e,255,255,255,t.motionBlurTransparency),e.fillRect(n,r,a,i),e.globalCompositeOperation=o}function S(e,n){var i,l,c,d;t.clearingMotionBlur||e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]?(i=E,l=x,c=t.canvasWidth,d=t.canvasHeight):(i={x:w.x*f,y:w.y*f},l=b*f,c=t.canvasWidth*f,d=t.canvasHeight*f),e.setTransform(1,0,0,1,0,0),"motionBlur"===n?P(e,0,0,c,d):r||void 0!==n&&!n||e.clearRect(0,0,c,d),a||(e.translate(i.x,i.y),e.scale(l,l)),s&&e.translate(s.x,s.y),o&&e.scale(o,o)}if(d||(t.textureDrawLastFrame=!1),d){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=n.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var B=t.data.bufferContexts[t.TEXTURE_BUFFER];B.setTransform(1,0,0,1,0,0),B.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:B,drawOnlyNodeLayer:!0,forcedPxRatio:l*t.textureMult}),(k=t.textureCache.viewport={zoom:n.zoom(),pan:n.pan(),width:t.canvasWidth,height:t.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}c[t.DRAG]=!1,c[t.NODE]=!1;var D=u.contexts[t.NODE],_=t.textureCache.texture;k=t.textureCache.viewport;D.setTransform(1,0,0,1,0,0),h?P(D,0,0,k.width,k.height):D.clearRect(0,0,k.width,k.height);var A=m.core("outside-texture-bg-color").value,M=m.core("outside-texture-bg-opacity").value;t.colorFillStyle(D,A[0],A[1],A[2],M),D.fillRect(0,0,k.width,k.height);b=n.zoom();S(D,!1),D.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l),D.drawImage(_,k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l)}else t.textureOnViewport&&!r&&(t.textureCache=null);var R=n.extent(),I=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),N=t.hideEdgesOnViewport&&I,L=[];if(L[t.NODE]=!c[t.NODE]&&h&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,L[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),L[t.DRAG]=!c[t.DRAG]&&h&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,L[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),c[t.NODE]||a||i||L[t.NODE]){var z=h&&!L[t.NODE]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:u.contexts[t.NODE]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.nondrag,l,R):t.drawLayeredElements(D,C.nondrag,l,R),t.debug&&t.drawDebugPoints(D,C.nondrag),a||h||(c[t.NODE]=!1)}if(!i&&(c[t.DRAG]||a||L[t.DRAG])){z=h&&!L[t.DRAG]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:u.contexts[t.DRAG]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.drag,l,R):t.drawCachedElements(D,C.drag,l,R),t.debug&&t.drawDebugPoints(D,C.drag),a||h||(c[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,S),h&&1!==f){var O=u.contexts[t.NODE],V=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],F=u.contexts[t.DRAG],X=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],j=function(e,n,r){e.setTransform(1,0,0,1,0,0),r||!y?e.clearRect(0,0,t.canvasWidth,t.canvasHeight):P(e,0,0,t.canvasWidth,t.canvasHeight);var a=f;e.drawImage(n,0,0,t.canvasWidth*a,t.canvasHeight*a,0,0,t.canvasWidth,t.canvasHeight)};(c[t.NODE]||L[t.NODE])&&(j(O,V,L[t.NODE]),c[t.NODE]=!1),(c[t.DRAG]||L[t.DRAG])&&(j(F,X,L[t.DRAG]),c[t.DRAG]=!1)}t.prevViewport=k,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),h&&(t.motionBlurTimeout=setTimeout(function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!d,t.mbFrames=0,c[t.NODE]=!0,c[t.DRAG]=!0,t.redraw()},100)),r||n.emit("render")},Yd.drawSelectionRectangle=function(e,t){var n=this,r=n.cy,a=n.data,i=r.style(),o=e.drawOnlyNodeLayer,s=e.drawAllLayers,l=a.canvasNeedsRedraw,u=e.forcedContext;if(n.showFps||!o&&l[n.SELECT_BOX]&&!s){var c=u||a.contexts[n.SELECT_BOX];if(t(c),1==n.selection[4]&&(n.hoverData.selecting||n.touchData.selecting)){var d=n.cy.zoom(),h=i.core("selection-box-border-width").value/d;c.lineWidth=h,c.fillStyle="rgba("+i.core("selection-box-color").value[0]+","+i.core("selection-box-color").value[1]+","+i.core("selection-box-color").value[2]+","+i.core("selection-box-opacity").value+")",c.fillRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]),h>0&&(c.strokeStyle="rgba("+i.core("selection-box-border-color").value[0]+","+i.core("selection-box-border-color").value[1]+","+i.core("selection-box-border-color").value[2]+","+i.core("selection-box-opacity").value+")",c.strokeRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]))}if(a.bgActivePosistion&&!n.hoverData.selecting){d=n.cy.zoom();var f=a.bgActivePosistion;c.fillStyle="rgba("+i.core("active-bg-color").value[0]+","+i.core("active-bg-color").value[1]+","+i.core("active-bg-color").value[2]+","+i.core("active-bg-opacity").value+")",c.beginPath(),c.arc(f.x,f.y,i.core("active-bg-size").pfValue/d,0,2*Math.PI),c.fill()}var p=n.lastRedrawTime;if(n.showFps&&p){p=Math.round(p);var v=Math.round(1e3/p),g="1 frame = "+p+" ms = "+v+" fps";if(c.setTransform(1,0,0,1,0,0),c.fillStyle="rgba(255, 0, 0, 0.75)",c.strokeStyle="rgba(255, 0, 0, 0.75)",c.font="30px Arial",!jd){var y=c.measureText(g);jd=y.actualBoundingBoxAscent}c.fillText(g,0,jd);c.strokeRect(0,jd+10,250,20),c.fillRect(0,jd+10,250*Math.min(v/60,1),20)}s||(l[n.SELECT_BOX]=!1)}};var nh="undefined"!=typeof Float32Array?Float32Array:Array;function rh(){var e=new nh(9);return nh!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function ah(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function ih(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=n[0],f=n[1];return e[0]=r,e[1]=a,e[2]=i,e[3]=o,e[4]=s,e[5]=l,e[6]=h*r+f*o+u,e[7]=h*a+f*s+c,e[8]=h*i+f*l+d,e}function oh(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=Math.sin(n),f=Math.cos(n);return e[0]=f*r+h*o,e[1]=f*a+h*s,e[2]=f*i+h*l,e[3]=f*o-h*r,e[4]=f*s-h*a,e[5]=f*l-h*i,e[6]=u,e[7]=c,e[8]=d,e}function sh(e,t,n){var r=n[0],a=n[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=a*t[3],e[4]=a*t[4],e[5]=a*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var lh=function(){return i(function e(t,n,r,i){a(this,e),this.debugID=Math.floor(1e4*Math.random()),this.r=t,this.texSize=n,this.texRows=r,this.texHeight=Math.floor(n/r),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(t,n,n),this.scratch=i(t,n,this.texHeight,"scratch")},[{key:"lock",value:function(){this.locked=!0}},{key:"getKeys",value:function(){return new Set(this.keyToLocation.keys())}},{key:"getScale",value:function(e){var t=e.w,n=e.h,r=this.texHeight,a=this.texSize,i=r/n,o=t*i,s=n*i;return o>a&&(o=t*(i=a/t),s=n*i),{scale:i,texW:o,texH:s}}},{key:"draw",value:function(e,t,n){var r=this;if(this.locked)throw new Error("can't draw, atlas is locked");var a=this.texSize,i=this.texRows,o=this.texHeight,s=this.getScale(t),l=s.scale,u=s.texW,c=s.texH,d=function(e,r){if(n&&r){var a=r.context,i=e.x,s=e.row,u=i,c=o*s;a.save(),a.translate(u,c),a.scale(l,l),n(a,t),a.restore()}},h=[null,null],f=function(){d(r.freePointer,r.canvas),h[0]={x:r.freePointer.x,y:r.freePointer.row*o,w:u,h:c},h[1]={x:r.freePointer.x+u,y:r.freePointer.row*o,w:0,h:c},r.freePointer.x+=u,r.freePointer.x==a&&(r.freePointer.x=0,r.freePointer.row++)},p=function(){r.freePointer.x=0,r.freePointer.row++};if(this.freePointer.x+u<=a)f();else{if(this.freePointer.row>=i-1)return!1;this.freePointer.x===a?(p(),f()):this.enableWrapping?function(){var e=r.scratch,t=r.canvas;e.clear(),d({x:0,row:0},e);var n=a-r.freePointer.x,i=u-n,s=o,l=r.freePointer.x,f=r.freePointer.row*o,p=n;t.context.drawImage(e,0,0,p,s,l,f,p,s),h[0]={x:l,y:f,w:p,h:c};var v=n,g=(r.freePointer.row+1)*o,y=i;t&&t.context.drawImage(e,v,0,y,s,0,g,y,s),h[1]={x:0,y:g,w:y,h:c},r.freePointer.x=i,r.freePointer.row++}():(p(),f())}return this.keyToLocation.set(e,h),this.needsBuffer=!0,h}},{key:"getOffsets",value:function(e){return this.keyToLocation.get(e)}},{key:"isEmpty",value:function(){return 0===this.freePointer.x&&0===this.freePointer.row}},{key:"canFit",value:function(e){if(this.locked)return!1;var t=this.texSize,n=this.texRows,r=this.getScale(e).texW;return!(this.freePointer.x+r>t)||this.freePointer.row1&&void 0!==arguments[1]?arguments[1]:{},a=r.forceRedraw,i=void 0!==a&&a,s=r.filterEle,l=void 0===s?function(){return!0}:s,u=r.filterType,c=void 0===u?function(){return!0}:u,d=!1,h=!1,f=o(e);try{for(f.s();!(t=f.n()).done;){var p=t.value;if(l(p)){var v,g=o(this.renderTypes.values());try{var y=function(){var e=v.value,t=e.type;if(c(t)){var r=n.collections.get(e.collection),a=e.getKey(p),o=Array.isArray(a)?a:[a];if(i)o.forEach(function(e){return r.markKeyForGC(e)}),h=!0;else{var s=e.getID?e.getID(p):p.id(),l=n._key(t,s),u=n.typeAndIdToKey.get(l);void 0===u||Kd(o,u)||(d=!0,n.typeAndIdToKey.delete(l),u.forEach(function(e){return r.markKeyForGC(e)}))}}};for(g.s();!(v=g.n()).done;)y()}catch(m){g.e(m)}finally{g.f()}}}}catch(m){f.e(m)}finally{f.f()}return h&&(this.gc(),d=!1),d}},{key:"gc",value:function(){var e,t=o(this.collections.values());try{for(t.s();!(e=t.n()).done;){e.value.gc()}}catch(n){t.e(n)}finally{t.f()}}},{key:"getOrCreateAtlas",value:function(e,t,n,r){var a=this.renderTypes.get(t),i=this.collections.get(a.collection),o=!1,s=i.draw(r,n,function(t){a.drawClipped?(t.save(),t.beginPath(),t.rect(0,0,n.w,n.h),t.clip(),a.drawElement(t,e,n,!0,!0),t.restore()):a.drawElement(t,e,n,!0,!0),o=!0});if(o){var l=a.getID?a.getID(e):e.id(),u=this._key(t,l);this.typeAndIdToKey.has(u)?this.typeAndIdToKey.get(u).push(r):this.typeAndIdToKey.set(u,[r])}return s}},{key:"getAtlasInfo",value:function(e,t){var n=this,r=this.renderTypes.get(t),a=r.getKey(e);return(Array.isArray(a)?a:[a]).map(function(a){var i=r.getBoundingBox(e,a),o=n.getOrCreateAtlas(e,t,i,a),s=l(o.getOffsets(a),2),u=s[0];return{atlas:o,tex:u,tex1:u,tex2:s[1],bb:i}})}},{key:"getDebugInfo",value:function(){var e,t=[],n=o(this.collections);try{for(n.s();!(e=n.n()).done;){var r=l(e.value,2),a=r[0],i=r[1].getCounts(),s=i.keyCount,u=i.atlasCount;t.push({type:a,keyCount:s,atlasCount:u})}}catch(c){n.e(c)}finally{n.f()}return t}}])}(),dh=function(){return i(function e(t){a(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]},[{key:"getMaxAtlasesPerBatch",value:function(){return this.maxAtlasesPerBatch}},{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"getIndexArray",value:function(){return Array.from({length:this.maxAtlasesPerBatch},function(e,t){return t})}},{key:"startBatch",value:function(){this.batchAtlases=[]}},{key:"getAtlasCount",value:function(){return this.batchAtlases.length}},{key:"getAtlases",value:function(){return this.batchAtlases}},{key:"canAddToCurrentBatch",value:function(e){return this.batchAtlases.length!==this.maxAtlasesPerBatch||this.batchAtlases.includes(e)}},{key:"getAtlasIndexForBatch",value:function(e){var t=this.batchAtlases.indexOf(e);if(t<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(e),t=this.batchAtlases.length-1}return t}}])}(),hh={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},fh=1,ph=2,vh=function(){return i(function e(t,n,r){a(this,e),this.r=t,this.gl=n,this.maxInstances=r.webglBatchSize,this.atlasSize=r.webglTexSize,this.bgColor=r.bgColor,this.debug=r.webglDebug,this.batchDebugInfo=[],r.enableWrapping=!0,r.createTextureCanvas=Wd,this.atlasManager=new ch(t,r),this.batchManager=new dh(r),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(hh.SCREEN),this.pickingProgram=this._createShaderProgram(hh.PICKING),this.vao=this._createVAO()},[{key:"addAtlasCollection",value:function(e,t){this.atlasManager.addAtlasCollection(e,t)}},{key:"addTextureAtlasRenderType",value:function(e,t){this.atlasManager.addRenderType(e,t)}},{key:"addSimpleShapeRenderType",value:function(e,t){this.simpleShapeOptions.set(e,t)}},{key:"invalidate",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).type,n=this.atlasManager;return t?n.invalidate(e,{filterType:function(e){return e===t},forceRedraw:!0}):n.invalidate(e)}},{key:"gc",value:function(){this.atlasManager.gc()}},{key:"_createShaderProgram",value:function(e){var t=this.gl,n="#version 300 es\n precision highp float;\n\n uniform mat3 uPanZoomMatrix;\n uniform int uAtlasSize;\n \n // instanced\n in vec2 aPosition; // a vertex from the unit square\n \n in mat3 aTransform; // used to transform verticies, eg into a bounding box\n in int aVertType; // the type of thing we are rendering\n\n // the z-index that is output when using picking mode\n in vec4 aIndex;\n \n // For textures\n in int aAtlasId; // which shader unit/atlas to use\n in vec4 aTex; // x/y/w/h of texture in atlas\n\n // for edges\n in vec4 aPointAPointB;\n in vec4 aPointCPointD;\n in vec2 aLineWidth; // also used for node border width\n\n // simple shapes\n in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]\n in vec4 aColor; // also used for edges\n in vec4 aBorderColor; // aLineWidth is used for border width\n\n // output values passed to the fragment shader\n out vec2 vTexCoord;\n out vec4 vColor;\n out vec2 vPosition;\n // flat values are not interpolated\n flat out int vAtlasId; \n flat out int vVertType;\n flat out vec2 vTopRight;\n flat out vec2 vBotLeft;\n flat out vec4 vCornerRadius;\n flat out vec4 vBorderColor;\n flat out vec2 vBorderWidth;\n flat out vec4 vIndex;\n \n void main(void) {\n int vid = gl_VertexID;\n vec2 position = aPosition; // TODO make this a vec3, simplifies some code below\n\n if(aVertType == ".concat(0,") {\n float texX = aTex.x; // texture coordinates\n float texY = aTex.y;\n float texW = aTex.z;\n float texH = aTex.w;\n\n if(vid == 1 || vid == 2 || vid == 4) {\n texX += texW;\n }\n if(vid == 2 || vid == 4 || vid == 5) {\n texY += texH;\n }\n\n float d = float(uAtlasSize);\n vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(4," || aVertType == ").concat(7," \n || aVertType == ").concat(5," || aVertType == ").concat(6,") { // simple shapes\n\n // the bounding box is needed by the fragment shader\n vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat\n vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat\n vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated\n\n // calculations are done in the fragment shader, just pass these along\n vColor = aColor;\n vCornerRadius = aCornerRadius;\n vBorderColor = aBorderColor;\n vBorderWidth = aLineWidth;\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(1,") {\n vec2 source = aPointAPointB.xy;\n vec2 target = aPointAPointB.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n // stretch the unit square into a long skinny rectangle\n vec2 xBasis = target - source;\n vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\n vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;\n\n gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\n vColor = aColor;\n } \n else if(aVertType == ").concat(2,") {\n vec2 pointA = aPointAPointB.xy;\n vec2 pointB = aPointAPointB.zw;\n vec2 pointC = aPointCPointD.xy;\n vec2 pointD = aPointCPointD.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 p0, p1, p2, pos;\n if(position.x == 0.0) { // The left side of the unit square\n p0 = pointA;\n p1 = pointB;\n p2 = pointC;\n pos = position;\n } else { // The right side of the unit square, use same approach but flip the geometry upside down\n p0 = pointD;\n p1 = pointC;\n p2 = pointB;\n pos = vec2(0.0, -position.y);\n }\n\n vec2 p01 = p1 - p0;\n vec2 p12 = p2 - p1;\n vec2 p21 = p1 - p2;\n\n // Find the normal vector.\n vec2 tangent = normalize(normalize(p12) + normalize(p01));\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n // Find the vector perpendicular to p0 -> p1.\n vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\n\n // Determine the bend direction.\n float sigma = sign(dot(p01 + p21, normal));\n float width = aLineWidth[0];\n\n if(sign(pos.y) == -sigma) {\n // This is an intersecting vertex. Adjust the position so that there's no overlap.\n vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n } else {\n // This is a non-intersecting vertex. Treat it like a mitre join.\n vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n }\n\n vColor = aColor;\n } \n else if(aVertType == ").concat(3," && vid < 3) {\n // massage the first triangle into an edge arrow\n if(vid == 0)\n position = vec2(-0.15, -0.3);\n if(vid == 1)\n position = vec2( 0.0, 0.0);\n if(vid == 2)\n position = vec2( 0.15, -0.3);\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n vColor = aColor;\n }\n else {\n gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\n }\n\n vAtlasId = aAtlasId;\n vVertType = aVertType;\n vIndex = aIndex;\n }\n "),r=this.batchManager.getIndexArray(),a="#version 300 es\n precision highp float;\n\n // declare texture unit for each texture atlas in the batch\n ".concat(r.map(function(e){return"uniform sampler2D uTexture".concat(e,";")}).join("\n\t"),"\n\n uniform vec4 uBGColor;\n uniform float uZoom;\n\n in vec2 vTexCoord;\n in vec4 vColor;\n in vec2 vPosition; // model coordinates\n\n flat in int vAtlasId;\n flat in vec4 vIndex;\n flat in int vVertType;\n flat in vec2 vTopRight;\n flat in vec2 vBotLeft;\n flat in vec4 vCornerRadius;\n flat in vec4 vBorderColor;\n flat in vec2 vBorderWidth;\n\n out vec4 outColor;\n\n ").concat("\n float circleSD(vec2 p, float r) {\n return distance(vec2(0), p) - r; // signed distance\n }\n","\n ").concat("\n float rectangleSD(vec2 p, vec2 b) {\n vec2 d = abs(p)-b;\n return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);\n }\n","\n ").concat("\n float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {\n cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;\n cr.x = (p.y > 0.0) ? cr.x : cr.y;\n vec2 q = abs(p) - b + cr.x;\n return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;\n }\n","\n ").concat("\n float ellipseSD(vec2 p, vec2 ab) {\n p = abs( p ); // symmetry\n\n // find root with Newton solver\n vec2 q = ab*(p-ab);\n float w = (q.x1.0) ? d : -d;\n }\n","\n\n vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha\n return vec4( \n top.rgb + (bot.rgb * (1.0 - top.a)),\n top.a + (bot.a * (1.0 - top.a)) \n );\n }\n\n vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance\n // scale to the zoom level so that borders don't look blurry when zoomed in\n // note 1.5 is an aribitrary value chosen because it looks good\n return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); \n }\n\n void main(void) {\n if(vVertType == ").concat(0,") {\n // look up the texel from the texture unit\n ").concat(r.map(function(e){return"if(vAtlasId == ".concat(e,") outColor = texture(uTexture").concat(e,", vTexCoord);")}).join("\n\telse "),"\n } \n else if(vVertType == ").concat(3,") {\n // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';\n outColor = blend(vColor, uBGColor);\n outColor.a = 1.0; // make opaque, masks out line under arrow\n }\n else if(vVertType == ").concat(4," && vBorderWidth == vec2(0.0)) { // simple rectangle with no border\n outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done\n }\n else if(vVertType == ").concat(4," || vVertType == ").concat(7," \n || vVertType == ").concat(5," || vVertType == ").concat(6,") { // use SDF\n\n float outerBorder = vBorderWidth[0];\n float innerBorder = vBorderWidth[1];\n float borderPadding = outerBorder * 2.0;\n float w = vTopRight.x - vBotLeft.x - borderPadding;\n float h = vTopRight.y - vBotLeft.y - borderPadding;\n vec2 b = vec2(w/2.0, h/2.0); // half width, half height\n vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center\n\n float d; // signed distance\n if(vVertType == ").concat(4,") {\n d = rectangleSD(p, b);\n } else if(vVertType == ").concat(7," && w == h) {\n d = circleSD(p, b.x); // faster than ellipse\n } else if(vVertType == ").concat(7,") {\n d = ellipseSD(p, b);\n } else {\n d = roundRectangleSD(p, b, vCornerRadius.wzyx);\n }\n\n // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling\n // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box\n if(d > 0.0) {\n if(d > outerBorder) {\n discard;\n } else {\n outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);\n }\n } else {\n if(d > innerBorder) {\n vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;\n vec4 innerBorderColor = blend(vBorderColor, vColor);\n outColor = distInterp(innerBorderColor, outerColor, d);\n } \n else {\n vec4 outerColor;\n if(innerBorder == 0.0 && outerBorder == 0.0) {\n outerColor = vec4(0);\n } else if(innerBorder == 0.0) {\n outerColor = vBorderColor;\n } else {\n outerColor = blend(vBorderColor, vColor);\n }\n outColor = distInterp(vColor, outerColor, d - innerBorder);\n }\n }\n }\n else {\n outColor = vColor;\n }\n\n ").concat(e.picking?"if(outColor.a == 0.0) discard;\n else outColor = vIndex;":"","\n }\n "),i=function(e,t,n){var r=qd(e,e.VERTEX_SHADER,t),a=qd(e,e.FRAGMENT_SHADER,n),i=e.createProgram();if(e.attachShader(i,r),e.attachShader(i,a),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))throw new Error("Could not initialize shaders");return i}(t,n,a);i.aPosition=t.getAttribLocation(i,"aPosition"),i.aIndex=t.getAttribLocation(i,"aIndex"),i.aVertType=t.getAttribLocation(i,"aVertType"),i.aTransform=t.getAttribLocation(i,"aTransform"),i.aAtlasId=t.getAttribLocation(i,"aAtlasId"),i.aTex=t.getAttribLocation(i,"aTex"),i.aPointAPointB=t.getAttribLocation(i,"aPointAPointB"),i.aPointCPointD=t.getAttribLocation(i,"aPointCPointD"),i.aLineWidth=t.getAttribLocation(i,"aLineWidth"),i.aColor=t.getAttribLocation(i,"aColor"),i.aCornerRadius=t.getAttribLocation(i,"aCornerRadius"),i.aBorderColor=t.getAttribLocation(i,"aBorderColor"),i.uPanZoomMatrix=t.getUniformLocation(i,"uPanZoomMatrix"),i.uAtlasSize=t.getUniformLocation(i,"uAtlasSize"),i.uBGColor=t.getUniformLocation(i,"uBGColor"),i.uZoom=t.getUniformLocation(i,"uZoom"),i.uTextures=[];for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:hh.SCREEN;this.panZoomMatrix=e,this.renderTarget=t,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:"startBatch",value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:"endFrame",value:function(){this.endBatch()}},{key:"_isVisible",value:function(e,t){return!!e.visible()&&(!t||!t.isVisible||t.isVisible(e))}},{key:"drawTexture",value:function(e,t,n){var r=this.atlasManager,a=this.batchManager,i=r.getRenderTypeOpts(n);if(this._isVisible(e,i)&&(!e.isEdge()||this._isValidEdge(e))){if(this.renderTarget.picking&&i.getTexPickingMode){var s=i.getTexPickingMode(e);if(s===fh)return;if(s==ph)return void this.drawPickingRectangle(e,t,n)}var u,c=o(r.getAtlasInfo(e,n));try{for(c.s();!(u=c.n()).done;){var d=u.value,h=d.atlas,f=d.tex1,p=d.tex2;a.canAddToCurrentBatch(h)||this.endBatch();for(var v=a.getAtlasIndexForBatch(h),g=0,y=[[f,!0],[p,!1]];g=this.maxInstances&&this.endBatch()}}}}catch(T){c.e(T)}finally{c.f()}}}},{key:"setTransformMatrix",value:function(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=0;if(n.shapeProps&&n.shapeProps.padding&&(i=e.pstyle(n.shapeProps.padding).pfValue),r){var o=r.bb,s=r.tex1,l=r.tex2,u=s.w/(s.w+l.w);a||(u=1-u);var c=this._getAdjustedBB(o,i,a,u);this._applyTransformMatrix(t,c,n,e)}else{var d=n.getBoundingBox(e),h=this._getAdjustedBB(d,i,!0,1);this._applyTransformMatrix(t,h,n,e)}}},{key:"_applyTransformMatrix",value:function(e,t,n,r){var a,i;ah(e);var o=n.getRotation?n.getRotation(r):0;if(0!==o){var s=n.getRotationPoint(r);ih(e,e,[s.x,s.y]),oh(e,e,o);var l=n.getRotationOffset(r);a=l.x+(t.xOffset||0),i=l.y+(t.yOffset||0)}else a=t.x1,i=t.y1;ih(e,e,[a,i]),sh(e,e,[t.w,t.h])}},{key:"_getAdjustedBB",value:function(e,t,n,r){var a=e.x1,i=e.y1,o=e.w,s=e.h;t&&(a-=t,i-=t,o+=2*t,s+=2*t);var l=0,u=o*r;return n&&r<1?o=u:!n&&r<1&&(a+=l=o-u,o=u),{x1:a,y1:i,w:o,h:s,xOffset:l,yOffset:e.yOffset}}},{key:"drawPickingRectangle",value:function(e,t,n){var r=this.atlasManager.getRenderTypeOpts(n),a=this.instanceCount;this.vertTypeBuffer.getView(a)[0]=4,Zd(t,this.indexBuffer.getView(a)),Gd([0,0,0],1,this.colorBuffer.getView(a));var i=this.transformBuffer.getMatrixView(a);this.setTransformMatrix(e,i,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:"drawNode",value:function(e,t,n){var r=this.simpleShapeOptions.get(n);if(this._isVisible(e,r)){var a=r.shapeProps,i=this._getVertTypeForShape(e,a.shape);if(void 0===i||r.isSimple&&!r.isSimple(e))this.drawTexture(e,t,n);else{var o=this.instanceCount;if(this.vertTypeBuffer.getView(o)[0]=i,5===i||6===i){var s=r.getBoundingBox(e),l=this._getCornerRadius(e,a.radius,s),u=this.cornerRadiusBuffer.getView(o);u[0]=l,u[1]=l,u[2]=l,u[3]=l,6===i&&(u[0]=0,u[2]=0)}Zd(t,this.indexBuffer.getView(o)),Gd(e.pstyle(a.color).value,e.pstyle(a.opacity).value,this.colorBuffer.getView(o));var c=this.lineWidthBuffer.getView(o);if(c[0]=0,c[1]=0,a.border){var d=e.pstyle("border-width").value;if(d>0){Gd(e.pstyle("border-color").value,e.pstyle("border-opacity").value,this.borderColorBuffer.getView(o));var h=e.pstyle("border-position").value;if("inside"===h)c[0]=0,c[1]=-d;else if("outside"===h)c[0]=d,c[1]=0;else{var f=d/2;c[0]=f,c[1]=-f}}}var p=this.transformBuffer.getMatrixView(o);this.setTransformMatrix(e,p,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"_getVertTypeForShape",value:function(e,t){switch(e.pstyle(t).value){case"rectangle":return 4;case"ellipse":return 7;case"roundrectangle":case"round-rectangle":return 5;case"bottom-round-rectangle":return 6;default:return}}},{key:"_getCornerRadius",value:function(e,t,n){var r=n.w,a=n.h;if("auto"===e.pstyle(t).value)return Rn(r,a);var i=e.pstyle(t).pfValue,o=r/2,s=a/2;return Math.min(i,s,o)}},{key:"drawEdgeArrow",value:function(e,t,n){if(e.visible()){var r,a,i,o=e._private.rscratch;if("source"===n?(r=o.arrowStartX,a=o.arrowStartY,i=o.srcArrowAngle):(r=o.arrowEndX,a=o.arrowEndY,i=o.tgtArrowAngle),!(isNaN(r)||null==r||isNaN(a)||null==a||isNaN(i)||null==i))if("none"!==e.pstyle(n+"-arrow-shape").value){var s=e.pstyle(n+"-arrow-color").value,l=e.pstyle("opacity").value*e.pstyle("line-opacity").value,u=e.pstyle("width").pfValue,c=e.pstyle("arrow-scale").value,d=this.r.getArrowWidth(u,c),h=this.instanceCount,f=this.transformBuffer.getMatrixView(h);ah(f),ih(f,f,[r,a]),sh(f,f,[d,d]),oh(f,f,i),this.vertTypeBuffer.getView(h)[0]=3,Zd(t,this.indexBuffer.getView(h)),Gd(s,l,this.colorBuffer.getView(h)),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"drawEdgeLine",value:function(e,t){if(e.visible()){var n=this._getEdgePoints(e);if(n){var r=e.pstyle("opacity").value,a=e.pstyle("line-opacity").value,i=e.pstyle("width").pfValue,o=e.pstyle("line-color").value,s=r*a;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),4==n.length){var l=this.instanceCount;this.vertTypeBuffer.getView(l)[0]=1,Zd(t,this.indexBuffer.getView(l)),Gd(o,s,this.colorBuffer.getView(l)),this.lineWidthBuffer.getView(l)[0]=i;var u=this.pointAPointBBuffer.getView(l);u[0]=n[0],u[1]=n[1],u[2]=n[2],u[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var c=0;c=this.maxInstances&&this.endBatch()}}}}},{key:"_isValidEdge",value:function(e){var t=e._private.rscratch;return!t.badLine&&null!=t.allpts&&!isNaN(t.allpts[0])}},{key:"_getEdgePoints",value:function(e){var t=e._private.rscratch;if(this._isValidEdge(e)){var n=t.allpts;if(4==n.length)return n;var r=this._getNumSegments(e);return this._getCurveSegmentPoints(n,r)}}},{key:"_getNumSegments",value:function(e){return Math.min(Math.max(15,5),this.maxInstances)}},{key:"_getCurveSegmentPoints",value:function(e,t){if(4==e.length)return e;for(var n=Array(2*(t+1)),r=0;r<=t;r++)if(0==r)n[0]=e[0],n[1]=e[1];else if(r==t)n[2*r]=e[e.length-2],n[2*r+1]=e[e.length-1];else{var a=r/t;this._setCurvePoint(e,a,n,2*r)}return n}},{key:"_setCurvePoint",value:function(e,t,n,r){if(!(e.length<=2)){for(var a=Array(e.length-2),i=0;i0}},u=function(e){return"yes"===e.pstyle("text-events").strValue?ph:fh},c=function(e){var t=e.position(),n=t.x,r=t.y,a=e.outerWidth(),i=e.outerHeight();return{w:a,h:i,x1:n-a/2,y1:r-i/2}};n.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),n.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),n.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),n.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:c,isSimple:Hd,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),n.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:c,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),n.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:c,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),n.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:u,getKey:mh(t.getLabelKey,null),getBoundingBox:bh(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:a(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:i("label")}),n.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:u,getKey:mh(t.getSourceLabelKey,"source"),getBoundingBox:bh(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:a("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:i("source-label")}),n.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:u,getKey:mh(t.getTargetLabelKey,"target"),getBoundingBox:bh(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:a("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:i("target-label")});var d=Me(function(){console.log("garbage collect flag set"),n.data.gc=!0},1e4);n.onUpdateEleCalcs(function(e,t){var r=!1;t&&t.length>0&&(r|=n.drawing.invalidate(t)),r&&d()}),function(e){var t=e.render;e.render=function(n){n=n||{};var r=e.cy;e.webgl&&(r.zoom()>hd?(!function(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}(e),t.call(e,n)):(!function(e){var t=function(t){t.save(),t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.canvasWidth,e.canvasHeight),t.restore()};t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}(e),Eh(e,n,hh.SCREEN)))};var n=e.matchCanvasSize;e.matchCanvasSize=function(t){n.call(e,t),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0},e.findNearestElements=function(t,n,r,a){return function(e,t,n){var r,a,i,s=function(e,t,n){var r,a,i,o,s=Ud(e),u=s.pan,c=s.zoom,d=function(e,t,n,r,a){var i=r*n+t.x,o=a*n+t.y;return[i,o=Math.round(e.canvasHeight-o)]}(e,u,c,t,n),h=l(d,2),f=h[0],p=h[1],v=6;if(r=f-v/2,a=p-v/2,o=v,0===(i=v)||0===o)return[];var g=e.data.contexts[e.WEBGL];g.bindFramebuffer(g.FRAMEBUFFER,e.pickingFrameBuffer),e.pickingFrameBuffer.needsDraw&&(g.viewport(0,0,g.canvas.width,g.canvas.height),Eh(e,null,hh.PICKING),e.pickingFrameBuffer.needsDraw=!1);var y=i*o,m=new Uint8Array(4*y);g.readPixels(r,a,i,o,g.RGBA,g.UNSIGNED_BYTE,m),g.bindFramebuffer(g.FRAMEBUFFER,null);for(var b=new Set,x=0;x=0&&b.add(w)}return b}(e,t,n),u=e.getCachedZSortedEles(),c=o(s);try{for(c.s();!(i=c.n()).done;){var d=u[i.value];if(!r&&d.isNode()&&(r=d),!a&&d.isEdge()&&(a=d),r&&a)break}}catch(h){c.e(h)}finally{c.f()}return[r,a].filter(Boolean)}(e,t,n)};var r=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){r.call(e),e.pickingFrameBuffer.needsDraw=!0};var a=e.notify;e.notify=function(t,n){a.call(e,t,n),"viewport"===t||"bounds"===t?e.pickingFrameBuffer.needsDraw=!0:"background"===t&&e.drawing.invalidate(n,{type:"node-body"})}}(n)};var mh=function(e,t){return function(n){var r=e(n),a=yh(n,t);return a.length>1?a.map(function(e,t){return"".concat(r,"_").concat(t)}):r}},bh=function(e,t){return function(n,r){var a=e(n);if("string"==typeof r){var i=r.indexOf("_");if(i>0){var o=Number(r.substring(i+1)),s=yh(n,t),l=a.h/s.length,u=l*o,c=a.y1+u;return{x1:a.x1,w:a.w,y1:c,h:l,yOffset:u}}}return a}};function xh(e,t){var n=e.canvasWidth,r=e.canvasHeight,a=Ud(e),i=a.pan,o=a.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,n,r),t.translate(i.x,i.y),t.scale(o,o)}function wh(e,t,n){var r=e.drawing;t+=1,n.isNode()?(r.drawNode(n,t,"node-underlay"),r.drawNode(n,t,"node-body"),r.drawTexture(n,t,"label"),r.drawNode(n,t,"node-overlay")):(r.drawEdgeLine(n,t),r.drawEdgeArrow(n,t,"source"),r.drawEdgeArrow(n,t,"target"),r.drawTexture(n,t,"label"),r.drawTexture(n,t,"edge-source-label"),r.drawTexture(n,t,"edge-target-label"))}function Eh(e,t,n){var r;e.webglDebug&&(r=performance.now());var a=e.drawing,i=0;if(n.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&function(e,t){e.drawSelectionRectangle(t,function(t){return xh(e,t)})}(e,t),e.data.canvasNeedsRedraw[e.NODE]||n.picking){var s=e.data.contexts[e.WEBGL];n.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=function(e){var t=e.canvasWidth,n=e.canvasHeight,r=Ud(e),a=r.pan,i=r.zoom,o=rh();ih(o,o,[a.x,a.y]),sh(o,o,[i,i]);var s=rh();!function(e,t,n){e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/n,e[5]=0,e[6]=-1,e[7]=1,e[8]=1}(s,t,n);var l,u,c,d,h,f,p,v,g,y,m,b,x,w,E,k,T,C,P,S,B,D=rh();return l=D,c=o,d=(u=s)[0],h=u[1],f=u[2],p=u[3],v=u[4],g=u[5],y=u[6],m=u[7],b=u[8],x=c[0],w=c[1],E=c[2],k=c[3],T=c[4],C=c[5],P=c[6],S=c[7],B=c[8],l[0]=x*d+w*p+E*y,l[1]=x*h+w*v+E*m,l[2]=x*f+w*g+E*b,l[3]=k*d+T*p+C*y,l[4]=k*h+T*v+C*m,l[5]=k*f+T*g+C*b,l[6]=P*d+S*p+B*y,l[7]=P*h+S*v+B*m,l[8]=P*f+S*g+B*b,D}(e),u=e.getCachedZSortedEles();if(i=u.length,a.startFrame(l,n),n.screen){for(var c=0;c0&&i>0){h.clearRect(0,0,a,i),h.globalCompositeOperation="source-over";var f=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var p=t.pan(),v={x:p.x*l,y:p.y*l};l*=t.zoom(),h.translate(v.x,v.y),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(-v.x,-v.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,a,i),h.fill())}return d},_h.png=function(e){return Mh(e,this.bufferCanvasImage(e),"image/png")},_h.jpg=function(e){return Mh(e,this.bufferCanvasImage(e),"image/jpeg")};var Rh={nodeShapeImpl:function(e,t,n,r,a,i,o,s){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,a,i);case"polygon":return this.drawPolygonPath(t,n,r,a,i,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,a,i,o,s);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,a,i,s);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,a,i,o,s);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,a,i,s);case"barrel":return this.drawBarrelPath(t,n,r,a,i)}}},Ih=Lh,Nh=Lh.prototype;function Lh(e){var t=this,n=t.cy.window().document;e.webgl&&(Nh.CANVAS_LAYERS=t.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),t.data={canvases:new Array(Nh.CANVAS_LAYERS),contexts:new Array(Nh.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Nh.CANVAS_LAYERS),bufferCanvases:new Array(Nh.BUFFER_COUNT),bufferContexts:new Array(Nh.CANVAS_LAYERS)};var r="-webkit-tap-highlight-color",a="rgba(0,0,0,0)";t.data.canvasContainer=n.createElement("div");var i=t.data.canvasContainer.style;t.data.canvasContainer.style[r]=a,i.position="relative",i.zIndex="0",i.overflow="hidden";var o=e.cy.container();o.appendChild(t.data.canvasContainer),o.style[r]=a;var s={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};p&&p.userAgent.match(/msie|trident|edge/i)&&(s["-ms-touch-action"]="none",s["touch-action"]="none");for(var l=0;l{e.d(n,{diagram:()=>ct});var i=e(7633),s=e(797),r=e(451);function o(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e>i||void 0===e&&i>=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e>s||void 0===e&&s>=s)&&(e=s)}return e}function c(t){return t.target.depth}function l(t,n){return t.sourceLinks.length?t.depth:n-1}function a(t,n){let e=0;if(void 0===n)for(let i of t)(i=+i)&&(e+=i);else{let i=-1;for(let s of t)(s=+n(s,++i,t))&&(e+=s)}return e}function h(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e=s)&&(e=s)}return e}function u(t){return function(){return t}}function f(t,n){return d(t.source,n.source)||t.index-n.index}function y(t,n){return d(t.target,n.target)||t.index-n.index}function d(t,n){return t.y0-n.y0}function p(t){return t.value}function g(t){return t.index}function _(t){return t.nodes}function k(t){return t.links}function x(t,n){const e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function m({nodes:t}){for(const n of t){let t=n.y0,e=t;for(const i of n.sourceLinks)i.y0=t+i.width/2,t+=i.width;for(const i of n.targetLinks)i.y1=e+i.width/2,e+=i.width}}function v(){let t,n,e,i=0,s=0,r=1,c=1,v=24,b=8,w=g,L=l,S=_,E=k,K=6;function A(){const l={nodes:S.apply(null,arguments),links:E.apply(null,arguments)};return function({nodes:t,links:n}){for(const[e,s]of t.entries())s.index=e,s.sourceLinks=[],s.targetLinks=[];const i=new Map(t.map((n,e)=>[w(n,e,t),n]));for(const[e,s]of n.entries()){s.index=e;let{source:t,target:n}=s;"object"!=typeof t&&(t=s.source=x(i,t)),"object"!=typeof n&&(n=s.target=x(i,n)),t.sourceLinks.push(s),n.targetLinks.push(s)}if(null!=e)for(const{sourceLinks:s,targetLinks:r}of t)s.sort(e),r.sort(e)}(l),function({nodes:t}){for(const n of t)n.value=void 0===n.fixedValue?Math.max(a(n.sourceLinks,p),a(n.targetLinks,p)):n.fixedValue}(l),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.depth=s;for(const{target:n}of t.sourceLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(l),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.height=s;for(const{source:n}of t.targetLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(l),function(e){const l=function({nodes:t}){const e=h(t,t=>t.depth)+1,s=(r-i-v)/(e-1),o=new Array(e);for(const n of t){const t=Math.max(0,Math.min(e-1,Math.floor(L.call(null,n,e))));n.layer=t,n.x0=i+t*s,n.x1=n.x0+v,o[t]?o[t].push(n):o[t]=[n]}if(n)for(const i of o)i.sort(n);return o}(e);t=Math.min(b,(c-s)/(h(l,t=>t.length)-1)),function(n){const e=o(n,n=>(c-s-(n.length-1)*t)/a(n,p));for(const i of n){let n=s;for(const s of i){s.y0=n,s.y1=n+s.value*e,n=s.y1+t;for(const t of s.sourceLinks)t.width=t.value*e}n=(c-n+t)/(i.length+1);for(let t=0;t0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,P(t)}void 0===n&&r.sort(d),T(r,i)}}function I(t,e,i){for(let s=t.length-2;s>=0;--s){const r=t[s];for(const t of r){let n=0,i=0;for(const{target:e,value:r}of t.sourceLinks){let s=r*(e.layer-t.layer);n+=$(t,e)*s,i+=s}if(!(i>0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,P(t)}void 0===n&&r.sort(d),T(r,i)}}function T(n,e){const i=n.length>>1,r=n[i];N(n,r.y0-t,i-1,e),D(n,r.y1+t,i+1,e),N(n,c,n.length-1,e),D(n,s,0,e)}function D(n,e,i,s){for(;i1e-6&&(r.y0+=o,r.y1+=o),e=r.y1+t}}function N(n,e,i,s){for(;i>=0;--i){const r=n[i],o=(r.y1-e)*s;o>1e-6&&(r.y0-=o,r.y1-=o),e=r.y0-t}}function P({sourceLinks:t,targetLinks:n}){if(void 0===e){for(const{source:{sourceLinks:t}}of n)t.sort(y);for(const{target:{targetLinks:n}}of t)n.sort(f)}}function C(t){if(void 0===e)for(const{sourceLinks:n,targetLinks:e}of t)n.sort(y),e.sort(f)}function O(n,e){let i=n.y0-(n.sourceLinks.length-1)*t/2;for(const{target:s,width:r}of n.sourceLinks){if(s===e)break;i+=r+t}for(const{source:t,width:s}of e.targetLinks){if(t===n)break;i-=s}return i}function $(n,e){let i=e.y0-(e.targetLinks.length-1)*t/2;for(const{source:s,width:r}of e.targetLinks){if(s===n)break;i+=r+t}for(const{target:t,width:s}of n.sourceLinks){if(t===e)break;i-=s}return i}return A.update=function(t){return m(t),t},A.nodeId=function(t){return arguments.length?(w="function"==typeof t?t:u(t),A):w},A.nodeAlign=function(t){return arguments.length?(L="function"==typeof t?t:u(t),A):L},A.nodeSort=function(t){return arguments.length?(n=t,A):n},A.nodeWidth=function(t){return arguments.length?(v=+t,A):v},A.nodePadding=function(n){return arguments.length?(b=t=+n,A):b},A.nodes=function(t){return arguments.length?(S="function"==typeof t?t:u(t),A):S},A.links=function(t){return arguments.length?(E="function"==typeof t?t:u(t),A):E},A.linkSort=function(t){return arguments.length?(e=t,A):e},A.size=function(t){return arguments.length?(i=s=0,r=+t[0],c=+t[1],A):[r-i,c-s]},A.extent=function(t){return arguments.length?(i=+t[0][0],r=+t[1][0],s=+t[0][1],c=+t[1][1],A):[[i,s],[r,c]]},A.iterations=function(t){return arguments.length?(K=+t,A):K},A}var b=Math.PI,w=2*b,L=1e-6,S=w-L;function E(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function K(){return new E}E.prototype=K.prototype={constructor:E,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,i){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(t,n,e,i,s,r){this._+="C"+ +t+","+ +n+","+ +e+","+ +i+","+(this._x1=+s)+","+(this._y1=+r)},arcTo:function(t,n,e,i,s){t=+t,n=+n,e=+e,i=+i,s=+s;var r=this._x1,o=this._y1,c=e-t,l=i-n,a=r-t,h=o-n,u=a*a+h*h;if(s<0)throw new Error("negative radius: "+s);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(u>L)if(Math.abs(h*c-l*a)>L&&s){var f=e-r,y=i-o,d=c*c+l*l,p=f*f+y*y,g=Math.sqrt(d),_=Math.sqrt(u),k=s*Math.tan((b-Math.acos((d+u-p)/(2*g*_)))/2),x=k/_,m=k/g;Math.abs(x-1)>L&&(this._+="L"+(t+x*a)+","+(n+x*h)),this._+="A"+s+","+s+",0,0,"+ +(h*f>a*y)+","+(this._x1=t+m*c)+","+(this._y1=n+m*l)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,i,s,r){t=+t,n=+n,r=!!r;var o=(e=+e)*Math.cos(i),c=e*Math.sin(i),l=t+o,a=n+c,h=1^r,u=r?i-s:s-i;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+l+","+a:(Math.abs(this._x1-l)>L||Math.abs(this._y1-a)>L)&&(this._+="L"+l+","+a),e&&(u<0&&(u=u%w+w),u>S?this._+="A"+e+","+e+",0,1,"+h+","+(t-o)+","+(n-c)+"A"+e+","+e+",0,1,"+h+","+(this._x1=l)+","+(this._y1=a):u>L&&(this._+="A"+e+","+e+",0,"+ +(u>=b)+","+h+","+(this._x1=t+e*Math.cos(s))+","+(this._y1=n+e*Math.sin(s))))},rect:function(t,n,e,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};const A=K;var M=Array.prototype.slice;function I(t){return function(){return t}}function T(t){return t[0]}function D(t){return t[1]}function N(t){return t.source}function P(t){return t.target}function C(t){var n=N,e=P,i=T,s=D,r=null;function o(){var o,c=M.call(arguments),l=n.apply(this,c),a=e.apply(this,c);if(r||(r=o=A()),t(r,+i.apply(this,(c[0]=l,c)),+s.apply(this,c),+i.apply(this,(c[0]=a,c)),+s.apply(this,c)),o)return r=null,o+""||null}return o.source=function(t){return arguments.length?(n=t,o):n},o.target=function(t){return arguments.length?(e=t,o):e},o.x=function(t){return arguments.length?(i="function"==typeof t?t:I(+t),o):i},o.y=function(t){return arguments.length?(s="function"==typeof t?t:I(+t),o):s},o.context=function(t){return arguments.length?(r=null==t?null:t,o):r},o}function O(t,n,e,i,s){t.moveTo(n,e),t.bezierCurveTo(n=(n+i)/2,e,n,s,i,s)}function $(t){return[t.source.x1,t.y0]}function j(t){return[t.target.x0,t.y1]}function z(){return C(O).source($).target(j)}var U=function(){var t=(0,s.K2)(function(t,n,e,i){for(e=e||{},i=t.length;i--;e[t[i]]=n);return e},"o"),n=[1,9],e=[1,10],i=[1,5,10,12],r={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:(0,s.K2)(function(t,n,e,i,s,r,o){var c=r.length-1;switch(s){case 7:const t=i.findOrCreateNode(r[c-4].trim().replaceAll('""','"')),n=i.findOrCreateNode(r[c-2].trim().replaceAll('""','"')),e=parseFloat(r[c].trim());i.addLink(t,n,e);break;case 8:case 9:case 11:this.$=r[c];break;case 10:this.$=r[c-1]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:e},{1:[2,6],7:11,10:[1,12]},t(e,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(i,[2,8]),t(i,[2,9]),{19:[1,16]},t(i,[2,11]),{1:[2,1]},{1:[2,5]},t(e,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:e},{15:18,16:7,17:8,18:n,20:e},{18:[1,19]},t(e,[2,3]),{12:[1,20]},t(i,[2,10]),{15:21,16:7,17:8,18:n,20:e},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:(0,s.K2)(function(t,n){if(!n.recoverable){var e=new Error(t);throw e.hash=n,e}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var n=this,e=[0],i=[],r=[null],o=[],c=this.table,l="",a=0,h=0,u=0,f=o.slice.call(arguments,1),y=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);y.setInput(t,d.yy),d.yy.lexer=y,d.yy.parser=this,void 0===y.yylloc&&(y.yylloc={});var g=y.yylloc;o.push(g);var _=y.options&&y.options.ranges;function k(){var t;return"number"!=typeof(t=i.pop()||y.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=n.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){e.length=e.length-2*t,r.length=r.length-t,o.length=o.length-t},"popStack"),(0,s.K2)(k,"lex");for(var x,m,v,b,w,L,S,E,K,A={};;){if(v=e[e.length-1],this.defaultActions[v]?b=this.defaultActions[v]:(null==x&&(x=k()),b=c[v]&&c[v][x]),void 0===b||!b.length||!b[0]){var M="";for(L in K=[],c[v])this.terminals_[L]&&L>2&&K.push("'"+this.terminals_[L]+"'");M=y.showPosition?"Parse error on line "+(a+1)+":\n"+y.showPosition()+"\nExpecting "+K.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==x?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(M,{text:y.match,token:this.terminals_[x]||x,line:y.yylineno,loc:g,expected:K})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+x);switch(b[0]){case 1:e.push(x),r.push(y.yytext),o.push(y.yylloc),e.push(b[1]),x=null,m?(x=m,m=null):(h=y.yyleng,l=y.yytext,a=y.yylineno,g=y.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[b[1]][1],A.$=r[r.length-S],A._$={first_line:o[o.length-(S||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(S||1)].first_column,last_column:o[o.length-1].last_column},_&&(A._$.range=[o[o.length-(S||1)].range[0],o[o.length-1].range[1]]),void 0!==(w=this.performAction.apply(A,[l,h,a,d.yy,b[1],r,o].concat(f))))return w;S&&(e=e.slice(0,-1*S*2),r=r.slice(0,-1*S),o=o.slice(0,-1*S)),e.push(this.productions_[b[1]][0]),r.push(A.$),o.push(A._$),E=c[e[e.length-2]][e[e.length-1]],e.push(E);break;case 3:return!0}}return!0},"parse")},o=function(){return{EOF:1,parseError:(0,s.K2)(function(t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)},"parseError"),setInput:(0,s.K2)(function(t,n){return this.yy=n||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var n=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===i.length?this.yylloc.first_column:0)+i[i.length-e.length].length-e[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),n=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+n+"^"},"showPosition"),test_match:(0,s.K2)(function(t,n){var e,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,n,e,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;rn[0].length)){if(n=e,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,s[r])))return t;if(this._backtrack){n=!1;continue}return!1}if(!this.options.flex)break}return n?!1!==(t=this.test_match(n,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)(function(t,n,e,i){switch(e){case 0:case 1:return this.pushState("csv"),4;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;case 6:return 20;case 7:return this.popState("escaped_text"),18;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}}}();function c(){this.yy={}}return r.lexer=o,(0,s.K2)(c,"Parser"),c.prototype=r,r.Parser=c,new c}();U.parser=U;var F=U,W=[],G=[],V=new Map,X=(0,s.K2)(()=>{W=[],G=[],V=new Map,(0,i.IU)()},"clear"),Y=class{constructor(t,n,e=0){this.source=t,this.target=n,this.value=e}static{(0,s.K2)(this,"SankeyLink")}},q=(0,s.K2)((t,n,e)=>{W.push(new Y(t,n,e))},"addLink"),Q=class{constructor(t){this.ID=t}static{(0,s.K2)(this,"SankeyNode")}},R=(0,s.K2)(t=>{t=i.Y2.sanitizeText(t,(0,i.D7)());let n=V.get(t);return void 0===n&&(n=new Q(t),V.set(t,n),G.push(n)),n},"findOrCreateNode"),B=(0,s.K2)(()=>G,"getNodes"),Z=(0,s.K2)(()=>W,"getLinks"),H=(0,s.K2)(()=>({nodes:G.map(t=>({id:t.ID})),links:W.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),J={nodesMap:V,getConfig:(0,s.K2)(()=>(0,i.D7)().sankey,"getConfig"),getNodes:B,getLinks:Z,getGraph:H,addLink:q,findOrCreateNode:R,getAccTitle:i.iN,setAccTitle:i.SV,getAccDescription:i.m7,setAccDescription:i.EI,getDiagramTitle:i.ab,setDiagramTitle:i.ke,clear:X},tt=class t{static{(0,s.K2)(this,"Uid")}static{this.count=0}static next(n){return new t(n+ ++t.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}},nt={left:function(t){return t.depth},right:function(t,n){return n-1-t.height},center:function(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?o(t.sourceLinks,c)-1:0},justify:l},et=(0,s.K2)(function(t,n,e,o){const{securityLevel:c,sankey:l}=(0,i.D7)(),a=i.ME.sankey;let h;"sandbox"===c&&(h=(0,r.Ltv)("#i"+n));const u="sandbox"===c?(0,r.Ltv)(h.nodes()[0].contentDocument.body):(0,r.Ltv)("body"),f="sandbox"===c?u.select(`[id="${n}"]`):(0,r.Ltv)(`[id="${n}"]`),y=l?.width??a.width,d=l?.height??a.width,p=l?.useMaxWidth??a.useMaxWidth,g=l?.nodeAlignment??a.nodeAlignment,_=l?.prefix??a.prefix,k=l?.suffix??a.suffix,x=l?.showValues??a.showValues,m=o.db.getGraph(),b=nt[g];v().nodeId(t=>t.id).nodeWidth(10).nodePadding(10+(x?15:0)).nodeAlign(b).extent([[0,0],[y,d]])(m);const w=(0,r.UMr)(r.zt);f.append("g").attr("class","nodes").selectAll(".node").data(m.nodes).join("g").attr("class","node").attr("id",t=>(t.uid=tt.next("node-")).id).attr("transform",function(t){return"translate("+t.x0+","+t.y0+")"}).attr("x",t=>t.x0).attr("y",t=>t.y0).append("rect").attr("height",t=>t.y1-t.y0).attr("width",t=>t.x1-t.x0).attr("fill",t=>w(t.id));const L=(0,s.K2)(({id:t,value:n})=>x?`${t}\n${_}${Math.round(100*n)/100}${k}`:t,"getText");f.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(m.nodes).join("text").attr("x",t=>t.x0(t.y1+t.y0)/2).attr("dy",(x?"0":"0.35")+"em").attr("text-anchor",t=>t.x0(t.uid=tt.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",t=>t.source.x1).attr("x2",t=>t.target.x0);t.append("stop").attr("offset","0%").attr("stop-color",t=>w(t.source.id)),t.append("stop").attr("offset","100%").attr("stop-color",t=>w(t.target.id))}let K;switch(E){case"gradient":K=(0,s.K2)(t=>t.uid,"coloring");break;case"source":K=(0,s.K2)(t=>w(t.source.id),"coloring");break;case"target":K=(0,s.K2)(t=>w(t.target.id),"coloring");break;default:K=E}S.append("path").attr("d",z()).attr("stroke",K).attr("stroke-width",t=>Math.max(1,t.width)),(0,i.ot)(void 0,f,0,p)},"draw"),it={draw:et},st=(0,s.K2)(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,"\n").trim(),"prepareTextForParsing"),rt=(0,s.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n }`,"getStyles"),ot=F.parse.bind(F);F.parse=t=>ot(st(t));var ct={styles:rt,parser:F,db:J,renderer:it}}}]); \ No newline at end of file diff --git a/developer/assets/js/1746.bdafce68.js b/developer/assets/js/1746.bdafce68.js new file mode 100644 index 0000000..1a8065c --- /dev/null +++ b/developer/assets/js/1746.bdafce68.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[1746],{1746:(t,e,s)=>{s.d(e,{Lh:()=>T,NM:()=>g,_$:()=>p,tM:()=>b});var i=s(2501),n=s(9625),a=s(1152),r=s(45),u=s(3226),l=s(7633),o=s(797),c=s(451),h=function(){var t=(0,o.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,18],s=[1,19],i=[1,20],n=[1,41],a=[1,42],r=[1,26],u=[1,24],l=[1,25],c=[1,32],h=[1,33],p=[1,34],d=[1,45],A=[1,35],y=[1,36],C=[1,37],m=[1,38],g=[1,27],b=[1,28],E=[1,29],T=[1,30],k=[1,31],f=[1,44],D=[1,46],F=[1,43],B=[1,47],_=[1,9],S=[1,8,9],N=[1,58],L=[1,59],$=[1,60],x=[1,61],I=[1,62],O=[1,63],v=[1,64],w=[1,8,9,41],R=[1,76],P=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],K=[1,8,9,12,13,18,20,22,39,41,44,50,60,68,69,70,71,72,73,74,79,81,86,100,102,103],M=[13,60,86,100,102,103],G=[13,60,73,74,86,100,102,103],U=[13,60,68,69,70,71,72,86,100,102,103],Y=[1,100],z=[1,117],Q=[1,113],W=[1,109],X=[1,115],j=[1,110],q=[1,111],H=[1,112],V=[1,114],J=[1,116],Z=[22,48,60,61,82,86,87,88,89,90],tt=[1,8,9,39,41,44],et=[1,8,9,22],st=[1,145],it=[1,8,9,61],nt=[1,8,9,22,48,60,61,82,86,87,88,89,90],at={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,emptyBody:47,SPACE:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",48:"SPACE",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[43,2],[43,3],[47,0],[47,2],[47,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:(0,o.K2)(function(t,e,s,i,n,a,r){var u=a.length-1;switch(n){case 8:this.$=a[u-1];break;case 9:case 10:case 13:case 15:this.$=a[u];break;case 11:case 14:this.$=a[u-2]+"."+a[u];break;case 12:case 16:case 100:this.$=a[u-1]+a[u];break;case 17:case 18:this.$=a[u-1]+"~"+a[u]+"~";break;case 19:i.addRelation(a[u]);break;case 20:a[u-1].title=i.cleanupLabel(a[u]),i.addRelation(a[u-1]);break;case 31:this.$=a[u].trim(),i.setAccTitle(this.$);break;case 32:case 33:this.$=a[u].trim(),i.setAccDescription(this.$);break;case 34:i.addClassesToNamespace(a[u-3],a[u-1]);break;case 35:i.addClassesToNamespace(a[u-4],a[u-1]);break;case 36:this.$=a[u],i.addNamespace(a[u]);break;case 37:case 51:case 64:case 97:this.$=[a[u]];break;case 38:this.$=[a[u-1]];break;case 39:a[u].unshift(a[u-2]),this.$=a[u];break;case 41:i.setCssClass(a[u-2],a[u]);break;case 42:i.addMembers(a[u-3],a[u-1]);break;case 44:i.setCssClass(a[u-5],a[u-3]),i.addMembers(a[u-5],a[u-1]);break;case 45:this.$=a[u],i.addClass(a[u]);break;case 46:this.$=a[u-1],i.addClass(a[u-1]),i.setClassLabel(a[u-1],a[u]);break;case 50:i.addAnnotation(a[u],a[u-2]);break;case 52:a[u].push(a[u-1]),this.$=a[u];break;case 53:case 55:case 56:break;case 54:i.addMember(a[u-1],i.cleanupLabel(a[u]));break;case 57:this.$={id1:a[u-2],id2:a[u],relation:a[u-1],relationTitle1:"none",relationTitle2:"none"};break;case 58:this.$={id1:a[u-3],id2:a[u],relation:a[u-1],relationTitle1:a[u-2],relationTitle2:"none"};break;case 59:this.$={id1:a[u-3],id2:a[u],relation:a[u-2],relationTitle1:"none",relationTitle2:a[u-1]};break;case 60:this.$={id1:a[u-4],id2:a[u],relation:a[u-2],relationTitle1:a[u-3],relationTitle2:a[u-1]};break;case 61:i.addNote(a[u],a[u-1]);break;case 62:i.addNote(a[u]);break;case 63:this.$=a[u-2],i.defineClass(a[u-1],a[u]);break;case 65:this.$=a[u-2].concat([a[u]]);break;case 66:i.setDirection("TB");break;case 67:i.setDirection("BT");break;case 68:i.setDirection("RL");break;case 69:i.setDirection("LR");break;case 70:this.$={type1:a[u-2],type2:a[u],lineType:a[u-1]};break;case 71:this.$={type1:"none",type2:a[u],lineType:a[u-1]};break;case 72:this.$={type1:a[u-1],type2:"none",lineType:a[u]};break;case 73:this.$={type1:"none",type2:"none",lineType:a[u]};break;case 74:this.$=i.relationType.AGGREGATION;break;case 75:this.$=i.relationType.EXTENSION;break;case 76:this.$=i.relationType.COMPOSITION;break;case 77:this.$=i.relationType.DEPENDENCY;break;case 78:this.$=i.relationType.LOLLIPOP;break;case 79:this.$=i.lineType.LINE;break;case 80:this.$=i.lineType.DOTTED_LINE;break;case 81:case 87:this.$=a[u-2],i.setClickEvent(a[u-1],a[u]);break;case 82:case 88:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 83:this.$=a[u-2],i.setLink(a[u-1],a[u]);break;case 84:this.$=a[u-3],i.setLink(a[u-2],a[u-1],a[u]);break;case 85:this.$=a[u-3],i.setLink(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 86:this.$=a[u-4],i.setLink(a[u-3],a[u-2],a[u]),i.setTooltip(a[u-3],a[u-1]);break;case 89:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1],a[u]);break;case 90:this.$=a[u-4],i.setClickEvent(a[u-3],a[u-2],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 91:this.$=a[u-3],i.setLink(a[u-2],a[u]);break;case 92:this.$=a[u-4],i.setLink(a[u-3],a[u-1],a[u]);break;case 93:this.$=a[u-4],i.setLink(a[u-3],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 94:this.$=a[u-5],i.setLink(a[u-4],a[u-2],a[u]),i.setTooltip(a[u-4],a[u-1]);break;case 95:this.$=a[u-2],i.setCssStyle(a[u-1],a[u]);break;case 96:i.setCssClass(a[u-1],a[u]);break;case 98:a[u-2].push(a[u]),this.$=a[u-2]}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,49:r,51:u,52:l,54:c,56:h,57:p,60:d,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:T,83:k,86:f,100:D,102:F,103:B},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(_,[2,5],{8:[1,48]}),{8:[1,49]},t(S,[2,19],{22:[1,50]}),t(S,[2,21]),t(S,[2,22]),t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),t(S,[2,26]),t(S,[2,27]),t(S,[2,28]),t(S,[2,29]),t(S,[2,30]),{34:[1,51]},{36:[1,52]},t(S,[2,33]),t(S,[2,53],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:N,69:L,70:$,71:x,72:I,73:O,74:v}),{39:[1,65]},t(w,[2,40],{39:[1,67],44:[1,66]}),t(S,[2,55]),t(S,[2,56]),{16:68,60:d,86:f,100:D,102:F},{16:39,17:40,19:69,60:d,86:f,100:D,102:F,103:B},{16:39,17:40,19:70,60:d,86:f,100:D,102:F,103:B},{16:39,17:40,19:71,60:d,86:f,100:D,102:F,103:B},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:d,86:f,100:D,102:F,103:B},{13:R,55:75},{58:77,60:[1,78]},t(S,[2,66]),t(S,[2,67]),t(S,[2,68]),t(S,[2,69]),t(P,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:d,86:f,100:D,102:F,103:B}),t(P,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:d,86:f,100:D,102:F,103:B},{16:39,17:40,19:86,60:d,86:f,100:D,102:F,103:B},t(K,[2,123]),t(K,[2,124]),t(K,[2,125]),t(K,[2,126]),t([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,127]),t(_,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:87,33:e,35:s,37:i,42:n,46:a,49:r,51:u,52:l,54:c,56:h,57:p,60:d,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:T,83:k,86:f,100:D,102:F,103:B}),{5:88,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,49:r,51:u,52:l,54:c,56:h,57:p,60:d,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:T,83:k,86:f,100:D,102:F,103:B},t(S,[2,20]),t(S,[2,31]),t(S,[2,32]),{13:[1,90],16:39,17:40,19:89,60:d,86:f,100:D,102:F,103:B},{53:91,66:56,67:57,68:N,69:L,70:$,71:x,72:I,73:O,74:v},t(S,[2,54]),{67:92,73:O,74:v},t(M,[2,73],{66:93,68:N,69:L,70:$,71:x,72:I}),t(G,[2,74]),t(G,[2,75]),t(G,[2,76]),t(G,[2,77]),t(G,[2,78]),t(U,[2,79]),t(U,[2,80]),{8:[1,95],24:96,40:94,43:23,46:a},{16:97,60:d,86:f,100:D,102:F},{41:[1,99],45:98,51:Y},{50:[1,101]},{13:[1,102]},{13:[1,103]},{79:[1,104],81:[1,105]},{22:z,48:Q,59:106,60:W,82:X,84:107,85:108,86:j,87:q,88:H,89:V,90:J},{60:[1,118]},{13:R,55:119},t(S,[2,62]),t(S,[2,128]),{22:z,48:Q,59:120,60:W,61:[1,121],82:X,84:107,85:108,86:j,87:q,88:H,89:V,90:J},t(Z,[2,64]),{16:39,17:40,19:122,60:d,86:f,100:D,102:F,103:B},t(P,[2,16]),t(P,[2,17]),t(P,[2,18]),{39:[2,36]},{15:124,16:84,17:85,18:[1,123],39:[2,9],60:d,86:f,100:D,102:F,103:B},{39:[2,10]},t(tt,[2,45],{11:125,12:[1,126]}),t(_,[2,7]),{9:[1,127]},t(et,[2,57]),{16:39,17:40,19:128,60:d,86:f,100:D,102:F,103:B},{13:[1,130],16:39,17:40,19:129,60:d,86:f,100:D,102:F,103:B},t(M,[2,72],{66:131,68:N,69:L,70:$,71:x,72:I}),t(M,[2,71]),{41:[1,132]},{24:96,40:133,43:23,46:a},{8:[1,134],41:[2,37]},t(w,[2,41],{39:[1,135]}),{41:[1,136]},t(w,[2,43]),{41:[2,51],45:137,51:Y},{16:39,17:40,19:138,60:d,86:f,100:D,102:F,103:B},t(S,[2,81],{13:[1,139]}),t(S,[2,83],{13:[1,141],77:[1,140]}),t(S,[2,87],{13:[1,142],80:[1,143]}),{13:[1,144]},t(S,[2,95],{61:st}),t(it,[2,97],{85:146,22:z,48:Q,60:W,82:X,86:j,87:q,88:H,89:V,90:J}),t(nt,[2,99]),t(nt,[2,101]),t(nt,[2,102]),t(nt,[2,103]),t(nt,[2,104]),t(nt,[2,105]),t(nt,[2,106]),t(nt,[2,107]),t(nt,[2,108]),t(nt,[2,109]),t(S,[2,96]),t(S,[2,61]),t(S,[2,63],{61:st}),{60:[1,147]},t(P,[2,14]),{15:148,16:84,17:85,60:d,86:f,100:D,102:F,103:B},{39:[2,12]},t(tt,[2,46]),{13:[1,149]},{1:[2,4]},t(et,[2,59]),t(et,[2,58]),{16:39,17:40,19:150,60:d,86:f,100:D,102:F,103:B},t(M,[2,70]),t(S,[2,34]),{41:[1,151]},{24:96,40:152,41:[2,38],43:23,46:a},{45:153,51:Y},t(w,[2,42]),{41:[2,52]},t(S,[2,50]),t(S,[2,82]),t(S,[2,84]),t(S,[2,85],{77:[1,154]}),t(S,[2,88]),t(S,[2,89],{13:[1,155]}),t(S,[2,91],{13:[1,157],77:[1,156]}),{22:z,48:Q,60:W,82:X,84:158,85:108,86:j,87:q,88:H,89:V,90:J},t(nt,[2,100]),t(Z,[2,65]),{39:[2,11]},{14:[1,159]},t(et,[2,60]),t(S,[2,35]),{41:[2,39]},{41:[1,160]},t(S,[2,86]),t(S,[2,90]),t(S,[2,92]),t(S,[2,93],{77:[1,161]}),t(it,[2,98],{85:146,22:z,48:Q,60:W,82:X,86:j,87:q,88:H,89:V,90:J}),t(tt,[2,8]),t(w,[2,44]),t(S,[2,94])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,36],85:[2,10],124:[2,12],127:[2,4],137:[2,52],148:[2,11],152:[2,39]},parseError:(0,o.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var e=this,s=[0],i=[],n=[null],a=[],r=this.table,u="",l=0,c=0,h=0,p=a.slice.call(arguments,1),d=Object.create(this.lexer),A={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(A.yy[y]=this.yy[y]);d.setInput(t,A.yy),A.yy.lexer=d,A.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var C=d.yylloc;a.push(C);var m=d.options&&d.options.ranges;function g(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof A.yy.parseError?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,a.length=a.length-t},"popStack"),(0,o.K2)(g,"lex");for(var b,E,T,k,f,D,F,B,_,S={};;){if(T=s[s.length-1],this.defaultActions[T]?k=this.defaultActions[T]:(null==b&&(b=g()),k=r[T]&&r[T][b]),void 0===k||!k.length||!k[0]){var N="";for(D in _=[],r[T])this.terminals_[D]&&D>2&&_.push("'"+this.terminals_[D]+"'");N=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+_.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(N,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:C,expected:_})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+b);switch(k[0]){case 1:s.push(b),n.push(d.yytext),a.push(d.yylloc),s.push(k[1]),b=null,E?(b=E,E=null):(c=d.yyleng,u=d.yytext,l=d.yylineno,C=d.yylloc,h>0&&h--);break;case 2:if(F=this.productions_[k[1]][1],S.$=n[n.length-F],S._$={first_line:a[a.length-(F||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(F||1)].first_column,last_column:a[a.length-1].last_column},m&&(S._$.range=[a[a.length-(F||1)].range[0],a[a.length-1].range[1]]),void 0!==(f=this.performAction.apply(S,[u,c,l,A.yy,k[1],n,a].concat(p))))return f;F&&(s=s.slice(0,-1*F*2),n=n.slice(0,-1*F),a=a.slice(0,-1*F)),s.push(this.productions_[k[1]][0]),n.push(S.$),a.push(S._$),B=r[s[s.length-2]][s[s.length-1]],s.push(B);break;case 3:return!0}}return!0},"parse")},rt=function(){return{EOF:1,parseError:(0,o.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,o.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,o.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var a in n)this[a]=n[a];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),a=0;ae[0].length)){if(e=s,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,o.K2)(function(t,e,s,i){switch(s){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:case 5:case 14:case 31:case 36:case 40:case 47:break;case 6:return this.begin("acc_title"),33;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),35;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 19:case 22:case 24:case 58:case 61:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 35:return 8;case 15:case 16:return 7;case 17:case 37:case 45:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 23:return 80;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;case 30:case 39:return this.popState(),8;case 32:return this.begin("namespace-body"),39;case 33:case 43:return this.popState(),41;case 34:case 44:return"EOF_IN_STRUCT";case 38:return this.begin("class"),46;case 41:return this.popState(),this.popState(),41;case 42:return this.begin("class-body"),39;case 46:return"OPEN_IN_STRUCT";case 48:return"MEMBER";case 49:return 83;case 50:return 75;case 51:return 76;case 52:return 78;case 53:return 54;case 54:return 56;case 55:return 49;case 56:return 50;case 57:return 81;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:case 65:case 66:case 67:return 77;case 68:case 69:return 69;case 70:case 71:return 71;case 72:return 70;case 73:return 68;case 74:return 72;case 75:return 73;case 76:return 74;case 77:return 22;case 78:return 44;case 79:return 100;case 80:return 18;case 81:return"PLUS";case 82:return 87;case 83:return 61;case 84:case 85:return 89;case 86:return 90;case 87:case 88:return"EQUALS";case 89:return 60;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 86;case 94:return 102;case 95:case 96:return 48;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}}}();function ut(){this.yy={}}return at.lexer=rt,(0,o.K2)(ut,"Parser"),ut.prototype=at,at.Parser=ut,new ut}();h.parser=h;var p=h,d=["#","+","~","-",""],A=class{static{(0,o.K2)(this,"ClassMember")}constructor(t,e){this.memberType=e,this.visibility="",this.classifier="",this.text="";const s=(0,l.jZ)(t,(0,l.D7)());this.parseMember(s)}getDisplayDetails(){let t=this.visibility+(0,l.QO)(this.id);"method"===this.memberType&&(t+=`(${(0,l.QO)(this.parameters.trim())})`,this.returnType&&(t+=" : "+(0,l.QO)(this.returnType))),t=t.trim();return{displayText:t,cssStyle:this.parseClassifier()}}parseMember(t){let e="";if("method"===this.memberType){const s=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(s){const t=s[1]?s[1].trim():"";if(d.includes(t)&&(this.visibility=t),this.id=s[2],this.parameters=s[3]?s[3].trim():"",e=s[4]?s[4].trim():"",this.returnType=s[5]?s[5].trim():"",""===e){const t=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(t)&&(e=t,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const s=t.length,i=t.substring(0,1),n=t.substring(s-1);d.includes(i)&&(this.visibility=i),/[$*]/.exec(n)&&(e=n),this.id=t.substring(""===this.visibility?0:1,""===e?s:s-1)}this.classifier=e,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();const s=`${this.visibility?"\\"+this.visibility:""}${(0,l.QO)(this.id)}${"method"===this.memberType?`(${(0,l.QO)(this.parameters)})${this.returnType?" : "+(0,l.QO)(this.returnType):""}`:""}`;this.text=s.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}},y="classId-",C=0,m=(0,o.K2)(t=>l.Y2.sanitizeText(t,(0,l.D7)()),"sanitizeText"),g=class{constructor(){this.relations=[],this.classes=new Map,this.styleClasses=new Map,this.notes=[],this.interfaces=[],this.namespaces=new Map,this.namespaceCounter=0,this.functions=[],this.lineType={LINE:0,DOTTED_LINE:1},this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},this.setupToolTips=(0,o.K2)(t=>{let e=(0,c.Ltv)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,c.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,c.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",t=>{const s=(0,c.Ltv)(t.currentTarget);if(null===s.attr("title"))return;const i=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.top-14+document.body.scrollTop+"px"),e.html(e.html().replace(/<br\/>/g,"
")),s.classed("hover",!0)}).on("mouseout",t=>{e.transition().duration(500).style("opacity",0);(0,c.Ltv)(t.currentTarget).classed("hover",!1)})},"setupToolTips"),this.direction="TB",this.setAccTitle=l.SV,this.getAccTitle=l.iN,this.setAccDescription=l.EI,this.getAccDescription=l.m7,this.setDiagramTitle=l.ke,this.getDiagramTitle=l.ab,this.getConfig=(0,o.K2)(()=>(0,l.D7)().class,"getConfig"),this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{(0,o.K2)(this,"ClassDB")}splitClassNameAndType(t){const e=l.Y2.sanitizeText(t,(0,l.D7)());let s="",i=e;if(e.indexOf("~")>0){const t=e.split("~");i=m(t[0]),s=m(t[1])}return{className:i,type:s}}setClassLabel(t,e){const s=l.Y2.sanitizeText(t,(0,l.D7)());e&&(e=m(e));const{className:i}=this.splitClassNameAndType(s);this.classes.get(i).label=e,this.classes.get(i).text=`${e}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(t){const e=l.Y2.sanitizeText(t,(0,l.D7)()),{className:s,type:i}=this.splitClassNameAndType(e);if(this.classes.has(s))return;const n=l.Y2.sanitizeText(s,(0,l.D7)());this.classes.set(n,{id:n,type:i,label:n,text:`${n}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:y+n+"-"+C}),C++}addInterface(t,e){const s={id:`interface${this.interfaces.length}`,label:t,classId:e};this.interfaces.push(s)}lookUpDomId(t){const e=l.Y2.sanitizeText(t,(0,l.D7)());if(this.classes.has(e))return this.classes.get(e).domId;throw new Error("Class not found: "+e)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",(0,l.IU)()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(t){o.Rm.debug("Adding relation: "+JSON.stringify(t));const e=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1!==this.relationType.LOLLIPOP||e.includes(t.relation.type2)?t.relation.type2!==this.relationType.LOLLIPOP||e.includes(t.relation.type1)?(this.addClass(t.id1),this.addClass(t.id2)):(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2="interface"+(this.interfaces.length-1)):(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1="interface"+(this.interfaces.length-1)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=l.Y2.sanitizeText(t.relationTitle1.trim(),(0,l.D7)()),t.relationTitle2=l.Y2.sanitizeText(t.relationTitle2.trim(),(0,l.D7)()),this.relations.push(t)}addAnnotation(t,e){const s=this.splitClassNameAndType(t).className;this.classes.get(s).annotations.push(e)}addMember(t,e){this.addClass(t);const s=this.splitClassNameAndType(t).className,i=this.classes.get(s);if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?i.annotations.push(m(t.substring(2,t.length-2))):t.indexOf(")")>0?i.methods.push(new A(t,"method")):t&&i.members.push(new A(t,"attribute"))}}addMembers(t,e){Array.isArray(e)&&(e.reverse(),e.forEach(e=>this.addMember(t,e)))}addNote(t,e){const s={id:`note${this.notes.length}`,class:e,text:t};this.notes.push(s)}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),m(t.trim())}setCssClass(t,e){t.split(",").forEach(t=>{let s=t;/\d/.exec(t[0])&&(s=y+s);const i=this.classes.get(s);i&&(i.cssClasses+=" "+e)})}defineClass(t,e){for(const s of t){let t=this.styleClasses.get(s);void 0===t&&(t={id:s,styles:[],textStyles:[]},this.styleClasses.set(s,t)),e&&e.forEach(e=>{if(/color/.exec(e)){const s=e.replace("fill","bgFill");t.textStyles.push(s)}t.styles.push(e)}),this.classes.forEach(t=>{t.cssClasses.includes(s)&&t.styles.push(...e.flatMap(t=>t.split(",")))})}}setTooltip(t,e){t.split(",").forEach(t=>{void 0!==e&&(this.classes.get(t).tooltip=m(e))})}getTooltip(t,e){return e&&this.namespaces.has(e)?this.namespaces.get(e).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,e,s){const i=(0,l.D7)();t.split(",").forEach(t=>{let n=t;/\d/.exec(t[0])&&(n=y+n);const a=this.classes.get(n);a&&(a.link=u._K.formatUrl(e,i),"sandbox"===i.securityLevel?a.linkTarget="_top":a.linkTarget="string"==typeof s?m(s):"_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,e,s){t.split(",").forEach(t=>{this.setClickFunc(t,e,s),this.classes.get(t).haveCallback=!0}),this.setCssClass(t,"clickable")}setClickFunc(t,e,s){const i=l.Y2.sanitizeText(t,(0,l.D7)());if("loose"!==(0,l.D7)().securityLevel)return;if(void 0===e)return;const n=i;if(this.classes.has(n)){const t=this.lookUpDomId(n);let i=[];if("string"==typeof s){i=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{const s=document.querySelector(`[id="${t}"]`);null!==s&&s.addEventListener("click",()=>{u._K.runFunc(e,...i)},!1)})}}bindFunctions(t){this.functions.forEach(e=>{e(t)})}getDirection(){return this.direction}setDirection(t){this.direction=t}addNamespace(t){this.namespaces.has(t)||(this.namespaces.set(t,{id:t,classes:new Map,children:{},domId:y+t+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,e){if(this.namespaces.has(t))for(const s of e){const{className:e}=this.splitClassNameAndType(s);this.classes.get(e).parent=t,this.namespaces.get(t).classes.set(e,this.classes.get(e))}}setCssStyle(t,e){const s=this.classes.get(t);if(e&&s)for(const i of e)i.includes(",")?s.styles.push(...i.split(",")):s.styles.push(i)}getArrowMarker(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}getData(){const t=[],e=[],s=(0,l.D7)();for(const n of this.namespaces.keys()){const e=this.namespaces.get(n);if(e){const i={id:e.id,label:e.id,isGroup:!0,padding:s.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:s.look};t.push(i)}}for(const n of this.classes.keys()){const e=this.classes.get(n);if(e){const i=e;i.parentId=e.parent,i.look=s.look,t.push(i)}}let i=0;for(const n of this.notes){i++;const a={id:n.id,label:n.text,isGroup:!1,shape:"note",padding:s.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${s.themeVariables.noteBkgColor}`,`stroke: ${s.themeVariables.noteBorderColor}`],look:s.look};t.push(a);const r=this.classes.get(n.class)?.id??"";if(r){const t={id:`edgeNote${i}`,start:n.id,end:r,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:s.look};e.push(t)}}for(const n of this.interfaces){const e={id:n.id,label:n.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:s.look};t.push(e)}i=0;for(const n of this.relations){i++;const t={id:(0,u.rY)(n.id1,n.id2,{prefix:"id",counter:i}),start:n.id1,end:n.id2,type:"normal",label:n.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(n.relation.type1),arrowTypeEnd:this.getArrowMarker(n.relation.type2),startLabelRight:"none"===n.relationTitle1?"":n.relationTitle1,endLabelLeft:"none"===n.relationTitle2?"":n.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:n.style||"",pattern:1==n.relation.lineType?"dashed":"solid",look:s.look};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:this.getDirection()}}},b=(0,o.K2)(t=>`g.classGroup text {\n fill: ${t.nodeBorder||t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n\n.labelBkg {\n background: ${t.mainBkg};\n}\n.edgeLabel .label span {\n background: ${t.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n ${(0,i.o)()}\n`,"getStyles"),E=(0,o.K2)((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir"),T={getClasses:(0,o.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,o.K2)(async function(t,e,s,i){o.Rm.info("REF0:"),o.Rm.info("Drawing class diagram (v3)",e);const{securityLevel:c,state:h,layout:p}=(0,l.D7)(),d=i.db.getData(),A=(0,n.A)(e,c);d.type=i.type,d.layoutAlgorithm=(0,r.q7)(p),d.nodeSpacing=h?.nodeSpacing||50,d.rankSpacing=h?.rankSpacing||50,d.markers=["aggregation","extension","composition","dependency","lollipop"],d.diagramId=e,await(0,r.XX)(d,A);u._K.insertTitle(A,"classDiagramTitleText",h?.titleTopMargin??25,i.db.getDiagramTitle()),(0,a.P)(A,8,"classDiagram",h?.useMaxWidth??!0)},"draw"),getDir:E}},2501:(t,e,s)=>{s.d(e,{o:()=>i});var i=(0,s(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")}}]); \ No newline at end of file diff --git a/developer/assets/js/17896441.3f1392ea.js b/developer/assets/js/17896441.3f1392ea.js new file mode 100644 index 0000000..728795d --- /dev/null +++ b/developer/assets/js/17896441.3f1392ea.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8401],{8093:(e,t,s)=>{s.r(t),s.d(t,{default:()=>ce});var n=s(6540),a=s(5500),i=s(9532),o=s(4848);const l=n.createContext(null);function r({children:e,content:t}){const s=function(e){return(0,n.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(t);return(0,o.jsx)(l.Provider,{value:s,children:e})}function c(){const e=(0,n.useContext)(l);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:s}=c();return(0,o.jsx)(a.be,{title:e.title,description:e.description,keywords:t.keywords,image:s.image??t.image})}var u=s(4164),m=s(4581),h=s(1312),b=s(8774);function x(e){const{permalink:t,title:s,subLabel:n,isNext:a}=e;return(0,o.jsxs)(b.A,{className:(0,u.A)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[n&&(0,o.jsx)("div",{className:"pagination-nav__sublabel",children:n}),(0,o.jsx)("div",{className:"pagination-nav__label",children:s})]})}function p(e){const{className:t,previous:s,next:n}=e;return(0,o.jsxs)("nav",{className:(0,u.A)(t,"pagination-nav"),"aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[s&&(0,o.jsx)(x,{...s,subLabel:(0,o.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,o.jsx)(x,{...n,subLabel:(0,o.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function v(){const{metadata:e}=c();return(0,o.jsx)(p,{className:"docusaurus-mt-lg",previous:e.previous,next:e.next})}var g=s(4586),j=s(8295),f=s(7559),_=s(3886),A=s(3025);const N={unreleased:function({siteTitle:e,versionMetadata:t}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:e,versionLabel:(0,o.jsx)("b",{children:t.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function({siteTitle:e,versionMetadata:t}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:e,versionLabel:(0,o.jsx)("b",{children:t.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function C(e){const t=N[e.versionMetadata.banner];return(0,o.jsx)(t,{...e})}function L({versionLabel:e,to:t,onClick:s}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:e,latestVersionLink:(0,o.jsx)("b",{children:(0,o.jsx)(b.A,{to:t,onClick:s,children:(0,o.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function T({className:e,versionMetadata:t}){const{siteConfig:{title:s}}=(0,g.A)(),{pluginId:n}=(0,j.vT)({failfast:!0}),{savePreferredVersionName:a}=(0,_.g1)(n),{latestDocSuggestion:i,latestVersionSuggestion:l}=(0,j.HW)(n),r=i??(c=l).docs.find(e=>e.id===c.mainDocId);var c;return(0,o.jsxs)("div",{className:(0,u.A)(e,f.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,o.jsx)("div",{children:(0,o.jsx)(C,{siteTitle:s,versionMetadata:t})}),(0,o.jsx)("div",{className:"margin-top--md",children:(0,o.jsx)(L,{versionLabel:l.label,to:r.path,onClick:()=>a(l.name)})})]})}function k({className:e}){const t=(0,A.r)();return t.banner?(0,o.jsx)(T,{className:e,versionMetadata:t}):null}function M({className:e}){const t=(0,A.r)();return t.badge?(0,o.jsx)("span",{className:(0,u.A)(e,f.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,o.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:t.label},children:"Version: {versionLabel}"})}):null}const w={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function y({permalink:e,label:t,count:s,description:n}){return(0,o.jsxs)(b.A,{rel:"tag",href:e,title:n,className:(0,u.A)(w.tag,s?w.tagWithCount:w.tagRegular),children:[t,s&&(0,o.jsx)("span",{children:s})]})}const B={tags:"tags_jXut",tag:"tag_QGVx"};function I({tags:e}){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("b",{children:(0,o.jsx)(h.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,o.jsx)("ul",{className:(0,u.A)(B.tags,"padding--none","margin-left--sm"),children:e.map(e=>(0,o.jsx)("li",{className:B.tag,children:(0,o.jsx)(y,{...e})},e.permalink))})]})}var V=s(2153);function H(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:s,lastUpdatedBy:n,tags:a}=e,i=a.length>0,l=!!(t||s||n);return i||l?(0,o.jsxs)("footer",{className:(0,u.A)(f.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,o.jsx)("div",{className:(0,u.A)("row margin-top--sm",f.G.docs.docFooterTagsRow),children:(0,o.jsx)("div",{className:"col",children:(0,o.jsx)(I,{tags:a})})}),l&&(0,o.jsx)(V.A,{className:(0,u.A)("margin-top--sm",f.G.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:s,lastUpdatedBy:n})]}):null}var E=s(1422),G=s(5195);const F={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function R({collapsed:e,...t}){return(0,o.jsx)("button",{type:"button",...t,className:(0,u.A)("clean-btn",F.tocCollapsibleButton,!e&&F.tocCollapsibleButtonExpanded,t.className),children:(0,o.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const D={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function O({toc:e,className:t,minHeadingLevel:s,maxHeadingLevel:n}){const{collapsed:a,toggleCollapsed:i}=(0,E.u)({initialState:!0});return(0,o.jsxs)("div",{className:(0,u.A)(D.tocCollapsible,!a&&D.tocCollapsibleExpanded,t),children:[(0,o.jsx)(R,{collapsed:a,onClick:i}),(0,o.jsx)(E.N,{lazy:!0,className:D.tocCollapsibleContent,collapsed:a,children:(0,o.jsx)(G.A,{toc:e,minHeadingLevel:s,maxHeadingLevel:n})})]})}const U={tocMobile:"tocMobile_ITEo"};function P(){const{toc:e,frontMatter:t}=c();return(0,o.jsx)(O,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.A)(f.G.docs.docTocMobile,U.tocMobile)})}var S=s(7763);function W(){const{toc:e,frontMatter:t}=c();return(0,o.jsx)(S.A,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:f.G.docs.docTocDesktop})}var z=s(1107),$=s(1336);function J({children:e}){const t=function(){const{metadata:e,frontMatter:t,contentTitle:s}=c();return t.hide_title||void 0!==s?null:e.title}();return(0,o.jsxs)("div",{className:(0,u.A)(f.G.docs.docMarkdown,"markdown"),children:[t&&(0,o.jsx)("header",{children:(0,o.jsx)(z.A,{as:"h1",children:t})}),(0,o.jsx)($.A,{children:e})]})}var Q=s(4718),X=s(9169),Y=s(6025);function Z(e){return(0,o.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,o.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const q={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function K(){const e=(0,Y.Ay)("/");return(0,o.jsx)("li",{className:"breadcrumbs__item",children:(0,o.jsx)(b.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,o.jsx)(Z,{className:q.breadcrumbHomeIcon})})})}var ee=s(5260);function te(e){const t=function({breadcrumbs:e}){const{siteConfig:t}=(0,g.A)();return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.filter(e=>e.href).map((e,s)=>({"@type":"ListItem",position:s+1,name:e.label,item:`${t.url}${e.href}`}))}}({breadcrumbs:e.breadcrumbs});return(0,o.jsx)(ee.A,{children:(0,o.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}const se={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function ne({children:e,href:t,isLast:s}){const n="breadcrumbs__link";return s?(0,o.jsx)("span",{className:n,children:e}):t?(0,o.jsx)(b.A,{className:n,href:t,children:(0,o.jsx)("span",{children:e})}):(0,o.jsx)("span",{className:n,children:e})}function ae({children:e,active:t}){return(0,o.jsx)("li",{className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":t}),children:e})}function ie(){const e=(0,Q.OF)(),t=(0,X.Dt)();return e?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(te,{breadcrumbs:e}),(0,o.jsx)("nav",{className:(0,u.A)(f.G.docs.docBreadcrumbs,se.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,o.jsxs)("ul",{className:"breadcrumbs",children:[t&&(0,o.jsx)(K,{}),e.map((t,s)=>{const n=s===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,o.jsx)(ae,{active:n,children:(0,o.jsx)(ne,{href:a,isLast:n,children:t.label})},s)})]})})]}):null}var oe=s(6896);const le={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function re({children:e}){const t=function(){const{frontMatter:e,toc:t}=c(),s=(0,m.l)(),n=e.hide_table_of_contents,a=!n&&t.length>0;return{hidden:n,mobile:a?(0,o.jsx)(P,{}):void 0,desktop:!a||"desktop"!==s&&"ssr"!==s?void 0:(0,o.jsx)(W,{})}}(),{metadata:s}=c();return(0,o.jsxs)("div",{className:"row",children:[(0,o.jsxs)("div",{className:(0,u.A)("col",!t.hidden&&le.docItemCol),children:[(0,o.jsx)(oe.A,{metadata:s}),(0,o.jsx)(k,{}),(0,o.jsxs)("div",{className:le.docItemContainer,children:[(0,o.jsxs)("article",{children:[(0,o.jsx)(ie,{}),(0,o.jsx)(M,{}),t.mobile,(0,o.jsx)(J,{children:e}),(0,o.jsx)(H,{})]}),(0,o.jsx)(v,{})]})]}),t.desktop&&(0,o.jsx)("div",{className:"col col--3",children:t.desktop})]})}function ce(e){const t=`docs-doc-id-${e.content.metadata.id}`,s=e.content;return(0,o.jsx)(r,{content:e.content,children:(0,o.jsxs)(a.e3,{className:t,children:[(0,o.jsx)(d,{}),(0,o.jsx)(re,{children:(0,o.jsx)(s,{})})]})})}}}]); \ No newline at end of file diff --git a/developer/assets/js/1b064146.f00c088d.js b/developer/assets/js/1b064146.f00c088d.js new file mode 100644 index 0000000..212a8a9 --- /dev/null +++ b/developer/assets/js/1b064146.f00c088d.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8079],{3448:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"release-management","title":"Release Notes Generation","description":"This project supports three ways to generate release notes from conventional commits, plus automatic version management.","source":"@site/docs/release-management.md","sourceDirName":".","slug":"/release-management","permalink":"/hass.tibber_prices/developer/release-management","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/release-management.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Contributing Guide","permalink":"/hass.tibber_prices/developer/contributing"},"next":{"title":"Testing","permalink":"/hass.tibber_prices/developer/testing"}}');var t=s(4848),r=s(8453);const l={comments:!1},a="Release Notes Generation",o={},c=[{value:"\ud83d\ude80 Quick Start: Preparing a Release",id:"-quick-start-preparing-a-release",level:2},{value:"\ud83d\udccb Release Options",id:"-release-options",level:2},{value:"1. GitHub UI Button (Easiest)",id:"1-github-ui-button-easiest",level:3},{value:"2. Local Script (Intelligent)",id:"2-local-script-intelligent",level:3},{value:"Backend Priority",id:"backend-priority",level:4},{value:"Installing Optional Backends",id:"installing-optional-backends",level:4},{value:"3. CI/CD Automation",id:"3-cicd-automation",level:3},{value:"\ud83d\udcdd Output Format",id:"-output-format",level:2},{value:"\ud83c\udfaf When to Use Which",id:"-when-to-use-which",level:2},{value:"\ud83d\udd04 Complete Release Workflows",id:"-complete-release-workflows",level:2},{value:"Workflow A: Using Helper Script (Recommended)",id:"workflow-a-using-helper-script-recommended",level:3},{value:"Workflow B: Manual (with Auto-Tag Safety Net)",id:"workflow-b-manual-with-auto-tag-safety-net",level:3},{value:"Workflow C: Manual Tag (Old Way)",id:"workflow-c-manual-tag-old-way",level:3},{value:"\u2699\ufe0f Configuration Files",id:"\ufe0f-configuration-files",level:2},{value:"\ud83d\udee1\ufe0f Safety Features",id:"\ufe0f-safety-features",level:2},{value:"1. Version Validation",id:"1-version-validation",level:3},{value:"2. No Duplicate Tags",id:"2-no-duplicate-tags",level:3},{value:"3. Atomic Operations",id:"3-atomic-operations",level:3},{value:"4. Version Bumps Filtered",id:"4-version-bumps-filtered",level:3},{value:"5. Rollback Instructions",id:"5-rollback-instructions",level:3},{value:"\ud83d\udc1b Troubleshooting",id:"-troubleshooting",level:2},{value:"\ud83d\udd0d Format Requirements",id:"-format-requirements",level:2},{value:"\ud83d\udca1 Tips",id:"-tips",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"release-notes-generation",children:"Release Notes Generation"})}),"\n",(0,t.jsxs)(n.p,{children:["This project supports ",(0,t.jsx)(n.strong,{children:"three ways"})," to generate release notes from conventional commits, plus ",(0,t.jsx)(n.strong,{children:"automatic version management"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"-quick-start-preparing-a-release",children:"\ud83d\ude80 Quick Start: Preparing a Release"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Recommended workflow (automatic & foolproof):"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'# 1. Use the helper script to prepare release\n./scripts/release/prepare 0.3.0\n\n# This will:\n# - Update manifest.json version to 0.3.0\n# - Create commit: "chore(release): bump version to 0.3.0"\n# - Create tag: v0.3.0\n# - Show you what will be pushed\n\n# 2. Review and push when ready\ngit push origin main v0.3.0\n\n# 3. CI/CD automatically:\n# - Detects the new tag\n# - Generates release notes (excluding version bump commit)\n# - Creates GitHub release\n'})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"If you forget to bump manifest.json:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'# Just edit manifest.json manually and commit\nvim custom_components/tibber_prices/manifest.json # "version": "0.3.0"\ngit commit -am "chore(release): bump version to 0.3.0"\ngit push\n\n# Auto-Tag workflow detects manifest.json change and creates tag automatically!\n# Then Release workflow kicks in and creates the GitHub release\n'})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-release-options",children:"\ud83d\udccb Release Options"}),"\n",(0,t.jsx)(n.h3,{id:"1-github-ui-button-easiest",children:"1. GitHub UI Button (Easiest)"}),"\n",(0,t.jsx)(n.p,{children:"Use GitHub's built-in release notes generator:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Go to ",(0,t.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/releases",children:"Releases"})]}),"\n",(0,t.jsx)(n.li,{children:'Click "Draft a new release"'}),"\n",(0,t.jsx)(n.li,{children:"Select your tag"}),"\n",(0,t.jsx)(n.li,{children:'Click "Generate release notes" button'}),"\n",(0,t.jsx)(n.li,{children:"Edit if needed and publish"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Uses:"})," ",(0,t.jsx)(n.code,{children:".github/release.yml"})," configuration\n",(0,t.jsx)(n.strong,{children:"Best for:"})," Quick releases, works with PRs that have labels\n",(0,t.jsx)(n.strong,{children:"Note:"}),' Direct commits appear in "Other Changes" category']}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"2-local-script-intelligent",children:"2. Local Script (Intelligent)"}),"\n",(0,t.jsxs)(n.p,{children:["Run ",(0,t.jsx)(n.code,{children:"./scripts/release/generate-notes"})," to parse conventional commits locally."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Automatic backend detection:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Generate from latest tag to HEAD\n./scripts/release/generate-notes\n\n# Generate between specific tags\n./scripts/release/generate-notes v1.0.0 v1.1.0\n\n# Generate from tag to HEAD\n./scripts/release/generate-notes v1.0.0 HEAD\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Force specific backend:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Use AI (GitHub Copilot CLI)\nRELEASE_NOTES_BACKEND=copilot ./scripts/release/generate-notes\n\n# Use git-cliff (template-based)\nRELEASE_NOTES_BACKEND=git-cliff ./scripts/release/generate-notes\n\n# Use manual parsing (grep/awk fallback)\nRELEASE_NOTES_BACKEND=manual ./scripts/release/generate-notes\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Disable AI"})," (useful for CI/CD):"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"USE_AI=false ./scripts/release/generate-notes\n"})}),"\n",(0,t.jsx)(n.h4,{id:"backend-priority",children:"Backend Priority"}),"\n",(0,t.jsx)(n.p,{children:"The script automatically selects the best available backend:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"GitHub Copilot CLI"})," - AI-powered, context-aware (best quality)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"git-cliff"})," - Fast Rust tool with templates (reliable)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Manual"})," - Simple grep/awk parsing (always works)"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["In CI/CD (",(0,t.jsx)(n.code,{children:"$CI"})," or ",(0,t.jsx)(n.code,{children:"$GITHUB_ACTIONS"}),"), AI is automatically disabled."]}),"\n",(0,t.jsx)(n.h4,{id:"installing-optional-backends",children:"Installing Optional Backends"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"In DevContainer (automatic):"})}),"\n",(0,t.jsx)(n.p,{children:"git-cliff is automatically installed when the DevContainer is built:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Rust toolchain"}),": Installed via ",(0,t.jsx)(n.code,{children:"ghcr.io/devcontainers/features/rust:1"})," (minimal profile)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"git-cliff"}),": Installed via cargo in ",(0,t.jsx)(n.code,{children:"scripts/setup/setup"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:'Simply rebuild the container (VS Code: "Dev Containers: Rebuild Container") and git-cliff will be available.'}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Manual installation (outside DevContainer):"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"git-cliff"})," (template-based):"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# See: https://git-cliff.org/docs/installation\n\n# macOS\nbrew install git-cliff\n\n# Cargo (all platforms)\ncargo install git-cliff\n\n# Manual binary download\nwget https://github.com/orhun/git-cliff/releases/latest/download/git-cliff-x86_64-unknown-linux-gnu.tar.gz\ntar -xzf git-cliff-*.tar.gz\nsudo mv git-cliff-*/git-cliff /usr/local/bin/\n"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"3-cicd-automation",children:"3. CI/CD Automation"}),"\n",(0,t.jsx)(n.p,{children:"Automatic release notes on tag push."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Workflow:"})," ",(0,t.jsx)(n.code,{children:".github/workflows/release.yml"})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Triggers:"})," Version tags (",(0,t.jsx)(n.code,{children:"v1.0.0"}),", ",(0,t.jsx)(n.code,{children:"v2.1.3"}),", etc.)"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Create and push a tag to trigger automatic release\ngit tag v1.0.0\ngit push origin v1.0.0\n\n# GitHub Actions will:\n# 1. Detect the new tag\n# 2. Generate release notes using git-cliff\n# 3. Create a GitHub release automatically\n"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Backend:"})," Uses ",(0,t.jsx)(n.code,{children:"git-cliff"})," (AI disabled in CI for reliability)"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-output-format",children:"\ud83d\udcdd Output Format"}),"\n",(0,t.jsx)(n.p,{children:"All methods produce GitHub-flavored Markdown with emoji categories:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-markdown",children:"## \ud83c\udf89 New Features\n\n- **scope**: Description ([abc1234](link-to-commit))\n\n## \ud83d\udc1b Bug Fixes\n\n- **scope**: Description ([def5678](link-to-commit))\n\n## \ud83d\udcda Documentation\n\n- **scope**: Description ([ghi9012](link-to-commit))\n\n## \ud83d\udd27 Maintenance & Refactoring\n\n- **scope**: Description ([jkl3456](link-to-commit))\n\n## \ud83e\uddea Testing\n\n- **scope**: Description ([mno7890](link-to-commit))\n"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-when-to-use-which",children:"\ud83c\udfaf When to Use Which"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Method"}),(0,t.jsx)(n.th,{children:"Use Case"}),(0,t.jsx)(n.th,{children:"Pros"}),(0,t.jsx)(n.th,{children:"Cons"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Helper Script"})}),(0,t.jsx)(n.td,{children:"Normal releases"}),(0,t.jsx)(n.td,{children:"Foolproof, automatic"}),(0,t.jsx)(n.td,{children:"Requires script"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Auto-Tag Workflow"})}),(0,t.jsx)(n.td,{children:"Forgot script"}),(0,t.jsx)(n.td,{children:"Safety net, automatic tagging"}),(0,t.jsx)(n.td,{children:"Still need manifest bump"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"GitHub Button"})}),(0,t.jsx)(n.td,{children:"Manual quick release"}),(0,t.jsx)(n.td,{children:"Easy, no script"}),(0,t.jsx)(n.td,{children:"Limited categorization"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"Local Script"})}),(0,t.jsx)(n.td,{children:"Testing release notes"}),(0,t.jsx)(n.td,{children:"Preview before release"}),(0,t.jsx)(n.td,{children:"Manual process"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:(0,t.jsx)(n.strong,{children:"CI/CD"})}),(0,t.jsx)(n.td,{children:"After tag push"}),(0,t.jsx)(n.td,{children:"Fully automatic"}),(0,t.jsx)(n.td,{children:"Needs tag first"})]})]})]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-complete-release-workflows",children:"\ud83d\udd04 Complete Release Workflows"}),"\n",(0,t.jsx)(n.h3,{id:"workflow-a-using-helper-script-recommended",children:"Workflow A: Using Helper Script (Recommended)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Step 1: Prepare release (all-in-one)\n./scripts/release/prepare 0.3.0\n\n# Step 2: Review changes\ngit log -1 --stat\ngit show v0.3.0\n\n# Step 3: Push when ready\ngit push origin main v0.3.0\n\n# Done! CI/CD creates the release automatically\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"What happens:"})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"Script bumps manifest.json \u2192 commits \u2192 creates tag locally"}),"\n",(0,t.jsx)(n.li,{children:"You push commit + tag together"}),"\n",(0,t.jsx)(n.li,{children:"Release workflow sees tag \u2192 generates notes \u2192 creates release"}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"workflow-b-manual-with-auto-tag-safety-net",children:"Workflow B: Manual (with Auto-Tag Safety Net)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'# Step 1: Bump version manually\nvim custom_components/tibber_prices/manifest.json\n# Change: "version": "0.3.0"\n\n# Step 2: Commit\ngit commit -am "chore(release): bump version to 0.3.0"\ngit push\n\n# Step 3: Wait for Auto-Tag workflow\n# GitHub Actions automatically creates v0.3.0 tag\n# Then Release workflow creates the release\n'})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"What happens:"})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"You push manifest.json change"}),"\n",(0,t.jsx)(n.li,{children:"Auto-Tag workflow detects change \u2192 creates tag automatically"}),"\n",(0,t.jsx)(n.li,{children:"Release workflow sees new tag \u2192 creates release"}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"workflow-c-manual-tag-old-way",children:"Workflow C: Manual Tag (Old Way)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'# Step 1: Bump version\nvim custom_components/tibber_prices/manifest.json\ngit commit -am "chore(release): bump version to 0.3.0"\n\n# Step 2: Create tag manually\ngit tag v0.3.0\ngit push origin main v0.3.0\n\n# Release workflow creates release\n'})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"What happens:"})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"You create and push tag manually"}),"\n",(0,t.jsx)(n.li,{children:"Release workflow creates release"}),"\n",(0,t.jsx)(n.li,{children:"Auto-Tag workflow skips (tag already exists)"}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"\ufe0f-configuration-files",children:"\u2699\ufe0f Configuration Files"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"scripts/release/prepare"})," - Helper script to bump version + create tag"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:".github/workflows/auto-tag.yml"})," - Automatic tag creation on manifest.json change"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:".github/workflows/release.yml"})," - Automatic release on tag push"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:".github/release.yml"})," - GitHub UI button configuration"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"cliff.toml"})," - git-cliff template (filters out version bumps)"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"\ufe0f-safety-features",children:"\ud83d\udee1\ufe0f Safety Features"}),"\n",(0,t.jsxs)(n.h3,{id:"1-version-validation",children:["1. ",(0,t.jsx)(n.strong,{children:"Version Validation"})]}),"\n",(0,t.jsx)(n.p,{children:"Both helper script and auto-tag workflow validate version format (X.Y.Z)."}),"\n",(0,t.jsxs)(n.h3,{id:"2-no-duplicate-tags",children:["2. ",(0,t.jsx)(n.strong,{children:"No Duplicate Tags"})]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Helper script checks if tag exists (local + remote)"}),"\n",(0,t.jsx)(n.li,{children:"Auto-tag workflow checks if tag exists before creating"}),"\n"]}),"\n",(0,t.jsxs)(n.h3,{id:"3-atomic-operations",children:["3. ",(0,t.jsx)(n.strong,{children:"Atomic Operations"})]}),"\n",(0,t.jsx)(n.p,{children:"Helper script creates commit + tag locally. You decide when to push."}),"\n",(0,t.jsxs)(n.h3,{id:"4-version-bumps-filtered",children:["4. ",(0,t.jsx)(n.strong,{children:"Version Bumps Filtered"})]}),"\n",(0,t.jsxs)(n.p,{children:["Release notes automatically exclude ",(0,t.jsx)(n.code,{children:"chore(release): bump version"})," commits."]}),"\n",(0,t.jsxs)(n.h3,{id:"5-rollback-instructions",children:["5. ",(0,t.jsx)(n.strong,{children:"Rollback Instructions"})]}),"\n",(0,t.jsx)(n.p,{children:"Helper script shows how to undo if you change your mind."}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-troubleshooting",children:"\ud83d\udc1b Troubleshooting"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:'"Tag already exists" error:'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Local tag\ngit tag -d v0.3.0\n\n# Remote tag (only if you need to recreate)\ngit push origin :refs/tags/v0.3.0\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Manifest version doesn't match tag:"})}),"\n",(0,t.jsx)(n.p,{children:"This shouldn't happen with the new workflows, but if it does:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'# 1. Fix manifest.json\nvim custom_components/tibber_prices/manifest.json\n\n# 2. Amend the commit\ngit commit --amend -am "chore(release): bump version to 0.3.0"\n\n# 3. Move the tag\ngit tag -f v0.3.0\ngit push -f origin main v0.3.0\n'})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Auto-tag didn't create tag:"})}),"\n",(0,t.jsx)(n.p,{children:"Check workflow runs in GitHub Actions. Common causes:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Tag already exists remotely"}),"\n",(0,t.jsx)(n.li,{children:"Invalid version format in manifest.json"}),"\n",(0,t.jsx)(n.li,{children:"manifest.json not in the commit that was pushed"}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-format-requirements",children:"\ud83d\udd0d Format Requirements"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"HACS:"})," No specific format required, uses GitHub releases as-is\n",(0,t.jsx)(n.strong,{children:"Home Assistant:"})," No specific format required for custom integrations\n",(0,t.jsx)(n.strong,{children:"Markdown:"})," Standard GitHub-flavored Markdown supported\n",(0,t.jsx)(n.strong,{children:"HTML:"})," Can include ",(0,t.jsx)(n.code,{children:""})," tags if needed"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-tips",children:"\ud83d\udca1 Tips"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Conventional Commits:"})," Use proper commit format for best results:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"feat(scope): Add new feature\n\nDetailed description of what changed.\n\nImpact: Users can now do X and Y.\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Impact Section:"})," Add ",(0,t.jsx)(n.code,{children:"Impact:"})," in commit body for user-friendly descriptions"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Test Locally:"})," Run ",(0,t.jsx)(n.code,{children:"./scripts/release/generate-notes"})," before creating release"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"AI vs Template:"})," GitHub Copilot CLI provides better descriptions, git-cliff is faster and more reliable"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"CI/CD:"})," Tag push triggers automatic release - no manual intervention needed"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/1c78bc2a.67a286df.js b/developer/assets/js/1c78bc2a.67a286df.js new file mode 100644 index 0000000..dec9148 --- /dev/null +++ b/developer/assets/js/1c78bc2a.67a286df.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[3904],{5343:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"coding-guidelines","title":"Coding Guidelines","description":"Note: For complete coding standards, see AGENTS.md.","source":"@site/docs/coding-guidelines.md","sourceDirName":".","slug":"/coding-guidelines","permalink":"/hass.tibber_prices/developer/coding-guidelines","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/coding-guidelines.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Development Setup","permalink":"/hass.tibber_prices/developer/setup"},"next":{"title":"Critical Behavior Patterns - Testing Guide","permalink":"/hass.tibber_prices/developer/critical-patterns"}}');var l=n(4848),r=n(8453);const t={comments:!1},a="Coding Guidelines",c={},d=[{value:"Code Style",id:"code-style",level:2},{value:"Naming Conventions",id:"naming-conventions",level:2},{value:"Class Names",id:"class-names",level:3},{value:"Import Order",id:"import-order",level:2},{value:"Critical Patterns",id:"critical-patterns",level:2},{value:"Time Handling",id:"time-handling",level:3},{value:"Translation Loading",id:"translation-loading",level:3},{value:"Price Data Enrichment",id:"price-data-enrichment",level:3}];function o(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.header,{children:(0,l.jsx)(s.h1,{id:"coding-guidelines",children:"Coding Guidelines"})}),"\n",(0,l.jsxs)(s.blockquote,{children:["\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Note:"})," For complete coding standards, see ",(0,l.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,l.jsx)(s.code,{children:"AGENTS.md"})}),"."]}),"\n"]}),"\n",(0,l.jsx)(s.h2,{id:"code-style",children:"Code Style"}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Formatter/Linter"}),": Ruff (replaces Black, Flake8, isort)"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Max line length"}),": 120 characters"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Max complexity"}),": 25 (McCabe)"]}),"\n",(0,l.jsxs)(s.li,{children:[(0,l.jsx)(s.strong,{children:"Target"}),": Python 3.13"]}),"\n"]}),"\n",(0,l.jsx)(s.p,{children:"Run before committing:"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-bash",children:"./scripts/lint # Auto-fix issues\n./scripts/release/hassfest # Validate integration structure\n"})}),"\n",(0,l.jsx)(s.h2,{id:"naming-conventions",children:"Naming Conventions"}),"\n",(0,l.jsx)(s.h3,{id:"class-names",children:"Class Names"}),"\n",(0,l.jsx)(s.p,{children:(0,l.jsx)(s.strong,{children:"All public classes MUST use the integration name as prefix."})}),"\n",(0,l.jsx)(s.p,{children:"This is a Home Assistant standard to avoid naming conflicts between integrations."}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-python",children:"# \u2705 CORRECT\nclass TibberPricesApiClient:\nclass TibberPricesDataUpdateCoordinator:\nclass TibberPricesSensor:\n\n# \u274c WRONG - Missing prefix\nclass ApiClient:\nclass DataFetcher:\nclass TimeService:\n"})}),"\n",(0,l.jsx)(s.p,{children:(0,l.jsx)(s.strong,{children:"When prefix is required:"})}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsx)(s.li,{children:"Public classes used across multiple modules"}),"\n",(0,l.jsx)(s.li,{children:"All exception classes"}),"\n",(0,l.jsx)(s.li,{children:"All coordinator and entity classes"}),"\n",(0,l.jsx)(s.li,{children:"Data classes (dataclasses, NamedTuples) used as public APIs"}),"\n"]}),"\n",(0,l.jsx)(s.p,{children:(0,l.jsx)(s.strong,{children:"When prefix can be omitted:"})}),"\n",(0,l.jsxs)(s.ul,{children:["\n",(0,l.jsxs)(s.li,{children:["Private helper classes within a single module (prefix with ",(0,l.jsx)(s.code,{children:"_"})," underscore)"]}),"\n",(0,l.jsxs)(s.li,{children:["Type aliases and callbacks (e.g., ",(0,l.jsx)(s.code,{children:"TimeServiceCallback"}),")"]}),"\n",(0,l.jsx)(s.li,{children:"Small internal NamedTuples for function returns"}),"\n"]}),"\n",(0,l.jsx)(s.p,{children:(0,l.jsx)(s.strong,{children:"Private Classes:"})}),"\n",(0,l.jsx)(s.p,{children:"If a helper class is ONLY used within a single module file, prefix it with underscore:"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-python",children:'# \u2705 Private class - used only in this file\nclass _InternalHelper:\n """Helper used only within this module."""\n pass\n\n# \u274c Wrong - no prefix but used across modules\nclass DataFetcher: # Should be TibberPricesDataFetcher\n pass\n'})}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Note:"})," Currently (Nov 2025), this project has ",(0,l.jsx)(s.strong,{children:"NO private classes"})," - all classes are used across module boundaries."]}),"\n",(0,l.jsx)(s.p,{children:(0,l.jsx)(s.strong,{children:"Current Technical Debt:"})}),"\n",(0,l.jsxs)(s.p,{children:["Many existing classes lack the ",(0,l.jsx)(s.code,{children:"TibberPrices"})," prefix. Before refactoring:"]}),"\n",(0,l.jsxs)(s.ol,{children:["\n",(0,l.jsxs)(s.li,{children:["Document the plan in ",(0,l.jsx)(s.code,{children:"/planning/class-naming-refactoring.md"})]}),"\n",(0,l.jsxs)(s.li,{children:["Use ",(0,l.jsx)(s.code,{children:"multi_replace_string_in_file"})," for bulk renames"]}),"\n",(0,l.jsx)(s.li,{children:"Test thoroughly after each module"}),"\n"]}),"\n",(0,l.jsxs)(s.p,{children:["See ",(0,l.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,l.jsx)(s.code,{children:"AGENTS.md"})})," for complete list of classes needing rename."]}),"\n",(0,l.jsx)(s.h2,{id:"import-order",children:"Import Order"}),"\n",(0,l.jsxs)(s.ol,{children:["\n",(0,l.jsx)(s.li,{children:"Python stdlib (specific types only)"}),"\n",(0,l.jsxs)(s.li,{children:["Third-party (",(0,l.jsx)(s.code,{children:"homeassistant.*"}),", ",(0,l.jsx)(s.code,{children:"aiohttp"}),")"]}),"\n",(0,l.jsxs)(s.li,{children:["Local (",(0,l.jsx)(s.code,{children:".api"}),", ",(0,l.jsx)(s.code,{children:".const"}),")"]}),"\n"]}),"\n",(0,l.jsx)(s.h2,{id:"critical-patterns",children:"Critical Patterns"}),"\n",(0,l.jsx)(s.h3,{id:"time-handling",children:"Time Handling"}),"\n",(0,l.jsxs)(s.p,{children:["Always use ",(0,l.jsx)(s.code,{children:"dt_util"})," from ",(0,l.jsx)(s.code,{children:"homeassistant.util"}),":"]}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-python",children:"from homeassistant.util import dt as dt_util\n\nprice_time = dt_util.parse_datetime(starts_at)\nprice_time = dt_util.as_local(price_time) # Convert to HA timezone\nnow = dt_util.now()\n"})}),"\n",(0,l.jsx)(s.h3,{id:"translation-loading",children:"Translation Loading"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-python",children:'# In __init__.py async_setup_entry:\nawait async_load_translations(hass, "en")\nawait async_load_standard_translations(hass, "en")\n'})}),"\n",(0,l.jsx)(s.h3,{id:"price-data-enrichment",children:"Price Data Enrichment"}),"\n",(0,l.jsx)(s.p,{children:"Always enrich raw API data:"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-python",children:"from .price_utils import enrich_price_info_with_differences\n\nenriched = enrich_price_info_with_differences(\n price_info_data,\n thresholds,\n)\n"})}),"\n",(0,l.jsxs)(s.p,{children:["See ",(0,l.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,l.jsx)(s.code,{children:"AGENTS.md"})})," for complete guidelines."]})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,l.jsx)(s,{...e,children:(0,l.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/1df93b7f.2b91fd45.js b/developer/assets/js/1df93b7f.2b91fd45.js new file mode 100644 index 0000000..025afb5 --- /dev/null +++ b/developer/assets/js/1df93b7f.2b91fd45.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[4583],{8198:(e,i,s)=>{s.r(i),s.d(i,{default:()=>x});var n=s(4164),t=s(8774),r=s(4586),c=s(6025),a=s(5293),d=s(4042),o=s(1107);const l={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};var h=s(4848);function m(){const{siteConfig:e}=(0,r.A)(),{colorMode:i}=(0,a.G)(),s=(0,c.Ay)("dark"===i?"/img/header-dark.svg":"/img/header.svg");return(0,h.jsx)("header",{className:(0,n.A)("hero hero--primary",l.heroBanner),children:(0,h.jsxs)("div",{className:"container",children:[(0,h.jsx)("div",{style:{marginBottom:"2rem"},children:(0,h.jsx)("img",{src:s,alt:"Tibber Prices for Tibber",style:{maxWidth:"600px",width:"100%",height:"auto"}})}),(0,h.jsx)(o.A,{as:"h1",className:"hero__title",children:e.title}),(0,h.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,h.jsx)("div",{className:l.buttons,children:(0,h.jsx)(t.A,{className:"button button--secondary button--lg",to:"/intro",children:"Get Started \u2192"})})]})})}function u(){return(0,h.jsx)("section",{className:l.features,children:(0,h.jsxs)("div",{className:"container",children:[(0,h.jsxs)("div",{className:"row",children:[(0,h.jsx)("div",{className:(0,n.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83c\udfd7\ufe0f Clean Architecture"}),(0,h.jsx)("p",{children:"Modular design with separation of concerns. Calculator pattern for business logic, coordinator-based data flow, and comprehensive caching strategies."})]})}),(0,h.jsx)("div",{className:(0,n.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83e\uddea Test Coverage"}),(0,h.jsx)("p",{children:"Comprehensive test suite with unit, integration, and E2E tests. Resource leak detection, lifecycle validation, and performance benchmarks."})]})}),(0,h.jsx)("div",{className:(0,n.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83d\udcda Full Documentation"}),(0,h.jsx)("p",{children:"Complete API reference, architecture diagrams, coding guidelines, and debugging guides. Everything you need to contribute effectively."})]})})]}),(0,h.jsxs)("div",{className:"row margin-top--lg",children:[(0,h.jsx)("div",{className:(0,n.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83d\udd27 DevContainer Ready"}),(0,h.jsx)("p",{children:"Pre-configured development environment with all dependencies. VS Code integration, linting, type checking, and debugging tools included."})]})}),(0,h.jsx)("div",{className:(0,n.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\u26a1 Performance Focused"}),(0,h.jsx)("p",{children:"Multi-layer caching, optimized algorithms, and efficient data structures. Coordinator updates in <500ms, sensor updates in <10ms."})]})}),(0,h.jsx)("div",{className:(0,n.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83e\udd1d Community Driven"}),(0,h.jsx)("p",{children:"Open source project with active development. Conventional commits, semantic versioning, and automated release management."})]})})]})]})})}function x(){const{siteConfig:e}=(0,r.A)();return(0,h.jsxs)(d.A,{title:e.title,description:"Developer documentation for the Tibber Prices custom integration for Home Assistant",children:[(0,h.jsx)(m,{}),(0,h.jsx)("main",{children:(0,h.jsx)(u,{})})]})}}}]); \ No newline at end of file diff --git a/developer/assets/js/1f391b9e.f1cc40fe.js b/developer/assets/js/1f391b9e.f1cc40fe.js new file mode 100644 index 0000000..9d00f67 --- /dev/null +++ b/developer/assets/js/1f391b9e.f1cc40fe.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[6061],{7973:(e,a,s)=>{s.r(a),s.d(a,{default:()=>g});s(6540);var t=s(4164),l=s(5500),d=s(7559),i=s(4042),r=s(1336),c=s(7763),n=s(6896),o=s(2153);const p={mdxPageWrapper:"mdxPageWrapper_j9I6"};var m=s(4848);function g(e){const{content:a}=e,{metadata:s,assets:g}=a,{title:x,editUrl:h,description:j,frontMatter:_,lastUpdatedBy:v,lastUpdatedAt:A}=s,{keywords:u,wrapperClassName:w,hide_table_of_contents:N}=_,b=g.image??_.image,k=!!(h||A||v);return(0,m.jsx)(l.e3,{className:(0,t.A)(w??d.G.wrapper.mdxPages,d.G.page.mdxPage),children:(0,m.jsxs)(i.A,{children:[(0,m.jsx)(l.be,{title:x,description:j,keywords:u,image:b}),(0,m.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,m.jsxs)("div",{className:(0,t.A)("row",p.mdxPageWrapper),children:[(0,m.jsxs)("div",{className:(0,t.A)("col",!N&&"col--8"),children:[(0,m.jsx)(n.A,{metadata:s}),(0,m.jsx)("article",{children:(0,m.jsx)(r.A,{children:(0,m.jsx)(a,{})})}),k&&(0,m.jsx)(o.A,{className:(0,t.A)("margin-top--sm",d.G.pages.pageFooterEditMetaRow),editUrl:h,lastUpdatedAt:A,lastUpdatedBy:v})]}),!N&&a.toc.length>0&&(0,m.jsx)("div",{className:"col col--2",children:(0,m.jsx)(c.A,{toc:a.toc,minHeadingLevel:_.toc_min_heading_level,maxHeadingLevel:_.toc_max_heading_level})})]})})]})})}}}]); \ No newline at end of file diff --git a/developer/assets/js/2130.b9982209.js b/developer/assets/js/2130.b9982209.js new file mode 100644 index 0000000..ff7ab69 --- /dev/null +++ b/developer/assets/js/2130.b9982209.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2130],{2130:(e,t,r)=>{r.d(t,{default:()=>rn});class a{constructor(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new a(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class n{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(e,t){return new n(t,a.range(this,e))}}class i{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var r,a,n="KaTeX parse error: "+e,o=t&&t.loc;if(o&&o.start<=o.end){var s=o.lexer.input;r=o.start,a=o.end,r===s.length?n+=" at end of input: ":n+=" at position "+(r+1)+": ";var l=s.slice(r,a).replace(/[^]/g,"$&\u0332");n+=(r>15?"\u2026"+s.slice(r-15,r):s.slice(0,r))+l+(a+15":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var h=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},m={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(l,e=>s[e])},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:h,isCharacterBox:function(e){var t=h(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}},c={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function p(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class u{constructor(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},c)if(c.hasOwnProperty(t)){var r=c[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:p(r)}}reportNonstrict(e,t,r){var a=this.strict;if("function"==typeof a&&(a=a(e,t,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new i("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]")}}useStrictBehavior(e,t,r){var a=this.strict;if("function"==typeof a)try{a=a(e,t,r)}catch(n){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]"),!1)))}isTrusted(e){if(e.url&&!e.protocol){var t=m.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}var r="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(r)}}class d{constructor(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}sup(){return g[f[this.id]]}sub(){return g[v[this.id]]}fracNum(){return g[b[this.id]]}fracDen(){return g[y[this.id]]}cramp(){return g[x[this.id]]}text(){return g[w[this.id]]}isTight(){return this.size>=2}}var g=[new d(0,0,!1),new d(1,0,!0),new d(2,1,!1),new d(3,1,!0),new d(4,2,!1),new d(5,2,!0),new d(6,3,!1),new d(7,3,!0)],f=[4,5,4,5,6,7,6,7],v=[5,5,5,5,7,7,7,7],b=[2,3,4,5,6,7,6,7],y=[3,3,5,5,7,7,7,7],x=[1,1,3,3,5,5,7,7],w=[0,1,2,3,2,3,2,3],k={DISPLAY:g[0],TEXT:g[2],SCRIPT:g[4],SCRIPTSCRIPT:g[6]},S=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var M=[];function z(e){for(var t=0;t=M[t]&&e<=M[t+1])return!0;return!1}S.forEach(e=>e.blocks.forEach(e=>M.push(...e)));var A=80,T={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"};class B{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),t=0;te.toText()).join("")}}var C={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},N={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},q={"\xc5":"A","\xd0":"D","\xde":"o","\xe5":"a","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function I(e,t,r){if(!C[t])throw new Error("Font metrics not found for font: "+t+".");var a=e.charCodeAt(0),n=C[t][a];if(!n&&e[0]in q&&(a=q[e[0]].charCodeAt(0),n=C[t][a]),n||"text"!==r||z(a)&&(n=C[t][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var R={};var H=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],O=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],E=function(e,t){return t.size<2?e:H[e-1][t.size-1]};class L{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||L.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=O[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return new L(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:E(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:O[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=E(L.BASESIZE,e);return this.size===t&&this.textSize===L.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==L.BASESIZE?["sizing","reset-size"+this.size,"size"+L.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!R[t=e>=5?0:e>=3?1:2]){var r=R[t]={cssEmPerMu:N.quad[t]/18};for(var a in N)N.hasOwnProperty(a)&&(r[a]=N[a][t])}return R[t]}(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}L.BASESIZE=6;var D={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},V={ex:!0,em:!0,mu:!0},P=function(e){return"string"!=typeof e&&(e=e.unit),e in D||e in V||"ex"===e},F=function(e,t){var r;if(e.unit in D)r=D[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var a;if(a=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=a.fontMetrics().xHeight;else{if("em"!==e.unit)throw new i("Invalid unit: '"+e.unit+"'");r=a.fontMetrics().quad}a!==t&&(r*=a.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},G=function(e){return+e.toFixed(4)+"em"},U=function(e){return e.filter(e=>e).join(" ")},Y=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var a=t.getColor();a&&(this.style.color=a)}},X=function(e){var t=document.createElement(e);for(var r in t.className=U(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var a in this.attributes)this.attributes.hasOwnProperty(a)&&t.setAttribute(a,this.attributes[a]);for(var n=0;n/=\x00-\x1f]/,_=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+m.escape(U(this.classes))+'"');var r="";for(var a in this.style)this.style.hasOwnProperty(a)&&(r+=m.hyphenate(a)+":"+this.style[a]+";");for(var n in r&&(t+=' style="'+m.escape(r)+'"'),this.attributes)if(this.attributes.hasOwnProperty(n)){if(W.test(n))throw new i("Invalid attribute name '"+n+"'");t+=" "+n+'="'+m.escape(this.attributes[n])+'"'}t+=">";for(var o=0;o"};class j{constructor(e,t,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Y.call(this,e,r,a),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return X.call(this,"span")}toMarkup(){return _.call(this,"span")}}class ${constructor(e,t,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Y.call(this,t,a),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return X.call(this,"a")}toMarkup(){return _.call(this,"a")}}class Z{constructor(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){var e=''+m.escape(this.alt)+'=n[0]&&e<=n[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=K[this.text])}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createTextNode(this.text),t=null;for(var r in this.italic>0&&((t=document.createElement("span")).style.marginRight=G(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=U(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=m.hyphenate(a)+":"+this.style[a]+";");r&&(e=!0,t+=' style="'+m.escape(r)+'"');var n=m.escape(this.text);return e?(t+=">",t+=n,t+=""):n}}class Q{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r':''}}class te{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e}toMarkup(){var e="","\\gt",!0),oe(se,he,ye,"\u2208","\\in",!0),oe(se,he,ye,"\ue020","\\@not"),oe(se,he,ye,"\u2282","\\subset",!0),oe(se,he,ye,"\u2283","\\supset",!0),oe(se,he,ye,"\u2286","\\subseteq",!0),oe(se,he,ye,"\u2287","\\supseteq",!0),oe(se,me,ye,"\u2288","\\nsubseteq",!0),oe(se,me,ye,"\u2289","\\nsupseteq",!0),oe(se,he,ye,"\u22a8","\\models"),oe(se,he,ye,"\u2190","\\leftarrow",!0),oe(se,he,ye,"\u2264","\\le"),oe(se,he,ye,"\u2264","\\leq",!0),oe(se,he,ye,"<","\\lt",!0),oe(se,he,ye,"\u2192","\\rightarrow",!0),oe(se,he,ye,"\u2192","\\to"),oe(se,me,ye,"\u2271","\\ngeq",!0),oe(se,me,ye,"\u2270","\\nleq",!0),oe(se,he,xe,"\xa0","\\ "),oe(se,he,xe,"\xa0","\\space"),oe(se,he,xe,"\xa0","\\nobreakspace"),oe(le,he,xe,"\xa0","\\ "),oe(le,he,xe,"\xa0"," "),oe(le,he,xe,"\xa0","\\space"),oe(le,he,xe,"\xa0","\\nobreakspace"),oe(se,he,xe,null,"\\nobreak"),oe(se,he,xe,null,"\\allowbreak"),oe(se,he,be,",",","),oe(se,he,be,";",";"),oe(se,me,pe,"\u22bc","\\barwedge",!0),oe(se,me,pe,"\u22bb","\\veebar",!0),oe(se,he,pe,"\u2299","\\odot",!0),oe(se,he,pe,"\u2295","\\oplus",!0),oe(se,he,pe,"\u2297","\\otimes",!0),oe(se,he,we,"\u2202","\\partial",!0),oe(se,he,pe,"\u2298","\\oslash",!0),oe(se,me,pe,"\u229a","\\circledcirc",!0),oe(se,me,pe,"\u22a1","\\boxdot",!0),oe(se,he,pe,"\u25b3","\\bigtriangleup"),oe(se,he,pe,"\u25bd","\\bigtriangledown"),oe(se,he,pe,"\u2020","\\dagger"),oe(se,he,pe,"\u22c4","\\diamond"),oe(se,he,pe,"\u22c6","\\star"),oe(se,he,pe,"\u25c3","\\triangleleft"),oe(se,he,pe,"\u25b9","\\triangleright"),oe(se,he,ve,"{","\\{"),oe(le,he,we,"{","\\{"),oe(le,he,we,"{","\\textbraceleft"),oe(se,he,ue,"}","\\}"),oe(le,he,we,"}","\\}"),oe(le,he,we,"}","\\textbraceright"),oe(se,he,ve,"{","\\lbrace"),oe(se,he,ue,"}","\\rbrace"),oe(se,he,ve,"[","\\lbrack",!0),oe(le,he,we,"[","\\lbrack",!0),oe(se,he,ue,"]","\\rbrack",!0),oe(le,he,we,"]","\\rbrack",!0),oe(se,he,ve,"(","\\lparen",!0),oe(se,he,ue,")","\\rparen",!0),oe(le,he,we,"<","\\textless",!0),oe(le,he,we,">","\\textgreater",!0),oe(se,he,ve,"\u230a","\\lfloor",!0),oe(se,he,ue,"\u230b","\\rfloor",!0),oe(se,he,ve,"\u2308","\\lceil",!0),oe(se,he,ue,"\u2309","\\rceil",!0),oe(se,he,we,"\\","\\backslash"),oe(se,he,we,"\u2223","|"),oe(se,he,we,"\u2223","\\vert"),oe(le,he,we,"|","\\textbar",!0),oe(se,he,we,"\u2225","\\|"),oe(se,he,we,"\u2225","\\Vert"),oe(le,he,we,"\u2225","\\textbardbl"),oe(le,he,we,"~","\\textasciitilde"),oe(le,he,we,"\\","\\textbackslash"),oe(le,he,we,"^","\\textasciicircum"),oe(se,he,ye,"\u2191","\\uparrow",!0),oe(se,he,ye,"\u21d1","\\Uparrow",!0),oe(se,he,ye,"\u2193","\\downarrow",!0),oe(se,he,ye,"\u21d3","\\Downarrow",!0),oe(se,he,ye,"\u2195","\\updownarrow",!0),oe(se,he,ye,"\u21d5","\\Updownarrow",!0),oe(se,he,fe,"\u2210","\\coprod"),oe(se,he,fe,"\u22c1","\\bigvee"),oe(se,he,fe,"\u22c0","\\bigwedge"),oe(se,he,fe,"\u2a04","\\biguplus"),oe(se,he,fe,"\u22c2","\\bigcap"),oe(se,he,fe,"\u22c3","\\bigcup"),oe(se,he,fe,"\u222b","\\int"),oe(se,he,fe,"\u222b","\\intop"),oe(se,he,fe,"\u222c","\\iint"),oe(se,he,fe,"\u222d","\\iiint"),oe(se,he,fe,"\u220f","\\prod"),oe(se,he,fe,"\u2211","\\sum"),oe(se,he,fe,"\u2a02","\\bigotimes"),oe(se,he,fe,"\u2a01","\\bigoplus"),oe(se,he,fe,"\u2a00","\\bigodot"),oe(se,he,fe,"\u222e","\\oint"),oe(se,he,fe,"\u222f","\\oiint"),oe(se,he,fe,"\u2230","\\oiiint"),oe(se,he,fe,"\u2a06","\\bigsqcup"),oe(se,he,fe,"\u222b","\\smallint"),oe(le,he,de,"\u2026","\\textellipsis"),oe(se,he,de,"\u2026","\\mathellipsis"),oe(le,he,de,"\u2026","\\ldots",!0),oe(se,he,de,"\u2026","\\ldots",!0),oe(se,he,de,"\u22ef","\\@cdots",!0),oe(se,he,de,"\u22f1","\\ddots",!0),oe(se,he,we,"\u22ee","\\varvdots"),oe(le,he,we,"\u22ee","\\varvdots"),oe(se,he,ce,"\u02ca","\\acute"),oe(se,he,ce,"\u02cb","\\grave"),oe(se,he,ce,"\xa8","\\ddot"),oe(se,he,ce,"~","\\tilde"),oe(se,he,ce,"\u02c9","\\bar"),oe(se,he,ce,"\u02d8","\\breve"),oe(se,he,ce,"\u02c7","\\check"),oe(se,he,ce,"^","\\hat"),oe(se,he,ce,"\u20d7","\\vec"),oe(se,he,ce,"\u02d9","\\dot"),oe(se,he,ce,"\u02da","\\mathring"),oe(se,he,ge,"\ue131","\\@imath"),oe(se,he,ge,"\ue237","\\@jmath"),oe(se,he,we,"\u0131","\u0131"),oe(se,he,we,"\u0237","\u0237"),oe(le,he,we,"\u0131","\\i",!0),oe(le,he,we,"\u0237","\\j",!0),oe(le,he,we,"\xdf","\\ss",!0),oe(le,he,we,"\xe6","\\ae",!0),oe(le,he,we,"\u0153","\\oe",!0),oe(le,he,we,"\xf8","\\o",!0),oe(le,he,we,"\xc6","\\AE",!0),oe(le,he,we,"\u0152","\\OE",!0),oe(le,he,we,"\xd8","\\O",!0),oe(le,he,ce,"\u02ca","\\'"),oe(le,he,ce,"\u02cb","\\`"),oe(le,he,ce,"\u02c6","\\^"),oe(le,he,ce,"\u02dc","\\~"),oe(le,he,ce,"\u02c9","\\="),oe(le,he,ce,"\u02d8","\\u"),oe(le,he,ce,"\u02d9","\\."),oe(le,he,ce,"\xb8","\\c"),oe(le,he,ce,"\u02da","\\r"),oe(le,he,ce,"\u02c7","\\v"),oe(le,he,ce,"\xa8",'\\"'),oe(le,he,ce,"\u02dd","\\H"),oe(le,he,ce,"\u25ef","\\textcircled");var ke={"--":!0,"---":!0,"``":!0,"''":!0};oe(le,he,we,"\u2013","--",!0),oe(le,he,we,"\u2013","\\textendash"),oe(le,he,we,"\u2014","---",!0),oe(le,he,we,"\u2014","\\textemdash"),oe(le,he,we,"\u2018","`",!0),oe(le,he,we,"\u2018","\\textquoteleft"),oe(le,he,we,"\u2019","'",!0),oe(le,he,we,"\u2019","\\textquoteright"),oe(le,he,we,"\u201c","``",!0),oe(le,he,we,"\u201c","\\textquotedblleft"),oe(le,he,we,"\u201d","''",!0),oe(le,he,we,"\u201d","\\textquotedblright"),oe(se,he,we,"\xb0","\\degree",!0),oe(le,he,we,"\xb0","\\degree"),oe(le,he,we,"\xb0","\\textdegree",!0),oe(se,he,we,"\xa3","\\pounds"),oe(se,he,we,"\xa3","\\mathsterling",!0),oe(le,he,we,"\xa3","\\pounds"),oe(le,he,we,"\xa3","\\textsterling",!0),oe(se,me,we,"\u2720","\\maltese"),oe(le,me,we,"\u2720","\\maltese");for(var Se='0123456789/@."',Me=0;Me<14;Me++){var ze=Se.charAt(Me);oe(se,he,we,ze,ze)}for(var Ae='0123456789!@*()-=+";:?/.,',Te=0;Te<25;Te++){var Be=Ae.charAt(Te);oe(le,he,we,Be,Be)}for(var Ce="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ne=0;Ne<52;Ne++){var qe=Ce.charAt(Ne);oe(se,he,ge,qe,qe),oe(le,he,we,qe,qe)}oe(se,me,we,"C","\u2102"),oe(le,me,we,"C","\u2102"),oe(se,me,we,"H","\u210d"),oe(le,me,we,"H","\u210d"),oe(se,me,we,"N","\u2115"),oe(le,me,we,"N","\u2115"),oe(se,me,we,"P","\u2119"),oe(le,me,we,"P","\u2119"),oe(se,me,we,"Q","\u211a"),oe(le,me,we,"Q","\u211a"),oe(se,me,we,"R","\u211d"),oe(le,me,we,"R","\u211d"),oe(se,me,we,"Z","\u2124"),oe(le,me,we,"Z","\u2124"),oe(se,he,ge,"h","\u210e"),oe(le,he,ge,"h","\u210e");for(var Ie="",Re=0;Re<52;Re++){var He=Ce.charAt(Re);oe(se,he,ge,He,Ie=String.fromCharCode(55349,56320+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56372+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56424+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56580+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56684+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56736+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56788+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56840+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56944+Re)),oe(le,he,we,He,Ie),Re<26&&(oe(se,he,ge,He,Ie=String.fromCharCode(55349,56632+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56476+Re)),oe(le,he,we,He,Ie))}oe(se,he,ge,"k",Ie=String.fromCharCode(55349,56668)),oe(le,he,we,"k",Ie);for(var Oe=0;Oe<10;Oe++){var Ee=Oe.toString();oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57294+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57314+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57324+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57334+Oe)),oe(le,he,we,Ee,Ie)}for(var Le="\xd0\xde\xfe",De=0;De<3;De++){var Ve=Le.charAt(De);oe(se,he,ge,Ve,Ve),oe(le,he,we,Ve,Ve)}var Pe=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Fe=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],Ge=function(e,t,r){return ie[r][e]&&ie[r][e].replace&&(e=ie[r][e].replace),{value:e,metrics:I(e,t,r)}},Ue=function(e,t,r,a,n){var i,o=Ge(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===r||a&&"mathit"===a.font)&&(l=0),i=new J(e,s.height,s.depth,l,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),i=new J(e,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var h=a.getColor();h&&(i.style.color=h)}return i},Ye=(e,t)=>{if(U(e.classes)!==U(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var a in e.style)if(e.style.hasOwnProperty(a)&&e.style[a]!==t.style[a])return!1;for(var n in t.style)if(t.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;return!0},Xe=function(e){for(var t=0,r=0,a=0,n=0;nt&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=a},We=function(e,t,r,a){var n=new j(e,t,r,a);return Xe(n),n},_e=(e,t,r,a)=>new j(e,t,r,a),je=function(e){var t=new B(e);return Xe(t),t},$e=function(e,t,r){var a="";switch(e){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=e}return a+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ze={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ke={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Je={fontMap:Ze,makeSymbol:Ue,mathsym:function(e,t,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ge(e,"Main-Bold",t).metrics?Ue(e,"Main-Bold",t,r,a.concat(["mathbf"])):"\\"===e||"main"===ie[t][e].font?Ue(e,"Main-Regular",t,r,a):Ue(e,"AMS-Regular",t,r,a.concat(["amsrm"]))},makeSpan:We,makeSvgSpan:_e,makeLineSpan:function(e,t,r){var a=We([e],[],t);return a.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),a.style.borderBottomWidth=G(a.height),a.maxFontSize=1,a},makeAnchor:function(e,t,r,a){var n=new $(e,t,r,a);return Xe(n),n},makeFragment:je,wrapFragment:function(e,t){return e instanceof B?We([],[e],t):e},makeVList:function(e,t){for(var{children:r,depth:a}=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],a=-t[0].shift-t[0].elem.depth,n=a,i=1;i0)return Ue(n,h,a,t,o.concat(m));if(l){var c,p;if("boldsymbol"===l){var u=function(e,t,r,a,n){return"textord"!==n&&Ge(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(n,a,0,0,r);c=u.fontName,p=[u.fontClass]}else s?(c=Ze[l].fontName,p=[l]):(c=$e(l,t.fontWeight,t.fontShape),p=[l,t.fontWeight,t.fontShape]);if(Ge(n,c,a).metrics)return Ue(n,c,a,t,o.concat(p));if(ke.hasOwnProperty(n)&&"Typewriter"===c.slice(0,10)){for(var d=[],g=0;g{var r=We(["mspace"],[],t),a=F(e,t);return r.style.marginRight=G(a),r},staticSvg:function(e,t){var[r,a,n]=Ke[e],i=new ee(r),o=new Q([i],{width:G(a),height:G(n),style:"width:"+G(a),viewBox:"0 0 "+1e3*a+" "+1e3*n,preserveAspectRatio:"xMinYMin"}),s=_e(["overlay"],[o],t);return s.height=n,s.style.height=G(n),s.style.width=G(a),s},svgData:Ke,tryCombineChars:e=>{for(var t=0;t{var r=t.classes[0],a=e.classes[0];"mbin"===r&&ut.includes(a)?t.classes[0]="mord":"mbin"===a&&pt.includes(r)&&(e.classes[0]="mord")},{node:m},c,p),vt(n,(e,t)=>{var r=xt(t),a=xt(e),n=r&&a?e.hasClass("mtight")?at[r][a]:rt[r][a]:null;if(n)return Je.makeGlue(n,l)},{node:m},c,p),n},vt=function e(t,r,a,n,i){n&&t.push(n);for(var o=0;or=>{t.splice(e+1,0,r),o++})(o)}}n&&t.pop()},bt=function(e){return e instanceof B||e instanceof $||e instanceof j&&e.hasClass("enclosing")?e:null},yt=function e(t,r){var a=bt(t);if(a){var n=a.children;if(n.length){if("right"===r)return e(n[n.length-1],"right");if("left"===r)return e(n[0],"left")}}return t},xt=function(e,t){return e?(t&&(e=yt(e,t)),gt[e.classes[0]]||null):null},wt=function(e,t){var r=["nulldelimiter"].concat(e.baseSizingClasses());return ct(t.concat(r))},kt=function(e,t,r){if(!e)return ct();if(it[e.type]){var a=it[e.type](e,t);if(r&&t.size!==r.size){a=ct(t.sizingClasses(r),[a],t);var n=t.sizeMultiplier/r.sizeMultiplier;a.height*=n,a.depth*=n}return a}throw new i("Got group of unknown type: '"+e.type+"'")};function St(e,t){var r=ct(["base"],e,t),a=ct(["strut"]);return a.style.height=G(r.height+r.depth),r.depth&&(a.style.verticalAlign=G(-r.depth)),r.children.unshift(a),r}function Mt(e,t){var r=null;1===e.length&&"tag"===e[0].type&&(r=e[0].tag,e=e[0].body);var a,n=ft(e,t,"root");2===n.length&&n[1].hasClass("tag")&&(a=n.pop());for(var i,o=[],s=[],l=0;l0&&(o.push(St(s,t)),s=[]),o.push(n[l]));s.length>0&&o.push(St(s,t)),r?((i=St(ft(r,t,!0))).classes=["tag"],o.push(i)):a&&o.push(a);var m=ct(["katex-html"],o);if(m.setAttribute("aria-hidden","true"),i){var c=i.children[0];c.style.height=G(m.height+m.depth),m.depth&&(c.style.verticalAlign=G(-m.depth))}return m}function zt(e){return new B(e)}class At{constructor(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=U(this.classes));for(var r=0;r0&&(e+=' class ="'+m.escape(U(this.classes))+'"'),e+=">";for(var r=0;r"}toText(){return this.children.map(e=>e.toText()).join("")}}class Tt{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return m.escape(this.toText())}toText(){return this.text}}var Bt={MathNode:At,TextNode:Tt,SpaceNode:class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",G(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},newDocumentFragment:zt},Ct=function(e,t,r){return!ie[t][e]||!ie[t][e].replace||55349===e.charCodeAt(0)||ke.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=ie[t][e].replace),new Bt.TextNode(e)},Nt=function(e){return 1===e.length?e[0]:new Bt.MathNode("mrow",e)},qt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var a=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathsfit"===r)return"sans-serif-italic";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=e.text;return["\\imath","\\jmath"].includes(n)?null:(ie[a][n]&&ie[a][n].replace&&(n=ie[a][n].replace),I(n,Je.fontMap[r].fontName,a)?Je.fontMap[r].variant:null)};function It(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){var t=e.children[0];return t instanceof Tt&&"."===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){var r=e.children[0];return r instanceof Tt&&","===r.text}return!1}var Rt=function(e,t,r){if(1===e.length){var a=Ot(e[0],t);return r&&a instanceof At&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o=1&&("mn"===n.type||It(n))){var l=s.children[0];l instanceof At&&"mn"===l.type&&(l.children=[...n.children,...l.children],i.pop())}else if("mi"===n.type&&1===n.children.length){var h=n.children[0];if(h instanceof Tt&&"\u0338"===h.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof Tt&&m.text.length>0&&(m.text=m.text.slice(0,1)+"\u0338"+m.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Ht=function(e,t,r){return Nt(Rt(e,t,r))},Ot=function(e,t){if(!e)return new Bt.MathNode("mrow");if(ot[e.type])return ot[e.type](e,t);throw new i("Got group of unknown type: '"+e.type+"'")};function Et(e,t,r,a,n){var i,o=Rt(e,r);i=1===o.length&&o[0]instanceof At&&["mrow","mtable"].includes(o[0].type)?o[0]:new Bt.MathNode("mrow",o);var s=new Bt.MathNode("annotation",[new Bt.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new Bt.MathNode("semantics",[i,s]),h=new Bt.MathNode("math",[l]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&h.setAttribute("display","block");var m=n?"katex":"katex-mathml";return Je.makeSpan([m],[h])}var Lt=function(e){return new L({style:e.displayMode?k.DISPLAY:k.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Dt=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Je.makeSpan(r,[e])}return e},Vt={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Pt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ft=function(e,t,r,a,n){var i,o=e.height+e.depth+r+a;if(/fbox|color|angl/.test(t)){if(i=Je.makeSpan(["stretchy",t],[],n),"fbox"===t){var s=n.color&&n.getColor();s&&(i.style.borderColor=s)}}else{var l=[];/^[bx]cancel$/.test(t)&&l.push(new te({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&l.push(new te({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Q(l,{width:"100%",height:G(o)});i=Je.makeSvgSpan([],[h],n)}return i.height=o,i.style.height=G(o),i},Gt=function(e){var t=new Bt.MathNode("mo",[new Bt.TextNode(Vt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Ut=function(e,t){var{span:r,minWidth:a,height:n}=function(){var r=4e5,a=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(a)){var n,i,o,s="ordgroup"===(u=e.base).type?u.body.length:1;if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var l=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][l],n=[0,239,300,360,420][l],o=[0,.24,.3,.3,.36,.42][l],i=a+l):(r=[0,600,1033,2339,2340][l],n=[0,260,286,306,312][l],o=[0,.26,.286,.3,.306,.34][l],i="tilde"+l)}var h=new ee(i),m=new Q([h],{width:"100%",height:G(o),viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Je.makeSvgSpan([],[m],t),minWidth:0,height:o}}var c,p,u,d=[],g=Pt[a],[f,v,b]=g,y=b/1e3,x=f.length;if(1===x)c=["hide-tail"],p=[g[3]];else if(2===x)c=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==x)throw new Error("Correct katexImagesData or update code here to support\n "+x+" children.");c=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w0&&(r.style.minWidth=G(a)),r};function Yt(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Xt(e){var t=Wt(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Wt(e){return e&&("atom"===e.type||ne.hasOwnProperty(e.type))?e:null}var _t=(e,t)=>{var r,a,n;e&&"supsub"===e.type?(r=(a=Yt(e.base,"accent")).base,e.base=r,n=function(e){if(e instanceof j)return e;throw new Error("Expected span but got "+String(e)+".")}(kt(e,t)),e.base=a):r=(a=Yt(e,"accent")).base;var i=kt(r,t.havingCrampedStyle()),o=0;if(a.isShifty&&m.isCharacterBox(r)){var s=m.getBaseElem(r);o=re(kt(s,t.havingCrampedStyle())).skew}var l,h="\\c"===a.label,c=h?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight);if(a.isStretchy)l=Ut(a,t),l=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+G(2*o)+")",marginLeft:G(2*o)}:void 0}]},t);else{var p,u;"\\vec"===a.label?(p=Je.staticSvg("vec",t),u=Je.svgData.vec[1]):((p=re(p=Je.makeOrd({mode:a.mode,text:a.label},t,"textord"))).italic=0,u=p.width,h&&(c+=p.depth)),l=Je.makeSpan(["accent-body"],[p]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),c=i.height);var g=o;d||(g-=u/2),l.style.left=G(g),"\\textcircled"===a.label&&(l.style.top=".2em"),l=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-c},{type:"elem",elem:l}]},t)}var f=Je.makeSpan(["mord","accent"],[l],t);return n?(n.children[0]=f,n.height=Math.max(f.height,n.height),n.classes[0]="mord",n):f},jt=(e,t)=>{var r=e.isStretchy?Gt(e.label):new Bt.MathNode("mo",[Ct(e.label,e.mode)]),a=new Bt.MathNode("mover",[Ot(e.base,t),r]);return a.setAttribute("accent","true"),a},$t=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));st({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=ht(t[0]),a=!$t.test(e.funcName),n=!a||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:_t,mathmlBuilder:jt}),st({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],a=e.parser.mode;return"math"===a&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:_t,mathmlBuilder:jt}),st({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:(e,t)=>{var r=kt(e.base,t),a=Ut(e,t),n="\\utilde"===e.label?.12:0,i=Je.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},t);return Je.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=Gt(e.label),a=new Bt.MathNode("munder",[Ot(e.base,t),r]);return a.setAttribute("accentunder","true"),a}});var Zt=e=>{var t=new Bt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};st({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a,funcName:n}=e;return{type:"xArrow",mode:a.mode,label:n,body:t[0],below:r[0]}},htmlBuilder(e,t){var r,a=t.style,n=t.havingStyle(a.sup()),i=Je.wrapFragment(kt(e.body,n,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(n=t.havingStyle(a.sub()),(r=Je.wrapFragment(kt(e.below,n,t),t)).classes.push(o+"-arrow-pad"));var s,l=Ut(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,m=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(m-=i.depth),r){var c=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:c}]},t)}else s=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h}]},t);return s.children[0].children[0].children[1].classes.push("svg-align"),Je.makeSpan(["mrel","x-arrow"],[s],t)},mathmlBuilder(e,t){var r,a=Gt(e.label);if(a.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var n=Zt(Ot(e.body,t));if(e.below){var i=Zt(Ot(e.below,t));r=new Bt.MathNode("munderover",[a,i,n])}else r=new Bt.MathNode("mover",[a,n])}else if(e.below){var o=Zt(Ot(e.below,t));r=new Bt.MathNode("munder",[a,o])}else r=Zt(),r=new Bt.MathNode("mover",[a,r]);return r}});var Kt=Je.makeSpan;function Jt(e,t){var r=ft(e.body,t,!0);return Kt([e.mclass],r,t)}function Qt(e,t){var r,a=Rt(e.body,t);return"minner"===e.mclass?r=new Bt.MathNode("mpadded",a):"mord"===e.mclass?e.isCharacterBox?(r=a[0]).type="mi":r=new Bt.MathNode("mi",a):(e.isCharacterBox?(r=a[0]).type="mo":r=new Bt.MathNode("mo",a),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}st({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+a.slice(5),body:mt(n),isCharacterBox:m.isCharacterBox(n)}},htmlBuilder:Jt,mathmlBuilder:Qt});var er=e=>{var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};st({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:er(t[0]),body:mt(t[1]),isCharacterBox:m.isCharacterBox(t[1])}}}),st({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var r,{parser:a,funcName:n}=e,i=t[1],o=t[0];r="\\stackrel"!==n?er(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:mt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===n?null:o,sub:"\\underset"===n?o:null};return{type:"mclass",mode:a.mode,mclass:r,body:[l],isCharacterBox:m.isCharacterBox(l)}},htmlBuilder:Jt,mathmlBuilder:Qt}),st({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:er(t[0]),body:mt(t[0])}},htmlBuilder(e,t){var r=ft(e.body,t,!0),a=Je.makeSpan([e.mclass],r,t);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(e,t){var r=Rt(e.body,t),a=new Bt.MathNode("mstyle",r);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var tr={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},rr=()=>({type:"styling",body:[],mode:"math",style:"display"}),ar=e=>"textord"===e.type&&"@"===e.text,nr=(e,t)=>("mathord"===e.type||"atom"===e.type)&&e.text===t;function ir(e,t,r){var a=tr[e];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(a,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var n={type:"atom",text:a,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[n],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}st({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"cdlabel",mode:r.mode,side:a.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),a=Je.wrapFragment(kt(e.label,r,t),t);return a.classes.push("cd-label-"+e.side),a.style.bottom=G(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(e,t){var r=new Bt.MathNode("mrow",[Ot(e.label,t)]);return(r=new Bt.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Bt.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),st({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Je.wrapFragment(kt(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:(e,t)=>new Bt.MathNode("mrow",[Ot(e.fragment,t)])}),st({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,a=Yt(t[0],"ordgroup").body,n="",o=0;o=1114111)throw new i("\\@char with invalid code point "+n);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var or=(e,t)=>{var r=ft(e.body,t.withColor(e.color),!1);return Je.makeFragment(r)},sr=(e,t)=>{var r=Rt(e.body,t.withColor(e.color)),a=new Bt.MathNode("mstyle",r);return a.setAttribute("mathcolor",e.color),a};st({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,a=Yt(t[0],"color-token").color,n=t[1];return{type:"color",mode:r.mode,color:a,body:mt(n)}},htmlBuilder:or,mathmlBuilder:sr}),st({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:a}=e,n=Yt(t[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var i=r.parseExpression(!0,a);return{type:"color",mode:r.mode,color:n,body:i}},htmlBuilder:or,mathmlBuilder:sr}),st({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:a}=e,n="["===a.gullet.future().text?a.parseSizeGroup(!0):null,i=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:i,size:n&&Yt(n,"size").value}},htmlBuilder(e,t){var r=Je.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=G(F(e.size,t)))),r},mathmlBuilder(e,t){var r=new Bt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",G(F(e.size,t)))),r}});var lr={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},hr=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new i("Expected a control sequence",e);return t},mr=(e,t,r,a)=>{var n=e.gullet.macros.get(r.text);null==n&&(r.noexpand=!0,n={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,n,a)};st({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var a=t.fetch();if(lr[a.text])return"\\global"!==r&&"\\\\globallong"!==r||(a.text=lr[a.text]),Yt(t.parseFunction(),"internal");throw new i("Invalid token after macro prefix",a)}}),st({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=t.gullet.popToken(),n=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new i("Expected a control sequence",a);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(a=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(a=t.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new i('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new i('Argument number "'+a.text+'" out of order');s++,l.push([])}else{if("EOF"===a.text)throw new i("Expected a macro definition");l[s].push(a.text)}var{tokens:h}=t.gullet.consumeArg();return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(n,{tokens:h,numArgs:s,delimiters:l},r===lr[r]),{type:"internal",mode:t.mode}}}),st({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=hr(t.gullet.popToken());t.gullet.consumeSpaces();var n=(e=>{var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t})(t);return mr(t,a,n,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),st({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=hr(t.gullet.popToken()),n=t.gullet.popToken(),i=t.gullet.popToken();return mr(t,a,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(n),{type:"internal",mode:t.mode}}});var cr=function(e,t,r){var a=I(ie.math[e]&&ie.math[e].replace||e,t,r);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return a},pr=function(e,t,r,a){var n=r.havingBaseStyle(t),i=Je.makeSpan(a.concat(n.sizingClasses(r)),[e],r),o=n.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=n.sizeMultiplier,i},ur=function(e,t,r){var a=t.havingBaseStyle(r),n=(1-t.sizeMultiplier/a.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=G(n),e.height-=n,e.depth+=n},dr=function(e,t,r,a,n,i){var o=function(e,t,r,a){return Je.makeSymbol(e,"Size"+t+"-Regular",r,a)}(e,t,n,a),s=pr(Je.makeSpan(["delimsizing","size"+t],[o],a),k.TEXT,a,i);return r&&ur(s,a,k.TEXT),s},gr=function(e,t,r){var a;return a="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Je.makeSpan(["delimsizinginner",a],[Je.makeSpan([],[Je.makeSymbol(e,t,r)])])}},fr=function(e,t,r){var a=C["Size4-Regular"][e.charCodeAt(0)]?C["Size4-Regular"][e.charCodeAt(0)][4]:C["Size1-Regular"][e.charCodeAt(0)][4],n=new ee("inner",function(e,t){switch(e){case"\u239c":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"\u239f":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23a2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23a5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23aa":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23d0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),i=new Q([n],{width:G(a),height:G(t),style:"width:"+G(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=Je.makeSvgSpan([],[i],r);return o.height=t,o.style.height=G(t),o.style.width=G(a),{type:"elem",elem:o}},vr={type:"kern",size:-.008},br=["|","\\lvert","\\rvert","\\vert"],yr=["\\|","\\lVert","\\rVert","\\Vert"],xr=function(e,t,r,a,n,i){var o,s,l,h,m="",c=0;o=l=h=e,s=null;var p="Size1-Regular";"\\uparrow"===e?l=h="\u23d0":"\\Uparrow"===e?l=h="\u2016":"\\downarrow"===e?o=l="\u23d0":"\\Downarrow"===e?o=l="\u2016":"\\updownarrow"===e?(o="\\uparrow",l="\u23d0",h="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="\u2016",h="\\Downarrow"):br.includes(e)?(l="\u2223",m="vert",c=333):yr.includes(e)?(l="\u2225",m="doublevert",c=556):"["===e||"\\lbrack"===e?(o="\u23a1",l="\u23a2",h="\u23a3",p="Size4-Regular",m="lbrack",c=667):"]"===e||"\\rbrack"===e?(o="\u23a4",l="\u23a5",h="\u23a6",p="Size4-Regular",m="rbrack",c=667):"\\lfloor"===e||"\u230a"===e?(l=o="\u23a2",h="\u23a3",p="Size4-Regular",m="lfloor",c=667):"\\lceil"===e||"\u2308"===e?(o="\u23a1",l=h="\u23a2",p="Size4-Regular",m="lceil",c=667):"\\rfloor"===e||"\u230b"===e?(l=o="\u23a5",h="\u23a6",p="Size4-Regular",m="rfloor",c=667):"\\rceil"===e||"\u2309"===e?(o="\u23a4",l=h="\u23a5",p="Size4-Regular",m="rceil",c=667):"("===e||"\\lparen"===e?(o="\u239b",l="\u239c",h="\u239d",p="Size4-Regular",m="lparen",c=875):")"===e||"\\rparen"===e?(o="\u239e",l="\u239f",h="\u23a0",p="Size4-Regular",m="rparen",c=875):"\\{"===e||"\\lbrace"===e?(o="\u23a7",s="\u23a8",h="\u23a9",l="\u23aa",p="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="\u23ab",s="\u23ac",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(o="\u23a7",h="\u23a9",l="\u23aa",p="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(o="\u23ab",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(o="\u23a7",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(o="\u23ab",h="\u23a9",l="\u23aa",p="Size4-Regular");var u=cr(o,p,n),d=u.height+u.depth,g=cr(l,p,n),f=g.height+g.depth,v=cr(h,p,n),b=v.height+v.depth,y=0,x=1;if(null!==s){var w=cr(s,p,n);y=w.height+w.depth,x=2}var S=d+b+y,M=S+Math.max(0,Math.ceil((t-S)/(x*f)))*x*f,z=a.fontMetrics().axisHeight;r&&(z*=a.sizeMultiplier);var A=M/2-z,T=[];if(m.length>0){var B=M-d-b,C=Math.round(1e3*M),N=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v"+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v"+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z\nM367 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v"+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+" v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+" v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v602 h84z\nM403 1759 V0 H319 V1759 v"+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v602 h84z\nM347 1759 V0 h-84 V1759 v"+t+" v602 h84z";case"lparen":return"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,"+(t+84)+"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-"+(t+92)+"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";case"rparen":return"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,"+(t+9)+"\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-"+(t+144)+"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";default:throw new Error("Unknown stretchy delimiter.")}}(m,Math.round(1e3*B)),q=new ee(m,N),I=(c/1e3).toFixed(3)+"em",R=(C/1e3).toFixed(3)+"em",H=new Q([q],{width:I,height:R,viewBox:"0 0 "+c+" "+C}),O=Je.makeSvgSpan([],[H],a);O.height=C/1e3,O.style.width=I,O.style.height=R,T.push({type:"elem",elem:O})}else{if(T.push(gr(h,p,n)),T.push(vr),null===s){var E=M-d-b+.016;T.push(fr(l,E,a))}else{var L=(M-d-b-y)/2+.016;T.push(fr(l,L,a)),T.push(vr),T.push(gr(s,p,n)),T.push(vr),T.push(fr(l,L,a))}T.push(vr),T.push(gr(o,p,n))}var D=a.havingBaseStyle(k.TEXT),V=Je.makeVList({positionType:"bottom",positionData:A,children:T},D);return pr(Je.makeSpan(["delimsizing","mult"],[V],D),k.TEXT,a,i)},wr=.08,kr=function(e,t,r,a,n){var i=function(e,t,r){t*=1e3;var a="";switch(e){case"sqrtMain":a=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize1":a=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize2":a=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize3":a=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize4":a=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,A);break;case"sqrtTall":a=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,A,r)}return a}(e,a,r),o=new ee(e,i),s=new Q([o],{width:"400em",height:G(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Je.makeSvgSpan(["hide-tail"],[s],n)},Sr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],Mr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],zr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Ar=[0,1.2,1.8,2.4,3],Tr=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Br=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"stack"}],Cr=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Nr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},qr=function(e,t,r,a){for(var n=Math.min(2,3-a.style.size);nt)return r[n]}return r[r.length-1]},Ir=function(e,t,r,a,n,i){var o;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=zr.includes(e)?Tr:Sr.includes(e)?Cr:Br;var s=qr(e,t,o,a);return"small"===s.type?function(e,t,r,a,n,i){var o=Je.makeSymbol(e,"Main-Regular",n,a),s=pr(o,t,a,i);return r&&ur(s,a,t),s}(e,s.style,r,a,n,i):"large"===s.type?dr(e,s.size,r,a,n,i):xr(e,t,r,a,n,i)},Rr={sqrtImage:function(e,t){var r,a,n=t.havingBaseSizing(),i=qr("\\surd",e*n.sizeMultiplier,Cr,n),o=n.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,m=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=kr("sqrtMain",l=(1+s+wr)/o,m=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Ar[i.size],h=(Ar[i.size]+s)/o,l=(Ar[i.size]+s+wr)/o,(r=kr("sqrtSize"+i.size,l,m,s,t)).style.minWidth="1.02em",a=1/o):(l=e+s+wr,h=e+s,m=Math.floor(1e3*e+s)+80,(r=kr("sqrtTall",l,m,s,t)).style.minWidth="0.742em",a=1.056),r.height=h,r.style.height=G(l),{span:r,advanceWidth:a,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,a,n){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),Sr.includes(e)||zr.includes(e))return dr(e,t,!1,r,a,n);if(Mr.includes(e))return xr(e,Ar[t],!1,r,a,n);throw new i("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:Ar,customSizedDelim:Ir,leftRightDelim:function(e,t,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return Ir(e,h,!0,a,n,i)}},Hr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Or=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Er(e,t){var r=Wt(e);if(r&&Or.includes(r.text))return r;throw new i(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function Lr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}st({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=Er(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Hr[e.funcName].size,mclass:Hr[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>"."===e.delim?Je.makeSpan([e.mclass]):Rr.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];"."!==e.delim&&t.push(Ct(e.delim,e.mode));var r=new Bt.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var a=G(Rr.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",a),r.setAttribute("maxsize",a),r}}),st({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new i("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Er(t[0],e).text,color:r}}}),st({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Er(t[0],e),a=e.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Yt(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Lr(e);for(var r,a,n=ft(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l{Lr(e);var r=Rt(e.body,t);if("."!==e.left){var a=new Bt.MathNode("mo",[Ct(e.left,e.mode)]);a.setAttribute("fence","true"),r.unshift(a)}if("."!==e.right){var n=new Bt.MathNode("mo",[Ct(e.right,e.mode)]);n.setAttribute("fence","true"),e.rightColor&&n.setAttribute("mathcolor",e.rightColor),r.push(n)}return Nt(r)}}),st({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Er(t[0],e);if(!e.parser.leftrightDepth)throw new i("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;if("."===e.delim)r=wt(t,[]);else{r=Rr.sizedDelim(e.delim,1,t,e.mode,[]);var a={delim:e.delim,options:t};r.isMiddle=a}return r},mathmlBuilder:(e,t)=>{var r="\\vert"===e.delim||"|"===e.delim?Ct("|","text"):Ct(e.delim,e.mode),a=new Bt.MathNode("mo",[r]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var Dr=(e,t)=>{var r,a,n,i=Je.wrapFragment(kt(e.body,t),t),o=e.label.slice(1),s=t.sizeMultiplier,l=0,h=m.isCharacterBox(e.body);if("sout"===o)(r=Je.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/s,l=-.5*t.fontMetrics().xHeight;else if("phase"===o){var c=F({number:.6,unit:"pt"},t),p=F({number:.35,unit:"ex"},t);s/=t.havingBaseSizing().sizeMultiplier;var u=i.height+i.depth+c+p;i.style.paddingLeft=G(u/2+c);var d=Math.floor(1e3*u*s),g="M400000 "+(a=d)+" H0 L"+a/2+" 0 l65 45 L145 "+(a-80)+" H400000z",f=new Q([new ee("phase",g)],{width:"400em",height:G(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});(r=Je.makeSvgSpan(["hide-tail"],[f],t)).style.height=G(u),l=i.depth+c+p}else{/cancel/.test(o)?h||i.classes.push("cancel-pad"):"angl"===o?i.classes.push("anglpad"):i.classes.push("boxpad");var v=0,b=0,y=0;/box/.test(o)?(y=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),b=v=t.fontMetrics().fboxsep+("colorbox"===o?0:y)):"angl"===o?(v=4*(y=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness)),b=Math.max(0,.25-i.depth)):b=v=h?.2:0,r=Ft(i,o,v,b,t),/fbox|boxed|fcolorbox/.test(o)?(r.style.borderStyle="solid",r.style.borderWidth=G(y)):"angl"===o&&.049!==y&&(r.style.borderTopWidth=G(y),r.style.borderRightWidth=G(y)),l=i.depth+b,e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor,e.borderColor&&(r.style.borderColor=e.borderColor))}if(e.backgroundColor)n=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:l},{type:"elem",elem:i,shift:0}]},t);else{var x=/cancel|phase/.test(o)?["svg-align"]:[];n=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:0},{type:"elem",elem:r,shift:l,wrapperClasses:x}]},t)}return/cancel/.test(o)&&(n.height=i.height,n.depth=i.depth),/cancel/.test(o)&&!h?Je.makeSpan(["mord","cancel-lap"],[n],t):Je.makeSpan(["mord"],[n],t)},Vr=(e,t)=>{var r=0,a=new Bt.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Ot(e.body,t)]);switch(e.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var n=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(e.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&a.setAttribute("mathbackground",e.backgroundColor),a};st({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Yt(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Yt(t[0],"color-token").color,o=Yt(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}}),st({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"enclose",mode:r.mode,label:a,body:n}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var Pr={};function Fr(e){for(var{type:t,names:r,props:a,handler:n,htmlBuilder:i,mathmlBuilder:o}=e,s={type:t,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},l=0;l{if(!e.parser.settings.displayMode)throw new i("{"+e.envName+"} can be used only in display mode.")};function Wr(e){if(-1===e.indexOf("ed"))return-1===e.indexOf("*")}function _r(e,t,r){var{hskipBeforeAndAfter:a,addJot:o,cols:s,arraystretch:l,colSeparationType:h,autoTag:m,singleRow:c,emptySingleRow:p,maxNumCols:u,leqno:d}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!l){var g=e.gullet.expandMacroAsText("\\arraystretch");if(null==g)l=1;else if(!(l=parseFloat(g))||l<0)throw new i("Invalid \\arraystretch: "+g)}e.gullet.beginGroup();var f=[],v=[f],b=[],y=[],x=null!=m?[]:void 0;function w(){m&&e.gullet.macros.set("\\@eqnsw","1",!0)}function k(){x&&(e.gullet.macros.get("\\df@tag")?(x.push(e.subparse([new n("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):x.push(Boolean(m)&&"1"===e.gullet.macros.get("\\@eqnsw")))}for(w(),y.push(Yr(e));;){var S=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),S={type:"ordgroup",mode:e.mode,body:S},r&&(S={type:"styling",mode:e.mode,style:r,body:[S]}),f.push(S);var M=e.fetch().text;if("&"===M){if(u&&f.length===u){if(c||h)throw new i("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else{if("\\end"===M){k(),1===f.length&&"styling"===S.type&&0===S.body[0].body.length&&(v.length>1||!p)&&v.pop(),y.length0&&(y+=.25),h.push({pos:y,isDashed:e[t]})}for(x(o[0]),r=0;r0&&(M<(B+=b)&&(M=B),B=0),e.addJot&&(M+=g),z.height=S,z.depth=M,y+=S,z.pos=y,y+=M+B,l[r]=z,x(o[r+1])}var C,N,q=y/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],H=[];if(e.tags&&e.tags.some(e=>e))for(r=0;r=s)){var W=void 0;(a>0||e.hskipBeforeAndAfter)&&0!==(W=m.deflt(V.pregap,u))&&((C=Je.makeSpan(["arraycolsep"],[])).style.width=G(W),R.push(C));var _=[];for(r=0;r0){for(var K=Je.makeLineSpan("hline",t,c),J=Je.makeLineSpan("hdashline",t,c),Q=[{type:"elem",elem:l,shift:0}];h.length>0;){var ee=h.pop(),te=ee.pos-q;ee.isDashed?Q.push({type:"elem",elem:J,shift:te}):Q.push({type:"elem",elem:K,shift:te})}l=Je.makeVList({positionType:"individualShift",children:Q},t)}if(0===H.length)return Je.makeSpan(["mord"],[l],t);var re=Je.makeVList({positionType:"individualShift",children:H},t);return re=Je.makeSpan(["tag"],[re],t),Je.makeFragment([l,re])},Zr={c:"center ",l:"left ",r:"right "},Kr=function(e,t){for(var r=[],a=new Bt.MathNode("mtd",[],["mtr-glue"]),n=new Bt.MathNode("mtd",[],["mml-eqn-num"]),i=0;i0){var u=e.cols,d="",g=!1,f=0,v=u.length;"separator"===u[0].type&&(c+="top ",f=1),"separator"===u[u.length-1].type&&(c+="bottom ",v-=1);for(var b=f;b0?"left ":"",c+=S[S.length-1].length>0?"right ":"";for(var M=1;M-1?"alignat":"align",o="split"===e.envName,s=_r(e.parser,{cols:a,addJot:!0,autoTag:o?void 0:Wr(e.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:o?2:void 0,leqno:e.parser.settings.leqno},"display"),l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var m="",c=0;c0&&p&&(g=1),a[u]={type:"align",align:d,pregap:g,postgap:0}}return s.colSeparationType=p?"align":"alignat",s};Fr({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=(Wt(t[0])?[t[0]]:Yt(t[0],"ordgroup").body).map(function(e){var t=Xt(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new i("Unknown column alignment: "+t,e)}),a={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return _r(e.parser,a,jr(e.envName))},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var n=e.parser;if(n.consumeSpaces(),"["===n.fetch().text){if(n.consume(),n.consumeSpaces(),r=n.fetch().text,-1==="lcr".indexOf(r))throw new i("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),a.cols=[{type:"align",align:r}]}}var o=_r(e.parser,a,jr(e.envName)),s=Math.max(0,...o.body.map(e=>e.length));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t=_r(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=(Wt(t[0])?[t[0]]:Yt(t[0],"ordgroup").body).map(function(e){var t=Xt(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new i("Unknown column alignment: "+t,e)});if(r.length>1)throw new i("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=_r(e.parser,a,"script")).body.length>0&&a.body[0].length>1)throw new i("{subarray} can contain only one column");return a},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t=_r(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},jr(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Jr,htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){["gather","gather*"].includes(e.envName)&&Xr(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Wr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return _r(e.parser,t,"display")},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Jr,htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){Xr(e);var t={autoTag:Wr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return _r(e.parser,t,"display")},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["CD"],props:{numArgs:0},handler:e=>(Xr(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new i("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var a=[],n=[a],o=0;o-1);else{if(!("<>AV".indexOf(m)>-1))throw new i('Expected one of "<>AV=|." after @',s[h]);for(var p=0;p<2;p++){for(var u=!0,d=h+1;d{var r=e.font,a=t.withFont(r);return kt(e.body,a)},ta=(e,t)=>{var r=e.font,a=t.withFont(r);return Ot(e.body,a)},ra={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};st({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=ht(t[0]),i=a;return i in ra&&(i=ra[i]),{type:"font",mode:r.mode,font:i.slice(1),body:n}},htmlBuilder:ea,mathmlBuilder:ta}),st({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,a=t[0],n=m.isCharacterBox(a);return{type:"mclass",mode:r.mode,mclass:er(a),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}}),st({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a,breakOnTokenText:n}=e,{mode:i}=r,o=r.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+a.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:ea,mathmlBuilder:ta});var aa=(e,t)=>{var r=t;return"display"===e?r=r.id>=k.SCRIPT.id?r.text():k.DISPLAY:"text"===e&&r.size===k.DISPLAY.size?r=k.TEXT:"script"===e?r=k.SCRIPT:"scriptscript"===e&&(r=k.SCRIPTSCRIPT),r},na=(e,t)=>{var r,a=aa(e.size,t.style),n=a.fracNum(),i=a.fracDen();r=t.havingStyle(n);var o=kt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(p=t.fontMetrics().num2,u=c):(p=t.fontMetrics().num3,u=3*c),d=t.fontMetrics().denom2),h){var x=t.fontMetrics().axisHeight;p-o.depth-(x+.5*m){var r=new Bt.MathNode("mfrac",[Ot(e.numer,t),Ot(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var a=F(e.barSize,t);r.setAttribute("linethickness",G(a))}}else r.setAttribute("linethickness","0px");var n=aa(e.size,t.style);if(n.size!==t.style.size){r=new Bt.MathNode("mstyle",[r]);var i=n.size===k.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new Bt.MathNode("mo",[new Bt.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=e.rightDelim){var l=new Bt.MathNode("mo",[new Bt.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Nt(o)}return r};st({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var r,{parser:a,funcName:n}=e,i=t[0],o=t[1],s=null,l=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",l=")";break;case"\\\\bracefrac":r=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":r=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text"}return{type:"genfrac",mode:a.mode,continued:!1,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:l,size:h,barSize:null}},htmlBuilder:na,mathmlBuilder:ia}),st({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:n,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),st({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var t,{parser:r,funcName:a,token:n}=e;switch(a){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:n}}});var oa=["display","text","script","scriptscript"],sa=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};st({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var r,{parser:a}=e,n=t[4],i=t[5],o=ht(t[0]),s="atom"===o.type&&"open"===o.family?sa(o.text):null,l=ht(t[1]),h="atom"===l.type&&"close"===l.family?sa(l.text):null,m=Yt(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var p="auto",u=t[3];if("ordgroup"===u.type){if(u.body.length>0){var d=Yt(u.body[0],"textord");p=oa[Number(d.text)]}}else u=Yt(u,"textord"),p=oa[Number(u.text)];return{type:"genfrac",mode:a.mode,numer:n,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h,size:p}},htmlBuilder:na,mathmlBuilder:ia}),st({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:a,token:n}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Yt(t[0],"size").value,token:n}}}),st({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Yt(t[1],"infix").size),o=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:o,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:na,mathmlBuilder:ia});var la=(e,t)=>{var r,a,n=t.style;"supsub"===e.type?(r=e.sup?kt(e.sup,t.havingStyle(n.sup()),t):kt(e.sub,t.havingStyle(n.sub()),t),a=Yt(e.base,"horizBrace")):a=Yt(e,"horizBrace");var i,o=kt(a.base,t.havingBaseStyle(k.DISPLAY)),s=Ut(a,t);if(a.isOver?(i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Je.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Je.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t);i=a.isOver?Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Je.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Je.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t)};st({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:t[0]}},htmlBuilder:la,mathmlBuilder:(e,t)=>{var r=Gt(e.label);return new Bt.MathNode(e.isOver?"mover":"munder",[Ot(e.base,t),r])}}),st({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[1],n=Yt(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:mt(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=ft(e.body,t,!1);return Je.makeAnchor(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=Ht(e.body,t);return r instanceof At||(r=new At("mrow",[r])),r.setAttribute("href",e.href),r}}),st({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=Yt(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;inew Bt.MathNode("mrow",Rt(e.body,t))}),st({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:(e,t)=>{var r,{parser:a,funcName:n,token:o}=e,s=Yt(t[0],"raw").string,l=t[1];a.settings.strict&&a.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var h={};switch(n){case"\\htmlClass":h.class=s,r={command:"\\htmlClass",class:s};break;case"\\htmlId":h.id=s,r={command:"\\htmlId",id:s};break;case"\\htmlStyle":h.style=s,r={command:"\\htmlStyle",style:s};break;case"\\htmlData":for(var m=s.split(","),c=0;c{var r=ft(e.body,t,!1),a=["enclosing"];e.attributes.class&&a.push(...e.attributes.class.trim().split(/\s+/));var n=Je.makeSpan(a,r,t);for(var i in e.attributes)"class"!==i&&e.attributes.hasOwnProperty(i)&&n.setAttribute(i,e.attributes[i]);return n},mathmlBuilder:(e,t)=>Ht(e.body,t)}),st({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:mt(t[0]),mathml:mt(t[1])}},htmlBuilder:(e,t)=>{var r=ft(e.html,t,!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>Ht(e.mathml,t)});var ha=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new i("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(t[1]+t[2]),unit:t[3]};if(!P(r))throw new i("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};st({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:a}=e,n={number:0,unit:"em"},o={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var h=Yt(r[0],"raw").string.split(","),m=0;m{var r=F(e.height,t),a=0;e.totalheight.number>0&&(a=F(e.totalheight,t)-r);var n=0;e.width.number>0&&(n=F(e.width,t));var i={height:G(r+a)};n>0&&(i.width=G(n)),a>0&&(i.verticalAlign=G(-a));var o=new Z(e.src,e.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var a=F(e.height,t),n=0;if(e.totalheight.number>0&&(n=F(e.totalheight,t)-a,r.setAttribute("valign",G(-n))),r.setAttribute("height",G(a+n)),e.width.number>0){var i=F(e.width,t);r.setAttribute("width",G(i))}return r.setAttribute("src",e.src),r}}),st({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=Yt(t[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:(e,t)=>Je.makeGlue(e.dimension,t),mathmlBuilder(e,t){var r=F(e.dimension,t);return new Bt.SpaceNode(r)}}),st({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:(e,t)=>{var r;"clap"===e.alignment?(r=Je.makeSpan([],[kt(e.body,t)]),r=Je.makeSpan(["inner"],[r],t)):r=Je.makeSpan(["inner"],[kt(e.body,t)]);var a=Je.makeSpan(["fix"],[]),n=Je.makeSpan([e.alignment],[r,a],t),i=Je.makeSpan(["strut"]);return i.style.height=G(n.height+n.depth),n.depth&&(i.style.verticalAlign=G(-n.depth)),n.children.unshift(i),n=Je.makeSpan(["thinbox"],[n],t),Je.makeSpan(["mord","vbox"],[n],t)},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]);if("rlap"!==e.alignment){var a="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),st({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:a}=e,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),st({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new i("Mismatched "+e.funcName)}});var ma=(e,t)=>{switch(t.style.size){case k.DISPLAY.size:return e.display;case k.TEXT.size:return e.text;case k.SCRIPT.size:return e.script;case k.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};st({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:mt(t[0]),text:mt(t[1]),script:mt(t[2]),scriptscript:mt(t[3])}},htmlBuilder:(e,t)=>{var r=ma(e,t),a=ft(r,t,!1);return Je.makeFragment(a)},mathmlBuilder:(e,t)=>{var r=ma(e,t);return Ht(r,t)}});var ca=(e,t,r,a,n,i,o)=>{e=Je.makeSpan([],[e]);var s,l,h,c=r&&m.isCharacterBox(r);if(t){var p=kt(t,a.havingStyle(n.sup()),a);l={elem:p,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-p.depth)}}if(r){var u=kt(r,a.havingStyle(n.sub()),a);s={elem:u,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-u.height)}}if(l&&s){var d=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;h=Je.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:G(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:G(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var g=e.height-o;h=Je.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:G(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},a)}else{if(!l)return e;var f=e.depth+o;h=Je.makeVList({positionType:"bottom",positionData:f,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:G(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}var v=[h];if(s&&0!==i&&!c){var b=Je.makeSpan(["mspace"],[],a);b.style.marginRight=G(i),v.unshift(b)}return Je.makeSpan(["mop","op-limits"],v,a)},pa=["\\smallint"],ua=(e,t)=>{var r,a,n,i=!1;"supsub"===e.type?(r=e.sup,a=e.sub,n=Yt(e.base,"op"),i=!0):n=Yt(e,"op");var o,s=t.style,l=!1;if(s.size===k.DISPLAY.size&&n.symbol&&!pa.includes(n.name)&&(l=!0),n.symbol){var h=l?"Size2-Regular":"Size1-Regular",m="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(m=n.name.slice(1),n.name="oiint"===m?"\\iint":"\\iiint"),o=Je.makeSymbol(n.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),m.length>0){var c=o.italic,p=Je.staticSvg(m+"Size"+(l?"2":"1"),t);o=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},t),n.name="\\"+m,o.classes.unshift("mop"),o.italic=c}}else if(n.body){var u=ft(n.body,t,!0);1===u.length&&u[0]instanceof J?(o=u[0]).classes[0]="mop":o=Je.makeSpan(["mop"],u,t)}else{for(var d=[],g=1;g{var r;if(e.symbol)r=new At("mo",[Ct(e.name,e.mode)]),pa.includes(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new At("mo",Rt(e.body,t));else{r=new At("mi",[new Tt(e.name.slice(1))]);var a=new At("mo",[Ct("\u2061","text")]);r=e.parentIsSupSub?new At("mrow",[r,a]):zt([r,a])}return r},ga={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};st({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=a;return 1===n.length&&(n=ga[n]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:mt(a)}},htmlBuilder:ua,mathmlBuilder:da});var fa={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};st({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e,a=r;return 1===a.length&&(a=fa[a]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:ua,mathmlBuilder:da});var va=(e,t)=>{var r,a,n,i,o=!1;if("supsub"===e.type?(r=e.sup,a=e.sub,n=Yt(e.base,"operatorname"),o=!0):n=Yt(e,"operatorname"),n.body.length>0){for(var s=n.body.map(e=>{var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e}),l=ft(s,t.withFont("mathrm"),!0),h=0;h{var{parser:r,funcName:a}=e,n=t[0];return{type:"operatorname",mode:r.mode,body:mt(n),alwaysHandleSupSub:"\\operatornamewithlimits"===a,limits:!1,parentIsSupSub:!1}},htmlBuilder:va,mathmlBuilder:(e,t)=>{for(var r=Rt(e.body,t.withFont("mathrm")),a=!0,n=0;ne.toText()).join("");r=[new Bt.TextNode(s)]}var l=new Bt.MathNode("mi",r);l.setAttribute("mathvariant","normal");var h=new Bt.MathNode("mo",[Ct("\u2061","text")]);return e.parentIsSupSub?new Bt.MathNode("mrow",[l,h]):Bt.newDocumentFragment([l,h])}}),Ur("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),lt({type:"ordgroup",htmlBuilder:(e,t)=>e.semisimple?Je.makeFragment(ft(e.body,t,!1)):Je.makeSpan(["mord"],ft(e.body,t,!0),t),mathmlBuilder:(e,t)=>Ht(e.body,t,!0)}),st({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,a=t[0];return{type:"overline",mode:r.mode,body:a}},htmlBuilder(e,t){var r=kt(e.body,t.havingCrampedStyle()),a=Je.makeLineSpan("overline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},t);return Je.makeSpan(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[new Bt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new Bt.MathNode("mover",[Ot(e.body,t),r]);return a.setAttribute("accent","true"),a}}),st({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"phantom",mode:r.mode,body:mt(a)}},htmlBuilder:(e,t)=>{var r=ft(e.body,t.withPhantom(),!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>{var r=Rt(e.body,t);return new Bt.MathNode("mphantom",r)}}),st({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"hphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=Je.makeSpan([],[kt(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var a=0;a{var r=Rt(mt(e.body),t),a=new Bt.MathNode("mphantom",r),n=new Bt.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}}),st({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"vphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=Je.makeSpan(["inner"],[kt(e.body,t.withPhantom())]),a=Je.makeSpan(["fix"],[]);return Je.makeSpan(["mord","rlap"],[r,a],t)},mathmlBuilder:(e,t)=>{var r=Rt(mt(e.body),t),a=new Bt.MathNode("mphantom",r),n=new Bt.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}}),st({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,a=Yt(t[0],"size").value,n=t[1];return{type:"raisebox",mode:r.mode,dy:a,body:n}},htmlBuilder(e,t){var r=kt(e.body,t),a=F(e.dy,t);return Je.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]),a=e.dy.number+e.dy.unit;return r.setAttribute("voffset",a),r}}),st({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}}),st({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:a}=e,n=r[0],i=Yt(t[0],"size"),o=Yt(t[1],"size");return{type:"rule",mode:a.mode,shift:n&&Yt(n,"size").value,width:i.value,height:o.value}},htmlBuilder(e,t){var r=Je.makeSpan(["mord","rule"],[],t),a=F(e.width,t),n=F(e.height,t),i=e.shift?F(e.shift,t):0;return r.style.borderRightWidth=G(a),r.style.borderTopWidth=G(n),r.style.bottom=G(i),r.width=a,r.height=n+i,r.depth=-i,r.maxFontSize=1.125*n*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=F(e.width,t),a=F(e.height,t),n=e.shift?F(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new Bt.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",G(r)),o.setAttribute("height",G(a));var s=new Bt.MathNode("mpadded",[o]);return n>=0?s.setAttribute("height",G(n)):(s.setAttribute("height",G(n)),s.setAttribute("depth",G(-n))),s.setAttribute("voffset",G(n)),s}});var ya=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];st({type:"sizing",names:ya,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:ya.indexOf(a)+1,body:i}},htmlBuilder:(e,t)=>{var r=t.havingSize(e.size);return ba(e.body,r,t)},mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),a=Rt(e.body,r),n=new Bt.MathNode("mstyle",a);return n.setAttribute("mathsize",G(r.sizeMultiplier)),n}}),st({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:a}=e,n=!1,i=!1,o=r[0]&&Yt(r[0],"ordgroup");if(o)for(var s="",l=0;l{var r=Je.makeSpan([],[kt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var a=0;a{var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),st({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a}=e,n=r[0],i=t[0];return{type:"sqrt",mode:a.mode,body:i,index:n}},htmlBuilder(e,t){var r=kt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=Je.wrapFragment(r,t);var a=t.fontMetrics().defaultRuleThickness,n=a;t.style.idr.height+r.depth+i&&(i=(i+m-r.height-r.depth)/2);var c=s.height-r.height-i-l;r.style.paddingLeft=G(h);var p=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+c)},{type:"elem",elem:s},{type:"kern",size:l}]},t);if(e.index){var u=t.havingStyle(k.SCRIPTSCRIPT),d=kt(e.index,u,t),g=.6*(p.height-p.depth),f=Je.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:d}]},t),v=Je.makeSpan(["root"],[f]);return Je.makeSpan(["mord","sqrt"],[v,p],t)}return Je.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:a}=e;return a?new Bt.MathNode("mroot",[Ot(r,t),Ot(a,t)]):new Bt.MathNode("msqrt",[Ot(r,t)])}});var xa={display:k.DISPLAY,text:k.TEXT,script:k.SCRIPT,scriptscript:k.SCRIPTSCRIPT};st({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder(e,t){var r=xa[e.style],a=t.havingStyle(r).withFont("");return ba(e.body,a,t)},mathmlBuilder(e,t){var r=xa[e.style],a=t.havingStyle(r),n=Rt(e.body,a),i=new Bt.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});lt({type:"supsub",htmlBuilder(e,t){var r=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===k.DISPLAY.size||r.alwaysHandleSupSub)?ua:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===k.DISPLAY.size||r.limits)?va:null:"accent"===r.type?m.isCharacterBox(r.base)?_t:null:"horizBrace"===r.type&&!e.sub===r.isOver?la:null:null}(e,t);if(r)return r(e,t);var a,n,i,{base:o,sup:s,sub:l}=e,h=kt(o,t),c=t.fontMetrics(),p=0,u=0,d=o&&m.isCharacterBox(o);if(s){var g=t.havingStyle(t.style.sup());a=kt(s,g,t),d||(p=h.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var f=t.havingStyle(t.style.sub());n=kt(l,f,t),d||(u=h.depth+f.fontMetrics().subDrop*f.sizeMultiplier/t.sizeMultiplier)}i=t.style===k.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,b=t.sizeMultiplier,y=G(.5/c.ptPerEm/b),x=null;if(n){var w=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(h instanceof J||w)&&(x=G(-h.italic))}if(a&&n){p=Math.max(p,i,a.depth+.25*c.xHeight),u=Math.max(u,c.sub2);var S=4*c.defaultRuleThickness;if(p-a.depth-(n.height-u)0&&(p+=M,u-=M)}var z=[{type:"elem",elem:n,shift:u,marginRight:y,marginLeft:x},{type:"elem",elem:a,shift:-p,marginRight:y}];v=Je.makeVList({positionType:"individualShift",children:z},t)}else if(n){u=Math.max(u,c.sub1,n.height-.8*c.xHeight);var A=[{type:"elem",elem:n,marginLeft:x,marginRight:y}];v=Je.makeVList({positionType:"shift",positionData:u,children:A},t)}else{if(!a)throw new Error("supsub must have either sup or sub.");p=Math.max(p,i,a.depth+.25*c.xHeight),v=Je.makeVList({positionType:"shift",positionData:-p,children:[{type:"elem",elem:a,marginRight:y}]},t)}var T=xt(h,"right")||"mord";return Je.makeSpan([T],[h,Je.makeSpan(["msupsub"],[v])],t)},mathmlBuilder(e,t){var r,a=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(a=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var n,i=[Ot(e.base,t)];if(e.sub&&i.push(Ot(e.sub,t)),e.sup&&i.push(Ot(e.sup,t)),a)n=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;n=o&&"op"===o.type&&o.limits&&t.style===k.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===k.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;n=s&&"op"===s.type&&s.limits&&(t.style===k.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===k.DISPLAY)?"munder":"msub"}else{var l=e.base;n=l&&"op"===l.type&&l.limits&&(t.style===k.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===k.DISPLAY)?"mover":"msup"}return new Bt.MathNode(n,i)}}),lt({type:"atom",htmlBuilder:(e,t)=>Je.mathsym(e.text,e.mode,t,["m"+e.family]),mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[Ct(e.text,e.mode)]);if("bin"===e.family){var a=qt(e,t);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var wa={mi:"italic",mn:"normal",mtext:"normal"};lt({type:"mathord",htmlBuilder:(e,t)=>Je.makeOrd(e,t,"mathord"),mathmlBuilder(e,t){var r=new Bt.MathNode("mi",[Ct(e.text,e.mode,t)]),a=qt(e,t)||"italic";return a!==wa[r.type]&&r.setAttribute("mathvariant",a),r}}),lt({type:"textord",htmlBuilder:(e,t)=>Je.makeOrd(e,t,"textord"),mathmlBuilder(e,t){var r,a=Ct(e.text,e.mode,t),n=qt(e,t)||"normal";return r="text"===e.mode?new Bt.MathNode("mtext",[a]):/[0-9]/.test(e.text)?new Bt.MathNode("mn",[a]):"\\prime"===e.text?new Bt.MathNode("mo",[a]):new Bt.MathNode("mi",[a]),n!==wa[r.type]&&r.setAttribute("mathvariant",n),r}});var ka={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Sa={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};lt({type:"spacing",htmlBuilder(e,t){if(Sa.hasOwnProperty(e.text)){var r=Sa[e.text].className||"";if("text"===e.mode){var a=Je.makeOrd(e,t,"textord");return a.classes.push(r),a}return Je.makeSpan(["mspace",r],[Je.mathsym(e.text,e.mode,t)],t)}if(ka.hasOwnProperty(e.text))return Je.makeSpan(["mspace",ka[e.text]],[],t);throw new i('Unknown type of space "'+e.text+'"')},mathmlBuilder(e,t){if(!Sa.hasOwnProperty(e.text)){if(ka.hasOwnProperty(e.text))return new Bt.MathNode("mspace");throw new i('Unknown type of space "'+e.text+'"')}return new Bt.MathNode("mtext",[new Bt.TextNode("\xa0")])}});var Ma=()=>{var e=new Bt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};lt({type:"tag",mathmlBuilder(e,t){var r=new Bt.MathNode("mtable",[new Bt.MathNode("mtr",[Ma(),new Bt.MathNode("mtd",[Ht(e.body,t)]),Ma(),new Bt.MathNode("mtd",[Ht(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var za={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Aa={"\\textbf":"textbf","\\textmd":"textmd"},Ta={"\\textit":"textit","\\textup":"textup"},Ba=(e,t)=>{var r=e.font;return r?za[r]?t.withTextFontFamily(za[r]):Aa[r]?t.withTextFontWeight(Aa[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(Ta[r]):t};st({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"text",mode:r.mode,body:mt(n),font:a}},htmlBuilder(e,t){var r=Ba(e,t),a=ft(e.body,r,!0);return Je.makeSpan(["mord","text"],a,r)},mathmlBuilder(e,t){var r=Ba(e,t);return Ht(e.body,r)}}),st({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=kt(e.body,t),a=Je.makeLineSpan("underline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Je.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},t);return Je.makeSpan(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[new Bt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new Bt.MathNode("munder",[Ot(e.body,t),r]);return a.setAttribute("accentunder","true"),a}}),st({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=kt(e.body,t),a=t.fontMetrics().axisHeight,n=.5*(r.height-a-(r.depth+a));return Je.makeVList({positionType:"shift",positionData:n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:(e,t)=>new Bt.MathNode("mpadded",[Ot(e.body,t)],["vcenter"])}),st({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new i("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=Ca(e),a=[],n=t.havingStyle(t.style.text()),i=0;ie.body.replace(/ /g,e.star?"\u2423":"\xa0"),Na=nt,qa="[ \r\n\t]",Ia="(\\\\[a-zA-Z@]+)"+qa+"*",Ra="[\u0300-\u036f]",Ha=new RegExp(Ra+"+$"),Oa="("+qa+"+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+Ra+"*|[\ud800-\udbff][\udc00-\udfff]"+Ra+"*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|"+Ia+"|\\\\[^\ud800-\udfff])";class Ea{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(Oa,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new n("EOF",new a(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new i("Unexpected character: '"+e[t]+"'",new n(e[t],new a(this,t,t+1)));var o=r[6]||r[3]||(r[2]?"\\ ":" ");if(14===this.catcodes[o]){var s=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}return new n(o,new a(this,t,this.tokenRegex.lastIndex))}}class La{constructor(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new i("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,r){if(void 0===r&&(r=!1),r){for(var a=0;a0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(e)&&(n[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t}}var Da=Gr;Ur("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}}),Ur("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}}),Ur("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),Ur("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),Ur("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),Ur("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Ur("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var Va={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Ur("\\char",function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new i("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=Va[r.text])||a>=t)throw new i("Invalid base-"+t+" digit "+r.text);for(var n;null!=(n=Va[e.future().text])&&n{var n=e.consumeArg().tokens;if(1!==n.length)throw new i("\\newcommand's first argument must be a macro name");var o=n[0].text,s=e.isDefined(o);if(s&&!t)throw new i("\\newcommand{"+o+"} attempting to redefine "+o+"; use \\renewcommand");if(!s&&!r)throw new i("\\renewcommand{"+o+"} when command "+o+" does not yet exist; use \\newcommand");var l=0;if(1===(n=e.consumeArg().tokens).length&&"["===n[0].text){for(var h="",m=e.expandNextToken();"]"!==m.text&&"EOF"!==m.text;)h+=m.text,m=e.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new i("Invalid number of arguments: "+h);l=parseInt(h),n=e.consumeArg().tokens}return s&&a||e.macros.set(o,{tokens:n,numArgs:l}),""};Ur("\\newcommand",e=>Pa(e,!1,!0,!1)),Ur("\\renewcommand",e=>Pa(e,!0,!1,!1)),Ur("\\providecommand",e=>Pa(e,!0,!0,!0)),Ur("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(e=>e.text).join("")),""}),Ur("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(e=>e.text).join("")),""}),Ur("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Na[r],ie.math[r],ie.text[r]),""}),Ur("\\bgroup","{"),Ur("\\egroup","}"),Ur("~","\\nobreakspace"),Ur("\\lq","`"),Ur("\\rq","'"),Ur("\\aa","\\r a"),Ur("\\AA","\\r A"),Ur("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),Ur("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Ur("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),Ur("\u212c","\\mathscr{B}"),Ur("\u2130","\\mathscr{E}"),Ur("\u2131","\\mathscr{F}"),Ur("\u210b","\\mathscr{H}"),Ur("\u2110","\\mathscr{I}"),Ur("\u2112","\\mathscr{L}"),Ur("\u2133","\\mathscr{M}"),Ur("\u211b","\\mathscr{R}"),Ur("\u212d","\\mathfrak{C}"),Ur("\u210c","\\mathfrak{H}"),Ur("\u2128","\\mathfrak{Z}"),Ur("\\Bbbk","\\Bbb{k}"),Ur("\xb7","\\cdotp"),Ur("\\llap","\\mathllap{\\textrm{#1}}"),Ur("\\rlap","\\mathrlap{\\textrm{#1}}"),Ur("\\clap","\\mathclap{\\textrm{#1}}"),Ur("\\mathstrut","\\vphantom{(}"),Ur("\\underbar","\\underline{\\text{#1}}"),Ur("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),Ur("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),Ur("\\ne","\\neq"),Ur("\u2260","\\neq"),Ur("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),Ur("\u2209","\\notin"),Ur("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),Ur("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),Ur("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),Ur("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),Ur("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),Ur("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),Ur("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),Ur("\u27c2","\\perp"),Ur("\u203c","\\mathclose{!\\mkern-0.8mu!}"),Ur("\u220c","\\notni"),Ur("\u231c","\\ulcorner"),Ur("\u231d","\\urcorner"),Ur("\u231e","\\llcorner"),Ur("\u231f","\\lrcorner"),Ur("\xa9","\\copyright"),Ur("\xae","\\textregistered"),Ur("\ufe0f","\\textregistered"),Ur("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Ur("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Ur("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Ur("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Ur("\\vdots","{\\varvdots\\rule{0pt}{15pt}}"),Ur("\u22ee","\\vdots"),Ur("\\varGamma","\\mathit{\\Gamma}"),Ur("\\varDelta","\\mathit{\\Delta}"),Ur("\\varTheta","\\mathit{\\Theta}"),Ur("\\varLambda","\\mathit{\\Lambda}"),Ur("\\varXi","\\mathit{\\Xi}"),Ur("\\varPi","\\mathit{\\Pi}"),Ur("\\varSigma","\\mathit{\\Sigma}"),Ur("\\varUpsilon","\\mathit{\\Upsilon}"),Ur("\\varPhi","\\mathit{\\Phi}"),Ur("\\varPsi","\\mathit{\\Psi}"),Ur("\\varOmega","\\mathit{\\Omega}"),Ur("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Ur("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Ur("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Ur("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Ur("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Ur("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;"),Ur("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"),Ur("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Fa={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Ur("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Fa?t=Fa[r]:("\\not"===r.slice(0,4)||r in ie.math&&["bin","rel"].includes(ie.math[r].group))&&(t="\\dotsb"),t});var Ga={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Ur("\\dotso",function(e){return e.future().text in Ga?"\\ldots\\,":"\\ldots"}),Ur("\\dotsc",function(e){var t=e.future().text;return t in Ga&&","!==t?"\\ldots\\,":"\\ldots"}),Ur("\\cdots",function(e){return e.future().text in Ga?"\\@cdots\\,":"\\@cdots"}),Ur("\\dotsb","\\cdots"),Ur("\\dotsm","\\cdots"),Ur("\\dotsi","\\!\\cdots"),Ur("\\dotsx","\\ldots\\,"),Ur("\\DOTSI","\\relax"),Ur("\\DOTSB","\\relax"),Ur("\\DOTSX","\\relax"),Ur("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Ur("\\,","\\tmspace+{3mu}{.1667em}"),Ur("\\thinspace","\\,"),Ur("\\>","\\mskip{4mu}"),Ur("\\:","\\tmspace+{4mu}{.2222em}"),Ur("\\medspace","\\:"),Ur("\\;","\\tmspace+{5mu}{.2777em}"),Ur("\\thickspace","\\;"),Ur("\\!","\\tmspace-{3mu}{.1667em}"),Ur("\\negthinspace","\\!"),Ur("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Ur("\\negthickspace","\\tmspace-{5mu}{.277em}"),Ur("\\enspace","\\kern.5em "),Ur("\\enskip","\\hskip.5em\\relax"),Ur("\\quad","\\hskip1em\\relax"),Ur("\\qquad","\\hskip2em\\relax"),Ur("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Ur("\\tag@paren","\\tag@literal{({#1})}"),Ur("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new i("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),Ur("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Ur("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Ur("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Ur("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Ur("\\newline","\\\\\\relax"),Ur("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Ua=G(C["Main-Regular"]["T".charCodeAt(0)][1]-.7*C["Main-Regular"]["A".charCodeAt(0)][1]);Ur("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Ua+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Ur("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Ua+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Ur("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Ur("\\@hspace","\\hskip #1\\relax"),Ur("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Ur("\\ordinarycolon",":"),Ur("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Ur("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Ur("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Ur("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Ur("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Ur("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Ur("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Ur("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Ur("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Ur("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Ur("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Ur("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Ur("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Ur("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Ur("\u2237","\\dblcolon"),Ur("\u2239","\\eqcolon"),Ur("\u2254","\\coloneqq"),Ur("\u2255","\\eqqcolon"),Ur("\u2a74","\\Coloneqq"),Ur("\\ratio","\\vcentcolon"),Ur("\\coloncolon","\\dblcolon"),Ur("\\colonequals","\\coloneqq"),Ur("\\coloncolonequals","\\Coloneqq"),Ur("\\equalscolon","\\eqqcolon"),Ur("\\equalscoloncolon","\\Eqqcolon"),Ur("\\colonminus","\\coloneq"),Ur("\\coloncolonminus","\\Coloneq"),Ur("\\minuscolon","\\eqcolon"),Ur("\\minuscoloncolon","\\Eqcolon"),Ur("\\coloncolonapprox","\\Colonapprox"),Ur("\\coloncolonsim","\\Colonsim"),Ur("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Ur("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Ur("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Ur("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Ur("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Ur("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Ur("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Ur("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Ur("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Ur("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Ur("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Ur("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Ur("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Ur("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Ur("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Ur("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Ur("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Ur("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Ur("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Ur("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Ur("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Ur("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Ur("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Ur("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Ur("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Ur("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Ur("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Ur("\\imath","\\html@mathml{\\@imath}{\u0131}"),Ur("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Ur("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Ur("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Ur("\u27e6","\\llbracket"),Ur("\u27e7","\\rrbracket"),Ur("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Ur("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Ur("\u2983","\\lBrace"),Ur("\u2984","\\rBrace"),Ur("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Ur("\u29b5","\\minuso"),Ur("\\darr","\\downarrow"),Ur("\\dArr","\\Downarrow"),Ur("\\Darr","\\Downarrow"),Ur("\\lang","\\langle"),Ur("\\rang","\\rangle"),Ur("\\uarr","\\uparrow"),Ur("\\uArr","\\Uparrow"),Ur("\\Uarr","\\Uparrow"),Ur("\\N","\\mathbb{N}"),Ur("\\R","\\mathbb{R}"),Ur("\\Z","\\mathbb{Z}"),Ur("\\alef","\\aleph"),Ur("\\alefsym","\\aleph"),Ur("\\Alpha","\\mathrm{A}"),Ur("\\Beta","\\mathrm{B}"),Ur("\\bull","\\bullet"),Ur("\\Chi","\\mathrm{X}"),Ur("\\clubs","\\clubsuit"),Ur("\\cnums","\\mathbb{C}"),Ur("\\Complex","\\mathbb{C}"),Ur("\\Dagger","\\ddagger"),Ur("\\diamonds","\\diamondsuit"),Ur("\\empty","\\emptyset"),Ur("\\Epsilon","\\mathrm{E}"),Ur("\\Eta","\\mathrm{H}"),Ur("\\exist","\\exists"),Ur("\\harr","\\leftrightarrow"),Ur("\\hArr","\\Leftrightarrow"),Ur("\\Harr","\\Leftrightarrow"),Ur("\\hearts","\\heartsuit"),Ur("\\image","\\Im"),Ur("\\infin","\\infty"),Ur("\\Iota","\\mathrm{I}"),Ur("\\isin","\\in"),Ur("\\Kappa","\\mathrm{K}"),Ur("\\larr","\\leftarrow"),Ur("\\lArr","\\Leftarrow"),Ur("\\Larr","\\Leftarrow"),Ur("\\lrarr","\\leftrightarrow"),Ur("\\lrArr","\\Leftrightarrow"),Ur("\\Lrarr","\\Leftrightarrow"),Ur("\\Mu","\\mathrm{M}"),Ur("\\natnums","\\mathbb{N}"),Ur("\\Nu","\\mathrm{N}"),Ur("\\Omicron","\\mathrm{O}"),Ur("\\plusmn","\\pm"),Ur("\\rarr","\\rightarrow"),Ur("\\rArr","\\Rightarrow"),Ur("\\Rarr","\\Rightarrow"),Ur("\\real","\\Re"),Ur("\\reals","\\mathbb{R}"),Ur("\\Reals","\\mathbb{R}"),Ur("\\Rho","\\mathrm{P}"),Ur("\\sdot","\\cdot"),Ur("\\sect","\\S"),Ur("\\spades","\\spadesuit"),Ur("\\sub","\\subset"),Ur("\\sube","\\subseteq"),Ur("\\supe","\\supseteq"),Ur("\\Tau","\\mathrm{T}"),Ur("\\thetasym","\\vartheta"),Ur("\\weierp","\\wp"),Ur("\\Zeta","\\mathrm{Z}"),Ur("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Ur("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Ur("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Ur("\\bra","\\mathinner{\\langle{#1}|}"),Ur("\\ket","\\mathinner{|{#1}\\rangle}"),Ur("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Ur("\\Bra","\\left\\langle#1\\right|"),Ur("\\Ket","\\left|#1\\right\\rangle");var Ya=e=>t=>{var r=t.consumeArg().tokens,a=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,o=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=t=>r=>{e&&(r.macros.set("|",o),n.length&&r.macros.set("\\|",s));var i=t;!t&&n.length&&("|"===r.future().text&&(r.popToken(),i=!0));return{tokens:i?n:a,numArgs:0}};t.macros.set("|",l(!1)),n.length&&t.macros.set("\\|",l(!0));var h=t.consumeArg().tokens,m=t.expandTokens([...i,...h,...r]);return t.macros.endGroup(),{tokens:m.reverse(),numArgs:0}};Ur("\\bra@ket",Ya(!1)),Ur("\\bra@set",Ya(!0)),Ur("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Ur("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Ur("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Ur("\\angln","{\\angl n}"),Ur("\\blue","\\textcolor{##6495ed}{#1}"),Ur("\\orange","\\textcolor{##ffa500}{#1}"),Ur("\\pink","\\textcolor{##ff00af}{#1}"),Ur("\\red","\\textcolor{##df0030}{#1}"),Ur("\\green","\\textcolor{##28ae7b}{#1}"),Ur("\\gray","\\textcolor{gray}{#1}"),Ur("\\purple","\\textcolor{##9d38bd}{#1}"),Ur("\\blueA","\\textcolor{##ccfaff}{#1}"),Ur("\\blueB","\\textcolor{##80f6ff}{#1}"),Ur("\\blueC","\\textcolor{##63d9ea}{#1}"),Ur("\\blueD","\\textcolor{##11accd}{#1}"),Ur("\\blueE","\\textcolor{##0c7f99}{#1}"),Ur("\\tealA","\\textcolor{##94fff5}{#1}"),Ur("\\tealB","\\textcolor{##26edd5}{#1}"),Ur("\\tealC","\\textcolor{##01d1c1}{#1}"),Ur("\\tealD","\\textcolor{##01a995}{#1}"),Ur("\\tealE","\\textcolor{##208170}{#1}"),Ur("\\greenA","\\textcolor{##b6ffb0}{#1}"),Ur("\\greenB","\\textcolor{##8af281}{#1}"),Ur("\\greenC","\\textcolor{##74cf70}{#1}"),Ur("\\greenD","\\textcolor{##1fab54}{#1}"),Ur("\\greenE","\\textcolor{##0d923f}{#1}"),Ur("\\goldA","\\textcolor{##ffd0a9}{#1}"),Ur("\\goldB","\\textcolor{##ffbb71}{#1}"),Ur("\\goldC","\\textcolor{##ff9c39}{#1}"),Ur("\\goldD","\\textcolor{##e07d10}{#1}"),Ur("\\goldE","\\textcolor{##a75a05}{#1}"),Ur("\\redA","\\textcolor{##fca9a9}{#1}"),Ur("\\redB","\\textcolor{##ff8482}{#1}"),Ur("\\redC","\\textcolor{##f9685d}{#1}"),Ur("\\redD","\\textcolor{##e84d39}{#1}"),Ur("\\redE","\\textcolor{##bc2612}{#1}"),Ur("\\maroonA","\\textcolor{##ffbde0}{#1}"),Ur("\\maroonB","\\textcolor{##ff92c6}{#1}"),Ur("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Ur("\\maroonD","\\textcolor{##ca337c}{#1}"),Ur("\\maroonE","\\textcolor{##9e034e}{#1}"),Ur("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Ur("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Ur("\\purpleC","\\textcolor{##aa87ff}{#1}"),Ur("\\purpleD","\\textcolor{##7854ab}{#1}"),Ur("\\purpleE","\\textcolor{##543b78}{#1}"),Ur("\\mintA","\\textcolor{##f5f9e8}{#1}"),Ur("\\mintB","\\textcolor{##edf2df}{#1}"),Ur("\\mintC","\\textcolor{##e0e5cc}{#1}"),Ur("\\grayA","\\textcolor{##f6f7f7}{#1}"),Ur("\\grayB","\\textcolor{##f0f1f2}{#1}"),Ur("\\grayC","\\textcolor{##e3e5e6}{#1}"),Ur("\\grayD","\\textcolor{##d6d8da}{#1}"),Ur("\\grayE","\\textcolor{##babec2}{#1}"),Ur("\\grayF","\\textcolor{##888d93}{#1}"),Ur("\\grayG","\\textcolor{##626569}{#1}"),Ur("\\grayH","\\textcolor{##3b3e40}{#1}"),Ur("\\grayI","\\textcolor{##21242c}{#1}"),Ur("\\kaBlue","\\textcolor{##314453}{#1}"),Ur("\\kaGreen","\\textcolor{##71B307}{#1}");var Xa={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class Wa{constructor(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new La(Da,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Ea(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var t,r,i;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:i,end:r}=this.consumeArg(["]"]))}else({tokens:i,start:t,end:r}=this.consumeArg());return this.pushToken(new n("EOF",r.loc)),this.pushTokens(i),new n("",a.range(t,r))}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,n=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1===--o)throw new i("Extra }",a)}else if("EOF"===a.text)throw new i("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===n.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:n,end:a}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new i("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;athis.settings.maxExpand)throw new i("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),r=t.text,a=t.noexpand?null:this._getExpansion(r);if(null==a||e&&a.unexpandable){if(e&&null==a&&"\\"===r[0]&&!this.isDefined(r))throw new i("Undefined control sequence: "+r);return this.pushToken(t),!1}this.countExpansion(1);var n=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(n=n.slice()).length-1;s>=0;--s){var l=n[s];if("#"===l.text){if(0===s)throw new i("Incomplete placeholder at end of macro body",l);if("#"===(l=n[--s]).text)n.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new i("Not a valid argument number",l);n.splice(s,2,...o[+l.text-1])}}}return this.pushTokens(n),n.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new n(e)]):void 0}expandTokens(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),t.push(a)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t?t.map(e=>e.text).join(""):t}_getExpansion(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var a="function"==typeof t?t(this):t;if("string"==typeof a){var n=0;if(-1!==a.indexOf("#"))for(var i=a.replace(/##/g,"");-1!==i.indexOf("#"+(n+1));)++n;for(var o=new Ea(a,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:n}}return a}isDefined(e){return this.macros.has(e)||Na.hasOwnProperty(e)||ie.math.hasOwnProperty(e)||ie.text.hasOwnProperty(e)||Xa.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Na.hasOwnProperty(e)&&!Na[e].primitive}}var _a=/^[\u208a\u208b\u208c\u208d\u208e\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1d62\u2c7c\u2096\u2097\u2098\u2099\u2092\u209a\u1d63\u209b\u209c\u1d64\u1d65\u2093\u1d66\u1d67\u1d68\u1d69\u1d6a]/,ja=Object.freeze({"\u208a":"+","\u208b":"-","\u208c":"=","\u208d":"(","\u208e":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1d62":"i","\u2c7c":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209a":"p","\u1d63":"r","\u209b":"s","\u209c":"t","\u1d64":"u","\u1d65":"v","\u2093":"x","\u1d66":"\u03b2","\u1d67":"\u03b3","\u1d68":"\u03c1","\u1d69":"\u03d5","\u1d6a":"\u03c7","\u207a":"+","\u207b":"-","\u207c":"=","\u207d":"(","\u207e":")","\u2070":"0","\xb9":"1","\xb2":"2","\xb3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1d2c":"A","\u1d2e":"B","\u1d30":"D","\u1d31":"E","\u1d33":"G","\u1d34":"H","\u1d35":"I","\u1d36":"J","\u1d37":"K","\u1d38":"L","\u1d39":"M","\u1d3a":"N","\u1d3c":"O","\u1d3e":"P","\u1d3f":"R","\u1d40":"T","\u1d41":"U","\u2c7d":"V","\u1d42":"W","\u1d43":"a","\u1d47":"b","\u1d9c":"c","\u1d48":"d","\u1d49":"e","\u1da0":"f","\u1d4d":"g","\u02b0":"h","\u2071":"i","\u02b2":"j","\u1d4f":"k","\u02e1":"l","\u1d50":"m","\u207f":"n","\u1d52":"o","\u1d56":"p","\u02b3":"r","\u02e2":"s","\u1d57":"t","\u1d58":"u","\u1d5b":"v","\u02b7":"w","\u02e3":"x","\u02b8":"y","\u1dbb":"z","\u1d5d":"\u03b2","\u1d5e":"\u03b3","\u1d5f":"\u03b4","\u1d60":"\u03d5","\u1d61":"\u03c7","\u1dbf":"\u03b8"}),$a={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},Za={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"};class Ka{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Wa(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new i("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new n("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==Ka.endOfExpression.indexOf(a.text))break;if(t&&a.text===t)break;if(e&&Na[a.text]&&Na[a.text].infix)break;var n=this.parseAtom(t);if(!n)break;"internal"!==n.type&&r.push(n)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var t,r=-1,a=0;a=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var l,h=ie[this.mode][t].group,m=a.range(e);if(ae.hasOwnProperty(h)){var c=h;l={type:"atom",mode:this.mode,family:c,loc:m,text:t}}else l={type:h,mode:this.mode,loc:m,text:t};o=l}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(z(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),o={type:"textord",mode:"text",loc:a.range(e),text:t}}if(this.consume(),s)for(var p=0;p{i.r(t),i.d(t,{default:()=>a});i(6540);var o=i(1312),n=i(5500),s=i(4042),l=i(3363),r=i(4848);function a(){const e=(0,o.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.be,{title:e}),(0,r.jsx)(s.A,{children:(0,r.jsx)(l.A,{})})]})}},3363:(e,t,i)=>{i.d(t,{A:()=>r});i(6540);var o=i(4164),n=i(1312),s=i(1107),l=i(4848);function r({className:e}){return(0,l.jsx)("main",{className:(0,o.A)("container margin-vert--xl",e),children:(0,l.jsx)("div",{className:"row",children:(0,l.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,l.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,l.jsx)(n.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,l.jsx)("p",{children:(0,l.jsx)(n.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,l.jsx)("p",{children:(0,l.jsx)(n.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/developer/assets/js/2279.b7d7fcca.js b/developer/assets/js/2279.b7d7fcca.js new file mode 100644 index 0000000..3831d39 --- /dev/null +++ b/developer/assets/js/2279.b7d7fcca.js @@ -0,0 +1,2 @@ +/*! For license information please see 2279.b7d7fcca.js.LICENSE.txt */ +(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2279],{45:(t,e,r)=>{"use strict";r.d(e,{XX:()=>u,q7:()=>d,sO:()=>h});var i=r(5164),n=r(5894),a=r(3226),o=r(7633),s=r(797),l={common:o.Y2,getConfig:o.zj,insertCluster:n.U,insertEdge:i.Jo,insertEdgeLabel:i.jP,insertMarkers:i.g0,insertNode:n.on,interpolateToCurve:a.Ib,labelHelper:n.Zk,log:s.Rm,positionEdgeLabel:i.T_},c={},h=(0,s.K2)(t=>{for(const e of t)c[e.name]=e},"registerLayoutLoaders");(0,s.K2)(()=>{h([{name:"dagre",loader:(0,s.K2)(async()=>await Promise.all([r.e(2076),r.e(2334),r.e(7873)]).then(r.bind(r,7873)),"loader")},{name:"cose-bilkent",loader:(0,s.K2)(async()=>await Promise.all([r.e(165),r.e(7928)]).then(r.bind(r,7928)),"loader")}])},"registerDefaultLayoutLoaders")();var u=(0,s.K2)(async(t,e)=>{if(!(t.layoutAlgorithm in c))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);const r=c[t.layoutAlgorithm];return(await r.loader()).render(t,e,l,{algorithm:r.algorithm})},"render"),d=(0,s.K2)((t="",{fallback:e="dagre"}={})=>{if(t in c)return t;if(e in c)return s.Rm.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")},92:(t,e,r)=>{"use strict";r.d(e,{W6:()=>ie,GZ:()=>se,WY:()=>Wt,pC:()=>zt,hE:()=>oe,Gc:()=>It});var i=r(3226),n=r(7633),a=r(797);const o=(t,e)=>!!t&&!(!(e&&""===t.prefix||t.prefix)||!t.name),s=Object.freeze({left:0,top:0,width:16,height:16}),l=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),c=Object.freeze({...s,...l}),h=Object.freeze({...c,body:"",hidden:!1});function u(t,e){const r=function(t,e){const r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);const i=((t.rotate||0)+(e.rotate||0))%4;return i&&(r.rotate=i),r}(t,e);for(const i in h)i in l?i in t&&!(i in r)&&(r[i]=l[i]):i in e?r[i]=e[i]:i in t&&(r[i]=t[i]);return r}function d(t,e,r){const i=t.icons,n=t.aliases||Object.create(null);let a={};function o(t){a=u(i[t]||n[t],a)}return o(e),r.forEach(o),u(t,a)}function p(t,e){if(t.icons[e])return d(t,e,[]);const r=function(t,e){const r=t.icons,i=t.aliases||Object.create(null),n=Object.create(null);return(e||Object.keys(r).concat(Object.keys(i))).forEach(function t(e){if(r[e])return n[e]=[];if(!(e in n)){n[e]=null;const r=i[e]&&i[e].parent,a=r&&t(r);a&&(n[e]=[r].concat(a))}return n[e]}),n}(t,[e])[e];return r?d(t,e,r):null}const f=Object.freeze({width:null,height:null}),g=Object.freeze({...f,...l}),y=/(-?[0-9.]*[0-9]+[0-9.]*)/g,m=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function x(t,e,r){if(1===e)return t;if(r=r||100,"number"==typeof t)return Math.ceil(t*e*r)/r;if("string"!=typeof t)return t;const i=t.split(y);if(null===i||!i.length)return t;const n=[];let a=i.shift(),o=m.test(a);for(;;){if(o){const t=parseFloat(a);isNaN(t)?n.push(a):n.push(Math.ceil(t*e*r)/r)}else n.push(a);if(a=i.shift(),void 0===a)return n.join("");o=!o}}const b=/\sid="(\S+)"/g,k=new Map;function w(t){const e=[];let r;for(;r=b.exec(t);)e.push(r[1]);if(!e.length)return t;const i="suffix"+(16777216*Math.random()|Date.now()).toString(16);return e.forEach(e=>{const r=function(t){t=t.replace(/[0-9]+$/,"")||"a";const e=k.get(t)||0;return k.set(t,e+1),e?`${t}${e}`:t}(e),n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+n+')([")]|\\.[a-z])',"g"),"$1"+r+i+"$3")}),t=t.replace(new RegExp(i,"g"),"")}var C=r(451);function _(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var v={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function S(t){v=t}var T={exec:()=>null};function A(t,e=""){let r="string"==typeof t?t:t.source,i={replace:(t,e)=>{let n="string"==typeof e?e:e.source;return n=n.replace(B.caret,"$1"),r=r.replace(t,n),i},getRegex:()=>new RegExp(r,e)};return i}var M=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},L=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,F=/(?:[*+-]|\d{1,9}[.)])/,$=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,E=A($).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),D=A($).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),O=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,R=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,K=A(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",R).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),I=A(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,F).getRegex(),N="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",P=/|$))/,z=A("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",P).replace("tag",N).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),q=A(O).replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),j={blockquote:A(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",q).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:K,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:L,html:z,lheading:E,list:I,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:q,table:T,text:/^[^\n]+/},W=A("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),H={...j,lheading:D,table:W,paragraph:A(O).replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",W).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex()},U={...j,html:A("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",P).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:T,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:A(O).replace("hr",L).replace("heading"," *#{1,6} *[^\n]").replace("lheading",E).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Y=/^( {2,}|\\)\n(?!\s*$)/,G=/[\p{P}\p{S}]/u,X=/[\s\p{P}\p{S}]/u,V=/[^\s\p{P}\p{S}]/u,Z=A(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,X).getRegex(),Q=/(?!~)[\p{P}\p{S}]/u,J=A(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",M?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),tt=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,et=A(tt,"u").replace(/punct/g,G).getRegex(),rt=A(tt,"u").replace(/punct/g,Q).getRegex(),it="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",nt=A(it,"gu").replace(/notPunctSpace/g,V).replace(/punctSpace/g,X).replace(/punct/g,G).getRegex(),at=A(it,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,Q).getRegex(),ot=A("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,V).replace(/punctSpace/g,X).replace(/punct/g,G).getRegex(),st=A(/\\(punct)/,"gu").replace(/punct/g,G).getRegex(),lt=A(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),ct=A(P).replace("(?:--\x3e|$)","--\x3e").getRegex(),ht=A("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",ct).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ut=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,dt=A(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",ut).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),pt=A(/^!?\[(label)\]\[(ref)\]/).replace("label",ut).replace("ref",R).getRegex(),ft=A(/^!?\[(ref)\](?:\[\])?/).replace("ref",R).getRegex(),gt=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,yt={_backpedal:T,anyPunctuation:st,autolink:lt,blockSkip:J,br:Y,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:T,emStrongLDelim:et,emStrongRDelimAst:nt,emStrongRDelimUnd:ot,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:dt,nolink:ft,punctuation:Z,reflink:pt,reflinkSearch:A("reflink|nolink(?!\\()","g").replace("reflink",pt).replace("nolink",ft).getRegex(),tag:ht,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},_t=t=>Ct[t];function vt(t,e){if(e){if(B.escapeTest.test(t))return t.replace(B.escapeReplace,_t)}else if(B.escapeTestNoEncode.test(t))return t.replace(B.escapeReplaceNoEncode,_t);return t}function St(t){try{t=encodeURI(t).replace(B.percentDecode,"%")}catch{return null}return t}function Tt(t,e){let r=t.replace(B.findPipe,(t,e,r)=>{let i=!1,n=e;for(;--n>=0&&"\\"===r[n];)i=!i;return i?"|":" |"}).split(B.splitPipe),i=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let t=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:At(t,"\n")}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let t=e[0],r=function(t,e,r){let i=t.match(r.other.indentCodeCompensation);if(null===i)return e;let n=i[1];return e.split("\n").map(t=>{let e=t.match(r.other.beginningSpace);if(null===e)return t;let[i]=e;return i.length>=n.length?t.slice(n.length):t}).join("\n")}(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:r}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let e=At(t,"#");(this.options.pedantic||!e||this.rules.other.endingSpaceChar.test(e))&&(t=e.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:At(e[0],"\n")}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let t=At(e[0],"\n").split("\n"),r="",i="",n=[];for(;t.length>0;){let e,a=!1,o=[];for(e=0;e1,n={type:"list",raw:"",ordered:i,start:i?+r.slice(0,-1):"",loose:!1,items:[]};r=i?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=i?r:"[*+-]");let a=this.rules.other.listItemRegex(r),o=!1;for(;t;){let r=!1,i="",s="";if(!(e=a.exec(t))||this.rules.block.hr.test(t))break;i=e[0],t=t.substring(i.length);let l=e[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,t=>" ".repeat(3*t.length)),c=t.split("\n",1)[0],h=!l.trim(),u=0;if(this.options.pedantic?(u=2,s=l.trimStart()):h?u=e[1].length+1:(u=e[2].search(this.rules.other.nonSpaceChar),u=u>4?1:u,s=l.slice(u),u+=e[1].length),h&&this.rules.other.blankLine.test(c)&&(i+=c+"\n",t=t.substring(c.length+1),r=!0),!r){let e=this.rules.other.nextBulletRegex(u),r=this.rules.other.hrRegex(u),n=this.rules.other.fencesBeginRegex(u),a=this.rules.other.headingBeginRegex(u),o=this.rules.other.htmlBeginRegex(u);for(;t;){let d,p=t.split("\n",1)[0];if(c=p,this.options.pedantic?(c=c.replace(this.rules.other.listReplaceNesting," "),d=c):d=c.replace(this.rules.other.tabCharGlobal," "),n.test(c)||a.test(c)||o.test(c)||e.test(c)||r.test(c))break;if(d.search(this.rules.other.nonSpaceChar)>=u||!c.trim())s+="\n"+d.slice(u);else{if(h||l.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||n.test(l)||a.test(l)||r.test(l))break;s+="\n"+c}!h&&!c.trim()&&(h=!0),i+=p+"\n",t=t.substring(p.length+1),l=d.slice(u)}}n.loose||(o?n.loose=!0:this.rules.other.doubleBlankLine.test(i)&&(o=!0));let d,p=null;this.options.gfm&&(p=this.rules.other.listIsTask.exec(s),p&&(d="[ ] "!==p[0],s=s.replace(this.rules.other.listReplaceTask,""))),n.items.push({type:"list_item",raw:i,task:!!p,checked:d,loose:!1,text:s,tokens:[]}),n.raw+=i}let s=n.items.at(-1);if(!s)return;s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd(),n.raw=n.raw.trimEnd();for(let t=0;t"space"===t.type),r=e.length>0&&e.some(t=>this.rules.other.anyLine.test(t.raw));n.loose=r}if(n.loose)for(let t=0;t({text:t,tokens:this.lexer.inline(t),header:!1,align:a.align[e]})));return a}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let t="\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;let e=At(t.slice(0,-1),"\\");if((t.length-e.length)%2==0)return}else{let t=function(t,e){if(-1===t.indexOf(e[1]))return-1;let r=0;for(let i=0;i0?-2:-1}(e[2],"()");if(-2===t)return;if(t>-1){let r=(0===e[0].indexOf("!")?5:4)+e[1].length+t;e[2]=e[2].substring(0,t),e[0]=e[0].substring(0,r).trim(),e[3]=""}}let r=e[2],i="";if(this.options.pedantic){let t=this.rules.other.pedanticHrefTitle.exec(r);t&&(r=t[1],i=t[3])}else i=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(r=this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?r.slice(1):r.slice(1,-1)),Mt(e,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let t=e[(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!t){let t=r[0].charAt(0);return{type:"text",raw:t,text:t}}return Mt(r,t,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let i=this.rules.inline.emStrongLDelim.exec(t);if(!(!i||i[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!i[1]&&!i[2]||!r||this.rules.inline.punctuation.exec(r))){let r,n,a=[...i[0]].length-1,o=a,s=0,l="*"===i[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,e=e.slice(-1*t.length+a);null!=(i=l.exec(e));){if(r=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!r)continue;if(n=[...r].length,i[3]||i[4]){o+=n;continue}if((i[5]||i[6])&&a%3&&!((a+n)%3)){s+=n;continue}if(o-=n,o>0)continue;n=Math.min(n,n+o+s);let e=[...i[0]][0].length,l=t.slice(0,a+i.index+e+n);if(Math.min(a,n)%2){let t=l.slice(1,-1);return{type:"em",raw:l,text:t,tokens:this.lexer.inlineTokens(t)}}let c=l.slice(2,-2);return{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(t),i=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return r&&i&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let t,r;return"@"===e[2]?(t=e[1],r="mailto:"+t):(t=e[1],r=t),{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let t,r;if("@"===e[2])t=e[0],r="mailto:"+t;else{let i;do{i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??""}while(i!==e[0]);t=e[0],r="www."===e[1]?"http://"+e[0]:e[0]}return{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},Lt=class t{tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||v,this.options.tokenizer=this.options.tokenizer||new Bt,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let e={other:B,block:kt.normal,inline:wt.normal};this.options.pedantic?(e.block=kt.pedantic,e.inline=wt.pedantic):this.options.gfm&&(e.block=kt.gfm,this.options.breaks?e.inline=wt.breaks:e.inline=wt.gfm),this.tokenizer.rules=e}static get rules(){return{block:kt,inline:wt}}static lex(e,r){return new t(r).lex(e)}static lexInline(e,r){return new t(r).inlineTokens(e)}lex(t){t=t.replace(B.carriageReturn,"\n"),this.blockTokens(t,this.tokens);for(let e=0;e!!(i=r.call({lexer:this},t,e))&&(t=t.substring(i.raw.length),e.push(i),!0)))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let r=e.at(-1);1===i.raw.length&&void 0!==r?r.raw+="\n":e.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.text,this.inlineQueue.at(-1).src=r.text):e.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.raw,this.inlineQueue.at(-1).src=r.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},e.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),e.push(i);continue}let n=t;if(this.options.extensions?.startBlock){let e,r=1/0,i=t.slice(1);this.options.extensions.startBlock.forEach(t=>{e=t.call({lexer:this},i),"number"==typeof e&&e>=0&&(r=Math.min(r,e))}),r<1/0&&r>=0&&(n=t.substring(0,r+1))}if(this.state.top&&(i=this.tokenizer.paragraph(n))){let a=e.at(-1);r&&"paragraph"===a?.type?(a.raw+=(a.raw.endsWith("\n")?"":"\n")+i.raw,a.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):e.push(i),r=n.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let r=e.at(-1);"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):e.push(i);continue}if(t){let e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return this.state.top=!0,e}inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e}inlineTokens(t,e=[]){let r,i=t,n=null;if(this.tokens.links){let t=Object.keys(this.tokens.links);if(t.length>0)for(;null!=(n=this.tokenizer.rules.inline.reflinkSearch.exec(i));)t.includes(n[0].slice(n[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,n.index)+"["+"a".repeat(n[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(n=this.tokenizer.rules.inline.anyPunctuation.exec(i));)i=i.slice(0,n.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(n=this.tokenizer.rules.inline.blockSkip.exec(i));)r=n[2]?n[2].length:0,i=i.slice(0,n.index+r)+"["+"a".repeat(n[0].length-r-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=this.options.hooks?.emStrongMask?.call({lexer:this},i)??i;let a=!1,o="";for(;t;){let r;if(a||(o=""),a=!1,this.options.extensions?.inline?.some(i=>!!(r=i.call({lexer:this},t,e))&&(t=t.substring(r.raw.length),e.push(r),!0)))continue;if(r=this.tokenizer.escape(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.tag(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.link(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(r.raw.length);let i=e.at(-1);"text"===r.type&&"text"===i?.type?(i.raw+=r.raw,i.text+=r.text):e.push(r);continue}if(r=this.tokenizer.emStrong(t,i,o)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.codespan(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.br(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.del(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.autolink(t)){t=t.substring(r.raw.length),e.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(t))){t=t.substring(r.raw.length),e.push(r);continue}let n=t;if(this.options.extensions?.startInline){let e,r=1/0,i=t.slice(1);this.options.extensions.startInline.forEach(t=>{e=t.call({lexer:this},i),"number"==typeof e&&e>=0&&(r=Math.min(r,e))}),r<1/0&&r>=0&&(n=t.substring(0,r+1))}if(r=this.tokenizer.inlineText(n)){t=t.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(o=r.raw.slice(-1)),a=!0;let i=e.at(-1);"text"===i?.type?(i.raw+=r.raw,i.text+=r.text):e.push(r);continue}if(t){let e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return e}},Ft=class{options;parser;constructor(t){this.options=t||v}space(t){return""}code({text:t,lang:e,escaped:r}){let i=(e||"").match(B.notSpaceStart)?.[0],n=t.replace(B.endingNewline,"")+"\n";return i?'
'+(r?n:vt(n,!0))+"
\n":"
"+(r?n:vt(n,!0))+"
\n"}blockquote({tokens:t}){return`
\n${this.parser.parse(t)}
\n`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)}\n`}hr(t){return"
\n"}list(t){let e=t.ordered,r=t.start,i="";for(let a=0;a\n"+i+"\n"}listitem(t){let e="";if(t.task){let r=this.checkbox({checked:!!t.checked});t.loose?"paragraph"===t.tokens[0]?.type?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&"text"===t.tokens[0].tokens[0].type&&(t.tokens[0].tokens[0].text=r+" "+vt(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):e+=r+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • \n`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    \n`}table(t){let e="",r="";for(let n=0;n${i}`),"\n\n"+e+"\n"+i+"
    \n"}tablerow({text:t}){return`\n${t}\n`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+`\n`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${vt(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let i=this.parser.parseInline(r),n=St(t);if(null===n)return i;let a='
    ",a}image({href:t,title:e,text:r,tokens:i}){i&&(r=this.parser.parseInline(i,this.parser.textRenderer));let n=St(t);if(null===n)return vt(r);let a=`${r}{let n=t[i].flat(1/0);r=r.concat(this.walkTokens(n,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(t=>{let r={...t};if(r.async=this.defaults.async||r.async||!1,t.extensions&&(t.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let r=e.renderers[t.name];e.renderers[t.name]=r?function(...e){let i=t.renderer.apply(this,e);return!1===i&&(i=r.apply(this,e)),i}:t.renderer}if("tokenizer"in t){if(!t.level||"block"!==t.level&&"inline"!==t.level)throw new Error("extension level must be 'block' or 'inline'");let r=e[t.level];r?r.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&("block"===t.level?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:"inline"===t.level&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),r.extensions=e),t.renderer){let e=this.defaults.renderer||new Ft(this.defaults);for(let r in t.renderer){if(!(r in e))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,n=t.renderer[i],a=e[i];e[i]=(...t)=>{let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r||""}}r.renderer=e}if(t.tokenizer){let e=this.defaults.tokenizer||new Bt(this.defaults);for(let r in t.tokenizer){if(!(r in e))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,n=t.tokenizer[i],a=e[i];e[i]=(...t)=>{let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r}}r.tokenizer=e}if(t.hooks){let e=this.defaults.hooks||new Dt;for(let r in t.hooks){if(!(r in e))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,n=t.hooks[i],a=e[i];Dt.passThroughHooks.has(r)?e[i]=t=>{if(this.defaults.async&&Dt.passThroughHooksRespectAsync.has(r))return(async()=>{let r=await n.call(e,t);return a.call(e,r)})();let i=n.call(e,t);return a.call(e,i)}:e[i]=(...t)=>{if(this.defaults.async)return(async()=>{let r=await n.apply(e,t);return!1===r&&(r=await a.apply(e,t)),r})();let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r}}r.hooks=e}if(t.walkTokens){let e=this.defaults.walkTokens,i=t.walkTokens;r.walkTokens=function(t){let r=[];return r.push(i.call(this,t)),e&&(r=r.concat(e.call(this,t))),r}}this.defaults={...this.defaults,...r}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Lt.lex(t,e??this.defaults)}parser(t,e){return Et.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let i={...r},n={...this.defaults,...i},a=this.onError(!!n.silent,!!n.async);if(!0===this.defaults.async&&!1===i.async)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||null===e)return a(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof e)return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=t),n.async)return(async()=>{let r=n.hooks?await n.hooks.preprocess(e):e,i=await(n.hooks?await n.hooks.provideLexer():t?Lt.lex:Lt.lexInline)(r,n),a=n.hooks?await n.hooks.processAllTokens(i):i;n.walkTokens&&await Promise.all(this.walkTokens(a,n.walkTokens));let o=await(n.hooks?await n.hooks.provideParser():t?Et.parse:Et.parseInline)(a,n);return n.hooks?await n.hooks.postprocess(o):o})().catch(a);try{n.hooks&&(e=n.hooks.preprocess(e));let r=(n.hooks?n.hooks.provideLexer():t?Lt.lex:Lt.lexInline)(e,n);n.hooks&&(r=n.hooks.processAllTokens(r)),n.walkTokens&&this.walkTokens(r,n.walkTokens);let i=(n.hooks?n.hooks.provideParser():t?Et.parse:Et.parseInline)(r,n);return n.hooks&&(i=n.hooks.postprocess(i)),i}catch(o){return a(o)}}}onError(t,e){return r=>{if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",t){let t="

    An error occurred:

    "+vt(r.message+"",!0)+"
    ";return e?Promise.resolve(t):t}if(e)return Promise.reject(r);throw r}}};function Rt(t,e){return Ot.parse(t,e)}Rt.options=Rt.setOptions=function(t){return Ot.setOptions(t),Rt.defaults=Ot.defaults,S(Rt.defaults),Rt},Rt.getDefaults=_,Rt.defaults=v,Rt.use=function(...t){return Ot.use(...t),Rt.defaults=Ot.defaults,S(Rt.defaults),Rt},Rt.walkTokens=function(t,e){return Ot.walkTokens(t,e)},Rt.parseInline=Ot.parseInline,Rt.Parser=Et,Rt.parser=Et.parse,Rt.Renderer=Ft,Rt.TextRenderer=$t,Rt.Lexer=Lt,Rt.lexer=Lt.lex,Rt.Tokenizer=Bt,Rt.Hooks=Dt,Rt.parse=Rt;Rt.options,Rt.setOptions,Rt.use,Rt.walkTokens,Rt.parseInline,Et.parse,Lt.lex;var Kt=r(513),It={body:'?',height:80,width:80},Nt=new Map,Pt=new Map,zt=(0,a.K2)(t=>{for(const e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(a.Rm.debug("Registering icon pack:",e.name),"loader"in e)Pt.set(e.name,e.loader);else{if(!("icons"in e))throw a.Rm.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.');Nt.set(e.name,e.icons)}}},"registerIconPacks"),qt=(0,a.K2)(async(t,e)=>{const r=((t,e,r,i="")=>{const n=t.split(":");if("@"===t.slice(0,1)){if(n.length<2||n.length>3)return null;i=n.shift().slice(1)}if(n.length>3||!n.length)return null;if(n.length>1){const t=n.pop(),r=n.pop(),a={provider:n.length>0?n[0]:i,prefix:r,name:t};return e&&!o(a)?null:a}const a=n[0],s=a.split("-");if(s.length>1){const t={provider:i,prefix:s.shift(),name:s.join("-")};return e&&!o(t)?null:t}if(r&&""===i){const t={provider:i,prefix:"",name:a};return e&&!o(t,r)?null:t}return null})(t,!0,void 0!==e);if(!r)throw new Error(`Invalid icon name: ${t}`);const i=r.prefix||e;if(!i)throw new Error(`Icon name must contain a prefix: ${t}`);let n=Nt.get(i);if(!n){const t=Pt.get(i);if(!t)throw new Error(`Icon set not found: ${r.prefix}`);try{n={...await t(),prefix:i},Nt.set(i,n)}catch(l){throw a.Rm.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}const s=p(n,r.name);if(!s)throw new Error(`Icon not found: ${t}`);return s},"getRegisteredIconData"),jt=(0,a.K2)(async t=>{try{return await qt(t),!0}catch{return!1}},"isIconAvailable"),Wt=(0,a.K2)(async(t,e,r)=>{let i;try{i=await qt(t,e?.fallbackPrefix)}catch(l){a.Rm.error(l),i=It}const o=function(t,e){const r={...c,...t},i={...g,...e},n={left:r.left,top:r.top,width:r.width,height:r.height};let a=r.body;[r,i].forEach(t=>{const e=[],r=t.hFlip,i=t.vFlip;let o,s=t.rotate;switch(r?i?s+=2:(e.push("translate("+(n.width+n.left).toString()+" "+(0-n.top).toString()+")"),e.push("scale(-1 1)"),n.top=n.left=0):i&&(e.push("translate("+(0-n.left).toString()+" "+(n.height+n.top).toString()+")"),e.push("scale(1 -1)"),n.top=n.left=0),s<0&&(s-=4*Math.floor(s/4)),s%=4,s){case 1:o=n.height/2+n.top,e.unshift("rotate(90 "+o.toString()+" "+o.toString()+")");break;case 2:e.unshift("rotate(180 "+(n.width/2+n.left).toString()+" "+(n.height/2+n.top).toString()+")");break;case 3:o=n.width/2+n.left,e.unshift("rotate(-90 "+o.toString()+" "+o.toString()+")")}s%2==1&&(n.left!==n.top&&(o=n.left,n.left=n.top,n.top=o),n.width!==n.height&&(o=n.width,n.width=n.height,n.height=o)),e.length&&(a=function(t,e,r){const i=function(t,e="defs"){let r="";const i=t.indexOf("<"+e);for(;i>=0;){const n=t.indexOf(">",i),a=t.indexOf("",a);if(-1===o)break;r+=t.slice(n+1,a).trim(),t=t.slice(0,i).trim()+t.slice(o+1)}return{defs:r,content:t}}(t);return n=i.defs,a=e+i.content+r,n?""+n+""+a:a;var n,a}(a,'',""))});const o=i.width,s=i.height,l=n.width,h=n.height;let u,d;null===o?(d=null===s?"1em":"auto"===s?h:s,u=x(d,l/h)):(u="auto"===o?l:o,d=null===s?x(u,h/l):"auto"===s?h:s);const p={},f=(t,e)=>{(t=>"unset"===t||"undefined"===t||"none"===t)(e)||(p[t]=e.toString())};f("width",u),f("height",d);const y=[n.left,n.top,l,h];return p.viewBox=y.join(" "),{attributes:p,viewBox:y,body:a}}(i,e),s=function(t,e){let r=-1===t.indexOf("xlink:")?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const i in e)r+=" "+i+'="'+e[i]+'"';return'"+t+""}(w(o.body),{...o.attributes,...r});return(0,n.jZ)(s,(0,n.zj)())},"getIconSVG");function Ht(t,{markdownAutoWrap:e}){const r=t.replace(//g,"\n").replace(/\n{2,}/g,"\n"),i=(0,Kt.T)(r);return!1===e?i.replace(/ /g," "):i}function Ut(t,e={}){const r=Ht(t,e),i=Rt.lexer(r),n=[[]];let o=0;function s(t,e="normal"){if("text"===t.type){t.text.split("\n").forEach((t,r)=>{0!==r&&(o++,n.push([])),t.split(" ").forEach(t=>{(t=t.replace(/'/g,"'"))&&n[o].push({content:t,type:e})})})}else"strong"===t.type||"em"===t.type?t.tokens.forEach(e=>{s(e,t.type)}):"html"===t.type&&n[o].push({content:t.text,type:"normal"})}return(0,a.K2)(s,"processNode"),i.forEach(t=>{"paragraph"===t.type?t.tokens?.forEach(t=>{s(t)}):"html"===t.type?n[o].push({content:t.text,type:"normal"}):n[o].push({content:t.raw,type:"normal"})}),n}function Yt(t,{markdownAutoWrap:e}={}){const r=Rt.lexer(t);function i(t){return"text"===t.type?!1===e?t.text.replace(/\n */g,"
    ").replace(/ /g," "):t.text.replace(/\n */g,"
    "):"strong"===t.type?`${t.tokens?.map(i).join("")}`:"em"===t.type?`${t.tokens?.map(i).join("")}`:"paragraph"===t.type?`

    ${t.tokens?.map(i).join("")}

    `:"space"===t.type?"":"html"===t.type?`${t.text}`:"escape"===t.type?t.text:(a.Rm.warn(`Unsupported markdown: ${t.type}`),t.raw)}return(0,a.K2)(i,"output"),r.map(i).join("")}function Gt(t){return Intl.Segmenter?[...(new Intl.Segmenter).segment(t)].map(t=>t.segment):[...t]}function Xt(t,e){return Vt(t,[],Gt(e.content),e.type)}function Vt(t,e,r,i){if(0===r.length)return[{content:e.join(""),type:i},{content:"",type:i}];const[n,...a]=r,o=[...e,n];return t([{content:o.join(""),type:i}])?Vt(t,o,a,i):(0===e.length&&n&&(e.push(n),r.shift()),[{content:e.join(""),type:i},{content:r.join(""),type:i}])}function Zt(t,e){if(t.some(({content:t})=>t.includes("\n")))throw new Error("splitLineToFitWidth does not support newlines in the line");return Qt(t,e)}function Qt(t,e,r=[],i=[]){if(0===t.length)return i.length>0&&r.push(i),r.length>0?r:[];let n="";" "===t[0].content&&(n=" ",t.shift());const a=t.shift()??{content:" ",type:"normal"},o=[...i];if(""!==n&&o.push({content:n,type:"normal"}),o.push(a),e(o))return Qt(t,e,r,o);if(i.length>0)r.push(i),t.unshift(a);else if(a.content){const[i,n]=Xt(e,a);r.push([i]),n.content&&t.unshift(n)}return Qt(t,e,r)}function Jt(t,e){e&&t.attr("style",e)}async function te(t,e,r,i,a=!1,o=(0,n.zj)()){const s=t.append("foreignObject");s.attr("width",10*r+"px"),s.attr("height",10*r+"px");const l=s.append("xhtml:div"),c=(0,n.Wi)(e.label)?await(0,n.dj)(e.label.replace(n.Y2.lineBreakRegex,"\n"),o):(0,n.jZ)(e.label,o),h=e.isNode?"nodeLabel":"edgeLabel",u=l.append("span");u.html(c),Jt(u,e.labelStyle),u.attr("class",`${h} ${i}`),Jt(l,e.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),l.style("max-width",r+"px"),l.style("text-align","center"),l.attr("xmlns","http://www.w3.org/1999/xhtml"),a&&l.attr("class","labelBkg");let d=l.node().getBoundingClientRect();return d.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),d=l.node().getBoundingClientRect()),s.node()}function ee(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function re(t,e,r){const i=t.append("text"),n=ee(i,1,e);ae(n,r);const a=n.node().getComputedTextLength();return i.remove(),a}function ie(t,e,r){const i=t.append("text"),n=ee(i,1,e);ae(n,[{content:r,type:"normal"}]);const a=n.node()?.getBoundingClientRect();return a&&i.remove(),a}function ne(t,e,r,i=!1){const n=e.append("g"),o=n.insert("rect").attr("class","background").attr("style","stroke: none"),s=n.append("text").attr("y","-10.1");let l=0;for(const c of r){const e=(0,a.K2)(e=>re(n,1.1,e)<=t,"checkWidth"),r=e(c)?[c]:Zt(c,e);for(const t of r){ae(ee(s,l,1.1),t),l++}}if(i){const t=s.node().getBBox(),e=2;return o.attr("x",t.x-e).attr("y",t.y-e).attr("width",t.width+2*e).attr("height",t.height+2*e),n.node()}return s.node()}function ae(t,e){t.text(""),e.forEach((e,r)=>{const i=t.append("tspan").attr("font-style","em"===e.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===e.type?"bold":"normal");0===r?i.text(e.content):i.text(" "+e.content)})}async function oe(t,e={}){const r=[];t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(t,i,a)=>(r.push((async()=>{const r=`${i}:${a}`;return await jt(r)?await Wt(r,void 0,{class:"label-icon"}):``})()),t));const i=await Promise.all(r);return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>i.shift()??"")}(0,a.K2)(Ht,"preprocessMarkdown"),(0,a.K2)(Ut,"markdownToLines"),(0,a.K2)(Yt,"markdownToHTML"),(0,a.K2)(Gt,"splitTextToChars"),(0,a.K2)(Xt,"splitWordToFitWidth"),(0,a.K2)(Vt,"splitWordToFitWidthRecursion"),(0,a.K2)(Zt,"splitLineToFitWidth"),(0,a.K2)(Qt,"splitLineToFitWidthRecursion"),(0,a.K2)(Jt,"applyStyle"),(0,a.K2)(te,"addHtmlSpan"),(0,a.K2)(ee,"createTspan"),(0,a.K2)(re,"computeWidthOfText"),(0,a.K2)(ie,"computeDimensionOfText"),(0,a.K2)(ne,"createFormattedText"),(0,a.K2)(ae,"updateTextContentAndStyles"),(0,a.K2)(oe,"replaceIconSubstring");var se=(0,a.K2)(async(t,e="",{style:r="",isTitle:o=!1,classes:s="",useHtmlLabels:l=!0,isNode:c=!0,width:h=200,addSvgBackground:u=!1}={},d)=>{if(a.Rm.debug("XYZ createText",e,r,o,s,l,c,"addSvgBackground: ",u),l){const a=Yt(e,d),o=await oe((0,i.Sm)(a),d),l=e.replace(/\\\\/g,"\\"),p={isNode:c,label:(0,n.Wi)(e)?l:o,labelStyle:r.replace("fill:","color:")};return await te(t,p,h,s,u,d)}{const i=ne(h,t,Ut(e.replace(//g,"
    ").replace("
    ","
    "),d),!!e&&u);if(c){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,C.Ltv)(i).attr("style",t)}else{const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");(0,C.Ltv)(i).select("rect").attr("style",t.replace(/background:/g,"fill:"));const e=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,C.Ltv)(i).select("text").attr("style",e)}return i}},"createText")},127:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});const i=function(){this.__data__=[],this.size=0};var n=r(6984);const a=function(t,e){for(var r=t.length;r--;)if((0,n.A)(t[r][0],e))return r;return-1};var o=Array.prototype.splice;const s=function(t){var e=this.__data__,r=a(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)};const l=function(t){var e=this.__data__,r=a(e,t);return r<0?void 0:e[r][1]};const c=function(t){return a(this.__data__,t)>-1};const h=function(t,e){var r=this.__data__,i=a(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this};function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{"use strict";r.d(e,{A:()=>l});var i=r(1917),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=n&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===n?i.A.Buffer:void 0,s=o?o.allocUnsafe:void 0;const l=function(t,e){if(e)return t.slice();var r=t.length,i=s?s(r):new t.constructor(r);return t.copy(i),i}},241:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=r(1917).A.Symbol},367:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t,e){return function(r){return t(e(r))}}},451:(t,e,r)=>{"use strict";function i(t,e){let r;if(void 0===e)for(const i of t)null!=i&&(r=i)&&(r=i);else{let i=-1;for(let n of t)null!=(n=e(n,++i,t))&&(r=n)&&(r=n)}return r}function n(t,e){let r;if(void 0===e)for(const i of t)null!=i&&(r>i||void 0===r&&i>=i)&&(r=i);else{let i=-1;for(let n of t)null!=(n=e(n,++i,t))&&(r>n||void 0===r&&n>=n)&&(r=n)}return r}function a(t){return t}r.d(e,{JLW:()=>us,l78:()=>x,tlR:()=>m,qrM:()=>vs,Yu4:()=>Ts,IA3:()=>Ms,Wi0:()=>Ls,PGM:()=>Fs,OEq:()=>Es,y8u:()=>Rs,olC:()=>Is,IrU:()=>Ps,oDi:()=>js,Q7f:()=>Hs,cVp:()=>Ys,lUB:()=>fs,Lx9:()=>Xs,nVG:()=>il,uxU:()=>nl,Xf2:()=>sl,GZz:()=>cl,UPb:()=>ul,dyv:()=>hl,GPZ:()=>Yr,Sk5:()=>Jr,bEH:()=>$i,n8j:()=>ms,T9B:()=>i,jkA:()=>n,rLf:()=>ks,WH:()=>zi,m4Y:()=>bn,UMr:()=>Pi,w7C:()=>Ro,zt:()=>Ko,Ltv:()=>Io,UAC:()=>Rn,DCK:()=>fa,TUC:()=>Hn,Agd:()=>Dn,t6C:()=>Ln,wXd:()=>$n,ABi:()=>zn,Ui6:()=>ea,rGn:()=>Un,ucG:()=>Fn,YPH:()=>Pn,Mol:()=>Wn,PGu:()=>qn,GuW:()=>jn,hkb:()=>di});var o=1,s=2,l=3,c=4,h=1e-6;function u(t){return"translate("+t+",0)"}function d(t){return"translate(0,"+t+")"}function p(t){return e=>+t(e)}function f(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function g(){return!this.__axis}function y(t,e){var r=[],i=null,n=null,y=6,m=6,x=3,b="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,k=t===o||t===c?-1:1,w=t===c||t===s?"x":"y",C=t===o||t===l?u:d;function _(u){var d=null==i?e.ticks?e.ticks.apply(e,r):e.domain():i,_=null==n?e.tickFormat?e.tickFormat.apply(e,r):a:n,v=Math.max(y,0)+x,S=e.range(),T=+S[0]+b,A=+S[S.length-1]+b,M=(e.bandwidth?f:p)(e.copy(),b),B=u.selection?u.selection():u,L=B.selectAll(".domain").data([null]),F=B.selectAll(".tick").data(d,e).order(),$=F.exit(),E=F.enter().append("g").attr("class","tick"),D=F.select("line"),O=F.select("text");L=L.merge(L.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),F=F.merge(E),D=D.merge(E.append("line").attr("stroke","currentColor").attr(w+"2",k*y)),O=O.merge(E.append("text").attr("fill","currentColor").attr(w,k*v).attr("dy",t===o?"0em":t===l?"0.71em":"0.32em")),u!==B&&(L=L.transition(u),F=F.transition(u),D=D.transition(u),O=O.transition(u),$=$.transition(u).attr("opacity",h).attr("transform",function(t){return isFinite(t=M(t))?C(t+b):this.getAttribute("transform")}),E.attr("opacity",h).attr("transform",function(t){var e=this.parentNode.__axis;return C((e&&isFinite(e=e(t))?e:M(t))+b)})),$.remove(),L.attr("d",t===c||t===s?m?"M"+k*m+","+T+"H"+b+"V"+A+"H"+k*m:"M"+b+","+T+"V"+A:m?"M"+T+","+k*m+"V"+b+"H"+A+"V"+k*m:"M"+T+","+b+"H"+A),F.attr("opacity",1).attr("transform",function(t){return C(M(t)+b)}),D.attr(w+"2",k*y),O.attr(w,k*v).text(_),B.filter(g).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===s?"start":t===c?"end":"middle"),B.each(function(){this.__axis=M})}return _.scale=function(t){return arguments.length?(e=t,_):e},_.ticks=function(){return r=Array.from(arguments),_},_.tickArguments=function(t){return arguments.length?(r=null==t?[]:Array.from(t),_):r.slice()},_.tickValues=function(t){return arguments.length?(i=null==t?null:Array.from(t),_):i&&i.slice()},_.tickFormat=function(t){return arguments.length?(n=t,_):n},_.tickSize=function(t){return arguments.length?(y=m=+t,_):y},_.tickSizeInner=function(t){return arguments.length?(y=+t,_):y},_.tickSizeOuter=function(t){return arguments.length?(m=+t,_):m},_.tickPadding=function(t){return arguments.length?(x=+t,_):x},_.offset=function(t){return arguments.length?(b=+t,_):b},_}function m(t){return y(o,t)}function x(t){return y(l,t)}function b(){}function k(t){return null==t?b:function(){return this.querySelector(t)}}function w(){return[]}function C(t){return null==t?w:function(){return this.querySelectorAll(t)}}function _(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}function v(t){return function(){return this.matches(t)}}function S(t){return function(e){return e.matches(t)}}var T=Array.prototype.find;function A(){return this.firstElementChild}var M=Array.prototype.filter;function B(){return Array.from(this.children)}function L(t){return new Array(t.length)}function F(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function $(t,e,r,i,n,a){for(var o,s=0,l=e.length,c=a.length;se?1:t>=e?0:NaN}F.prototype={constructor:F,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var K="http://www.w3.org/1999/xhtml";const I={svg:"http://www.w3.org/2000/svg",xhtml:K,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function N(t){var e=t+="",r=e.indexOf(":");return r>=0&&"xmlns"!==(e=t.slice(0,r))&&(t=t.slice(r+1)),I.hasOwnProperty(e)?{space:I[e],local:t}:t}function P(t){return function(){this.removeAttribute(t)}}function z(t){return function(){this.removeAttributeNS(t.space,t.local)}}function q(t,e){return function(){this.setAttribute(t,e)}}function j(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function W(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttribute(t):this.setAttribute(t,r)}}function H(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function U(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Y(t){return function(){this.style.removeProperty(t)}}function G(t,e,r){return function(){this.style.setProperty(t,e,r)}}function X(t,e,r){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,r)}}function V(t,e){return t.style.getPropertyValue(e)||U(t).getComputedStyle(t,null).getPropertyValue(e)}function Z(t){return function(){delete this[t]}}function Q(t,e){return function(){this[t]=e}}function J(t,e){return function(){var r=e.apply(this,arguments);null==r?delete this[t]:this[t]=r}}function tt(t){return t.trim().split(/^|\s+/)}function et(t){return t.classList||new rt(t)}function rt(t){this._node=t,this._names=tt(t.getAttribute("class")||"")}function it(t,e){for(var r=et(t),i=-1,n=e.length;++i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Mt=[null];function Bt(t,e){this._groups=t,this._parents=e}function Lt(){return new Bt([[document.documentElement]],Mt)}Bt.prototype=Lt.prototype={constructor:Bt,select:function(t){"function"!=typeof t&&(t=k(t));for(var e=this._groups,r=e.length,i=new Array(r),n=0;n=w&&(w=k+1);!(b=m[w])&&++w=0;)(i=n[a])&&(o&&4^i.compareDocumentPosition(o)&&o.parentNode.insertBefore(i,o),o=i);return this},sort:function(t){function e(e,r){return e&&r?t(e.__data__,r.__data__):!e-!r}t||(t=R);for(var r=this._groups,i=r.length,n=new Array(i),a=0;a1?this.each((null==e?Y:"function"==typeof e?X:G)(t,e,null==r?"":r)):V(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Z:"function"==typeof e?J:Q)(t,e)):this.node()[t]},classed:function(t,e){var r=tt(t+"");if(arguments.length<2){for(var i=et(this.node()),n=-1,a=r.length;++n=0&&(e=t.slice(r+1),t=t.slice(0,r)),{type:t,name:e}})}(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?vt:_t,i=0;i{}};function Et(){for(var t,e=0,r=arguments.length,i={};e=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!i.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),o=-1,s=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var r,i,n=new Array(r),a=0;a=0&&e._call.call(void 0,t),e=e._next;--Pt}()}finally{Pt=0,function(){var t,e,r=It,i=1/0;for(;r;)r._call?(i>r._time&&(i=r._time),t=r,r=r._next):(e=r._next,r._next=null,r=t?t._next=e:It=e);Nt=t,te(i)}(),Wt=0}}function Jt(){var t=Ut.now(),e=t-jt;e>1e3&&(Ht-=e,jt=t)}function te(t){Pt||(zt&&(zt=clearTimeout(zt)),t-Wt>24?(t<1/0&&(zt=setTimeout(Qt,t-Ut.now()-Ht)),qt&&(qt=clearInterval(qt))):(qt||(jt=Ut.now(),qt=setInterval(Jt,1e3)),Pt=1,Yt(Qt)))}function ee(t,e,r){var i=new Vt;return e=null==e?0:+e,i.restart(r=>{i.stop(),t(r+e)},e,r),i}Vt.prototype=Zt.prototype={constructor:Vt,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?Gt():+r)+(null==e?0:+e),this._next||Nt===this||(Nt?Nt._next=this:It=this,Nt=this),this._call=t,this._time=r,te()},stop:function(){this._call&&(this._call=null,this._time=1/0,te())}};var re=Kt("start","end","cancel","interrupt"),ie=[];function ne(t,e,r,i,n,a){var o=t.__transition;if(o){if(r in o)return}else t.__transition={};!function(t,e,r){var i,n=t.__transition;function a(t){r.state=1,r.timer.restart(o,r.delay,r.time),r.delay<=t&&o(t-r.delay)}function o(a){var c,h,u,d;if(1!==r.state)return l();for(c in n)if((d=n[c]).name===r.name){if(3===d.state)return ee(o);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete n[c]):+c0)throw new Error("too late; already scheduled");return r}function oe(t,e){var r=se(t,e);if(r.state>3)throw new Error("too late; already running");return r}function se(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function le(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var ce,he=180/Math.PI,ue={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function de(t,e,r,i,n,a){var o,s,l;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(l=t*r+e*i)&&(r-=t*l,i-=e*l),(s=Math.sqrt(r*r+i*i))&&(r/=s,i/=s,l/=s),t*i180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(n(r)+"rotate(",null,i)-2,x:le(t,e)})):e&&r.push(n(r)+"rotate("+e+i)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(n(r)+"skewX(",null,i)-2,x:le(t,e)}):e&&r.push(n(r)+"skewX("+e+i)}(a.skewX,o.skewX,s,l),function(t,e,r,i,a,o){if(t!==r||e!==i){var s=a.push(n(a)+"scale(",null,",",null,")");o.push({i:s-4,x:le(t,r)},{i:s-2,x:le(e,i)})}else 1===r&&1===i||a.push(n(a)+"scale("+r+","+i+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,i=l.length;++r>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?Ne(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?Ne(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Me.exec(t))?new qe(e[1],e[2],e[3],1):(e=Be.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Le.exec(t))?Ne(e[1],e[2],e[3],e[4]):(e=Fe.exec(t))?Ne(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=$e.exec(t))?Ge(e[1],e[2]/100,e[3]/100,1):(e=Ee.exec(t))?Ge(e[1],e[2]/100,e[3]/100,e[4]):De.hasOwnProperty(t)?Ie(De[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function Ie(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function Ne(t,e,r,i){return i<=0&&(t=e=r=NaN),new qe(t,e,r,i)}function Pe(t){return t instanceof we||(t=Ke(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function ze(t,e,r,i){return 1===arguments.length?Pe(t):new qe(t,e,r,null==i?1:i)}function qe(t,e,r,i){this.r=+t,this.g=+e,this.b=+r,this.opacity=+i}function je(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function We(){const t=He(this.opacity);return`${1===t?"rgb(":"rgba("}${Ue(this.r)}, ${Ue(this.g)}, ${Ue(this.b)}${1===t?")":`, ${t})`}`}function He(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ue(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Ue(t))<16?"0":"")+t.toString(16)}function Ge(t,e,r,i){return i<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Ve(t,e,r,i)}function Xe(t){if(t instanceof Ve)return new Ve(t.h,t.s,t.l,t.opacity);if(t instanceof we||(t=Ke(t)),!t)return new Ve;if(t instanceof Ve)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,n=Math.min(e,r,i),a=Math.max(e,r,i),o=NaN,s=a-n,l=(a+n)/2;return s?(o=e===a?(r-i)/s+6*(r0&&l<1?0:o,new Ve(o,s,l,t.opacity)}function Ve(t,e,r,i){this.h=+t,this.s=+e,this.l=+r,this.opacity=+i}function Ze(t){return(t=(t||0)%360)<0?t+360:t}function Qe(t){return Math.max(0,Math.min(1,t||0))}function Je(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}function tr(t,e,r,i,n){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*i+o*n)/6}be(we,Ke,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Oe,formatHex:Oe,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Xe(this).formatHsl()},formatRgb:Re,toString:Re}),be(qe,ze,ke(we,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Ce:Math.pow(Ce,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new qe(Ue(this.r),Ue(this.g),Ue(this.b),He(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:je,formatHex:je,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:We,toString:We})),be(Ve,function(t,e,r,i){return 1===arguments.length?Xe(t):new Ve(t,e,r,null==i?1:i)},ke(we,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Ve(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Ce:Math.pow(Ce,t),new Ve(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*e,n=2*r-i;return new qe(Je(t>=240?t-240:t+120,n,i),Je(t,n,i),Je(t<120?t+240:t-120,n,i),this.opacity)},clamp(){return new Ve(Ze(this.h),Qe(this.s),Qe(this.l),He(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=He(this.opacity);return`${1===t?"hsl(":"hsla("}${Ze(this.h)}, ${100*Qe(this.s)}%, ${100*Qe(this.l)}%${1===t?")":`, ${t})`}`}}));const er=t=>()=>t;function rr(t,e){return function(r){return t+r*e}}function ir(t){return 1===(t=+t)?nr:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(i){return Math.pow(t+i*e,r)}}(e,r,t):er(isNaN(e)?r:e)}}function nr(t,e){var r=e-t;return r?rr(t,r):er(isNaN(t)?e:t)}const ar=function t(e){var r=ir(e);function i(t,e){var i=r((t=ze(t)).r,(e=ze(e)).r),n=r(t.g,e.g),a=r(t.b,e.b),o=nr(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=n(e),t.b=a(e),t.opacity=o(e),t+""}}return i.gamma=t,i}(1);function or(t){return function(e){var r,i,n=e.length,a=new Array(n),o=new Array(n),s=new Array(n);for(r=0;r=1?(r=1,e-1):Math.floor(r*e),n=t[i],a=t[i+1],o=i>0?t[i-1]:2*n-a,s=ia&&(n=e.slice(a,n),s[o]?s[o]+=n:s[++o]=n),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:le(r,i)})),a=lr.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?ae:oe;return function(){var o=a(this,t),s=o.on;s!==i&&(n=(i=s).copy()).on(e,r),o.on=n}}(r,t,e))},attr:function(t,e){var r=N(t),i="transform"===r?ge:hr;return this.attrTween(t,"function"==typeof e?(r.local?yr:gr)(r,i,xe(this,"attr."+t,e)):null==e?(r.local?dr:ur)(r):(r.local?fr:pr)(r,i,e))},attrTween:function(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;var i=N(t);return this.tween(r,(i.local?mr:xr)(i,e))},style:function(t,e,r){var i="transform"==(t+="")?fe:hr;return null==e?this.styleTween(t,function(t,e){var r,i,n;return function(){var a=V(this,t),o=(this.style.removeProperty(t),V(this,t));return a===o?null:a===r&&o===i?n:n=e(r=a,i=o)}}(t,i)).on("end.style."+t,vr(t)):"function"==typeof e?this.styleTween(t,function(t,e,r){var i,n,a;return function(){var o=V(this,t),s=r(this),l=s+"";return null==s&&(this.style.removeProperty(t),l=s=V(this,t)),o===l?null:o===i&&l===n?a:(n=l,a=e(i=o,s))}}(t,i,xe(this,"style."+t,e))).each(function(t,e){var r,i,n,a,o="style."+e,s="end."+o;return function(){var l=oe(this,t),c=l.on,h=null==l.value[o]?a||(a=vr(e)):void 0;c===r&&n===h||(i=(r=c).copy()).on(s,n=h),l.on=i}}(this._id,t)):this.styleTween(t,function(t,e,r){var i,n,a=r+"";return function(){var o=V(this,t);return o===a?null:o===i?n:n=e(i=o,r)}}(t,i,e),r).on("end.style."+t,null)},styleTween:function(t,e,r){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,function(t,e,r){var i,n;function a(){var a=e.apply(this,arguments);return a!==n&&(i=(n=a)&&function(t,e,r){return function(i){this.style.setProperty(t,e.call(this,i),r)}}(t,a,r)),i}return a._value=e,a}(t,e,null==r?"":r))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(xe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,r;function i(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t){return function(e){this.textContent=t.call(this,e)}}(i)),e}return i._value=t,i}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var r=this._id;if(t+="",arguments.length<2){for(var i,n=se(this.node(),r).tween,a=0,o=n.length;a2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete a[n]):o=!1;o&&delete t.__transition}}(this,t)})},Ft.prototype.transition=function(t){var e,r;t instanceof Tr?(e=t._id,t=t._name):(e=Ar(),(r=Br).time=Gt(),t=null==t?null:t+"");for(var i=this._groups,n=i.length,a=0;a1?i[0]+i.slice(2):i,+t.slice(r+1)]}function Ir(t){return(t=Kr(Math.abs(t)))?t[1]:NaN}var Nr,Pr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function zr(t){if(!(e=Pr.exec(t)))throw new Error("invalid format: "+t);var e;return new qr({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function qr(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function jr(t,e){var r=Kr(t,e);if(!r)return t+"";var i=r[0],n=r[1];return n<0?"0."+new Array(-n).join("0")+i:i.length>n+1?i.slice(0,n+1)+"."+i.slice(n+1):i+new Array(n-i.length+2).join("0")}zr.prototype=qr.prototype,qr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Wr={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>jr(100*t,e),r:jr,s:function(t,e){var r=Kr(t,e);if(!r)return t+"";var i=r[0],n=r[1],a=n-(Nr=3*Math.max(-8,Math.min(8,Math.floor(n/3))))+1,o=i.length;return a===o?i:a>o?i+new Array(a-o+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Kr(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Hr(t){return t}var Ur,Yr,Gr,Xr=Array.prototype.map,Vr=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function Zr(t){var e,r,i=void 0===t.grouping||void 0===t.thousands?Hr:(e=Xr.call(t.grouping,Number),r=t.thousands+"",function(t,i){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>i&&(s=Math.max(1,i-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>i));)s=e[o=(o+1)%e.length];return a.reverse().join(r)}),n=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Hr:function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(Xr.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"\u2212":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=zr(t)).fill,r=t.align,u=t.sign,d=t.symbol,p=t.zero,f=t.width,g=t.comma,y=t.precision,m=t.trim,x=t.type;"n"===x?(g=!0,x="g"):Wr[x]||(void 0===y&&(y=12),m=!0,x="g"),(p||"0"===e&&"="===r)&&(p=!0,e="0",r="=");var b="$"===d?n:"#"===d&&/[boxX]/.test(x)?"0"+x.toLowerCase():"",k="$"===d?a:/[%p]/.test(x)?l:"",w=Wr[x],C=/[defgprs%]/.test(x);function _(t){var n,a,l,d=b,_=k;if("c"===x)_=w(t)+_,t="";else{var v=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:w(Math.abs(t),y),m&&(t=function(t){t:for(var e,r=t.length,i=1,n=-1;i0&&(n=0)}return n>0?t.slice(0,n)+t.slice(e+1):t}(t)),v&&0===+t&&"+"!==u&&(v=!1),d=(v?"("===u?u:c:"-"===u||"("===u?"":u)+d,_=("s"===x?Vr[8+Nr/3]:"")+_+(v&&"("===u?")":""),C)for(n=-1,a=t.length;++n(l=t.charCodeAt(n))||l>57){_=(46===l?o+t.slice(n+1):t.slice(n))+_,t=t.slice(0,n);break}}g&&!p&&(t=i(t,1/0));var S=d.length+t.length+_.length,T=S>1)+d+t+_+T.slice(S);break;default:t=T+d+t+_}return s(t)}return y=void 0===y?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),_.toString=function(){return t+""},_}return{format:u,formatPrefix:function(t,e){var r=u(((t=zr(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Ir(e)/3))),n=Math.pow(10,-i),a=Vr[8+i/3];return function(t){return r(n*t)+a}}}}function Qr(t){var e=0,r=t.children,i=r&&r.length;if(i)for(;--i>=0;)e+=r[i].value;else e=1;t.value=e}function Jr(t,e){t instanceof Map?(t=[void 0,t],void 0===e&&(e=ei)):void 0===e&&(e=ti);for(var r,i,n,a,o,s=new ni(t),l=[s];r=l.pop();)if((n=e(r.data))&&(o=(n=Array.from(n)).length))for(r.children=n,a=o-1;a>=0;--a)l.push(i=n[a]=new ni(n[a])),i.parent=r,i.depth=r.depth+1;return s.eachBefore(ii)}function ti(t){return t.children}function ei(t){return Array.isArray(t)?t[1]:null}function ri(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function ii(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function ni(t){this.data=t,this.depth=this.height=0,this.parent=null}function ai(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function oi(t,e,r,i,n){for(var a,o=t.children,s=-1,l=o.length,c=t.value&&(i-e)/t.value;++s=0;--i)a.push(r[i]);return this},find:function(t,e){let r=-1;for(const i of this)if(t.call(e,i,++r,this))return i},sum:function(t){return this.eachAfter(function(e){for(var r=+t(e.data)||0,i=e.children,n=i&&i.length;--n>=0;)r+=i[n].value;e.value=r})},sort:function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),i=e.ancestors(),n=null;t=r.pop(),e=i.pop();for(;t===e;)n=t,t=r.pop(),e=i.pop();return n}(e,t),i=[e];e!==r;)e=e.parent,i.push(e);for(var n=i.length;t!==r;)i.splice(n,0,t),t=t.parent;return i},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t},links:function(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e},copy:function(){return Jr(this).eachBefore(ri)},[Symbol.iterator]:function*(){var t,e,r,i,n=this,a=[n];do{for(t=a.reverse(),a=[];n=t.pop();)if(yield n,e=n.children)for(r=0,i=e.length;rd&&(d=s),y=h*h*g,(p=Math.max(d/y,y/u))>f){h-=s;break}f=p}m.push(o={value:h,dice:l1?e:1)},r}((1+Math.sqrt(5))/2);function ci(t){if("function"!=typeof t)throw new Error;return t}function hi(){return 0}function ui(t){return function(){return t}}function di(){var t=li,e=!1,r=1,i=1,n=[0],a=hi,o=hi,s=hi,l=hi,c=hi;function h(t){return t.x0=t.y0=0,t.x1=r,t.y1=i,t.eachBefore(u),n=[0],e&&t.eachBefore(ai),t}function u(e){var r=n[e.depth],i=e.x0+r,h=e.y0+r,u=e.x1-r,d=e.y1-r;uki?Math.pow(t,1/3):t/bi+mi}function vi(t){return t>xi?t*t*t:bi*(t-mi)}function Si(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ti(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ai(t){if(t instanceof Bi)return new Bi(t.h,t.c,t.l,t.opacity);if(t instanceof Ci||(t=wi(t)),0===t.a&&0===t.b)return new Bi(NaN,0180||r<-180?r-360*Math.round(r/360):r):er(isNaN(t)?e:t)});Fi(nr);function Ei(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}class Di extends Map{constructor(t,e=Ii){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(Oi(this,t))}has(t){return super.has(Oi(this,t))}set(t,e){return super.set(Ri(this,t),e)}delete(t){return super.delete(Ki(this,t))}}Set;function Oi({_intern:t,_key:e},r){const i=e(r);return t.has(i)?t.get(i):r}function Ri({_intern:t,_key:e},r){const i=e(r);return t.has(i)?t.get(i):(t.set(i,r),r)}function Ki({_intern:t,_key:e},r){const i=e(r);return t.has(i)&&(r=t.get(i),t.delete(i)),r}function Ii(t){return null!==t&&"object"==typeof t?t.valueOf():t}const Ni=Symbol("implicit");function Pi(){var t=new Di,e=[],r=[],i=Ni;function n(n){let a=t.get(n);if(void 0===a){if(i!==Ni)return i;t.set(n,a=e.push(n)-1)}return r[a%r.length]}return n.domain=function(r){if(!arguments.length)return e.slice();e=[],t=new Di;for(const i of r)t.has(i)||t.set(i,e.push(i)-1);return n},n.range=function(t){return arguments.length?(r=Array.from(t),n):r.slice()},n.unknown=function(t){return arguments.length?(i=t,n):i},n.copy=function(){return Pi(e,r).unknown(i)},Ei.apply(n,arguments),n}function zi(){var t,e,r=Pi().unknown(void 0),i=r.domain,n=r.range,a=0,o=1,s=!1,l=0,c=0,h=.5;function u(){var r=i().length,u=o=qi?10:a>=ji?5:a>=Wi?2:1;let s,l,c;return n<0?(c=Math.pow(10,-n)/o,s=Math.round(t*c),l=Math.round(e*c),s/ce&&--l,c=-c):(c=Math.pow(10,n)*o,s=Math.round(t/c),l=Math.round(e/c),s*ce&&--l),le?1:t>=e?0:NaN}function Xi(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function Vi(t){let e,r,i;function n(t,i,n=0,a=t.length){if(n>>1;r(t[e],i)<0?n=e+1:a=e}while(nGi(t(e),r),i=(e,r)=>t(e)-r):(e=t===Gi||t===Xi?t:Zi,r=t,i=t),{left:n,center:function(t,e,r=0,a=t.length){const o=n(t,e,r,a-1);return o>r&&i(t[o-1],e)>-i(t[o],e)?o-1:o},right:function(t,i,n=0,a=t.length){if(n>>1;r(t[e],i)<=0?n=e+1:a=e}while(ne&&(r=t,t=e,e=r),c=function(r){return Math.max(t,Math.min(e,r))}),i=l>2?pn:dn,n=a=null,u}function u(e){return null==e||isNaN(e=+e)?r:(n||(n=i(o.map(t),s,l)))(t(c(e)))}return u.invert=function(r){return c(e((a||(a=i(s,o.map(t),le)))(r)))},u.domain=function(t){return arguments.length?(o=Array.from(t,ln),h()):o.slice()},u.range=function(t){return arguments.length?(s=Array.from(t),h()):s.slice()},u.rangeRound=function(t){return s=Array.from(t),l=sn,h()},u.clamp=function(t){return arguments.length?(c=!!t||hn,h()):c!==hn},u.interpolate=function(t){return arguments.length?(l=t,h()):l},u.unknown=function(t){return arguments.length?(r=t,u):r},function(r,i){return t=r,e=i,h()}}function yn(){return gn()(hn,hn)}function mn(t,e,r,i){var n,a=Yi(t,e,r);switch((i=zr(null==i?",f":i)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(n=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Ir(e)/3)))-Ir(Math.abs(t)))}(a,o))||(i.precision=n),Gr(i,o);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(n=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Ir(e)-Ir(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=n-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(n=function(t){return Math.max(0,-Ir(Math.abs(t)))}(a))||(i.precision=n-2*("%"===i.type))}return Yr(i)}function xn(t){var e=t.domain;return t.ticks=function(t){var r=e();return function(t,e,r){if(!((r=+r)>0))return[];if((t=+t)===(e=+e))return[t];const i=e=n))return[];const s=a-n+1,l=new Array(s);if(i)if(o<0)for(let c=0;c0;){if((n=Ui(l,c,r))===i)return a[o]=l,a[s]=c,e(a);if(n>0)l=Math.floor(l/n)*n,c=Math.ceil(c/n)*n;else{if(!(n<0))break;l=Math.ceil(l*n)/n,c=Math.floor(c*n)/n}i=n}return t},t}function bn(){var t=yn();return t.copy=function(){return fn(t,bn())},Ei.apply(t,arguments),xn(t)}const kn=1e3,wn=6e4,Cn=36e5,_n=864e5,vn=6048e5,Sn=2592e6,Tn=31536e6,An=new Date,Mn=new Date;function Bn(t,e,r,i){function n(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return n.floor=e=>(t(e=new Date(+e)),e),n.ceil=r=>(t(r=new Date(r-1)),e(r,1),t(r),r),n.round=t=>{const e=n(t),r=n.ceil(t);return t-e(e(t=new Date(+t),null==r?1:Math.floor(r)),t),n.range=(r,i,a)=>{const o=[];if(r=n.ceil(r),a=null==a?1:Math.floor(a),!(r0))return o;let s;do{o.push(s=new Date(+r)),e(r,a),t(r)}while(sBn(e=>{if(e>=e)for(;t(e),!r(e);)e.setTime(e-1)},(t,i)=>{if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!r(t););else for(;--i>=0;)for(;e(t,1),!r(t););}),r&&(n.count=(e,i)=>(An.setTime(+e),Mn.setTime(+i),t(An),t(Mn),Math.floor(r(An,Mn))),n.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?n.filter(i?e=>i(e)%t===0:e=>n.count(0,e)%t===0):n:null)),n}const Ln=Bn(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);Ln.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Bn(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):Ln:null);Ln.range;const Fn=Bn(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*kn)},(t,e)=>(e-t)/kn,t=>t.getUTCSeconds()),$n=(Fn.range,Bn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*kn)},(t,e)=>{t.setTime(+t+e*wn)},(t,e)=>(e-t)/wn,t=>t.getMinutes())),En=($n.range,Bn(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*wn)},(t,e)=>(e-t)/wn,t=>t.getUTCMinutes())),Dn=(En.range,Bn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*kn-t.getMinutes()*wn)},(t,e)=>{t.setTime(+t+e*Cn)},(t,e)=>(e-t)/Cn,t=>t.getHours())),On=(Dn.range,Bn(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*Cn)},(t,e)=>(e-t)/Cn,t=>t.getUTCHours())),Rn=(On.range,Bn(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*wn)/_n,t=>t.getDate()-1)),Kn=(Rn.range,Bn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/_n,t=>t.getUTCDate()-1)),In=(Kn.range,Bn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/_n,t=>Math.floor(t/_n)));In.range;function Nn(t){return Bn(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+7*e)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*wn)/vn)}const Pn=Nn(0),zn=Nn(1),qn=Nn(2),jn=Nn(3),Wn=Nn(4),Hn=Nn(5),Un=Nn(6);Pn.range,zn.range,qn.range,jn.range,Wn.range,Hn.range,Un.range;function Yn(t){return Bn(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)},(t,e)=>(e-t)/vn)}const Gn=Yn(0),Xn=Yn(1),Vn=Yn(2),Zn=Yn(3),Qn=Yn(4),Jn=Yn(5),ta=Yn(6),ea=(Gn.range,Xn.range,Vn.range,Zn.range,Qn.range,Jn.range,ta.range,Bn(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear()),t=>t.getMonth())),ra=(ea.range,Bn(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear()),t=>t.getUTCMonth())),ia=(ra.range,Bn(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear()));ia.every=t=>isFinite(t=Math.floor(t))&&t>0?Bn(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)}):null;ia.range;const na=Bn(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());na.every=t=>isFinite(t=Math.floor(t))&&t>0?Bn(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)}):null;na.range;function aa(t,e,r,i,n,a){const o=[[Fn,1,kn],[Fn,5,5e3],[Fn,15,15e3],[Fn,30,3e4],[a,1,wn],[a,5,3e5],[a,15,9e5],[a,30,18e5],[n,1,Cn],[n,3,108e5],[n,6,216e5],[n,12,432e5],[i,1,_n],[i,2,1728e5],[r,1,vn],[e,1,Sn],[e,3,7776e6],[t,1,Tn]];function s(e,r,i){const n=Math.abs(r-e)/i,a=Vi(([,,t])=>t).right(o,n);if(a===o.length)return t.every(Yi(e/Tn,r/Tn,i));if(0===a)return Ln.every(Math.max(Yi(e,r,i),1));const[s,l]=o[n/o[a-1][2][t.toLowerCase(),e]))}function _a(t,e,r){var i=ya.exec(e.slice(r,r+1));return i?(t.w=+i[0],r+i[0].length):-1}function va(t,e,r){var i=ya.exec(e.slice(r,r+1));return i?(t.u=+i[0],r+i[0].length):-1}function Sa(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.U=+i[0],r+i[0].length):-1}function Ta(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.V=+i[0],r+i[0].length):-1}function Aa(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.W=+i[0],r+i[0].length):-1}function Ma(t,e,r){var i=ya.exec(e.slice(r,r+4));return i?(t.y=+i[0],r+i[0].length):-1}function Ba(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),r+i[0].length):-1}function La(t,e,r){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),r+i[0].length):-1}function Fa(t,e,r){var i=ya.exec(e.slice(r,r+1));return i?(t.q=3*i[0]-3,r+i[0].length):-1}function $a(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.m=i[0]-1,r+i[0].length):-1}function Ea(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.d=+i[0],r+i[0].length):-1}function Da(t,e,r){var i=ya.exec(e.slice(r,r+3));return i?(t.m=0,t.d=+i[0],r+i[0].length):-1}function Oa(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.H=+i[0],r+i[0].length):-1}function Ra(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.M=+i[0],r+i[0].length):-1}function Ka(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.S=+i[0],r+i[0].length):-1}function Ia(t,e,r){var i=ya.exec(e.slice(r,r+3));return i?(t.L=+i[0],r+i[0].length):-1}function Na(t,e,r){var i=ya.exec(e.slice(r,r+6));return i?(t.L=Math.floor(i[0]/1e3),r+i[0].length):-1}function Pa(t,e,r){var i=ma.exec(e.slice(r,r+1));return i?r+i[0].length:-1}function za(t,e,r){var i=ya.exec(e.slice(r));return i?(t.Q=+i[0],r+i[0].length):-1}function qa(t,e,r){var i=ya.exec(e.slice(r));return i?(t.s=+i[0],r+i[0].length):-1}function ja(t,e){return ba(t.getDate(),e,2)}function Wa(t,e){return ba(t.getHours(),e,2)}function Ha(t,e){return ba(t.getHours()%12||12,e,2)}function Ua(t,e){return ba(1+Rn.count(ia(t),t),e,3)}function Ya(t,e){return ba(t.getMilliseconds(),e,3)}function Ga(t,e){return Ya(t,e)+"000"}function Xa(t,e){return ba(t.getMonth()+1,e,2)}function Va(t,e){return ba(t.getMinutes(),e,2)}function Za(t,e){return ba(t.getSeconds(),e,2)}function Qa(t){var e=t.getDay();return 0===e?7:e}function Ja(t,e){return ba(Pn.count(ia(t)-1,t),e,2)}function to(t){var e=t.getDay();return e>=4||0===e?Wn(t):Wn.ceil(t)}function eo(t,e){return t=to(t),ba(Wn.count(ia(t),t)+(4===ia(t).getDay()),e,2)}function ro(t){return t.getDay()}function io(t,e){return ba(zn.count(ia(t)-1,t),e,2)}function no(t,e){return ba(t.getFullYear()%100,e,2)}function ao(t,e){return ba((t=to(t)).getFullYear()%100,e,2)}function oo(t,e){return ba(t.getFullYear()%1e4,e,4)}function so(t,e){var r=t.getDay();return ba((t=r>=4||0===r?Wn(t):Wn.ceil(t)).getFullYear()%1e4,e,4)}function lo(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+ba(e/60|0,"0",2)+ba(e%60,"0",2)}function co(t,e){return ba(t.getUTCDate(),e,2)}function ho(t,e){return ba(t.getUTCHours(),e,2)}function uo(t,e){return ba(t.getUTCHours()%12||12,e,2)}function po(t,e){return ba(1+Kn.count(na(t),t),e,3)}function fo(t,e){return ba(t.getUTCMilliseconds(),e,3)}function go(t,e){return fo(t,e)+"000"}function yo(t,e){return ba(t.getUTCMonth()+1,e,2)}function mo(t,e){return ba(t.getUTCMinutes(),e,2)}function xo(t,e){return ba(t.getUTCSeconds(),e,2)}function bo(t){var e=t.getUTCDay();return 0===e?7:e}function ko(t,e){return ba(Gn.count(na(t)-1,t),e,2)}function wo(t){var e=t.getUTCDay();return e>=4||0===e?Qn(t):Qn.ceil(t)}function Co(t,e){return t=wo(t),ba(Qn.count(na(t),t)+(4===na(t).getUTCDay()),e,2)}function _o(t){return t.getUTCDay()}function vo(t,e){return ba(Xn.count(na(t)-1,t),e,2)}function So(t,e){return ba(t.getUTCFullYear()%100,e,2)}function To(t,e){return ba((t=wo(t)).getUTCFullYear()%100,e,2)}function Ao(t,e){return ba(t.getUTCFullYear()%1e4,e,4)}function Mo(t,e){var r=t.getUTCDay();return ba((t=r>=4||0===r?Qn(t):Qn.ceil(t)).getUTCFullYear()%1e4,e,4)}function Bo(){return"+0000"}function Lo(){return"%"}function Fo(t){return+t}function $o(t){return Math.floor(+t/1e3)}function Eo(t){return new Date(t)}function Do(t){return t instanceof Date?+t:+new Date(+t)}function Oo(t,e,r,i,n,a,o,s,l,c){var h=yn(),u=h.invert,d=h.domain,p=c(".%L"),f=c(":%S"),g=c("%I:%M"),y=c("%I %p"),m=c("%a %d"),x=c("%b %d"),b=c("%B"),k=c("%Y");function w(t){return(l(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Fo,s:$o,S:Za,u:Qa,U:Ja,V:eo,w:ro,W:io,x:null,X:null,y:no,Y:oo,Z:lo,"%":Lo},k={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:co,e:co,f:go,g:To,G:Mo,H:ho,I:uo,j:po,L:fo,m:yo,M:mo,p:function(t){return n[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Fo,s:$o,S:xo,u:bo,U:ko,V:Co,w:_o,W:vo,x:null,X:null,y:So,Y:Ao,Z:Bo,"%":Lo},w={a:function(t,e,r){var i=p.exec(e.slice(r));return i?(t.w=f.get(i[0].toLowerCase()),r+i[0].length):-1},A:function(t,e,r){var i=u.exec(e.slice(r));return i?(t.w=d.get(i[0].toLowerCase()),r+i[0].length):-1},b:function(t,e,r){var i=m.exec(e.slice(r));return i?(t.m=x.get(i[0].toLowerCase()),r+i[0].length):-1},B:function(t,e,r){var i=g.exec(e.slice(r));return i?(t.m=y.get(i[0].toLowerCase()),r+i[0].length):-1},c:function(t,r,i){return v(t,e,r,i)},d:Ea,e:Ea,f:Na,g:Ba,G:Ma,H:Oa,I:Oa,j:Da,L:Ia,m:$a,M:Ra,p:function(t,e,r){var i=c.exec(e.slice(r));return i?(t.p=h.get(i[0].toLowerCase()),r+i[0].length):-1},q:Fa,Q:za,s:qa,S:Ka,u:va,U:Sa,V:Ta,w:_a,W:Aa,x:function(t,e,i){return v(t,r,e,i)},X:function(t,e,r){return v(t,i,e,r)},y:Ba,Y:Ma,Z:La,"%":Pa};function C(t,e){return function(r){var i,n,a,o=[],s=-1,l=0,c=t.length;for(r instanceof Date||(r=new Date(+r));++s53)return null;"w"in a||(a.w=1),"Z"in a?(n=(i=ua(da(a.y,0,1))).getUTCDay(),i=n>4||0===n?Xn.ceil(i):Xn(i),i=Kn.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(n=(i=ha(da(a.y,0,1))).getDay(),i=n>4||0===n?zn.ceil(i):zn(i),i=Rn.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),n="Z"in a?ua(da(a.y,0,1)).getUTCDay():ha(da(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(n+5)%7:a.w+7*a.U-(n+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,ua(a)):ha(a)}}function v(t,e,r,i){for(var n,a,o=0,s=e.length,l=r.length;o=l)return-1;if(37===(n=e.charCodeAt(o++))){if(n=e.charAt(o++),!(a=w[n in ga?e.charAt(o++):n])||(i=a(t,r,i))<0)return-1}else if(n!=r.charCodeAt(i++))return-1}return i}return b.x=C(r,b),b.X=C(i,b),b.c=C(e,b),k.x=C(r,k),k.X=C(i,k),k.c=C(e,k),{format:function(t){var e=C(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=C(t+="",k);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}(t),fa=pa.format,pa.parse,pa.utcFormat,pa.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Ko=function(t){for(var e=t.length/6|0,r=new Array(e),i=0;i=1?Xo:t<=-1?-Xo:Math.asin(t)}const Qo=Math.PI,Jo=2*Qo,ts=1e-6,es=Jo-ts;function rs(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return rs;const r=10**e;return function(t){this._+=t[0];for(let e=1,i=t.length;ets)if(Math.abs(h*s-l*c)>ts&&n){let d=r-a,p=i-o,f=s*s+l*l,g=d*d+p*p,y=Math.sqrt(f),m=Math.sqrt(u),x=n*Math.tan((Qo-Math.acos((f+u-g)/(2*y*m)))/2),b=x/m,k=x/y;Math.abs(b-1)>ts&&this._append`L${t+b*c},${e+b*h}`,this._append`A${n},${n},0,0,${+(h*d>c*p)},${this._x1=t+k*s},${this._y1=e+k*l}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,r,i,n,a){if(t=+t,e=+e,a=!!a,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(i),s=r*Math.sin(i),l=t+o,c=e+s,h=1^a,u=a?i-n:n-i;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>ts||Math.abs(this._y1-c)>ts)&&this._append`L${l},${c}`,r&&(u<0&&(u=u%Jo+Jo),u>es?this._append`A${r},${r},0,1,${h},${t-o},${e-s}A${r},${r},0,1,${h},${this._x1=l},${this._y1=c}`:u>ts&&this._append`A${r},${r},0,${+(u>=Qo)},${h},${this._x1=t+r*Math.cos(n)},${this._y1=e+r*Math.sin(n)}`)}rect(t,e,r,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}}function ns(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(null==r)e=null;else{const t=Math.floor(r);if(!(t>=0))throw new RangeError(`invalid digits: ${r}`);e=t}return t},()=>new is(e)}function as(t){return t.innerRadius}function os(t){return t.outerRadius}function ss(t){return t.startAngle}function ls(t){return t.endAngle}function cs(t){return t&&t.padAngle}function hs(t,e,r,i,n,a,o){var s=t-r,l=e-i,c=(o?a:-a)/Uo(s*s+l*l),h=c*l,u=-c*s,d=t+h,p=e+u,f=r+h,g=i+u,y=(d+f)/2,m=(p+g)/2,x=f-d,b=g-p,k=x*x+b*b,w=n-a,C=d*g-f*p,_=(b<0?-1:1)*Uo(jo(0,w*w*k-C*C)),v=(C*b-x*_)/k,S=(-C*x-b*_)/k,T=(C*b+x*_)/k,A=(-C*x+b*_)/k,M=v-y,B=S-m,L=T-y,F=A-m;return M*M+B*B>L*L+F*F&&(v=T,S=A),{cx:v,cy:S,x01:-h,y01:-u,x11:v*(n/w-1),y11:S*(n/w-1)}}function us(){var t=as,e=os,r=No(0),i=null,n=ss,a=ls,o=cs,s=null,l=ns(c);function c(){var c,h,u,d=+t.apply(this,arguments),p=+e.apply(this,arguments),f=n.apply(this,arguments)-Xo,g=a.apply(this,arguments)-Xo,y=Po(g-f),m=g>f;if(s||(s=c=l()),pYo)if(y>Vo-Yo)s.moveTo(p*qo(f),p*Ho(f)),s.arc(0,0,p,f,g,!m),d>Yo&&(s.moveTo(d*qo(g),d*Ho(g)),s.arc(0,0,d,g,f,m));else{var x,b,k=f,w=g,C=f,_=g,v=y,S=y,T=o.apply(this,arguments)/2,A=T>Yo&&(i?+i.apply(this,arguments):Uo(d*d+p*p)),M=Wo(Po(p-d)/2,+r.apply(this,arguments)),B=M,L=M;if(A>Yo){var F=Zo(A/d*Ho(T)),$=Zo(A/p*Ho(T));(v-=2*F)>Yo?(C+=F*=m?1:-1,_-=F):(v=0,C=_=(f+g)/2),(S-=2*$)>Yo?(k+=$*=m?1:-1,w-=$):(S=0,k=w=(f+g)/2)}var E=p*qo(k),D=p*Ho(k),O=d*qo(_),R=d*Ho(_);if(M>Yo){var K,I=p*qo(w),N=p*Ho(w),P=d*qo(C),z=d*Ho(C);if(y1?0:u<-1?Go:Math.acos(u))/2),Y=Uo(K[0]*K[0]+K[1]*K[1]);B=Wo(M,(d-Y)/(U-1)),L=Wo(M,(p-Y)/(U+1))}else B=L=0}S>Yo?L>Yo?(x=hs(P,z,E,D,p,L,m),b=hs(I,N,O,R,p,L,m),s.moveTo(x.cx+x.x01,x.cy+x.y01),LYo&&v>Yo?B>Yo?(x=hs(O,R,I,N,d,-B,m),b=hs(E,D,P,z,d,-B,m),s.lineTo(x.cx+x.x01,x.cy+x.y01),Bt?1:e>=t?0:NaN}function bs(t){return t}function ks(){var t=bs,e=xs,r=null,i=No(0),n=No(Vo),a=No(0);function o(o){var s,l,c,h,u,d=(o=ds(o)).length,p=0,f=new Array(d),g=new Array(d),y=+i.apply(this,arguments),m=Math.min(Vo,Math.max(-Vo,n.apply(this,arguments)-y)),x=Math.min(Math.abs(m)/d,a.apply(this,arguments)),b=x*(m<0?-1:1);for(s=0;s0&&(p+=u);for(null!=e?f.sort(function(t,r){return e(g[t],g[r])}):null!=r&&f.sort(function(t,e){return r(o[t],o[e])}),s=0,c=p?(m-d*b)/p:0;s0?u*c:0)+b,g[l]={data:o[l],index:s,value:u,startAngle:y,endAngle:h,padAngle:x};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:No(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,r=null,o):e},o.sort=function(t){return arguments.length?(r=t,e=null,o):r},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:No(+t),o):i},o.endAngle=function(t){return arguments.length?(n="function"==typeof t?t:No(+t),o):n},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:No(+t),o):a},o}function ws(){}function Cs(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function _s(t){this._context=t}function vs(t){return new _s(t)}function Ss(t){this._context=t}function Ts(t){return new Ss(t)}function As(t){this._context=t}function Ms(t){return new As(t)}ps.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},_s.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Cs(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Cs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Ss.prototype={areaStart:ws,areaEnd:ws,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Cs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},As.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,i):this._context.moveTo(r,i);break;case 3:this._point=4;default:Cs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class Bs{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function Ls(t){return new Bs(t,!0)}function Fs(t){return new Bs(t,!1)}function $s(t,e){this._basis=new _s(t),this._beta=e}$s.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var i,n=t[0],a=e[0],o=t[r]-n,s=e[r]-a,l=-1;++l<=r;)i=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+i*o),this._beta*e[l]+(1-this._beta)*(a+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const Es=function t(e){function r(t){return 1===e?new _s(t):new $s(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function Ds(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function Os(t,e){this._context=t,this._k=(1-e)/6}Os.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ds(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Ds(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Rs=function t(e){function r(t){return new Os(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Ks(t,e){this._context=t,this._k=(1-e)/6}Ks.prototype={areaStart:ws,areaEnd:ws,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Ds(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Is=function t(e){function r(t){return new Ks(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Ns(t,e){this._context=t,this._k=(1-e)/6}Ns.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ds(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ps=function t(e){function r(t){return new Ns(t,e)}return r.tension=function(e){return t(+e)},r}(0);function zs(t,e,r){var i=t._x1,n=t._y1,a=t._x2,o=t._y2;if(t._l01_a>Yo){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,n=(n*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Yo){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/h,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/h}t._context.bezierCurveTo(i,n,a,o,t._x2,t._y2)}function qs(t,e){this._context=t,this._alpha=e}qs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:zs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const js=function t(e){function r(t){return e?new qs(t,e):new Os(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Ws(t,e){this._context=t,this._alpha=e}Ws.prototype={areaStart:ws,areaEnd:ws,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:zs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Hs=function t(e){function r(t){return e?new Ws(t,e):new Ks(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Us(t,e){this._context=t,this._alpha=e}Us.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:zs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ys=function t(e){function r(t){return e?new Us(t,e):new Ns(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Gs(t){this._context=t}function Xs(t){return new Gs(t)}function Vs(t){return t<0?-1:1}function Zs(t,e,r){var i=t._x1-t._x0,n=e-t._x1,a=(t._y1-t._y0)/(i||n<0&&-0),o=(r-t._y1)/(n||i<0&&-0),s=(a*n+o*i)/(i+n);return(Vs(a)+Vs(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Qs(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Js(t,e,r){var i=t._x0,n=t._y0,a=t._x1,o=t._y1,s=(a-i)/3;t._context.bezierCurveTo(i+s,n+s*e,a-s,o-s*r,a,o)}function tl(t){this._context=t}function el(t){this._context=new rl(t)}function rl(t){this._context=t}function il(t){return new tl(t)}function nl(t){return new el(t)}function al(t){this._context=t}function ol(t){var e,r,i=t.length-1,n=new Array(i),a=new Array(i),o=new Array(i);for(n[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)n[e]=(o[e]-n[e+1])/a[e];for(a[i-1]=(t[i]+n[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},dl.prototype={constructor:dl,scale:function(t){return 1===t?this:new dl(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new dl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};new dl(1,0,0);dl.prototype},513:(t,e,r)=>{"use strict";function i(t){for(var e=[],r=1;ri})},565:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(3988);const n=function(t){var e=new t.constructor(t.byteLength);return new i.A(e).set(new i.A(t)),e}},797:(t,e,r)=>{"use strict";r.d(e,{He:()=>c,K2:()=>a,Rm:()=>l,VA:()=>o});var i=r(4353),n=Object.defineProperty,a=(t,e)=>n(t,"name",{value:e,configurable:!0}),o=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},s={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},l={trace:a((...t)=>{},"trace"),debug:a((...t)=>{},"debug"),info:a((...t)=>{},"info"),warn:a((...t)=>{},"warn"),error:a((...t)=>{},"error"),fatal:a((...t)=>{},"fatal")},c=a(function(t="fatal"){let e=s.fatal;"string"==typeof t?t.toLowerCase()in s&&(e=s[t]):"number"==typeof t&&(e=t),l.trace=()=>{},l.debug=()=>{},l.info=()=>{},l.warn=()=>{},l.error=()=>{},l.fatal=()=>{},e<=s.fatal&&(l.fatal=console.error?console.error.bind(console,h("FATAL"),"color: orange"):console.log.bind(console,"\x1b[35m",h("FATAL"))),e<=s.error&&(l.error=console.error?console.error.bind(console,h("ERROR"),"color: orange"):console.log.bind(console,"\x1b[31m",h("ERROR"))),e<=s.warn&&(l.warn=console.warn?console.warn.bind(console,h("WARN"),"color: orange"):console.log.bind(console,"\x1b[33m",h("WARN"))),e<=s.info&&(l.info=console.info?console.info.bind(console,h("INFO"),"color: lightblue"):console.log.bind(console,"\x1b[34m",h("INFO"))),e<=s.debug&&(l.debug=console.debug?console.debug.bind(console,h("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",h("DEBUG"))),e<=s.trace&&(l.trace=console.debug?console.debug.bind(console,h("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",h("TRACE")))},"setLogLevel"),h=a(t=>`%c${i().format("ss.SSS")} : ${t} : `,"format")},1121:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=Function.prototype.toString;const n=function(t){if(null!=t){try{return i.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},1754:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(127);const n=function(){this.__data__=new i.A,this.size=0};const a=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r};const o=function(t){return this.__data__.get(t)};const s=function(t){return this.__data__.has(t)};var l=r(8335),c=r(9471);const h=function(t,e){var r=this.__data__;if(r instanceof i.A){var n=r.__data__;if(!l.A||n.length<199)return n.push([t,e]),this.size=++r.size,this;r=this.__data__=new c.A(n)}return r.set(t,e),this.size=r.size,this};function u(t){var e=this.__data__=new i.A(t);this.size=e.size}u.prototype.clear=n,u.prototype.delete=a,u.prototype.get=o,u.prototype.has=s,u.prototype.set=h;const d=u},1801:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(565);const n=function(t,e){var r=e?(0,i.A)(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}},1852:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(7271);const n=(0,r(367).A)(Object.keys,Object);var a=Object.prototype.hasOwnProperty;const o=function(t){if(!(0,i.A)(t))return n(t);var e=[];for(var r in Object(t))a.call(t,r)&&"constructor"!=r&&e.push(r);return e}},1917:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(2136),n="object"==typeof self&&self&&self.Object===Object&&self;const a=i.A||n||Function("return this")()},2031:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(2851),n=r(2528);const a=function(t,e,r,a){var o=!r;r||(r={});for(var s=-1,l=e.length;++s{"use strict";r.d(e,{A:()=>i});const i=Array.isArray},2136:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i="object"==typeof globalThis&&globalThis&&globalThis.Object===Object&&globalThis},2274:(t,e,r)=>{"use strict";r.d(e,{A:()=>c});var i=r(8496),n=r(3098);const a=function(t){return(0,n.A)(t)&&"[object Arguments]"==(0,i.A)(t)};var o=Object.prototype,s=o.hasOwnProperty,l=o.propertyIsEnumerable;const c=a(function(){return arguments}())?a:function(t){return(0,n.A)(t)&&s.call(t,"callee")&&!l.call(t,"callee")}},2279:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>Ge});var i=r(9264),n=r(3590),a=r(3981),o=r(45),s=(r(5164),r(8698),r(5894),r(3245),r(2387),r(92)),l=r(3226),c=r(7633),h=r(797),u=r(513),d=r(451),p="comm",f="rule",g="decl",y=Math.abs,m=String.fromCharCode;Object.assign;function x(t){return t.trim()}function b(t,e,r){return t.replace(e,r)}function k(t,e,r){return t.indexOf(e,r)}function w(t,e){return 0|t.charCodeAt(e)}function C(t,e,r){return t.slice(e,r)}function _(t){return t.length}function v(t,e){return e.push(t),t}function S(t,e){for(var r="",i=0;i0?w($,--L):0,M--,10===F&&(M=1,A--),F}function O(){return F=L2||N(F)>3?"":" "}function W(t,e){for(;--e&&O()&&!(F<48||F>102||F>57&&F<65||F>70&&F<97););return I(t,K()+(e<6&&32==R()&&32==O()))}function H(t){for(;O();)switch(F){case t:return L;case 34:case 39:34!==t&&39!==t&&H(F);break;case 40:41===t&&H(t);break;case 92:O()}return L}function U(t,e){for(;O()&&t+F!==57&&(t+F!==84||47!==R()););return"/*"+I(e,L-1)+"*"+m(47===t?t:O())}function Y(t){for(;!N(R());)O();return I(t,L)}function G(t){return z(X("",null,null,null,[""],t=P(t),0,[0],t))}function X(t,e,r,i,n,a,o,s,l){for(var c=0,h=0,u=o,d=0,p=0,f=0,g=1,x=1,S=1,T=0,A="",M=n,B=a,L=i,F=A;x;)switch(f=T,T=O()){case 40:if(108!=f&&58==w(F,u-1)){-1!=k(F+=b(q(T),"&","&\f"),"&\f",y(c?s[c-1]:0))&&(S=-1);break}case 34:case 39:case 91:F+=q(T);break;case 9:case 10:case 13:case 32:F+=j(f);break;case 92:F+=W(K()-1,7);continue;case 47:switch(R()){case 42:case 47:v(Z(U(O(),K()),e,r,l),l),5!=N(f||1)&&5!=N(R()||1)||!_(F)||" "===C(F,-1,void 0)||(F+=" ");break;default:F+="/"}break;case 123*g:s[c++]=_(F)*S;case 125*g:case 59:case 0:switch(T){case 0:case 125:x=0;case 59+h:-1==S&&(F=b(F,/\f/g,"")),p>0&&(_(F)-u||0===g&&47===f)&&v(p>32?Q(F+";",i,r,u-1,l):Q(b(F," ","")+";",i,r,u-2,l),l);break;case 59:F+=";";default:if(v(L=V(F,e,r,c,h,n,s,A,M=[],B=[],u,a),a),123===T)if(0===h)X(F,e,L,L,M,a,u,s,B);else{switch(d){case 99:if(110===w(F,3))break;case 108:if(97===w(F,2))break;default:h=0;case 100:case 109:case 115:}h?X(t,L,L,i&&v(V(t,L,L,0,0,n,s,A,n,M=[],u,B),B),n,B,u,s,i?M:B):X(F,L,L,L,[""],B,0,s,B)}}c=h=p=0,g=S=1,A=F="",u=o;break;case 58:u=1+_(F),p=f;default:if(g<1)if(123==T)--g;else if(125==T&&0==g++&&125==D())continue;switch(F+=m(T),T*g){case 38:S=h>0?1:(F+="\f",-1);break;case 44:s[c++]=(_(F)-1)*S,S=1;break;case 64:45===R()&&(F+=q(O())),d=R(),h=u=_(A=F+=Y(K())),T++;break;case 45:45===f&&2==_(F)&&(g=0)}}return a}function V(t,e,r,i,n,a,o,s,l,c,h,u){for(var d=n-1,p=0===n?a:[""],g=function(t){return t.length}(p),m=0,k=0,w=0;m0?p[_]+" "+v:b(v,/&\f/g,p[_])))&&(l[w++]=S);return E(t,e,r,0===n?f:s,l,c,h,u)}function Z(t,e,r,i){return E(t,e,r,p,m(F),C(t,2,-2),0,i)}function Q(t,e,r,i,n){return E(t,e,r,g,C(t,0,i),C(t,i+1,-1),i,n)}var J=r(9418),tt=r(6401),et={id:"c4",detector:(0,h.K2)(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(4981).then(r.bind(r,4981));return{id:"c4",diagram:t}},"loader")},rt="flowchart",it={id:rt,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.flowchart?.defaultRenderer&&"elk"!==e?.flowchart?.defaultRenderer&&/^\s*graph/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2291)]).then(r.bind(r,2291));return{id:rt,diagram:t}},"loader")},nt="flowchart-v2",at={id:nt,detector:(0,h.K2)((t,e)=>"dagre-d3"!==e?.flowchart?.defaultRenderer&&("elk"===e?.flowchart?.defaultRenderer&&(e.layout="elk"),!(!/^\s*graph/.test(t)||"dagre-wrapper"!==e?.flowchart?.defaultRenderer)||/^\s*flowchart/.test(t)),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2291)]).then(r.bind(r,2291));return{id:nt,diagram:t}},"loader")},ot={id:"er",detector:(0,h.K2)(t=>/^\s*erDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8756)]).then(r.bind(r,8756));return{id:"er",diagram:t}},"loader")},st="gitGraph",lt={id:st,detector:(0,h.K2)(t=>/^\s*gitGraph/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(6319)]).then(r.bind(r,6319));return{id:st,diagram:t}},"loader")},ct="gantt",ht={id:ct,detector:(0,h.K2)(t=>/^\s*gantt/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(2492).then(r.bind(r,2492));return{id:ct,diagram:t}},"loader")},ut="info",dt={id:ut,detector:(0,h.K2)(t=>/^\s*info/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(7465)]).then(r.bind(r,7465));return{id:ut,diagram:t}},"loader")},pt={id:"pie",detector:(0,h.K2)(t=>/^\s*pie/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(9412)]).then(r.bind(r,9412));return{id:"pie",diagram:t}},"loader")},ft="quadrantChart",gt={id:ft,detector:(0,h.K2)(t=>/^\s*quadrantChart/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(1203).then(r.bind(r,1203));return{id:ft,diagram:t}},"loader")},yt="xychart",mt={id:yt,detector:(0,h.K2)(t=>/^\s*xychart(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(5955).then(r.bind(r,5955));return{id:yt,diagram:t}},"loader")},xt="requirement",bt={id:xt,detector:(0,h.K2)(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(9032)]).then(r.bind(r,9032));return{id:xt,diagram:t}},"loader")},kt="sequence",wt={id:kt,detector:(0,h.K2)(t=>/^\s*sequenceDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(7592).then(r.bind(r,7592));return{id:kt,diagram:t}},"loader")},Ct="class",_t={id:Ct,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.class?.defaultRenderer&&/^\s*classDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(1746),r.e(9510)]).then(r.bind(r,9510));return{id:Ct,diagram:t}},"loader")},vt="classDiagram",St={id:vt,detector:(0,h.K2)((t,e)=>!(!/^\s*classDiagram/.test(t)||"dagre-wrapper"!==e?.class?.defaultRenderer)||/^\s*classDiagram-v2/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(1746),r.e(3815)]).then(r.bind(r,3815));return{id:vt,diagram:t}},"loader")},Tt="state",At={id:Tt,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.state?.defaultRenderer&&/^\s*stateDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2334),r.e(4616),r.e(8142)]).then(r.bind(r,8142));return{id:Tt,diagram:t}},"loader")},Mt="stateDiagram",Bt={id:Mt,detector:(0,h.K2)((t,e)=>!!/^\s*stateDiagram-v2/.test(t)||!(!/^\s*stateDiagram/.test(t)||"dagre-wrapper"!==e?.state?.defaultRenderer),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(4616),r.e(4802)]).then(r.bind(r,4802));return{id:Mt,diagram:t}},"loader")},Lt="journey",Ft={id:Lt,detector:(0,h.K2)(t=>/^\s*journey/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(5480).then(r.bind(r,5480));return{id:Lt,diagram:t}},"loader")},$t={draw:(0,h.K2)((t,e,r)=>{h.Rm.debug("rendering svg for syntax error\n");const i=(0,n.D)(e),a=i.append("g");i.attr("viewBox","0 0 2412 512"),(0,c.a$)(i,100,512,!0),a.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),a.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),a.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),a.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),a.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),a.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),a.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),a.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw")},Et=$t,Dt={db:{},renderer:$t,parser:{parse:(0,h.K2)(()=>{},"parse")}},Ot="flowchart-elk",Rt={id:Ot,detector:(0,h.K2)((t,e={})=>!!(/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&"elk"===e?.flowchart?.defaultRenderer)&&(e.layout="elk",!0),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2291)]).then(r.bind(r,2291));return{id:Ot,diagram:t}},"loader")},Kt="timeline",It={id:Kt,detector:(0,h.K2)(t=>/^\s*timeline/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(291).then(r.bind(r,291));return{id:Kt,diagram:t}},"loader")},Nt="mindmap",Pt={id:Nt,detector:(0,h.K2)(t=>/^\s*mindmap/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(9717)]).then(r.bind(r,9717));return{id:Nt,diagram:t}},"loader")},zt="kanban",qt={id:zt,detector:(0,h.K2)(t=>/^\s*kanban/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(6241).then(r.bind(r,6241));return{id:zt,diagram:t}},"loader")},jt="sankey",Wt={id:jt,detector:(0,h.K2)(t=>/^\s*sankey(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(1741).then(r.bind(r,1741));return{id:jt,diagram:t}},"loader")},Ht="packet",Ut={id:Ht,detector:(0,h.K2)(t=>/^\s*packet(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(6567)]).then(r.bind(r,6567));return{id:Ht,diagram:t}},"loader")},Yt="radar",Gt={id:Yt,detector:(0,h.K2)(t=>/^\s*radar-beta/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(6992)]).then(r.bind(r,6992));return{id:Yt,diagram:t}},"loader")},Xt="block",Vt={id:Xt,detector:(0,h.K2)(t=>/^\s*block(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(5996)]).then(r.bind(r,5996));return{id:Xt,diagram:t}},"loader")},Zt="architecture",Qt={id:Zt,detector:(0,h.K2)(t=>/^\s*architecture/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(165),r.e(8249)]).then(r.bind(r,8249));return{id:Zt,diagram:t}},"loader")},Jt="treemap",te={id:Jt,detector:(0,h.K2)(t=>/^\s*treemap/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(2821)]).then(r.bind(r,2821));return{id:Jt,diagram:t}},"loader")},ee=!1,re=(0,h.K2)(()=>{ee||(ee=!0,(0,c.Js)("error",Dt,t=>"error"===t.toLowerCase().trim()),(0,c.Js)("---",{db:{clear:(0,h.K2)(()=>{},"clear")},styles:{},renderer:{draw:(0,h.K2)(()=>{},"draw")},parser:{parse:(0,h.K2)(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:(0,h.K2)(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),(0,c.Xd)(Rt,Pt,Qt),(0,c.Xd)(et,qt,St,_t,ot,ht,dt,pt,bt,wt,at,it,It,lt,Bt,At,Ft,gt,Wt,Ut,mt,Vt,Gt,te))},"addDiagrams"),ie=(0,h.K2)(async()=>{h.Rm.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(c.mW).map(async([t,{detector:e,loader:r}])=>{if(r)try{(0,c.Gs)(t)}catch{try{const{diagram:t,id:i}=await r();(0,c.Js)(i,t,e)}catch(i){throw h.Rm.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete c.mW[t],i}}}))).filter(t=>"rejected"===t.status);if(t.length>0){h.Rm.error(`Failed to load ${t.length} external diagrams`);for(const e of t)h.Rm.error(e);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams");function ne(t,e){t.attr("role","graphics-document document"),""!==e&&t.attr("aria-roledescription",e)}function ae(t,e,r,i){if(void 0!==t.insert){if(r){const e=`chart-desc-${i}`;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(r)}if(e){const r=`chart-title-${i}`;t.attr("aria-labelledby",r),t.insert("title",":first-child").attr("id",r).text(e)}}}(0,h.K2)(ne,"setA11yDiagramInfo"),(0,h.K2)(ae,"addSVGa11yTitleDescription");var oe=class t{constructor(t,e,r,i,n){this.type=t,this.text=e,this.db=r,this.parser=i,this.renderer=n}static{(0,h.K2)(this,"Diagram")}static async fromText(e,r={}){const i=(0,c.zj)(),n=(0,c.Ch)(e,i);e=(0,l.C4)(e)+"\n";try{(0,c.Gs)(n)}catch{const t=(0,c.J$)(n);if(!t)throw new c.C0(`Diagram ${n} not found.`);const{id:e,diagram:r}=await t();(0,c.Js)(e,r)}const{db:a,parser:o,renderer:s,init:h}=(0,c.Gs)(n);return o.parser&&(o.parser.yy=a),a.clear?.(),h?.(i),r.title&&a.setDiagramTitle?.(r.title),await o.parse(e),new t(n,e,a,o,s)}async render(t,e){await this.renderer.draw(this.text,t,e,this)}getParser(){return this.parser}getType(){return this.type}},se=[],le=(0,h.K2)(()=>{se.forEach(t=>{t()}),se=[]},"attachFunctions"),ce=(0,h.K2)(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function he(t){const e=t.match(c.EJ);if(!e)return{text:t,metadata:{}};let r=(0,a.H)(e[1],{schema:a.r})??{};r="object"!=typeof r||Array.isArray(r)?{}:r;const i={};return r.displayMode&&(i.displayMode=r.displayMode.toString()),r.title&&(i.title=r.title.toString()),r.config&&(i.config=r.config),{text:t.slice(e[0].length),metadata:i}}(0,h.K2)(he,"extractFrontMatter");var ue=(0,h.K2)(t=>t.replace(/\r\n?/g,"\n").replace(/<(\w+)([^>]*)>/g,(t,e,r)=>"<"+e+r.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),de=(0,h.K2)(t=>{const{text:e,metadata:r}=he(t),{displayMode:i,title:n,config:a={}}=r;return i&&(a.gantt||(a.gantt={}),a.gantt.displayMode=i),{title:n,config:a,text:e}},"processFrontmatter"),pe=(0,h.K2)(t=>{const e=l._K.detectInit(t)??{},r=l._K.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:t})=>"wrap"===t):"wrap"===r?.type&&(e.wrap=!0),{text:(0,l.vU)(t),directive:e}},"processDirectives");function fe(t){const e=ue(t),r=de(e),i=pe(r.text),n=(0,l.$t)(r.config,i.directive);return{code:t=ce(i.text),title:r.title,config:n}}function ge(t){const e=(new TextEncoder).encode(t),r=Array.from(e,t=>String.fromCodePoint(t)).join("");return btoa(r)}(0,h.K2)(fe,"preprocessDiagram"),(0,h.K2)(ge,"toBase64");var ye=["foreignobject"],me=["dominant-baseline"];function xe(t){const e=fe(t);return(0,c.cL)(),(0,c.xA)(e.config??{}),e}async function be(t,e){re();try{const{code:e,config:r}=xe(t);return{diagramType:(await Le(e)).type,config:r}}catch(r){if(e?.suppressErrors)return!1;throw r}}(0,h.K2)(xe,"processAndSetConfigs"),(0,h.K2)(be,"parse");var ke=(0,h.K2)((t,e,r=[])=>`\n.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),we=(0,h.K2)((t,e=new Map)=>{let r="";if(void 0!==t.themeCSS&&(r+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(r+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(r+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){const i=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(t=>{(0,tt.A)(t.styles)||i.forEach(e=>{r+=ke(t.id,e,t.styles)}),(0,tt.A)(t.textStyles)||(r+=ke(t.id,"tspan",(t?.textStyles||[]).map(t=>t.replace("color","fill"))))})}return r},"createCssStyles"),Ce=(0,h.K2)((t,e,r,i)=>{const n=we(t,r);return S(G(`${i}{${(0,c.tM)(e,n,t.themeVariables)}}`),T)},"createUserStyles"),_e=(0,h.K2)((t="",e,r)=>{let i=t;return r||e||(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=(0,l.Sm)(i),i=i.replace(/
    /g,"
    "),i},"cleanUpSvgCode"),ve=(0,h.K2)((t="",e)=>``,"putIntoIFrame"),Se=(0,h.K2)((t,e,r,i,n)=>{const a=t.append("div");a.attr("id",r),i&&a.attr("style",i);const o=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return n&&o.attr("xmlns:xlink",n),o.append("g"),t},"appendDivSvgG");function Te(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}(0,h.K2)(Te,"sandboxedIframe");var Ae=(0,h.K2)((t,e,r,i)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(i)?.remove()},"removeExistingElements"),Me=(0,h.K2)(async function(t,e,r){re();const n=xe(e);e=n.code;const a=(0,c.zj)();h.Rm.debug(a),e.length>(a?.maxTextSize??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa");const o="#"+t,s="i"+t,l="#"+s,u="d"+t,p="#"+u,f=(0,h.K2)(()=>{const t=y?l:p,e=(0,d.Ltv)(t).node();e&&"remove"in e&&e.remove()},"removeTempElements");let g=(0,d.Ltv)("body");const y="sandbox"===a.securityLevel,m="loose"===a.securityLevel,x=a.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),y){const t=Te((0,d.Ltv)(r),s);g=(0,d.Ltv)(t.nodes()[0].contentDocument.body),g.node().style.margin=0}else g=(0,d.Ltv)(r);Se(g,t,u,`font-family: ${x}`,"http://www.w3.org/1999/xlink")}else{if(Ae(document,t,u,s),y){const t=Te((0,d.Ltv)("body"),s);g=(0,d.Ltv)(t.nodes()[0].contentDocument.body),g.node().style.margin=0}else g=(0,d.Ltv)("body");Se(g,t,u)}let b,k;try{b=await oe.fromText(e,{title:n.title})}catch($){if(a.suppressErrorRendering)throw f(),$;b=await oe.fromText("error"),k=$}const w=g.select(p).node(),C=b.type,_=w.firstChild,v=_.firstChild,S=b.renderer.getClasses?.(e,b),T=Ce(a,C,S,o),A=document.createElement("style");A.innerHTML=T,_.insertBefore(A,v);try{await b.renderer.draw(e,t,i.n.version,b)}catch(E){throw a.suppressErrorRendering?f():Et.draw(e,t,i.n.version),E}const M=g.select(`${p} svg`),B=b.db.getAccTitle?.(),L=b.db.getAccDescription?.();Fe(C,M,B,L),g.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let F=g.select(p).node().innerHTML;if(h.Rm.debug("config.arrowMarkerAbsolute",a.arrowMarkerAbsolute),F=_e(F,y,(0,c._3)(a.arrowMarkerAbsolute)),y){const t=g.select(p+" svg").node();F=ve(F,t)}else m||(F=J.A.sanitize(F,{ADD_TAGS:ye,ADD_ATTR:me,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(le(),k)throw k;return f(),{diagramType:C,svg:F,bindFunctions:b.db.bindFunctions}},"render");function Be(t={}){const e=(0,c.hH)({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),(0,c.wZ)(e),e?.theme&&e.theme in c.H$?e.themeVariables=c.H$[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=c.H$.default.getThemeVariables(e.themeVariables));const r="object"==typeof e?(0,c.UU)(e):(0,c.Q2)();(0,h.He)(r.logLevel),re()}(0,h.K2)(Be,"initialize");var Le=(0,h.K2)((t,e={})=>{const{code:r}=fe(t);return oe.fromText(r,e)},"getDiagramFromText");function Fe(t,e,r,i){ne(e,t),ae(e,r,i,e.attr("id"))}(0,h.K2)(Fe,"addA11yInfo");var $e=Object.freeze({render:Me,parse:be,getDiagramFromText:Le,initialize:Be,getConfig:c.zj,setConfig:c.Nk,getSiteConfig:c.Q2,updateSiteConfig:c.B6,reset:(0,h.K2)(()=>{(0,c.cL)()},"reset"),globalReset:(0,h.K2)(()=>{(0,c.cL)(c.sb)},"globalReset"),defaultConfig:c.sb});(0,h.He)((0,c.zj)().logLevel),(0,c.cL)((0,c.zj)());var Ee=(0,h.K2)((t,e,r)=>{h.Rm.warn(t),(0,l.dq)(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),De=(0,h.K2)(async function(t={querySelector:".mermaid"}){try{await Oe(t)}catch(e){if((0,l.dq)(e)&&h.Rm.error(e.str),Ye.parseError&&Ye.parseError(e),!t.suppressErrors)throw h.Rm.error("Use the suppressErrors option to suppress these errors"),e}},"run"),Oe=(0,h.K2)(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){const i=$e.getConfig();let n;if(h.Rm.debug((t?"":"No ")+"Callback function found"),r)n=r;else{if(!e)throw new Error("Nodes and querySelector are both undefined");n=document.querySelectorAll(e)}h.Rm.debug(`Found ${n.length} diagrams`),void 0!==i?.startOnLoad&&(h.Rm.debug("Start On Load: "+i?.startOnLoad),$e.updateSiteConfig({startOnLoad:i?.startOnLoad}));const a=new l._K.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed);let o;const s=[];for(const d of Array.from(n)){if(h.Rm.info("Rendering diagram: "+d.id),d.getAttribute("data-processed"))continue;d.setAttribute("data-processed","true");const e=`mermaid-${a.next()}`;o=d.innerHTML,o=(0,u.T)(l._K.entityDecode(o)).trim().replace(//gi,"
    ");const r=l._K.detectInit(o);r&&h.Rm.debug("Detected early reinit: ",r);try{const{svg:r,bindFunctions:i}=await He(e,o,d);d.innerHTML=r,t&&await t(e),i&&i(d)}catch(c){Ee(c,s,Ye.parseError)}}if(s.length>0)throw s[0]},"runThrowsErrors"),Re=(0,h.K2)(function(t){$e.initialize(t)},"initialize"),Ke=(0,h.K2)(async function(t,e,r){h.Rm.warn("mermaid.init is deprecated. Please use run instead."),t&&Re(t);const i={postRenderCallback:r,querySelector:".mermaid"};"string"==typeof e?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await De(i)},"init"),Ie=(0,h.K2)(async(t,{lazyLoad:e=!0}={})=>{re(),(0,c.Xd)(...t),!1===e&&await ie()},"registerExternalDiagrams"),Ne=(0,h.K2)(function(){if(Ye.startOnLoad){const{startOnLoad:t}=$e.getConfig();t&&Ye.run().catch(t=>h.Rm.error("Mermaid failed to initialize",t))}},"contentLoaded");"undefined"!=typeof document&&window.addEventListener("load",Ne,!1);var Pe=(0,h.K2)(function(t){Ye.parseError=t},"setParseErrorHandler"),ze=[],qe=!1,je=(0,h.K2)(async()=>{if(!qe){for(qe=!0;ze.length>0;){const e=ze.shift();if(e)try{await e()}catch(t){h.Rm.error("Error executing queue",t)}}qe=!1}},"executeQueue"),We=(0,h.K2)(async(t,e)=>new Promise((r,i)=>{const n=(0,h.K2)(()=>new Promise((n,a)=>{$e.parse(t,e).then(t=>{n(t),r(t)},t=>{h.Rm.error("Error parsing",t),Ye.parseError?.(t),a(t),i(t)})}),"performCall");ze.push(n),je().catch(i)}),"parse"),He=(0,h.K2)((t,e,r)=>new Promise((i,n)=>{const a=(0,h.K2)(()=>new Promise((a,o)=>{$e.render(t,e,r).then(t=>{a(t),i(t)},t=>{h.Rm.error("Error parsing",t),Ye.parseError?.(t),o(t),n(t)})}),"performCall");ze.push(a),je().catch(n)}),"render"),Ue=(0,h.K2)(()=>Object.keys(c.mW).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),Ye={startOnLoad:!0,mermaidAPI:$e,parse:We,render:He,init:Ke,run:De,registerExternalDiagrams:Ie,registerLayoutLoaders:o.sO,initialize:Re,parseError:void 0,contentLoaded:Ne,setParseErrorHandler:Pe,detectType:c.Ch,registerIconPacks:s.pC,getRegisteredDiagramsMetadata:Ue},Ge=Ye},2387:(t,e,r)=>{"use strict";r.d(e,{Fr:()=>h,GX:()=>c,KX:()=>l,WW:()=>o,ue:()=>a});var i=r(7633),n=r(797),a=(0,n.K2)(t=>{const{handDrawnSeed:e}=(0,i.D7)();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),o=(0,n.K2)(t=>{const e=s([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),s=(0,n.K2)(t=>{const e=new Map;return t.forEach(t=>{const[r,i]=t.split(":");e.set(r.trim(),i?.trim())}),e},"styles2Map"),l=(0,n.K2)(t=>"color"===t||"font-size"===t||"font-family"===t||"font-weight"===t||"font-style"===t||"text-decoration"===t||"text-align"===t||"text-transform"===t||"line-height"===t||"letter-spacing"===t||"word-spacing"===t||"text-shadow"===t||"text-overflow"===t||"white-space"===t||"word-wrap"===t||"word-break"===t||"overflow-wrap"===t||"hyphens"===t,"isLabelStyle"),c=(0,n.K2)(t=>{const{stylesArray:e}=o(t),r=[],i=[],n=[],a=[];return e.forEach(t=>{const e=t[0];l(e)?r.push(t.join(":")+" !important"):(i.push(t.join(":")+" !important"),e.includes("stroke")&&n.push(t.join(":")+" !important"),"fill"===e&&a.push(t.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:i.join(";"),stylesArray:e,borderStyles:n,backgroundStyles:a}},"styles2String"),h=(0,n.K2)((t,e)=>{const{themeVariables:r,handDrawnSeed:n}=(0,i.D7)(),{nodeBorder:a,mainBkg:s}=r,{stylesMap:l}=o(t);return Object.assign({roughness:.7,fill:l.get("fill")||s,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:l.get("stroke")||a,seed:n,strokeWidth:l.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:u(l.get("stroke-dasharray"))},e)},"userNodeOverrides"),u=(0,n.K2)(t=>{if(!t)return[0,0];const e=t.trim().split(/\s+/).map(Number);if(1===e.length){const t=isNaN(e[0])?0:e[0];return[t,t]}return[isNaN(e[0])?0:e[0],isNaN(e[1])?0:e[1]]},"getStrokeDashArray")},2453:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const i={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t),hsl2rgb:({h:t,s:e,l:r},n)=>{if(!e)return 2.55*r;t/=360,e/=100;const a=(r/=100)<.5?r*(1+e):r+e-r*e,o=2*r-a;switch(n){case"r":return 255*i.hue2rgb(o,a,t+1/3);case"g":return 255*i.hue2rgb(o,a,t);case"b":return 255*i.hue2rgb(o,a,t-1/3)}},rgb2hsl:({r:t,g:e,b:r},i)=>{t/=255,e/=255,r/=255;const n=Math.max(t,e,r),a=Math.min(t,e,r),o=(n+a)/2;if("l"===i)return 100*o;if(n===a)return 0;const s=n-a;if("s"===i)return 100*(o>.5?s/(2-n-a):s/(n+a));switch(n){case t:return 60*((e-r)/s+(ee>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},2528:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(4171);const n=function(t,e,r){"__proto__"==e&&i.A?(0,i.A)(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},2789:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return function(e){return t(e)}}},2837:(t,e,r)=>{"use strict";r.d(e,{A:()=>D});var i=r(1754),n=r(2528),a=r(6984);const o=function(t,e,r){(void 0!==r&&!(0,a.A)(t[e],r)||void 0===r&&!(e in t))&&(0,n.A)(t,e,r)};var s=r(4574),l=r(154),c=r(1801),h=r(9759),u=r(8598),d=r(2274),p=r(2049),f=r(3533),g=r(9912),y=r(9610),m=r(3149),x=r(8496),b=r(5647),k=r(3098),w=Function.prototype,C=Object.prototype,_=w.toString,v=C.hasOwnProperty,S=_.call(Object);const T=function(t){if(!(0,k.A)(t)||"[object Object]"!=(0,x.A)(t))return!1;var e=(0,b.A)(t);if(null===e)return!0;var r=v.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&_.call(r)==S};var A=r(3858);const M=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var B=r(2031),L=r(5615);const F=function(t){return(0,B.A)(t,(0,L.A)(t))};const $=function(t,e,r,i,n,a,s){var x=M(t,r),b=M(e,r),k=s.get(b);if(k)o(t,r,k);else{var w=a?a(x,b,r+"",t,e,s):void 0,C=void 0===w;if(C){var _=(0,p.A)(b),v=!_&&(0,g.A)(b),S=!_&&!v&&(0,A.A)(b);w=b,_||v||S?(0,p.A)(x)?w=x:(0,f.A)(x)?w=(0,h.A)(x):v?(C=!1,w=(0,l.A)(b,!0)):S?(C=!1,w=(0,c.A)(b,!0)):w=[]:T(b)||(0,d.A)(b)?(w=x,(0,d.A)(x)?w=F(x):(0,m.A)(x)&&!(0,y.A)(x)||(w=(0,u.A)(b))):C=!1}C&&(s.set(b,w),n(w,b,i,a,s),s.delete(b)),o(t,r,w)}};const E=function t(e,r,n,a,l){e!==r&&(0,s.A)(r,function(s,c){if(l||(l=new i.A),(0,m.A)(s))$(e,r,c,n,t,a,l);else{var h=a?a(M(e,c),s,c+"",e,r,l):void 0;void 0===h&&(h=s),o(e,c,h)}},L.A)};const D=(0,r(3767).A)(function(t,e,r){E(t,e,r)})},2851:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(2528),n=r(6984),a=Object.prototype.hasOwnProperty;const o=function(t,e,r){var o=t[e];a.call(t,e)&&(0,n.A)(o,r)&&(void 0!==r||e in t)||(0,i.A)(t,e,r)}},3098:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return null!=t&&"object"==typeof t}},3122:(t,e,r)=>{"use strict";r.d(e,{Y:()=>n,Z:()=>a});var i=r(2453);const n={};for(let o=0;o<=255;o++)n[o]=i.A.unit.dec2hex(o);const a={ALL:0,RGB:1,HSL:2}},3149:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},3219:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(2453),n=r(4886);const a=t=>{const{r:e,g:r,b:a}=n.A.parse(t),o=.2126*i.A.channel.toLinear(e)+.7152*i.A.channel.toLinear(r)+.0722*i.A.channel.toLinear(a);return i.A.lang.round(o)},o=t=>a(t)>=.5,s=t=>!o(t)},3226:(t,e,r)=>{"use strict";r.d(e,{$C:()=>M,$t:()=>W,C4:()=>U,I5:()=>j,Ib:()=>y,KL:()=>X,Sm:()=>Y,Un:()=>R,_K:()=>H,bH:()=>E,dq:()=>z,pe:()=>c,rY:()=>G,ru:()=>O,sM:()=>T,vU:()=>f,yT:()=>L});var i=r(7633),n=r(797),a=r(6750),o=r(451),s=r(6632),l=r(2837),c="\u200b",h={curveBasis:o.qrM,curveBasisClosed:o.Yu4,curveBasisOpen:o.IA3,curveBumpX:o.Wi0,curveBumpY:o.PGM,curveBundle:o.OEq,curveCardinalClosed:o.olC,curveCardinalOpen:o.IrU,curveCardinal:o.y8u,curveCatmullRomClosed:o.Q7f,curveCatmullRomOpen:o.cVp,curveCatmullRom:o.oDi,curveLinear:o.lUB,curveLinearClosed:o.Lx9,curveMonotoneX:o.nVG,curveMonotoneY:o.uxU,curveNatural:o.Xf2,curveStep:o.GZz,curveStepAfter:o.UPb,curveStepBefore:o.dyv},u=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,d=(0,n.K2)(function(t,e){const r=p(t,/(?:init\b)|(?:initialize\b)/);let n={};if(Array.isArray(r)){const t=r.map(t=>t.args);(0,i.$i)(t),n=(0,i.hH)(n,[...t])}else n=r.args;if(!n)return;let a=(0,i.Ch)(t,e);const o="config";return void 0!==n[o]&&("flowchart-v2"===a&&(a="flowchart"),n[a]=n[o],delete n[o]),n},"detectInit"),p=(0,n.K2)(function(t,e=null){try{const r=new RegExp(`[%]{2}(?![{]${u.source})(?=[}][%]{2}).*\n`,"ig");let a;t=t.trim().replace(r,"").replace(/'/gm,'"'),n.Rm.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const o=[];for(;null!==(a=i.DB.exec(t));)if(a.index===i.DB.lastIndex&&i.DB.lastIndex++,a&&!e||e&&a[1]?.match(e)||e&&a[2]?.match(e)){const t=a[1]?a[1]:a[2],e=a[3]?a[3].trim():a[4]?JSON.parse(a[4].trim()):null;o.push({type:t,args:e})}return 0===o.length?{type:t,args:null}:1===o.length?o[0]:o}catch(r){return n.Rm.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),f=(0,n.K2)(function(t){return t.replace(i.DB,"")},"removeDirectives"),g=(0,n.K2)(function(t,e){for(const[r,i]of e.entries())if(i.match(t))return r;return-1},"isSubstringInArray");function y(t,e){if(!t)return e;const r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return h[r]??e}function m(t,e){const r=t.trim();if(r)return"loose"!==e.securityLevel?(0,a.J)(r):r}(0,n.K2)(y,"interpolateToCurve"),(0,n.K2)(m,"formatUrl");var x=(0,n.K2)((t,...e)=>{const r=t.split("."),i=r.length-1,a=r[i];let o=window;for(let s=0;s{r+=b(t,e),e=t});return _(t,r/2)}function w(t){return 1===t.length?t[0]:k(t)}(0,n.K2)(b,"distance"),(0,n.K2)(k,"traverseEdge"),(0,n.K2)(w,"calcLabelPosition");var C=(0,n.K2)((t,e=2)=>{const r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),_=(0,n.K2)((t,e)=>{let r,i=e;for(const n of t){if(r){const t=b(n,r);if(0===t)return r;if(t=1)return{x:n.x,y:n.y};if(e>0&&e<1)return{x:C((1-e)*r.x+e*n.x,5),y:C((1-e)*r.y+e*n.y,5)}}}r=n}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),v=(0,n.K2)((t,e,r)=>{n.Rm.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());const i=_(e,25),a=t?10:5,o=Math.atan2(e[0].y-i.y,e[0].x-i.x),s={x:0,y:0};return s.x=Math.sin(o)*a+(e[0].x+i.x)/2,s.y=-Math.cos(o)*a+(e[0].y+i.y)/2,s},"calcCardinalityPosition");function S(t,e,r){const i=structuredClone(r);n.Rm.info("our points",i),"start_left"!==e&&"start_right"!==e&&i.reverse();const a=_(i,25+t),o=10+.5*t,s=Math.atan2(i[0].y-a.y,i[0].x-a.x),l={x:0,y:0};return"start_left"===e?(l.x=Math.sin(s+Math.PI)*o+(i[0].x+a.x)/2,l.y=-Math.cos(s+Math.PI)*o+(i[0].y+a.y)/2):"end_right"===e?(l.x=Math.sin(s-Math.PI)*o+(i[0].x+a.x)/2-5,l.y=-Math.cos(s-Math.PI)*o+(i[0].y+a.y)/2-5):"end_left"===e?(l.x=Math.sin(s)*o+(i[0].x+a.x)/2-5,l.y=-Math.cos(s)*o+(i[0].y+a.y)/2-5):(l.x=Math.sin(s)*o+(i[0].x+a.x)/2,l.y=-Math.cos(s)*o+(i[0].y+a.y)/2),l}function T(t){let e="",r="";for(const i of t)void 0!==i&&(i.startsWith("color:")||i.startsWith("text-align:")?r=r+i+";":e=e+i+";");return{style:e,labelStyle:r}}(0,n.K2)(S,"calcTerminalLabelPosition"),(0,n.K2)(T,"getStylesFromArray");var A=0,M=(0,n.K2)(()=>(A++,"id-"+Math.random().toString(36).substr(2,12)+"-"+A),"generateId");function B(t){let e="";const r="0123456789abcdef";for(let i=0;iB(t.length),"random"),F=(0,n.K2)(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),$=(0,n.K2)(function(t,e){const r=e.text.replace(i.Y2.lineBreakRegex," "),[,n]=j(e.fontSize),a=t.append("text");a.attr("x",e.x),a.attr("y",e.y),a.style("text-anchor",e.anchor),a.style("font-family",e.fontFamily),a.style("font-size",n),a.style("font-weight",e.fontWeight),a.attr("fill",e.fill),void 0!==e.class&&a.attr("class",e.class);const o=a.append("tspan");return o.attr("x",e.x+2*e.textMargin),o.attr("fill",e.fill),o.text(r),a},"drawSimpleText"),E=(0,s.A)((t,e,r)=>{if(!t)return t;if(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},r),i.Y2.lineBreakRegex.test(t))return t;const n=t.split(" ").filter(Boolean),a=[];let o="";return n.forEach((t,i)=>{const s=R(`${t} `,r),l=R(o,r);if(s>e){const{hyphenatedStrings:i,remainingWord:n}=D(t,e,"-",r);a.push(o,...i),o=n}else l+s>=e?(a.push(o),o=t):o=[o,t].filter(Boolean).join(" ");i+1===n.length&&a.push(o)}),a.filter(t=>""!==t).join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),D=(0,s.A)((t,e,r="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);const n=[...t],a=[];let o="";return n.forEach((t,s)=>{const l=`${o}${t}`;if(R(l,i)>=e){const t=s+1,e=n.length===t,i=`${l}${r}`;a.push(e?l:i),o=""}else o=l}),{hyphenatedStrings:a,remainingWord:o}},(t,e,r="-",i)=>`${t}${e}${r}${i.fontSize}${i.fontWeight}${i.fontFamily}`);function O(t,e){return I(t,e).height}function R(t,e){return I(t,e).width}(0,n.K2)(O,"calculateTextHeight"),(0,n.K2)(R,"calculateTextWidth");var K,I=(0,s.A)((t,e)=>{const{fontSize:r=12,fontFamily:n="Arial",fontWeight:a=400}=e;if(!t)return{width:0,height:0};const[,s]=j(r),l=["sans-serif",n],h=t.split(i.Y2.lineBreakRegex),u=[],d=(0,o.Ltv)("body");if(!d.remove)return{width:0,height:0,lineHeight:0};const p=d.append("svg");for(const i of l){let t=0;const e={width:0,height:0,lineHeight:0};for(const r of h){const n=F();n.text=r||c;const o=$(p,n).style("font-size",s).style("font-weight",a).style("font-family",i),l=(o._groups||o)[0][0].getBBox();if(0===l.width&&0===l.height)throw new Error("svg element not in render tree");e.width=Math.round(Math.max(e.width,l.width)),t=Math.round(l.height),e.height+=t,e.lineHeight=Math.round(Math.max(e.lineHeight,t))}u.push(e)}p.remove();return u[isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),N=class{constructor(t=!1,e){this.count=0,this.count=e?e.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{(0,n.K2)(this,"InitIDGenerator")}},P=(0,n.K2)(function(t){return K=K||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),K.innerHTML=t,unescape(K.textContent)},"entityDecode");function z(t){return"str"in t}(0,n.K2)(z,"isDetailedError");var q=(0,n.K2)((t,e,r,i)=>{if(!i)return;const n=t.node()?.getBBox();n&&t.append("text").text(i).attr("text-anchor","middle").attr("x",n.x+n.width/2).attr("y",-r).attr("class",e)},"insertTitle"),j=(0,n.K2)(t=>{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");function W(t,e){return(0,l.A)({},t,e)}(0,n.K2)(W,"cleanAndMerge");var H={assignWithDepth:i.hH,wrapLabel:E,calculateTextHeight:O,calculateTextWidth:R,calculateTextDimensions:I,cleanAndMerge:W,detectInit:d,detectDirective:p,isSubstringInArray:g,interpolateToCurve:y,calcLabelPosition:w,calcCardinalityPosition:v,calcTerminalLabelPosition:S,formatUrl:m,getStylesFromArray:T,generateId:M,random:L,runFunc:x,entityDecode:P,insertTitle:q,isLabelCoordinateInPath:V,parseFontSize:j,InitIDGenerator:N},U=(0,n.K2)(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)}),e=e.replace(/#\w+;/g,function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"\ufb02\xb0\xb0"+e+"\xb6\xdf":"\ufb02\xb0"+e+"\xb6\xdf"}),e},"encodeEntities"),Y=(0,n.K2)(function(t){return t.replace(/\ufb02\xb0\xb0/g,"&#").replace(/\ufb02\xb0/g,"&").replace(/\xb6\xdf/g,";")},"decodeEntities"),G=(0,n.K2)((t,e,{counter:r=0,prefix:i,suffix:n},a)=>a||`${i?`${i}_`:""}${t}_${e}_${r}${n?`_${n}`:""}`,"getEdgeId");function X(t){return t??null}function V(t,e){const r=Math.round(t.x),i=Math.round(t.y),n=e.replace(/(\d+\.\d+)/g,t=>Math.round(parseFloat(t)).toString());return n.includes(r.toString())||n.includes(i.toString())}(0,n.K2)(X,"handleUndefinedAttr"),(0,n.K2)(V,"isLabelCoordinateInPath")},3245:(t,e,r)=>{"use strict";r.d(e,{O:()=>i});var i=(0,r(797).K2)(({flowchart:t})=>{const e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:e+r}},"getSubGraphTitleMargins")},3533:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(8446),n=r(3098);const a=function(t){return(0,n.A)(t)&&(0,i.A)(t)}},3539:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(2453),n=r(3122);const a=class{constructor(){this.type=n.Z.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=n.Z.ALL}is(t){return this.type===t}};const o=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=n.Z.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:r,l:n}=t;void 0===e&&(t.h=i.A.channel.rgb2hsl(t,"h")),void 0===r&&(t.s=i.A.channel.rgb2hsl(t,"s")),void 0===n&&(t.l=i.A.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:r,b:n}=t;void 0===e&&(t.r=i.A.channel.hsl2rgb(t,"r")),void 0===r&&(t.g=i.A.channel.hsl2rgb(t,"g")),void 0===n&&(t.b=i.A.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},3590:(t,e,r)=>{"use strict";r.d(e,{D:()=>o});var i=r(7633),n=r(797),a=r(451),o=(0,n.K2)(t=>{const{securityLevel:e}=(0,i.D7)();let r=(0,a.Ltv)("body");if("sandbox"===e){const e=(0,a.Ltv)(`#i${t}`),i=e.node()?.contentDocument??document;r=(0,a.Ltv)(i.body)}return r.select(`#${t}`)},"selectSvgElement")},3607:(t,e,r)=>{"use strict";r.d(e,{A:()=>h});const i=function(t,e){for(var r=-1,i=Array(t);++r{"use strict";r.d(e,{A:()=>a});var i=r(4326),n=r(6832);const a=function(t){return(0,i.A)(function(e,r){var i=-1,a=r.length,o=a>1?r[a-1]:void 0,s=a>2?r[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&(0,n.A)(r[0],r[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++i{"use strict";r.d(e,{A:()=>u});var i=r(8496),n=r(5254),a=r(3098),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1;const s=function(t){return(0,a.A)(t)&&(0,n.A)(t.length)&&!!o[(0,i.A)(t)]};var l=r(2789),c=r(4841),h=c.A&&c.A.isTypedArray;const u=h?(0,l.A)(h):s},3981:(t,e,r)=>{"use strict";r.d(e,{H:()=>rr,r:()=>er});var i=r(797);function n(t){return null==t}function a(t){return"object"==typeof t&&null!==t}function o(t){return Array.isArray(t)?t:n(t)?[]:[t]}function s(t,e){var r,i,n,a;if(e)for(r=0,i=(a=Object.keys(e)).length;rs&&(e=i-s+(a=" ... ").length),r-i>s&&(r=i+s-(o=" ...").length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+o,pos:i-e+a.length}}function g(t,e){return h.repeat(" ",e-t.length)+t}function y(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var r,i=/\r?\n|\r|\0/g,n=[0],a=[],o=-1;r=i.exec(t.buffer);)a.push(r.index),n.push(r.index+r[0].length),t.position<=r.index&&o<0&&(o=n.length-2);o<0&&(o=n.length-1);var s,l,c="",u=Math.min(t.line+e.linesAfter,a.length).toString().length,d=e.maxLength-(e.indent+u+3);for(s=1;s<=e.linesBefore&&!(o-s<0);s++)l=f(t.buffer,n[o-s],a[o-s],t.position-(n[o]-n[o-s]),d),c=h.repeat(" ",e.indent)+g((t.line-s+1).toString(),u)+" | "+l.str+"\n"+c;for(l=f(t.buffer,n[o],a[o],t.position,d),c+=h.repeat(" ",e.indent)+g((t.line+1).toString(),u)+" | "+l.str+"\n",c+=h.repeat("-",e.indent+u+3+l.pos)+"^\n",s=1;s<=e.linesAfter&&!(o+s>=a.length);s++)l=f(t.buffer,n[o+s],a[o+s],t.position-(n[o]-n[o+s]),d),c+=h.repeat(" ",e.indent)+g((t.line+s+1).toString(),u)+" | "+l.str+"\n";return c.replace(/\n$/,"")}(0,i.K2)(f,"getLine"),(0,i.K2)(g,"padStart"),(0,i.K2)(y,"makeSnippet");var m=y,x=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],b=["scalar","sequence","mapping"];function k(t){var e={};return null!==t&&Object.keys(t).forEach(function(r){t[r].forEach(function(t){e[String(t)]=r})}),e}function w(t,e){if(e=e||{},Object.keys(e).forEach(function(e){if(-1===x.indexOf(e))throw new p('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=k(e.styleAliases||null),-1===b.indexOf(this.kind))throw new p('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}(0,i.K2)(k,"compileStyleAliases"),(0,i.K2)(w,"Type$1");var C=w;function _(t,e){var r=[];return t[e].forEach(function(t){var e=r.length;r.forEach(function(r,i){r.tag===t.tag&&r.kind===t.kind&&r.multi===t.multi&&(e=i)}),r[e]=t}),r}function v(){var t,e,r={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function n(t){t.multi?(r.multi[t.kind].push(t),r.multi.fallback.push(t)):r[t.kind][t.tag]=r.fallback[t.tag]=t}for((0,i.K2)(n,"collectType"),t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:(0,i.K2)(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:(0,i.K2)(function(t){return t.toString(10)},"decimal"),hexadecimal:(0,i.K2)(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),q=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function j(t){return null!==t&&!(!q.test(t)||"_"===t[t.length-1])}function W(t){var e,r;return r="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:r*parseFloat(e,10)}(0,i.K2)(j,"resolveYamlFloat"),(0,i.K2)(W,"constructYamlFloat");var H=/^[-+]?[0-9]+e/;function U(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(h.isNegativeZero(t))return"-0.0";return r=t.toString(10),H.test(r)?r.replace("e",".e"):r}function Y(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||h.isNegativeZero(t))}(0,i.K2)(U,"representYamlFloat"),(0,i.K2)(Y,"isFloat");var G=new C("tag:yaml.org,2002:float",{kind:"scalar",resolve:j,construct:W,predicate:Y,represent:U,defaultStyle:"lowercase"}),X=T.extend({implicit:[L,D,z,G]}),V=X,Z=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Q=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function J(t){return null!==t&&(null!==Z.exec(t)||null!==Q.exec(t))}function tt(t){var e,r,i,n,a,o,s,l,c=0,h=null;if(null===(e=Z.exec(t))&&(e=Q.exec(t)),null===e)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(a=+e[4],o=+e[5],s=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+="0";c=+c}return e[9]&&(h=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(h=-h)),l=new Date(Date.UTC(r,i,n,a,o,s,c)),h&&l.setTime(l.getTime()-h),l}function et(t){return t.toISOString()}(0,i.K2)(J,"resolveYamlTimestamp"),(0,i.K2)(tt,"constructYamlTimestamp"),(0,i.K2)(et,"representYamlTimestamp");var rt=new C("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:J,construct:tt,instanceOf:Date,represent:et});function it(t){return"<<"===t||null===t}(0,i.K2)(it,"resolveYamlMerge");var nt=new C("tag:yaml.org,2002:merge",{kind:"scalar",resolve:it}),at="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";function ot(t){if(null===t)return!1;var e,r,i=0,n=t.length,a=at;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function st(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,a=at,o=0,s=[];for(e=0;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|a.indexOf(i.charAt(e));return 0===(r=n%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===r?(s.push(o>>10&255),s.push(o>>2&255)):12===r&&s.push(o>>4&255),new Uint8Array(s)}function lt(t){var e,r,i="",n=0,a=t.length,o=at;for(e=0;e>18&63],i+=o[n>>12&63],i+=o[n>>6&63],i+=o[63&n]),n=(n<<8)+t[e];return 0===(r=a%3)?(i+=o[n>>18&63],i+=o[n>>12&63],i+=o[n>>6&63],i+=o[63&n]):2===r?(i+=o[n>>10&63],i+=o[n>>4&63],i+=o[n<<2&63],i+=o[64]):1===r&&(i+=o[n>>2&63],i+=o[n<<4&63],i+=o[64],i+=o[64]),i}function ct(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}(0,i.K2)(ot,"resolveYamlBinary"),(0,i.K2)(st,"constructYamlBinary"),(0,i.K2)(lt,"representYamlBinary"),(0,i.K2)(ct,"isBinary");var ht=new C("tag:yaml.org,2002:binary",{kind:"scalar",resolve:ot,construct:st,predicate:ct,represent:lt}),ut=Object.prototype.hasOwnProperty,dt=Object.prototype.toString;function pt(t){if(null===t)return!0;var e,r,i,n,a,o=[],s=t;for(e=0,r=s.length;e>10),56320+(t-65536&1023))}(0,i.K2)(Ft,"_class"),(0,i.K2)($t,"is_EOL"),(0,i.K2)(Et,"is_WHITE_SPACE"),(0,i.K2)(Dt,"is_WS_OR_EOL"),(0,i.K2)(Ot,"is_FLOW_INDICATOR"),(0,i.K2)(Rt,"fromHexCode"),(0,i.K2)(Kt,"escapedHexLen"),(0,i.K2)(It,"fromDecimalCode"),(0,i.K2)(Nt,"simpleEscapeSequence"),(0,i.K2)(Pt,"charFromCodepoint");var zt,qt=new Array(256),jt=new Array(256);for(zt=0;zt<256;zt++)qt[zt]=Nt(zt)?1:0,jt[zt]=Nt(zt);function Wt(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||vt,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Ht(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=m(r),new p(e,r)}function Ut(t,e){throw Ht(t,e)}function Yt(t,e){t.onWarning&&t.onWarning.call(null,Ht(t,e))}(0,i.K2)(Wt,"State$1"),(0,i.K2)(Ht,"generateError"),(0,i.K2)(Ut,"throwError"),(0,i.K2)(Yt,"throwWarning");var Gt={YAML:(0,i.K2)(function(t,e,r){var i,n,a;null!==t.version&&Ut(t,"duplication of %YAML directive"),1!==r.length&&Ut(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&Ut(t,"ill-formed argument of the YAML directive"),n=parseInt(i[1],10),a=parseInt(i[2],10),1!==n&&Ut(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&Yt(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:(0,i.K2)(function(t,e,r){var i,n;2!==r.length&&Ut(t,"TAG directive accepts exactly two arguments"),i=r[0],n=r[1],Bt.test(i)||Ut(t,"ill-formed tag handle (first argument) of the TAG directive"),St.call(t.tagMap,i)&&Ut(t,'there is a previously declared suffix for "'+i+'" tag handle'),Lt.test(n)||Ut(t,"ill-formed tag prefix (second argument) of the TAG directive");try{n=decodeURIComponent(n)}catch(a){Ut(t,"tag prefix is malformed: "+n)}t.tagMap[i]=n},"handleTagDirective")};function Xt(t,e,r,i){var n,a,o,s;if(e1&&(t.result+=h.repeat("\n",e-1))}function re(t,e,r){var i,n,a,o,s,l,c,h,u=t.kind,d=t.result;if(Dt(h=t.input.charCodeAt(t.position))||Ot(h)||35===h||38===h||42===h||33===h||124===h||62===h||39===h||34===h||37===h||64===h||96===h)return!1;if((63===h||45===h)&&(Dt(i=t.input.charCodeAt(t.position+1))||r&&Ot(i)))return!1;for(t.kind="scalar",t.result="",n=a=t.position,o=!1;0!==h;){if(58===h){if(Dt(i=t.input.charCodeAt(t.position+1))||r&&Ot(i))break}else if(35===h){if(Dt(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&te(t)||r&&Ot(h))break;if($t(h)){if(s=t.line,l=t.lineStart,c=t.lineIndent,Jt(t,!1,-1),t.lineIndent>=e){o=!0,h=t.input.charCodeAt(t.position);continue}t.position=a,t.line=s,t.lineStart=l,t.lineIndent=c;break}}o&&(Xt(t,n,a,!1),ee(t,t.line-s),n=a=t.position,o=!1),Et(h)||(a=t.position+1),h=t.input.charCodeAt(++t.position)}return Xt(t,n,a,!1),!!t.result||(t.kind=u,t.result=d,!1)}function ie(t,e){var r,i,n;if(39!==(r=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;0!==(r=t.input.charCodeAt(t.position));)if(39===r){if(Xt(t,i,t.position,!0),39!==(r=t.input.charCodeAt(++t.position)))return!0;i=t.position,t.position++,n=t.position}else $t(r)?(Xt(t,i,n,!0),ee(t,Jt(t,!1,e)),i=n=t.position):t.position===t.lineStart&&te(t)?Ut(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);Ut(t,"unexpected end of the stream within a single quoted scalar")}function ne(t,e){var r,i,n,a,o,s;if(34!==(s=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return Xt(t,r,t.position,!0),t.position++,!0;if(92===s){if(Xt(t,r,t.position,!0),$t(s=t.input.charCodeAt(++t.position)))Jt(t,!1,e);else if(s<256&&qt[s])t.result+=jt[s],t.position++;else if((o=Kt(s))>0){for(n=o,a=0;n>0;n--)(o=Rt(s=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+o:Ut(t,"expected hexadecimal character");t.result+=Pt(a),t.position++}else Ut(t,"unknown escape sequence");r=i=t.position}else $t(s)?(Xt(t,r,i,!0),ee(t,Jt(t,!1,e)),r=i=t.position):t.position===t.lineStart&&te(t)?Ut(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}Ut(t,"unexpected end of the stream within a double quoted scalar")}function ae(t,e){var r,i,n,a,o,s,l,c,h,u,d,p,f=!0,g=t.tag,y=t.anchor,m=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))o=93,c=!1,a=[];else{if(123!==p)return!1;o=125,c=!0,a={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),p=t.input.charCodeAt(++t.position);0!==p;){if(Jt(t,!0,e),(p=t.input.charCodeAt(t.position))===o)return t.position++,t.tag=g,t.anchor=y,t.kind=c?"mapping":"sequence",t.result=a,!0;f?44===p&&Ut(t,"expected the node content, but found ','"):Ut(t,"missed comma between flow collection entries"),d=null,s=l=!1,63===p&&Dt(t.input.charCodeAt(t.position+1))&&(s=l=!0,t.position++,Jt(t,!0,e)),r=t.line,i=t.lineStart,n=t.position,de(t,e,1,!1,!0),u=t.tag,h=t.result,Jt(t,!0,e),p=t.input.charCodeAt(t.position),!l&&t.line!==r||58!==p||(s=!0,p=t.input.charCodeAt(++t.position),Jt(t,!0,e),de(t,e,1,!1,!0),d=t.result),c?Zt(t,a,m,u,h,d,r,i,n):s?a.push(Zt(t,null,m,u,h,d,r,i,n)):a.push(h),Jt(t,!0,e),44===(p=t.input.charCodeAt(t.position))?(f=!0,p=t.input.charCodeAt(++t.position)):f=!1}Ut(t,"unexpected end of the stream within a flow collection")}function oe(t,e){var r,i,n,a,o=1,s=!1,l=!1,c=e,u=0,d=!1;if(124===(a=t.input.charCodeAt(t.position)))i=!1;else{if(62!==a)return!1;i=!0}for(t.kind="scalar",t.result="";0!==a;)if(43===(a=t.input.charCodeAt(++t.position))||45===a)1===o?o=43===a?3:2:Ut(t,"repeat of a chomping mode identifier");else{if(!((n=It(a))>=0))break;0===n?Ut(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?Ut(t,"repeat of an indentation width identifier"):(c=e+n-1,l=!0)}if(Et(a)){do{a=t.input.charCodeAt(++t.position)}while(Et(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!$t(a)&&0!==a)}for(;0!==a;){for(Qt(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!l||t.lineIndentc&&(c=t.lineIndent),$t(a))u++;else{if(t.lineIndente)&&0!==i)Ut(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(m&&(o=t.line,s=t.lineStart,l=t.position),de(t,e,4,!0,n)&&(m?g=t.result:y=t.result),m||(Zt(t,d,p,f,g,y,o,s,l),f=g=y=null),Jt(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==c)Ut(t,"bad indentation of a mapping entry");else if(t.lineIndente?f=1:t.lineIndent===e?f=0:t.lineIndente?f=1:t.lineIndent===e?f=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),l=0,c=t.implicitTypes.length;l"),null!==t.result&&u.kind!==t.kind&&Ut(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result,t.tag)?(t.result=u.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Ut(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||y}function pe(t){var e,r,i,n,a=t.position,o=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(n=t.input.charCodeAt(t.position))&&(Jt(t,!0,-1),n=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==n));){for(o=!0,n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!Dt(n);)n=t.input.charCodeAt(++t.position);for(i=[],(r=t.input.slice(e,t.position)).length<1&&Ut(t,"directive name must not be less than one character in length");0!==n;){for(;Et(n);)n=t.input.charCodeAt(++t.position);if(35===n){do{n=t.input.charCodeAt(++t.position)}while(0!==n&&!$t(n));break}if($t(n))break;for(e=t.position;0!==n&&!Dt(n);)n=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==n&&Qt(t),St.call(Gt,r)?Gt[r](t,r,i):Yt(t,'unknown document directive "'+r+'"')}Jt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,Jt(t,!0,-1)):o&&Ut(t,"directives end mark is expected"),de(t,t.lineIndent-1,4,!1,!0),Jt(t,!0,-1),t.checkLineBreaks&&At.test(t.input.slice(a,t.position))&&Yt(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&te(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,Jt(t,!0,-1)):t.position=55296&&i<=56319&&e+1=56320&&r<=57343?1024*(i-55296)+r-56320+65536:i}function Ke(t){return/^\n* /.test(t)}(0,i.K2)(Te,"State"),(0,i.K2)(Ae,"indentString"),(0,i.K2)(Me,"generateNextLine"),(0,i.K2)(Be,"testImplicitResolving"),(0,i.K2)(Le,"isWhitespace"),(0,i.K2)(Fe,"isPrintable"),(0,i.K2)($e,"isNsCharOrWhitespace"),(0,i.K2)(Ee,"isPlainSafe"),(0,i.K2)(De,"isPlainSafeFirst"),(0,i.K2)(Oe,"isPlainSafeLast"),(0,i.K2)(Re,"codePointAt"),(0,i.K2)(Ke,"needIndentIndicator");function Ie(t,e,r,i,n,a,o,s){var l,c=0,h=null,u=!1,d=!1,p=-1!==i,f=-1,g=De(Re(t,0))&&Oe(Re(t,t.length-1));if(e||o)for(l=0;l=65536?l+=2:l++){if(!Fe(c=Re(t,l)))return 5;g=g&&Ee(c,h,s),h=c}else{for(l=0;l=65536?l+=2:l++){if(10===(c=Re(t,l)))u=!0,p&&(d=d||l-f-1>i&&" "!==t[f+1],f=l);else if(!Fe(c))return 5;g=g&&Ee(c,h,s),h=c}d=d||p&&l-f-1>i&&" "!==t[f+1]}return u||d?r>9&&Ke(t)?5:o?2===a?5:2:d?4:3:!g||o||n(t)?2===a?5:2:1}function Ne(t,e,r,n,a){t.dump=function(){if(0===e.length)return 2===t.quotingType?'""':"''";if(!t.noCompatMode&&(-1!==Ce.indexOf(e)||_e.test(e)))return 2===t.quotingType?'"'+e+'"':"'"+e+"'";var o=t.indent*Math.max(1,r),s=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),l=n||t.flowLevel>-1&&r>=t.flowLevel;function c(e){return Be(t,e)}switch((0,i.K2)(c,"testAmbiguity"),Ie(e,l,t.indent,s,c,t.quotingType,t.forceQuotes&&!n,a)){case 1:return e;case 2:return"'"+e.replace(/'/g,"''")+"'";case 3:return"|"+Pe(e,t.indent)+ze(Ae(e,o));case 4:return">"+Pe(e,t.indent)+ze(Ae(qe(e,s),o));case 5:return'"'+We(e)+'"';default:throw new p("impossible error: invalid scalar style")}}()}function Pe(t,e){var r=Ke(t)?String(e):"",i="\n"===t[t.length-1];return r+(i&&("\n"===t[t.length-2]||"\n"===t)?"+":i?"":"-")+"\n"}function ze(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function qe(t,e){for(var r,i,n,a=/(\n+)([^\n]*)/g,o=(r=-1!==(r=t.indexOf("\n"))?r:t.length,a.lastIndex=r,je(t.slice(0,r),e)),s="\n"===t[0]||" "===t[0];n=a.exec(t);){var l=n[1],c=n[2];i=" "===c[0],o+=l+(s||i||""===c?"":"\n")+je(c,e),s=i}return o}function je(t,e){if(""===t||" "===t[0])return t;for(var r,i,n=/ [^ ]/g,a=0,o=0,s=0,l="";r=n.exec(t);)(s=r.index)-a>e&&(i=o>a?o:s,l+="\n"+t.slice(a,i),a=i+1),o=s;return l+="\n",t.length-a>e&&o>a?l+=t.slice(a,o)+"\n"+t.slice(o+1):l+=t.slice(a),l.slice(1)}function We(t){for(var e,r="",i=0,n=0;n=65536?n+=2:n++)i=Re(t,n),!(e=we[i])&&Fe(i)?(r+=t[n],i>=65536&&(r+=t[n+1])):r+=e||Se(i);return r}function He(t,e,r){var i,n,a,o="",s=t.tag;for(i=0,n=r.length;i1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Ve(t,e,o,!1,!1)&&(l+=s+=t.dump));t.tag=c,t.dump="{"+l+"}"}function Ge(t,e,r,i){var n,a,o,s,l,c,h="",u=t.tag,d=Object.keys(r);if(!0===t.sortKeys)d.sort();else if("function"==typeof t.sortKeys)d.sort(t.sortKeys);else if(t.sortKeys)throw new p("sortKeys must be a boolean or a function");for(n=0,a=d.length;n1024)&&(t.dump&&10===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,l&&(c+=Me(t,e)),Ve(t,e+1,s,!0,l)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=":":c+=": ",h+=c+=t.dump));t.tag=u,t.dump=h||"{}"}function Xe(t,e,r){var i,n,a,o,s,l;for(a=0,o=(n=r?t.explicitTypes:t.implicitTypes).length;a tag resolver accepts not "'+l+'" style');i=s.represent[l](e,l)}t.dump=i}return!0}return!1}function Ve(t,e,r,i,n,a,o){t.tag=null,t.dump=r,Xe(t,r,!1)||Xe(t,r,!0);var s,l=xe.call(t.dump),c=i;i&&(i=t.flowLevel<0||t.flowLevel>e);var h,u,d="[object Object]"===l||"[object Array]"===l;if(d&&(u=-1!==(h=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||u||2!==t.indent&&e>0)&&(n=!1),u&&t.usedDuplicates[h])t.dump="*ref_"+h;else{if(d&&u&&!t.usedDuplicates[h]&&(t.usedDuplicates[h]=!0),"[object Object]"===l)i&&0!==Object.keys(t.dump).length?(Ge(t,e,t.dump,n),u&&(t.dump="&ref_"+h+t.dump)):(Ye(t,e,t.dump),u&&(t.dump="&ref_"+h+" "+t.dump));else if("[object Array]"===l)i&&0!==t.dump.length?(t.noArrayIndent&&!o&&e>0?Ue(t,e-1,t.dump,n):Ue(t,e,t.dump,n),u&&(t.dump="&ref_"+h+t.dump)):(He(t,e,t.dump),u&&(t.dump="&ref_"+h+" "+t.dump));else{if("[object String]"!==l){if("[object Undefined]"===l)return!1;if(t.skipInvalid)return!1;throw new p("unacceptable kind of an object to dump "+l)}"?"!==t.tag&&Ne(t,t.dump,e,a,c)}null!==t.tag&&"?"!==t.tag&&(s=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),s="!"===t.tag[0]?"!"+s:"tag:yaml.org,2002:"===s.slice(0,18)?"!!"+s.slice(18):"!<"+s+">",t.dump=s+" "+t.dump)}return!0}function Ze(t,e){var r,i,n=[],a=[];for(Qe(t,n,a),r=0,i=a.length;r{"use strict";r.d(e,{A:()=>i});const i=r(1917).A.Uint8Array},4171:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(8744);const n=function(){try{var t=(0,i.A)(Object,"defineProperty");return t({},"",{}),t}catch(e){}}()},4326:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(9008),n=r(6875),a=r(7525);const o=function(t,e){return(0,a.A)((0,n.A)(t,e,i.A),t+"")}},4353:function(t){t.exports=function(){"use strict";var t=1e3,e=6e4,r=36e5,i="millisecond",n="second",a="minute",o="hour",s="day",l="week",c="month",h="quarter",u="year",d="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,y={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],r=t%100;return"["+t+(e[(r-20)%10]||e[r]||e[0])+"]"}},m=function(t,e,r){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(r)+t},x={s:m,z:function(t){var e=-t.utcOffset(),r=Math.abs(e),i=Math.floor(r/60),n=r%60;return(e<=0?"+":"-")+m(i,2,"0")+":"+m(n,2,"0")},m:function t(e,r){if(e.date()1)return t(o[0])}else{var s=e.name;k[s]=e,n=s}return!i&&n&&(b=n),n||!i&&b},v=function(t,e){if(C(t))return t.clone();var r="object"==typeof e?e:{};return r.date=t,r.args=arguments,new T(r)},S=x;S.l=_,S.i=C,S.w=function(t,e){return v(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var T=function(){function y(t){this.$L=_(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[w]=!0}var m=y.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,r=t.utc;if(null===e)return new Date(NaN);if(S.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(f);if(i){var n=i[2]-1||0,a=(i[7]||"0").substring(0,3);return r?new Date(Date.UTC(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return S},m.isValid=function(){return!(this.$d.toString()===p)},m.isSame=function(t,e){var r=v(t);return this.startOf(e)<=r&&r<=this.endOf(e)},m.isAfter=function(t,e){return v(t){"use strict";r.d(e,{A:()=>i});const i=function(t){return function(e,r,i){for(var n=-1,a=Object(e),o=i(e),s=o.length;s--;){var l=o[t?s:++n];if(!1===r(a[l],l,a))break}return e}}()},4841:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(2136),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=n&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===n&&i.A.process;const s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}()},4886:(t,e,r)=>{"use strict";r.d(e,{A:()=>g});var i=r(3539),n=r(3122);const a={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(a.re);if(!e)return;const r=e[1],n=parseInt(r,16),o=r.length,s=o%4==0,l=o>4,c=l?1:17,h=l?8:4,u=s?0:-1,d=l?255:15;return i.A.set({r:(n>>h*(u+3)&d)*c,g:(n>>h*(u+2)&d)*c,b:(n>>h*(u+1)&d)*c,a:s?(n&d)*c/255:1},t)},stringify:t=>{const{r:e,g:r,b:i,a:a}=t;return a<1?`#${n.Y[Math.round(e)]}${n.Y[Math.round(r)]}${n.Y[Math.round(i)]}${n.Y[Math.round(255*a)]}`:`#${n.Y[Math.round(e)]}${n.Y[Math.round(r)]}${n.Y[Math.round(i)]}`}},o=a;var s=r(2453);const l={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(l.hueRe);if(e){const[,t,r]=e;switch(r){case"grad":return s.A.channel.clamp.h(.9*parseFloat(t));case"rad":return s.A.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return s.A.channel.clamp.h(360*parseFloat(t))}}return s.A.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const r=t.match(l.re);if(!r)return;const[,n,a,o,c,h]=r;return i.A.set({h:l._hue2deg(n),s:s.A.channel.clamp.s(parseFloat(a)),l:s.A.channel.clamp.l(parseFloat(o)),a:c?s.A.channel.clamp.a(h?parseFloat(c)/100:parseFloat(c)):1},t)},stringify:t=>{const{h:e,s:r,l:i,a:n}=t;return n<1?`hsla(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(i)}%, ${n})`:`hsl(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(i)}%)`}},c=l,h={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=h.colors[t];if(e)return o.parse(e)},stringify:t=>{const e=o.stringify(t);for(const r in h.colors)if(h.colors[r]===e)return r}},u=h,d={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const r=t.match(d.re);if(!r)return;const[,n,a,o,l,c,h,u,p]=r;return i.A.set({r:s.A.channel.clamp.r(a?2.55*parseFloat(n):parseFloat(n)),g:s.A.channel.clamp.g(l?2.55*parseFloat(o):parseFloat(o)),b:s.A.channel.clamp.b(h?2.55*parseFloat(c):parseFloat(c)),a:u?s.A.channel.clamp.a(p?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{r:e,g:r,b:i,a:n}=t;return n<1?`rgba(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(i)}, ${s.A.lang.round(n)})`:`rgb(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(i)})`}},p=d,f={format:{keyword:h,hex:o,rgb:d,rgba:d,hsl:l,hsla:l},parse:t=>{if("string"!=typeof t)return t;const e=o.parse(t)||p.parse(t)||c.parse(t)||u.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(n.Z.HSL)||void 0===t.data.r?c.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?p.stringify(t):o.stringify(t)},g=f},5164:(t,e,r)=>{"use strict";r.d(e,{IU:()=>x,Jo:()=>L,T_:()=>C,g0:()=>R,jP:()=>k});var i=r(8698),n=r(5894),a=r(3245),o=r(2387),s=r(92),l=r(3226),c=r(7633),h=r(797),u=r(451),d=r(9893),p=(0,h.K2)((t,e,r,i,n,a)=>{e.arrowTypeStart&&g(t,"start",e.arrowTypeStart,r,i,n,a),e.arrowTypeEnd&&g(t,"end",e.arrowTypeEnd,r,i,n,a)},"addEdgeMarkers"),f={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},g=(0,h.K2)((t,e,r,i,n,a,o)=>{const s=f[r];if(!s)return void h.Rm.warn(`Unknown arrow type: ${r}`);const l=`${n}_${a}-${s.type}${"start"===e?"Start":"End"}`;if(o&&""!==o.trim()){const r=`${l}_${o.replace(/[^\dA-Za-z]/g,"_")}`;if(!document.getElementById(r)){const t=document.getElementById(l);if(t){const e=t.cloneNode(!0);e.id=r;e.querySelectorAll("path, circle, line").forEach(t=>{t.setAttribute("stroke",o),s.fill&&t.setAttribute("fill",o)}),t.parentNode?.appendChild(e)}}t.attr(`marker-${e}`,`url(${i}#${r})`)}else t.attr(`marker-${e}`,`url(${i}#${l})`)},"addEdgeMarker"),y=new Map,m=new Map,x=(0,h.K2)(()=>{y.clear(),m.clear()},"clear"),b=(0,h.K2)(t=>t?t.reduce((t,e)=>t+";"+e,""):"","getLabelStyles"),k=(0,h.K2)(async(t,e)=>{let r=(0,c._3)((0,c.D7)().flowchart.htmlLabels);const{labelStyles:i}=(0,o.GX)(e);e.labelStyle=i;const a=await(0,s.GZ)(t,e.label,{style:e.labelStyle,useHtmlLabels:r,addSvgBackground:!0,isNode:!1});h.Rm.info("abc82",e,e.labelType);const l=t.insert("g").attr("class","edgeLabel"),d=l.insert("g").attr("class","label").attr("data-id",e.id);d.node().appendChild(a);let p,f=a.getBBox();if(r){const t=a.children[0],e=(0,u.Ltv)(a);f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}if(d.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),y.set(e.id,l),e.width=f.width,e.height=f.height,e.startLabelLeft){const r=await(0,n.DA)(e.startLabelLeft,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),m.get(e.id)||m.set(e.id,{}),m.get(e.id).startLeft=i,w(p,e.startLabelLeft)}if(e.startLabelRight){const r=await(0,n.DA)(e.startLabelRight,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=i.node().appendChild(r),a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),m.get(e.id)||m.set(e.id,{}),m.get(e.id).startRight=i,w(p,e.startLabelRight)}if(e.endLabelLeft){const r=await(0,n.DA)(e.endLabelLeft,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),i.node().appendChild(r),m.get(e.id)||m.set(e.id,{}),m.get(e.id).endLeft=i,w(p,e.endLabelLeft)}if(e.endLabelRight){const r=await(0,n.DA)(e.endLabelRight,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),i.node().appendChild(r),m.get(e.id)||m.set(e.id,{}),m.get(e.id).endRight=i,w(p,e.endLabelRight)}return a},"insertEdgeLabel");function w(t,e){(0,c.D7)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,h.K2)(w,"setTerminalWidth");var C=(0,h.K2)((t,e)=>{h.Rm.debug("Moving label abc88 ",t.id,t.label,y.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath;const i=(0,c.D7)(),{subGraphTitleTotalMargin:n}=(0,a.O)(i);if(t.label){const i=y.get(t.id);let a=t.x,o=t.y;if(r){const i=l._K.calcLabelPosition(r);h.Rm.debug("Moving label "+t.label+" from (",a,",",o,") to (",i.x,",",i.y,") abc88"),e.updatedPath&&(a=i.x,o=i.y)}i.attr("transform",`translate(${a}, ${o+n/2})`)}if(t.startLabelLeft){const e=m.get(t.id).startLeft;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.startLabelRight){const e=m.get(t.id).startRight;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.endLabelLeft){const e=m.get(t.id).endLeft;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.endLabelRight){const e=m.get(t.id).endRight;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}},"positionEdgeLabel"),_=(0,h.K2)((t,e)=>{const r=t.x,i=t.y,n=Math.abs(e.x-r),a=Math.abs(e.y-i),o=t.width/2,s=t.height/2;return n>=o||a>=s},"outsideNode"),v=(0,h.K2)((t,e,r)=>{h.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const i=t.x,n=t.y,a=Math.abs(i-r.x),o=t.width/2;let s=r.xMath.abs(i-e.x)*l){let t=r.y{h.Rm.warn("abc88 cutPathAtIntersect",t,e);let r=[],i=t[0],n=!1;return t.forEach(t=>{if(h.Rm.info("abc88 checking point",t,e),_(e,t)||n)h.Rm.warn("abc88 outside",t,i),i=t,n||r.push(t);else{const a=v(e,i,t);h.Rm.debug("abc88 inside",t,i,a),h.Rm.debug("abc88 intersection",a,e);let o=!1;r.forEach(t=>{o=o||t.x===a.x&&t.y===a.y}),r.some(t=>t.x===a.x&&t.y===a.y)?h.Rm.warn("abc88 no intersect",a,r):r.push(a),n=!0}}),h.Rm.debug("returning points",r),r},"cutPathAtIntersect");function T(t){const e=[],r=[];for(let i=1;i5&&Math.abs(a.y-n.y)>5||n.y===a.y&&a.x===o.x&&Math.abs(a.x-n.x)>5&&Math.abs(a.y-o.y)>5)&&(e.push(a),r.push(i))}return{cornerPoints:e,cornerPointPositions:r}}(0,h.K2)(T,"extractCornerPoints");var A=(0,h.K2)(function(t,e,r){const i=e.x-t.x,n=e.y-t.y,a=r/Math.sqrt(i*i+n*n);return{x:e.x-a*i,y:e.y-a*n}},"findAdjacentPoint"),M=(0,h.K2)(function(t){const{cornerPointPositions:e}=T(t),r=[];for(let i=0;i10&&Math.abs(n.y-e.y)>=10){h.Rm.debug("Corner point fixing",Math.abs(n.x-e.x),Math.abs(n.y-e.y));const t=5;d=a.x===o.x?{x:l<0?o.x-t+u:o.x+t-u,y:c<0?o.y-u:o.y+u}:{x:l<0?o.x-u:o.x+u,y:c<0?o.y-t+u:o.y+t-u}}else h.Rm.debug("Corner point skipping fixing",Math.abs(n.x-e.x),Math.abs(n.y-e.y));r.push(d,s)}else r.push(t[i]);return r},"fixCorners"),B=(0,h.K2)((t,e,r)=>{const i=t-e-r,n=Math.floor(i/4);return`0 ${e} ${Array(n).fill("2 2").join(" ")} ${r}`},"generateDashArray"),L=(0,h.K2)(function(t,e,r,n,a,s,f,g=!1){const{handDrawnSeed:y}=(0,c.D7)();let m=e.points,x=!1;const b=a;var k=s;const w=[];for(const i in e.cssCompiledStyles)(0,o.KX)(i)||w.push(e.cssCompiledStyles[i]);h.Rm.debug("UIO intersect check",e.points,k.x,b.x),k.intersect&&b.intersect&&!g&&(m=m.slice(1,e.points.length-1),m.unshift(b.intersect(m[0])),h.Rm.debug("Last point UIO",e.start,"--\x3e",e.end,m[m.length-1],k,k.intersect(m[m.length-1])),m.push(k.intersect(m[m.length-1])));const C=btoa(JSON.stringify(m));e.toCluster&&(h.Rm.info("to cluster abc88",r.get(e.toCluster)),m=S(e.points,r.get(e.toCluster).node),x=!0),e.fromCluster&&(h.Rm.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(m,null,2)),m=S(m.reverse(),r.get(e.fromCluster).node).reverse(),x=!0);let _=m.filter(t=>!Number.isNaN(t.y));_=M(_);let v=u.qrM;switch(v=u.lUB,e.curve){case"linear":v=u.lUB;break;case"basis":default:v=u.qrM;break;case"cardinal":v=u.y8u;break;case"bumpX":v=u.Wi0;break;case"bumpY":v=u.PGM;break;case"catmullRom":v=u.oDi;break;case"monotoneX":v=u.nVG;break;case"monotoneY":v=u.uxU;break;case"natural":v=u.Xf2;break;case"step":v=u.GZz;break;case"stepAfter":v=u.UPb;break;case"stepBefore":v=u.dyv}const{x:T,y:A}=(0,i.RI)(e),L=(0,u.n8j)().x(T).y(A).curve(v);let $,D;switch(e.thickness){case"normal":default:$="edge-thickness-normal";break;case"thick":$="edge-thickness-thick";break;case"invisible":$="edge-thickness-invisible"}switch(e.pattern){case"solid":default:$+=" edge-pattern-solid";break;case"dotted":$+=" edge-pattern-dotted";break;case"dashed":$+=" edge-pattern-dashed"}let O="rounded"===e.curve?F(E(_,e),5):L(_);const R=Array.isArray(e.style)?e.style:[e.style];let K=R.find(t=>t?.startsWith("stroke:")),I=!1;if("handDrawn"===e.look){const r=d.A.svg(t);Object.assign([],_);const i=r.path(O,{roughness:.3,seed:y});$+=" transition",D=(0,u.Ltv)(i).select("path").attr("id",e.id).attr("class"," "+$+(e.classes?" "+e.classes:"")).attr("style",R?R.reduce((t,e)=>t+";"+e,""):"");let n=D.attr("d");D.attr("d",n),t.node().appendChild(D.node())}else{const r=w.join(";"),n=R?R.reduce((t,e)=>t+e+";",""):"";let a="";e.animate&&(a=" edge-animation-fast"),e.animation&&(a=" edge-animation-"+e.animation);const o=(r?r+";"+n+";":n)+";"+(R?R.reduce((t,e)=>t+";"+e,""):"");D=t.append("path").attr("d",O).attr("id",e.id).attr("class"," "+$+(e.classes?" "+e.classes:"")+(a??"")).attr("style",o),K=o.match(/stroke:([^;]+)/)?.[1],I=!0===e.animate||!!e.animation||r.includes("animation");const s=D.node(),l="function"==typeof s.getTotalLength?s.getTotalLength():0,c=i.Nq[e.arrowTypeStart]||0,h=i.Nq[e.arrowTypeEnd]||0;if("neo"===e.look&&!I){const t=`stroke-dasharray: ${"dotted"===e.pattern||"dashed"===e.pattern?B(l,c,h):`0 ${c} ${l-c-h} ${h}`}; stroke-dashoffset: 0;`;D.attr("style",t+D.attr("style"))}}D.attr("data-edge",!0),D.attr("data-et","edge"),D.attr("data-id",e.id),D.attr("data-points",C),e.showPoints&&_.forEach(e=>{t.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",e.x).attr("cy",e.y)});let N="";((0,c.D7)().flowchart.arrowMarkerAbsolute||(0,c.D7)().state.arrowMarkerAbsolute)&&(N=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,N=N.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),h.Rm.info("arrowTypeStart",e.arrowTypeStart),h.Rm.info("arrowTypeEnd",e.arrowTypeEnd),p(D,e,N,f,n,K);const P=m[Math.floor(m.length/2)];l._K.isLabelCoordinateInPath(P,D.attr("d"))||(x=!0);let z={};return x&&(z.updatedPath=m),z.originalPath=e.points,z},"insertEdge");function F(t,e){if(t.length<2)return"";let r="";const i=t.length,n=1e-5;for(let a=0;a({...t}));if(t.length>=2&&i.hq[e.arrowTypeStart]){const n=i.hq[e.arrowTypeStart],a=t[0],o=t[1],{angle:s}=$(a,o),l=n*Math.cos(s),c=n*Math.sin(s);r[0].x=a.x+l,r[0].y=a.y+c}const n=t.length;if(n>=2&&i.hq[e.arrowTypeEnd]){const a=i.hq[e.arrowTypeEnd],o=t[n-1],s=t[n-2],{angle:l}=$(s,o),c=a*Math.cos(l),h=a*Math.sin(l);r[n-1].x=o.x-c,r[n-1].y=o.y-h}return r}(0,h.K2)(F,"generateRoundedPath"),(0,h.K2)($,"calculateDeltaAndAngle"),(0,h.K2)(E,"applyMarkerOffsetsToPoints");var D=(0,h.K2)((t,e,r,i)=>{e.forEach(e=>{O[e](t,r,i)})},"insertMarkers"),O={extension:(0,h.K2)((t,e,r)=>{h.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:(0,h.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:(0,h.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:(0,h.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),only_one:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),zero_or_one:(0,h.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),i.append("path").attr("d","M9,0 L9,18");const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),one_or_more:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),zero_or_more:(0,h.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),i.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),requirement_arrow:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d","M0,0\n L20,10\n M20,10\n L0,20")},"requirement_arrow"),requirement_contains:(0,h.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");i.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),i.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),i.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains")},R=D},5254:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},5263:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(5635);const n=(t,e)=>(0,i.A)(t,"l",-e)},5353:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=/^(?:0|[1-9]\d*)$/;const n=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&i.test(t))&&t>-1&&t%1==0&&t{"use strict";r.d(e,{A:()=>s});var i=r(2453),n=r(3539),a=r(4886),o=r(8232);const s=(t,e,r=0,s=1)=>{if("number"!=typeof t)return(0,o.A)(t,{a:e});const l=n.A.set({r:i.A.channel.clamp.r(t),g:i.A.channel.clamp.g(e),b:i.A.channel.clamp.b(r),a:i.A.channel.clamp.a(s)});return a.A.stringify(l)}},5615:(t,e,r)=>{"use strict";r.d(e,{A:()=>h});var i=r(3607),n=r(3149),a=r(7271);const o=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e};var s=Object.prototype.hasOwnProperty;const l=function(t){if(!(0,n.A)(t))return o(t);var e=(0,a.A)(t),r=[];for(var i in t)("constructor"!=i||!e&&s.call(t,i))&&r.push(i);return r};var c=r(8446);const h=function(t){return(0,c.A)(t)?(0,i.A)(t,!0):l(t)}},5635:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(2453),n=r(4886);const a=(t,e,r)=>{const a=n.A.parse(t),o=a[e],s=i.A.channel.clamp[e](o+r);return o!==s&&(a[e]=s),n.A.stringify(a)}},5647:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=(0,r(367).A)(Object.getPrototypeOf,Object)},5894:(t,e,r)=>{"use strict";r.d(e,{DA:()=>w,IU:()=>L,U:()=>B,U7:()=>Te,U_:()=>Me,Zk:()=>u,aP:()=>_e,gh:()=>Ae,lC:()=>p,on:()=>Se});var i=r(3245),n=r(2387),a=r(92),o=r(3226),s=r(7633),l=r(797),c=r(451),h=r(9893),u=(0,l.K2)(async(t,e,r)=>{let i;const n=e.useHtmlLabels||(0,s._3)((0,s.D7)()?.htmlLabels);i=r||"node default";const h=t.insert("g").attr("class",i).attr("id",e.domId||e.id),u=h.insert("g").attr("class","label").attr("style",(0,o.KL)(e.labelStyle));let d;d=void 0===e.label?"":"string"==typeof e.label?e.label:e.label[0];const p=await(0,a.GZ)(u,(0,s.jZ)((0,o.Sm)(d),(0,s.D7)()),{useHtmlLabels:n,width:e.width||(0,s.D7)().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img});let f=p.getBBox();const g=(e?.padding??0)/2;if(n){const t=p.children[0],e=(0,c.Ltv)(p),r=t.getElementsByTagName("img");if(r){const t=""===d.replace(/]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function i(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=(0,s.D7)().fontSize?(0,s.D7)().fontSize:window.getComputedStyle(document.body).fontSize,r=5,[i=s.UI.fontSize]=(0,o.I5)(t),n=i*r+"px";e.style.minWidth=n,e.style.maxWidth=n}else e.style.width="100%";r(e)}(0,l.K2)(i,"setupImage"),setTimeout(()=>{e.complete&&i()}),e.addEventListener("error",i),e.addEventListener("load",i)})))}f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}return n?u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):u.attr("transform","translate(0, "+-f.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:h,bbox:f,halfPadding:g,label:u}},"labelHelper"),d=(0,l.K2)(async(t,e,r)=>{const i=r.useHtmlLabels||(0,s._3)((0,s.D7)()?.flowchart?.htmlLabels),n=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),l=await(0,a.GZ)(n,(0,s.jZ)((0,o.Sm)(e),(0,s.D7)()),{useHtmlLabels:i,width:r.width||(0,s.D7)()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img});let h=l.getBBox();const u=r.padding/2;if((0,s._3)((0,s.D7)()?.flowchart?.htmlLabels)){const t=l.children[0],e=(0,c.Ltv)(l);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}return i?n.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):n.attr("transform","translate(0, "+-h.height/2+")"),r.centerLabel&&n.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),n.insert("rect",":first-child"),{shapeSvg:t,bbox:h,halfPadding:u,label:n}},"insertLabel"),p=(0,l.K2)((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),f=(0,l.K2)((t,e)=>("handDrawn"===t.look?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");function g(t){const e=t.map((t,e)=>`${0===e?"M":"L"}${t.x},${t.y}`);return e.push("Z"),e.join(" ")}function y(t,e,r,i,n,a){const o=[],s=r-t,l=i-e,c=s/a,h=2*Math.PI/c,u=e+l/2;for(let d=0;d<=50;d++){const e=t+d/50*s,r=u+n*Math.sin(h*(e-t));o.push({x:e,y:r})}return o}function m(t,e,r,i,n,a){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;c{var r,i,n=t.x,a=t.y,o=e.x-n,s=e.y-a,l=t.width/2,c=t.height/2;return Math.abs(s)*l>Math.abs(o)*c?(s<0&&(c=-c),r=0===s?0:c*o/s,i=c):(o<0&&(l=-l),r=l,i=0===o?0:l*s/o),{x:n+r,y:a+i}},"intersectRect");function b(t,e){e&&t.attr("style",e)}async function k(t){const e=(0,c.Ltv)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),i=(0,s.D7)();let n=t.label;t.label&&(0,s.Wi)(t.label)&&(n=await(0,s.dj)(t.label.replace(s.Y2.lineBreakRegex,"\n"),i));const a='"+n+"";return r.html((0,s.jZ)(a,i)),b(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}(0,l.K2)(b,"applyStyle"),(0,l.K2)(k,"addHtmlLabel");var w=(0,l.K2)(async(t,e,r,i)=>{let n=t||"";if("object"==typeof n&&(n=n[0]),(0,s._3)((0,s.D7)().flowchart.htmlLabels)){n=n.replace(/\\n|\n/g,"
    "),l.Rm.info("vertexText"+n);const t={isNode:i,label:(0,o.Sm)(n).replace(/fa[blrs]?:fa-[\w-]+/g,t=>``),labelStyle:e?e.replace("fill:","color:"):e};return await k(t)}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let i=[];i="string"==typeof n?n.split(/\\n|\n|/gi):Array.isArray(n)?n:[];for(const e of i){const i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),r?i.setAttribute("class","title-row"):i.setAttribute("class","row"),i.textContent=e.trim(),t.appendChild(i)}return t}},"createLabel"),C=(0,l.K2)((t,e,r,i,n)=>["M",t+n,e,"H",t+r-n,"A",n,n,0,0,1,t+r,e+n,"V",e+i-n,"A",n,n,0,0,1,t+r-n,e+i,"H",t+n,"A",n,n,0,0,1,t,e+i-n,"V",e+n,"A",n,n,0,0,1,t+n,e,"Z"].join(" "),"createRoundedRectPathD"),_=(0,l.K2)(async(t,e)=>{l.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,s.D7)(),{themeVariables:o,handDrawnSeed:u}=r,{clusterBkg:d,clusterBorder:p}=o,{labelStyles:f,nodeStyles:g,borderStyles:y,backgroundStyles:m}=(0,n.GX)(e),b=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),k=(0,s._3)(r.flowchart.htmlLabels),w=b.insert("g").attr("class","cluster-label "),_=await(0,a.GZ)(w,e.label,{style:e.labelStyle,useHtmlLabels:k,isNode:!0});let v=_.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=_.children[0],e=(0,c.Ltv)(_);v=t.getBoundingClientRect(),e.attr("width",v.width),e.attr("height",v.height)}const S=e.width<=v.width+e.padding?v.width+e.padding:e.width;e.width<=v.width+e.padding?e.diff=(S-e.width)/2-e.padding:e.diff=-e.padding;const T=e.height,A=e.x-S/2,M=e.y-T/2;let B;if(l.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=h.A.svg(b),r=(0,n.Fr)(e,{roughness:.7,fill:d,stroke:p,fillWeight:3,seed:u}),i=t.path(C(A,M,S,T,0),r);B=b.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child"),B.select("path:nth-child(2)").attr("style",y.join(";")),B.select("path").attr("style",m.join(";").replace("fill","stroke"))}else B=b.insert("rect",":first-child"),B.attr("style",g).attr("rx",e.rx).attr("ry",e.ry).attr("x",A).attr("y",M).attr("width",S).attr("height",T);const{subGraphTitleTopMargin:L}=(0,i.O)(r);if(w.attr("transform",`translate(${e.x-v.width/2}, ${e.y-e.height/2+L})`),f){const t=w.select("span");t&&t.attr("style",f)}const F=B.node().getBBox();return e.offsetX=0,e.width=F.width,e.height=F.height,e.offsetY=v.height-e.padding/2,e.intersect=function(t){return x(e,t)},{cluster:b,labelBBox:v}},"rect"),v=(0,l.K2)((t,e)=>{const r=t.insert("g").attr("class","note-cluster").attr("id",e.id),i=r.insert("rect",":first-child"),n=0*e.padding,a=n/2;i.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+n).attr("height",e.height+n).attr("fill","none");const o=i.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return x(e,t)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),S=(0,l.K2)(async(t,e)=>{const r=(0,s.D7)(),{themeVariables:i,handDrawnSeed:n}=r,{altBackground:a,compositeBackground:o,compositeTitleBackground:l,nodeBorder:u}=i,d=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),p=d.insert("g",":first-child"),f=d.insert("g").attr("class","cluster-label");let g=d.append("rect");const y=f.node().appendChild(await w(e.label,e.labelStyle,void 0,!0));let m=y.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=y.children[0],e=(0,c.Ltv)(y);m=t.getBoundingClientRect(),e.attr("width",m.width),e.attr("height",m.height)}const b=0*e.padding,k=b/2,_=(e.width<=m.width+e.padding?m.width+e.padding:e.width)+b;e.width<=m.width+e.padding?e.diff=(_-e.width)/2-e.padding:e.diff=-e.padding;const v=e.height+b,S=e.height+b-m.height-6,T=e.x-_/2,A=e.y-v/2;e.width=_;const M=e.y-e.height/2-k+m.height+2;let B;if("handDrawn"===e.look){const t=e.cssClasses.includes("statediagram-cluster-alt"),r=h.A.svg(d),i=e.rx||e.ry?r.path(C(T,A,_,v,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:n}):r.rectangle(T,A,_,v,{seed:n});B=d.insert(()=>i,":first-child");const s=r.rectangle(T,M,_,S,{fill:t?a:o,fillStyle:t?"hachure":"solid",stroke:u,seed:n});B=d.insert(()=>i,":first-child"),g=d.insert(()=>s)}else{B=p.insert("rect",":first-child");const t="outer";B.attr("class",t).attr("x",T).attr("y",A).attr("width",_).attr("height",v).attr("data-look",e.look),g.attr("class","inner").attr("x",T).attr("y",M).attr("width",_).attr("height",S)}f.attr("transform",`translate(${e.x-m.width/2}, ${A+1-((0,s._3)(r.flowchart.htmlLabels)?0:3)})`);const L=B.node().getBBox();return e.height=L.height,e.offsetX=0,e.offsetY=m.height-e.padding/2,e.labelBBox=m,e.intersect=function(t){return x(e,t)},{cluster:d,labelBBox:m}},"roundedWithTitle"),T=(0,l.K2)(async(t,e)=>{l.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,s.D7)(),{themeVariables:o,handDrawnSeed:u}=r,{clusterBkg:d,clusterBorder:p}=o,{labelStyles:f,nodeStyles:g,borderStyles:y,backgroundStyles:m}=(0,n.GX)(e),b=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),k=(0,s._3)(r.flowchart.htmlLabels),w=b.insert("g").attr("class","cluster-label "),_=await(0,a.GZ)(w,e.label,{style:e.labelStyle,useHtmlLabels:k,isNode:!0,width:e.width});let v=_.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=_.children[0],e=(0,c.Ltv)(_);v=t.getBoundingClientRect(),e.attr("width",v.width),e.attr("height",v.height)}const S=e.width<=v.width+e.padding?v.width+e.padding:e.width;e.width<=v.width+e.padding?e.diff=(S-e.width)/2-e.padding:e.diff=-e.padding;const T=e.height,A=e.x-S/2,M=e.y-T/2;let B;if(l.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=h.A.svg(b),r=(0,n.Fr)(e,{roughness:.7,fill:d,stroke:p,fillWeight:4,seed:u}),i=t.path(C(A,M,S,T,e.rx),r);B=b.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child"),B.select("path:nth-child(2)").attr("style",y.join(";")),B.select("path").attr("style",m.join(";").replace("fill","stroke"))}else B=b.insert("rect",":first-child"),B.attr("style",g).attr("rx",e.rx).attr("ry",e.ry).attr("x",A).attr("y",M).attr("width",S).attr("height",T);const{subGraphTitleTopMargin:L}=(0,i.O)(r);if(w.attr("transform",`translate(${e.x-v.width/2}, ${e.y-e.height/2+L})`),f){const t=w.select("span");t&&t.attr("style",f)}const F=B.node().getBBox();return e.offsetX=0,e.width=F.width,e.height=F.height,e.offsetY=v.height-e.padding/2,e.intersect=function(t){return x(e,t)},{cluster:b,labelBBox:v}},"kanbanSection"),A={rect:_,squareRect:_,roundedWithTitle:S,noteGroup:v,divider:(0,l.K2)((t,e)=>{const r=(0,s.D7)(),{themeVariables:i,handDrawnSeed:n}=r,{nodeBorder:a}=i,o=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=o.insert("g",":first-child"),c=0*e.padding,u=e.width+c;e.diff=-e.padding;const d=e.height+c,p=e.x-u/2,f=e.y-d/2;let g;if(e.width=u,"handDrawn"===e.look){const t=h.A.svg(o).rectangle(p,f,u,d,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:n});g=o.insert(()=>t,":first-child")}else{g=l.insert("rect",":first-child");const t="divider";g.attr("class",t).attr("x",p).attr("y",f).attr("width",u).attr("height",d).attr("data-look",e.look)}const y=g.node().getBBox();return e.height=y.height,e.offsetX=0,e.offsetY=0,e.intersect=function(t){return x(e,t)},{cluster:o,labelBBox:{}}},"divider"),kanbanSection:T},M=new Map,B=(0,l.K2)(async(t,e)=>{const r=e.shape||"rect",i=await A[r](t,e);return M.set(e.id,i),i},"insertCluster"),L=(0,l.K2)(()=>{M=new Map},"clear");function F(t,e){return t.intersect(e)}(0,l.K2)(F,"intersectNode");var $=F;function E(t,e,r,i){var n=t.x,a=t.y,o=n-i.x,s=a-i.y,l=Math.sqrt(e*e*s*s+r*r*o*o),c=Math.abs(e*r*o/l);i.x0}(0,l.K2)(K,"intersectLine"),(0,l.K2)(I,"sameSign");var N=K;function P(t,e,r){let i=t.x,n=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)}):(o=Math.min(o,e.x),s=Math.min(s,e.y));let l=i-t.width/2-o,c=n-t.height/2-s;for(let h=0;h1&&a.sort(function(t,e){let i=t.x-r.x,n=t.y-r.y,a=Math.sqrt(i*i+n*n),o=e.x-r.x,s=e.y-r.y,l=Math.sqrt(o*o+s*s);return ag,":first-child");return y.attr("class","anchor").attr("style",(0,o.KL)(c)),p(e,y),e.intersect=function(t){return l.Rm.info("Circle intersect",e,1,t),z.circle(e,1,t)},s}function j(t,e,r,i,n,a,o){const s=(t+r)/2,l=(e+i)/2,c=Math.atan2(i-e,r-t),h=(r-t)/2/n,u=(i-e)/2/a,d=Math.sqrt(h**2+u**2);if(d>1)throw new Error("The given radii are too small to create an arc between the points.");const p=Math.sqrt(1-d**2),f=s+p*a*Math.sin(c)*(o?-1:1),g=l-p*n*Math.cos(c)*(o?-1:1),y=Math.atan2((e-g)/a,(t-f)/n);let m=Math.atan2((i-g)/a,(r-f)/n)-y;o&&m<0&&(m+=2*Math.PI),!o&&m>0&&(m-=2*Math.PI);const x=[];for(let b=0;b<20;b++){const t=y+b/19*m,e=f+n*Math.cos(t),r=g+a*Math.sin(t);x.push({x:e,y:r})}return x}async function W(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding+20,l=o.height+e.padding,c=l/2,d=c/(2.5+l/50),{cssStyles:y}=e,m=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...j(-s/2,-l/2,-s/2,l/2,d,c,!1),{x:s/2,y:l/2},...j(s/2,l/2,s/2,-l/2,d,c,!0)],x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=g(m),w=x.path(k,b),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(${d/2}, 0)`),p(e,C),e.intersect=function(t){return z.polygon(e,m,t)},a}function H(t,e,r,i){return t.insert("polygon",":first-child").attr("points",i.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}async function U(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+e.padding,l=o.width+e.padding+12,c=-s,d=[{x:12,y:c},{x:l,y:c},{x:l,y:0},{x:0,y:0},{x:0,y:c+12},{x:12,y:c}];let y;const{cssStyles:m}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(d),o=t.path(i,r);y=a.insert(()=>o,":first-child").attr("transform",`translate(${-l/2}, ${s/2})`),m&&y.attr("style",m)}else y=H(a,l,s,d);return i&&y.attr("style",i),p(e,y),e.intersect=function(t){return z.polygon(e,d,t)},a}function Y(t,e){const{nodeStyles:r}=(0,n.GX)(e);e.label="";const i=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,o=Math.max(28,e.width??0),s=[{x:0,y:o/2},{x:o/2,y:0},{x:0,y:-o/2},{x:-o/2,y:0}],l=h.A.svg(i),c=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(c.roughness=0,c.fillStyle="solid");const u=g(s),d=l.path(u,c),p=i.insert(()=>d,":first-child");return a&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",a),r&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(t){return z.polygon(e,s,t)},i}async function G(t,e,r){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{shapeSvg:s,bbox:c,halfPadding:d}=await u(t,e,f(e)),g=r?.padding??d,y=c.width/2+g;let m;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=t.circle(0,0,2*y,r);m=s.insert(()=>i,":first-child"),m.attr("class","basic label-container").attr("style",(0,o.KL)(x))}else m=s.insert("circle",":first-child").attr("class","basic label-container").attr("style",a).attr("r",y).attr("cx",0).attr("cy",0);return p(e,m),e.calcIntersect=function(t,e){const r=t.width/2;return z.circle(t,r,e)},e.intersect=function(t){return l.Rm.info("Circle intersect",e,y,t),z.circle(e,y,t)},s}function X(t){const e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),i=2*t;return`M ${-i/2*e},${i/2*r} L ${i/2*e},${-i/2*r}\n M ${i/2*e},${i/2*r} L ${-i/2*e},${-i/2*r}`}function V(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r,e.label="";const a=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),o=Math.max(30,e?.width??0),{cssStyles:s}=e,c=h.A.svg(a),u=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(u.roughness=0,u.fillStyle="solid");const d=c.circle(0,0,2*o,u),g=X(o),y=c.path(g,u),m=a.insert(()=>d,":first-child");return m.insert(()=>y),s&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",s),i&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",i),p(e,m),e.intersect=function(t){l.Rm.info("crossedCircle intersect",e,{radius:o,point:t});return z.circle(e,o,t)},a}function Z(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cv,":first-child").attr("stroke-opacity",0),S.insert(()=>C,":first-child"),S.attr("class","text"),y&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",i),S.attr("transform",`translate(${d}, 0)`),s.attr("transform",`translate(${-l/2+d-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,S),e.intersect=function(t){return z.polygon(e,x,t)},a}function J(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cv,":first-child").attr("stroke-opacity",0),S.insert(()=>C,":first-child"),S.attr("class","text"),y&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",i),S.attr("transform",`translate(${-d}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,S),e.intersect=function(t){return z.polygon(e,x,t)},a}function et(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cA,":first-child").attr("stroke-opacity",0),M.insert(()=>_,":first-child"),M.insert(()=>S,":first-child"),M.attr("class","text"),y&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",i),M.attr("transform",`translate(${d-d/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,M),e.intersect=function(t){return z.polygon(e,b,t)},a}async function it(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(80,1.25*(o.width+2*(e.padding??0)),e?.width??0),l=Math.max(20,o.height+2*(e.padding??0),e?.height??0),c=l/2,{cssStyles:d}=e,y=h.A.svg(a),x=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=s-c,k=l/4,w=[{x:b,y:0},{x:k,y:0},{x:0,y:l/2},{x:k,y:l},{x:b,y:l},...m(-b,-l/2,c,50,270,90)],C=g(w),_=y.path(C,x),v=a.insert(()=>_,":first-child");return v.attr("class","basic label-container"),d&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",d),i&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",i),v.attr("transform",`translate(${-s/2}, ${-l/2})`),p(e,v),e.intersect=function(t){return z.polygon(e,w,t)},a}(0,l.K2)(q,"anchor"),(0,l.K2)(j,"generateArcPoints"),(0,l.K2)(W,"bowTieRect"),(0,l.K2)(H,"insertPolygonShape"),(0,l.K2)(U,"card"),(0,l.K2)(Y,"choice"),(0,l.K2)(G,"circle"),(0,l.K2)(X,"createLine"),(0,l.K2)(V,"crossedCircle"),(0,l.K2)(Z,"generateCirclePoints"),(0,l.K2)(Q,"curlyBraceLeft"),(0,l.K2)(J,"generateCirclePoints"),(0,l.K2)(tt,"curlyBraceRight"),(0,l.K2)(et,"generateCirclePoints"),(0,l.K2)(rt,"curlyBraces"),(0,l.K2)(it,"curvedTrapezoid");var nt=(0,l.K2)((t,e,r,i,n,a)=>[`M${t},${e+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i].join(" "),"createCylinderPathD"),at=(0,l.K2)((t,e,r,i,n,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i].join(" "),"createOuterCylinderPathD"),ot=(0,l.K2)((t,e,r,i,n,a)=>[`M${t-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function st(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=Math.max(s.width+e.padding,e.width??0),d=c/2,g=d/(2.5+c/50),y=Math.max(s.height+g+e.padding,e.height??0);let m;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=at(0,0,c,y,d,g),i=ot(0,g,c,y,d,g),o=t.path(r,(0,n.Fr)(e,{})),s=t.path(i,(0,n.Fr)(e,{fill:"none"}));m=a.insert(()=>s,":first-child"),m=a.insert(()=>o,":first-child"),m.attr("class","basic label-container"),x&&m.attr("style",x)}else{const t=nt(0,0,c,y,d,g);m=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(x)).attr("style",i)}return m.attr("label-offset-y",g),m.attr("transform",`translate(${-c/2}, ${-(y/2+g)})`),p(e,m),l.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))}, ${-s.height/2+(e.padding??0)/1.5-(s.y-(s.top??0))})`),e.intersect=function(t){const r=z.rect(e,t),i=r.x-(e.x??0);if(0!=d&&(Math.abs(i)<(e.width??0)/2||Math.abs(i)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-g)){let n=g*g*(1-i*i/(d*d));n>0&&(n=Math.sqrt(n)),n=g-n,t.y-(e.y??0)>0&&(n=-n),r.y+=n}return r},a}async function lt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=o.width+e.padding,c=o.height+e.padding,d=.2*c,g=-l/2,y=-c/2-d/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:g,y:y+d},{x:-g,y:y+d},{x:-g,y:-y},{x:g,y:-y},{x:g,y:y},{x:-g,y:y},{x:-g,y:y+d}],w=x.polygon(k.map(t=>[t.x,t.y]),b),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),s.attr("transform",`translate(${g+(e.padding??0)/2-(o.x-(o.left??0))}, ${y+d+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return z.rect(e,t)},a}async function ct(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c}=await u(t,e,f(e)),d=s.width/2+c+5,g=s.width/2+c;let y;const{cssStyles:m}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{roughness:.2,strokeWidth:2.5}),i=(0,n.Fr)(e,{roughness:.2,strokeWidth:1.5}),s=t.circle(0,0,2*d,r),l=t.circle(0,0,2*g,i);y=a.insert("g",":first-child"),y.attr("class",(0,o.KL)(e.cssClasses)).attr("style",(0,o.KL)(m)),y.node()?.appendChild(s),y.node()?.appendChild(l)}else{y=a.insert("g",":first-child");const t=y.insert("circle",":first-child"),e=y.insert("circle");y.attr("class","basic label-container").attr("style",i),t.attr("class","outer-circle").attr("style",i).attr("r",d).attr("cx",0).attr("cy",0),e.attr("class","inner-circle").attr("style",i).attr("r",g).attr("cx",0).attr("cy",0)}return p(e,y),e.intersect=function(t){return l.Rm.info("DoubleCircle intersect",e,d,t),z.circle(e,d,t)},a}function ht(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.label="",e.labelStyle=i;const o=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:s}=e,c=h.A.svg(o),{nodeBorder:u}=r,d=(0,n.Fr)(e,{fillStyle:"solid"});"handDrawn"!==e.look&&(d.roughness=0);const g=c.circle(0,0,14,d),y=o.insert(()=>g,":first-child");return y.selectAll("path").attr("style",`fill: ${u} !important;`),s&&s.length>0&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",s),a&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",a),p(e,y),e.intersect=function(t){l.Rm.info("filledCircle intersect",e,{radius:7,point:t});return z.circle(e,7,t)},o}async function ut(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),c=o.width+(e.padding??0),d=c+o.height,y=c+o.height,m=[{x:0,y:-d},{x:y,y:-d},{x:y/2,y:0}],{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=g(m),C=b.path(w,k),_=a.insert(()=>C,":first-child").attr("transform",`translate(${-d/2}, ${d/2})`);return x&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),e.width=c,e.height=d,p(e,_),s.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))}, ${-d/2+(e.padding??0)/2+(o.y-(o.top??0))})`),e.intersect=function(t){return l.Rm.info("Triangle intersect",e,m,t),z.polygon(e,m,t)},a}function dt(t,e,{dir:r,config:{state:i,themeVariables:a}}){const{nodeStyles:o}=(0,n.GX)(e);e.label="";const s=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:l}=e;let c=Math.max(70,e?.width??0),u=Math.max(10,e?.height??0);"LR"===r&&(c=Math.max(10,e?.width??0),u=Math.max(70,e?.height??0));const d=-1*c/2,g=-1*u/2,y=h.A.svg(s),m=(0,n.Fr)(e,{stroke:a.lineColor,fill:a.lineColor});"handDrawn"!==e.look&&(m.roughness=0,m.fillStyle="solid");const x=y.rectangle(d,g,c,u,m),b=s.insert(()=>x,":first-child");l&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",l),o&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",o),p(e,b);const k=i?.padding??0;return e.width&&e.height&&(e.width+=k/2||0,e.height+=k/2||0),e.intersect=function(t){return z.rect(e,t)},s}async function pt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(80,o.width+2*(e.padding??0),e?.width??0),c=Math.max(50,o.height+2*(e.padding??0),e?.height??0),d=c/2,{cssStyles:y}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:-s/2,y:-c/2},{x:s/2-d,y:-c/2},...m(-s/2+d,0,d,50,90,270),{x:s/2-d,y:c/2},{x:-s/2,y:c/2}],w=g(k),C=x.path(w,b),_=a.insert(()=>C,":first-child");return _.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",y),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),p(e,_),e.intersect=function(t){l.Rm.info("Pill intersect",e,{radius:d,point:t});return z.polygon(e,k,t)},a}async function ft(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+(e.padding??0),l=o.width+2.5*(e.padding??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");let m=l/2;m+=m/6;const x=s/2,b=m-x/2,k=[{x:-b,y:-x},{x:0,y:-x},{x:b,y:-x},{x:m,y:0},{x:b,y:x},{x:0,y:x},{x:-b,y:x},{x:-m,y:0}],w=g(k),C=d.path(w,y),_=a.insert(()=>C,":first-child");return _.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),e.width=l,e.height=s,p(e,_),e.intersect=function(t){return z.polygon(e,k,t)},a}async function gt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.label="",e.labelStyle=r;const{shapeSvg:a}=await u(t,e,f(e)),o=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=[{x:0,y:0},{x:o,y:0},{x:0,y:s},{x:o,y:s}],x=g(m),b=d.path(x,y),k=a.insert(()=>b,":first-child");return k.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",i),k.attr("transform",`translate(${-o/2}, ${-s/2})`),p(e,k),e.intersect=function(t){l.Rm.info("Pill intersect",e,{points:m});return z.polygon(e,m,t)},a}async function yt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,label:m}=await u(t,e,"icon-shape default"),x="t"===e.pos,b=d,k=d,{nodeBorder:w}=r,{stylesMap:C}=(0,n.WW)(e),_=-k/2,v=-b/2,S=e.label?8:0,T=h.A.svg(g),A=(0,n.Fr)(e,{stroke:"none",fill:"none"});"handDrawn"!==e.look&&(A.roughness=0,A.fillStyle="solid");const M=T.rectangle(_,v,k,b,A),B=Math.max(k,y.width),L=b+y.height+S,F=T.rectangle(-B/2,-L/2,B,L,{...A,fill:"transparent",stroke:"none"}),$=g.insert(()=>M,":first-child"),E=g.insert(()=>F);if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${x?y.height/2+S/2-n/2-s:-y.height/2-S/2-n/2-s})`),t.attr("style",`color: ${C.get("stroke")??w};`)}return m.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${x?-L/2:L/2-y.height})`),$.attr("transform",`translate(0,${x?y.height/2+S/2:-y.height/2-S/2})`),p(e,E),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=x?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+S},{x:r+k/2,y:i-n/2+y.height+S},{x:r+k/2,y:i+n/2},{x:r-k/2,y:i+n/2},{x:r-k/2,y:i-n/2+y.height+S},{x:r-y.width/2,y:i-n/2+y.height+S}]:[{x:r-k/2,y:i-n/2},{x:r+k/2,y:i-n/2},{x:r+k/2,y:i-n/2+b},{x:r+y.width/2,y:i-n/2+b},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+b},{x:r-k/2,y:i-n/2+b}];return z.polygon(e,a,t)},g}async function mt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,label:m}=await u(t,e,"icon-shape default"),x=e.label?8:0,b="t"===e.pos,{nodeBorder:k,mainBkg:w}=r,{stylesMap:C}=(0,n.WW)(e),_=h.A.svg(g),v=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(v.roughness=0,v.fillStyle="solid");const S=C.get("fill");v.stroke=S??w;const T=g.append("g");e.icon&&T.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const A=T.node().getBBox(),M=A.width,B=A.height,L=A.x,F=A.y,$=Math.max(M,B)*Math.SQRT2+40,E=_.circle(0,0,$,v),D=Math.max($,y.width),O=$+y.height+x,R=_.rectangle(-D/2,-O/2,D,O,{...v,fill:"transparent",stroke:"none"}),K=g.insert(()=>E,":first-child"),I=g.insert(()=>R);return T.attr("transform",`translate(${-M/2-L},${b?y.height/2+x/2-B/2-F:-y.height/2-x/2-B/2-F})`),T.attr("style",`color: ${C.get("stroke")??k};`),m.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-O/2:O/2-y.height})`),K.attr("transform",`translate(0,${b?y.height/2+x/2:-y.height/2-x/2})`),p(e,I),e.intersect=function(t){l.Rm.info("iconSquare intersect",e,t);return z.rect(e,t)},g}async function xt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,halfPadding:m,label:x}=await u(t,e,"icon-shape default"),b="t"===e.pos,k=d+2*m,w=d+2*m,{nodeBorder:_,mainBkg:v}=r,{stylesMap:S}=(0,n.WW)(e),T=-w/2,A=-k/2,M=e.label?8:0,B=h.A.svg(g),L=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(L.roughness=0,L.fillStyle="solid");const F=S.get("fill");L.stroke=F??v;const $=B.path(C(T,A,w,k,5),L),E=Math.max(w,y.width),D=k+y.height+M,O=B.rectangle(-E/2,-D/2,E,D,{...L,fill:"transparent",stroke:"none"}),R=g.insert(()=>$,":first-child").attr("class","icon-shape2"),K=g.insert(()=>O);if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${b?y.height/2+M/2-n/2-s:-y.height/2-M/2-n/2-s})`),t.attr("style",`color: ${S.get("stroke")??_};`)}return x.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-D/2:D/2-y.height})`),R.attr("transform",`translate(0,${b?y.height/2+M/2:-y.height/2-M/2})`),p(e,K),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+M},{x:r+w/2,y:i-n/2+y.height+M},{x:r+w/2,y:i+n/2},{x:r-w/2,y:i+n/2},{x:r-w/2,y:i-n/2+y.height+M},{x:r-y.width/2,y:i-n/2+y.height+M}]:[{x:r-w/2,y:i-n/2},{x:r+w/2,y:i-n/2},{x:r+w/2,y:i-n/2+k},{x:r+y.width/2,y:i-n/2+k},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+k},{x:r-w/2,y:i-n/2+k}];return z.polygon(e,a,t)},g}async function bt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,halfPadding:m,label:x}=await u(t,e,"icon-shape default"),b="t"===e.pos,k=d+2*m,w=d+2*m,{nodeBorder:_,mainBkg:v}=r,{stylesMap:S}=(0,n.WW)(e),T=-w/2,A=-k/2,M=e.label?8:0,B=h.A.svg(g),L=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(L.roughness=0,L.fillStyle="solid");const F=S.get("fill");L.stroke=F??v;const $=B.path(C(T,A,w,k,.1),L),E=Math.max(w,y.width),D=k+y.height+M,O=B.rectangle(-E/2,-D/2,E,D,{...L,fill:"transparent",stroke:"none"}),R=g.insert(()=>$,":first-child"),K=g.insert(()=>O);if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${b?y.height/2+M/2-n/2-s:-y.height/2-M/2-n/2-s})`),t.attr("style",`color: ${S.get("stroke")??_};`)}return x.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-D/2:D/2-y.height})`),R.attr("transform",`translate(0,${b?y.height/2+M/2:-y.height/2-M/2})`),p(e,K),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+M},{x:r+w/2,y:i-n/2+y.height+M},{x:r+w/2,y:i+n/2},{x:r-w/2,y:i+n/2},{x:r-w/2,y:i-n/2+y.height+M},{x:r-y.width/2,y:i-n/2+y.height+M}]:[{x:r-w/2,y:i-n/2},{x:r+w/2,y:i-n/2},{x:r+w/2,y:i-n/2+k},{x:r+y.width/2,y:i-n/2+k},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+k},{x:r-w/2,y:i-n/2+k}];return z.polygon(e,a,t)},g}async function kt(t,e,{config:{flowchart:r}}){const i=new Image;i.src=e?.img??"",await i.decode();const a=Number(i.naturalWidth.toString().replace("px","")),o=Number(i.naturalHeight.toString().replace("px",""));e.imageAspectRatio=a/o;const{labelStyles:s}=(0,n.GX)(e);e.labelStyle=s;const c=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;const d=Math.max(e.label?c??0:0,e?.assetWidth??a),f="on"===e.constraint&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:d,g="on"===e.constraint?f/e.imageAspectRatio:e?.assetHeight??o;e.width=Math.max(f,c??0);const{shapeSvg:y,bbox:m,label:x}=await u(t,e,"image-shape default"),b="t"===e.pos,k=-f/2,w=-g/2,C=e.label?8:0,_=h.A.svg(y),v=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(v.roughness=0,v.fillStyle="solid");const S=_.rectangle(k,w,f,g,v),T=Math.max(f,m.width),A=g+m.height+C,M=_.rectangle(-T/2,-A/2,T,A,{...v,fill:"none",stroke:"none"}),B=y.insert(()=>S,":first-child"),L=y.insert(()=>M);if(e.img){const t=y.append("image");t.attr("href",e.img),t.attr("width",f),t.attr("height",g),t.attr("preserveAspectRatio","none"),t.attr("transform",`translate(${-f/2},${b?A/2-g:-A/2})`)}return x.attr("transform",`translate(${-m.width/2-(m.x-(m.left??0))},${b?-g/2-m.height/2-C/2:g/2-m.height/2+C/2})`),B.attr("transform",`translate(0,${b?m.height/2+C/2:-m.height/2-C/2})`),p(e,L),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-m.width/2,y:i-n/2},{x:r+m.width/2,y:i-n/2},{x:r+m.width/2,y:i-n/2+m.height+C},{x:r+f/2,y:i-n/2+m.height+C},{x:r+f/2,y:i+n/2},{x:r-f/2,y:i+n/2},{x:r-f/2,y:i-n/2+m.height+C},{x:r-m.width/2,y:i-n/2+m.height+C}]:[{x:r-f/2,y:i-n/2},{x:r+f/2,y:i-n/2},{x:r+f/2,y:i-n/2+g},{x:r+m.width/2,y:i-n/2+g},{x:r+m.width/2/2,y:i+n/2},{x:r-m.width/2,y:i+n/2},{x:r-m.width/2,y:i-n/2+g},{x:r-f/2,y:i-n/2+g}];return z.polygon(e,a,t)},y}async function wt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return z.polygon(e,c,t)},a}async function Ct(t,e,r){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{shapeSvg:s,bbox:l}=await u(t,e,f(e)),c=Math.max(l.width+2*r.labelPaddingX,e?.width||0),d=Math.max(l.height+2*r.labelPaddingY,e?.height||0),g=-c/2,y=-d/2;let m,{rx:x,ry:b}=e;const{cssStyles:k}=e;if(r?.rx&&r.ry&&(x=r.rx,b=r.ry),"handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=x||b?t.path(C(g,y,c,d,x||0),r):t.rectangle(g,y,c,d,r);m=s.insert(()=>i,":first-child"),m.attr("class","basic label-container").attr("style",(0,o.KL)(k))}else m=s.insert("rect",":first-child"),m.attr("class","basic label-container").attr("style",a).attr("rx",(0,o.KL)(x)).attr("ry",(0,o.KL)(b)).attr("x",g).attr("y",y).attr("width",c).attr("height",d);return p(e,m),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return z.rect(e,t)},s}async function _t(t,e){const{shapeSvg:r,bbox:i,label:n}=await u(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),n.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${-i.height/2-(i.y-(i.top??0))})`),p(e,a),e.intersect=function(t){return z.rect(e,t)},r}async function vt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+(e.padding??0),e?.width??0),l=Math.max(o.height+(e.padding??0),e?.height??0),c=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-3*l/6,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return z.polygon(e,c,t)},a}async function St(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+(e.padding??0),e?.width??0),l=Math.max(o.height+(e.padding??0),e?.height??0),c=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return z.polygon(e,c,t)},a}function Tt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.label="",e.labelStyle=r;const a=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:o}=e,s=Math.max(35,e?.width??0),c=Math.max(35,e?.height??0),u=[{x:s,y:0},{x:0,y:c+3.5},{x:s-14,y:c+3.5},{x:0,y:2*c},{x:s,y:c-3.5},{x:14,y:c-3.5}],d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=g(u),x=d.path(m,y),b=a.insert(()=>x,":first-child");return o&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",o),i&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",i),b.attr("transform",`translate(-${s/2},${-c})`),p(e,b),e.intersect=function(t){l.Rm.info("lightningBolt intersect",e,t);return z.polygon(e,u,t)},a}(0,l.K2)(st,"cylinder"),(0,l.K2)(lt,"dividedRectangle"),(0,l.K2)(ct,"doublecircle"),(0,l.K2)(ht,"filledCircle"),(0,l.K2)(ut,"flippedTriangle"),(0,l.K2)(dt,"forkJoin"),(0,l.K2)(pt,"halfRoundedRectangle"),(0,l.K2)(ft,"hexagon"),(0,l.K2)(gt,"hourglass"),(0,l.K2)(yt,"icon"),(0,l.K2)(mt,"iconCircle"),(0,l.K2)(xt,"iconRounded"),(0,l.K2)(bt,"iconSquare"),(0,l.K2)(kt,"imageSquare"),(0,l.K2)(wt,"inv_trapezoid"),(0,l.K2)(Ct,"drawRect"),(0,l.K2)(_t,"labelRect"),(0,l.K2)(vt,"lean_left"),(0,l.K2)(St,"lean_right"),(0,l.K2)(Tt,"lightningBolt");var At=(0,l.K2)((t,e,r,i,n,a,o)=>[`M${t},${e+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i,`M${t},${e+a+o}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),Mt=(0,l.K2)((t,e,r,i,n,a,o)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i,`M${t},${e+a+o}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),Bt=(0,l.K2)((t,e,r,i,n,a)=>[`M${t-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function Lt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=Math.max(s.width+(e.padding??0),e.width??0),d=c/2,g=d/(2.5+c/50),y=Math.max(s.height+g+(e.padding??0),e.height??0),m=.1*y;let x;const{cssStyles:b}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=Mt(0,0,c,y,d,g,m),i=Bt(0,g,c,y,d,g),o=(0,n.Fr)(e,{}),s=t.path(r,o),l=t.path(i,o);a.insert(()=>l,":first-child").attr("class","line"),x=a.insert(()=>s,":first-child"),x.attr("class","basic label-container"),b&&x.attr("style",b)}else{const t=At(0,0,c,y,d,g,m);x=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(b)).attr("style",i)}return x.attr("label-offset-y",g),x.attr("transform",`translate(${-c/2}, ${-(y/2+g)})`),p(e,x),l.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))}, ${-s.height/2+g-(s.y-(s.top??0))})`),e.intersect=function(t){const r=z.rect(e,t),i=r.x-(e.x??0);if(0!=d&&(Math.abs(i)<(e.width??0)/2||Math.abs(i)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-g)){let n=g*g*(1-i*i/(d*d));n>0&&(n=Math.sqrt(n)),n=g-n,t.y-(e.y??0)>0&&(n=-n),r.y+=n}return r},a}async function Ft(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,g=c+d,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:-l/2-l/2*.1,y:-g/2},{x:-l/2-l/2*.1,y:g/2},...y(-l/2-l/2*.1,g/2,l/2+l/2*.1,g/2,d,.8),{x:l/2+l/2*.1,y:-g/2},{x:-l/2-l/2*.1,y:-g/2},{x:-l/2,y:-g/2},{x:-l/2,y:g/2*1.1},{x:-l/2,y:-g/2}],w=x.polygon(k.map(t=>[t.x,t.y]),b),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return z.polygon(e,k,t)},a}async function $t(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,y=-c/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{}),k=[{x:d-5,y:y+5},{x:d-5,y:y+c+5},{x:d+l-5,y:y+c+5},{x:d+l-5,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y+c-5},{x:d+l+5,y:y+c-5},{x:d+l+5,y:y-5},{x:d+5,y:y-5},{x:d+5,y:y},{x:d,y:y},{x:d,y:y+5}],w=[{x:d,y:y+5},{x:d+l-5,y:y+5},{x:d+l-5,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y},{x:d,y:y}];"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const C=g(k),_=x.path(C,b),v=g(w),S=x.path(v,{...b,fill:"none"}),T=a.insert(()=>S,":first-child");return T.insert(()=>_,":first-child"),T.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),s.attr("transform",`translate(${-o.width/2-5-(o.x-(o.left??0))}, ${-o.height/2+5-(o.y-(o.top??0))})`),p(e,T),e.intersect=function(t){return z.polygon(e,k,t)},a}async function Et(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,m=c+d,x=-l/2,b=-m/2,{cssStyles:k}=e,w=y(x-5,b+m+5,x+l-5,b+m+5,d,.8),C=w?.[w.length-1],_=[{x:x-5,y:b+5},{x:x-5,y:b+m+5},...w,{x:x+l-5,y:C.y-5},{x:x+l,y:C.y-5},{x:x+l,y:C.y-10},{x:x+l+5,y:C.y-10},{x:x+l+5,y:b-5},{x:x+5,y:b-5},{x:x+5,y:b},{x:x,y:b},{x:x,y:b+5}],v=[{x:x,y:b+5},{x:x+l-5,y:b+5},{x:x+l-5,y:C.y-5},{x:x+l,y:C.y-5},{x:x+l,y:b},{x:x,y:b}],S=h.A.svg(a),T=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(T.roughness=0,T.fillStyle="solid");const A=g(_),M=S.path(A,T),B=g(v),L=S.path(B,T),F=a.insert(()=>M,":first-child");return F.insert(()=>L),F.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-o.width/2-5-(o.x-(o.left??0))}, ${-o.height/2+5-d/2-(o.y-(o.top??0))})`),p(e,F),e.intersect=function(t){return z.polygon(e,_,t)},a}async function Dt(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;e.useHtmlLabels||!1!==(0,s.zj)().flowchart?.htmlLabels||(e.centerLabel=!0);const{shapeSvg:o,bbox:l,label:c}=await u(t,e,f(e)),d=Math.max(l.width+2*(e.padding??0),e?.width??0),g=Math.max(l.height+2*(e.padding??0),e?.height??0),y=-d/2,m=-g/2,{cssStyles:x}=e,b=h.A.svg(o),k=(0,n.Fr)(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=b.rectangle(y,m,d,g,k),C=o.insert(()=>w,":first-child");return C.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",x),a&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",a),c.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-l.height/2-(l.y-(l.top??0))})`),p(e,C),e.intersect=function(t){return z.rect(e,t)},o}(0,l.K2)(Lt,"linedCylinder"),(0,l.K2)(Ft,"linedWaveEdgedRect"),(0,l.K2)($t,"multiRect"),(0,l.K2)(Et,"multiWaveEdgedRectangle"),(0,l.K2)(Dt,"note");var Ot=(0,l.K2)((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");async function Rt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding+(o.height+e.padding),l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];let c;const{cssStyles:d}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=Ot(0,0,s),o=t.path(i,r);c=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2+.5}, ${s/2})`),d&&c.attr("style",d)}else c=H(a,s,s,l),c.attr("transform",`translate(${-s/2+.5}, ${s/2})`);return i&&c.attr("style",i),p(e,c),e.calcIntersect=function(t,e){const r=t.width,i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],n=z.polygon(t,i,e);return{x:n.x-.5,y:n.y-.5}},e.intersect=function(t){return this.calcIntersect(e,t)},a}async function Kt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=-Math.max(o.width+(e.padding??0),e?.width??0)/2,c=-Math.max(o.height+(e.padding??0),e?.height??0)/2,d=c/2,y=[{x:l+d,y:c},{x:l,y:0},{x:l+d,y:-c},{x:-l,y:-c},{x:-l,y:c}],{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=g(y),w=x.path(k,b),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-o.width/2-(o.x-(o.left??0))}, ${-o.height/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return z.polygon(e,y,t)},a}async function It(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);let a;e.labelStyle=r,a=e.cssClasses?"node "+e.cssClasses:"node default";const o=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=o.insert("g"),d=o.insert("g").attr("class","label").attr("style",i),f=e.description,g=e.label,y=d.node().appendChild(await w(g,e.labelStyle,!0,!0));let m={width:0,height:0};if((0,s._3)((0,s.D7)()?.flowchart?.htmlLabels)){const t=y.children[0],e=(0,c.Ltv)(y);m=t.getBoundingClientRect(),e.attr("width",m.width),e.attr("height",m.height)}l.Rm.info("Text 2",f);const x=f||[],b=y.getBBox(),k=d.node().appendChild(await w(x.join?x.join("
    "):x,e.labelStyle,!0,!0)),_=k.children[0],v=(0,c.Ltv)(k);m=_.getBoundingClientRect(),v.attr("width",m.width),v.attr("height",m.height);const S=(e.padding||0)/2;(0,c.Ltv)(k).attr("transform","translate( "+(m.width>b.width?0:(b.width-m.width)/2)+", "+(b.height+S+5)+")"),(0,c.Ltv)(y).attr("transform","translate( "+(m.width(l.Rm.debug("Rough node insert CXC",i),a),":first-child"),L=o.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child")}else L=u.insert("rect",":first-child"),F=u.insert("line"),L.attr("class","outer title-state").attr("style",i).attr("x",-m.width/2-S).attr("y",-m.height/2-S).attr("width",m.width+(e.padding||0)).attr("height",m.height+(e.padding||0)),F.attr("class","divider").attr("x1",-m.width/2-S).attr("x2",m.width/2+S).attr("y1",-m.height/2-S+b.height+S).attr("y2",-m.height/2-S+b.height+S);return p(e,L),e.intersect=function(t){return z.rect(e,t)},o}function Nt(t,e,r,i,n,a,o){const s=(t+r)/2,l=(e+i)/2,c=Math.atan2(i-e,r-t),h=(r-t)/2/n,u=(i-e)/2/a,d=Math.sqrt(h**2+u**2);if(d>1)throw new Error("The given radii are too small to create an arc between the points.");const p=Math.sqrt(1-d**2),f=s+p*a*Math.sin(c)*(o?-1:1),g=l-p*n*Math.cos(c)*(o?-1:1),y=Math.atan2((e-g)/a,(t-f)/n);let m=Math.atan2((i-g)/a,(r-f)/n)-y;o&&m<0&&(m+=2*Math.PI),!o&&m>0&&(m-=2*Math.PI);const x=[];for(let b=0;b<20;b++){const t=y+b/19*m,e=f+n*Math.cos(t),r=g+a*Math.sin(t);x.push({x:e,y:r})}return x}async function Pt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=e?.padding??0,l=e?.padding??0,c=(e?.width?e?.width:o.width)+2*s,d=(e?.height?e?.height:o.height)+2*l,y=e.radius||5,m=e.taper||5,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});e.stroke&&(k.stroke=e.stroke),"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:-c/2+m,y:-d/2},{x:c/2-m,y:-d/2},...Nt(c/2-m,-d/2,c/2,-d/2+m,y,y,!0),{x:c/2,y:-d/2+m},{x:c/2,y:d/2-m},...Nt(c/2,d/2-m,c/2-m,d/2,y,y,!0),{x:c/2-m,y:d/2},{x:-c/2+m,y:d/2},...Nt(-c/2+m,d/2,-c/2,d/2-m,y,y,!0),{x:-c/2,y:d/2-m},{x:-c/2,y:-d/2+m},...Nt(-c/2,-d/2+m,-c/2+m,-d/2,y,y,!0)],C=g(w),_=b.path(C,k),v=a.insert(()=>_,":first-child");return v.attr("class","basic label-container outer-path"),x&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",i),p(e,v),e.intersect=function(t){return z.polygon(e,w,t)},a}async function zt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=e?.padding??0,d=Math.max(s.width+2*(e.padding??0),e?.width??0),g=Math.max(s.height+2*(e.padding??0),e?.height??0),y=-s.width/2-c,m=-s.height/2-c,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:y,y:m},{x:y+d+8,y:m},{x:y+d+8,y:m+g},{x:y-8,y:m+g},{x:y-8,y:m},{x:y,y:m},{x:y,y:m+g}],C=b.polygon(w.map(t=>[t.x,t.y]),k),_=a.insert(()=>C,":first-child");return _.attr("class","basic label-container").attr("style",(0,o.KL)(x)),i&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",i),x&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",i),l.attr("transform",`translate(${-d/2+4+(e.padding??0)-(s.x-(s.left??0))},${-g/2+(e.padding??0)-(s.y-(s.top??0))})`),p(e,_),e.intersect=function(t){return z.rect(e,t)},a}async function qt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,y=-c/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:d,y:y},{x:d,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y-c/2}],w=g(k),C=x.path(w,b),_=a.insert(()=>C,":first-child");return _.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",m),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),_.attr("transform",`translate(0, ${c/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))}, ${-c/4+(e.padding??0)-(o.y-(o.top??0))})`),p(e,_),e.intersect=function(t){return z.polygon(e,k,t)},a}async function jt(t,e){return Ct(t,e,{rx:0,ry:0,classes:"",labelPaddingX:e.labelPaddingX??2*(e?.padding||0),labelPaddingY:1*(e?.padding||0)})}async function Wt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+e.padding,l=o.width+s/4+e.padding,c=s/2,{cssStyles:d}=e,y=h.A.svg(a),x=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=[{x:-l/2+c,y:-s/2},{x:l/2-c,y:-s/2},...m(-l/2+c,0,c,50,90,270),{x:l/2-c,y:s/2},...m(l/2-c,0,c,50,270,450)],k=g(b),w=y.path(k,x),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container outer-path"),d&&"handDrawn"!==e.look&&C.selectChildren("path").attr("style",d),i&&"handDrawn"!==e.look&&C.selectChildren("path").attr("style",i),p(e,C),e.intersect=function(t){return z.polygon(e,b,t)},a}async function Ht(t,e){return Ct(t,e,{rx:5,ry:5,classes:"flowchart-node"})}function Ut(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{cssStyles:o}=e,{lineColor:s,stateBorder:l,nodeBorder:c}=r,u=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),d=h.A.svg(u),f=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(f.roughness=0,f.fillStyle="solid");const g=d.circle(0,0,14,{...f,stroke:s,strokeWidth:2}),y=l??c,m=d.circle(0,0,5,{...f,fill:y,stroke:y,strokeWidth:2,fillStyle:"solid"}),x=u.insert(()=>g,":first-child");return x.insert(()=>m),o&&x.selectAll("path").attr("style",o),a&&x.selectAll("path").attr("style",a),p(e,x),e.intersect=function(t){return z.circle(e,7,t)},u}function Yt(t,e,{config:{themeVariables:r}}){const{lineColor:i}=r,a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let o;if("handDrawn"===e.look){const t=h.A.svg(a).circle(0,0,14,(0,n.ue)(i));o=a.insert(()=>t),o.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else o=a.insert("circle",":first-child"),o.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return p(e,o),e.intersect=function(t){return z.circle(e,7,t)},a}async function Gt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s}=await u(t,e,f(e)),l=(e?.padding||0)/2,c=s.width+e.padding,d=s.height+e.padding,g=-s.width/2-l,y=-s.height/2-l,m=[{x:0,y:0},{x:c,y:0},{x:c,y:-d},{x:0,y:-d},{x:0,y:0},{x:-8,y:0},{x:c+8,y:0},{x:c+8,y:-d},{x:-8,y:-d},{x:-8,y:0}];if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.rectangle(g-8,y,c+16,d,r),s=t.line(g,y,g,y+d,r),l=t.line(g+c,y,g+c,y+d,r);a.insert(()=>s,":first-child"),a.insert(()=>l,":first-child");const u=a.insert(()=>i,":first-child"),{cssStyles:f}=e;u.attr("class","basic label-container").attr("style",(0,o.KL)(f)),p(e,u)}else{const t=H(a,c,d,m);i&&t.attr("style",i),p(e,t)}return e.intersect=function(t){return z.polygon(e,m,t)},a}async function Xt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=-s/2,d=-l/2,y=.2*l,m=.2*l,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{}),w=[{x:c-y/2,y:d},{x:c+s+y/2,y:d},{x:c+s+y/2,y:d+l},{x:c-y/2,y:d+l}],C=[{x:c+s-y/2,y:d+l},{x:c+s+y/2,y:d+l},{x:c+s+y/2,y:d+l-m}];"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const _=g(w),v=b.path(_,k),S=g(C),T=b.path(S,{...k,fillStyle:"solid"}),A=a.insert(()=>T,":first-child");return A.insert(()=>v,":first-child"),A.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&A.selectAll("path").attr("style",x),i&&"handDrawn"!==e.look&&A.selectAll("path").attr("style",i),p(e,A),e.intersect=function(t){return z.polygon(e,w,t)},a}async function Vt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,m=.2*l,x=.2*c,b=c+d,{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-l/2-l/2*.1,y:b/2},...y(-l/2-l/2*.1,b/2,l/2+l/2*.1,b/2,d,.8),{x:l/2+l/2*.1,y:-b/2},{x:-l/2-l/2*.1,y:-b/2}],v=-l/2+l/2*.1,S=-b/2-.4*x,T=[{x:v+l-m,y:1.4*(S+c)},{x:v+l,y:S+c-x},{x:v+l,y:.9*(S+c)},...y(v+l,1.3*(S+c),v+l-m,1.5*(S+c),.03*-c,.5)],A=g(_),M=w.path(A,C),B=g(T),L=w.path(B,{...C,fillStyle:"solid"}),F=a.insert(()=>L,":first-child");return F.insert(()=>M,":first-child"),F.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d/2-(o.y-(o.top??0))})`),p(e,F),e.intersect=function(t){return z.polygon(e,_,t)},a}async function Zt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+e.padding,e?.width||0),l=Math.max(o.height+e.padding,e?.height||0),c=-s/2,h=-l/2,d=a.insert("rect",":first-child");return d.attr("class","text").attr("style",i).attr("rx",0).attr("ry",0).attr("x",c).attr("y",h).attr("width",s).attr("height",l),p(e,d),e.intersect=function(t){return z.rect(e,t)},a}(0,l.K2)(Rt,"question"),(0,l.K2)(Kt,"rect_left_inv_arrow"),(0,l.K2)(It,"rectWithTitle"),(0,l.K2)(Nt,"generateArcPoints"),(0,l.K2)(Pt,"roundedRect"),(0,l.K2)(zt,"shadedProcess"),(0,l.K2)(qt,"slopedRect"),(0,l.K2)(jt,"squareRect"),(0,l.K2)(Wt,"stadium"),(0,l.K2)(Ht,"state"),(0,l.K2)(Ut,"stateEnd"),(0,l.K2)(Yt,"stateStart"),(0,l.K2)(Gt,"subroutine"),(0,l.K2)(Xt,"taggedRect"),(0,l.K2)(Vt,"taggedWaveEdgedRectangle"),(0,l.K2)(Zt,"text");var Qt=(0,l.K2)((t,e,r,i,n,a)=>`M${t},${e}\n a${n},${a} 0,0,1 0,${-i}\n l${r},0\n a${n},${a} 0,0,1 0,${i}\n M${r},${-i}\n a${n},${a} 0,0,0 0,${i}\n l${-r},0`,"createCylinderPathD"),Jt=(0,l.K2)((t,e,r,i,n,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${n},${a} 0,0,0 0,${-i}`,`l${-r},0`,`a${n},${a} 0,0,0 0,${i}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),te=(0,l.K2)((t,e,r,i,n,a)=>[`M${t+r/2},${-i/2}`,`a${n},${a} 0,0,0 0,${i}`].join(" "),"createInnerCylinderPathD");async function ee(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l,halfPadding:c}=await u(t,e,f(e)),d="neo"===e.look?2*c:c,g=s.height+d,y=g/2,m=y/(2.5+g/50),x=s.width+m+d,{cssStyles:b}=e;let k;if("handDrawn"===e.look){const t=h.A.svg(a),r=Jt(0,0,x,g,m,y),i=te(0,0,x,g,m,y),o=t.path(r,(0,n.Fr)(e,{})),s=t.path(i,(0,n.Fr)(e,{fill:"none"}));k=a.insert(()=>s,":first-child"),k=a.insert(()=>o,":first-child"),k.attr("class","basic label-container"),b&&k.attr("style",b)}else{const t=Qt(0,0,x,g,m,y);k=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(b)).attr("style",i),k.attr("class","basic label-container"),b&&k.selectAll("path").attr("style",b),i&&k.selectAll("path").attr("style",i)}return k.attr("label-offset-x",m),k.attr("transform",`translate(${-x/2}, ${g/2} )`),l.attr("transform",`translate(${-s.width/2-m-(s.x-(s.left??0))}, ${-s.height/2-(s.y-(s.top??0))})`),p(e,k),e.intersect=function(t){const r=z.rect(e,t),i=r.y-(e.y??0);if(0!=y&&(Math.abs(i)<(e.height??0)/2||Math.abs(i)==(e.height??0)/2&&Math.abs(r.x-(e.x??0))>(e.width??0)/2-m)){let n=m*m*(1-i*i/(y*y));0!=n&&(n=Math.sqrt(Math.abs(n))),n=m-n,t.x-(e.x??0)>0&&(n=-n),r.x+=n}return r},a}async function re(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding,l=o.height+e.padding,c=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return z.polygon(e,c,t)},a}async function ie(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(60,o.width+2*(e.padding??0),e?.width??0),l=Math.max(20,o.height+2*(e.padding??0),e?.height??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=[{x:-s/2*.8,y:-l/2},{x:s/2*.8,y:-l/2},{x:s/2,y:-l/2*.6},{x:s/2,y:l/2},{x:-s/2,y:l/2},{x:-s/2,y:-l/2*.6}],x=g(m),b=d.path(x,y),k=a.insert(()=>b,":first-child");return k.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",i),p(e,k),e.intersect=function(t){return z.polygon(e,m,t)},a}async function ne(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:c}=await u(t,e,f(e)),d=(0,s._3)((0,s.D7)().flowchart?.htmlLabels),y=o.width+(e.padding??0),m=y+o.height,x=y+o.height,b=[{x:0,y:0},{x:x,y:0},{x:x/2,y:-m}],{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=g(b),v=w.path(_,C),S=a.insert(()=>v,":first-child").attr("transform",`translate(${-m/2}, ${m/2})`);return k&&"handDrawn"!==e.look&&S.selectChildren("path").attr("style",k),i&&"handDrawn"!==e.look&&S.selectChildren("path").attr("style",i),e.width=y,e.height=m,p(e,S),c.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))}, ${m/2-(o.height+(e.padding??0)/(d?2:1)-(o.y-(o.top??0)))})`),e.intersect=function(t){return l.Rm.info("Triangle intersect",e,b,t),z.polygon(e,b,t)},a}async function ae(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/8,m=c+d,{cssStyles:x}=e,b=70-l,k=b>0?b/2:0,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-l/2-k,y:m/2},...y(-l/2-k,m/2,l/2+k,m/2,d,.8),{x:l/2+k,y:-m/2},{x:-l/2-k,y:-m/2}],v=g(_),S=w.path(v,C),T=a.insert(()=>S,":first-child");return T.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",x),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),T.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d-(o.y-(o.top??0))})`),p(e,T),e.intersect=function(t){return z.polygon(e,_,t)},a}async function oe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=s/l;let d=s,m=l;d>m*c?m=d/c:d=m*c,d=Math.max(d,100),m=Math.max(m,50);const x=Math.min(.2*m,m/4),b=m+2*x,{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-d/2,y:b/2},...y(-d/2,b/2,d/2,b/2,x,1),{x:d/2,y:-b/2},...y(d/2,-b/2,-d/2,-b/2,x,-1)],v=g(_),S=w.path(v,C),T=a.insert(()=>S,":first-child");return T.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),p(e,T),e.intersect=function(t){return z.polygon(e,_,t)},a}async function se(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,g=-c/2,{cssStyles:y}=e,m=h.A.svg(a),x=(0,n.Fr)(e,{}),b=[{x:d-5,y:g-5},{x:d-5,y:g+c},{x:d+l,y:g+c},{x:d+l,y:g-5}],k=`M${d-5},${g-5} L${d+l},${g-5} L${d+l},${g+c} L${d-5},${g+c} L${d-5},${g-5}\n M${d-5},${g} L${d+l},${g}\n M${d},${g-5} L${d},${g+c}`;"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const w=m.path(k,x),C=a.insert(()=>w,":first-child");return C.attr("transform","translate(2.5, 2.5)"),C.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),s.attr("transform",`translate(${-o.width/2+2.5-(o.x-(o.left??0))}, ${-o.height/2+2.5-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return z.polygon(e,b,t)},a}async function le(t,e){const r=e;if(r.alias&&(e.label=r.alias),"handDrawn"===e.look){const{themeVariables:r}=(0,s.zj)(),{background:i}=r,n={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${i}`]};await le(t,n)}const i=(0,s.zj)();e.useHtmlLabels=i.htmlLabels;let a=i.er?.diagramPadding??10,l=i.er?.entityPadding??6;const{cssStyles:u}=e,{labelStyles:d,nodeStyles:g}=(0,n.GX)(e);if(0===r.attributes.length&&e.label){const r={rx:0,ry:0,labelPaddingX:a,labelPaddingY:1.5*a,classes:""};(0,o.Un)(e.label,i)+2*r.labelPaddingX0){const t=x.width+2*a-(C+_+v+S);C+=t/M,_+=t/M,v>0&&(v+=t/M),S>0&&(S+=t/M)}const L=C+_+v+S,F=h.A.svg(m),$=(0,n.Fr)(e,{});"handDrawn"!==e.look&&($.roughness=0,$.fillStyle="solid");let E=0;w.length>0&&(E=w.reduce((t,e)=>t+(e?.rowHeight??0),0));const D=Math.max(B.width+2*a,e?.width||0,L),O=Math.max((E??0)+x.height,e?.height||0),R=-D/2,K=-O/2;m.selectAll("g:not(:first-child)").each((t,e,r)=>{const i=(0,c.Ltv)(r[e]),n=i.attr("transform");let o=0,s=0;if(n){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(n);t&&(o=parseFloat(t[1]),s=parseFloat(t[2]),i.attr("class").includes("attribute-name")?o+=C:i.attr("class").includes("attribute-keys")?o+=C+_:i.attr("class").includes("attribute-comment")&&(o+=C+_+v))}i.attr("transform",`translate(${R+a/2+o}, ${s+K+x.height+l/2})`)}),m.select(".name").attr("transform","translate("+-x.width/2+", "+(K+l/2)+")");const I=F.rectangle(R,K,D,O,$),N=m.insert(()=>I,":first-child").attr("style",u.join("")),{themeVariables:P}=(0,s.zj)(),{rowEven:q,rowOdd:j,nodeBorder:W}=P;k.push(0);for(const[n,o]of w.entries()){const t=(n+1)%2==0&&0!==o.yOffset,e=F.rectangle(R,x.height+K+o?.yOffset,D,o?.rowHeight,{...$,fill:t?q:j,stroke:W});m.insert(()=>e,"g.label").attr("style",u.join("")).attr("class","row-rect-"+(t?"even":"odd"))}let H=F.line(R,x.height+K,D+R,x.height+K,$);m.insert(()=>H).attr("class","divider"),H=F.line(C+R,x.height+K,C+R,O+K,$),m.insert(()=>H).attr("class","divider"),T&&(H=F.line(C+_+R,x.height+K,C+_+R,O+K,$),m.insert(()=>H).attr("class","divider")),A&&(H=F.line(C+_+v+R,x.height+K,C+_+v+R,O+K,$),m.insert(()=>H).attr("class","divider"));for(const n of k)H=F.line(R,x.height+K+n,D+R,x.height+K+n,$),m.insert(()=>H).attr("class","divider");if(p(e,N),g&&"handDrawn"!==e.look){const t=g.split(";"),e=t?.filter(t=>t.includes("stroke"))?.map(t=>`${t}`).join("; ");m.selectAll("path").attr("style",e??""),m.selectAll(".row-rect-even path").attr("style",g)}return e.intersect=function(t){return z.rect(e,t)},m}async function ce(t,e,r,i=0,n=0,l=[],h=""){const u=t.insert("g").attr("class",`label ${l.join(" ")}`).attr("transform",`translate(${i}, ${n})`).attr("style",h);e!==(0,s.QO)(e)&&(e=(e=(0,s.QO)(e)).replaceAll("<","<").replaceAll(">",">"));const d=u.node().appendChild(await(0,a.GZ)(u,e,{width:(0,o.Un)(e,r)+100,style:h,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let t=d.children[0];for(t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">");t.childNodes[0];)t=t.childNodes[0],t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">")}let p=d.getBBox();if((0,s._3)(r.htmlLabels)){const t=d.children[0];t.style.textAlign="start";const e=(0,c.Ltv)(d);p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return p}async function he(t,e,r,i,n=r.class.padding??12){const a=i?0:3,o=t.insert("g").attr("class",f(e)).attr("id",e.domId||e.id);let s=null,l=null,c=null,h=null,u=0,d=0,p=0;if(s=o.insert("g").attr("class","annotation-group text"),e.annotations.length>0){const t=e.annotations[0];await ue(s,{text:`\xab${t}\xbb`},0);u=s.node().getBBox().height}l=o.insert("g").attr("class","label-group text"),await ue(l,e,0,["font-weight: bolder"]);const g=l.node().getBBox();d=g.height,c=o.insert("g").attr("class","members-group text");let y=0;for(const f of e.members){y+=await ue(c,f,y,[f.parseClassifier()])+a}p=c.node().getBBox().height,p<=0&&(p=n/2),h=o.insert("g").attr("class","methods-group text");let m=0;for(const f of e.methods){m+=await ue(h,f,m,[f.parseClassifier()])+a}let x=o.node().getBBox();if(null!==s){const t=s.node().getBBox();s.attr("transform",`translate(${-t.width/2})`)}return l.attr("transform",`translate(${-g.width/2}, ${u})`),x=o.node().getBBox(),c.attr("transform",`translate(0, ${u+d+2*n})`),x=o.node().getBBox(),h.attr("transform",`translate(0, ${u+d+(p?p+4*n:2*n)})`),x=o.node().getBBox(),{shapeSvg:o,bbox:x}}async function ue(t,e,r,i=[]){const n=t.insert("g").attr("class","label").attr("style",i.join("; ")),h=(0,s.zj)();let u="useHtmlLabels"in e?e.useHtmlLabels:(0,s._3)(h.htmlLabels)??!0,d="";d="text"in e?e.text:e.label,!u&&d.startsWith("\\")&&(d=d.substring(1)),(0,s.Wi)(d)&&(u=!0);const p=await(0,a.GZ)(n,(0,s.oB)((0,o.Sm)(d)),{width:(0,o.Un)(d,h)+50,classes:"markdown-node-label",useHtmlLabels:u},h);let f,g=1;if(u){const t=p.children[0],e=(0,c.Ltv)(p);g=t.innerHTML.split("
    ").length,t.innerHTML.includes("")&&(g+=t.innerHTML.split("").length-1);const r=t.getElementsByTagName("img");if(r){const t=""===d.replace(/]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function i(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=h.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,r=5,i=parseInt(t,10)*r+"px";e.style.minWidth=i,e.style.maxWidth=i}else e.style.width="100%";r(e)}(0,l.K2)(i,"setupImage"),setTimeout(()=>{e.complete&&i()}),e.addEventListener("error",i),e.addEventListener("load",i)})))}f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}else{i.includes("font-weight: bolder")&&(0,c.Ltv)(p).selectAll("tspan").attr("font-weight",""),g=p.children.length;const t=p.children[0];if(""===p.textContent||p.textContent.includes(">")){t.textContent=d[0]+d.substring(1).replaceAll(">",">").replaceAll("<","<").trim();" "===d[1]&&(t.textContent=t.textContent[0]+" "+t.textContent.substring(1))}"undefined"===t.textContent&&(t.textContent=""),f=p.getBBox()}return n.attr("transform","translate(0,"+(-f.height/(2*g)+r)+")"),f.height}async function de(t,e){const r=(0,s.D7)(),i=r.class.padding??12,a=i,o=e.useHtmlLabels??(0,s._3)(r.htmlLabels)??!0,l=e;l.annotations=l.annotations??[],l.members=l.members??[],l.methods=l.methods??[];const{shapeSvg:u,bbox:d}=await he(t,e,r,o,a),{labelStyles:f,nodeStyles:g}=(0,n.GX)(e);e.labelStyle=f,e.cssStyles=l.styles||"";const y=l.styles?.join(";")||g||"";e.cssStyles||(e.cssStyles=y.replaceAll("!important","").split(";"));const m=0===l.members.length&&0===l.methods.length&&!r.class?.hideEmptyMembersBox,x=h.A.svg(u),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=d.width;let w=d.height;0===l.members.length&&0===l.methods.length?w+=a:l.members.length>0&&0===l.methods.length&&(w+=2*a);const C=-k/2,_=-w/2,v=x.rectangle(C-i,_-i-(m?i:0===l.members.length&&0===l.methods.length?-i/2:0),k+2*i,w+2*i+(m?2*i:0===l.members.length&&0===l.methods.length?-i:0),b),S=u.insert(()=>v,":first-child");S.attr("class","basic label-container");const T=S.node().getBBox();u.selectAll(".text").each((t,e,r)=>{const n=(0,c.Ltv)(r[e]),a=n.attr("transform");let s=0;if(a){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(a);t&&(s=parseFloat(t[2]))}let h=s+_+i-(m?i:0===l.members.length&&0===l.methods.length?-i/2:0);o||(h-=4);let d=C;(n.attr("class").includes("label-group")||n.attr("class").includes("annotation-group"))&&(d=-n.node()?.getBBox().width/2||0,u.selectAll("text").each(function(t,e,r){"middle"===window.getComputedStyle(r[e]).textAnchor&&(d=0)})),n.attr("transform",`translate(${d}, ${h})`)});const A=u.select(".annotation-group").node().getBBox().height-(m?i/2:0)||0,M=u.select(".label-group").node().getBBox().height-(m?i/2:0)||0,B=u.select(".members-group").node().getBBox().height-(m?i/2:0)||0;if(l.members.length>0||l.methods.length>0||m){const t=x.line(T.x,A+M+_+i,T.x+T.width,A+M+_+i,b);u.insert(()=>t).attr("class","divider").attr("style",y)}if(m||l.members.length>0||l.methods.length>0){const t=x.line(T.x,A+M+B+_+2*a+i,T.x+T.width,A+M+B+_+i+2*a,b);u.insert(()=>t).attr("class","divider").attr("style",y)}if("handDrawn"!==l.look&&u.selectAll("path").attr("style",y),S.select(":nth-child(2)").attr("style",y),u.selectAll(".divider").select("path").attr("style",y),e.labelStyle?u.selectAll("span").attr("style",e.labelStyle):u.selectAll("span").attr("style",y),!o){const t=RegExp(/color\s*:\s*([^;]*)/),e=t.exec(y);if(e){const t=e[0].replace("color","fill");u.selectAll("tspan").attr("style",t)}else if(f){const e=t.exec(f);if(e){const t=e[0].replace("color","fill");u.selectAll("tspan").attr("style",t)}}}return p(e,S),e.intersect=function(t){return z.rect(e,t)},u}async function pe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const a=e,o=e,s="verifyMethod"in e,l=f(e),u=t.insert("g").attr("class",l).attr("id",e.domId??e.id);let d;d=s?await fe(u,`<<${a.type}>>`,0,e.labelStyle):await fe(u,"<<Element>>",0,e.labelStyle);let g=d;const y=await fe(u,a.name,g,e.labelStyle+"; font-weight: bold;");if(g+=y+20,s){g+=await fe(u,""+(a.requirementId?`ID: ${a.requirementId}`:""),g,e.labelStyle);g+=await fe(u,""+(a.text?`Text: ${a.text}`:""),g,e.labelStyle);g+=await fe(u,""+(a.risk?`Risk: ${a.risk}`:""),g,e.labelStyle),await fe(u,""+(a.verifyMethod?`Verification: ${a.verifyMethod}`:""),g,e.labelStyle)}else{g+=await fe(u,""+(o.type?`Type: ${o.type}`:""),g,e.labelStyle),await fe(u,""+(o.docRef?`Doc Ref: ${o.docRef}`:""),g,e.labelStyle)}const m=(u.node()?.getBBox().width??200)+20,x=(u.node()?.getBBox().height??200)+20,b=-m/2,k=-x/2,w=h.A.svg(u),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=w.rectangle(b,k,m,x,C),v=u.insert(()=>_,":first-child");if(v.attr("class","basic label-container").attr("style",i),u.selectAll(".label").each((t,e,r)=>{const i=(0,c.Ltv)(r[e]),n=i.attr("transform");let a=0,o=0;if(n){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(n);t&&(a=parseFloat(t[1]),o=parseFloat(t[2]))}const s=o-x/2;let l=b+10;0!==e&&1!==e||(l=a),i.attr("transform",`translate(${l}, ${s+20})`)}),g>d+y+20){const t=w.line(b,k+d+y+20,b+m,k+d+y+20,C);u.insert(()=>t).attr("style",i)}return p(e,v),e.intersect=function(t){return z.rect(e,t)},u}async function fe(t,e,r,i=""){if(""===e)return 0;const n=t.insert("g").attr("class","label").attr("style",i),l=(0,s.D7)(),h=l.htmlLabels??!0,u=await(0,a.GZ)(n,(0,s.oB)((0,o.Sm)(e)),{width:(0,o.Un)(e,l)+50,classes:"markdown-node-label",useHtmlLabels:h,style:i},l);let d;if(h){const t=u.children[0],e=(0,c.Ltv)(u);d=t.getBoundingClientRect(),e.attr("width",d.width),e.attr("height",d.height)}else{const t=u.children[0];for(const e of t.children)e.textContent=e.textContent.replaceAll(">",">").replaceAll("<","<"),i&&e.setAttribute("style",i);d=u.getBBox(),d.height+=6}return n.attr("transform",`translate(${-d.width/2},${-d.height/2+r})`),d.height}(0,l.K2)(ee,"tiltedCylinder"),(0,l.K2)(re,"trapezoid"),(0,l.K2)(ie,"trapezoidalPentagon"),(0,l.K2)(ne,"triangle"),(0,l.K2)(ae,"waveEdgedRectangle"),(0,l.K2)(oe,"waveRectangle"),(0,l.K2)(se,"windowPane"),(0,l.K2)(le,"erBox"),(0,l.K2)(ce,"addText"),(0,l.K2)(he,"textHelper"),(0,l.K2)(ue,"addText"),(0,l.K2)(de,"classBox"),(0,l.K2)(pe,"requirementBox"),(0,l.K2)(fe,"addText");var ge=(0,l.K2)(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");async function ye(t,e,{config:r}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i||"";const o=e.width;e.width=(e.width??200)-10;const{shapeSvg:s,bbox:l,label:c}=await u(t,e,f(e)),g=e.padding||10;let y,m="";"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(m=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),y=s.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",m).attr("target","_blank"));const x={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1};let b,k;({label:b,bbox:k}=y?await d(y,"ticket"in e&&e.ticket||"",x):await d(s,"ticket"in e&&e.ticket||"",x));const{label:w,bbox:_}=await d(s,"assigned"in e&&e.assigned||"",x);e.width=o;const v=e?.width||0,S=Math.max(k.height,_.height)/2,T=Math.max(l.height+20,e?.height||0)+S,A=-v/2,M=-T/2;let B;c.attr("transform","translate("+(g-v/2)+", "+(-S-l.height/2)+")"),b.attr("transform","translate("+(g-v/2)+", "+(-S+l.height/2)+")"),w.attr("transform","translate("+(g+v/2-_.width-20)+", "+(-S+l.height/2)+")");const{rx:L,ry:F}=e,{cssStyles:$}=e;if("handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=L||F?t.path(C(A,M,v,T,L||0),r):t.rectangle(A,M,v,T,r);B=s.insert(()=>i,":first-child"),B.attr("class","basic label-container").attr("style",$||null)}else{B=s.insert("rect",":first-child"),B.attr("class","basic label-container __APA__").attr("style",a).attr("rx",L??5).attr("ry",F??5).attr("x",A).attr("y",M).attr("width",v).attr("height",T);const t="priority"in e&&e.priority;if(t){const e=s.append("line"),r=A+2,i=M+Math.floor((L??0)/2),n=M+T-Math.floor((L??0)/2);e.attr("x1",r).attr("y1",i).attr("x2",r).attr("y2",n).attr("stroke-width","4").attr("stroke",ge(t))}}return p(e,B),e.height=T,e.intersect=function(t){return z.rect(e,t)},s}async function me(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c,label:d}=await u(t,e,f(e)),g=s.width+10*c,y=s.height+8*c,m=.15*g,{cssStyles:x}=e,b=s.width+20,k=s.height+20,w=Math.max(g,b),C=Math.max(y,k);let _;d.attr("transform",`translate(${-s.width/2}, ${-s.height/2})`);const v=`M0 0 \n a${m},${m} 1 0,0 ${.25*w},${-1*C*.1}\n a${m},${m} 1 0,0 ${.25*w},0\n a${m},${m} 1 0,0 ${.25*w},0\n a${m},${m} 1 0,0 ${.25*w},${.1*C}\n\n a${m},${m} 1 0,0 ${.15*w},${.33*C}\n a${.8*m},${.8*m} 1 0,0 0,${.34*C}\n a${m},${m} 1 0,0 ${-1*w*.15},${.33*C}\n\n a${m},${m} 1 0,0 ${-1*w*.25},${.15*C}\n a${m},${m} 1 0,0 ${-1*w*.25},0\n a${m},${m} 1 0,0 ${-1*w*.25},0\n a${m},${m} 1 0,0 ${-1*w*.25},${-1*C*.15}\n\n a${m},${m} 1 0,0 ${-1*w*.1},${-1*C*.33}\n a${.8*m},${.8*m} 1 0,0 0,${-1*C*.34}\n a${m},${m} 1 0,0 ${.1*w},${-1*C*.33}\n H0 V0 Z`;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.path(v,r);_=a.insert(()=>i,":first-child"),_.attr("class","basic label-container").attr("style",(0,o.KL)(x))}else _=a.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",v);return _.attr("transform",`translate(${-w/2}, ${-C/2})`),p(e,_),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return l.Rm.info("Bang intersect",e,t),z.rect(e,t)},a}async function xe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c,label:d}=await u(t,e,f(e)),g=s.width+2*c,y=s.height+2*c,m=.15*g,x=.25*g,b=.35*g,k=.2*g,{cssStyles:w}=e;let C;const _=`M0 0 \n a${m},${m} 0 0,1 ${.25*g},${-1*g*.1}\n a${b},${b} 1 0,1 ${.4*g},${-1*g*.1}\n a${x},${x} 1 0,1 ${.35*g},${.2*g}\n\n a${m},${m} 1 0,1 ${.15*g},${.35*y}\n a${k},${k} 1 0,1 ${-1*g*.15},${.65*y}\n\n a${x},${m} 1 0,1 ${-1*g*.25},${.15*g}\n a${b},${b} 1 0,1 ${-1*g*.5},0\n a${m},${m} 1 0,1 ${-1*g*.25},${-1*g*.15}\n\n a${m},${m} 1 0,1 ${-1*g*.1},${-1*y*.35}\n a${k},${k} 1 0,1 ${.1*g},${-1*y*.65}\n H0 V0 Z`;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.path(_,r);C=a.insert(()=>i,":first-child"),C.attr("class","basic label-container").attr("style",(0,o.KL)(w))}else C=a.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",_);return d.attr("transform",`translate(${-s.width/2}, ${-s.height/2})`),C.attr("transform",`translate(${-g/2}, ${-y/2})`),p(e,C),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return l.Rm.info("Cloud intersect",e,t),z.rect(e,t)},a}async function be(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,halfPadding:s,label:l}=await u(t,e,f(e)),c=o.width+8*s,h=o.height+2*s,d=`\n M${-c/2} ${h/2-5}\n v${10-h}\n q0,-5 5,-5\n h${c-10}\n q5,0 5,5\n v${h-10}\n q0,5 -5,5\n h${10-c}\n q-5,0 -5,-5\n Z\n `,g=a.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("style",i).attr("d",d);return a.append("line").attr("class","node-line-").attr("x1",-c/2).attr("y1",h/2).attr("x2",c/2).attr("y2",h/2),l.attr("transform",`translate(${-o.width/2}, ${-o.height/2})`),a.append(()=>l.node()),p(e,g),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return z.rect(e,t)},a}async function ke(t,e){return G(t,e,{padding:e.padding??0})}(0,l.K2)(ye,"kanbanItem"),(0,l.K2)(me,"bang"),(0,l.K2)(xe,"cloud"),(0,l.K2)(be,"defaultMindmapNode"),(0,l.K2)(ke,"mindmapCircle");var we=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:jt},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Pt},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Wt},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Gt},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:st},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:G},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:me},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:xe},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Rt},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:ft},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:St},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:vt},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:re},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:wt},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:ct},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:Zt},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:U},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:zt},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Yt},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Ut},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:dt},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:gt},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:Q},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:tt},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:rt},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:Tt},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:ae},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:pt},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ee},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:Lt},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:it},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:lt},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:ne},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:se},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:ht},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:ie},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:ut},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:qt},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Et},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:$t},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:W},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:V},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Vt},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Xt},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:oe},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Kt},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Ft}],Ce=(0,l.K2)(()=>{const t={state:Ht,choice:Y,note:Dt,rectWithTitle:It,labelRect:_t,iconSquare:bt,iconCircle:mt,icon:yt,iconRounded:xt,imageSquare:kt,anchor:q,kanbanItem:ye,mindmapCircle:ke,defaultMindmapNode:be,classBox:de,erBox:le,requirementBox:pe},e=[...Object.entries(t),...we.flatMap(t=>[t.shortName,..."aliases"in t?t.aliases:[],..."internalAliases"in t?t.internalAliases:[]].map(e=>[e,t.handler]))];return Object.fromEntries(e)},"generateShapeMap")();function _e(t){return t in Ce}(0,l.K2)(_e,"isValidShape");var ve=new Map;async function Se(t,e,r){let i,n;"rect"===e.shape&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");const a=e.shape?Ce[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let o;"sandbox"===r.config.securityLevel?o="_top":e.linkTarget&&(o=e.linkTarget||"_blank"),i=t.insert("svg:a").attr("xlink:href",e.link).attr("target",o??null),n=await a(i,e,r)}else n=await a(t,e,r),i=n;return e.tooltip&&n.attr("title",e.tooltip),ve.set(e.id,i),e.haveCallback&&i.attr("class",i.attr("class")+" clickable"),i}(0,l.K2)(Se,"insertNode");var Te=(0,l.K2)((t,e)=>{ve.set(e.id,t)},"setNodeElem"),Ae=(0,l.K2)(()=>{ve.clear()},"clear"),Me=(0,l.K2)(t=>{const e=ve.get(t.id);l.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode")},6401:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(1852),n=r(9779),a=r(2274),o=r(2049),s=r(8446),l=r(9912),c=r(7271),h=r(3858),u=Object.prototype.hasOwnProperty;const d=function(t){if(null==t)return!0;if((0,s.A)(t)&&((0,o.A)(t)||"string"==typeof t||"function"==typeof t.splice||(0,l.A)(t)||(0,h.A)(t)||(0,a.A)(t)))return!t.length;var e=(0,n.A)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,c.A)(t))return!(0,i.A)(t).length;for(var r in t)if(u.call(t,r))return!1;return!0}},6632:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(9471);function n(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],a=r.cache;if(a.has(n))return a.get(n);var o=t.apply(this,i);return r.cache=a.set(n,o)||a,o};return r.cache=new(n.Cache||i.A),r}n.Cache=i.A;const a=n},6750:(t,e,r)=>{"use strict";e.J=void 0;var i=r(9119);function n(t){return t.replace(i.ctrlCharactersRegex,"").replace(i.htmlEntitiesRegex,function(t,e){return String.fromCharCode(e)})}function a(t){try{return decodeURIComponent(t)}catch(e){return t}}e.J=function(t){if(!t)return i.BLANK_URL;var e,r=a(t.trim());do{e=(r=a(r=n(r).replace(i.htmlCtrlEntityRegex,"").replace(i.ctrlCharactersRegex,"").replace(i.whitespaceEscapeCharsRegex,"").trim())).match(i.ctrlCharactersRegex)||r.match(i.htmlEntitiesRegex)||r.match(i.htmlCtrlEntityRegex)||r.match(i.whitespaceEscapeCharsRegex)}while(e&&e.length>0);var o=r;if(!o)return i.BLANK_URL;if(function(t){return i.relativeFirstCharacters.indexOf(t[0])>-1}(o))return o;var s=o.trimStart(),l=s.match(i.urlSchemeRegex);if(!l)return o;var c=l[0].toLowerCase().trim();if(i.invalidProtocolRegex.test(c))return i.BLANK_URL;var h=s.replace(/\\/g,"/");if("mailto:"===c||c.includes("://"))return h;if("http:"===c||"https:"===c){if(!function(t){return URL.canParse(t)}(h))return i.BLANK_URL;var u=new URL(h);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return h}},6832:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(6984),n=r(8446),a=r(5353),o=r(3149);const s=function(t,e,r){if(!(0,o.A)(r))return!1;var s=typeof e;return!!("number"==s?(0,n.A)(r)&&(0,a.A)(e,r.length):"string"==s&&e in r)&&(0,i.A)(r[e],t)}},6875:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});const i=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var n=Math.max;const a=function(t,e,r){return e=n(void 0===e?t.length-1:e,0),function(){for(var a=arguments,o=-1,s=n(a.length-e,0),l=Array(s);++o{"use strict";r.d(e,{A:()=>i});const i=function(t,e){return t===e||t!=t&&e!=e}},7271:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=Object.prototype;const n=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||i)}},7525:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(9142),n=r(4171),a=r(9008);const o=n.A?function(t,e){return(0,n.A)(t,"toString",{configurable:!0,enumerable:!1,value:(0,i.A)(e),writable:!0})}:a.A;var s=Date.now;const l=function(t){var e=0,r=0;return function(){var i=s(),n=16-(i-r);if(r=i,n>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(o)},7633:(t,e,r)=>{"use strict";r.d(e,{C0:()=>x,xA:()=>nt,hH:()=>S,Dl:()=>Dt,IU:()=>Zt,Wt:()=>Ut,Y2:()=>Kt,a$:()=>Pt,sb:()=>U,ME:()=>le,UI:()=>j,Ch:()=>k,mW:()=>b,DB:()=>y,_3:()=>vt,EJ:()=>g,m7:()=>ee,iN:()=>Jt,zj:()=>rt,D7:()=>oe,Gs:()=>fe,J$:()=>_,ab:()=>ie,Q2:()=>tt,P$:()=>D,ID:()=>_t,TM:()=>ht,Wi:()=>Et,H1:()=>ut,QO:()=>At,Js:()=>pe,Xd:()=>w,dj:()=>Rt,cL:()=>at,$i:()=>W,jZ:()=>mt,oB:()=>ce,wZ:()=>Q,EI:()=>te,SV:()=>Qt,Nk:()=>et,XV:()=>se,ke:()=>re,UU:()=>Z,ot:()=>zt,mj:()=>he,tM:()=>Ht,H$:()=>I,B6:()=>J});var i=r(797),n=r(4886),a=r(8232);const o=(t,e)=>{const r=n.A.parse(t),i={};for(const n in e)e[n]&&(i[n]=r[n]+e[n]);return(0,a.A)(t,i)};var s=r(5582);const l=(t,e,r=50)=>{const{r:i,g:a,b:o,a:l}=n.A.parse(t),{r:c,g:h,b:u,a:d}=n.A.parse(e),p=r/100,f=2*p-1,g=l-d,y=((f*g===-1?f:(f+g)/(1+f*g))+1)/2,m=1-y,x=i*y+c*m,b=a*y+h*m,k=o*y+u*m,w=l*p+d*(1-p);return(0,s.A)(x,b,k,w)},c=(t,e=100)=>{const r=n.A.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,l(r,t,e)};var h,u=r(5263),d=r(8041),p=r(3219),f=r(9418),g=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,y=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,m=/\s*%%.*\n/gm,x=class extends Error{static{(0,i.K2)(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}},b={},k=(0,i.K2)(function(t,e){t=t.replace(g,"").replace(y,"").replace(m,"\n");for(const[r,{detector:i}]of Object.entries(b)){if(i(t,e))return r}throw new x(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),w=(0,i.K2)((...t)=>{for(const{id:e,detector:r,loader:i}of t)C(e,r,i)},"registerLazyLoadedDiagrams"),C=(0,i.K2)((t,e,r)=>{b[t]&&i.Rm.warn(`Detector with key ${t} already exists. Overwriting.`),b[t]={detector:e,loader:r},i.Rm.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),_=(0,i.K2)(t=>b[t].loader,"getDiagramLoader"),v=(0,i.K2)((t,e,{depth:r=2,clobber:i=!1}={})=>{const n={depth:r,clobber:i};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(e=>v(t,e,n)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(e=>{t.includes(e)||t.push(e)}),t):void 0===t||r<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach(n=>{"object"!=typeof e[n]||void 0!==t[n]&&"object"!=typeof t[n]?(i||"object"!=typeof t[n]&&"object"!=typeof e[n])&&(t[n]=e[n]):(void 0===t[n]&&(t[n]=Array.isArray(e[n])?[]:{}),t[n]=v(t[n],e[n],{depth:r-1,clobber:i}))}),t)},"assignWithDepth"),S=v,T="#ffffff",A="#f2f2f2",M=(0,i.K2)((t,e)=>o(t,e?{s:-40,l:10}:{s:-40,l:-10}),"mkBorder"),B=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||M(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||M(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||M(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||c(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||c(this.tertiaryColor),this.lineColor=this.lineColor||c(this.background),this.arrowheadColor=this.arrowheadColor||c(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,u.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,u.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||c(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,d.A)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||(0,u.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,10)):(this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||(0,d.A)(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},L=(0,i.K2)(t=>{const e=new B;return e.calculate(t),e},"getThemeVariables"),F=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,d.A)(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=c(this.background),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,d.A)(c("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=(0,s.A)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,u.A)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=(0,u.A)(this.sectionBkgColor,10),this.taskBorderColor=(0,s.A)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=(0,s.A)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,d.A)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,d.A)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,d.A)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330});for(let t=0;t{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},$=(0,i.K2)(t=>{const e=new F;return e.calculate(t),e},"getThemeVariables"),E=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=o(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=(0,s.A)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,u.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,u.A)(this.tertiaryColor,40);for(let t=0;t{"calculated"===this[t]&&(this[t]=void 0)}),"object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},D=(0,i.K2)(t=>{const e=new E;return e.calculate(t),e},"getThemeVariables"),O=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,d.A)("#cde498",10),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.primaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=(0,u.A)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,u.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,u.A)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},R=(0,i.K2)(t=>{const e=new O;return e.calculate(t),e},"getThemeVariables"),K=class{static{(0,i.K2)(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,d.A)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,d.A)(this.contrast,55),this.border2=this.contrast,this.actorBorder=(0,d.A)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},I={base:{getThemeVariables:L},dark:{getThemeVariables:$},default:{getThemeVariables:D},forest:{getThemeVariables:R},neutral:{getThemeVariables:(0,i.K2)(t=>{const e=new K;return e.calculate(t),e},"getThemeVariables")}},N={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1},P={...N,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:I.default.getThemeVariables(),sequence:{...N.sequence,messageFont:(0,i.K2)(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:(0,i.K2)(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:(0,i.K2)(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...N.gantt,tickInterval:void 0,useWidth:void 0},c4:{...N.c4,useWidth:void 0,personFont:(0,i.K2)(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...N.flowchart,inheritDir:!1},external_personFont:(0,i.K2)(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:(0,i.K2)(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:(0,i.K2)(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:(0,i.K2)(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:(0,i.K2)(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:(0,i.K2)(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:(0,i.K2)(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:(0,i.K2)(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:(0,i.K2)(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:(0,i.K2)(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:(0,i.K2)(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:(0,i.K2)(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:(0,i.K2)(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:(0,i.K2)(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:(0,i.K2)(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...N.pie,useWidth:984},xyChart:{...N.xyChart,useWidth:void 0},requirement:{...N.requirement,useWidth:void 0},packet:{...N.packet},radar:{...N.radar},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","}},z=(0,i.K2)((t,e="")=>Object.keys(t).reduce((r,i)=>Array.isArray(t[i])?r:"object"==typeof t[i]&&null!==t[i]?[...r,e+i,...z(t[i],"")]:[...r,e+i],[]),"keyify"),q=new Set(z(P,"")),j=P,W=(0,i.K2)(t=>{if(i.Rm.debug("sanitizeDirective called with",t),"object"==typeof t&&null!=t)if(Array.isArray(t))t.forEach(t=>W(t));else{for(const e of Object.keys(t)){if(i.Rm.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!q.has(e)||null==t[e]){i.Rm.debug("sanitize deleting key: ",e),delete t[e];continue}if("object"==typeof t[e]){i.Rm.debug("sanitizing object",e),W(t[e]);continue}const r=["themeCSS","fontFamily","altFontFamily"];for(const n of r)e.includes(n)&&(i.Rm.debug("sanitizing css option",e),t[e]=H(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}i.Rm.debug("After sanitization",t)}},"sanitizeDirective"),H=(0,i.K2)(t=>{let e=0,r=0;for(const i of t){if(e{let r=S({},t),i={};for(const n of e)it(n),i=S(i,n);if(r=S(r,i),i.theme&&i.theme in I){const t=S({},h),e=S(t.themeVariables||{},i.themeVariables);r.theme&&r.theme in I&&(r.themeVariables=I[r.theme].getThemeVariables(e))}return ct(X=r),X},"updateCurrentConfig"),Z=(0,i.K2)(t=>(Y=S({},U),Y=S(Y,t),t.theme&&I[t.theme]&&(Y.themeVariables=I[t.theme].getThemeVariables(t.themeVariables)),V(Y,G),Y),"setSiteConfig"),Q=(0,i.K2)(t=>{h=S({},t)},"saveConfigFromInitialize"),J=(0,i.K2)(t=>(Y=S(Y,t),V(Y,G),Y),"updateSiteConfig"),tt=(0,i.K2)(()=>S({},Y),"getSiteConfig"),et=(0,i.K2)(t=>(ct(t),S(X,t),rt()),"setConfig"),rt=(0,i.K2)(()=>S({},X),"getConfig"),it=(0,i.K2)(t=>{t&&(["secure",...Y.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(i.Rm.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&it(t[e])}))},"sanitize"),nt=(0,i.K2)(t=>{W(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),G.push(t),V(Y,G)},"addDirective"),at=(0,i.K2)((t=Y)=>{V(t,G=[])},"reset"),ot={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},st={},lt=(0,i.K2)(t=>{st[t]||(i.Rm.warn(ot[t]),st[t]=!0)},"issueWarning"),ct=(0,i.K2)(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&<("LAZY_LOAD_DEPRECATED")},"checkConfig"),ht=(0,i.K2)(()=>{let t={};h&&(t=S(t,h));for(const e of G)t=S(t,e);return t},"getUserDefinedConfig"),ut=//gi,dt=(0,i.K2)(t=>{if(!t)return[""];return Ct(t).replace(/\\n/g,"#br#").split("#br#")},"getRows"),pt=(()=>{let t=!1;return()=>{t||(ft(),t=!0)}})();function ft(){const t="data-temp-href-target";f.A.addHook("beforeSanitizeAttributes",e=>{"A"===e.tagName&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),f.A.addHook("afterSanitizeAttributes",e=>{"A"===e.tagName&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),"_blank"===e.getAttribute("target")&&e.setAttribute("rel","noopener"))})}(0,i.K2)(ft,"setupDompurifyHooks");var gt=(0,i.K2)(t=>{pt();return f.A.sanitize(t)},"removeScript"),yt=(0,i.K2)((t,e)=>{if(!1!==e.flowchart?.htmlLabels){const r=e.securityLevel;"antiscript"===r||"strict"===r?t=gt(t):"loose"!==r&&(t=(t=(t=Ct(t)).replace(//g,">")).replace(/=/g,"="),t=wt(t))}return t},"sanitizeMore"),mt=(0,i.K2)((t,e)=>t?t=e.dompurifyConfig?f.A.sanitize(yt(t,e),e.dompurifyConfig).toString():f.A.sanitize(yt(t,e),{FORBID_TAGS:["style"]}).toString():t,"sanitizeText"),xt=(0,i.K2)((t,e)=>"string"==typeof t?mt(t,e):t.flat().map(t=>mt(t,e)),"sanitizeTextOrArray"),bt=(0,i.K2)(t=>ut.test(t),"hasBreaks"),kt=(0,i.K2)(t=>t.split(ut),"splitBreaks"),wt=(0,i.K2)(t=>t.replace(/#br#/g,"
    "),"placeholderToBreak"),Ct=(0,i.K2)(t=>t.replace(ut,"#br#"),"breakToPlaceholder"),_t=(0,i.K2)(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),vt=(0,i.K2)(t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),"evaluate"),St=(0,i.K2)(function(...t){const e=t.filter(t=>!isNaN(t));return Math.max(...e)},"getMax"),Tt=(0,i.K2)(function(...t){const e=t.filter(t=>!isNaN(t));return Math.min(...e)},"getMin"),At=(0,i.K2)(function(t){const e=t.split(/(,)/),r=[];for(let i=0;i0&&i+1Math.max(0,t.split(e).length-1),"countOccurrence"),Bt=(0,i.K2)((t,e)=>{const r=Mt(t,"~"),i=Mt(e,"~");return 1===r&&1===i},"shouldCombineSets"),Lt=(0,i.K2)(t=>{const e=Mt(t,"~");let r=!1;if(e<=1)return t;e%2!=0&&t.startsWith("~")&&(t=t.substring(1),r=!0);const i=[...t];let n=i.indexOf("~"),a=i.lastIndexOf("~");for(;-1!==n&&-1!==a&&n!==a;)i[n]="<",i[a]=">",n=i.indexOf("~"),a=i.lastIndexOf("~");return r&&i.unshift("~"),i.join("")},"processSet"),Ft=(0,i.K2)(()=>void 0!==window.MathMLElement,"isMathMLSupported"),$t=/\$\$(.*)\$\$/g,Et=(0,i.K2)(t=>(t.match($t)?.length??0)>0,"hasKatex"),Dt=(0,i.K2)(async(t,e)=>{const r=document.createElement("div");r.innerHTML=await Rt(t,e),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0";const i=document.querySelector("body");i?.insertAdjacentElement("beforeend",r);const n={width:r.clientWidth,height:r.clientHeight};return r.remove(),n},"calculateMathMLDimensions"),Ot=(0,i.K2)(async(t,e)=>{if(!Et(t))return t;if(!(Ft()||e.legacyMathML||e.forceLegacyMathML))return t.replace($t,"MathML is unsupported in this environment.");{const{default:i}=await r.e(2130).then(r.bind(r,2130)),n=e.forceLegacyMathML||!Ft()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(ut).map(t=>Et(t)?`
    ${t}
    `:`
    ${t}
    `).join("").replace($t,(t,e)=>i.renderToString(e,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))}},"renderKatexUnsanitized"),Rt=(0,i.K2)(async(t,e)=>mt(await Ot(t,e),e),"renderKatexSanitized"),Kt={getRows:dt,sanitizeText:mt,sanitizeTextOrArray:xt,hasBreaks:bt,splitBreaks:kt,lineBreakRegex:ut,removeScript:gt,getUrl:_t,evaluate:vt,getMax:St,getMin:Tt},It=(0,i.K2)(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),Nt=(0,i.K2)(function(t,e,r){let i=new Map;return r?(i.set("width","100%"),i.set("style",`max-width: ${e}px;`)):(i.set("height",t),i.set("width",e)),i},"calculateSvgSizeAttrs"),Pt=(0,i.K2)(function(t,e,r,i){const n=Nt(e,r,i);It(t,n)},"configureSvgSize"),zt=(0,i.K2)(function(t,e,r,n){const a=e.node().getBBox(),o=a.width,s=a.height;i.Rm.info(`SVG bounds: ${o}x${s}`,a);let l=0,c=0;i.Rm.info(`Graph bounds: ${l}x${c}`,t),l=o+2*r,c=s+2*r,i.Rm.info(`Calculated bounds: ${l}x${c}`),Pt(e,c,l,n);const h=`${a.x-r} ${a.y-r} ${a.width+2*r} ${a.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox"),qt={},jt=(0,i.K2)((t,e,r)=>{let n="";return t in qt&&qt[t]?n=qt[t](r):i.Rm.warn(`No theme found for ${t}`),` & {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n fill: ${r.textColor}\n }\n @keyframes edge-animation-frame {\n from {\n stroke-dashoffset: 0;\n }\n }\n @keyframes dash {\n to {\n stroke-dashoffset: 0;\n }\n }\n & .edge-animation-slow {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 50s linear infinite;\n stroke-linecap: round;\n }\n & .edge-animation-fast {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 20s linear infinite;\n stroke-linecap: round;\n }\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${r.errorBkgColor};\n }\n & .error-text {\n fill: ${r.errorTextColor};\n stroke: ${r.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 1px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n & .edge-thickness-invisible {\n stroke-width: 0;\n fill: none;\n }\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${r.lineColor};\n stroke: ${r.lineColor};\n }\n & .marker.cross {\n stroke: ${r.lineColor};\n }\n\n & svg {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n }\n & p {\n margin: 0\n }\n\n ${n}\n\n ${e}\n`},"getStyles"),Wt=(0,i.K2)((t,e)=>{void 0!==e&&(qt[t]=e)},"addStylesForDiagram"),Ht=jt,Ut={};(0,i.VA)(Ut,{clear:()=>Zt,getAccDescription:()=>ee,getAccTitle:()=>Jt,getDiagramTitle:()=>ie,setAccDescription:()=>te,setAccTitle:()=>Qt,setDiagramTitle:()=>re});var Yt="",Gt="",Xt="",Vt=(0,i.K2)(t=>mt(t,rt()),"sanitizeText"),Zt=(0,i.K2)(()=>{Yt="",Xt="",Gt=""},"clear"),Qt=(0,i.K2)(t=>{Yt=Vt(t).replace(/^\s+/g,"")},"setAccTitle"),Jt=(0,i.K2)(()=>Yt,"getAccTitle"),te=(0,i.K2)(t=>{Xt=Vt(t).replace(/\n\s+/g,"\n")},"setAccDescription"),ee=(0,i.K2)(()=>Xt,"getAccDescription"),re=(0,i.K2)(t=>{Gt=Vt(t)},"setDiagramTitle"),ie=(0,i.K2)(()=>Gt,"getDiagramTitle"),ne=i.Rm,ae=i.He,oe=rt,se=et,le=U,ce=(0,i.K2)(t=>mt(t,oe()),"sanitizeText"),he=zt,ue=(0,i.K2)(()=>Ut,"getCommonDb"),de={},pe=(0,i.K2)((t,e,r)=>{de[t]&&ne.warn(`Diagram with id ${t} already registered. Overwriting.`),de[t]=e,r&&C(t,r),Wt(t,e.styles),e.injectUtils?.(ne,ae,oe,ce,he,ue(),()=>{})},"registerDiagram"),fe=(0,i.K2)(t=>{if(t in de)return de[t];throw new ge(t)},"getDiagram"),ge=class extends Error{static{(0,i.K2)(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}},8041:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(5635);const n=(t,e)=>(0,i.A)(t,"l",e)},8232:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(2453),n=r(4886);const a=(t,e)=>{const r=n.A.parse(t);for(const n in e)r[n]=i.A.channel.clamp[n](e[n]);return n.A.stringify(r)}},8335:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(8744),n=r(1917);const a=(0,i.A)(n.A,"Map")},8446:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(9610),n=r(5254);const a=function(t){return null!=t&&(0,n.A)(t.length)&&!(0,i.A)(t)}},8496:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(241),n=Object.prototype,a=n.hasOwnProperty,o=n.toString,s=i.A?i.A.toStringTag:void 0;const l=function(t){var e=a.call(t,s),r=t[s];try{t[s]=void 0;var i=!0}catch(l){}var n=o.call(t);return i&&(e?t[s]=r:delete t[s]),n};var c=Object.prototype.toString;const h=function(t){return c.call(t)};var u=i.A?i.A.toStringTag:void 0;const d=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":u&&u in Object(t)?l(t):h(t)}},8598:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(3149),n=Object.create;const a=function(){function t(){}return function(e){if(!(0,i.A)(e))return{};if(n)return n(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();var o=r(5647),s=r(7271);const l=function(t){return"function"!=typeof t.constructor||(0,s.A)(t)?{}:a((0,o.A)(t))}},8698:(t,e,r)=>{"use strict";r.d(e,{Nq:()=>a,RI:()=>l,hq:()=>n});var i=r(797),n={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4},a={arrow_point:9,arrow_cross:12.5,arrow_circle:12.5};function o(t,e){if(void 0===t||void 0===e)return{angle:0,deltaX:0,deltaY:0};t=s(t),e=s(e);const[r,i]=[t.x,t.y],[n,a]=[e.x,e.y],o=n-r,l=a-i;return{angle:Math.atan(l/o),deltaX:o,deltaY:l}}(0,i.K2)(o,"calculateDeltaAndAngle");var s=(0,i.K2)(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),l=(0,i.K2)(t=>({x:(0,i.K2)(function(e,r,i){let a=0;const l=s(i[0]).x=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){const{angle:e,deltaX:r}=o(i[i.length-1],i[i.length-2]);a=n[t.arrowTypeEnd]*Math.cos(e)*(r>=0?1:-1)}const c=Math.abs(s(e).x-s(i[i.length-1]).x),h=Math.abs(s(e).y-s(i[i.length-1]).y),u=Math.abs(s(e).x-s(i[0]).x),d=Math.abs(s(e).y-s(i[0]).y),p=n[t.arrowTypeStart],f=n[t.arrowTypeEnd];if(c0&&h0&&d=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){const{angle:e,deltaY:r}=o(i[i.length-1],i[i.length-2]);a=n[t.arrowTypeEnd]*Math.abs(Math.sin(e))*(r>=0?1:-1)}const c=Math.abs(s(e).y-s(i[i.length-1]).y),h=Math.abs(s(e).x-s(i[i.length-1]).x),u=Math.abs(s(e).y-s(i[0]).y),d=Math.abs(s(e).x-s(i[0]).x),p=n[t.arrowTypeStart],f=n[t.arrowTypeEnd];if(c0&&h0&&d{"use strict";r.d(e,{A:()=>x});var i=r(9610);const n=r(1917).A["__core-js_shared__"];var a,o=(a=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";const s=function(t){return!!o&&o in t};var l=r(3149),c=r(1121),h=/^\[object .+?Constructor\]$/,u=Function.prototype,d=Object.prototype,p=u.toString,f=d.hasOwnProperty,g=RegExp("^"+p.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const y=function(t){return!(!(0,l.A)(t)||s(t))&&((0,i.A)(t)?g:h).test((0,c.A)(t))};const m=function(t,e){return null==t?void 0:t[e]};const x=function(t,e){var r=m(t,e);return y(r)?r:void 0}},9008:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return t}},9119:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0,e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,e.htmlCtrlEntityRegex=/&(newline|tab);/gi,e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,e.urlSchemeRegex=/^.+(:|:)/gim,e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,e.relativeFirstCharacters=[".","/"],e.BLANK_URL="about:blank"},9142:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return function(){return t}}},9264:(t,e,r)=>{"use strict";r.d(e,{n:()=>i});var i={name:"mermaid",version:"11.12.2",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.1.1","@iconify/utils":"^3.0.1","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.13",dayjs:"^1.11.18",dompurify:"^3.2.5",katex:"^0.16.22",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^16.2.1",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.5","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",canvas:"^3.1.2",chokidar:"3.6.0",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.1.0",jison:"^0.4.18","js-base64":"^3.7.8",jsdom:"^26.1.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.3",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.13","type-fest":"^4.35.0",typedoc:"^0.28.12","typedoc-plugin-markdown":"^4.8.1",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.6.4","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}},9418:(t,e,r)=>{"use strict";r.d(e,{A:()=>st});const{entries:i,setPrototypeOf:n,isFrozen:a,getPrototypeOf:o,getOwnPropertyDescriptor:s}=Object;let{freeze:l,seal:c,create:h}=Object,{apply:u,construct:d}="undefined"!=typeof Reflect&&Reflect;l||(l=function(t){return t}),c||(c=function(t){return t}),u||(u=function(t,e){for(var r=arguments.length,i=new Array(r>2?r-2:0),n=2;n1?e-1:0),i=1;i1?r-1:0),n=1;n2&&void 0!==arguments[2]?arguments[2]:x;n&&n(t,null);let i=e.length;for(;i--;){let n=e[i];if("string"==typeof n){const t=r(n);t!==n&&(a(e)||(e[i]=t),n=t)}t[n]=!0}return t}function L(t){for(let e=0;e/gm),U=c(/\$\{[\w\W]*/gm),Y=c(/^data-[\-\w.\u00B7-\uFFFF]+$/),G=c(/^aria-[\-\w]+$/),X=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),V=c(/^(?:\w+script|data):/i),Z=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Q=c(/^html$/i),J=c(/^[a-z][.\w]*(-[.\w]+)+$/i);var tt=Object.freeze({__proto__:null,ARIA_ATTR:G,ATTR_WHITESPACE:Z,CUSTOM_ELEMENT:J,DATA_ATTR:Y,DOCTYPE_NAME:Q,ERB_EXPR:H,IS_ALLOWED_URI:X,IS_SCRIPT_OR_DATA:V,MUSTACHE_EXPR:W,TMPLIT_EXPR:U});const et=1,rt=3,it=7,nt=8,at=9,ot=function(){return"undefined"==typeof window?null:window};var st=function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ot();const r=e=>t(e);if(r.version="3.3.0",r.removed=[],!e||!e.document||e.document.nodeType!==at||!e.Element)return r.isSupported=!1,r;let{document:n}=e;const a=n,o=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:c,Node:u,Element:d,NodeFilter:A,NamedNodeMap:M=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:L,DOMParser:W,trustedTypes:H}=e,U=d.prototype,Y=$(U,"cloneNode"),G=$(U,"remove"),V=$(U,"nextSibling"),Z=$(U,"childNodes"),J=$(U,"parentNode");if("function"==typeof c){const t=n.createElement("template");t.content&&t.content.ownerDocument&&(n=t.content.ownerDocument)}let st,lt="";const{implementation:ct,createNodeIterator:ht,createDocumentFragment:ut,getElementsByTagName:dt}=n,{importNode:pt}=a;let ft={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};r.isSupported="function"==typeof i&&"function"==typeof J&&ct&&void 0!==ct.createHTMLDocument;const{MUSTACHE_EXPR:gt,ERB_EXPR:yt,TMPLIT_EXPR:mt,DATA_ATTR:xt,ARIA_ATTR:bt,IS_SCRIPT_OR_DATA:kt,ATTR_WHITESPACE:wt,CUSTOM_ELEMENT:Ct}=tt;let{IS_ALLOWED_URI:_t}=tt,vt=null;const St=B({},[...E,...D,...O,...K,...N]);let Tt=null;const At=B({},[...P,...z,...q,...j]);let Mt=Object.seal(h(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Bt=null,Lt=null;const Ft=Object.seal(h(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let $t=!0,Et=!0,Dt=!1,Ot=!0,Rt=!1,Kt=!0,It=!1,Nt=!1,Pt=!1,zt=!1,qt=!1,jt=!1,Wt=!0,Ht=!1,Ut=!0,Yt=!1,Gt={},Xt=null;const Vt=B({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Zt=null;const Qt=B({},["audio","video","img","source","image","track"]);let Jt=null;const te=B({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",re="http://www.w3.org/2000/svg",ie="http://www.w3.org/1999/xhtml";let ne=ie,ae=!1,oe=null;const se=B({},[ee,re,ie],b);let le=B({},["mi","mo","mn","ms","mtext"]),ce=B({},["annotation-xml"]);const he=B({},["title","style","font","a","script"]);let ue=null;const de=["application/xhtml+xml","text/html"];let pe=null,fe=null;const ge=n.createElement("form"),ye=function(t){return t instanceof RegExp||t instanceof Function},me=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!fe||fe!==t){if(t&&"object"==typeof t||(t={}),t=F(t),ue=-1===de.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,pe="application/xhtml+xml"===ue?b:x,vt=v(t,"ALLOWED_TAGS")?B({},t.ALLOWED_TAGS,pe):St,Tt=v(t,"ALLOWED_ATTR")?B({},t.ALLOWED_ATTR,pe):At,oe=v(t,"ALLOWED_NAMESPACES")?B({},t.ALLOWED_NAMESPACES,b):se,Jt=v(t,"ADD_URI_SAFE_ATTR")?B(F(te),t.ADD_URI_SAFE_ATTR,pe):te,Zt=v(t,"ADD_DATA_URI_TAGS")?B(F(Qt),t.ADD_DATA_URI_TAGS,pe):Qt,Xt=v(t,"FORBID_CONTENTS")?B({},t.FORBID_CONTENTS,pe):Vt,Bt=v(t,"FORBID_TAGS")?B({},t.FORBID_TAGS,pe):F({}),Lt=v(t,"FORBID_ATTR")?B({},t.FORBID_ATTR,pe):F({}),Gt=!!v(t,"USE_PROFILES")&&t.USE_PROFILES,$t=!1!==t.ALLOW_ARIA_ATTR,Et=!1!==t.ALLOW_DATA_ATTR,Dt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Ot=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Rt=t.SAFE_FOR_TEMPLATES||!1,Kt=!1!==t.SAFE_FOR_XML,It=t.WHOLE_DOCUMENT||!1,zt=t.RETURN_DOM||!1,qt=t.RETURN_DOM_FRAGMENT||!1,jt=t.RETURN_TRUSTED_TYPE||!1,Pt=t.FORCE_BODY||!1,Wt=!1!==t.SANITIZE_DOM,Ht=t.SANITIZE_NAMED_PROPS||!1,Ut=!1!==t.KEEP_CONTENT,Yt=t.IN_PLACE||!1,_t=t.ALLOWED_URI_REGEXP||X,ne=t.NAMESPACE||ie,le=t.MATHML_TEXT_INTEGRATION_POINTS||le,ce=t.HTML_INTEGRATION_POINTS||ce,Mt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ye(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Mt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ye(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Mt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Mt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Rt&&(Et=!1),qt&&(zt=!0),Gt&&(vt=B({},N),Tt=[],!0===Gt.html&&(B(vt,E),B(Tt,P)),!0===Gt.svg&&(B(vt,D),B(Tt,z),B(Tt,j)),!0===Gt.svgFilters&&(B(vt,O),B(Tt,z),B(Tt,j)),!0===Gt.mathMl&&(B(vt,K),B(Tt,q),B(Tt,j))),t.ADD_TAGS&&("function"==typeof t.ADD_TAGS?Ft.tagCheck=t.ADD_TAGS:(vt===St&&(vt=F(vt)),B(vt,t.ADD_TAGS,pe))),t.ADD_ATTR&&("function"==typeof t.ADD_ATTR?Ft.attributeCheck=t.ADD_ATTR:(Tt===At&&(Tt=F(Tt)),B(Tt,t.ADD_ATTR,pe))),t.ADD_URI_SAFE_ATTR&&B(Jt,t.ADD_URI_SAFE_ATTR,pe),t.FORBID_CONTENTS&&(Xt===Vt&&(Xt=F(Xt)),B(Xt,t.FORBID_CONTENTS,pe)),Ut&&(vt["#text"]=!0),It&&B(vt,["html","head","body"]),vt.table&&(B(vt,["tbody"]),delete Bt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw T('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw T('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');st=t.TRUSTED_TYPES_POLICY,lt=st.createHTML("")}else void 0===st&&(st=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let r=null;const i="data-tt-policy-suffix";e&&e.hasAttribute(i)&&(r=e.getAttribute(i));const n="dompurify"+(r?"#"+r:"");try{return t.createPolicy(n,{createHTML:t=>t,createScriptURL:t=>t})}catch(a){return console.warn("TrustedTypes policy "+n+" could not be created."),null}}(H,o)),null!==st&&"string"==typeof lt&&(lt=st.createHTML(""));l&&l(t),fe=t}},xe=B({},[...D,...O,...R]),be=B({},[...K,...I]),ke=function(t){y(r.removed,{element:t});try{J(t).removeChild(t)}catch(e){G(t)}},we=function(t,e){try{y(r.removed,{attribute:e.getAttributeNode(t),from:e})}catch(i){y(r.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t)if(zt||qt)try{ke(e)}catch(i){}else try{e.setAttribute(t,"")}catch(i){}},Ce=function(t){let e=null,r=null;if(Pt)t=""+t;else{const e=k(t,/^[\r\n\t ]+/);r=e&&e[0]}"application/xhtml+xml"===ue&&ne===ie&&(t=''+t+"");const i=st?st.createHTML(t):t;if(ne===ie)try{e=(new W).parseFromString(i,ue)}catch(o){}if(!e||!e.documentElement){e=ct.createDocument(ne,"template",null);try{e.documentElement.innerHTML=ae?lt:i}catch(o){}}const a=e.body||e.documentElement;return t&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),ne===ie?dt.call(e,It?"html":"body")[0]:It?e.documentElement:a},_e=function(t){return ht.call(t.ownerDocument||t,t,A.SHOW_ELEMENT|A.SHOW_COMMENT|A.SHOW_TEXT|A.SHOW_PROCESSING_INSTRUCTION|A.SHOW_CDATA_SECTION,null)},ve=function(t){return t instanceof L&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof M)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},Se=function(t){return"function"==typeof u&&t instanceof u};function Te(t,e,i){p(t,t=>{t.call(r,e,i,fe)})}const Ae=function(t){let e=null;if(Te(ft.beforeSanitizeElements,t,null),ve(t))return ke(t),!0;const i=pe(t.nodeName);if(Te(ft.uponSanitizeElement,t,{tagName:i,allowedTags:vt}),Kt&&t.hasChildNodes()&&!Se(t.firstElementChild)&&S(/<[/\w!]/g,t.innerHTML)&&S(/<[/\w!]/g,t.textContent))return ke(t),!0;if(t.nodeType===it)return ke(t),!0;if(Kt&&t.nodeType===nt&&S(/<[/\w]/g,t.data))return ke(t),!0;if(!(Ft.tagCheck instanceof Function&&Ft.tagCheck(i))&&(!vt[i]||Bt[i])){if(!Bt[i]&&Be(i)){if(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,i))return!1;if(Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(i))return!1}if(Ut&&!Xt[i]){const e=J(t)||t.parentNode,r=Z(t)||t.childNodes;if(r&&e){for(let i=r.length-1;i>=0;--i){const n=Y(r[i],!0);n.__removalCount=(t.__removalCount||0)+1,e.insertBefore(n,V(t))}}}return ke(t),!0}return t instanceof d&&!function(t){let e=J(t);e&&e.tagName||(e={namespaceURI:ne,tagName:"template"});const r=x(t.tagName),i=x(e.tagName);return!!oe[t.namespaceURI]&&(t.namespaceURI===re?e.namespaceURI===ie?"svg"===r:e.namespaceURI===ee?"svg"===r&&("annotation-xml"===i||le[i]):Boolean(xe[r]):t.namespaceURI===ee?e.namespaceURI===ie?"math"===r:e.namespaceURI===re?"math"===r&&ce[i]:Boolean(be[r]):t.namespaceURI===ie?!(e.namespaceURI===re&&!ce[i])&&!(e.namespaceURI===ee&&!le[i])&&!be[r]&&(he[r]||!xe[r]):!("application/xhtml+xml"!==ue||!oe[t.namespaceURI]))}(t)?(ke(t),!0):"noscript"!==i&&"noembed"!==i&&"noframes"!==i||!S(/<\/no(script|embed|frames)/i,t.innerHTML)?(Rt&&t.nodeType===rt&&(e=t.textContent,p([gt,yt,mt],t=>{e=w(e,t," ")}),t.textContent!==e&&(y(r.removed,{element:t.cloneNode()}),t.textContent=e)),Te(ft.afterSanitizeElements,t,null),!1):(ke(t),!0)},Me=function(t,e,r){if(Wt&&("id"===e||"name"===e)&&(r in n||r in ge))return!1;if(Et&&!Lt[e]&&S(xt,e));else if($t&&S(bt,e));else if(Ft.attributeCheck instanceof Function&&Ft.attributeCheck(e,t));else if(!Tt[e]||Lt[e]){if(!(Be(t)&&(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,t)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(t))&&(Mt.attributeNameCheck instanceof RegExp&&S(Mt.attributeNameCheck,e)||Mt.attributeNameCheck instanceof Function&&Mt.attributeNameCheck(e,t))||"is"===e&&Mt.allowCustomizedBuiltInElements&&(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,r)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(r))))return!1}else if(Jt[e]);else if(S(_t,w(r,wt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==C(r,"data:")||!Zt[t]){if(Dt&&!S(kt,w(r,wt,"")));else if(r)return!1}else;return!0},Be=function(t){return"annotation-xml"!==t&&k(t,Ct)},Le=function(t){Te(ft.beforeSanitizeAttributes,t,null);const{attributes:e}=t;if(!e||ve(t))return;const i={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Tt,forceKeepAttr:void 0};let n=e.length;for(;n--;){const o=e[n],{name:s,namespaceURI:l,value:c}=o,h=pe(s),u=c;let d="value"===s?u:_(u);if(i.attrName=h,i.attrValue=d,i.keepAttr=!0,i.forceKeepAttr=void 0,Te(ft.uponSanitizeAttribute,t,i),d=i.attrValue,!Ht||"id"!==h&&"name"!==h||(we(s,t),d="user-content-"+d),Kt&&S(/((--!?|])>)|<\/(style|title|textarea)/i,d)){we(s,t);continue}if("attributename"===h&&k(d,"href")){we(s,t);continue}if(i.forceKeepAttr)continue;if(!i.keepAttr){we(s,t);continue}if(!Ot&&S(/\/>/i,d)){we(s,t);continue}Rt&&p([gt,yt,mt],t=>{d=w(d,t," ")});const f=pe(t.nodeName);if(Me(f,h,d)){if(st&&"object"==typeof H&&"function"==typeof H.getAttributeType)if(l);else switch(H.getAttributeType(f,h)){case"TrustedHTML":d=st.createHTML(d);break;case"TrustedScriptURL":d=st.createScriptURL(d)}if(d!==u)try{l?t.setAttributeNS(l,s,d):t.setAttribute(s,d),ve(t)?ke(t):g(r.removed)}catch(a){we(s,t)}}else we(s,t)}Te(ft.afterSanitizeAttributes,t,null)},Fe=function t(e){let r=null;const i=_e(e);for(Te(ft.beforeSanitizeShadowDOM,e,null);r=i.nextNode();)Te(ft.uponSanitizeShadowNode,r,null),Ae(r),Le(r),r.content instanceof s&&t(r.content);Te(ft.afterSanitizeShadowDOM,e,null)};return r.sanitize=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null,n=null,o=null,l=null;if(ae=!t,ae&&(t="\x3c!--\x3e"),"string"!=typeof t&&!Se(t)){if("function"!=typeof t.toString)throw T("toString is not a function");if("string"!=typeof(t=t.toString()))throw T("dirty is not a string, aborting")}if(!r.isSupported)return t;if(Nt||me(e),r.removed=[],"string"==typeof t&&(Yt=!1),Yt){if(t.nodeName){const e=pe(t.nodeName);if(!vt[e]||Bt[e])throw T("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof u)i=Ce("\x3c!----\x3e"),n=i.ownerDocument.importNode(t,!0),n.nodeType===et&&"BODY"===n.nodeName||"HTML"===n.nodeName?i=n:i.appendChild(n);else{if(!zt&&!Rt&&!It&&-1===t.indexOf("<"))return st&&jt?st.createHTML(t):t;if(i=Ce(t),!i)return zt?null:jt?lt:""}i&&Pt&&ke(i.firstChild);const c=_e(Yt?t:i);for(;o=c.nextNode();)Ae(o),Le(o),o.content instanceof s&&Fe(o.content);if(Yt)return t;if(zt){if(qt)for(l=ut.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(Tt.shadowroot||Tt.shadowrootmode)&&(l=pt.call(a,l,!0)),l}let h=It?i.outerHTML:i.innerHTML;return It&&vt["!doctype"]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&S(Q,i.ownerDocument.doctype.name)&&(h="\n"+h),Rt&&p([gt,yt,mt],t=>{h=w(h,t," ")}),st&&jt?st.createHTML(h):h},r.setConfig=function(){me(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Nt=!0},r.clearConfig=function(){fe=null,Nt=!1},r.isValidAttribute=function(t,e,r){fe||me({});const i=pe(t),n=pe(e);return Me(i,n,r)},r.addHook=function(t,e){"function"==typeof e&&y(ft[t],e)},r.removeHook=function(t,e){if(void 0!==e){const r=f(ft[t],e);return-1===r?void 0:m(ft[t],r,1)[0]}return g(ft[t])},r.removeHooks=function(t){ft[t]=[]},r.removeAllHooks=function(){ft={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},r}()},9471:(t,e,r)=>{"use strict";r.d(e,{A:()=>_});const i=(0,r(8744).A)(Object,"create");const n=function(){this.__data__=i?i(null):{},this.size=0};const a=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var o=Object.prototype.hasOwnProperty;const s=function(t){var e=this.__data__;if(i){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0};var l=Object.prototype.hasOwnProperty;const c=function(t){var e=this.__data__;return i?void 0!==e[t]:l.call(e,t)};const h=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=i&&void 0===e?"__lodash_hash_undefined__":e,this};function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{"use strict";r.d(e,{A:()=>a});var i=r(8496),n=r(3149);const a=function(t){if(!(0,n.A)(t))return!1;var e=(0,i.A)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},9759:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{"use strict";r.d(e,{A:()=>_});var i=r(8744),n=r(1917);const a=(0,i.A)(n.A,"DataView");var o=r(8335);const s=(0,i.A)(n.A,"Promise");var l=r(9857);const c=(0,i.A)(n.A,"WeakMap");var h=r(8496),u=r(1121),d="[object Map]",p="[object Promise]",f="[object Set]",g="[object WeakMap]",y="[object DataView]",m=(0,u.A)(a),x=(0,u.A)(o.A),b=(0,u.A)(s),k=(0,u.A)(l.A),w=(0,u.A)(c),C=h.A;(a&&C(new a(new ArrayBuffer(1)))!=y||o.A&&C(new o.A)!=d||s&&C(s.resolve())!=p||l.A&&C(new l.A)!=f||c&&C(new c)!=g)&&(C=function(t){var e=(0,h.A)(t),r="[object Object]"==e?t.constructor:void 0,i=r?(0,u.A)(r):"";if(i)switch(i){case m:return y;case x:return d;case b:return p;case k:return f;case w:return g}return e});const _=C},9857:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(8744),n=r(1917);const a=(0,i.A)(n.A,"Set")},9893:(t,e,r)=>{"use strict";function i(t,e,r){if(t&&t.length){const[i,n]=e,a=Math.PI/180*r,o=Math.cos(a),s=Math.sin(a);for(const e of t){const[t,r]=e;e[0]=(t-i)*o-(r-n)*s+i,e[1]=(t-i)*s+(r-n)*o+n}}}function n(t,e){return t[0]===e[0]&&t[1]===e[1]}function a(t,e,r,a=1){const o=r,s=Math.max(e,.1),l=t[0]&&t[0][0]&&"number"==typeof t[0][0]?[t]:t,c=[0,0];if(o)for(const n of l)i(n,c,o);const h=function(t,e,r){const i=[];for(const h of t){const t=[...h];n(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&i.push(t)}const a=[];e=Math.max(e,.1);const o=[];for(const n of i)for(let t=0;tt.ymine.ymin?1:t.xe.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax)),!o.length)return a;let s=[],l=o[0].ymin,c=0;for(;s.length||o.length;){if(o.length){let t=-1;for(let e=0;el);e++)t=e;o.splice(0,t+1).forEach(t=>{s.push({s:l,edge:t})})}if(s=s.filter(t=>!(t.edge.ymax<=l)),s.sort((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x)),(1!==r||c%e==0)&&s.length>1)for(let t=0;t=s.length)break;const r=s[t].edge,i=s[e].edge;a.push([[Math.round(r.x),l],[Math.round(i.x),l]])}l+=r,s.forEach(t=>{t.edge.x=t.edge.x+r*t.edge.islope}),c++}return a}(l,s,a);if(o){for(const t of l)i(t,c,-o);!function(t,e,r){const n=[];t.forEach(t=>n.push(...t)),i(n,e,r)}(h,c,-o)}return h}function o(t,e){var r;const i=e.hachureAngle+90;let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.round(Math.max(n,.1));let o=1;return e.roughness>=1&&((null===(r=e.randomizer)||void 0===r?void 0:r.next())||Math.random())>.7&&(o=n),a(t,n,i,o||1)}r.d(e,{A:()=>nt});class s{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const r=o(t,e);return{type:"fillSketch",ops:this.renderLines(r,e)}}renderLines(t,e){const r=[];for(const i of t)r.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],e));return r}}function l(t){const e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}class c extends s{fillPolygons(t,e){let r=e.hachureGap;r<0&&(r=4*e.strokeWidth),r=Math.max(r,.1);const i=o(t,Object.assign({},e,{hachureGap:r})),n=Math.PI/180*e.hachureAngle,a=[],s=.5*r*Math.cos(n),c=.5*r*Math.sin(n);for(const[o,h]of i)l([o,h])&&a.push([[o[0]-s,o[1]+c],[...h]],[[o[0]+s,o[1]-c],[...h]]);return{type:"fillSketch",ops:this.renderLines(a,e)}}}class h extends s{fillPolygons(t,e){const r=this._fillPolygons(t,e),i=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),n=this._fillPolygons(t,i);return r.ops=r.ops.concat(n.ops),r}}class u{constructor(t){this.helper=t}fillPolygons(t,e){const r=o(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(r,e)}dotsOnLines(t,e){const r=[];let i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.max(i,.1);let n=e.fillWeight;n<0&&(n=e.strokeWidth/2);const a=i/4;for(const o of t){const t=l(o),s=t/i,c=Math.ceil(s)-1,h=t-c*i,u=(o[0][0]+o[1][0])/2-i/4,d=Math.min(o[0][1],o[1][1]);for(let o=0;o{const a=l(t),o=Math.floor(a/(r+i)),s=(a+i-o*(r+i))/2;let c=t[0],h=t[1];c[0]>h[0]&&(c=t[1],h=t[0]);const u=Math.atan((h[1]-c[1])/(h[0]-c[0]));for(let l=0;l{const n=l(t),a=Math.round(n/(2*e));let o=t[0],s=t[1];o[0]>s[0]&&(o=t[1],s=t[0]);const c=Math.atan((s[1]-o[1])/(s[0]-o[0]));for(let l=0;li%2?t+r:t+e);a.push({key:"C",data:t}),e=t[4],r=t[5];break}case"Q":a.push({key:"Q",data:[...s]}),e=s[2],r=s[3];break;case"q":{const t=s.map((t,i)=>i%2?t+r:t+e);a.push({key:"Q",data:t}),e=t[2],r=t[3];break}case"A":a.push({key:"A",data:[...s]}),e=s[5],r=s[6];break;case"a":e+=s[5],r+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],e,r]});break;case"H":a.push({key:"H",data:[...s]}),e=s[0];break;case"h":e+=s[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...s]}),r=s[0];break;case"v":r+=s[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...s]}),e=s[2],r=s[3];break;case"s":{const t=s.map((t,i)=>i%2?t+r:t+e);a.push({key:"S",data:t}),e=t[2],r=t[3];break}case"T":a.push({key:"T",data:[...s]}),e=s[0],r=s[1];break;case"t":e+=s[0],r+=s[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=i,r=n}return a}function k(t){const e=[];let r="",i=0,n=0,a=0,o=0,s=0,l=0;for(const{key:c,data:h}of t){switch(c){case"M":e.push({key:"M",data:[...h]}),[i,n]=h,[a,o]=h;break;case"C":e.push({key:"C",data:[...h]}),i=h[4],n=h[5],s=h[2],l=h[3];break;case"L":e.push({key:"L",data:[...h]}),[i,n]=h;break;case"H":i=h[0],e.push({key:"L",data:[i,n]});break;case"V":n=h[0],e.push({key:"L",data:[i,n]});break;case"S":{let t=0,a=0;"C"===r||"S"===r?(t=i+(i-s),a=n+(n-l)):(t=i,a=n),e.push({key:"C",data:[t,a,...h]}),s=h[0],l=h[1],i=h[2],n=h[3];break}case"T":{const[t,a]=h;let o=0,c=0;"Q"===r||"T"===r?(o=i+(i-s),c=n+(n-l)):(o=i,c=n);const u=i+2*(o-i)/3,d=n+2*(c-n)/3,p=t+2*(o-t)/3,f=a+2*(c-a)/3;e.push({key:"C",data:[u,d,p,f,t,a]}),s=o,l=c,i=t,n=a;break}case"Q":{const[t,r,a,o]=h,c=i+2*(t-i)/3,u=n+2*(r-n)/3,d=a+2*(t-a)/3,p=o+2*(r-o)/3;e.push({key:"C",data:[c,u,d,p,a,o]}),s=t,l=r,i=a,n=o;break}case"A":{const t=Math.abs(h[0]),r=Math.abs(h[1]),a=h[2],o=h[3],s=h[4],l=h[5],c=h[6];0===t||0===r?(e.push({key:"C",data:[i,n,l,c,l,c]}),i=l,n=c):i===l&&n===c||(C(i,n,l,c,t,r,a,o,s).forEach(function(t){e.push({key:"C",data:t})}),i=l,n=c);break}case"Z":e.push({key:"Z",data:[]}),i=a,n=o}r=c}return e}function w(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function C(t,e,r,i,n,a,o,s,l,c){const h=(u=o,Math.PI*u/180);var u;let d=[],p=0,f=0,g=0,y=0;if(c)[p,f,g,y]=c;else{[t,e]=w(t,e,-h),[r,i]=w(r,i,-h);const o=(t-r)/2,c=(e-i)/2;let u=o*o/(n*n)+c*c/(a*a);u>1&&(u=Math.sqrt(u),n*=u,a*=u);const d=n*n,m=a*a,x=d*m-d*c*c-m*o*o,b=d*c*c+m*o*o,k=(s===l?-1:1)*Math.sqrt(Math.abs(x/b));g=k*n*c/a+(t+r)/2,y=k*-a*o/n+(e+i)/2,p=Math.asin(parseFloat(((e-y)/a).toFixed(9))),f=Math.asin(parseFloat(((i-y)/a).toFixed(9))),tf&&(p-=2*Math.PI),!l&&f>p&&(f-=2*Math.PI)}let m=f-p;if(Math.abs(m)>120*Math.PI/180){const t=f,e=r,s=i;f=l&&f>p?p+120*Math.PI/180*1:p+120*Math.PI/180*-1,d=C(r=g+n*Math.cos(f),i=y+a*Math.sin(f),e,s,n,a,o,0,l,[f,t,g,y])}m=f-p;const x=Math.cos(p),b=Math.sin(p),k=Math.cos(f),_=Math.sin(f),v=Math.tan(m/4),S=4/3*n*v,T=4/3*a*v,A=[t,e],M=[t+S*b,e-T*x],B=[r+S*_,i-T*k],L=[r,i];if(M[0]=2*A[0]-M[0],M[1]=2*A[1]-M[1],c)return[M,B,L].concat(d);{d=[M,B,L].concat(d);const t=[];for(let e=0;e2){const n=[];for(let e=0;e2*Math.PI&&(p=0,f=2*Math.PI);const g=2*Math.PI/l.curveStepCount,y=Math.min(g/2,(f-p)/2),m=q(y,c,h,u,d,p,f,1,l);if(!l.disableMultiStroke){const t=q(y,c,h,u,d,p,f,1.5,l);m.push(...t)}return o&&(s?m.push(...K(c,h,c+u*Math.cos(p),h+d*Math.sin(p),l),...K(c,h,c+u*Math.cos(f),h+d*Math.sin(f),l)):m.push({op:"lineTo",data:[c,h]},{op:"lineTo",data:[c+u*Math.cos(p),h+d*Math.sin(p)]})),{type:"path",ops:m}}function L(t,e){const r=k(b(x(t))),i=[];let n=[0,0],a=[0,0];for(const{key:o,data:s}of r)switch(o){case"M":a=[s[0],s[1]],n=[s[0],s[1]];break;case"L":i.push(...K(a[0],a[1],s[0],s[1],e)),a=[s[0],s[1]];break;case"C":{const[t,r,n,o,l,c]=s;i.push(...j(t,r,n,o,l,c,a,e)),a=[l,c];break}case"Z":i.push(...K(a[0],a[1],n[0],n[1],e)),a=[n[0],n[1]]}return{type:"path",ops:i}}function F(t,e){const r=[];for(const i of t)if(i.length){const t=e.maxRandomnessOffset||0,n=i.length;if(n>2){r.push({op:"move",data:[i[0][0]+R(t,e),i[0][1]+R(t,e)]});for(let a=1;a500?.4:-.0016668*l+1.233334;let h=n.maxRandomnessOffset||0;h*h*100>s&&(h=l/10);const u=h/2,d=.2+.2*D(n);let p=n.bowing*n.maxRandomnessOffset*(i-e)/200,f=n.bowing*n.maxRandomnessOffset*(t-r)/200;p=R(p,n,c),f=R(f,n,c);const g=[],y=()=>R(u,n,c),m=()=>R(h,n,c),x=n.preserveVertices;return a&&(o?g.push({op:"move",data:[t+(x?0:y()),e+(x?0:y())]}):g.push({op:"move",data:[t+(x?0:R(h,n,c)),e+(x?0:R(h,n,c))]})),o?g.push({op:"bcurveTo",data:[p+t+(r-t)*d+y(),f+e+(i-e)*d+y(),p+t+2*(r-t)*d+y(),f+e+2*(i-e)*d+y(),r+(x?0:y()),i+(x?0:y())]}):g.push({op:"bcurveTo",data:[p+t+(r-t)*d+m(),f+e+(i-e)*d+m(),p+t+2*(r-t)*d+m(),f+e+2*(i-e)*d+m(),r+(x?0:m()),i+(x?0:m())]}),g}function N(t,e,r){if(!t.length)return[];const i=[];i.push([t[0][0]+R(e,r),t[0][1]+R(e,r)]),i.push([t[0][0]+R(e,r),t[0][1]+R(e,r)]);for(let n=1;n3){const a=[],o=1-r.curveTightness;n.push({op:"move",data:[t[1][0],t[1][1]]});for(let e=1;e+21&&n.push(r)):n.push(r),n.push(t[e+3])}else{const i=.5,a=t[e+0],o=t[e+1],s=t[e+2],l=t[e+3],c=G(a,o,i),h=G(o,s,i),u=G(s,l,i),d=G(c,h,i),p=G(h,u,i),f=G(d,p,i);X([a,c,d,f],0,r,n),X([f,p,u,l],0,r,n)}var a,o;return n}function V(t,e){return Z(t,0,t.length,e)}function Z(t,e,r,i,n){const a=n||[],o=t[e],s=t[r-1];let l=0,c=1;for(let h=e+1;hl&&(l=e,c=h)}return Math.sqrt(l)>i?(Z(t,e,c+1,i,a),Z(t,c,r,i,a)):(a.length||a.push(o),a.push(s)),a}function Q(t,e=.15,r){const i=[],n=(t.length-1)/3;for(let a=0;a0?Z(i,0,i.length,r):i}const J="none";class tt{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,r){return{shape:t,sets:e||[],options:r||this.defaultOptions}}line(t,e,r,i,n){const a=this._o(n);return this._d("line",[v(t,e,r,i,a)],a)}rectangle(t,e,r,i,n){const a=this._o(n),o=[],s=function(t,e,r,i,n){return function(t,e){return S(t,!0,e)}([[t,e],[t+r,e],[t+r,e+i],[t,e+i]],n)}(t,e,r,i,a);if(a.fill){const n=[[t,e],[t+r,e],[t+r,e+i],[t,e+i]];"solid"===a.fillStyle?o.push(F([n],a)):o.push($([n],a))}return a.stroke!==J&&o.push(s),this._d("rectangle",o,a)}ellipse(t,e,r,i,n){const a=this._o(n),o=[],s=A(r,i,a),l=M(t,e,a,s);if(a.fill)if("solid"===a.fillStyle){const r=M(t,e,a,s).opset;r.type="fillPath",o.push(r)}else o.push($([l.estimatedPoints],a));return a.stroke!==J&&o.push(l.opset),this._d("ellipse",o,a)}circle(t,e,r,i){const n=this.ellipse(t,e,r,r,i);return n.shape="circle",n}linearPath(t,e){const r=this._o(e);return this._d("linearPath",[S(t,!1,r)],r)}arc(t,e,r,i,n,a,o=!1,s){const l=this._o(s),c=[],h=B(t,e,r,i,n,a,o,!0,l);if(o&&l.fill)if("solid"===l.fillStyle){const o=Object.assign({},l);o.disableMultiStroke=!0;const s=B(t,e,r,i,n,a,!0,!1,o);s.type="fillPath",c.push(s)}else c.push(function(t,e,r,i,n,a,o){const s=t,l=e;let c=Math.abs(r/2),h=Math.abs(i/2);c+=R(.01*c,o),h+=R(.01*h,o);let u=n,d=a;for(;u<0;)u+=2*Math.PI,d+=2*Math.PI;d-u>2*Math.PI&&(u=0,d=2*Math.PI);const p=(d-u)/o.curveStepCount,f=[];for(let g=u;g<=d;g+=p)f.push([s+c*Math.cos(g),l+h*Math.sin(g)]);return f.push([s+c*Math.cos(d),l+h*Math.sin(d)]),f.push([s,l]),$([f],o)}(t,e,r,i,n,a,l));return l.stroke!==J&&c.push(h),this._d("arc",c,l)}curve(t,e){const r=this._o(e),i=[],n=T(t,r);if(r.fill&&r.fill!==J)if("solid"===r.fillStyle){const e=T(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else{const e=[],n=t;if(n.length){const t="number"==typeof n[0][0]?[n]:n;for(const i of t)i.length<3?e.push(...i):3===i.length?e.push(...Q(H([i[0],i[0],i[1],i[2]]),10,(1+r.roughness)/2)):e.push(...Q(H(i),10,(1+r.roughness)/2))}e.length&&i.push($([e],r))}return r.stroke!==J&&i.push(n),this._d("curve",i,r)}polygon(t,e){const r=this._o(e),i=[],n=S(t,!0,r);return r.fill&&("solid"===r.fillStyle?i.push(F([t],r)):i.push($([t],r))),r.stroke!==J&&i.push(n),this._d("polygon",i,r)}path(t,e){const r=this._o(e),i=[];if(!t)return this._d("path",i,r);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const n=r.fill&&"transparent"!==r.fill&&r.fill!==J,a=r.stroke!==J,o=!!(r.simplification&&r.simplification<1),s=function(t,e,r){const i=k(b(x(t))),n=[];let a=[],o=[0,0],s=[];const l=()=>{s.length>=4&&a.push(...Q(s,1)),s=[]},c=()=>{l(),a.length&&(n.push(a),a=[])};for(const{key:u,data:d}of i)switch(u){case"M":c(),o=[d[0],d[1]],a.push(o);break;case"L":l(),a.push([d[0],d[1]]);break;case"C":if(!s.length){const t=a.length?a[a.length-1]:o;s.push([t[0],t[1]])}s.push([d[0],d[1]]),s.push([d[2],d[3]]),s.push([d[4],d[5]]);break;case"Z":l(),a.push([o[0],o[1]])}if(c(),!r)return n;const h=[];for(const u of n){const t=V(u,r);t.length&&h.push(t)}return h}(t,0,o?4-4*(r.simplification||1):(1+r.roughness)/2),l=L(t,r);if(n)if("solid"===r.fillStyle)if(1===s.length){const e=L(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else i.push(F(s,r));else i.push($(s,r));return a&&(o?s.forEach(t=>{i.push(S(t,!1,r))}):i.push(l)),this._d("path",i,r)}opsToPath(t,e){let r="";for(const i of t.ops){const t="number"==typeof e&&e>=0?i.data.map(t=>+t.toFixed(e)):i.data;switch(i.op){case"move":r+=`M${t[0]} ${t[1]} `;break;case"bcurveTo":r+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case"lineTo":r+=`L${t[0]} ${t[1]} `}}return r.trim()}toPaths(t){const e=t.sets||[],r=t.options||this.defaultOptions,i=[];for(const n of e){let t=null;switch(n.type){case"path":t={d:this.opsToPath(n),stroke:r.stroke,strokeWidth:r.strokeWidth,fill:J};break;case"fillPath":t={d:this.opsToPath(n),stroke:J,strokeWidth:0,fill:r.fill||J};break;case"fillSketch":t=this.fillSketch(n,r)}t&&i.push(t)}return i}fillSketch(t,e){let r=e.fillWeight;return r<0&&(r=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||J,strokeWidth:r,fill:J}}_mergedShape(t){return t.filter((t,e)=>0===e||"move"!==t.op)}}class et{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new tt(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),i=this.ctx,n=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case"path":i.save(),i.strokeStyle="none"===r.stroke?"transparent":r.stroke,i.lineWidth=r.strokeWidth,r.strokeLineDash&&i.setLineDash(r.strokeLineDash),r.strokeLineDashOffset&&(i.lineDashOffset=r.strokeLineDashOffset),this._drawToContext(i,a,n),i.restore();break;case"fillPath":{i.save(),i.fillStyle=r.fill||"";const e="curve"===t.shape||"polygon"===t.shape||"path"===t.shape?"evenodd":"nonzero";this._drawToContext(i,a,n,e),i.restore();break}case"fillSketch":this.fillSketch(i,a,r)}}fillSketch(t,e,r){let i=r.fillWeight;i<0&&(i=r.strokeWidth/2),t.save(),r.fillLineDash&&t.setLineDash(r.fillLineDash),r.fillLineDashOffset&&(t.lineDashOffset=r.fillLineDashOffset),t.strokeStyle=r.fill||"",t.lineWidth=i,this._drawToContext(t,e,r.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,r,i="nonzero"){t.beginPath();for(const n of e.ops){const e="number"==typeof r&&r>=0?n.data.map(t=>+t.toFixed(r)):n.data;switch(n.op){case"move":t.moveTo(e[0],e[1]);break;case"bcurveTo":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case"lineTo":t.lineTo(e[0],e[1])}}"fillPath"===e.type?t.fill(i):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,r,i,n){const a=this.gen.line(t,e,r,i,n);return this.draw(a),a}rectangle(t,e,r,i,n){const a=this.gen.rectangle(t,e,r,i,n);return this.draw(a),a}ellipse(t,e,r,i,n){const a=this.gen.ellipse(t,e,r,i,n);return this.draw(a),a}circle(t,e,r,i){const n=this.gen.circle(t,e,r,i);return this.draw(n),n}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r),r}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r),r}arc(t,e,r,i,n,a,o=!1,s){const l=this.gen.arc(t,e,r,i,n,a,o,s);return this.draw(l),l}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r),r}path(t,e){const r=this.gen.path(t,e);return this.draw(r),r}}const rt="http://www.w3.org/2000/svg";class it{constructor(t,e){this.svg=t,this.gen=new tt(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,n=i.createElementNS(rt,"g"),a=t.options.fixedDecimalPlaceDigits;for(const o of e){let e=null;switch(o.type){case"path":e=i.createElementNS(rt,"path"),e.setAttribute("d",this.opsToPath(o,a)),e.setAttribute("stroke",r.stroke),e.setAttribute("stroke-width",r.strokeWidth+""),e.setAttribute("fill","none"),r.strokeLineDash&&e.setAttribute("stroke-dasharray",r.strokeLineDash.join(" ").trim()),r.strokeLineDashOffset&&e.setAttribute("stroke-dashoffset",`${r.strokeLineDashOffset}`);break;case"fillPath":e=i.createElementNS(rt,"path"),e.setAttribute("d",this.opsToPath(o,a)),e.setAttribute("stroke","none"),e.setAttribute("stroke-width","0"),e.setAttribute("fill",r.fill||""),"curve"!==t.shape&&"polygon"!==t.shape||e.setAttribute("fill-rule","evenodd");break;case"fillSketch":e=this.fillSketch(i,o,r)}e&&n.appendChild(e)}return n}fillSketch(t,e,r){let i=r.fillWeight;i<0&&(i=r.strokeWidth/2);const n=t.createElementNS(rt,"path");return n.setAttribute("d",this.opsToPath(e,r.fixedDecimalPlaceDigits)),n.setAttribute("stroke",r.fill||""),n.setAttribute("stroke-width",i+""),n.setAttribute("fill","none"),r.fillLineDash&&n.setAttribute("stroke-dasharray",r.fillLineDash.join(" ").trim()),r.fillLineDashOffset&&n.setAttribute("stroke-dashoffset",`${r.fillLineDashOffset}`),n}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,r,i,n){const a=this.gen.line(t,e,r,i,n);return this.draw(a)}rectangle(t,e,r,i,n){const a=this.gen.rectangle(t,e,r,i,n);return this.draw(a)}ellipse(t,e,r,i,n){const a=this.gen.ellipse(t,e,r,i,n);return this.draw(a)}circle(t,e,r,i){const n=this.gen.circle(t,e,r,i);return this.draw(n)}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r)}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r)}arc(t,e,r,i,n,a,o=!1,s){const l=this.gen.arc(t,e,r,i,n,a,o,s);return this.draw(l)}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r)}path(t,e){const r=this.gen.path(t,e);return this.draw(r)}}var nt={canvas:(t,e)=>new et(t,e),svg:(t,e)=>new it(t,e),generator:t=>new tt(t),newSeed:()=>tt.newSeed()}},9912:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(1917);const n=function(){return!1};var a="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=a&&"object"==typeof module&&module&&!module.nodeType&&module,s=o&&o.exports===a?i.A.Buffer:void 0;const l=(s?s.isBuffer:void 0)||n}}]); \ No newline at end of file diff --git a/developer/assets/js/2279.b7d7fcca.js.LICENSE.txt b/developer/assets/js/2279.b7d7fcca.js.LICENSE.txt new file mode 100644 index 0000000..d0090da --- /dev/null +++ b/developer/assets/js/2279.b7d7fcca.js.LICENSE.txt @@ -0,0 +1 @@ +/*! @license DOMPurify 3.3.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.0/LICENSE */ diff --git a/developer/assets/js/2291.67b7a3dd.js b/developer/assets/js/2291.67b7a3dd.js new file mode 100644 index 0000000..3f0dea6 --- /dev/null +++ b/developer/assets/js/2291.67b7a3dd.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2291],{2291:(t,e,s)=>{s.d(e,{diagram:()=>D});var i=s(2501),n=s(3981),r=s(9625),a=s(1152),u=s(45),o=(s(5164),s(8698),s(5894)),l=(s(3245),s(2387),s(92),s(3226)),c=s(7633),h=s(797),d=s(451),p=s(5582),g=s(5937),A=class{constructor(){this.vertexCounter=0,this.config=(0,c.D7)(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=c.SV,this.setAccDescription=c.EI,this.setDiagramTitle=c.ke,this.getAccTitle=c.iN,this.getAccDescription=c.m7,this.getDiagramTitle=c.ab,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{(0,h.K2)(this,"FlowDB")}sanitizeText(t){return c.Y2.sanitizeText(t,this.config)}lookUpDomId(t){for(const e of this.vertices.values())if(e.id===t)return e.domId;return t}addVertex(t,e,s,i,r,a,u={},l){if(!t||0===t.trim().length)return;let h;if(void 0!==l){let t;t=l.includes("\n")?l+"\n":"{\n"+l+"\n}",h=(0,n.H)(t,{schema:n.r})}const d=this.edges.find(e=>e.id===t);if(d){const t=h;return void 0!==t?.animate&&(d.animate=t.animate),void 0!==t?.animation&&(d.animation=t.animation),void(void 0!==t?.curve&&(d.interpolate=t.curve))}let p,g=this.vertices.get(t);if(void 0===g&&(g={id:t,labelType:"text",domId:"flowchart-"+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,g)),this.vertexCounter++,void 0!==e?(this.config=(0,c.D7)(),p=this.sanitizeText(e.text.trim()),g.labelType=e.type,p.startsWith('"')&&p.endsWith('"')&&(p=p.substring(1,p.length-1)),g.text=p):void 0===g.text&&(g.text=t),void 0!==s&&(g.type=s),null!=i&&i.forEach(t=>{g.styles.push(t)}),null!=r&&r.forEach(t=>{g.classes.push(t)}),void 0!==a&&(g.dir=a),void 0===g.props?g.props=u:void 0!==u&&Object.assign(g.props,u),void 0!==h){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!(0,o.aP)(h.shape))throw new Error(`No such shape: ${h.shape}.`);g.type=h?.shape}h?.label&&(g.text=h?.label),h?.icon&&(g.icon=h?.icon,h.label?.trim()||g.text!==t||(g.text="")),h?.form&&(g.form=h?.form),h?.pos&&(g.pos=h?.pos),h?.img&&(g.img=h?.img,h.label?.trim()||g.text!==t||(g.text="")),h?.constraint&&(g.constraint=h.constraint),h.w&&(g.assetWidth=Number(h.w)),h.h&&(g.assetHeight=Number(h.h))}}addSingleLink(t,e,s,i){const n={start:t,end:e,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};h.Rm.info("abc78 Got edge...",n);const r=s.text;if(void 0!==r&&(n.text=this.sanitizeText(r.text.trim()),n.text.startsWith('"')&&n.text.endsWith('"')&&(n.text=n.text.substring(1,n.text.length-1)),n.labelType=r.type),void 0!==s&&(n.type=s.type,n.stroke=s.stroke,n.length=s.length>10?10:s.length),i&&!this.edges.some(t=>t.id===i))n.id=i,n.isUserDefinedId=!0;else{const t=this.edges.filter(t=>t.start===n.start&&t.end===n.end);0===t.length?n.id=(0,l.rY)(n.start,n.end,{counter:0,prefix:"L"}):n.id=(0,l.rY)(n.start,n.end,{counter:t.length+1,prefix:"L"})}if(!(this.edges.length<(this.config.maxEdges??500)))throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.\n\nInitialize mermaid with maxEdges set to a higher number to allow more edges.\nYou cannot set this config via configuration inside the diagram as it is a secure config.\nYou have to call mermaid.initialize.`);h.Rm.info("Pushing edge..."),this.edges.push(n)}isLinkData(t){return null!==t&&"object"==typeof t&&"id"in t&&"string"==typeof t.id}addLink(t,e,s){const i=this.isLinkData(s)?s.id.replace("@",""):void 0;h.Rm.info("addLink",t,e,i);for(const n of t)for(const r of e){const a=n===t[t.length-1],u=r===e[0];a&&u?this.addSingleLink(n,r,s,i):this.addSingleLink(n,r,s,void 0)}}updateLinkInterpolate(t,e){t.forEach(t=>{"default"===t?this.edges.defaultInterpolate=e:this.edges[t].interpolate=e})}updateLink(t,e){t.forEach(t=>{if("number"==typeof t&&t>=this.edges.length)throw new Error(`The index ${t} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);"default"===t?this.edges.defaultStyle=e:(this.edges[t].style=e,(this.edges[t]?.style?.length??0)>0&&!this.edges[t]?.style?.some(t=>t?.startsWith("fill"))&&this.edges[t]?.style?.push("fill:none"))})}addClass(t,e){const s=e.join().replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");t.split(",").forEach(t=>{let e=this.classes.get(t);void 0===e&&(e={id:t,styles:[],textStyles:[]},this.classes.set(t,e)),null!=s&&s.forEach(t=>{if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)})})}setDirection(t){this.direction=t.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),"TD"===this.direction&&(this.direction="TB")}setClass(t,e){for(const s of t.split(",")){const t=this.vertices.get(s);t&&t.classes.push(e);const i=this.edges.find(t=>t.id===s);i&&i.classes.push(e);const n=this.subGraphLookup.get(s);n&&n.classes.push(e)}}setTooltip(t,e){if(void 0!==e){e=this.sanitizeText(e);for(const s of t.split(","))this.tooltips.set("gen-1"===this.version?this.lookUpDomId(s):s,e)}}setClickFun(t,e,s){const i=this.lookUpDomId(t);if("loose"!==(0,c.D7)().securityLevel)return;if(void 0===e)return;let n=[];if("string"==typeof s){n=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{const t=document.querySelector(`[id="${i}"]`);null!==t&&t.addEventListener("click",()=>{l._K.runFunc(e,...n)},!1)}))}setLink(t,e,s){t.split(",").forEach(t=>{const i=this.vertices.get(t);void 0!==i&&(i.link=l._K.formatUrl(e,this.config),i.linkTarget=s)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,e,s){t.split(",").forEach(t=>{this.setClickFun(t,e,s)}),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach(e=>{e(t)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let e=(0,d.Ltv)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,d.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,d.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",t=>{const s=(0,d.Ltv)(t.currentTarget);if(null===s.attr("title"))return;const i=t.currentTarget?.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.bottom+"px"),e.html(e.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",t=>{e.transition().duration(500).style("opacity",0);(0,d.Ltv)(t.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=(0,c.D7)(),(0,c.IU)()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,e,s){let i=t.text.trim(),n=s.text;t===s&&/\s/.exec(s.text)&&(i=void 0);const r=(0,h.K2)(t=>{const e={boolean:{},number:{},string:{}},s=[];let i;return{nodeList:t.filter(function(t){const n=typeof t;return t.stmt&&"dir"===t.stmt?(i=t.value,!1):""!==t.trim()&&(n in e?!e[n].hasOwnProperty(t)&&(e[n][t]=!0):!s.includes(t)&&s.push(t))}),dir:i}},"uniq")(e.flat()),a=r.nodeList;let u=r.dir;const o=(0,c.D7)().flowchart??{};if(u=u??(o.inheritDir?this.getDirection()??(0,c.D7)().direction??void 0:void 0),"gen-1"===this.version)for(let c=0;c2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=e,this.subGraphs[e].id===t)return{result:!0,count:0};let i=0,n=1;for(;i=0){const s=this.indexNodes2(t,e);if(s.result)return{result:!0,count:n+s.count};n+=s.count}i+=1}return{result:!1,count:n}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return!!this.firstGraphFlag&&(this.firstGraphFlag=!1,!0)}destructStartLink(t){let e=t.trim(),s="arrow_open";switch(e[0]){case"<":s="arrow_point",e=e.slice(1);break;case"x":s="arrow_cross",e=e.slice(1);break;case"o":s="arrow_circle",e=e.slice(1)}let i="normal";return e.includes("=")&&(i="thick"),e.includes(".")&&(i="dotted"),{type:s,stroke:i}}countChar(t,e){const s=e.length;let i=0;for(let n=0;n":i="arrow_point",e.startsWith("<")&&(i="double_"+i,s=s.slice(1));break;case"o":i="arrow_circle",e.startsWith("o")&&(i="double_"+i,s=s.slice(1))}let n="normal",r=s.length-1;s.startsWith("=")&&(n="thick"),s.startsWith("~")&&(n="invisible");const a=this.countChar(".",s);return a&&(n="dotted",r=a),{type:i,stroke:n,length:r}}destructLink(t,e){const s=this.destructEndLink(t);let i;if(e){if(i=this.destructStartLink(e),i.stroke!==s.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===i.type)i.type=s.type;else{if(i.type!==s.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return"double_arrow"===i.type&&(i.type="double_arrow_point"),i.length=s.length,i}return s}exists(t,e){for(const s of t)if(s.nodes.includes(e))return!0;return!1}makeUniq(t,e){const s=[];return t.nodes.forEach((i,n)=>{this.exists(e,i)||s.push(t.nodes[n])}),{nodes:s}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return"circle"===t.form?"iconCircle":"square"===t.form?"iconSquare":"rounded"===t.form?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,e){return t.find(t=>t.id===e)}destructEdgeType(t){let e="none",s="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":s=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":e=t.replace("double_",""),s=e}return{arrowTypeStart:e,arrowTypeEnd:s}}addNodeFromVertex(t,e,s,i,n,r){const a=s.get(t.id),u=i.get(t.id)??!1,o=this.findNode(e,t.id);if(o)o.cssStyles=t.styles,o.cssCompiledStyles=this.getCompiledStyles(t.classes),o.cssClasses=t.classes.join(" ");else{const s={id:t.id,label:t.text,labelStyle:"",parentId:a,padding:n.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:r,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?e.push({...s,isGroup:!0,shape:"rect"}):e.push({...s,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}getData(){const t=(0,c.D7)(),e=[],s=[],i=this.getSubGraphs(),n=new Map,r=new Map;for(let u=i.length-1;u>=0;u--){const t=i[u];t.nodes.length>0&&r.set(t.id,!0);for(const e of t.nodes)n.set(e,t.id)}for(let u=i.length-1;u>=0;u--){const s=i[u];e.push({id:s.id,label:s.title,labelStyle:"",parentId:n.get(s.id),padding:8,cssCompiledStyles:this.getCompiledStyles(s.classes),cssClasses:s.classes.join(" "),shape:"rect",dir:s.dir,isGroup:!0,look:t.look})}this.getVertices().forEach(s=>{this.addNodeFromVertex(s,e,n,r,t,t.look||"classic")});const a=this.getEdges();return a.forEach((e,i)=>{const{arrowTypeStart:n,arrowTypeEnd:r}=this.destructEdgeType(e.type),u=[...a.defaultStyle??[]];e.style&&u.push(...e.style);const o={id:(0,l.rY)(e.start,e.end,{counter:i,prefix:"L"},e.id),isUserDefinedId:e.isUserDefinedId,start:e.start,end:e.end,type:e.type??"normal",label:e.text,labelpos:"c",thickness:e.stroke,minlen:e.length,classes:"invisible"===e?.stroke?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":n,arrowTypeEnd:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":r,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(e.classes),labelStyle:u,style:u,pattern:e.stroke,look:t.look,animate:e.animate,animation:e.animation,curve:e.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};s.push(o)}),{nodes:e,edges:s,other:{},config:t}}defaultConfig(){return c.ME.flowchart}},b={getClasses:(0,h.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,h.K2)(async function(t,e,s,i){h.Rm.info("REF0:"),h.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:n,flowchart:o,layout:p}=(0,c.D7)();let g;"sandbox"===n&&(g=(0,d.Ltv)("#i"+e));const A="sandbox"===n?g.nodes()[0].contentDocument:document;h.Rm.debug("Before getData: ");const b=i.db.getData();h.Rm.debug("Data: ",b);const k=(0,r.A)(e,n),y=i.db.getDirection();b.type=i.type,b.layoutAlgorithm=(0,u.q7)(p),"dagre"===b.layoutAlgorithm&&"elk"===p&&h.Rm.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),b.direction=y,b.nodeSpacing=o?.nodeSpacing||50,b.rankSpacing=o?.rankSpacing||50,b.markers=["point","circle","cross"],b.diagramId=e,h.Rm.debug("REF1:",b),await(0,u.XX)(b,k);const f=b.config.flowchart?.diagramPadding??8;l._K.insertTitle(k,"flowchartTitleText",o?.titleTopMargin||0,i.db.getDiagramTitle()),(0,a.P)(k,f,"flowchart",o?.useMaxWidth||!1);for(const r of b.nodes){const t=(0,d.Ltv)(`#${e} [id="${r.id}"]`);if(!t||!r.link)continue;const s=A.createElementNS("http://www.w3.org/2000/svg","a");s.setAttributeNS("http://www.w3.org/2000/svg","class",r.cssClasses),s.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===n?s.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):r.linkTarget&&s.setAttributeNS("http://www.w3.org/2000/svg","target",r.linkTarget);const i=t.insert(function(){return s},":first-child"),a=t.select(".label-container");a&&i.append(function(){return a.node()});const u=t.select(".label");u&&i.append(function(){return u.node()})}},"draw")},k=function(){var t=(0,h.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,4],s=[1,3],i=[1,5],n=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],r=[2,2],a=[1,13],u=[1,14],o=[1,15],l=[1,16],c=[1,23],d=[1,25],p=[1,26],g=[1,27],A=[1,49],b=[1,48],k=[1,29],y=[1,30],f=[1,31],m=[1,32],E=[1,33],C=[1,44],D=[1,46],T=[1,42],x=[1,47],S=[1,43],F=[1,50],_=[1,45],v=[1,51],B=[1,52],w=[1,34],L=[1,35],$=[1,36],I=[1,37],R=[1,57],N=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],P=[1,61],G=[1,60],K=[1,62],O=[8,9,11,75,77,78],M=[1,78],U=[1,91],V=[1,96],W=[1,95],Y=[1,92],j=[1,88],z=[1,94],X=[1,90],H=[1,97],q=[1,93],Q=[1,98],Z=[1,89],J=[8,9,10,11,40,75,77,78],tt=[8,9,10,11,40,46,75,77,78],et=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],st=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],it=[44,60,89,102,105,106,109,111,114,115,116],nt=[1,121],rt=[1,122],at=[1,124],ut=[1,123],ot=[44,60,62,74,89,102,105,106,109,111,114,115,116],lt=[1,133],ct=[1,147],ht=[1,148],dt=[1,149],pt=[1,150],gt=[1,135],At=[1,137],bt=[1,141],kt=[1,142],yt=[1,143],ft=[1,144],mt=[1,145],Et=[1,146],Ct=[1,151],Dt=[1,152],Tt=[1,131],xt=[1,132],St=[1,139],Ft=[1,134],_t=[1,138],vt=[1,136],Bt=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],wt=[1,154],Lt=[1,156],$t=[8,9,11],It=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],Rt=[1,176],Nt=[1,172],Pt=[1,173],Gt=[1,177],Kt=[1,174],Ot=[1,175],Mt=[77,116,119],Ut=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],Vt=[10,106],Wt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Yt=[1,247],jt=[1,245],zt=[1,249],Xt=[1,243],Ht=[1,244],qt=[1,246],Qt=[1,248],Zt=[1,250],Jt=[1,268],te=[8,9,11,106],ee=[8,9,10,11,60,84,105,106,109,110,111,112],se={trace:(0,h.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:(0,h.K2)(function(t,e,s,i,n,r,a){var u=r.length-1;switch(n){case 2:case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 3:(!Array.isArray(r[u])||r[u].length>0)&&r[u-1].push(r[u]),this.$=r[u-1];break;case 4:case 183:case 44:case 54:case 76:case 181:this.$=r[u];break;case 11:i.setDirection("TB"),this.$="TB";break;case 12:i.setDirection(r[u-1]),this.$=r[u-1];break;case 27:this.$=r[u-1].nodes;break;case 33:this.$=i.addSubGraph(r[u-6],r[u-1],r[u-4]);break;case 34:this.$=i.addSubGraph(r[u-3],r[u-1],r[u-3]);break;case 35:this.$=i.addSubGraph(void 0,r[u-1],void 0);break;case 37:this.$=r[u].trim(),i.setAccTitle(this.$);break;case 38:case 39:this.$=r[u].trim(),i.setAccDescription(this.$);break;case 43:case 133:this.$=r[u-1]+r[u];break;case 45:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 46:i.addLink(r[u-2].stmt,r[u],r[u-1]),this.$={stmt:r[u],nodes:r[u].concat(r[u-2].nodes)};break;case 47:i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 48:this.$={stmt:r[u-1],nodes:r[u-1]};break;case 49:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),this.$={stmt:r[u-1],nodes:r[u-1],shapeData:r[u]};break;case 50:this.$={stmt:r[u],nodes:r[u]};break;case 51:case 128:case 130:this.$=[r[u]];break;case 52:i.addVertex(r[u-5][r[u-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u-4]),this.$=r[u-5].concat(r[u]);break;case 53:this.$=r[u-4].concat(r[u]);break;case 55:this.$=r[u-2],i.setClass(r[u-2],r[u]);break;case 56:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"square");break;case 57:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"doublecircle");break;case 58:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"circle");break;case 59:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"ellipse");break;case 60:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"stadium");break;case 61:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"subroutine");break;case 62:this.$=r[u-7],i.addVertex(r[u-7],r[u-1],"rect",void 0,void 0,void 0,Object.fromEntries([[r[u-5],r[u-3]]]));break;case 63:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"cylinder");break;case 64:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"round");break;case 65:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"diamond");break;case 66:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"hexagon");break;case 67:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"odd");break;case 68:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"trapezoid");break;case 69:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"inv_trapezoid");break;case 70:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_right");break;case 71:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_left");break;case 72:this.$=r[u],i.addVertex(r[u]);break;case 73:r[u-1].text=r[u],this.$=r[u-1];break;case 74:case 75:r[u-2].text=r[u-1],this.$=r[u-2];break;case 77:var o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1]};break;case 78:o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1],id:r[u-3]};break;case 79:case 86:case 101:case 103:this.$={text:r[u],type:"text"};break;case 80:case 87:case 102:this.$={text:r[u-1].text+""+r[u],type:r[u-1].type};break;case 81:case 88:this.$={text:r[u],type:"string"};break;case 82:case 89:case 104:this.$={text:r[u],type:"markdown"};break;case 83:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length};break;case 84:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length,id:r[u-1]};break;case 85:this.$=r[u-1];break;case 105:this.$=r[u-4],i.addClass(r[u-2],r[u]);break;case 106:this.$=r[u-4],i.setClass(r[u-2],r[u]);break;case 107:case 115:this.$=r[u-1],i.setClickEvent(r[u-1],r[u]);break;case 108:case 116:this.$=r[u-3],i.setClickEvent(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 109:this.$=r[u-2],i.setClickEvent(r[u-2],r[u-1],r[u]);break;case 110:this.$=r[u-4],i.setClickEvent(r[u-4],r[u-3],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 111:this.$=r[u-2],i.setLink(r[u-2],r[u]);break;case 112:this.$=r[u-4],i.setLink(r[u-4],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 113:this.$=r[u-4],i.setLink(r[u-4],r[u-2],r[u]);break;case 114:this.$=r[u-6],i.setLink(r[u-6],r[u-4],r[u]),i.setTooltip(r[u-6],r[u-2]);break;case 117:this.$=r[u-1],i.setLink(r[u-1],r[u]);break;case 118:this.$=r[u-3],i.setLink(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 119:this.$=r[u-3],i.setLink(r[u-3],r[u-2],r[u]);break;case 120:this.$=r[u-5],i.setLink(r[u-5],r[u-4],r[u]),i.setTooltip(r[u-5],r[u-2]);break;case 121:this.$=r[u-4],i.addVertex(r[u-2],void 0,void 0,r[u]);break;case 122:this.$=r[u-4],i.updateLink([r[u-2]],r[u]);break;case 123:this.$=r[u-4],i.updateLink(r[u-2],r[u]);break;case 124:this.$=r[u-8],i.updateLinkInterpolate([r[u-6]],r[u-2]),i.updateLink([r[u-6]],r[u]);break;case 125:this.$=r[u-8],i.updateLinkInterpolate(r[u-6],r[u-2]),i.updateLink(r[u-6],r[u]);break;case 126:this.$=r[u-6],i.updateLinkInterpolate([r[u-4]],r[u]);break;case 127:this.$=r[u-6],i.updateLinkInterpolate(r[u-4],r[u]);break;case 129:case 131:r[u-2].push(r[u]),this.$=r[u-2];break;case 182:case 184:this.$=r[u-1]+""+r[u];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"}}},"anonymous"),table:[{3:1,4:2,9:e,10:s,12:i},{1:[3]},t(n,r,{5:6}),{4:7,9:e,10:s,12:i},{4:8,9:e,10:s,12:i},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:k,85:y,86:f,87:m,88:E,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},t(n,[2,9]),t(n,[2,10]),t(n,[2,11]),{8:[1,54],9:[1,55],10:R,15:53,18:56},t(N,[2,3]),t(N,[2,4]),t(N,[2,5]),t(N,[2,6]),t(N,[2,7]),t(N,[2,8]),{8:P,9:G,11:K,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:P,9:G,11:K,21:67},{8:P,9:G,11:K,21:68},{8:P,9:G,11:K,21:69},{8:P,9:G,11:K,21:70},{8:P,9:G,11:K,21:71},{8:P,9:G,10:[1,72],11:K,21:73},t(N,[2,36]),{35:[1,74]},{37:[1,75]},t(N,[2,39]),t(O,[2,50],{18:76,39:77,10:R,40:M}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:U,44:V,60:W,80:[1,86],89:Y,95:[1,83],97:[1,84],101:85,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},t(N,[2,185]),t(N,[2,186]),t(N,[2,187]),t(N,[2,188]),t(J,[2,51]),t(J,[2,54],{46:[1,99]}),t(tt,[2,72],{113:112,29:[1,100],44:A,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:b,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:C,102:D,105:T,106:x,109:S,111:F,114:_,115:v,116:B}),t(et,[2,181]),t(et,[2,142]),t(et,[2,143]),t(et,[2,144]),t(et,[2,145]),t(et,[2,146]),t(et,[2,147]),t(et,[2,148]),t(et,[2,149]),t(et,[2,150]),t(et,[2,151]),t(et,[2,152]),t(n,[2,12]),t(n,[2,18]),t(n,[2,19]),{9:[1,113]},t(st,[2,26],{18:114,10:R}),t(N,[2,27]),{42:115,43:38,44:A,45:39,47:40,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},t(N,[2,40]),t(N,[2,41]),t(N,[2,42]),t(it,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:nt,81:rt,116:at,119:ut},{75:[1,125],77:[1,126]},t(ot,[2,83]),t(N,[2,28]),t(N,[2,29]),t(N,[2,30]),t(N,[2,31]),t(N,[2,32]),{10:lt,12:ct,14:ht,27:dt,28:127,32:pt,44:gt,60:At,75:bt,80:[1,129],81:[1,130],83:140,84:kt,85:yt,86:ft,87:mt,88:Et,89:Ct,90:Dt,91:128,105:Tt,109:xt,111:St,114:Ft,115:_t,116:vt},t(Bt,r,{5:153}),t(N,[2,37]),t(N,[2,38]),t(O,[2,48],{44:wt}),t(O,[2,49],{18:155,10:R,40:Lt}),t(J,[2,44]),{44:A,47:157,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},{102:[1,158],103:159,105:[1,160]},{44:A,47:161,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},{44:A,47:162,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t($t,[2,115],{120:167,10:[1,166],14:U,44:V,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,117],{10:[1,168]}),t(It,[2,183]),t(It,[2,170]),t(It,[2,171]),t(It,[2,172]),t(It,[2,173]),t(It,[2,174]),t(It,[2,175]),t(It,[2,176]),t(It,[2,177]),t(It,[2,178]),t(It,[2,179]),t(It,[2,180]),{44:A,47:169,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},{30:170,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:178,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:180,50:[1,179],67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:181,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:182,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:183,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{109:[1,184]},{30:185,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:186,65:[1,187],67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:188,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:189,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:190,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},t(et,[2,182]),t(n,[2,20]),t(st,[2,25]),t(O,[2,46],{39:191,18:192,10:R,40:M}),t(it,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{77:[1,196],79:197,116:at,119:ut},t(Mt,[2,79]),t(Mt,[2,81]),t(Mt,[2,82]),t(Mt,[2,168]),t(Mt,[2,169]),{76:198,79:120,80:nt,81:rt,116:at,119:ut},t(ot,[2,84]),{8:P,9:G,10:lt,11:K,12:ct,14:ht,21:200,27:dt,29:[1,199],32:pt,44:gt,60:At,75:bt,83:140,84:kt,85:yt,86:ft,87:mt,88:Et,89:Ct,90:Dt,91:201,105:Tt,109:xt,111:St,114:Ft,115:_t,116:vt},t(Ut,[2,101]),t(Ut,[2,103]),t(Ut,[2,104]),t(Ut,[2,157]),t(Ut,[2,158]),t(Ut,[2,159]),t(Ut,[2,160]),t(Ut,[2,161]),t(Ut,[2,162]),t(Ut,[2,163]),t(Ut,[2,164]),t(Ut,[2,165]),t(Ut,[2,166]),t(Ut,[2,167]),t(Ut,[2,90]),t(Ut,[2,91]),t(Ut,[2,92]),t(Ut,[2,93]),t(Ut,[2,94]),t(Ut,[2,95]),t(Ut,[2,96]),t(Ut,[2,97]),t(Ut,[2,98]),t(Ut,[2,99]),t(Ut,[2,100]),{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,202],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:k,85:y,86:f,87:m,88:E,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},{10:R,18:203},{44:[1,204]},t(J,[2,43]),{10:[1,205],44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:112,114:_,115:v,116:B},{10:[1,206]},{10:[1,207],106:[1,208]},t(Vt,[2,128]),{10:[1,209],44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:112,114:_,115:v,116:B},{10:[1,210],44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:112,114:_,115:v,116:B},{80:[1,211]},t($t,[2,109],{10:[1,212]}),t($t,[2,111],{10:[1,213]}),{80:[1,214]},t(It,[2,184]),{80:[1,215],98:[1,216]},t(J,[2,55],{113:112,44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,114:_,115:v,116:B}),{31:[1,217],67:Rt,82:218,116:Gt,117:Kt,118:Ot},t(Wt,[2,86]),t(Wt,[2,88]),t(Wt,[2,89]),t(Wt,[2,153]),t(Wt,[2,154]),t(Wt,[2,155]),t(Wt,[2,156]),{49:[1,219],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{30:220,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{51:[1,221],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{53:[1,222],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{55:[1,223],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{57:[1,224],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{60:[1,225]},{64:[1,226],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{66:[1,227],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{30:228,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{31:[1,229],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{67:Rt,69:[1,230],71:[1,231],82:218,116:Gt,117:Kt,118:Ot},{67:Rt,69:[1,233],71:[1,232],82:218,116:Gt,117:Kt,118:Ot},t(O,[2,45],{18:155,10:R,40:Lt}),t(O,[2,47],{44:wt}),t(it,[2,75]),t(it,[2,74]),{62:[1,234],67:Rt,82:218,116:Gt,117:Kt,118:Ot},t(it,[2,77]),t(Mt,[2,80]),{77:[1,235],79:197,116:at,119:ut},{30:236,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},t(Bt,r,{5:237}),t(Ut,[2,102]),t(N,[2,35]),{43:238,44:A,45:39,47:40,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},{10:R,18:239},{10:Yt,60:jt,84:zt,92:240,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:251,104:[1,252],105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:253,104:[1,254],105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{105:[1,255]},{10:Yt,60:jt,84:zt,92:256,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{44:A,47:257,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t($t,[2,116]),t($t,[2,118],{10:[1,261]}),t($t,[2,119]),t(tt,[2,56]),t(Wt,[2,87]),t(tt,[2,57]),{51:[1,262],67:Rt,82:218,116:Gt,117:Kt,118:Ot},t(tt,[2,64]),t(tt,[2,59]),t(tt,[2,60]),t(tt,[2,61]),{109:[1,263]},t(tt,[2,63]),t(tt,[2,65]),{66:[1,264],67:Rt,82:218,116:Gt,117:Kt,118:Ot},t(tt,[2,67]),t(tt,[2,68]),t(tt,[2,70]),t(tt,[2,69]),t(tt,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(it,[2,78]),{31:[1,265],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,266],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:k,85:y,86:f,87:m,88:E,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},t(J,[2,53]),{43:267,44:A,45:39,47:40,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,121],{106:Jt}),t(te,[2,130],{108:269,10:Yt,60:jt,84:zt,105:Xt,109:Ht,110:qt,111:Qt,112:Zt}),t(ee,[2,132]),t(ee,[2,134]),t(ee,[2,135]),t(ee,[2,136]),t(ee,[2,137]),t(ee,[2,138]),t(ee,[2,139]),t(ee,[2,140]),t(ee,[2,141]),t($t,[2,122],{106:Jt}),{10:[1,270]},t($t,[2,123],{106:Jt}),{10:[1,271]},t(Vt,[2,129]),t($t,[2,105],{106:Jt}),t($t,[2,106],{113:112,44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,114:_,115:v,116:B}),t($t,[2,110]),t($t,[2,112],{10:[1,272]}),t($t,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:P,9:G,11:K,21:277},t(N,[2,34]),t(J,[2,52]),{10:Yt,60:jt,84:zt,105:Xt,107:278,108:242,109:Ht,110:qt,111:Qt,112:Zt},t(ee,[2,133]),{14:U,44:V,60:W,89:Y,101:279,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},{14:U,44:V,60:W,89:Y,101:280,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},{98:[1,281]},t($t,[2,120]),t(tt,[2,58]),{30:282,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},t(tt,[2,66]),t(Bt,r,{5:283}),t(te,[2,131],{108:269,10:Yt,60:jt,84:zt,105:Xt,109:Ht,110:qt,111:Qt,112:Zt}),t($t,[2,126],{120:167,10:[1,284],14:U,44:V,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,127],{120:167,10:[1,285],14:U,44:V,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,114]),{31:[1,286],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,287],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:k,85:y,86:f,87:m,88:E,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},{10:Yt,60:jt,84:zt,92:288,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:289,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},t(tt,[2,62]),t(N,[2,33]),t($t,[2,124],{106:Jt}),t($t,[2,125],{106:Jt})],defaultActions:{},parseError:(0,h.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,h.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,u="",o=0,l=0,c=0,d=r.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(g.yy[A]=this.yy[A]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;r.push(b);var k=p.options&&p.options.ranges;function y(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,h.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,h.K2)(y,"lex");for(var f,m,E,C,D,T,x,S,F,_={};;){if(E=s[s.length-1],this.defaultActions[E]?C=this.defaultActions[E]:(null==f&&(f=y()),C=a[E]&&a[E][f]),void 0===C||!C.length||!C[0]){var v="";for(T in F=[],a[E])this.terminals_[T]&&T>2&&F.push("'"+this.terminals_[T]+"'");v=p.showPosition?"Parse error on line "+(o+1)+":\n"+p.showPosition()+"\nExpecting "+F.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(v,{text:p.match,token:this.terminals_[f]||f,line:p.yylineno,loc:b,expected:F})}if(C[0]instanceof Array&&C.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+f);switch(C[0]){case 1:s.push(f),n.push(p.yytext),r.push(p.yylloc),s.push(C[1]),f=null,m?(f=m,m=null):(l=p.yyleng,u=p.yytext,o=p.yylineno,b=p.yylloc,c>0&&c--);break;case 2:if(x=this.productions_[C[1]][1],_.$=n[n.length-x],_._$={first_line:r[r.length-(x||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(x||1)].first_column,last_column:r[r.length-1].last_column},k&&(_._$.range=[r[r.length-(x||1)].range[0],r[r.length-1].range[1]]),void 0!==(D=this.performAction.apply(_,[u,l,o,g.yy,C[1],n,r].concat(d))))return D;x&&(s=s.slice(0,-1*x*2),n=n.slice(0,-1*x),r=r.slice(0,-1*x)),s.push(this.productions_[C[1]][0]),n.push(_.$),r.push(_._$),S=a[s[s.length-2]][s[s.length-1]],s.push(S);break;case 3:return!0}}return!0},"parse")},ie=function(){return{EOF:1,parseError:(0,h.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,h.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,h.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,h.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,h.K2)(function(){return this._more=!0,this},"more"),reject:(0,h.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,h.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,h.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,h.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,h.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,h.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,h.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,h.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,h.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,h.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,h.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,h.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,h.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,h.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,h.K2)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:case 12:case 14:case 17:case 20:case 23:case 33:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),e.yytext="",40;case 8:return this.pushState("shapeDataStr"),40;case 9:return this.popState(),40;case 10:const s=/\n\s*/g;return e.yytext=e.yytext.replace(s,"
    "),40;case 11:return 40;case 13:this.begin("callbackname");break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 18:return 96;case 19:return"MD_STR";case 21:this.begin("md_string");break;case 22:return"STR";case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 34:return 88;case 35:case 36:case 37:return t.lex.firstGraph()&&this.begin("dir"),12;case 38:return 27;case 39:return 32;case 40:case 41:case 42:case 43:return 98;case 44:return this.popState(),13;case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:return this.popState(),14;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:case 102:return 111;case 62:return 46;case 63:return 60;case 64:case 103:return 44;case 65:return 8;case 66:return 106;case 67:case 101:return 115;case 68:case 71:case 74:return this.popState(),77;case 69:return this.pushState("edgeText"),75;case 70:case 73:case 76:return 119;case 72:return this.pushState("thickEdgeText"),75;case 75:return this.pushState("dottedEdgeText"),75;case 77:return 77;case 78:return this.popState(),53;case 79:case 115:return"TEXT";case 80:return this.pushState("ellipseText"),52;case 81:return this.popState(),55;case 82:return this.pushState("text"),54;case 83:return this.popState(),57;case 84:return this.pushState("text"),56;case 85:return 58;case 86:return this.pushState("text"),67;case 87:return this.popState(),64;case 88:return this.pushState("text"),63;case 89:return this.popState(),49;case 90:return this.pushState("text"),48;case 91:return this.popState(),69;case 92:return this.popState(),71;case 93:return 117;case 94:return this.pushState("trapText"),68;case 95:return this.pushState("trapText"),70;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;case 108:return this.pushState("text"),62;case 109:return this.popState(),51;case 110:return this.pushState("text"),50;case 111:return this.popState(),31;case 112:return this.pushState("text"),29;case 113:return this.popState(),66;case 114:return this.pushState("text"),65;case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}}}();function ne(){this.yy={}}return se.lexer=ie,(0,h.K2)(ne,"Parser"),ne.prototype=se,se.Parser=ne,new ne}();k.parser=k;var y=k,f=Object.assign({},y);f.parse=t=>{const e=t.replace(/}\s*\n/g,"}\n");return y.parse(e)};var m=f,E=(0,h.K2)((t,e)=>{const s=g.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return p.A(i,n,r,e)},"fade"),C=(0,h.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .katex path {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n }\n\n .rough-node .label,.node .label, .image-shape .label, .icon-shape .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n\n .root .anchor path {\n fill: ${t.lineColor} !important;\n stroke-width: 0;\n stroke: ${t.lineColor};\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${E(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n\n rect.text {\n fill: none;\n stroke-width: 0;\n }\n\n .icon-shape, .image-shape {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n padding: 2px;\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n ${(0,i.o)()}\n`,"getStyles"),D={parser:m,get db(){return new A},renderer:b,styles:C,init:(0,h.K2)(t=>{t.flowchart||(t.flowchart={}),t.layout&&(0,c.XV)({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,(0,c.XV)({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}},2501:(t,e,s)=>{s.d(e,{o:()=>i});var i=(0,s(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},5937:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(2453),n=s(4886);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])}}]); \ No newline at end of file diff --git a/developer/assets/js/2325.deeb2169.js b/developer/assets/js/2325.deeb2169.js new file mode 100644 index 0000000..10deaed --- /dev/null +++ b/developer/assets/js/2325.deeb2169.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2325],{2325:(e,s,c)=>{c.d(s,{createPacketServices:()=>l.$});var l=c(1477);c(7960)}}]); \ No newline at end of file diff --git a/developer/assets/js/2334.31d26c70.js b/developer/assets/js/2334.31d26c70.js new file mode 100644 index 0000000..7b731f2 --- /dev/null +++ b/developer/assets/js/2334.31d26c70.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2334],{697:(e,n,t)=>{t.d(n,{T:()=>r.T});var r=t(7981)},2334:(e,n,t)=>{t.d(n,{Zp:()=>Rn});var r=t(8058),o=t(8894),i=0;const u=function(e){var n=++i;return(0,o.A)(e)+n};var a=t(9142),s=t(4098),d=t(4722),c=Math.ceil,h=Math.max;const f=function(e,n,t,r){for(var o=-1,i=h(c((n-e)/(t||1)),0),u=Array(i);i--;)u[r?i:++o]=e,e+=t;return u};var g=t(6832),l=t(4342);const v=function(e){return function(n,t,r){return r&&"number"!=typeof r&&(0,g.A)(n,t,r)&&(t=r=void 0),n=(0,l.A)(n),void 0===t?(t=n,n=0):t=(0,l.A)(t),r=void 0===r?n0;--a)if(r=n[a].dequeue()){o=o.concat(_(e,n,t,r,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return s.A(d.A(o,function(n){return e.outEdges(n.v,n.w)}))}function _(e,n,t,o,i){var u=i?[]:void 0;return r.A(e.inEdges(o.v),function(r){var o=e.edge(r),a=e.node(r.v);i&&u.push({v:r.v,w:r.w}),a.out-=o,E(n,t,a)}),r.A(e.outEdges(o.v),function(r){var o=e.edge(r),i=r.w,u=e.node(i);u.in-=o,E(n,t,u)}),e.removeNode(o.v),u}function E(e,n,t){t.out?t.in?e[t.out-t.in+n].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)}function x(e){var n="greedy"===e.graph().acyclicer?y(e,function(e){return function(n){return e.edge(n).weight}}(e)):function(e){var n=[],t={},o={};function i(u){Object.prototype.hasOwnProperty.call(o,u)||(o[u]=!0,t[u]=!0,r.A(e.outEdges(u),function(e){Object.prototype.hasOwnProperty.call(t,e.w)?n.push(e):i(e.w)}),delete t[u])}return r.A(e.nodes(),i),n}(e);r.A(n,function(n){var t=e.edge(n);e.removeEdge(n),t.forwardName=n.name,t.reversed=!0,e.setEdge(n.w,n.v,t,u("rev"))})}var k=t(2837),O=t(9354),N=t(9188);const P=function(e,n){return(0,O.A)(e,n,function(n,t){return(0,N.A)(e,t)})};var C=t(6875),j=t(7525);const L=function(e){return(0,j.A)((0,C.A)(e,void 0,s.A),e+"")}(function(e,n){return null==e?{}:P(e,n)});var I=t(3068),T=t(2559);const M=function(e,n){return e>n};var R=t(9008);const F=function(e){return e&&e.length?(0,T.A)(e,R.A,M):void 0};var D=t(6666),S=t(2528),G=t(9841),V=t(3958);const B=function(e,n){var t={};return n=(0,V.A)(n,3),(0,G.A)(e,function(e,r,o){(0,S.A)(t,r,n(e,r,o))}),t};var q=t(9592),Y=t(6452),z=t(8585),J=t(1917);const Z=function(){return J.A.Date.now()};function H(e,n,t,r){var o;do{o=u(r)}while(e.hasNode(o));return t.dummy=n,e.setNode(o,t),o}function K(e){var n=new p.T({multigraph:e.isMultigraph()}).setGraph(e.graph());return r.A(e.nodes(),function(t){e.children(t).length||n.setNode(t,e.node(t))}),r.A(e.edges(),function(t){n.setEdge(t,e.edge(t))}),n}function Q(e,n){var t,r,o=e.x,i=e.y,u=n.x-o,a=n.y-i,s=e.width/2,d=e.height/2;if(!u&&!a)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(a)*s>Math.abs(u)*d?(a<0&&(d=-d),t=d*u/a,r=d):(u<0&&(s=-s),t=s,r=s*a/u),{x:o+t,y:i+r}}function U(e){var n=d.A(v(X(e)+1),function(){return[]});return r.A(e.nodes(),function(t){var r=e.node(t),o=r.rank;q.A(o)||(n[o][r.order]=t)}),n}function W(e,n,t,r){var o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),H(e,"border",o,n)}function X(e){return F(d.A(e.nodes(),function(n){var t=e.node(n).rank;if(!q.A(t))return t}))}function $(e,n){var t=Z();try{return n()}finally{console.log(e+" time: "+(Z()-t)+"ms")}}function ee(e,n){return n()}function ne(e,n,t,r,o,i){var u={width:0,height:0,rank:i,borderType:n},a=o[n][i-1],s=H(e,"border",u,t);o[n][i]=s,e.setParent(s,r),a&&e.setEdge(a,s,{weight:1})}function te(e){var n=e.graph().rankdir.toLowerCase();"bt"!==n&&"rl"!==n||function(e){r.A(e.nodes(),function(n){ie(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);r.A(t.points,ie),Object.prototype.hasOwnProperty.call(t,"y")&&ie(t)})}(e),"lr"!==n&&"rl"!==n||(!function(e){r.A(e.nodes(),function(n){ue(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);r.A(t.points,ue),Object.prototype.hasOwnProperty.call(t,"x")&&ue(t)})}(e),re(e))}function re(e){r.A(e.nodes(),function(n){oe(e.node(n))}),r.A(e.edges(),function(n){oe(e.edge(n))})}function oe(e){var n=e.width;e.width=e.height,e.height=n}function ie(e){e.y=-e.y}function ue(e){var n=e.x;e.x=e.y,e.y=n}function ae(e){e.graph().dummyChains=[],r.A(e.edges(),function(n){!function(e,n){var t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,u=n.name,a=e.edge(n),s=a.labelRank;if(i===r+1)return;e.removeEdge(n);var d,c,h=void 0;for(c=0,++r;ru.lim&&(a=u,s=!0);var d=Ae.A(n.edges(),function(n){return s===Be(e,e.node(n.v),a)&&s!==Be(e,e.node(n.w),a)});return de(d,function(e){return he(n,e)})}function Ve(e,n,t,o){var i=t.v,u=t.w;e.removeEdge(i,u),e.setEdge(o.v,o.w,{}),Fe(e),Me(e,n),function(e,n){var t=pe.A(e.nodes(),function(e){return!n.node(e).parent}),o=function(e,n){return Le(e,n,"pre")}(e,t);o=o.slice(1),r.A(o,function(t){var r=e.node(t).parent,o=n.edge(t,r),i=!1;o||(o=n.edge(r,t),i=!0),n.node(t).rank=n.node(r).rank+(i?o.minlen:-o.minlen)})}(e,n)}function Be(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}function qe(e){switch(e.graph().ranker){case"network-simplex":default:ze(e);break;case"tight-tree":!function(e){ce(e),fe(e)}(e);break;case"longest-path":Ye(e)}}Te.initLowLimValues=Fe,Te.initCutValues=Me,Te.calcCutValue=Re,Te.leaveEdge=Se,Te.enterEdge=Ge,Te.exchangeEdges=Ve;var Ye=ce;function ze(e){Te(e)}var Je=t(8207),Ze=t(9463);function He(e){var n=H(e,"root",{},"_root"),t=function(e){var n={};function t(o,i){var u=e.children(o);u&&u.length&&r.A(u,function(e){t(e,i+1)}),n[o]=i}return r.A(e.children(),function(e){t(e,1)}),n}(e),o=F(Je.A(t))-1,i=2*o+1;e.graph().nestingRoot=n,r.A(e.edges(),function(n){e.edge(n).minlen*=i});var u=function(e){return Ze.A(e.edges(),function(n,t){return n+e.edge(t).weight},0)}(e)+1;r.A(e.children(),function(r){Ke(e,n,i,u,o,t,r)}),e.graph().nodeRankFactor=i}function Ke(e,n,t,o,i,u,a){var s=e.children(a);if(s.length){var d=W(e,"_bt"),c=W(e,"_bb"),h=e.node(a);e.setParent(d,a),h.borderTop=d,e.setParent(c,a),h.borderBottom=c,r.A(s,function(r){Ke(e,n,t,o,i,u,r);var s=e.node(r),h=s.borderTop?s.borderTop:r,f=s.borderBottom?s.borderBottom:r,g=s.borderTop?o:2*o,l=h!==f?1:i-u[a]+1;e.setEdge(d,h,{weight:g,minlen:l,nestingEdge:!0}),e.setEdge(f,c,{weight:g,minlen:l,nestingEdge:!0})}),e.parent(a)||e.setEdge(n,d,{weight:0,minlen:i+u[a]})}else a!==n&&e.setEdge(n,a,{weight:0,minlen:t})}var Qe=t(8675);const Ue=function(e){return(0,Qe.A)(e,5)};function We(e,n,t){var o=function(e){var n;for(;e.hasNode(n=u("_root")););return n}(e),i=new p.T({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(n){return e.node(n)});return r.A(e.nodes(),function(u){var a=e.node(u),s=e.parent(u);(a.rank===n||a.minRank<=n&&n<=a.maxRank)&&(i.setNode(u),i.setParent(u,s||o),r.A(e[t](u),function(n){var t=n.v===u?n.w:n.v,r=i.edge(t,u),o=q.A(r)?0:r.weight;i.setEdge(t,u,{weight:e.edge(n).weight+o})}),Object.prototype.hasOwnProperty.call(a,"minRank")&&i.setNode(u,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]}))}),i}var Xe=t(2851);const $e=function(e,n,t){for(var r=-1,o=e.length,i=n.length,u={};++rn||i&&u&&s&&!a&&!d||r&&u&&s||!t&&s||!o)return 1;if(!r&&!i&&!d&&e=a?s:s*("desc"==t[r]?-1:1)}return e.index-n.index};const hn=function(e,n,t){n=n.length?(0,tn.A)(n,function(e){return(0,je.A)(e)?function(n){return(0,rn.A)(n,1===e.length?e[0]:e)}:e}):[R.A];var r=-1;n=(0,tn.A)(n,(0,an.A)(V.A));var o=(0,on.A)(e,function(e,t,o){return{criteria:(0,tn.A)(n,function(n){return n(e)}),index:++r,value:e}});return un(o,function(e,n){return cn(e,n,t)})};const fn=(0,t(4326).A)(function(e,n){if(null==e)return[];var t=n.length;return t>1&&(0,g.A)(e,n[0],n[1])?n=[]:t>2&&(0,g.A)(n[0],n[1],n[2])&&(n=[n[0]]),hn(e,(0,nn.A)(n,1),[])});function gn(e,n){for(var t=0,r=1;r0;)n%2&&(t+=c[n+1]),c[n=n-1>>1]+=e.weight;h+=e.weight*t})),h}function vn(e,n){var t={};return r.A(e,function(e,n){var r=t[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:n};q.A(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)}),r.A(n.edges(),function(e){var n=t[e.v],r=t[e.w];q.A(n)||q.A(r)||(r.indegree++,n.out.push(t[e.w]))}),function(e){var n=[];function t(e){return function(n){n.merged||(q.A(n.barycenter)||q.A(e.barycenter)||n.barycenter>=e.barycenter)&&function(e,n){var t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight);n.weight&&(t+=n.barycenter*n.weight,r+=n.weight);e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=!0}(e,n)}}function o(n){return function(t){t.in.push(n),0===--t.indegree&&e.push(t)}}for(;e.length;){var i=e.pop();n.push(i),r.A(i.in.reverse(),t(i)),r.A(i.out,o(i))}return d.A(Ae.A(n,function(e){return!e.merged}),function(e){return L(e,["vs","i","barycenter","weight"])})}(Ae.A(t,function(e){return!e.indegree}))}function pn(e,n){var t,o=function(e,n){var t={lhs:[],rhs:[]};return r.A(e,function(e){n(e)?t.lhs.push(e):t.rhs.push(e)}),t}(e,function(e){return Object.prototype.hasOwnProperty.call(e,"barycenter")}),i=o.lhs,u=fn(o.rhs,function(e){return-e.i}),a=[],d=0,c=0,h=0;i.sort((t=!!n,function(e,n){return e.barycentern.barycenter?1:t?n.i-e.i:e.i-n.i})),h=An(a,u,h),r.A(i,function(e){h+=e.vs.length,a.push(e.vs),d+=e.barycenter*e.weight,c+=e.weight,h=An(a,u,h)});var f={vs:s.A(a)};return c&&(f.barycenter=d/c,f.weight=c),f}function An(e,n,t){for(var r;n.length&&(r=D.A(n)).i<=t;)n.pop(),e.push(r.vs),t++;return t}function wn(e,n,t,o){var i=e.children(n),u=e.node(n),a=u?u.borderLeft:void 0,c=u?u.borderRight:void 0,h={};a&&(i=Ae.A(i,function(e){return e!==a&&e!==c}));var f=function(e,n){return d.A(n,function(n){var t=e.inEdges(n);if(t.length){var r=Ze.A(t,function(n,t){var r=e.edge(t),o=e.node(t.v);return{sum:n.sum+r.weight*o.order,weight:n.weight+r.weight}},{sum:0,weight:0});return{v:n,barycenter:r.sum/r.weight,weight:r.weight}}return{v:n}})}(e,i);r.A(f,function(n){if(e.children(n.v).length){var r=wn(e,n.v,t,o);h[n.v]=r,Object.prototype.hasOwnProperty.call(r,"barycenter")&&(i=n,u=r,q.A(i.barycenter)?(i.barycenter=u.barycenter,i.weight=u.weight):(i.barycenter=(i.barycenter*i.weight+u.barycenter*u.weight)/(i.weight+u.weight),i.weight+=u.weight))}var i,u});var g=vn(f,t);!function(e,n){r.A(e,function(e){e.vs=s.A(e.vs.map(function(e){return n[e]?n[e].vs:e}))})}(g,h);var l=pn(g,o);if(a&&(l.vs=s.A([a,l.vs,c]),e.predecessors(a).length)){var v=e.node(e.predecessors(a)[0]),p=e.node(e.predecessors(c)[0]);Object.prototype.hasOwnProperty.call(l,"barycenter")||(l.barycenter=0,l.weight=0),l.barycenter=(l.barycenter*l.weight+v.order+p.order)/(l.weight+2),l.weight+=2}return l}function bn(e){var n=X(e),t=mn(e,v(1,n+1),"inEdges"),o=mn(e,v(n-1,-1,-1),"outEdges"),i=function(e){var n={},t=Ae.A(e.nodes(),function(n){return!e.children(n).length}),o=F(d.A(t,function(n){return e.node(n).rank})),i=d.A(v(o+1),function(){return[]}),u=fn(t,function(n){return e.node(n).rank});return r.A(u,function t(o){if(!z.A(n,o)){n[o]=!0;var u=e.node(o);i[u.rank].push(o),r.A(e.successors(o),t)}}),i}(e);_n(e,i);for(var u,a=Number.POSITIVE_INFINITY,s=0,c=0;c<4;++s,++c){yn(s%2?t:o,s%4>=2);var h=gn(e,i=U(e));hs||d>n[o].lim));i=o,o=r;for(;(o=e.parent(o))!==i;)a.push(o);return{path:u.concat(a.reverse()),lca:i}}(e,n,o.v,o.w),u=i.path,a=i.lca,s=0,d=u[s],c=!0;t!==o.w;){if(r=e.node(t),c){for(;(d=u[s])!==a&&e.node(d).maxRankt){var r=n;n=t,t=r}Object.prototype.hasOwnProperty.call(e,n)||Object.defineProperty(e,n,{enumerable:!0,configurable:!0,value:{},writable:!0});var o=e[n];Object.defineProperty(o,t,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function Ln(e,n,t){if(n>t){var r=n;n=t,t=r}return!!e[n]&&Object.prototype.hasOwnProperty.call(e[n],t)}function In(e,n,t,o,i){var u={},a=function(e,n,t,o){var i=new p.T,u=e.graph(),a=function(e,n,t){return function(r,o,i){var u,a=r.node(o),s=r.node(i),d=0;if(d+=a.width/2,Object.prototype.hasOwnProperty.call(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":u=-a.width/2;break;case"r":u=a.width/2}if(u&&(d+=t?u:-u),u=0,d+=(a.dummy?n:e)/2,d+=(s.dummy?n:e)/2,d+=s.width/2,Object.prototype.hasOwnProperty.call(s,"labelpos"))switch(s.labelpos.toLowerCase()){case"l":u=s.width/2;break;case"r":u=-s.width/2}return u&&(d+=t?u:-u),u=0,d}}(u.nodesep,u.edgesep,o);return r.A(n,function(n){var o;r.A(n,function(n){var r=t[n];if(i.setNode(r),o){var u=t[o],s=i.edge(u,r);i.setEdge(u,r,Math.max(a(e,n,o),s||0))}o=n})}),i}(e,n,t,i),s=i?"borderLeft":"borderRight";function d(e,n){for(var t=a.nodes(),r=t.pop(),o={};r;)o[r]?e(r):(o[r]=!0,t.push(r),t=t.concat(n(r))),r=t.pop()}return d(function(e){u[e]=a.inEdges(e).reduce(function(e,n){return Math.max(e,u[n.v]+a.edge(n))},0)},a.predecessors.bind(a)),d(function(n){var t=a.outEdges(n).reduce(function(e,n){return Math.min(e,u[n.w]-a.edge(n))},Number.POSITIVE_INFINITY),r=e.node(n);t!==Number.POSITIVE_INFINITY&&r.borderType!==s&&(u[n]=Math.max(u[n],t))},a.successors.bind(a)),r.A(o,function(e){u[e]=u[t[e]]}),u}function Tn(e){var n,t=U(e),o=k.A(Cn(e,t),function(e,n){var t={};function o(n,o,i,u,a){var s;r.A(v(o,i),function(o){s=n[o],e.node(s).dummy&&r.A(e.predecessors(s),function(n){var r=e.node(n);r.dummy&&(r.ordera)&&jn(t,n,s)})})}return Ze.A(n,function(n,t){var i,u=-1,a=0;return r.A(t,function(r,s){if("border"===e.node(r).dummy){var d=e.predecessors(r);d.length&&(i=e.node(d[0]).order,o(t,a,s,u,i),a=s,u=i)}o(t,a,t.length,i,n.length)}),t}),t}(e,t)),i={};r.A(["u","d"],function(u){n="u"===u?t:Je.A(t).reverse(),r.A(["l","r"],function(t){"r"===t&&(n=d.A(n,function(e){return Je.A(e).reverse()}));var a=("u"===u?e.predecessors:e.successors).bind(e),s=function(e,n,t,o){var i={},u={},a={};return r.A(n,function(e){r.A(e,function(e,n){i[e]=e,u[e]=e,a[e]=n})}),r.A(n,function(e){var n=-1;r.A(e,function(e){var r=o(e);if(r.length){r=fn(r,function(e){return a[e]});for(var s=(r.length-1)/2,d=Math.floor(s),c=Math.ceil(s);d<=c;++d){var h=r[d];u[e]===e&&n{var n=t(" buildLayoutGraph",()=>function(e){var n=new p.T({multigraph:!0,compound:!0}),t=Jn(e.graph());return n.setGraph(k.A({},Dn,zn(t,Fn),L(t,Sn))),r.A(e.nodes(),function(t){var r=Jn(e.node(t));n.setNode(t,I.A(zn(r,Gn),Vn)),n.setParent(t,e.parent(t))}),r.A(e.edges(),function(t){var r=Jn(e.edge(t));n.setEdge(t,k.A({},qn,zn(r,Bn),L(r,Yn)))}),n}(e));t(" runLayout",()=>function(e,n){n(" makeSpaceForEdgeLabels",()=>function(e){var n=e.graph();n.ranksep/=2,r.A(e.edges(),function(t){var r=e.edge(t);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===n.rankdir||"BT"===n.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)})}(e)),n(" removeSelfEdges",()=>function(e){r.A(e.edges(),function(n){if(n.v===n.w){var t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}})}(e)),n(" acyclic",()=>x(e)),n(" nestingGraph.run",()=>He(e)),n(" rank",()=>qe(K(e))),n(" injectEdgeLabelProxies",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(t.width&&t.height){var r=e.node(n.v),o={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};H(e,"edge-proxy",o,"_ep")}})}(e)),n(" removeEmptyRanks",()=>function(e){var n=Y.A(d.A(e.nodes(),function(n){return e.node(n).rank})),t=[];r.A(e.nodes(),function(r){var o=e.node(r).rank-n;t[o]||(t[o]=[]),t[o].push(r)});var o=0,i=e.graph().nodeRankFactor;r.A(t,function(n,t){q.A(n)&&t%i!==0?--o:o&&r.A(n,function(n){e.node(n).rank+=o})})}(e)),n(" nestingGraph.cleanup",()=>function(e){var n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,r.A(e.edges(),function(n){e.edge(n).nestingEdge&&e.removeEdge(n)})}(e)),n(" normalizeRanks",()=>function(e){var n=Y.A(d.A(e.nodes(),function(n){return e.node(n).rank}));r.A(e.nodes(),function(t){var r=e.node(t);z.A(r,"rank")&&(r.rank-=n)})}(e)),n(" assignRankMinMax",()=>function(e){var n=0;r.A(e.nodes(),function(t){var r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=F(n,r.maxRank))}),e.graph().maxRank=n}(e)),n(" removeEdgeLabelProxies",()=>function(e){r.A(e.nodes(),function(n){var t=e.node(n);"edge-proxy"===t.dummy&&(e.edge(t.e).labelRank=t.rank,e.removeNode(n))})}(e)),n(" normalize.run",()=>ae(e)),n(" parentDummyChains",()=>En(e)),n(" addBorderSegments",()=>function(e){r.A(e.children(),function n(t){var o=e.children(t),i=e.node(t);if(o.length&&r.A(o,n),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var u=i.minRank,a=i.maxRank+1;ubn(e)),n(" insertSelfEdges",()=>function(e){var n=U(e);r.A(n,function(n){var t=0;r.A(n,function(n,o){var i=e.node(n);i.order=o+t,r.A(i.selfEdges,function(n){H(e,"selfedge",{width:n.label.width,height:n.label.height,rank:i.rank,order:o+ ++t,e:n.e,label:n.label},"_se")}),delete i.selfEdges})})}(e)),n(" adjustCoordinateSystem",()=>function(e){var n=e.graph().rankdir.toLowerCase();"lr"!==n&&"rl"!==n||re(e)}(e)),n(" position",()=>Mn(e)),n(" positionSelfEdges",()=>function(e){r.A(e.nodes(),function(n){var t=e.node(n);if("selfedge"===t.dummy){var r=e.node(t.e.v),o=r.x+r.width/2,i=r.y,u=t.x-o,a=r.height/2;e.setEdge(t.e,t.label),e.removeNode(n),t.label.points=[{x:o+2*u/3,y:i-a},{x:o+5*u/6,y:i-a},{x:o+u,y:i},{x:o+5*u/6,y:i+a},{x:o+2*u/3,y:i+a}],t.label.x=t.x,t.label.y=t.y}})}(e)),n(" removeBorderNodes",()=>function(e){r.A(e.nodes(),function(n){if(e.children(n).length){var t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(D.A(t.borderLeft)),u=e.node(D.A(t.borderRight));t.width=Math.abs(u.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2}}),r.A(e.nodes(),function(n){"border"===e.node(n).dummy&&e.removeNode(n)})}(e)),n(" normalize.undo",()=>function(e){r.A(e.graph().dummyChains,function(n){var t,r=e.node(n),o=r.edgeLabel;for(e.setEdge(r.edgeObj,o);r.dummy;)t=e.successors(n)[0],e.removeNode(n),o.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(o.x=r.x,o.y=r.y,o.width=r.width,o.height=r.height),n=t,r=e.node(n)})}(e)),n(" fixupEdgeLabelCoords",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(Object.prototype.hasOwnProperty.call(t,"x"))switch("l"!==t.labelpos&&"r"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case"l":t.x-=t.width/2+t.labeloffset;break;case"r":t.x+=t.width/2+t.labeloffset}})}(e)),n(" undoCoordinateSystem",()=>te(e)),n(" translateGraph",()=>function(e){var n=Number.POSITIVE_INFINITY,t=0,o=Number.POSITIVE_INFINITY,i=0,u=e.graph(),a=u.marginx||0,s=u.marginy||0;function d(e){var r=e.x,u=e.y,a=e.width,s=e.height;n=Math.min(n,r-a/2),t=Math.max(t,r+a/2),o=Math.min(o,u-s/2),i=Math.max(i,u+s/2)}r.A(e.nodes(),function(n){d(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);Object.prototype.hasOwnProperty.call(t,"x")&&d(t)}),n-=a,o-=s,r.A(e.nodes(),function(t){var r=e.node(t);r.x-=n,r.y-=o}),r.A(e.edges(),function(t){var i=e.edge(t);r.A(i.points,function(e){e.x-=n,e.y-=o}),Object.prototype.hasOwnProperty.call(i,"x")&&(i.x-=n),Object.prototype.hasOwnProperty.call(i,"y")&&(i.y-=o)}),u.width=t-n+a,u.height=i-o+s}(e)),n(" assignNodeIntersects",()=>function(e){r.A(e.edges(),function(n){var t,r,o=e.edge(n),i=e.node(n.v),u=e.node(n.w);o.points?(t=o.points[0],r=o.points[o.points.length-1]):(o.points=[],t=u,r=i),o.points.unshift(Q(i,t)),o.points.push(Q(u,r))})}(e)),n(" reversePoints",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);t.reversed&&t.points.reverse()})}(e)),n(" acyclic.undo",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(t.reversed){e.removeEdge(n);var r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}})}(e))}(n,t)),t(" updateInputGraph",()=>function(e,n){r.A(e.nodes(),function(t){var r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,n.children(t).length&&(r.width=o.width,r.height=o.height))}),r.A(e.edges(),function(t){var r=e.edge(t),o=n.edge(t);r.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(r.x=o.x,r.y=o.y)}),e.graph().width=n.graph().width,e.graph().height=n.graph().height}(e,n))})}var Fn=["nodesep","edgesep","ranksep","marginx","marginy"],Dn={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Sn=["acyclicer","ranker","rankdir","align"],Gn=["width","height"],Vn={width:0,height:0},Bn=["minlen","weight","width","height","labeloffset"],qn={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Yn=["labelpos"];function zn(e,n){return B(L(e,n),Number)}function Jn(e){var n={};return r.A(e,function(e,t){n[t.toLowerCase()]=e}),n}},7981:(e,n,t)=>{t.d(n,{T:()=>w});var r=t(9142),o=t(9610),i=t(7422),u=t(4092),a=t(6401),s=t(8058),d=t(9592),c=t(1207),h=t(4326),f=t(9902),g=t(3533);const l=(0,h.A)(function(e){return(0,f.A)((0,c.A)(e,1,g.A,!0))});var v=t(8207),p=t(9463),A="\0";class w{constructor(e={}){this._isDirected=!Object.prototype.hasOwnProperty.call(e,"directed")||e.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(e,"multigraph")&&e.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(e,"compound")&&e.compound,this._label=void 0,this._defaultNodeLabelFn=r.A(void 0),this._defaultEdgeLabelFn=r.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[A]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return o.A(e)||(e=r.A(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return i.A(this._nodes)}sources(){var e=this;return u.A(this.nodes(),function(n){return a.A(e._in[n])})}sinks(){var e=this;return u.A(this.nodes(),function(n){return a.A(e._out[n])})}setNodes(e,n){var t=arguments,r=this;return s.A(e,function(e){t.length>1?r.setNode(e,n):r.setNode(e)}),this}setNode(e,n){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=A,this._children[e]={},this._children[A][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var n=e=>this.removeEdge(this._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],s.A(this.children(e),e=>{this.setParent(e)}),delete this._children[e]),s.A(i.A(this._in[e]),n),delete this._in[e],delete this._preds[e],s.A(i.A(this._out[e]),n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,n){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(d.A(n))n=A;else{for(var t=n+="";!d.A(t);t=this.parent(t))if(t===e)throw new Error("Setting "+n+" as parent of "+e+" would create a cycle");this.setNode(n)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var n=this._parent[e];if(n!==A)return n}}children(e){if(d.A(e)&&(e=A),this._isCompound){var n=this._children[e];if(n)return i.A(n)}else{if(e===A)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var n=this._preds[e];if(n)return i.A(n)}successors(e){var n=this._sucs[e];if(n)return i.A(n)}neighbors(e){var n=this.predecessors(e);if(n)return l(n,this.successors(e))}isLeaf(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length}filterNodes(e){var n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph());var t=this;s.A(this._nodes,function(t,r){e(r)&&n.setNode(r,t)}),s.A(this._edgeObjs,function(e){n.hasNode(e.v)&&n.hasNode(e.w)&&n.setEdge(e,t.edge(e))});var r={};function o(e){var i=t.parent(e);return void 0===i||n.hasNode(i)?(r[e]=i,i):i in r?r[i]:o(i)}return this._isCompound&&s.A(n.nodes(),function(e){n.setParent(e,o(e))}),n}setDefaultEdgeLabel(e){return o.A(e)||(e=r.A(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return v.A(this._edgeObjs)}setPath(e,n){var t=this,r=arguments;return p.A(e,function(e,o){return r.length>1?t.setEdge(e,o,n):t.setEdge(e,o),o}),this}setEdge(){var e,n,t,r,o=!1,i=arguments[0];"object"==typeof i&&null!==i&&"v"in i?(e=i.v,n=i.w,t=i.name,2===arguments.length&&(r=arguments[1],o=!0)):(e=i,n=arguments[1],t=arguments[3],arguments.length>2&&(r=arguments[2],o=!0)),e=""+e,n=""+n,d.A(t)||(t=""+t);var u=y(this._isDirected,e,n,t);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,u))return o&&(this._edgeLabels[u]=r),this;if(!d.A(t)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(n),this._edgeLabels[u]=o?r:this._defaultEdgeLabelFn(e,n,t);var a=function(e,n,t,r){var o=""+n,i=""+t;if(!e&&o>i){var u=o;o=i,i=u}var a={v:o,w:i};r&&(a.name=r);return a}(this._isDirected,e,n,t);return e=a.v,n=a.w,Object.freeze(a),this._edgeObjs[u]=a,b(this._preds[n],e),b(this._sucs[e],n),this._in[n][u]=a,this._out[e][u]=a,this._edgeCount++,this}edge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t);return this._edgeLabels[r]}hasEdge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t);return Object.prototype.hasOwnProperty.call(this._edgeLabels,r)}removeEdge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t),o=this._edgeObjs[r];return o&&(e=o.v,n=o.w,delete this._edgeLabels[r],delete this._edgeObjs[r],m(this._preds[n],e),m(this._sucs[e],n),delete this._in[n][r],delete this._out[e][r],this._edgeCount--),this}inEdges(e,n){var t=this._in[e];if(t){var r=v.A(t);return n?u.A(r,function(e){return e.v===n}):r}}outEdges(e,n){var t=this._out[e];if(t){var r=v.A(t);return n?u.A(r,function(e){return e.w===n}):r}}nodeEdges(e,n){var t=this.inEdges(e,n);if(t)return t.concat(this.outEdges(e,n))}}function b(e,n){e[n]?e[n]++:e[n]=1}function m(e,n){--e[n]||delete e[n]}function y(e,n,t,r){var o=""+n,i=""+t;if(!e&&o>i){var u=o;o=i,i=u}return o+"\x01"+i+"\x01"+(d.A(r)?"\0":r)}function _(e,n){return y(e,n.v,n.w,n.name)}w.prototype._nodeCount=0,w.prototype._edgeCount=0}}]); \ No newline at end of file diff --git a/developer/assets/js/2492.97b8a589.js b/developer/assets/js/2492.97b8a589.js new file mode 100644 index 0000000..05be4d6 --- /dev/null +++ b/developer/assets/js/2492.97b8a589.js @@ -0,0 +1 @@ +(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2492],{445:function(t){t.exports=function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,i=/\d\d/,s=/\d\d?/,r=/\d*[^-_:/,()\s\d]+/,a={},o=function(t){return(t=+t)+(t>68?1900:2e3)},c=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],d=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},u=function(t,e){var n,i=a.meridiem;if(i){for(var s=1;s<=24;s+=1)if(t.indexOf(i(s,0,e))>-1){n=s>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[r,function(t){this.afternoon=u(t,!1)}],a:[r,function(t){this.afternoon=u(t,!0)}],Q:[n,function(t){this.month=3*(t-1)+1}],S:[n,function(t){this.milliseconds=100*+t}],SS:[i,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[s,c("seconds")],ss:[s,c("seconds")],m:[s,c("minutes")],mm:[s,c("minutes")],H:[s,c("hours")],h:[s,c("hours")],HH:[s,c("hours")],hh:[s,c("hours")],D:[s,c("day")],DD:[i,c("day")],Do:[r,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],w:[s,c("week")],ww:[i,c("week")],M:[s,c("month")],MM:[i,c("month")],MMM:[r,function(t){var e=d("months"),n=(d("monthsShort")||e.map(function(t){return t.slice(0,3)})).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[r,function(t){var e=d("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,c("year")],YY:[i,function(t){this.year=o(t)}],YYYY:[/\d{4}/,c("year")],Z:l,ZZ:l};function f(n){var i,s;i=n,s=a&&a.formats;for(var r=(n=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(e,n,i){var r=i&&i.toUpperCase();return n||s[i]||t[i]||s[r].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(t,e,n){return e||n.slice(1)})})).match(e),o=r.length,c=0;c-1)return new Date(("X"===e?1e3:1)*t);var s=f(e)(t),r=s.year,a=s.month,o=s.day,c=s.hours,l=s.minutes,d=s.seconds,u=s.milliseconds,h=s.zone,m=s.week,y=new Date,k=o||(r||a?1:y.getDate()),p=r||y.getFullYear(),g=0;r&&!a||(g=a>0?a-1:y.getMonth());var v,b=c||0,T=l||0,x=d||0,w=u||0;return h?new Date(Date.UTC(p,g,k,b,T,x,w+60*h.offset*1e3)):n?new Date(Date.UTC(p,g,k,b,T,x,w)):(v=new Date(p,g,k,b,T,x,w),m&&(v=i(v).week(m).toDate()),v)}catch(t){return new Date("")}}(e,o,i,n),this.init(),u&&!0!==u&&(this.$L=this.locale(u).$L),d&&e!=this.format(o)&&(this.$d=new Date("")),a={}}else if(o instanceof Array)for(var h=o.length,m=1;m<=h;m+=1){r[1]=o[m-1];var y=n.apply(this,r);if(y.isValid()){this.$d=y.$d,this.$L=y.$L,this.init();break}m===h&&(this.$d=new Date(""))}else s.call(this,t)}}}()},2492:(t,e,n)=>{"use strict";n.d(e,{diagram:()=>Ot});var i=n(3226),s=n(7633),r=n(797),a=n(6750),o=n(4353),c=n(8313),l=n(445),d=n(7375),u=n(3522),h=n(451),f=function(){var t=(0,r.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],i=[1,27],s=[1,28],a=[1,29],o=[1,30],c=[1,31],l=[1,32],d=[1,33],u=[1,34],h=[1,9],f=[1,10],m=[1,11],y=[1,12],k=[1,13],p=[1,14],g=[1,15],v=[1,16],b=[1,19],T=[1,20],x=[1,21],w=[1,22],$=[1,23],_=[1,25],D=[1,35],S={trace:(0,r.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:(0,r.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setWeekday("monday");break;case 9:i.setWeekday("tuesday");break;case 10:i.setWeekday("wednesday");break;case 11:i.setWeekday("thursday");break;case 12:i.setWeekday("friday");break;case 13:i.setWeekday("saturday");break;case 14:i.setWeekday("sunday");break;case 15:i.setWeekend("friday");break;case 16:i.setWeekend("saturday");break;case 17:i.setDateFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 18:i.enableInclusiveEndDates(),this.$=r[o].substr(18);break;case 19:i.TopAxis(),this.$=r[o].substr(8);break;case 20:i.setAxisFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 21:i.setTickInterval(r[o].substr(13)),this.$=r[o].substr(13);break;case 22:i.setExcludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 23:i.setIncludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 24:i.setTodayMarker(r[o].substr(12)),this.$=r[o].substr(12);break;case 27:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 28:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 29:case 30:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 31:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 33:i.addTask(r[o-1],r[o]),this.$="task";break;case 34:this.$=r[o-1],i.setClickEvent(r[o-1],r[o],null);break;case 35:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],r[o]);break;case 36:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],null),i.setLink(r[o-2],r[o]);break;case 37:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-2],r[o-1]),i.setLink(r[o-3],r[o]);break;case 38:this.$=r[o-2],i.setClickEvent(r[o-2],r[o],null),i.setLink(r[o-2],r[o-1]);break;case 39:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-1],r[o]),i.setLink(r[o-3],r[o-2]);break;case 40:this.$=r[o-1],i.setLink(r[o-1],r[o]);break;case 41:case 47:this.$=r[o-1]+" "+r[o];break;case 42:case 43:case 45:this.$=r[o-2]+" "+r[o-1]+" "+r[o];break;case 44:case 46:this.$=r[o-3]+" "+r[o-2]+" "+r[o-1]+" "+r[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:i,14:s,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:m,25:y,26:k,27:p,28:g,29:v,30:b,31:T,33:x,35:w,36:$,37:24,38:_,40:D},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:n,13:i,14:s,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:m,25:y,26:k,27:p,28:g,29:v,30:b,31:T,33:x,35:w,36:$,37:24,38:_,40:D},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:(0,r.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,r.K2)(function(t){var e=this,n=[0],i=[],s=[null],a=[],o=this.table,c="",l=0,d=0,u=0,h=a.slice.call(arguments,1),f=Object.create(this.lexer),m={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(m.yy[y]=this.yy[y]);f.setInput(t,m.yy),m.yy.lexer=f,m.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var k=f.yylloc;a.push(k);var p=f.options&&f.options.ranges;function g(){var t;return"number"!=typeof(t=i.pop()||f.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof m.yy.parseError?this.parseError=m.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,a.length=a.length-t},"popStack"),(0,r.K2)(g,"lex");for(var v,b,T,x,w,$,_,D,S,C={};;){if(T=n[n.length-1],this.defaultActions[T]?x=this.defaultActions[T]:(null==v&&(v=g()),x=o[T]&&o[T][v]),void 0===x||!x.length||!x[0]){var M="";for($ in S=[],o[T])this.terminals_[$]&&$>2&&S.push("'"+this.terminals_[$]+"'");M=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==v?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(M,{text:f.match,token:this.terminals_[v]||v,line:f.yylineno,loc:k,expected:S})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+v);switch(x[0]){case 1:n.push(v),s.push(f.yytext),a.push(f.yylloc),n.push(x[1]),v=null,b?(v=b,b=null):(d=f.yyleng,c=f.yytext,l=f.yylineno,k=f.yylloc,u>0&&u--);break;case 2:if(_=this.productions_[x[1]][1],C.$=s[s.length-_],C._$={first_line:a[a.length-(_||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(_||1)].first_column,last_column:a[a.length-1].last_column},p&&(C._$.range=[a[a.length-(_||1)].range[0],a[a.length-1].range[1]]),void 0!==(w=this.performAction.apply(C,[c,d,l,m.yy,x[1],s,a].concat(h))))return w;_&&(n=n.slice(0,-1*_*2),s=s.slice(0,-1*_),a=a.slice(0,-1*_)),n.push(this.productions_[x[1]][0]),s.push(C.$),a.push(C._$),D=o[n[n.length-2]][n[n.length-1]],n.push(D);break;case 3:return!0}}return!0},"parse")},C=function(){return{EOF:1,parseError:(0,r.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,r.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,r.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,r.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,r.K2)(function(){return this._more=!0,this},"more"),reject:(0,r.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,r.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,r.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,r.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,r.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,r.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,r.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,r.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,r.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,r.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,r.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,r.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,r.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,r.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,r.K2)(function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),31;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),33;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 15:case 18:case 21:case 24:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:case 9:case 10:case 12:case 13:break;case 11:return 10;case 14:this.begin("href");break;case 16:return 43;case 17:this.begin("callbackname");break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 22:return 42;case 23:this.begin("click");break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}}}();function M(){this.yy={}}return S.lexer=C,(0,r.K2)(M,"Parser"),M.prototype=S,S.Parser=M,new M}();f.parser=f;var m=f;o.extend(c),o.extend(l),o.extend(d);var y,k,p={friday:5,saturday:6},g="",v="",b=void 0,T="",x=[],w=[],$=new Map,_=[],D=[],S="",C="",M=["active","done","crit","milestone","vert"],K=[],E=!1,Y=!1,A="sunday",I="saturday",L=0,F=(0,r.K2)(function(){_=[],D=[],S="",K=[],mt=0,y=void 0,k=void 0,gt=[],g="",v="",C="",b=void 0,T="",x=[],w=[],E=!1,Y=!1,L=0,$=new Map,(0,s.IU)(),A="sunday",I="saturday"},"clear"),O=(0,r.K2)(function(t){v=t},"setAxisFormat"),W=(0,r.K2)(function(){return v},"getAxisFormat"),P=(0,r.K2)(function(t){b=t},"setTickInterval"),H=(0,r.K2)(function(){return b},"getTickInterval"),N=(0,r.K2)(function(t){T=t},"setTodayMarker"),B=(0,r.K2)(function(){return T},"getTodayMarker"),z=(0,r.K2)(function(t){g=t},"setDateFormat"),G=(0,r.K2)(function(){E=!0},"enableInclusiveEndDates"),R=(0,r.K2)(function(){return E},"endDatesAreInclusive"),j=(0,r.K2)(function(){Y=!0},"enableTopAxis"),U=(0,r.K2)(function(){return Y},"topAxisEnabled"),V=(0,r.K2)(function(t){C=t},"setDisplayMode"),Z=(0,r.K2)(function(){return C},"getDisplayMode"),X=(0,r.K2)(function(){return g},"getDateFormat"),q=(0,r.K2)(function(t){x=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),Q=(0,r.K2)(function(){return x},"getIncludes"),J=(0,r.K2)(function(t){w=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),tt=(0,r.K2)(function(){return w},"getExcludes"),et=(0,r.K2)(function(){return $},"getLinks"),nt=(0,r.K2)(function(t){S=t,_.push(t)},"addSection"),it=(0,r.K2)(function(){return _},"getSections"),st=(0,r.K2)(function(){let t=wt();let e=0;for(;!t&&e<10;)t=wt(),e++;return D=gt},"getTasks"),rt=(0,r.K2)(function(t,e,n,i){const s=t.format(e.trim()),r=t.format("YYYY-MM-DD");return!i.includes(s)&&!i.includes(r)&&(!(!n.includes("weekends")||t.isoWeekday()!==p[I]&&t.isoWeekday()!==p[I]+1)||(!!n.includes(t.format("dddd").toLowerCase())||(n.includes(s)||n.includes(r))))},"isInvalidDate"),at=(0,r.K2)(function(t){A=t},"setWeekday"),ot=(0,r.K2)(function(){return A},"getWeekday"),ct=(0,r.K2)(function(t){I=t},"setWeekend"),lt=(0,r.K2)(function(t,e,n,i){if(!n.length||t.manualEndTime)return;let s,r;s=t.startTime instanceof Date?o(t.startTime):o(t.startTime,e,!0),s=s.add(1,"d"),r=t.endTime instanceof Date?o(t.endTime):o(t.endTime,e,!0);const[a,c]=dt(s,r,e,n,i);t.endTime=a.toDate(),t.renderEndTime=c},"checkTaskDates"),dt=(0,r.K2)(function(t,e,n,i,s){let r=!1,a=null;for(;t<=e;)r||(a=e.toDate()),r=rt(t,n,i,s),r&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,a]},"fixTaskDates"),ut=(0,r.K2)(function(t,e,n){n=n.trim();if((0,r.K2)(t=>{const e=t.trim();return"x"===e||"X"===e},"isTimestampFormat")(e)&&/^\d+$/.test(n))return new Date(Number(n));const i=/^after\s+(?[\d\w- ]+)/.exec(n);if(null!==i){let t=null;for(const n of i.groups.ids.split(" ")){let e=Tt(n);void 0!==e&&(!t||e.endTime>t.endTime)&&(t=e)}if(t)return t.endTime;const e=new Date;return e.setHours(0,0,0,0),e}let s=o(n,e.trim(),!0);if(s.isValid())return s.toDate();{r.Rm.debug("Invalid date:"+n),r.Rm.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime())||t.getFullYear()<-1e4||t.getFullYear()>1e4)throw new Error("Invalid date:"+n);return t}},"getStartDate"),ht=(0,r.K2)(function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),ft=(0,r.K2)(function(t,e,n,i=!1){n=n.trim();const s=/^until\s+(?[\d\w- ]+)/.exec(n);if(null!==s){let t=null;for(const n of s.groups.ids.split(" ")){let e=Tt(n);void 0!==e&&(!t||e.startTime{window.open(n,"_self")}),$.set(t,n))}),_t(t,"clickable")},"setLink"),_t=(0,r.K2)(function(t,e){t.split(",").forEach(function(t){let n=Tt(t);void 0!==n&&n.classes.push(e)})},"setClass"),Dt=(0,r.K2)(function(t,e,n){if("loose"!==(0,s.D7)().securityLevel)return;if(void 0===e)return;let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{i._K.runFunc(e,...r)})},"setClickFun"),St=(0,r.K2)(function(t,e){K.push(function(){const n=document.querySelector(`[id="${t}"]`);null!==n&&n.addEventListener("click",function(){e()})},function(){const n=document.querySelector(`[id="${t}-text"]`);null!==n&&n.addEventListener("click",function(){e()})})},"pushFun"),Ct=(0,r.K2)(function(t,e,n){t.split(",").forEach(function(t){Dt(t,e,n)}),_t(t,"clickable")},"setClickEvent"),Mt=(0,r.K2)(function(t){K.forEach(function(e){e(t)})},"bindFunctions"),Kt={getConfig:(0,r.K2)(()=>(0,s.D7)().gantt,"getConfig"),clear:F,setDateFormat:z,getDateFormat:X,enableInclusiveEndDates:G,endDatesAreInclusive:R,enableTopAxis:j,topAxisEnabled:U,setAxisFormat:O,getAxisFormat:W,setTickInterval:P,getTickInterval:H,setTodayMarker:N,getTodayMarker:B,setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,setDisplayMode:V,getDisplayMode:Z,setAccDescription:s.EI,getAccDescription:s.m7,addSection:nt,getSections:it,getTasks:st,addTask:bt,findTaskById:Tt,addTaskOrg:xt,setIncludes:q,getIncludes:Q,setExcludes:J,getExcludes:tt,setClickEvent:Ct,setLink:$t,getLinks:et,bindFunctions:Mt,parseDuration:ht,isInvalidDate:rt,setWeekday:at,getWeekday:ot,setWeekend:ct};function Et(t,e,n){let i=!0;for(;i;)i=!1,n.forEach(function(n){const s=new RegExp("^\\s*"+n+"\\s*$");t[0].match(s)&&(e[n]=!0,t.shift(1),i=!0)})}(0,r.K2)(Et,"getTaskTags"),o.extend(u);var Yt,At=(0,r.K2)(function(){r.Rm.debug("Something is calling, setConf, remove the call")},"setConf"),It={monday:h.ABi,tuesday:h.PGu,wednesday:h.GuW,thursday:h.Mol,friday:h.TUC,saturday:h.rGn,sunday:h.YPH},Lt=(0,r.K2)((t,e)=>{let n=[...t].map(()=>-1/0),i=[...t].sort((t,e)=>t.startTime-e.startTime||t.order-e.order),s=0;for(const r of i)for(let t=0;t=n[t]){n[t]=r.endTime,r.order=t+e,t>s&&(s=t);break}return s},"getMaxIntersections"),Ft=1e4,Ot={parser:m,db:Kt,renderer:{setConf:At,draw:(0,r.K2)(function(t,e,n,i){const a=(0,s.D7)().gantt,c=(0,s.D7)().securityLevel;let l;"sandbox"===c&&(l=(0,h.Ltv)("#i"+e));const d="sandbox"===c?(0,h.Ltv)(l.nodes()[0].contentDocument.body):(0,h.Ltv)("body"),u="sandbox"===c?l.nodes()[0].contentDocument:document,f=u.getElementById(e);void 0===(Yt=f.parentElement.offsetWidth)&&(Yt=1200),void 0!==a.useWidth&&(Yt=a.useWidth);const m=i.db.getTasks();let y=[];for(const s of m)y.push(s.type);y=C(y);const k={};let p=2*a.topPadding;if("compact"===i.db.getDisplayMode()||"compact"===a.displayMode){const t={};for(const n of m)void 0===t[n.section]?t[n.section]=[n]:t[n.section].push(n);let e=0;for(const n of Object.keys(t)){const i=Lt(t[n],e)+1;e+=i,p+=i*(a.barHeight+a.barGap),k[n]=i}}else{p+=m.length*(a.barHeight+a.barGap);for(const t of y)k[t]=m.filter(e=>e.type===t).length}f.setAttribute("viewBox","0 0 "+Yt+" "+p);const g=d.select(`[id="${e}"]`),v=(0,h.w7C)().domain([(0,h.jkA)(m,function(t){return t.startTime}),(0,h.T9B)(m,function(t){return t.endTime})]).rangeRound([0,Yt-a.leftPadding-a.rightPadding]);function b(t,e){const n=t.startTime,i=e.startTime;let s=0;return n>i?s=1:nt.vert===e.vert?0:t.vert?1:-1);const u=[...new Set(t.map(t=>t.order))].map(e=>t.find(t=>t.order===e));g.append("g").selectAll("rect").data(u).enter().append("rect").attr("x",0).attr("y",function(t,e){return t.order*n+r-2}).attr("width",function(){return d-a.rightPadding/2}).attr("height",n).attr("class",function(t){for(const[e,n]of y.entries())if(t.type===n)return"section section"+e%a.numberSectionStyles;return"section section0"}).enter();const f=g.append("g").selectAll("rect").data(t).enter(),k=i.db.getLinks();f.append("rect").attr("id",function(t){return t.id}).attr("rx",3).attr("ry",3).attr("x",function(t){return t.milestone?v(t.startTime)+o+.5*(v(t.endTime)-v(t.startTime))-.5*c:v(t.startTime)+o}).attr("y",function(t,e){return e=t.order,t.vert?a.gridLineStartPadding:e*n+r}).attr("width",function(t){return t.milestone?c:t.vert?.08*c:v(t.renderEndTime||t.endTime)-v(t.startTime)}).attr("height",function(t){return t.vert?m.length*(a.barHeight+a.barGap)+2*a.barHeight:c}).attr("transform-origin",function(t,e){return e=t.order,(v(t.startTime)+o+.5*(v(t.endTime)-v(t.startTime))).toString()+"px "+(e*n+r+.5*c).toString()+"px"}).attr("class",function(t){let e="";t.classes.length>0&&(e=t.classes.join(" "));let n=0;for(const[s,r]of y.entries())t.type===r&&(n=s%a.numberSectionStyles);let i="";return t.active?t.crit?i+=" activeCrit":i=" active":t.done?i=t.crit?" doneCrit":" done":t.crit&&(i+=" crit"),0===i.length&&(i=" task"),t.milestone&&(i=" milestone "+i),t.vert&&(i=" vert "+i),i+=n,i+=" "+e,"task"+i}),f.append("text").attr("id",function(t){return t.id+"-text"}).text(function(t){return t.task}).attr("font-size",a.fontSize).attr("x",function(t){let e=v(t.startTime),n=v(t.renderEndTime||t.endTime);if(t.milestone&&(e+=.5*(v(t.endTime)-v(t.startTime))-.5*c,n=e+c),t.vert)return v(t.startTime)+o;const i=this.getBBox().width;return i>n-e?n+i+1.5*a.leftPadding>d?e+o-5:n+o+5:(n-e)/2+e+o}).attr("y",function(t,e){return t.vert?a.gridLineStartPadding+m.length*(a.barHeight+a.barGap)+60:t.order*n+a.barHeight/2+(a.fontSize/2-2)+r}).attr("text-height",c).attr("class",function(t){const e=v(t.startTime);let n=v(t.endTime);t.milestone&&(n=e+c);const i=this.getBBox().width;let s="";t.classes.length>0&&(s=t.classes.join(" "));let r=0;for(const[c,l]of y.entries())t.type===l&&(r=c%a.numberSectionStyles);let o="";return t.active&&(o=t.crit?"activeCritText"+r:"activeText"+r),t.done?o=t.crit?o+" doneCritText"+r:o+" doneText"+r:t.crit&&(o=o+" critText"+r),t.milestone&&(o+=" milestoneText"),t.vert&&(o+=" vertText"),i>n-e?n+i+1.5*a.leftPadding>d?s+" taskTextOutsideLeft taskTextOutside"+r+" "+o:s+" taskTextOutsideRight taskTextOutside"+r+" "+o+" width-"+i:s+" taskText taskText"+r+" "+o+" width-"+i});if("sandbox"===(0,s.D7)().securityLevel){let t;t=(0,h.Ltv)("#i"+e);const n=t.nodes()[0].contentDocument;f.filter(function(t){return k.has(t.id)}).each(function(t){var e=n.querySelector("#"+t.id),i=n.querySelector("#"+t.id+"-text");const s=e.parentNode;var r=n.createElement("a");r.setAttribute("xlink:href",k.get(t.id)),r.setAttribute("target","_top"),s.appendChild(r),r.appendChild(e),r.appendChild(i)})}}function w(t,e,n,s,c,l,d,u){if(0===d.length&&0===u.length)return;let h,f;for(const{startTime:i,endTime:r}of l)(void 0===h||if)&&(f=r);if(!h||!f)return;if(o(f).diff(o(h),"year")>5)return void r.Rm.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");const m=i.db.getDateFormat(),y=[];let k=null,p=o(h);for(;p.valueOf()<=f;)i.db.isInvalidDate(p,m,d,u)?k?k.end=p:k={start:p,end:p}:k&&(y.push(k),k=null),p=p.add(1,"d");g.append("g").selectAll("rect").data(y).enter().append("rect").attr("id",t=>"exclude-"+t.start.format("YYYY-MM-DD")).attr("x",t=>v(t.start.startOf("day"))+n).attr("y",a.gridLineStartPadding).attr("width",t=>v(t.end.endOf("day"))-v(t.start.startOf("day"))).attr("height",c-e-a.gridLineStartPadding).attr("transform-origin",function(e,i){return(v(e.start)+n+.5*(v(e.end)-v(e.start))).toString()+"px "+(i*t+.5*c).toString()+"px"}).attr("class","exclude-range")}function $(t,e,n,i){if(n<=0||t>e)return 1/0;const s=e-t,r=o.duration({[i??"day"]:n}).asMilliseconds();return r<=0?1/0:Math.ceil(s/r)}function _(t,e,n,s){const o=i.db.getDateFormat(),c=i.db.getAxisFormat();let l;l=c||("D"===o?"%d":a.axisFormat??"%Y-%m-%d");let d=(0,h.l78)(v).tickSize(-s+e+a.gridLineStartPadding).tickFormat((0,h.DCK)(l));const u=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(i.db.getTickInterval()||a.tickInterval);if(null!==u){const t=parseInt(u[1],10);if(isNaN(t)||t<=0)r.Rm.warn(`Invalid tick interval value: "${u[1]}". Skipping custom tick interval.`);else{const e=u[2],n=i.db.getWeekday()||a.weekday,s=v.domain(),o=$(s[0],s[1],t,e);if(o>Ft)r.Rm.warn(`The tick interval "${t}${e}" would generate ${o} ticks, which exceeds the maximum allowed (10000). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(e){case"millisecond":d.ticks(h.t6C.every(t));break;case"second":d.ticks(h.ucG.every(t));break;case"minute":d.ticks(h.wXd.every(t));break;case"hour":d.ticks(h.Agd.every(t));break;case"day":d.ticks(h.UAC.every(t));break;case"week":d.ticks(It[n].every(t));break;case"month":d.ticks(h.Ui6.every(t))}}}if(g.append("g").attr("class","grid").attr("transform","translate("+t+", "+(s-50)+")").call(d).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),i.db.topAxisEnabled()||a.topAxis){let n=(0,h.tlR)(v).tickSize(-s+e+a.gridLineStartPadding).tickFormat((0,h.DCK)(l));if(null!==u){const t=parseInt(u[1],10);if(isNaN(t)||t<=0)r.Rm.warn(`Invalid tick interval value: "${u[1]}". Skipping custom tick interval.`);else{const e=u[2],s=i.db.getWeekday()||a.weekday,r=v.domain();if($(r[0],r[1],t,e)<=Ft)switch(e){case"millisecond":n.ticks(h.t6C.every(t));break;case"second":n.ticks(h.ucG.every(t));break;case"minute":n.ticks(h.wXd.every(t));break;case"hour":n.ticks(h.Agd.every(t));break;case"day":n.ticks(h.UAC.every(t));break;case"week":n.ticks(It[s].every(t));break;case"month":n.ticks(h.Ui6.every(t))}}}g.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function D(t,e){let n=0;const i=Object.keys(k).map(t=>[t,k[t]]);g.append("g").selectAll("text").data(i).enter().append(function(t){const e=t[0].split(s.Y2.lineBreakRegex),n=-(e.length-1)/2,i=u.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("dy",n+"em");for(const[s,r]of e.entries()){const t=u.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttribute("alignment-baseline","central"),t.setAttribute("x","10"),s>0&&t.setAttribute("dy","1em"),t.textContent=r,i.appendChild(t)}return i}).attr("x",10).attr("y",function(s,r){if(!(r>0))return s[1]*t/2+e;for(let a=0;a`\n .mermaid-main-font {\n font-family: ${t.fontFamily};\n }\n\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n }\n\n .grid .tick text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n }\n\n\n /* Special case clickable */\n\n .task.clickable {\n cursor: pointer;\n }\n\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .vert {\n stroke: ${t.vertLineColor};\n }\n\n .vertText {\n font-size: 15px;\n text-anchor: middle;\n fill: ${t.vertLineColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.titleColor||t.textColor};\n font-family: ${t.fontFamily};\n }\n`,"getStyles")}},3522:function(t){t.exports=function(){"use strict";var t,e,n=1e3,i=6e4,s=36e5,r=864e5,a=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,o=31536e6,c=2628e6,l=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:o,months:c,days:r,hours:s,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},u=function(t){return t instanceof g},h=function(t,e,n){return new g(t,n,e.$l)},f=function(t){return e.p(t)+"s"},m=function(t){return t<0},y=function(t){return m(t)?Math.ceil(t):Math.floor(t)},k=function(t){return Math.abs(t)},p=function(t,e){return t?m(t)?{negative:!0,format:""+k(t)+e}:{negative:!1,format:""+t+e}:{negative:!1,format:""}},g=function(){function m(t,e,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),e)return h(t*d[f(e)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach(function(e){i.$d[f(e)]=t[e]}),this.calMilliseconds(),this;if("string"==typeof t){var s=t.match(l);if(s){var r=s.slice(2).map(function(t){return null!=t?Number(t):0});return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var k=m.prototype;return k.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce(function(e,n){return e+(t.$d[n]||0)*d[n]},0)},k.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=y(t/o),t%=o,this.$d.months=y(t/c),t%=c,this.$d.days=y(t/r),t%=r,this.$d.hours=y(t/s),t%=s,this.$d.minutes=y(t/i),t%=i,this.$d.seconds=y(t/n),t%=n,this.$d.milliseconds=t},k.toISOString=function(){var t=p(this.$d.years,"Y"),e=p(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=p(n,"D"),s=p(this.$d.hours,"H"),r=p(this.$d.minutes,"M"),a=this.$d.seconds||0;this.$d.milliseconds&&(a+=this.$d.milliseconds/1e3,a=Math.round(1e3*a)/1e3);var o=p(a,"S"),c=t.negative||e.negative||i.negative||s.negative||r.negative||o.negative,l=s.format||r.format||o.format?"T":"",d=(c?"-":"")+"P"+t.format+e.format+i.format+l+s.format+r.format+o.format;return"P"===d||"-P"===d?"P0D":d},k.toJSON=function(){return this.toISOString()},k.format=function(t){var n=t||"YYYY-MM-DDTHH:mm:ss",i={Y:this.$d.years,YY:e.s(this.$d.years,2,"0"),YYYY:e.s(this.$d.years,4,"0"),M:this.$d.months,MM:e.s(this.$d.months,2,"0"),D:this.$d.days,DD:e.s(this.$d.days,2,"0"),H:this.$d.hours,HH:e.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:e.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:e.s(this.$d.seconds,2,"0"),SSS:e.s(this.$d.milliseconds,3,"0")};return n.replace(a,function(t,e){return e||String(i[t])})},k.as=function(t){return this.$ms/d[f(t)]},k.get=function(t){var e=this.$ms,n=f(t);return"milliseconds"===n?e%=1e3:e="weeks"===n?y(e/d[n]):this.$d[n],e||0},k.add=function(t,e,n){var i;return i=e?t*d[f(e)]:u(t)?t.$ms:h(t,this).$ms,h(this.$ms+i*(n?-1:1),this)},k.subtract=function(t,e){return this.add(t,e,!0)},k.locale=function(t){var e=this.clone();return e.$l=t,e},k.clone=function(){return h(this.$ms,this)},k.humanize=function(e){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!e)},k.valueOf=function(){return this.asMilliseconds()},k.milliseconds=function(){return this.get("milliseconds")},k.asMilliseconds=function(){return this.as("milliseconds")},k.seconds=function(){return this.get("seconds")},k.asSeconds=function(){return this.as("seconds")},k.minutes=function(){return this.get("minutes")},k.asMinutes=function(){return this.as("minutes")},k.hours=function(){return this.get("hours")},k.asHours=function(){return this.as("hours")},k.days=function(){return this.get("days")},k.asDays=function(){return this.as("days")},k.weeks=function(){return this.get("weeks")},k.asWeeks=function(){return this.as("weeks")},k.months=function(){return this.get("months")},k.asMonths=function(){return this.as("months")},k.years=function(){return this.get("years")},k.asYears=function(){return this.as("years")},m}(),v=function(t,e,n){return t.add(e.years()*n,"y").add(e.months()*n,"M").add(e.days()*n,"d").add(e.hours()*n,"h").add(e.minutes()*n,"m").add(e.seconds()*n,"s").add(e.milliseconds()*n,"ms")};return function(n,i,s){t=s,e=s().$utils(),s.duration=function(t,e){var n=s.locale();return h(t,{$l:n},e)},s.isDuration=u;var r=i.prototype.add,a=i.prototype.subtract;i.prototype.add=function(t,e){return u(t)?v(this,t,1):r.bind(this)(t,e)},i.prototype.subtract=function(t,e){return u(t)?v(this,t,-1):a.bind(this)(t,e)}}}()},7375:function(t){t.exports=function(){"use strict";return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return i.bind(this)(t);var s=this.$utils(),r=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(t){switch(t){case"Q":return Math.ceil((e.$M+1)/3);case"Do":return n.ordinal(e.$D);case"gggg":return e.weekYear();case"GGGG":return e.isoWeekYear();case"wo":return n.ordinal(e.week(),"W");case"w":case"ww":return s.s(e.week(),"w"===t?1:2,"0");case"W":case"WW":return s.s(e.isoWeek(),"W"===t?1:2,"0");case"k":case"kk":return s.s(String(0===e.$H?24:e.$H),"k"===t?1:2,"0");case"X":return Math.floor(e.$d.getTime()/1e3);case"x":return e.$d.getTime();case"z":return"["+e.offsetName()+"]";case"zzz":return"["+e.offsetName("long")+"]";default:return t}});return i.bind(this)(r)}}}()},8313:function(t){t.exports=function(){"use strict";var t="day";return function(e,n,i){var s=function(e){return e.add(4-e.isoWeekday(),t)},r=n.prototype;r.isoWeekYear=function(){return s(this).year()},r.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,r,a,o=s(this),c=(n=this.isoWeekYear(),a=4-(r=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),r.isoWeekday()>4&&(a+=7),r.add(a,t));return o.diff(c,"week")+1},r.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var a=r.startOf;r.startOf=function(t,e){var n=this.$utils(),i=!!n.u(e)||e;return"isoweek"===n.p(t)?i?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(t,e)}}}()}}]); \ No newline at end of file diff --git a/developer/assets/js/2821.e892811b.js b/developer/assets/js/2821.e892811b.js new file mode 100644 index 0000000..7c44f83 --- /dev/null +++ b/developer/assets/js/2821.e892811b.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2821],{2821:(e,t,a)=>{a.d(t,{diagram:()=>v});var l=a(3590),s=a(1152),r=a(2387),n=a(5871),i=a(3226),o=a(7633),c=a(797),d=a(8731),p=a(451),h=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getAccDescription=o.m7,this.setAccDescription=o.EI}static{(0,c.K2)(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){const e=o.UI,t=(0,o.zj)();return(0,i.$t)({...e.treemap,...t.treemap??{}})}addNode(e,t){this.nodes.push(e),this.levels.set(e,t),0===t&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,t){const a=this.classes.get(e)??{id:e,styles:[],textStyles:[]},l=t.replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");l&&l.forEach(e=>{(0,r.KX)(e)&&(a?.textStyles?a.textStyles.push(e):a.textStyles=[e]),a?.styles?a.styles.push(e):a.styles=[e]}),this.classes.set(e,a)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){(0,o.IU)(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function m(e){if(!e.length)return[];const t=[],a=[];return e.forEach(e=>{const l={name:e.name,children:"Leaf"===e.type?void 0:[]};for(l.classSelector=e?.classSelector,e?.cssCompiledStyles&&(l.cssCompiledStyles=[e.cssCompiledStyles]),"Leaf"===e.type&&void 0!==e.value&&(l.value=e.value);a.length>0&&a[a.length-1].level>=e.level;)a.pop();if(0===a.length)t.push(l);else{const e=a[a.length-1].node;e.children?e.children.push(l):e.children=[l]}"Leaf"!==e.type&&a.push({node:l,level:e.level})}),t}(0,c.K2)(m,"buildHierarchy");var y=(0,c.K2)((e,t)=>{(0,n.S)(e,t);const a=[];for(const r of e.TreemapRows??[])"ClassDefStatement"===r.$type&&t.addClass(r.className??"",r.styleText??"");for(const r of e.TreemapRows??[]){const e=r.item;if(!e)continue;const l=r.indent?parseInt(r.indent):0,s=f(e),n=e.classSelector?t.getStylesForClass(e.classSelector):[],i=n.length>0?n.join(";"):void 0,o={level:l,name:s,type:e.$type,value:e.value,classSelector:e.classSelector,cssCompiledStyles:i};a.push(o)}const l=m(a),s=(0,c.K2)((e,a)=>{for(const l of e)t.addNode(l,a),l.children&&l.children.length>0&&s(l.children,a+1)},"addNodesRecursively");s(l,0)},"populate"),f=(0,c.K2)(e=>e.name?String(e.name):"","getItemName"),u={parser:{yy:void 0},parse:(0,c.K2)(async e=>{try{const t=d.qg,a=await t("treemap",e);c.Rm.debug("Treemap AST:",a);const l=u.parser?.yy;if(!(l instanceof h))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");y(a,l)}catch(t){throw c.Rm.error("Error parsing treemap:",t),t}},"parse")},S=10,g={draw:(0,c.K2)((e,t,a,n)=>{const i=n.db,d=i.getConfig(),h=d.padding??10,m=i.getDiagramTitle(),y=i.getRoot(),{themeVariables:f}=(0,o.zj)();if(!y)return;const u=m?30:0,g=(0,l.D)(t),x=d.nodeWidth?d.nodeWidth*S:960,b=d.nodeHeight?d.nodeHeight*S:500,v=x,C=b+u;let $;g.attr("viewBox",`0 0 ${v} ${C}`),(0,o.a$)(g,C,v,d.useMaxWidth);try{const e=d.valueFormat||",";if("$0,0"===e)$=(0,c.K2)(e=>"$"+(0,p.GPZ)(",")(e),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){const t=/\.\d+/.exec(e),a=t?t[0]:"";$=(0,c.K2)(e=>"$"+(0,p.GPZ)(","+a)(e),"valueFormat")}else if(e.startsWith("$")){const t=e.substring(1);$=(0,c.K2)(e=>"$"+(0,p.GPZ)(t||"")(e),"valueFormat")}else $=(0,p.GPZ)(e)}catch(G){c.Rm.error("Error creating format function:",G),$=(0,p.GPZ)(",")}const w=(0,p.UMr)().range(["transparent",f.cScale0,f.cScale1,f.cScale2,f.cScale3,f.cScale4,f.cScale5,f.cScale6,f.cScale7,f.cScale8,f.cScale9,f.cScale10,f.cScale11]),L=(0,p.UMr)().range(["transparent",f.cScalePeer0,f.cScalePeer1,f.cScalePeer2,f.cScalePeer3,f.cScalePeer4,f.cScalePeer5,f.cScalePeer6,f.cScalePeer7,f.cScalePeer8,f.cScalePeer9,f.cScalePeer10,f.cScalePeer11]),k=(0,p.UMr)().range([f.cScaleLabel0,f.cScaleLabel1,f.cScaleLabel2,f.cScaleLabel3,f.cScaleLabel4,f.cScaleLabel5,f.cScaleLabel6,f.cScaleLabel7,f.cScaleLabel8,f.cScaleLabel9,f.cScaleLabel10,f.cScaleLabel11]);m&&g.append("text").attr("x",v/2).attr("y",u/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(m);const T=g.append("g").attr("transform",`translate(0, ${u})`).attr("class","treemapContainer"),M=(0,p.Sk5)(y).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),z=(0,p.hkb)().size([x,b]).paddingTop(e=>e.children&&e.children.length>0?35:0).paddingInner(h).paddingLeft(e=>e.children&&e.children.length>0?S:0).paddingRight(e=>e.children&&e.children.length>0?S:0).paddingBottom(e=>e.children&&e.children.length>0?S:0).round(!0)(M),P=z.descendants().filter(e=>e.children&&e.children.length>0),F=T.selectAll(".treemapSection").data(P).enter().append("g").attr("class","treemapSection").attr("transform",e=>`translate(${e.x0},${e.y0})`);F.append("rect").attr("width",e=>e.x1-e.x0).attr("height",25).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",e=>0===e.depth?"display: none;":""),F.append("clipPath").attr("id",(e,a)=>`clip-section-${t}-${a}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-12)).attr("height",25),F.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class",(e,t)=>`treemapSection section${t}`).attr("fill",e=>w(e.data.name)).attr("fill-opacity",.6).attr("stroke",e=>L(e.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",e=>{if(0===e.depth)return"display: none;";const t=(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+";"+t.borderStyles.join(";")}),F.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",12.5).attr("dominant-baseline","middle").text(e=>0===e.depth?"":e.data.name).attr("font-weight","bold").attr("style",e=>{if(0===e.depth)return"display: none;";return"dominant-baseline: middle; font-size: 12px; fill:"+k(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")}).each(function(e){if(0===e.depth)return;const t=(0,p.Ltv)(this),a=e.data.name;t.text(a);const l=e.x1-e.x0;let s;if(!1!==d.showValues&&e.value){s=l-10-30-10-6}else{s=l-6-6}const r=Math.max(15,s),n=t.node();if(n.getComputedTextLength()>r){const e="...";let l=a;for(;l.length>0;){if(l=a.substring(0,l.length-1),0===l.length){t.text(e),n.getComputedTextLength()>r&&t.text("");break}if(t.text(l+e),n.getComputedTextLength()<=r)break}}}),!1!==d.showValues&&F.append("text").attr("class","treemapSectionValue").attr("x",e=>e.x1-e.x0-10).attr("y",12.5).attr("text-anchor","end").attr("dominant-baseline","middle").text(e=>e.value?$(e.value):"").attr("font-style","italic").attr("style",e=>{if(0===e.depth)return"display: none;";return"text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+k(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")});const N=z.leaves(),D=T.selectAll(".treemapLeafGroup").data(N).enter().append("g").attr("class",(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:""}x`).attr("transform",e=>`translate(${e.x0},${e.y0})`);D.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class","treemapLeaf").attr("fill",e=>e.parent?w(e.parent.data.name):w(e.data.name)).attr("style",e=>(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",e=>e.parent?w(e.parent.data.name):w(e.data.name)).attr("stroke-width",3),D.append("clipPath").attr("id",(e,a)=>`clip-${t}-${a}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-4)).attr("height",e=>Math.max(0,e.y1-e.y0-4));if(D.append("text").attr("class","treemapLabel").attr("x",e=>(e.x1-e.x0)/2).attr("y",e=>(e.y1-e.y0)/2).attr("style",e=>"text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+k(e.data.name)+";"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(e,a)=>`url(#clip-${t}-${a})`).text(e=>e.data.name).each(function(e){const t=(0,p.Ltv)(this),a=e.x1-e.x0,l=e.y1-e.y0,s=t.node(),r=a-8,n=l-8;if(r<10||n<10)return void t.style("display","none");let i=parseInt(t.style("font-size"),10);for(;s.getComputedTextLength()>r&&i>8;)i--,t.style("font-size",`${i}px`);let o=Math.max(6,Math.min(28,Math.round(.6*i))),c=i+2+o;for(;c>n&&i>8&&(i--,o=Math.max(6,Math.min(28,Math.round(.6*i))),!(o<6&&8===i));)t.style("font-size",`${i}px`),c=i+2+o;t.style("font-size",`${i}px`),(s.getComputedTextLength()>r||i<8||n(e.x1-e.x0)/2).attr("y",function(e){return(e.y1-e.y0)/2}).attr("style",e=>"text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+k(e.data.name)+";"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(e,a)=>`url(#clip-${t}-${a})`).text(e=>e.value?$(e.value):"").each(function(e){const t=(0,p.Ltv)(this),a=this.parentNode;if(!a)return void t.style("display","none");const l=(0,p.Ltv)(a).select(".treemapLabel");if(l.empty()||"none"===l.style("display"))return void t.style("display","none");const s=parseFloat(l.style("font-size")),r=Math.max(6,Math.min(28,Math.round(.6*s)));t.style("font-size",`${r}px`);const n=(e.y1-e.y0)/2+s/2+2;t.attr("y",n);const i=e.x1-e.x0,o=e.y1-e.y0-4,c=i-8;t.node().getComputedTextLength()>c||n+r>o||r<6?t.style("display","none"):t.style("display",null)})}const K=d.diagramPadding??8;(0,s.P)(g,K,"flowchart",d?.useMaxWidth||!1)},"draw"),getClasses:(0,c.K2)(function(e,t){return t.db.getClasses()},"getClasses")},x={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},b=(0,c.K2)(({treemap:e}={})=>{const t=(0,i.$t)(x,e);return`\n .treemapNode.section {\n stroke: ${t.sectionStrokeColor};\n stroke-width: ${t.sectionStrokeWidth};\n fill: ${t.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${t.leafStrokeColor};\n stroke-width: ${t.leafStrokeWidth};\n fill: ${t.leafFillColor};\n }\n .treemapLabel {\n fill: ${t.labelColor};\n font-size: ${t.labelFontSize};\n }\n .treemapValue {\n fill: ${t.valueColor};\n font-size: ${t.valueFontSize};\n }\n .treemapTitle {\n fill: ${t.titleColor};\n font-size: ${t.titleFontSize};\n }\n `},"getStyles"),v={parser:u,get db(){return new h},renderer:g,styles:b}},5871:(e,t,a)=>{function l(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}a.d(t,{S:()=>l}),(0,a(797).K2)(l,"populateCommonDb")}}]); \ No newline at end of file diff --git a/developer/assets/js/291.a0163533.js b/developer/assets/js/291.a0163533.js new file mode 100644 index 0000000..a1e6133 --- /dev/null +++ b/developer/assets/js/291.a0163533.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[291],{291:(t,e,n)=>{n.d(e,{diagram:()=>Y});var i=n(7633),s=n(797),r=n(451),a=n(3219),o=n(8041),c=n(5263),l=function(){var t=(0,s.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,11,12,14,16,17,20,21],n=[1,9],i=[1,10],r=[1,11],a=[1,12],o=[1,13],c=[1,16],l=[1,17],h={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:(0,s.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.getCommonDb().setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.getCommonDb().setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 15:i.addTask(r[o],0,""),this.$=r[o];break;case 16:i.addEvent(r[o].substr(2)),this.$=r[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:r,16:a,17:o,18:14,19:15,20:c,21:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:n,12:i,14:r,16:a,17:o,18:14,19:15,20:c,21:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:(0,s.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,c="",l=0,h=0,d=0,u=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var f=p.yylloc;a.push(f);var m=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){n.length=n.length-2*t,r.length=r.length-t,a.length=a.length-t},"popStack"),(0,s.K2)(x,"lex");for(var b,k,_,w,v,K,S,$,E,T={};;){if(_=n[n.length-1],this.defaultActions[_]?w=this.defaultActions[_]:(null==b&&(b=x()),w=o[_]&&o[_][b]),void 0===w||!w.length||!w[0]){var I="";for(K in E=[],o[_])this.terminals_[K]&&K>2&&E.push("'"+this.terminals_[K]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[b]||b,line:p.yylineno,loc:f,expected:E})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+b);switch(w[0]){case 1:n.push(b),r.push(p.yytext),a.push(p.yylloc),n.push(w[1]),b=null,k?(b=k,k=null):(h=p.yyleng,c=p.yytext,l=p.yylineno,f=p.yylloc,d>0&&d--);break;case 2:if(S=this.productions_[w[1]][1],T.$=r[r.length-S],T._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(T._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(v=this.performAction.apply(T,[c,h,l,y.yy,w[1],r,a].concat(u))))return v;S&&(n=n.slice(0,-1*S*2),r=r.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[w[1]][0]),r.push(T.$),a.push(T._$),$=o[n[n.length-2]][n[n.length-1]],n.push($);break;case 3:return!0}}return!0},"parse")},d=function(){return{EOF:1,parseError:(0,s.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,s.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,s.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)(function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}}}();function u(){this.yy={}}return h.lexer=d,(0,s.K2)(u,"Parser"),u.prototype=h,h.Parser=u,new u}();l.parser=l;var h=l,d={};(0,s.VA)(d,{addEvent:()=>v,addSection:()=>b,addTask:()=>w,addTaskOrg:()=>K,clear:()=>x,default:()=>$,getCommonDb:()=>m,getSections:()=>k,getTasks:()=>_});var u="",p=0,y=[],g=[],f=[],m=(0,s.K2)(()=>i.Wt,"getCommonDb"),x=(0,s.K2)(function(){y.length=0,g.length=0,u="",f.length=0,(0,i.IU)()},"clear"),b=(0,s.K2)(function(t){u=t,y.push(t)},"addSection"),k=(0,s.K2)(function(){return y},"getSections"),_=(0,s.K2)(function(){let t=S();let e=0;for(;!t&&e<100;)t=S(),e++;return g.push(...f),g},"getTasks"),w=(0,s.K2)(function(t,e,n){const i={id:p++,section:u,type:u,task:t,score:e||0,events:n?[n]:[]};f.push(i)},"addTask"),v=(0,s.K2)(function(t){f.find(t=>t.id===p-1).events.push(t)},"addEvent"),K=(0,s.K2)(function(t){const e={section:u,type:u,description:t,task:t,classes:[]};g.push(e)},"addTaskOrg"),S=(0,s.K2)(function(){const t=(0,s.K2)(function(t){return f[t].processed},"compileTask");let e=!0;for(const[n,i]of f.entries())t(n),e=e&&i.processed;return e},"compileTasks"),$={clear:x,getCommonDb:m,addSection:b,getSections:k,getTasks:_,addTask:w,addTaskOrg:K,addEvent:v},E=(0,s.K2)(function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},"drawRect"),T=(0,s.K2)(function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),a=t.append("g");function o(t){const i=(0,r.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function c(t){const i=(0,r.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function l(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),a.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,s.K2)(o,"smile"),(0,s.K2)(c,"sad"),(0,s.K2)(l,"ambivalent"),e.score>3?o(a):e.score<3?c(a):l(a),i},"drawFace"),I=(0,s.K2)(function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},"drawCircle"),R=(0,s.K2)(function(t,e){const n=e.text.replace(//gi," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const s=i.append("tspan");return s.attr("x",e.x+2*e.textMargin),s.text(n),i},"drawText"),A=(0,s.K2)(function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,s.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,R(t,e)},"drawLabel"),L=(0,s.K2)(function(t,e,n){const i=t.append("g"),s=H();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=n.width,s.height=n.height,s.class="journey-section section-type-"+e.num,s.rx=3,s.ry=3,E(i,s),O(n)(e.text,i,s.x,s.y,s.width,s.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),M=-1,C=(0,s.K2)(function(t,e,n){const i=e.x+n.width/2,s=t.append("g");M++;s.append("line").attr("id","task"+M).attr("x1",i).attr("y1",e.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),T(s,{cx:i,cy:300+30*(5-e.score),score:e.score});const r=H();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width,r.height=n.height,r.class="task task-type-"+e.num,r.rx=3,r.ry=3,E(s,r),O(n)(e.task,s,r.x,r.y,r.width,r.height,{class:"task"},n,e.colour)},"drawTask"),N=(0,s.K2)(function(t,e){E(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),P=(0,s.K2)(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),H=(0,s.K2)(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),O=function(){function t(t,e,n,s,r,a,o,c){i(e.append("text").attr("x",n+r/2).attr("y",s+a/2+5).style("font-color",c).style("text-anchor","middle").text(t),o)}function e(t,e,n,s,r,a,o,c,l){const{taskFontSize:h,taskFontFamily:d}=c,u=t.split(//gi);for(let p=0;p)/).reverse(),s=[],a=n.attr("y"),o=parseFloat(n.attr("dy")),c=n.text(null).append("tspan").attr("x",0).attr("y",a).attr("dy",o+"em");for(let r=0;re||"
    "===t)&&(s.pop(),c.text(s.join(" ").trim()),s="
    "===t?[""]:[t],c=n.append("tspan").attr("x",0).attr("y",a).attr("dy","1.1em").text(t))})}(0,s.K2)(D,"wrap");var z=(0,s.K2)(function(t,e,n,i){const s=n%12-1,r=t.append("g");e.section=s,r.attr("class",(e.class?e.class+" ":"")+"timeline-node section-"+s);const a=r.append("g"),o=r.append("g"),c=o.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(D,e.width).node().getBBox(),l=i.fontSize?.replace?i.fontSize.replace("px",""):i.fontSize;return e.height=c.height+1.1*l*.5+e.padding,e.height=Math.max(e.height,e.maxHeight),e.width=e.width+2*e.padding,o.attr("transform","translate("+e.width/2+", "+e.padding/2+")"),B(a,e,s,i),e},"drawNode"),W=(0,s.K2)(function(t,e,n){const i=t.append("g"),s=i.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(D,e.width).node().getBBox(),r=n.fontSize?.replace?n.fontSize.replace("px",""):n.fontSize;return i.remove(),s.height+1.1*r*.5+e.padding},"getVirtualNodeHeight"),B=(0,s.K2)(function(t,e,n){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)},"defaultBkg"),F={drawRect:E,drawCircle:I,drawSection:L,drawText:R,drawLabel:A,drawTask:C,drawBackgroundRect:N,getTextObj:P,getNoteRect:H,initGraphics:j,drawNode:z,getVirtualNodeHeight:W},V=(0,s.K2)(function(t,e,n,a){const o=(0,i.D7)(),c=o.timeline?.leftMargin??50;s.Rm.debug("timeline",a.db);const l=o.securityLevel;let h;"sandbox"===l&&(h=(0,r.Ltv)("#i"+e));const d=("sandbox"===l?(0,r.Ltv)(h.nodes()[0].contentDocument.body):(0,r.Ltv)("body")).select("#"+e);d.append("g");const u=a.db.getTasks(),p=a.db.getCommonDb().getDiagramTitle();s.Rm.debug("task",u),F.initGraphics(d);const y=a.db.getSections();s.Rm.debug("sections",y);let g=0,f=0,m=0,x=0,b=50+c,k=50;x=50;let _=0,w=!0;y.forEach(function(t){const e={number:_,descr:t,section:_,width:150,padding:20,maxHeight:g},n=F.getVirtualNodeHeight(d,e,o);s.Rm.debug("sectionHeight before draw",n),g=Math.max(g,n+20)});let v=0,K=0;s.Rm.debug("tasks.length",u.length);for(const[i,r]of u.entries()){const t={number:i,descr:r,section:r.section,width:150,padding:20,maxHeight:f},e=F.getVirtualNodeHeight(d,t,o);s.Rm.debug("taskHeight before draw",e),f=Math.max(f,e+20),v=Math.max(v,r.events.length);let n=0;for(const i of r.events){const t={descr:i,section:r.section,number:r.section,width:150,padding:20,maxHeight:50};n+=F.getVirtualNodeHeight(d,t,o)}r.events.length>0&&(n+=10*(r.events.length-1)),K=Math.max(K,n)}s.Rm.debug("maxSectionHeight before draw",g),s.Rm.debug("maxTaskHeight before draw",f),y&&y.length>0?y.forEach(t=>{const e=u.filter(e=>e.section===t),n={number:_,descr:t,section:_,width:200*Math.max(e.length,1)-50,padding:20,maxHeight:g};s.Rm.debug("sectionNode",n);const i=d.append("g"),r=F.drawNode(i,n,_,o);s.Rm.debug("sectionNode output",r),i.attr("transform",`translate(${b}, 50)`),k+=g+50,e.length>0&&G(d,e,_,b,k,f,o,v,K,g,!1),b+=200*Math.max(e.length,1),k=50,_++}):(w=!1,G(d,u,_,b,k,f,o,v,K,g,!0));const S=d.node().getBBox();s.Rm.debug("bounds",S),p&&d.append("text").text(p).attr("x",S.width/2-c).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),m=w?g+f+150:f+100;d.append("g").attr("class","lineWrapper").append("line").attr("x1",c).attr("y1",m).attr("x2",S.width+3*c).attr("y2",m).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),(0,i.ot)(void 0,d,o.timeline?.padding??50,o.timeline?.useMaxWidth??!1)},"draw"),G=(0,s.K2)(function(t,e,n,i,r,a,o,c,l,h,d){for(const u of e){const e={descr:u.task,section:n,number:n,width:150,padding:20,maxHeight:a};s.Rm.debug("taskNode",e);const c=t.append("g").attr("class","taskWrapper"),h=F.drawNode(c,e,n,o).height;if(s.Rm.debug("taskHeight after draw",h),c.attr("transform",`translate(${i}, ${r})`),a=Math.max(a,h),u.events){const e=t.append("g").attr("class","lineWrapper");let s=a;r+=100,s+=U(t,u.events,n,i,r,o),r-=100,e.append("line").attr("x1",i+95).attr("y1",r+a).attr("x2",i+95).attr("y2",r+a+100+l+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}i+=200,d&&!o.timeline?.disableMulticolor&&n++}r-=10},"drawTasks"),U=(0,s.K2)(function(t,e,n,i,r,a){let o=0;const c=r;r+=100;for(const l of e){const e={descr:l,section:n,number:n,width:150,padding:20,maxHeight:50};s.Rm.debug("eventNode",e);const c=t.append("g").attr("class","eventWrapper"),h=F.drawNode(c,e,n,a).height;o+=h,c.attr("transform",`translate(${i}, ${r})`),r=r+10+h}return r=c,o},"drawEvents"),q={setConf:(0,s.K2)(()=>{},"setConf"),draw:V},J=(0,s.K2)(t=>{let e="";for(let n=0;n`\n .edge {\n stroke-width: 3;\n }\n ${J(t)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/developer/assets/js/2bccb399.2379b4a5.js b/developer/assets/js/2bccb399.2379b4a5.js new file mode 100644 index 0000000..f181531 --- /dev/null +++ b/developer/assets/js/2bccb399.2379b4a5.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[5154],{4421:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>g,frontMatter:()=>o,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"debugging","title":"Debugging Guide","description":"Tips and techniques for debugging the Tibber Prices integration during development.","source":"@site/docs/debugging.md","sourceDirName":".","slug":"/debugging","permalink":"/hass.tibber_prices/developer/debugging","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/debugging.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Critical Behavior Patterns - Testing Guide","permalink":"/hass.tibber_prices/developer/critical-patterns"},"next":{"title":"Period Calculation Theory","permalink":"/hass.tibber_prices/developer/period-calculation-theory"}}');var s=i(4848),t=i(8453);const o={},d="Debugging Guide",l={},c=[{value:"Logging",id:"logging",level:2},{value:"Enable Debug Logging",id:"enable-debug-logging",level:3},{value:"Key Log Messages",id:"key-log-messages",level:3},{value:"VS Code Debugging",id:"vs-code-debugging",level:2},{value:"Launch Configuration",id:"launch-configuration",level:3},{value:"Set Breakpoints",id:"set-breakpoints",level:3},{value:"pytest Debugging",id:"pytest-debugging",level:2},{value:"Run Single Test with Output",id:"run-single-test-with-output",level:3},{value:"Debug Test in VS Code",id:"debug-test-in-vs-code",level:3},{value:"Useful Test Patterns",id:"useful-test-patterns",level:3},{value:"Common Issues",id:"common-issues",level:2},{value:"Integration Not Loading",id:"integration-not-loading",level:3},{value:"Sensors Not Updating",id:"sensors-not-updating",level:3},{value:"Period Calculation Wrong",id:"period-calculation-wrong",level:3},{value:"Performance Profiling",id:"performance-profiling",level:2},{value:"Time Execution",id:"time-execution",level:3},{value:"Memory Usage",id:"memory-usage",level:3},{value:"Profile with cProfile",id:"profile-with-cprofile",level:3},{value:"Live Debugging in Running HA",id:"live-debugging-in-running-ha",level:2},{value:"Remote Debugging with debugpy",id:"remote-debugging-with-debugpy",level:3},{value:"IPython REPL",id:"ipython-repl",level:3}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"debugging-guide",children:"Debugging Guide"})}),"\n",(0,s.jsx)(n.p,{children:"Tips and techniques for debugging the Tibber Prices integration during development."}),"\n",(0,s.jsx)(n.h2,{id:"logging",children:"Logging"}),"\n",(0,s.jsx)(n.h3,{id:"enable-debug-logging",children:"Enable Debug Logging"}),"\n",(0,s.jsxs)(n.p,{children:["Add to ",(0,s.jsx)(n.code,{children:"configuration.yaml"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"logger:\n default: info\n logs:\n custom_components.tibber_prices: debug\n"})}),"\n",(0,s.jsx)(n.p,{children:"Restart Home Assistant to apply."}),"\n",(0,s.jsx)(n.h3,{id:"key-log-messages",children:"Key Log Messages"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Coordinator Updates:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"[custom_components.tibber_prices.coordinator] Successfully fetched price data\n[custom_components.tibber_prices.coordinator] Cache valid, using cached data\n[custom_components.tibber_prices.coordinator] Midnight turnover detected, clearing cache\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Period Calculation:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"[custom_components.tibber_prices.coordinator.periods] Calculating BEST PRICE periods: flex=15.0%\n[custom_components.tibber_prices.coordinator.periods] Day 2024-12-06: Found 2 periods\n[custom_components.tibber_prices.coordinator.periods] Period 1: 02:00-05:00 (12 intervals)\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"API Errors:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"[custom_components.tibber_prices.api] API request failed: Unauthorized\n[custom_components.tibber_prices.api] Retrying (attempt 2/3) after 2.0s\n"})}),"\n",(0,s.jsx)(n.h2,{id:"vs-code-debugging",children:"VS Code Debugging"}),"\n",(0,s.jsx)(n.h3,{id:"launch-configuration",children:"Launch Configuration"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:".vscode/launch.json"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "version": "0.2.0",\n "configurations": [\n {\n "name": "Home Assistant",\n "type": "debugpy",\n "request": "launch",\n "module": "homeassistant",\n "args": ["-c", "config", "--debug"],\n "justMyCode": false,\n "env": {\n "PYTHONPATH": "${workspaceFolder}/.venv/lib/python3.13/site-packages"\n }\n }\n ]\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"set-breakpoints",children:"Set Breakpoints"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Coordinator update:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# coordinator/core.py\nasync def _async_update_data(self) -> dict:\n """Fetch data from API."""\n breakpoint() # Or set VS Code breakpoint\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Period calculation:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# coordinator/period_handlers/core.py\ndef calculate_periods(...) -> list[dict]:\n """Calculate best/peak price periods."""\n breakpoint()\n'})}),"\n",(0,s.jsx)(n.h2,{id:"pytest-debugging",children:"pytest Debugging"}),"\n",(0,s.jsx)(n.h3,{id:"run-single-test-with-output",children:"Run Single Test with Output"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:".venv/bin/python -m pytest tests/test_period_calculation.py::test_midnight_crossing -v -s\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Flags:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"-v"})," - Verbose output"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"-s"})," - Show print statements"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"-k pattern"})," - Run tests matching pattern"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"debug-test-in-vs-code",children:"Debug Test in VS Code"}),"\n",(0,s.jsx)(n.p,{children:'Set breakpoint in test file, use "Debug Test" CodeLens.'}),"\n",(0,s.jsx)(n.h3,{id:"useful-test-patterns",children:"Useful Test Patterns"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Print coordinator data:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'def test_something(coordinator):\n print(f"Coordinator data: {coordinator.data}")\n print(f"Price info count: {len(coordinator.data[\'priceInfo\'])}")\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Inspect period attributes:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"def test_periods(hass, coordinator):\n periods = coordinator.data.get('best_price_periods', [])\n for period in periods:\n print(f\"Period: {period['start']} to {period['end']}\")\n print(f\" Intervals: {len(period['intervals'])}\")\n"})}),"\n",(0,s.jsx)(n.h2,{id:"common-issues",children:"Common Issues"}),"\n",(0,s.jsx)(n.h3,{id:"integration-not-loading",children:"Integration Not Loading"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'grep "tibber_prices" config/home-assistant.log\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Common causes:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Syntax error in Python code \u2192 Check logs for traceback"}),"\n",(0,s.jsxs)(n.li,{children:["Missing dependency \u2192 Run ",(0,s.jsx)(n.code,{children:"uv sync"})]}),"\n",(0,s.jsxs)(n.li,{children:["Wrong file permissions \u2192 ",(0,s.jsx)(n.code,{children:"chmod +x scripts/*"})]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"sensors-not-updating",children:"Sensors Not Updating"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check coordinator state:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"# In Developer Tools > Template\n{{ states.sensor.tibber_home_current_interval_price.last_updated }}\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Debug in code:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# Add logging in sensor/core.py\n_LOGGER.debug("Updating sensor %s: old=%s new=%s",\n self.entity_id, self._attr_native_value, new_value)\n'})}),"\n",(0,s.jsx)(n.h3,{id:"period-calculation-wrong",children:"Period Calculation Wrong"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Enable detailed period logs:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"# coordinator/period_handlers/period_building.py\n_LOGGER.debug(\"Candidate intervals: %s\",\n [(i['startsAt'], i['total']) for i in candidates])\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check filter statistics:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"[period_building] Flex filter blocked: 45 intervals\n[period_building] Min distance blocked: 12 intervals\n[period_building] Level filter blocked: 8 intervals\n"})}),"\n",(0,s.jsx)(n.h2,{id:"performance-profiling",children:"Performance Profiling"}),"\n",(0,s.jsx)(n.h3,{id:"time-execution",children:"Time Execution"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'import time\n\nstart = time.perf_counter()\nresult = expensive_function()\nduration = time.perf_counter() - start\n_LOGGER.debug("Function took %.3fs", duration)\n'})}),"\n",(0,s.jsx)(n.h3,{id:"memory-usage",children:"Memory Usage"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'import tracemalloc\n\ntracemalloc.start()\n# ... your code ...\ncurrent, peak = tracemalloc.get_traced_memory()\n_LOGGER.debug("Memory: current=%d peak=%d", current, peak)\ntracemalloc.stop()\n'})}),"\n",(0,s.jsx)(n.h3,{id:"profile-with-cprofile",children:"Profile with cProfile"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"python -m cProfile -o profile.stats -m homeassistant -c config\npython -m pstats profile.stats\n# Then: sort cumtime, stats 20\n"})}),"\n",(0,s.jsx)(n.h2,{id:"live-debugging-in-running-ha",children:"Live Debugging in Running HA"}),"\n",(0,s.jsx)(n.h3,{id:"remote-debugging-with-debugpy",children:"Remote Debugging with debugpy"}),"\n",(0,s.jsx)(n.p,{children:"Add to coordinator code:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'import debugpy\ndebugpy.listen(5678)\n_LOGGER.info("Waiting for debugger attach on port 5678")\ndebugpy.wait_for_client()\n'})}),"\n",(0,s.jsx)(n.p,{children:"Connect from VS Code with remote attach configuration."}),"\n",(0,s.jsx)(n.h3,{id:"ipython-repl",children:"IPython REPL"}),"\n",(0,s.jsx)(n.p,{children:"Install in container:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"uv pip install ipython\n"})}),"\n",(0,s.jsx)(n.p,{children:"Add breakpoint:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"from IPython import embed\nembed() # Drops into interactive shell\n"})}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsxs)(n.p,{children:["\ud83d\udca1 ",(0,s.jsx)(n.strong,{children:"Related:"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/testing",children:"Testing Guide"})," - Writing and running tests"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/setup",children:"Setup Guide"})," - Development environment"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/architecture",children:"Architecture"})," - Code structure"]}),"\n"]})]})}function g(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/3490.f0da84b9.js b/developer/assets/js/3490.f0da84b9.js new file mode 100644 index 0000000..89387ca --- /dev/null +++ b/developer/assets/js/3490.f0da84b9.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[3490],{3490:(e,s,l)=>{l.d(s,{createInfoServices:()=>c.v});var c=l(1885);l(7960)}}]); \ No newline at end of file diff --git a/developer/assets/js/3815.50c91756.js b/developer/assets/js/3815.50c91756.js new file mode 100644 index 0000000..1950fed --- /dev/null +++ b/developer/assets/js/3815.50c91756.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[3815],{3815:(e,r,s)=>{s.d(r,{diagram:()=>t});var a=s(1746),l=(s(2501),s(9625),s(1152),s(45),s(5164),s(8698),s(5894),s(3245),s(2387),s(92),s(3226),s(7633),s(797)),t={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,l.K2)(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/developer/assets/js/3847b3ea.7722d03e.js b/developer/assets/js/3847b3ea.7722d03e.js new file mode 100644 index 0000000..598b467 --- /dev/null +++ b/developer/assets/js/3847b3ea.7722d03e.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[6214],{3341:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"setup","title":"Development Setup","description":"Note: This guide is under construction. For now, please refer to AGENTS.md for detailed setup information.","source":"@site/docs/setup.md","sourceDirName":".","slug":"/setup","permalink":"/hass.tibber_prices/developer/setup","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/setup.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"API Reference","permalink":"/hass.tibber_prices/developer/api-reference"},"next":{"title":"Coding Guidelines","permalink":"/hass.tibber_prices/developer/coding-guidelines"}}');var t=i(4848),r=i(8453);const l={},o="Development Setup",d={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Quick Setup",id:"quick-setup",level:2},{value:"Development Environment",id:"development-environment",level:2},{value:"Running the Integration",id:"running-the-integration",level:2},{value:"Making Changes",id:"making-changes",level:2}];function a(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"development-setup",children:"Development Setup"})}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," This guide is under construction. For now, please refer to ",(0,t.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,t.jsx)(n.code,{children:"AGENTS.md"})})," for detailed setup information."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"VS Code with Dev Container support"}),"\n",(0,t.jsx)(n.li,{children:"Docker installed and running"}),"\n",(0,t.jsx)(n.li,{children:"GitHub account (for Tibber API token)"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"quick-setup",children:"Quick Setup"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:'# Clone the repository\ngit clone https://github.com/jpawlowski/hass.tibber_prices.git\ncd hass.tibber_prices\n\n# Open in VS Code\ncode .\n\n# Reopen in DevContainer (VS Code will prompt)\n# Or manually: Ctrl+Shift+P \u2192 "Dev Containers: Reopen in Container"\n'})}),"\n",(0,t.jsx)(n.h2,{id:"development-environment",children:"Development Environment"}),"\n",(0,t.jsx)(n.p,{children:"The DevContainer includes:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Python 3.13 with ",(0,t.jsx)(n.code,{children:".venv"})," at ",(0,t.jsx)(n.code,{children:"/home/vscode/.venv/"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"uv"})," package manager (fast, modern Python tooling)"]}),"\n",(0,t.jsx)(n.li,{children:"Home Assistant development dependencies"}),"\n",(0,t.jsx)(n.li,{children:"Ruff linter/formatter"}),"\n",(0,t.jsx)(n.li,{children:"Git, GitHub CLI, Node.js, Rust toolchain"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"running-the-integration",children:"Running the Integration"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Start Home Assistant in debug mode\n./scripts/develop\n"})}),"\n",(0,t.jsxs)(n.p,{children:["Visit ",(0,t.jsx)(n.a,{href:"http://localhost:8123",children:"http://localhost:8123"})]}),"\n",(0,t.jsx)(n.h2,{id:"making-changes",children:"Making Changes"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Lint and format code\n./scripts/lint\n\n# Check-only (CI mode)\n./scripts/lint-check\n\n# Validate integration structure\n./scripts/release/hassfest\n"})}),"\n",(0,t.jsxs)(n.p,{children:["See ",(0,t.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,t.jsx)(n.code,{children:"AGENTS.md"})})," for detailed patterns and conventions."]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/393be207.ad9eb182.js b/developer/assets/js/393be207.ad9eb182.js new file mode 100644 index 0000000..5787673 --- /dev/null +++ b/developer/assets/js/393be207.ad9eb182.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[4134],{1943:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>d,contentTitle:()=>p,default:()=>c,frontMatter:()=>o,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"type":"mdx","permalink":"/hass.tibber_prices/developer/markdown-page","source":"@site/src/pages/markdown-page.md","title":"Markdown page example","description":"You don\'t need React to write simple standalone pages.","frontMatter":{"title":"Markdown page example"},"unlisted":false}');var r=t(4848),s=t(8453);const o={title:"Markdown page example"},p="Markdown page example",d={},l=[];function i(e){const a={h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.header,{children:(0,r.jsx)(a.h1,{id:"markdown-page-example",children:"Markdown page example"})}),"\n",(0,r.jsx)(a.p,{children:"You don't need React to write simple standalone pages."})]})}function c(e={}){const{wrapper:a}={...(0,s.R)(),...e.components};return a?(0,r.jsx)(a,{...e,children:(0,r.jsx)(i,{...e})}):i(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/4250.ea88333c.js b/developer/assets/js/4250.ea88333c.js new file mode 100644 index 0000000..534eb6f --- /dev/null +++ b/developer/assets/js/4250.ea88333c.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[4250],{1869:(e,s,l)=>{l.d(s,{createGitGraphServices:()=>p.b});var p=l(7539);l(7960)}}]); \ No newline at end of file diff --git a/developer/assets/js/4616.6afa4c55.js b/developer/assets/js/4616.6afa4c55.js new file mode 100644 index 0000000..6ce3d62 --- /dev/null +++ b/developer/assets/js/4616.6afa4c55.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[4616],{4616:(t,e,s)=>{s.d(e,{Zk:()=>h,q7:()=>B,tM:()=>ot,u4:()=>rt});var i=s(9625),n=s(1152),r=s(45),o=s(3226),a=s(7633),c=s(797),l=function(){var t=(0,c.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],o=[1,11],a=[1,16],l=[1,17],h=[1,18],d=[1,19],u=[1,33],p=[1,20],y=[1,21],g=[1,22],m=[1,23],f=[1,24],S=[1,26],_=[1,27],k=[1,28],b=[1,29],T=[1,30],E=[1,31],D=[1,32],C=[1,35],x=[1,36],$=[1,37],v=[1,38],I=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],w=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],R={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:(0,c.K2)(function(t,e,s,i,n,r,o){var a=r.length-1;switch(n){case 3:return i.setRootDoc(r[a]),r[a];case 4:this.$=[];break;case 5:"nl"!=r[a]&&(r[a-1].push(r[a]),this.$=r[a-1]);break;case 6:case 7:case 12:this.$=r[a];break;case 8:this.$="nl";break;case 13:const t=r[a-1];t.description=i.trimColon(r[a]),this.$=t;break;case 14:this.$={stmt:"relation",state1:r[a-2],state2:r[a]};break;case 15:const e=i.trimColon(r[a]);this.$={stmt:"relation",state1:r[a-3],state2:r[a-1],description:e};break;case 19:this.$={stmt:"state",id:r[a-3],type:"default",description:"",doc:r[a-1]};break;case 20:var c=r[a],l=r[a-2].trim();if(r[a].match(":")){var h=r[a].split(":");c=h[0],l=[l,h[1]]}this.$={stmt:"state",id:c,type:"default",description:l};break;case 21:this.$={stmt:"state",id:r[a-3],type:"default",description:r[a-5],doc:r[a-1]};break;case 22:this.$={stmt:"state",id:r[a],type:"fork"};break;case 23:this.$={stmt:"state",id:r[a],type:"join"};break;case 24:this.$={stmt:"state",id:r[a],type:"choice"};break;case 25:this.$={stmt:"state",id:i.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:r[a-1].trim(),note:{position:r[a-2].trim(),text:r[a].trim()}};break;case 29:this.$=r[a].trim(),i.setAccTitle(this.$);break;case 30:case 31:this.$=r[a].trim(),i.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:r[a-3],url:r[a-2],tooltip:r[a-1]};break;case 33:this.$={stmt:"click",id:r[a-3],url:r[a-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:r[a-1].trim(),classes:r[a].trim()};break;case 36:this.$={stmt:"style",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 37:this.$={stmt:"applyClass",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 38:i.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:i.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:i.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:i.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:r[a].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:r[a-2].trim(),classes:[r[a].trim()],type:"default",description:""}}},"anonymous"),table:[{3:1,4:e,5:s,6:i},{1:[3]},{3:5,4:e,5:s,6:i},{3:6,4:e,5:s,6:i},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:_,37:k,38:b,41:T,45:E,48:D,51:C,52:x,53:$,54:v,57:I},t(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:a,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:_,37:k,38:b,41:T,45:E,48:D,51:C,52:x,53:$,54:v,57:I},t(A,[2,7]),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(A,[2,11]),t(A,[2,12],{14:[1,40],15:[1,41]}),t(A,[2,16]),{18:[1,42]},t(A,[2,18],{20:[1,43]}),{23:[1,44]},t(A,[2,22]),t(A,[2,23]),t(A,[2,24]),t(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(A,[2,28]),{34:[1,49]},{36:[1,50]},t(A,[2,31]),{13:51,24:u,57:I},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(L,[2,44],{58:[1,56]}),t(L,[2,45],{58:[1,57]}),t(A,[2,38]),t(A,[2,39]),t(A,[2,40]),t(A,[2,41]),t(A,[2,6]),t(A,[2,13]),{13:58,24:u,57:I},t(A,[2,17]),t(w,n,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(A,[2,29]),t(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(A,[2,14],{14:[1,71]}),{4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,21:[1,72],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:_,37:k,38:b,41:T,45:E,48:D,51:C,52:x,53:$,54:v,57:I},t(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(A,[2,34]),t(A,[2,35]),t(A,[2,36]),t(A,[2,37]),t(L,[2,46]),t(L,[2,47]),t(A,[2,15]),t(A,[2,19]),t(w,n,{7:78}),t(A,[2,26]),t(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,21:[1,81],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:_,37:k,38:b,41:T,45:E,48:D,51:C,52:x,53:$,54:v,57:I},t(A,[2,32]),t(A,[2,33]),t(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],o=this.table,a="",l=0,h=0,d=0,u=r.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;r.push(m);var f=p.options&&p.options.ranges;function S(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,c.K2)(S,"lex");for(var _,k,b,T,E,D,C,x,$,v={};;){if(b=s[s.length-1],this.defaultActions[b]?T=this.defaultActions[b]:(null==_&&(_=S()),T=o[b]&&o[b][_]),void 0===T||!T.length||!T[0]){var I="";for(D in $=[],o[b])this.terminals_[D]&&D>2&&$.push("'"+this.terminals_[D]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+$.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:$})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+_);switch(T[0]){case 1:s.push(_),n.push(p.yytext),r.push(p.yylloc),s.push(T[1]),_=null,k?(_=k,k=null):(h=p.yyleng,a=p.yytext,l=p.yylineno,m=p.yylloc,d>0&&d--);break;case 2:if(C=this.productions_[T[1]][1],v.$=n[n.length-C],v._$={first_line:r[r.length-(C||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(C||1)].first_column,last_column:r[r.length-1].last_column},f&&(v._$.range=[r[r.length-(C||1)].range[0],r[r.length-1].range[1]]),void 0!==(E=this.performAction.apply(v,[a,h,l,y.yy,T[1],n,r].concat(u))))return E;C&&(s=s.slice(0,-1*C*2),n=n.slice(0,-1*C),r=r.slice(0,-1*C)),s.push(this.productions_[T[1]][0]),n.push(v.$),r.push(v._$),x=o[s[s.length-2]][s[s.length-1]],s.push(x);break;case 3:return!0}}return!0},"parse")},N=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,s,i){switch(s){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:case 45:return 51;case 5:case 46:return 52;case 6:case 47:return 53;case 7:case 48:return 54;case 8:case 9:case 11:case 12:case 13:case 14:case 57:case 59:case 65:break;case 10:case 80:return 5;case 15:case 35:return this.pushState("SCALE"),17;case 16:case 36:return 18;case 17:case 23:case 37:case 52:case 55:this.popState();break;case 18:return this.begin("acc_title"),33;case 19:return this.popState(),"acc_title_value";case 20:return this.begin("acc_descr"),35;case 21:return this.popState(),"acc_descr_value";case 22:this.begin("acc_descr_multiline");break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 27:return this.popState(),this.pushState("CLASSDEFID"),42;case 28:return this.popState(),43;case 29:return this.pushState("CLASS"),48;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;case 31:return this.popState(),50;case 32:return this.pushState("STYLE"),45;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;case 34:return this.popState(),47;case 38:this.pushState("STATE");break;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 41:case 44:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";case 51:case 67:return this.popState(),"ID";case 53:return"STATE_DESCR";case 54:return 19;case 56:return this.popState(),this.pushState("struct"),20;case 58:return this.popState(),21;case 60:return this.begin("NOTE"),29;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:return this.popState(),this.pushState("NOTE_ID"),60;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 66:return"NOTE_TEXT";case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;case 69:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 70:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 71:case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return e.yytext=e.yytext.trim(),14;case 77:return 15;case 78:return 28;case 79:return 58;case 81:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}}}();function O(){this.yy={}}return R.lexer=N,(0,c.K2)(O,"Parser"),O.prototype=R,R.Parser=O,new O}();l.parser=l;var h=l,d="state",u="root",p="relation",y="default",g="divider",m="fill:none",f="fill: #333",S="text",_="normal",k="rect",b="rectWithTitle",T="divider",E="roundedWithTitle",D="statediagram",C=`${D}-state`,x="transition",$=`${x} note-edge`,v=`${D}-note`,I=`${D}-cluster`,A=`${D}-cluster-alt`,L="parent",w="note",R="----",N=`${R}${w}`,O=`${R}${L}`,K=(0,c.K2)((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir"),B={getClasses:(0,c.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,c.K2)(async function(t,e,s,l){c.Rm.info("REF0:"),c.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:h,state:d,layout:u}=(0,a.D7)();l.db.extract(l.db.getRootDocV2());const p=l.db.getData(),y=(0,i.A)(e,h);p.type=l.type,p.layoutAlgorithm=u,p.nodeSpacing=d?.nodeSpacing||50,p.rankSpacing=d?.rankSpacing||50,p.markers=["barb"],p.diagramId=e,await(0,r.XX)(p,y);try{("function"==typeof l.db.getLinks?l.db.getLinks():new Map).forEach((t,e)=>{const s="string"==typeof e?e:"string"==typeof e?.id?e.id:"";if(!s)return void c.Rm.warn("\u26a0\ufe0f Invalid or missing stateId from key:",JSON.stringify(e));const i=y.node()?.querySelectorAll("g");let n;if(i?.forEach(t=>{const e=t.textContent?.trim();e===s&&(n=t)}),!n)return void c.Rm.warn("\u26a0\ufe0f Could not find node matching text:",s);const r=n.parentNode;if(!r)return void c.Rm.warn("\u26a0\ufe0f Node has no parent, cannot wrap:",s);const o=document.createElementNS("http://www.w3.org/2000/svg","a"),a=t.url.replace(/^"+|"+$/g,"");if(o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),o.setAttribute("target","_blank"),t.tooltip){const e=t.tooltip.replace(/^"+|"+$/g,"");o.setAttribute("title",e)}r.replaceChild(o,n),o.appendChild(n),c.Rm.info("\ud83d\udd17 Wrapped node in
    tag for:",s,t.url)})}catch(g){c.Rm.error("\u274c Error injecting clickable links:",g)}o._K.insertTitle(y,"statediagramTitleText",d?.titleTopMargin??25,l.db.getDiagramTitle()),(0,n.P)(y,8,D,d?.useMaxWidth??!0)},"draw"),getDir:K},F=new Map,Y=0;function P(t="",e=0,s="",i=R){return`state-${t}${null!==s&&s.length>0?`${i}${s}`:""}-${e}`}(0,c.K2)(P,"stateDomId");var G=(0,c.K2)((t,e,s,i,n,r,o,l)=>{c.Rm.trace("items",e),e.forEach(e=>{switch(e.stmt){case d:case y:X(t,e,s,i,n,r,o,l);break;case p:{X(t,e.state1,s,i,n,r,o,l),X(t,e.state2,s,i,n,r,o,l);const c={id:"edge"+Y,start:e.state1.id,end:e.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:m,labelStyle:"",label:a.Y2.sanitizeText(e.description??"",(0,a.D7)()),arrowheadStyle:f,labelpos:"c",labelType:S,thickness:_,classes:x,look:o};n.push(c),Y++}}})},"setupDoc"),j=(0,c.K2)((t,e="TB")=>{let s=e;if(t.doc)for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir");function z(t,e,s){if(!e.id||""===e.id||""===e.id)return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(t=>{const i=s.get(t);i&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...i.styles])}));const i=t.find(t=>t.id===e.id);i?Object.assign(i,e):t.push(e)}function M(t){return t?.classes?.join(" ")??""}function U(t){return t?.styles??[]}(0,c.K2)(z,"insertOrUpdateNode"),(0,c.K2)(M,"getClassesFromDbInfo"),(0,c.K2)(U,"getStylesFromDbInfo");var X=(0,c.K2)((t,e,s,i,n,r,o,l)=>{const h=e.id,d=s.get(h),u=M(d),p=U(d),D=(0,a.D7)();if(c.Rm.info("dataFetcher parsedItem",e,d,p),"root"!==h){let s=k;!0===e.start?s="stateStart":!1===e.start&&(s="stateEnd"),e.type!==y&&(s=e.type),F.get(h)||F.set(h,{id:h,shape:s,description:a.Y2.sanitizeText(h,D),cssClasses:`${u} ${C}`,cssStyles:p});const d=F.get(h);e.description&&(Array.isArray(d.description)?(d.shape=b,d.description.push(e.description)):d.description?.length&&d.description.length>0?(d.shape=b,d.description===h?d.description=[e.description]:d.description=[d.description,e.description]):(d.shape=k,d.description=e.description),d.description=a.Y2.sanitizeTextOrArray(d.description,D)),1===d.description?.length&&d.shape===b&&("group"===d.type?d.shape=E:d.shape=k),!d.type&&e.doc&&(c.Rm.info("Setting cluster for XCX",h,j(e)),d.type="group",d.isGroup=!0,d.dir=j(e),d.shape=e.type===g?T:E,d.cssClasses=`${d.cssClasses} ${I} ${r?A:""}`);const x={labelStyle:"",shape:d.shape,label:d.description,cssClasses:d.cssClasses,cssCompiledStyles:[],cssStyles:d.cssStyles,id:h,dir:d.dir,domId:P(h,Y),type:d.type,isGroup:"group"===d.type,padding:8,rx:10,ry:10,look:o};if(x.shape===T&&(x.label=""),t&&"root"!==t.id&&(c.Rm.trace("Setting node ",h," to be child of its parent ",t.id),x.parentId=t.id),x.centerLabel=!0,e.note){const t={labelStyle:"",shape:"note",label:e.note.text,cssClasses:v,cssStyles:[],cssCompiledStyles:[],id:h+N+"-"+Y,domId:P(h,Y,w),type:d.type,isGroup:"group"===d.type,padding:D.flowchart?.padding,look:o,position:e.note.position},s=h+O,r={labelStyle:"",shape:"noteGroup",label:e.note.text,cssClasses:d.cssClasses,cssStyles:[],id:h+O,domId:P(h,Y,L),type:"group",isGroup:!0,padding:16,look:o,position:e.note.position};Y++,r.id=s,t.parentId=s,z(i,r,l),z(i,t,l),z(i,x,l);let a=h,c=t.id;"left of"===e.note.position&&(a=t.id,c=h),n.push({id:a+"-"+c,start:a,end:c,arrowhead:"none",arrowTypeEnd:"",style:m,labelStyle:"",classes:$,arrowheadStyle:f,labelpos:"c",labelType:S,thickness:_,look:o})}else z(i,x,l)}e.doc&&(c.Rm.trace("Adding nodes children "),G(e,e.doc,s,i,n,!r,o,l))},"dataFetcher"),W=(0,c.K2)(()=>{F.clear(),Y=0},"reset"),H="[*]",V="start",J="[*]",q="end",Z="color",Q="fill",tt="bgFill",et=",",st=(0,c.K2)(()=>new Map,"newClassesList"),it=(0,c.K2)(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),nt=(0,c.K2)(t=>JSON.parse(JSON.stringify(t)),"clone"),rt=class{constructor(t){this.version=t,this.nodes=[],this.edges=[],this.rootDoc=[],this.classes=st(),this.documents={root:it()},this.currentDocument=this.documents.root,this.startEndCount=0,this.dividerCnt=0,this.links=new Map,this.getAccTitle=a.iN,this.setAccTitle=a.SV,this.getAccDescription=a.m7,this.setAccDescription=a.EI,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{(0,c.K2)(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(const i of Array.isArray(t)?t:t.doc)switch(i.stmt){case d:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case p:this.addRelation(i.state1,i.state2,i.description);break;case"classDef":this.addStyleClass(i.id.trim(),i.classes);break;case"style":this.handleStyleDef(i);break;case"applyClass":this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip)}const e=this.getStates(),s=(0,a.D7)();W(),X(void 0,this.getRootDocV2(),e,this.nodes,this.edges,!0,s.look,this.classes);for(const i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(t){const e=t.id.trim().split(","),s=t.styleClass.split(",");for(const i of e){let t=this.getState(i);if(!t){const e=i.trim();this.addState(e),t=this.getState(e)}t&&(t.styles=s.map(t=>t.replace(/;/g,"")?.trim()))}}setRootDoc(t){c.Rm.info("Setting root doc",t),this.rootDoc=t,1===this.version?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,e,s){if(e.stmt===p)return this.docTranslator(t,e.state1,!0),void this.docTranslator(t,e.state2,!1);if(e.stmt===d&&(e.id===H?(e.id=t.id+(s?"_start":"_end"),e.start=s):e.id=e.id.trim()),e.stmt!==u&&e.stmt!==d||!e.doc)return;const i=[];let n=[];for(const r of e.doc)if(r.type===g){const t=nt(r);t.doc=nt(n),i.push(t),n=[]}else n.push(r);if(i.length>0&&n.length>0){const t={stmt:d,id:(0,o.$C)(),type:"divider",doc:nt(n)};i.push(nt(t)),e.doc=i}e.doc.forEach(t=>this.docTranslator(e,t,!0))}getRootDocV2(){return this.docTranslator({id:u,stmt:u},{id:u,stmt:u,doc:this.rootDoc},!0),{id:u,doc:this.rootDoc}}addState(t,e=y,s=void 0,i=void 0,n=void 0,r=void 0,o=void 0,l=void 0){const h=t?.trim();if(this.currentDocument.states.has(h)){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.doc||(t.doc=s),t.type||(t.type=e)}else c.Rm.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:d,id:h,descriptions:[],type:e,doc:s,note:n,classes:[],styles:[],textStyles:[]});if(i){c.Rm.info("Setting state description",h,i);(Array.isArray(i)?i:[i]).forEach(t=>this.addDescription(h,t.trim()))}if(n){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.note=n,t.note.text=a.Y2.sanitizeText(t.note.text,(0,a.D7)())}if(r){c.Rm.info("Setting state classes",h,r);(Array.isArray(r)?r:[r]).forEach(t=>this.setCssClass(h,t.trim()))}if(o){c.Rm.info("Setting state styles",h,o);(Array.isArray(o)?o:[o]).forEach(t=>this.setStyle(h,t.trim()))}if(l){c.Rm.info("Setting state styles",h,o);(Array.isArray(l)?l:[l]).forEach(t=>this.setTextStyle(h,t.trim()))}}clear(t){this.nodes=[],this.edges=[],this.documents={root:it()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=st(),t||(this.links=new Map,(0,a.IU)())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){c.Rm.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,e,s){this.links.set(t,{url:e,tooltip:s}),c.Rm.warn("Adding link",t,e,s)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===H?(this.startEndCount++,`${V}${this.startEndCount}`):t}startTypeIfNeeded(t="",e=y){return t===H?V:e}endIdIfNeeded(t=""){return t===J?(this.startEndCount++,`${q}${this.startEndCount}`):t}endTypeIfNeeded(t="",e=y){return t===J?q:e}addRelationObjs(t,e,s=""){const i=this.startIdIfNeeded(t.id.trim()),n=this.startTypeIfNeeded(t.id.trim(),t.type),r=this.startIdIfNeeded(e.id.trim()),o=this.startTypeIfNeeded(e.id.trim(),e.type);this.addState(i,n,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(r,o,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:a.Y2.sanitizeText(s,(0,a.D7)())})}addRelation(t,e,s){if("object"==typeof t&&"object"==typeof e)this.addRelationObjs(t,e,s);else if("string"==typeof t&&"string"==typeof e){const i=this.startIdIfNeeded(t.trim()),n=this.startTypeIfNeeded(t),r=this.endIdIfNeeded(e.trim()),o=this.endTypeIfNeeded(e);this.addState(i,n),this.addState(r,o),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:s?a.Y2.sanitizeText(s,(0,a.D7)()):void 0})}}addDescription(t,e){const s=this.currentDocument.states.get(t),i=e.startsWith(":")?e.replace(":","").trim():e;s?.descriptions?.push(a.Y2.sanitizeText(i,(0,a.D7)()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,e=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});const s=this.classes.get(t);e&&s&&e.split(et).forEach(t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(Z).exec(t)){const t=e.replace(Q,tt).replace(Z,Q);s.textStyles.push(t)}s.styles.push(e)})}getClasses(){return this.classes}setCssClass(t,e){t.split(",").forEach(t=>{let s=this.getState(t);if(!s){const e=t.trim();this.addState(e),s=this.getState(e)}s?.classes?.push(e)})}setStyle(t,e){this.getState(t)?.styles?.push(e)}setTextStyle(t,e){this.getState(t)?.textStyles?.push(e)}getDirectionStatement(){return this.rootDoc.find(t=>"dir"===t.stmt)}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){const e=this.getDirectionStatement();e?e.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){const t=(0,a.D7)();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:K(this.getRootDocV2())}}getConfig(){return(0,a.D7)().state}},ot=(0,c.K2)(t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n // line-height: 1;\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`,"getStyles")}}]); \ No newline at end of file diff --git a/developer/assets/js/4802.7fea7845.js b/developer/assets/js/4802.7fea7845.js new file mode 100644 index 0000000..9fd53e6 --- /dev/null +++ b/developer/assets/js/4802.7fea7845.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[4802],{4802:(e,r,t)=>{t.d(r,{diagram:()=>l});var s=t(4616),a=(t(9625),t(1152),t(45),t(5164),t(8698),t(5894),t(3245),t(2387),t(92),t(3226),t(7633),t(797)),l={parser:s.Zk,get db(){return new s.u4(2)},renderer:s.q7,styles:s.tM,init:(0,a.K2)(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/developer/assets/js/4981.04eee060.js b/developer/assets/js/4981.04eee060.js new file mode 100644 index 0000000..dce5843 --- /dev/null +++ b/developer/assets/js/4981.04eee060.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[4981],{2875:(t,e,a)=>{a.d(e,{CP:()=>h,HT:()=>p,PB:()=>d,aC:()=>c,lC:()=>l,m:()=>o,tk:()=>s});var n=a(7633),i=a(797),r=a(6750),s=(0,i.K2)((t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),e.rx&&a.attr("rx",e.rx),e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const n in e.attrs)a.attr(n,e.attrs[n]);return e.class&&a.attr("class",e.class),a},"drawRect"),l=(0,i.K2)((t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};s(t,a).lower()},"drawBackgroundRect"),o=(0,i.K2)((t,e)=>{const a=e.text.replace(n.H1," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),e.class&&i.attr("class",e.class);const r=i.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(a),i},"drawText"),c=(0,i.K2)((t,e,a,n)=>{const i=t.append("image");i.attr("x",e),i.attr("y",a);const s=(0,r.J)(n);i.attr("xlink:href",s)},"drawImage"),h=(0,i.K2)((t,e,a,n)=>{const i=t.append("use");i.attr("x",e),i.attr("y",a);const s=(0,r.J)(n);i.attr("xlink:href",`#${s}`)},"drawEmbeddedImage"),d=(0,i.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),p=(0,i.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},4981:(t,e,a)=>{a.d(e,{diagram:()=>Pt});var n=a(2875),i=a(3226),r=a(7633),s=a(797),l=a(451),o=a(6750),h=function(){var t=(0,s.K2)(function(t,e,a,n){for(a=a||{},n=t.length;n--;a[t[n]]=e);return a},"o"),e=[1,24],a=[1,25],n=[1,26],i=[1,27],r=[1,28],l=[1,63],o=[1,64],h=[1,65],d=[1,66],p=[1,67],u=[1,68],y=[1,69],g=[1,29],f=[1,30],b=[1,31],x=[1,32],_=[1,33],m=[1,34],E=[1,35],S=[1,36],A=[1,37],C=[1,38],w=[1,39],k=[1,40],O=[1,41],T=[1,42],v=[1,43],R=[1,44],D=[1,45],N=[1,46],P=[1,47],B=[1,48],I=[1,50],M=[1,51],j=[1,52],K=[1,53],L=[1,54],Y=[1,55],U=[1,56],F=[1,57],X=[1,58],z=[1,59],W=[1,60],Q=[14,42],$=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],H=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],q=[1,82],V=[1,83],G=[1,84],J=[1,85],Z=[12,14,42],tt=[12,14,33,42],et=[12,14,33,42,76,77,79,80],at=[12,33],nt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],it={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:(0,s.K2)(function(t,e,a,n,i,r,s){var l=r.length-1;switch(i){case 3:n.setDirection("TB");break;case 4:n.setDirection("BT");break;case 5:n.setDirection("RL");break;case 6:n.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:n.setC4Type(r[l-3]);break;case 19:n.setTitle(r[l].substring(6)),this.$=r[l].substring(6);break;case 20:n.setAccDescription(r[l].substring(15)),this.$=r[l].substring(15);break;case 21:this.$=r[l].trim(),n.setTitle(this.$);break;case 22:case 23:this.$=r[l].trim(),n.setAccDescription(this.$);break;case 28:r[l].splice(2,0,"ENTERPRISE"),n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 29:r[l].splice(2,0,"SYSTEM"),n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 30:n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 31:r[l].splice(2,0,"CONTAINER"),n.addContainerBoundary(...r[l]),this.$=r[l];break;case 32:n.addDeploymentNode("node",...r[l]),this.$=r[l];break;case 33:n.addDeploymentNode("nodeL",...r[l]),this.$=r[l];break;case 34:n.addDeploymentNode("nodeR",...r[l]),this.$=r[l];break;case 35:n.popBoundaryParseStack();break;case 39:n.addPersonOrSystem("person",...r[l]),this.$=r[l];break;case 40:n.addPersonOrSystem("external_person",...r[l]),this.$=r[l];break;case 41:n.addPersonOrSystem("system",...r[l]),this.$=r[l];break;case 42:n.addPersonOrSystem("system_db",...r[l]),this.$=r[l];break;case 43:n.addPersonOrSystem("system_queue",...r[l]),this.$=r[l];break;case 44:n.addPersonOrSystem("external_system",...r[l]),this.$=r[l];break;case 45:n.addPersonOrSystem("external_system_db",...r[l]),this.$=r[l];break;case 46:n.addPersonOrSystem("external_system_queue",...r[l]),this.$=r[l];break;case 47:n.addContainer("container",...r[l]),this.$=r[l];break;case 48:n.addContainer("container_db",...r[l]),this.$=r[l];break;case 49:n.addContainer("container_queue",...r[l]),this.$=r[l];break;case 50:n.addContainer("external_container",...r[l]),this.$=r[l];break;case 51:n.addContainer("external_container_db",...r[l]),this.$=r[l];break;case 52:n.addContainer("external_container_queue",...r[l]),this.$=r[l];break;case 53:n.addComponent("component",...r[l]),this.$=r[l];break;case 54:n.addComponent("component_db",...r[l]),this.$=r[l];break;case 55:n.addComponent("component_queue",...r[l]),this.$=r[l];break;case 56:n.addComponent("external_component",...r[l]),this.$=r[l];break;case 57:n.addComponent("external_component_db",...r[l]),this.$=r[l];break;case 58:n.addComponent("external_component_queue",...r[l]),this.$=r[l];break;case 60:n.addRel("rel",...r[l]),this.$=r[l];break;case 61:n.addRel("birel",...r[l]),this.$=r[l];break;case 62:n.addRel("rel_u",...r[l]),this.$=r[l];break;case 63:n.addRel("rel_d",...r[l]),this.$=r[l];break;case 64:n.addRel("rel_l",...r[l]),this.$=r[l];break;case 65:n.addRel("rel_r",...r[l]),this.$=r[l];break;case 66:n.addRel("rel_b",...r[l]),this.$=r[l];break;case 67:r[l].splice(0,1),n.addRel("rel",...r[l]),this.$=r[l];break;case 68:n.updateElStyle("update_el_style",...r[l]),this.$=r[l];break;case 69:n.updateRelStyle("update_rel_style",...r[l]),this.$=r[l];break;case 70:n.updateLayoutConfig("update_layout_config",...r[l]),this.$=r[l];break;case 71:this.$=[r[l]];break;case 72:r[l].unshift(r[l-1]),this.$=r[l];break;case 73:case 75:this.$=r[l].trim();break;case 74:let t={};t[r[l-1].trim()]=r[l].trim(),this.$=t;break;case 76:this.$=""}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:p,40:u,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:70,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:p,40:u,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:71,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:p,40:u,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:72,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:p,40:u,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:73,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:p,40:u,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{14:[1,74]},t(Q,[2,13],{43:23,29:49,30:61,32:62,20:75,34:l,36:o,37:h,38:d,39:p,40:u,41:y,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W}),t(Q,[2,14]),t($,[2,16],{12:[1,76]}),t(Q,[2,36],{12:[1,77]}),t(H,[2,19]),t(H,[2,20]),{25:[1,78]},{27:[1,79]},t(H,[2,23]),{35:80,75:81,76:q,77:V,79:G,80:J},{35:86,75:81,76:q,77:V,79:G,80:J},{35:87,75:81,76:q,77:V,79:G,80:J},{35:88,75:81,76:q,77:V,79:G,80:J},{35:89,75:81,76:q,77:V,79:G,80:J},{35:90,75:81,76:q,77:V,79:G,80:J},{35:91,75:81,76:q,77:V,79:G,80:J},{35:92,75:81,76:q,77:V,79:G,80:J},{35:93,75:81,76:q,77:V,79:G,80:J},{35:94,75:81,76:q,77:V,79:G,80:J},{35:95,75:81,76:q,77:V,79:G,80:J},{35:96,75:81,76:q,77:V,79:G,80:J},{35:97,75:81,76:q,77:V,79:G,80:J},{35:98,75:81,76:q,77:V,79:G,80:J},{35:99,75:81,76:q,77:V,79:G,80:J},{35:100,75:81,76:q,77:V,79:G,80:J},{35:101,75:81,76:q,77:V,79:G,80:J},{35:102,75:81,76:q,77:V,79:G,80:J},{35:103,75:81,76:q,77:V,79:G,80:J},{35:104,75:81,76:q,77:V,79:G,80:J},t(Z,[2,59]),{35:105,75:81,76:q,77:V,79:G,80:J},{35:106,75:81,76:q,77:V,79:G,80:J},{35:107,75:81,76:q,77:V,79:G,80:J},{35:108,75:81,76:q,77:V,79:G,80:J},{35:109,75:81,76:q,77:V,79:G,80:J},{35:110,75:81,76:q,77:V,79:G,80:J},{35:111,75:81,76:q,77:V,79:G,80:J},{35:112,75:81,76:q,77:V,79:G,80:J},{35:113,75:81,76:q,77:V,79:G,80:J},{35:114,75:81,76:q,77:V,79:G,80:J},{35:115,75:81,76:q,77:V,79:G,80:J},{20:116,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:p,40:u,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{12:[1,118],33:[1,117]},{35:119,75:81,76:q,77:V,79:G,80:J},{35:120,75:81,76:q,77:V,79:G,80:J},{35:121,75:81,76:q,77:V,79:G,80:J},{35:122,75:81,76:q,77:V,79:G,80:J},{35:123,75:81,76:q,77:V,79:G,80:J},{35:124,75:81,76:q,77:V,79:G,80:J},{35:125,75:81,76:q,77:V,79:G,80:J},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(Q,[2,15]),t($,[2,17],{21:22,19:130,22:e,23:a,24:n,26:i,28:r}),t(Q,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:a,24:n,26:i,28:r,34:l,36:o,37:h,38:d,39:p,40:u,41:y,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W}),t(H,[2,21]),t(H,[2,22]),t(Z,[2,39]),t(tt,[2,71],{75:81,35:132,76:q,77:V,79:G,80:J}),t(et,[2,73]),{78:[1,133]},t(et,[2,75]),t(et,[2,76]),t(Z,[2,40]),t(Z,[2,41]),t(Z,[2,42]),t(Z,[2,43]),t(Z,[2,44]),t(Z,[2,45]),t(Z,[2,46]),t(Z,[2,47]),t(Z,[2,48]),t(Z,[2,49]),t(Z,[2,50]),t(Z,[2,51]),t(Z,[2,52]),t(Z,[2,53]),t(Z,[2,54]),t(Z,[2,55]),t(Z,[2,56]),t(Z,[2,57]),t(Z,[2,58]),t(Z,[2,60]),t(Z,[2,61]),t(Z,[2,62]),t(Z,[2,63]),t(Z,[2,64]),t(Z,[2,65]),t(Z,[2,66]),t(Z,[2,67]),t(Z,[2,68]),t(Z,[2,69]),t(Z,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(at,[2,28]),t(at,[2,29]),t(at,[2,30]),t(at,[2,31]),t(at,[2,32]),t(at,[2,33]),t(at,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t($,[2,18]),t(Q,[2,38]),t(tt,[2,72]),t(et,[2,74]),t(Z,[2,24]),t(Z,[2,35]),t(nt,[2,25]),t(nt,[2,26],{12:[1,138]}),t(nt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:(0,s.K2)(function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var e=this,a=[0],n=[],i=[null],r=[],l=this.table,o="",c=0,h=0,d=0,p=r.slice.call(arguments,1),u=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);u.setInput(t,y.yy),y.yy.lexer=u,y.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var f=u.yylloc;r.push(f);var b=u.options&&u.options.ranges;function x(){var t;return"number"!=typeof(t=n.pop()||u.lex()||1)&&(t instanceof Array&&(t=(n=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){a.length=a.length-2*t,i.length=i.length-t,r.length=r.length-t},"popStack"),(0,s.K2)(x,"lex");for(var _,m,E,S,A,C,w,k,O,T={};;){if(E=a[a.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==_&&(_=x()),S=l[E]&&l[E][_]),void 0===S||!S.length||!S[0]){var v="";for(C in O=[],l[E])this.terminals_[C]&&C>2&&O.push("'"+this.terminals_[C]+"'");v=u.showPosition?"Parse error on line "+(c+1)+":\n"+u.showPosition()+"\nExpecting "+O.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(v,{text:u.match,token:this.terminals_[_]||_,line:u.yylineno,loc:f,expected:O})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(S[0]){case 1:a.push(_),i.push(u.yytext),r.push(u.yylloc),a.push(S[1]),_=null,m?(_=m,m=null):(h=u.yyleng,o=u.yytext,c=u.yylineno,f=u.yylloc,d>0&&d--);break;case 2:if(w=this.productions_[S[1]][1],T.$=i[i.length-w],T._$={first_line:r[r.length-(w||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(w||1)].first_column,last_column:r[r.length-1].last_column},b&&(T._$.range=[r[r.length-(w||1)].range[0],r[r.length-1].range[1]]),void 0!==(A=this.performAction.apply(T,[o,h,c,y.yy,S[1],i,r].concat(p))))return A;w&&(a=a.slice(0,-1*w*2),i=i.slice(0,-1*w),r=r.slice(0,-1*w)),a.push(this.productions_[S[1]][0]),i.push(T.$),r.push(T._$),k=l[a[a.length-2]][a[a.length-1]],a.push(k);break;case 3:return!0}}return!0},"parse")},rt=function(){return{EOF:1,parseError:(0,s.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,s.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===n.length?this.yylloc.first_column:0)+n[n.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,s.K2)(function(t,e){var a,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var r in i)this[r]=i[r];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,e,a,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),r=0;re[0].length)){if(e=a,n=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,i[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,s.K2)(function(t,e,a,n){switch(a){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 73:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 16:case 70:break;case 14:c;break;case 15:return 12;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:case 53:return this.begin("rel_u"),66;case 54:case 55:return this.begin("rel_d"),67;case 56:case 57:return this.begin("rel_l"),68;case 58:case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:case 79:this.popState(),this.popState();break;case 69:case 71:return 80;case 72:this.begin("string");break;case 74:case 80:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}}}();function st(){this.yy={}}return it.lexer=rt,(0,s.K2)(st,"Parser"),st.prototype=it,it.Parser=st,new st}();h.parser=h;var d,p=h,u=[],y=[""],g="global",f="",b=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],x=[],_="",m=!1,E=4,S=2,A=(0,s.K2)(function(){return d},"getC4Type"),C=(0,s.K2)(function(t){let e=(0,r.jZ)(t,(0,r.D7)());d=e},"setC4Type"),w=(0,s.K2)(function(t,e,a,n,i,r,s,l,o){if(null==t||null==e||null==a||null==n)return;let c={};const h=x.find(t=>t.from===e&&t.to===a);if(h?c=h:x.push(c),c.type=t,c.from=e,c.to=a,c.label={text:n},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.sprite=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];c[t]=e}else c.tags=l;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.link=o;c.wrap=H()},"addRel"),k=(0,s.K2)(function(t,e,a,n,i,r,s){if(null===e||null===a)return;let l={};const o=u.find(t=>t.alias===e);if(o&&e===o.alias?l=o:(l.alias=e,u.push(l)),l.label=null==a?{text:""}:{text:a},null==n)l.descr={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];l[t]={text:e}}else l.descr={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.sprite=i;if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=e}else l.tags=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=g,l.wrap=H()},"addPersonOrSystem"),O=(0,s.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=u.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,u.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.techn={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.techn={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.sprite=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=H(),o.typeC4Shape={text:t},o.parentBoundary=g},"addContainer"),T=(0,s.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=u.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,u.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.techn={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.techn={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.sprite=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=H(),o.typeC4Shape={text:t},o.parentBoundary=g},"addComponent"),v=(0,s.K2)(function(t,e,a,n,i){if(null===t||null===e)return;let r={};const s=b.find(e=>e.alias===t);if(s&&t===s.alias?r=s:(r.alias=t,b.push(r)),r.label=null==e?{text:""}:{text:e},null==a)r.type={text:"system"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];r[t]={text:e}}else r.type={text:a};if("object"==typeof n){let[t,e]=Object.entries(n)[0];r[t]=e}else r.tags=n;if("object"==typeof i){let[t,e]=Object.entries(i)[0];r[t]=e}else r.link=i;r.parentBoundary=g,r.wrap=H(),f=g,g=t,y.push(f)},"addPersonOrSystemBoundary"),R=(0,s.K2)(function(t,e,a,n,i){if(null===t||null===e)return;let r={};const s=b.find(e=>e.alias===t);if(s&&t===s.alias?r=s:(r.alias=t,b.push(r)),r.label=null==e?{text:""}:{text:e},null==a)r.type={text:"container"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];r[t]={text:e}}else r.type={text:a};if("object"==typeof n){let[t,e]=Object.entries(n)[0];r[t]=e}else r.tags=n;if("object"==typeof i){let[t,e]=Object.entries(i)[0];r[t]=e}else r.link=i;r.parentBoundary=g,r.wrap=H(),f=g,g=t,y.push(f)},"addContainerBoundary"),D=(0,s.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=b.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,b.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.type={text:"node"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.type={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.nodeType=t,o.parentBoundary=g,o.wrap=H(),f=g,g=e,y.push(f)},"addDeploymentNode"),N=(0,s.K2)(function(){g=f,y.pop(),f=y.pop(),y.push(f)},"popBoundaryParseStack"),P=(0,s.K2)(function(t,e,a,n,i,r,s,l,o,c,h){let d=u.find(t=>t.alias===e);if(void 0!==d||(d=b.find(t=>t.alias===e),void 0!==d)){if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];d[t]=e}else d.bgColor=a;if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];d[t]=e}else d.fontColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];d[t]=e}else d.borderColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];d[t]=e}else d.shadowing=r;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];d[t]=e}else d.shape=s;if(null!=l)if("object"==typeof l){let[t,e]=Object.entries(l)[0];d[t]=e}else d.sprite=l;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];d[t]=e}else d.techn=o;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];d[t]=e}else d.legendText=c;if(null!=h)if("object"==typeof h){let[t,e]=Object.entries(h)[0];d[t]=e}else d.legendSprite=h}},"updateElStyle"),B=(0,s.K2)(function(t,e,a,n,i,r,s){const l=x.find(t=>t.from===e&&t.to===a);if(void 0!==l){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];l[t]=e}else l.textColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.lineColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=parseInt(e)}else l.offsetX=parseInt(r);if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=parseInt(e)}else l.offsetY=parseInt(s)}},"updateRelStyle"),I=(0,s.K2)(function(t,e,a){let n=E,i=S;if("object"==typeof e){const t=Object.values(e)[0];n=parseInt(t)}else n=parseInt(e);if("object"==typeof a){const t=Object.values(a)[0];i=parseInt(t)}else i=parseInt(a);n>=1&&(E=n),i>=1&&(S=i)},"updateLayoutConfig"),M=(0,s.K2)(function(){return E},"getC4ShapeInRow"),j=(0,s.K2)(function(){return S},"getC4BoundaryInRow"),K=(0,s.K2)(function(){return g},"getCurrentBoundaryParse"),L=(0,s.K2)(function(){return f},"getParentBoundaryParse"),Y=(0,s.K2)(function(t){return null==t?u:u.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),U=(0,s.K2)(function(t){return u.find(e=>e.alias===t)},"getC4Shape"),F=(0,s.K2)(function(t){return Object.keys(Y(t))},"getC4ShapeKeys"),X=(0,s.K2)(function(t){return null==t?b:b.filter(e=>e.parentBoundary===t)},"getBoundaries"),z=X,W=(0,s.K2)(function(){return x},"getRels"),Q=(0,s.K2)(function(){return _},"getTitle"),$=(0,s.K2)(function(t){m=t},"setWrap"),H=(0,s.K2)(function(){return m},"autoWrap"),q=(0,s.K2)(function(){u=[],b=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],f="",g="global",y=[""],x=[],y=[""],_="",m=!1,E=4,S=2},"clear"),V=(0,s.K2)(function(t){let e=(0,r.jZ)(t,(0,r.D7)());_=e},"setTitle"),G={addPersonOrSystem:k,addPersonOrSystemBoundary:v,addContainer:O,addContainerBoundary:R,addComponent:T,addDeploymentNode:D,popBoundaryParseStack:N,addRel:w,updateElStyle:P,updateRelStyle:B,updateLayoutConfig:I,autoWrap:H,setWrap:$,getC4ShapeArray:Y,getC4Shape:U,getC4ShapeKeys:F,getBoundaries:X,getBoundarys:z,getCurrentBoundaryParse:K,getParentBoundaryParse:L,getRels:W,getTitle:Q,getC4Type:A,getC4ShapeInRow:M,getC4BoundaryInRow:j,setAccTitle:r.SV,getAccTitle:r.iN,getAccDescription:r.m7,setAccDescription:r.EI,getConfig:(0,s.K2)(()=>(0,r.D7)().c4,"getConfig"),clear:q,LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:V,setC4Type:C},J=(0,s.K2)(function(t,e){return(0,n.tk)(t,e)},"drawRect"),Z=(0,s.K2)(function(t,e,a,n,i,r){const s=t.append("image");s.attr("width",e),s.attr("height",a),s.attr("x",n),s.attr("y",i);let l=r.startsWith("data:image/png;base64")?r:(0,o.J)(r);s.attr("xlink:href",l)},"drawImage"),tt=(0,s.K2)((t,e,a)=>{const n=t.append("g");let i=0;for(let r of e){let t=r.textColor?r.textColor:"#444444",e=r.lineColor?r.lineColor:"#444444",s=r.offsetX?parseInt(r.offsetX):0,l=r.offsetY?parseInt(r.offsetY):0,o="";if(0===i){let t=n.append("line");t.attr("x1",r.startPoint.x),t.attr("y1",r.startPoint.y),t.attr("x2",r.endPoint.x),t.attr("y2",r.endPoint.y),t.attr("stroke-width","1"),t.attr("stroke",e),t.style("fill","none"),"rel_b"!==r.type&&t.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+o+"#arrowend)"),i=-1}else{let t=n.append("path");t.attr("fill","none").attr("stroke-width","1").attr("stroke",e).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",r.startPoint.x).replaceAll("starty",r.startPoint.y).replaceAll("controlx",r.startPoint.x+(r.endPoint.x-r.startPoint.x)/2-(r.endPoint.x-r.startPoint.x)/4).replaceAll("controly",r.startPoint.y+(r.endPoint.y-r.startPoint.y)/2).replaceAll("stopx",r.endPoint.x).replaceAll("stopy",r.endPoint.y)),"rel_b"!==r.type&&t.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+o+"#arrowend)")}let c=a.messageFont();pt(a)(r.label.text,n,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+s,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+l,r.label.width,r.label.height,{fill:t},c),r.techn&&""!==r.techn.text&&(c=a.messageFont(),pt(a)("["+r.techn.text+"]",n,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+s,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+a.messageFontSize+5+l,Math.max(r.label.width,r.techn.width),r.techn.height,{fill:t,"font-style":"italic"},c))}},"drawRels"),et=(0,s.K2)(function(t,e,a){const n=t.append("g");let i=e.bgColor?e.bgColor:"none",r=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let o={x:e.x,y:e.y,fill:i,stroke:r,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};J(n,o);let c=a.boundaryFont();c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=s,pt(a)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},c),e.type&&""!==e.type.text&&(c=a.boundaryFont(),c.fontColor=s,pt(a)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},c)),e.descr&&""!==e.descr.text&&(c=a.boundaryFont(),c.fontSize=c.fontSize-2,c.fontColor=s,pt(a)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},c))},"drawBoundary"),at=(0,s.K2)(function(t,e,a){let i=e.bgColor?e.bgColor:a[e.typeC4Shape.text+"_bg_color"],r=e.borderColor?e.borderColor:a[e.typeC4Shape.text+"_border_color"],s=e.fontColor?e.fontColor:"#FFFFFF",l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="}const o=t.append("g");o.attr("class","person-man");const c=(0,n.PB)();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":c.x=e.x,c.y=e.y,c.fill=i,c.width=e.width,c.height=e.height,c.stroke=r,c.rx=2.5,c.ry=2.5,c.attrs={"stroke-width":.5},J(o,c);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2))}let h=dt(a,e.typeC4Shape.text);switch(o.append("text").attr("fill",s).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":Z(o,48,48,e.x+e.width/2-24,e.y+e.image.Y,l)}let d=a[e.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=s,pt(a)(e.label.text,o,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},d),d=a[e.typeC4Shape.text+"Font"](),d.fontColor=s,e.techn&&""!==e.techn?.text?pt(a)(e.techn.text,o,e.x,e.y+e.techn.Y,e.width,e.height,{fill:s,"font-style":"italic"},d):e.type&&""!==e.type.text&&pt(a)(e.type.text,o,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,"font-style":"italic"},d),e.descr&&""!==e.descr.text&&(d=a.personFont(),d.fontColor=s,pt(a)(e.descr.text,o,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},d)),e.height},"drawC4Shape"),nt=(0,s.K2)(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),it=(0,s.K2)(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),rt=(0,s.K2)(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),st=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),lt=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),ot=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),ct=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),ht=(0,s.K2)(function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),dt=(0,s.K2)((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),pt=function(){function t(t,e,a,i,r,s,l){n(e.append("text").attr("x",a+r/2).attr("y",i+s/2+5).style("text-anchor","middle").text(t),l)}function e(t,e,a,i,s,l,o,c){const{fontSize:h,fontFamily:d,fontWeight:p}=c,u=t.split(r.Y2.lineBreakRegex);for(let r=0;r=this.data.widthLimit||a>=this.data.widthLimit||this.nextData.cnt>ft)&&(e=this.nextData.startx+t.margin+xt.nextLinePaddingX,n=this.nextData.stopy+2*t.margin,this.nextData.stopx=a=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=n+t.height,this.nextData.cnt=1),t.x=e,t.y=n,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",n,Math.min),this.updateVal(this.data,"stopx",a,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",n,Math.min),this.updateVal(this.nextData,"stopx",a,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},mt(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},mt=(0,s.K2)(function(t){(0,r.hH)(xt,t),t.fontFamily&&(xt.personFontFamily=xt.systemFontFamily=xt.messageFontFamily=t.fontFamily),t.fontSize&&(xt.personFontSize=xt.systemFontSize=xt.messageFontSize=t.fontSize),t.fontWeight&&(xt.personFontWeight=xt.systemFontWeight=xt.messageFontWeight=t.fontWeight)},"setConf"),Et=(0,s.K2)((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),St=(0,s.K2)(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),At=(0,s.K2)(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");function Ct(t,e,a,n,s){if(!e[t].width)if(a)e[t].text=(0,i.bH)(e[t].text,s,n),e[t].textLines=e[t].text.split(r.Y2.lineBreakRegex).length,e[t].width=s,e[t].height=(0,i.ru)(e[t].text,n);else{let a=e[t].text.split(r.Y2.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(const r of a)e[t].width=Math.max((0,i.Un)(r,n),e[t].width),s=(0,i.ru)(r,n),e[t].height=e[t].height+s}}(0,s.K2)(Ct,"calcC4ShapeTextWH");var wt=(0,s.K2)(function(t,e,a){e.x=a.data.startx,e.y=a.data.starty,e.width=a.data.stopx-a.data.startx,e.height=a.data.stopy-a.data.starty,e.label.y=xt.c4ShapeMargin-35;let n=e.wrap&&xt.wrap,r=St(xt);r.fontSize=r.fontSize+2,r.fontWeight="bold",Ct("label",e,n,r,(0,i.Un)(e.label.text,r)),ut.drawBoundary(t,e,xt)},"drawBoundary"),kt=(0,s.K2)(function(t,e,a,n){let r=0;for(const s of n){r=0;const n=a[s];let l=Et(xt,n.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,n.typeC4Shape.width=(0,i.Un)("\xab"+n.typeC4Shape.text+"\xbb",l),n.typeC4Shape.height=l.fontSize+2,n.typeC4Shape.Y=xt.c4ShapePadding,r=n.typeC4Shape.Y+n.typeC4Shape.height-4,n.image={width:0,height:0,Y:0},n.typeC4Shape.text){case"person":case"external_person":n.image.width=48,n.image.height=48,n.image.Y=r,r=n.image.Y+n.image.height}n.sprite&&(n.image.width=48,n.image.height=48,n.image.Y=r,r=n.image.Y+n.image.height);let o=n.wrap&&xt.wrap,c=xt.width-2*xt.c4ShapePadding,h=Et(xt,n.typeC4Shape.text);if(h.fontSize=h.fontSize+2,h.fontWeight="bold",Ct("label",n,o,h,c),n.label.Y=r+8,r=n.label.Y+n.label.height,n.type&&""!==n.type.text){n.type.text="["+n.type.text+"]",Ct("type",n,o,Et(xt,n.typeC4Shape.text),c),n.type.Y=r+5,r=n.type.Y+n.type.height}else if(n.techn&&""!==n.techn.text){n.techn.text="["+n.techn.text+"]",Ct("techn",n,o,Et(xt,n.techn.text),c),n.techn.Y=r+5,r=n.techn.Y+n.techn.height}let d=r,p=n.label.width;if(n.descr&&""!==n.descr.text){Ct("descr",n,o,Et(xt,n.typeC4Shape.text),c),n.descr.Y=r+20,r=n.descr.Y+n.descr.height,p=Math.max(n.label.width,n.descr.width),d=r-5*n.descr.textLines}p+=xt.c4ShapePadding,n.width=Math.max(n.width||xt.width,p,xt.width),n.height=Math.max(n.height||xt.height,d,xt.height),n.margin=n.margin||xt.c4ShapeMargin,t.insert(n),ut.drawC4Shape(e,n,xt)}t.bumpLastMargin(xt.c4ShapeMargin)},"drawC4ShapeArray"),Ot=class{static{(0,s.K2)(this,"Point")}constructor(t,e){this.x=t,this.y=e}},Tt=(0,s.K2)(function(t,e){let a=t.x,n=t.y,i=e.x,r=e.y,s=a+t.width/2,l=n+t.height/2,o=Math.abs(a-i),c=Math.abs(n-r),h=c/o,d=t.height/t.width,p=null;return n==r&&ai?p=new Ot(a,l):a==i&&nr&&(p=new Ot(s,n)),a>i&&n=h?new Ot(a,l+h*t.width/2):new Ot(s-o/c*t.height/2,n+t.height):a=h?new Ot(a+t.width,l+h*t.width/2):new Ot(s+o/c*t.height/2,n+t.height):ar?p=d>=h?new Ot(a+t.width,l-h*t.width/2):new Ot(s+t.height/2*o/c,n):a>i&&n>r&&(p=d>=h?new Ot(a,l-t.width/2*h):new Ot(s-t.height/2*o/c,n)),p},"getIntersectPoint"),vt=(0,s.K2)(function(t,e){let a={x:0,y:0};a.x=e.x+e.width/2,a.y=e.y+e.height/2;let n=Tt(t,a);return a.x=t.x+t.width/2,a.y=t.y+t.height/2,{startPoint:n,endPoint:Tt(e,a)}},"getIntersectPoints"),Rt=(0,s.K2)(function(t,e,a,n){let r=0;for(let s of e){r+=1;let t=s.wrap&&xt.wrap,e=At(xt);"C4Dynamic"===n.db.getC4Type()&&(s.label.text=r+": "+s.label.text);let l=(0,i.Un)(s.label.text,e);Ct("label",s,t,e,l),s.techn&&""!==s.techn.text&&(l=(0,i.Un)(s.techn.text,e),Ct("techn",s,t,e,l)),s.descr&&""!==s.descr.text&&(l=(0,i.Un)(s.descr.text,e),Ct("descr",s,t,e,l));let o=a(s.from),c=a(s.to),h=vt(o,c);s.startPoint=h.startPoint,s.endPoint=h.endPoint}ut.drawRels(t,e,xt)},"drawRels");function Dt(t,e,a,n,i){let r=new _t(i);r.data.widthLimit=a.data.widthLimit/Math.min(bt,n.length);for(let[s,l]of n.entries()){let n=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=n,n=l.image.Y+l.image.height);let o=l.wrap&&xt.wrap,c=St(xt);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",Ct("label",l,o,c,r.data.widthLimit),l.label.Y=n+8,n=l.label.Y+l.label.height,l.type&&""!==l.type.text){l.type.text="["+l.type.text+"]",Ct("type",l,o,St(xt),r.data.widthLimit),l.type.Y=n+5,n=l.type.Y+l.type.height}if(l.descr&&""!==l.descr.text){let t=St(xt);t.fontSize=t.fontSize-2,Ct("descr",l,o,t,r.data.widthLimit),l.descr.Y=n+20,n=l.descr.Y+l.descr.height}if(0==s||s%bt===0){let t=a.data.startx+xt.diagramMarginX,e=a.data.stopy+xt.diagramMarginY+n;r.setData(t,t,e,e)}else{let t=r.data.stopx!==r.data.startx?r.data.stopx+xt.diagramMarginX:r.data.startx,e=r.data.starty;r.setData(t,t,e,e)}r.name=l.alias;let h=i.db.getC4ShapeArray(l.alias),d=i.db.getC4ShapeKeys(l.alias);d.length>0&&kt(r,t,h,d),e=l.alias;let p=i.db.getBoundaries(e);p.length>0&&Dt(t,e,r,p,i),"global"!==l.alias&&wt(t,l,r),a.data.stopy=Math.max(r.data.stopy+xt.c4ShapeMargin,a.data.stopy),a.data.stopx=Math.max(r.data.stopx+xt.c4ShapeMargin,a.data.stopx),yt=Math.max(yt,a.data.stopx),gt=Math.max(gt,a.data.stopy)}}(0,s.K2)(Dt,"drawInsideBoundary");var Nt={drawPersonOrSystemArray:kt,drawBoundary:wt,setConf:mt,draw:(0,s.K2)(function(t,e,a,n){xt=(0,r.D7)().c4;const i=(0,r.D7)().securityLevel;let o;"sandbox"===i&&(o=(0,l.Ltv)("#i"+e));const c="sandbox"===i?(0,l.Ltv)(o.nodes()[0].contentDocument.body):(0,l.Ltv)("body");let h=n.db;n.db.setWrap(xt.wrap),ft=h.getC4ShapeInRow(),bt=h.getC4BoundaryInRow(),s.Rm.debug(`C:${JSON.stringify(xt,null,2)}`);const d="sandbox"===i?c.select(`[id="${e}"]`):(0,l.Ltv)(`[id="${e}"]`);ut.insertComputerIcon(d),ut.insertDatabaseIcon(d),ut.insertClockIcon(d);let p=new _t(n);p.setData(xt.diagramMarginX,xt.diagramMarginX,xt.diagramMarginY,xt.diagramMarginY),p.data.widthLimit=screen.availWidth,yt=xt.diagramMarginX,gt=xt.diagramMarginY;const u=n.db.getTitle();Dt(d,"",p,n.db.getBoundaries(""),n),ut.insertArrowHead(d),ut.insertArrowEnd(d),ut.insertArrowCrossHead(d),ut.insertArrowFilledHead(d),Rt(d,n.db.getRels(),n.db.getC4Shape,n),p.data.stopx=yt,p.data.stopy=gt;const y=p.data;let g=y.stopy-y.starty+2*xt.diagramMarginY;const f=y.stopx-y.startx+2*xt.diagramMarginX;u&&d.append("text").text(u).attr("x",(y.stopx-y.startx)/2-4*xt.diagramMarginX).attr("y",y.starty+xt.diagramMarginY),(0,r.a$)(d,g,f,xt.useMaxWidth);const b=u?60:0;d.attr("viewBox",y.startx-xt.diagramMarginX+" -"+(xt.diagramMarginY+b)+" "+f+" "+(g+b)),s.Rm.debug("models:",y)},"draw")},Pt={parser:p,db:G,renderer:Nt,styles:(0,s.K2)(t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,"getStyles"),init:(0,s.K2)(({c4:t,wrap:e})=>{Nt.setConf(t),G.setWrap(e)},"init")}}}]); \ No newline at end of file diff --git a/developer/assets/js/4d54d076.b15b6e7d.js b/developer/assets/js/4d54d076.b15b6e7d.js new file mode 100644 index 0000000..f4778fe --- /dev/null +++ b/developer/assets/js/4d54d076.b15b6e7d.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[1459],{2199:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"contributing","title":"Contributing Guide","description":"Welcome! This guide helps you contribute to the Tibber Prices integration.","source":"@site/docs/contributing.md","sourceDirName":".","slug":"/contributing","permalink":"/hass.tibber_prices/developer/contributing","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/contributing.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Performance Optimization","permalink":"/hass.tibber_prices/developer/performance"},"next":{"title":"Release Notes Generation","permalink":"/hass.tibber_prices/developer/release-management"}}');var r=s(4848),l=s(8453);const t={},c="Contributing Guide",d={},o=[{value:"Getting Started",id:"getting-started",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Fork and Clone",id:"fork-and-clone",level:3},{value:"Development Workflow",id:"development-workflow",level:2},{value:"1. Create a Branch",id:"1-create-a-branch",level:3},{value:"2. Make Changes",id:"2-make-changes",level:3},{value:"3. Test Locally",id:"3-test-locally",level:3},{value:"4. Write Tests",id:"4-write-tests",level:3},{value:"5. Commit Changes",id:"5-commit-changes",level:3},{value:"6. Push and Create PR",id:"6-push-and-create-pr",level:3},{value:"Pull Request Guidelines",id:"pull-request-guidelines",level:2},{value:"PR Template",id:"pr-template",level:3},{value:"PR Checklist",id:"pr-checklist",level:3},{value:"Review Process",id:"review-process",level:3},{value:"Code Review Tips",id:"code-review-tips",level:2},{value:"What Reviewers Look For",id:"what-reviewers-look-for",level:3},{value:"Responding to Feedback",id:"responding-to-feedback",level:3},{value:"Finding Issues to Work On",id:"finding-issues-to-work-on",level:2},{value:"Communication",id:"communication",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",input:"input",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"contributing-guide",children:"Contributing Guide"})}),"\n",(0,r.jsx)(n.p,{children:"Welcome! This guide helps you contribute to the Tibber Prices integration."}),"\n",(0,r.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,r.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Git"}),"\n",(0,r.jsx)(n.li,{children:"VS Code with Remote Containers extension"}),"\n",(0,r.jsx)(n.li,{children:"Docker Desktop"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"fork-and-clone",children:"Fork and Clone"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Fork the repository on GitHub"}),"\n",(0,r.jsxs)(n.li,{children:["Clone your fork:","\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/YOUR_USERNAME/hass.tibber_prices.git\ncd hass.tibber_prices\n"})}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"Open in VS Code"}),"\n",(0,r.jsx)(n.li,{children:'Click "Reopen in Container" when prompted'}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The DevContainer will set up everything automatically."}),"\n",(0,r.jsx)(n.h2,{id:"development-workflow",children:"Development Workflow"}),"\n",(0,r.jsx)(n.h3,{id:"1-create-a-branch",children:"1. Create a Branch"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git checkout -b feature/your-feature-name\n# or\ngit checkout -b fix/issue-123-description\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Branch naming:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feature/"})," - New features"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fix/"})," - Bug fixes"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"docs/"})," - Documentation only"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"refactor/"})," - Code restructuring"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"test/"})," - Test improvements"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"2-make-changes",children:"2. Make Changes"}),"\n",(0,r.jsxs)(n.p,{children:["Edit code, following ",(0,r.jsx)(n.a,{href:"/hass.tibber_prices/developer/coding-guidelines",children:"Coding Guidelines"}),"."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Run checks frequently:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"./scripts/type-check # Pyright type checking\n./scripts/lint # Ruff linting (auto-fix)\n./scripts/test # Run tests\n"})}),"\n",(0,r.jsx)(n.h3,{id:"3-test-locally",children:"3. Test Locally"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"./scripts/develop # Start HA with integration loaded\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Access at ",(0,r.jsx)(n.a,{href:"http://localhost:8123",children:"http://localhost:8123"})]}),"\n",(0,r.jsx)(n.h3,{id:"4-write-tests",children:"4. Write Tests"}),"\n",(0,r.jsxs)(n.p,{children:["Add tests in ",(0,r.jsx)(n.code,{children:"/tests/"})," for new features:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'@pytest.mark.unit\nasync def test_your_feature(hass, coordinator):\n """Test your new feature."""\n # Arrange\n coordinator.data = {...}\n\n # Act\n result = your_function(coordinator.data)\n\n # Assert\n assert result == expected_value\n'})}),"\n",(0,r.jsx)(n.p,{children:"Run your test:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"./scripts/test tests/test_your_feature.py -v\n"})}),"\n",(0,r.jsx)(n.h3,{id:"5-commit-changes",children:"5. Commit Changes"}),"\n",(0,r.jsxs)(n.p,{children:["Follow ",(0,r.jsx)(n.a,{href:"https://www.conventionalcommits.org/",children:"Conventional Commits"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'git add .\ngit commit -m "feat(sensors): add volatility trend sensor\n\nAdd new sensor showing 3-hour volatility trend direction.\nIncludes attributes with historical volatility data.\n\nImpact: Users can predict when prices will stabilize or continue fluctuating."\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Commit types:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feat:"})," - New feature"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fix:"})," - Bug fix"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"docs:"})," - Documentation"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"refactor:"})," - Code restructuring"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"test:"})," - Test changes"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"chore:"})," - Maintenance"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Add scope when relevant:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"feat(sensors):"})," - Sensor platform"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"fix(coordinator):"})," - Data coordinator"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"docs(user):"})," - User documentation"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"6-push-and-create-pr",children:"6. Push and Create PR"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"git push origin your-branch-name\n"})}),"\n",(0,r.jsx)(n.p,{children:"Then open Pull Request on GitHub."}),"\n",(0,r.jsx)(n.h2,{id:"pull-request-guidelines",children:"Pull Request Guidelines"}),"\n",(0,r.jsx)(n.h3,{id:"pr-template",children:"PR Template"}),"\n",(0,r.jsx)(n.p,{children:"Title: Short, descriptive (50 chars max)"}),"\n",(0,r.jsx)(n.p,{children:"Description should include:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-markdown",children:"## What\nBrief description of changes\n\n## Why\nProblem being solved or feature rationale\n\n## How\nImplementation approach\n\n## Testing\n- [ ] Manual testing in Home Assistant\n- [ ] Unit tests added/updated\n- [ ] Type checking passes\n- [ ] Linting passes\n\n## Breaking Changes\n(If any - describe migration path)\n\n## Related Issues\nCloses #123\n"})}),"\n",(0,r.jsx)(n.h3,{id:"pr-checklist",children:"PR Checklist"}),"\n",(0,r.jsx)(n.p,{children:"Before submitting:"}),"\n",(0,r.jsxs)(n.ul,{className:"contains-task-list",children:["\n",(0,r.jsxs)(n.li,{className:"task-list-item",children:[(0,r.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Code follows ",(0,r.jsx)(n.a,{href:"/hass.tibber_prices/developer/coding-guidelines",children:"Coding Guidelines"})]}),"\n",(0,r.jsxs)(n.li,{className:"task-list-item",children:[(0,r.jsx)(n.input,{type:"checkbox",disabled:!0})," ","All tests pass (",(0,r.jsx)(n.code,{children:"./scripts/test"}),")"]}),"\n",(0,r.jsxs)(n.li,{className:"task-list-item",children:[(0,r.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Type checking passes (",(0,r.jsx)(n.code,{children:"./scripts/type-check"}),")"]}),"\n",(0,r.jsxs)(n.li,{className:"task-list-item",children:[(0,r.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Linting passes (",(0,r.jsx)(n.code,{children:"./scripts/lint-check"}),")"]}),"\n",(0,r.jsxs)(n.li,{className:"task-list-item",children:[(0,r.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Documentation updated (if needed)"]}),"\n",(0,r.jsxs)(n.li,{className:"task-list-item",children:[(0,r.jsx)(n.input,{type:"checkbox",disabled:!0})," ","AGENTS.md updated (if patterns changed)"]}),"\n",(0,r.jsxs)(n.li,{className:"task-list-item",children:[(0,r.jsx)(n.input,{type:"checkbox",disabled:!0})," ","Commit messages follow Conventional Commits"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"review-process",children:"Review Process"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Automated checks"})," run (CI/CD)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Maintainer review"})," (usually within 3 days)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Address feedback"})," if requested"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Approval"})," \u2192 Maintainer merges"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"code-review-tips",children:"Code Review Tips"}),"\n",(0,r.jsx)(n.h3,{id:"what-reviewers-look-for",children:"What Reviewers Look For"}),"\n",(0,r.jsxs)(n.p,{children:["\u2705 ",(0,r.jsx)(n.strong,{children:"Good:"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Clear, self-explanatory code"}),"\n",(0,r.jsx)(n.li,{children:"Appropriate comments for complex logic"}),"\n",(0,r.jsx)(n.li,{children:"Tests covering edge cases"}),"\n",(0,r.jsx)(n.li,{children:"Type hints on all functions"}),"\n",(0,r.jsx)(n.li,{children:"Follows existing patterns"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["\u274c ",(0,r.jsx)(n.strong,{children:"Avoid:"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Large PRs (>500 lines) - split into smaller ones"}),"\n",(0,r.jsx)(n.li,{children:"Mixing unrelated changes"}),"\n",(0,r.jsx)(n.li,{children:"Missing tests for new features"}),"\n",(0,r.jsx)(n.li,{children:"Breaking changes without migration path"}),"\n",(0,r.jsx)(n.li,{children:"Copy-pasted code (refactor into shared functions)"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"responding-to-feedback",children:"Responding to Feedback"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Don't take it personally - we're improving code together"}),"\n",(0,r.jsx)(n.li,{children:"Ask questions if feedback unclear"}),"\n",(0,r.jsx)(n.li,{children:"Push additional commits to address comments"}),"\n",(0,r.jsx)(n.li,{children:"Mark conversations as resolved when fixed"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"finding-issues-to-work-on",children:"Finding Issues to Work On"}),"\n",(0,r.jsx)(n.p,{children:"Good first issues are labeled:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"good first issue"})," - Beginner-friendly"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"help wanted"})," - Maintainers welcome contributions"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"documentation"})," - Docs improvements"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Comment on issue before starting work to avoid duplicates."}),"\n",(0,r.jsx)(n.h2,{id:"communication",children:"Communication"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"GitHub Issues"})," - Bug reports, feature requests"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pull Requests"})," - Code discussion"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Discussions"})," - General questions, ideas"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Be respectful, constructive, and patient. We're all volunteers! \ud83d\ude4f"}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsxs)(n.p,{children:["\ud83d\udca1 ",(0,r.jsx)(n.strong,{children:"Related:"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/hass.tibber_prices/developer/setup",children:"Setup Guide"})," - DevContainer setup"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/hass.tibber_prices/developer/coding-guidelines",children:"Coding Guidelines"})," - Style guide"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/hass.tibber_prices/developer/testing",children:"Testing"})," - Writing tests"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/hass.tibber_prices/developer/release-management",children:"Release Management"})," - How releases work"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/5281b7a2.6312009d.js b/developer/assets/js/5281b7a2.6312009d.js new file mode 100644 index 0000000..dfa0ea9 --- /dev/null +++ b/developer/assets/js/5281b7a2.6312009d.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2443],{936:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>c,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"architecture","title":"Architecture","description":"This document provides a visual overview of the integration\'s architecture, focusing on end-to-end data flow and caching layers.","source":"@site/docs/architecture.md","sourceDirName":".","slug":"/architecture","permalink":"/hass.tibber_prices/developer/architecture","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/architecture.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Developer Documentation","permalink":"/hass.tibber_prices/developer/intro"},"next":{"title":"Timer Architecture","permalink":"/hass.tibber_prices/developer/timer-architecture"}}');var s=r(4848),t=r(8453);const c={comments:!1},l="Architecture",d={},a=[{value:"End-to-End Data Flow",id:"end-to-end-data-flow",level:2},{value:"Flow Description",id:"flow-description",level:3},{value:"Caching Architecture",id:"caching-architecture",level:2},{value:"Overview",id:"overview",level:3},{value:"Cache Coordination",id:"cache-coordination",level:3},{value:"Component Responsibilities",id:"component-responsibilities",level:2},{value:"Core Components",id:"core-components",level:3},{value:"Sensor Architecture (Calculator Pattern)",id:"sensor-architecture-calculator-pattern",level:3},{value:"Helper Utilities",id:"helper-utilities",level:3},{value:"Key Patterns",id:"key-patterns",level:2},{value:"1. Dual Translation System",id:"1-dual-translation-system",level:3},{value:"2. Price Data Enrichment",id:"2-price-data-enrichment",level:3},{value:"3. Quarter-Hour Precision",id:"3-quarter-hour-precision",level:3},{value:"4. Calculator Pattern (Sensor Platform)",id:"4-calculator-pattern-sensor-platform",level:3},{value:"Performance Characteristics",id:"performance-characteristics",level:2},{value:"API Call Reduction",id:"api-call-reduction",level:3},{value:"CPU Optimization",id:"cpu-optimization",level:3},{value:"Memory Usage",id:"memory-usage",level:3},{value:"Related Documentation",id:"related-documentation",level:2}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",mermaid:"mermaid",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"architecture",children:"Architecture"})}),"\n",(0,s.jsx)(n.p,{children:"This document provides a visual overview of the integration's architecture, focusing on end-to-end data flow and caching layers."}),"\n",(0,s.jsxs)(n.p,{children:["For detailed implementation patterns, see ",(0,s.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:(0,s.jsx)(n.code,{children:"AGENTS.md"})}),"."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"end-to-end-data-flow",children:"End-to-End Data Flow"}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart TB\n %% External Systems\n TIBBER[("\ud83c\udf10 Tibber GraphQL API
    api.tibber.com")]\n HA[("\ud83c\udfe0 Home Assistant
    Core")]\n\n %% Entry Point\n SETUP["__init__.py
    async_setup_entry()"]\n\n %% Core Components\n API["api.py
    TibberPricesApiClient

    GraphQL queries"]\n COORD["coordinator.py
    TibberPricesDataUpdateCoordinator

    Orchestrates updates every 15min"]\n\n %% Caching Layers\n CACHE_API["\ud83d\udcbe API Cache
    coordinator/cache.py

    HA Storage (persistent)
    User: 24h | Prices: until midnight"]\n CACHE_TRANS["\ud83d\udcbe Transformation Cache
    coordinator/data_transformation.py

    Memory (enriched prices)
    Until config change or midnight"]\n CACHE_PERIOD["\ud83d\udcbe Period Cache
    coordinator/periods.py

    Memory (calculated periods)
    Hash-based invalidation"]\n CACHE_CONFIG["\ud83d\udcbe Config Cache
    coordinator/*

    Memory (parsed options)
    Until config change"]\n CACHE_TRANS_TEXT["\ud83d\udcbe Translation Cache
    const.py

    Memory (UI strings)
    Until HA restart"]\n\n %% Processing Components\n TRANSFORM["coordinator/data_transformation.py
    DataTransformer

    Enrich prices with statistics"]\n PERIODS["coordinator/periods.py
    PeriodCalculator

    Calculate best/peak periods"]\n ENRICH["price_utils.py + average_utils.py

    Calculate trailing/leading averages
    rating_level, differences"]\n\n %% Output Components\n SENSORS["sensor/
    TibberPricesSensor

    120+ price/level/rating sensors"]\n BINARY["binary_sensor/
    TibberPricesBinarySensor

    Period indicators"]\n SERVICES["services/

    Custom service endpoints
    (get_chartdata, ApexCharts)"]\n\n %% Flow Connections\n TIBBER --\x3e|"Query user data
    Query prices
    (yesterday/today/tomorrow)"| API\n\n API --\x3e|"Raw GraphQL response"| COORD\n\n COORD --\x3e|"Check cache first"| CACHE_API\n CACHE_API -.->|"Cache hit:
    Return cached"| COORD\n CACHE_API -.->|"Cache miss:
    Fetch from API"| API\n\n COORD --\x3e|"Raw price data"| TRANSFORM\n TRANSFORM --\x3e|"Check cache"| CACHE_TRANS\n CACHE_TRANS -.->|"Cache hit"| TRANSFORM\n CACHE_TRANS -.->|"Cache miss"| ENRICH\n ENRICH --\x3e|"Enriched data"| TRANSFORM\n\n TRANSFORM --\x3e|"Enriched price data"| COORD\n\n COORD --\x3e|"Enriched data"| PERIODS\n PERIODS --\x3e|"Check cache"| CACHE_PERIOD\n CACHE_PERIOD -.->|"Hash match:
    Return cached"| PERIODS\n CACHE_PERIOD -.->|"Hash mismatch:
    Recalculate"| PERIODS\n\n PERIODS --\x3e|"Calculated periods"| COORD\n\n COORD --\x3e|"Complete data
    (prices + periods)"| SENSORS\n COORD --\x3e|"Complete data"| BINARY\n COORD --\x3e|"Data access"| SERVICES\n\n SENSORS --\x3e|"Entity states"| HA\n BINARY --\x3e|"Entity states"| HA\n SERVICES --\x3e|"Service responses"| HA\n\n %% Config access\n CACHE_CONFIG -.->|"Parsed options"| TRANSFORM\n CACHE_CONFIG -.->|"Parsed options"| PERIODS\n CACHE_TRANS_TEXT -.->|"UI strings"| SENSORS\n CACHE_TRANS_TEXT -.->|"UI strings"| BINARY\n\n SETUP --\x3e|"Initialize"| COORD\n SETUP --\x3e|"Register"| SENSORS\n SETUP --\x3e|"Register"| BINARY\n SETUP --\x3e|"Register"| SERVICES\n\n %% Styling\n classDef external fill:#e1f5ff,stroke:#0288d1,stroke-width:3px\n classDef cache fill:#fff3e0,stroke:#f57c00,stroke-width:2px\n classDef processing fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px\n classDef output fill:#e8f5e9,stroke:#388e3c,stroke-width:2px\n\n class TIBBER,HA external\n class CACHE_API,CACHE_TRANS,CACHE_PERIOD,CACHE_CONFIG,CACHE_TRANS_TEXT cache\n class TRANSFORM,PERIODS,ENRICH processing\n class SENSORS,BINARY,SERVICES output'}),"\n",(0,s.jsx)(n.h3,{id:"flow-description",children:"Flow Description"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Setup"})," (",(0,s.jsx)(n.code,{children:"__init__.py"}),")"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Integration loads, creates coordinator instance"}),"\n",(0,s.jsx)(n.li,{children:"Registers entity platforms (sensor, binary_sensor)"}),"\n",(0,s.jsx)(n.li,{children:"Sets up custom services"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Data Fetch"})," (every 15 minutes)"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Coordinator triggers update via ",(0,s.jsx)(n.code,{children:"api.py"})]}),"\n",(0,s.jsxs)(n.li,{children:["API client checks ",(0,s.jsx)(n.strong,{children:"persistent cache"})," first (",(0,s.jsx)(n.code,{children:"coordinator/cache.py"}),")"]}),"\n",(0,s.jsx)(n.li,{children:"If cache valid \u2192 return cached data"}),"\n",(0,s.jsx)(n.li,{children:"If cache stale \u2192 query Tibber GraphQL API"}),"\n",(0,s.jsx)(n.li,{children:"Store fresh data in persistent cache (survives HA restart)"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Price Enrichment"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Coordinator passes raw prices to ",(0,s.jsx)(n.code,{children:"DataTransformer"})]}),"\n",(0,s.jsxs)(n.li,{children:["Transformer checks ",(0,s.jsx)(n.strong,{children:"transformation cache"})," (memory)"]}),"\n",(0,s.jsx)(n.li,{children:"If cache valid \u2192 return enriched data"}),"\n",(0,s.jsxs)(n.li,{children:["If cache invalid \u2192 enrich via ",(0,s.jsx)(n.code,{children:"price_utils.py"})," + ",(0,s.jsx)(n.code,{children:"average_utils.py"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Calculate 24h trailing/leading averages"}),"\n",(0,s.jsx)(n.li,{children:"Calculate price differences (% from average)"}),"\n",(0,s.jsx)(n.li,{children:"Assign rating levels (LOW/NORMAL/HIGH)"}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"Store enriched data in transformation cache"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Period Calculation"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Coordinator passes enriched data to ",(0,s.jsx)(n.code,{children:"PeriodCalculator"})]}),"\n",(0,s.jsxs)(n.li,{children:["Calculator computes ",(0,s.jsx)(n.strong,{children:"hash"})," from prices + config"]}),"\n",(0,s.jsx)(n.li,{children:"If hash matches cache \u2192 return cached periods"}),"\n",(0,s.jsx)(n.li,{children:"If hash differs \u2192 recalculate best/peak price periods"}),"\n",(0,s.jsx)(n.li,{children:"Store periods with new hash"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Entity Updates"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Coordinator provides complete data (prices + periods)"}),"\n",(0,s.jsx)(n.li,{children:"Sensors read values via unified handlers"}),"\n",(0,s.jsx)(n.li,{children:"Binary sensors evaluate period states"}),"\n",(0,s.jsx)(n.li,{children:"Entities update on quarter-hour boundaries (00/15/30/45)"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Service Calls"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Custom services access coordinator data directly"}),"\n",(0,s.jsx)(n.li,{children:"Return formatted responses (JSON, ApexCharts format)"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"caching-architecture",children:"Caching Architecture"}),"\n",(0,s.jsx)(n.h3,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(n.p,{children:["The integration uses ",(0,s.jsx)(n.strong,{children:"5 independent caching layers"})," for optimal performance:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Layer"}),(0,s.jsx)(n.th,{children:"Location"}),(0,s.jsx)(n.th,{children:"Lifetime"}),(0,s.jsx)(n.th,{children:"Invalidation"}),(0,s.jsx)(n.th,{children:"Memory"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"API Cache"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator/cache.py"})}),(0,s.jsxs)(n.td,{children:["24h (user)",(0,s.jsx)("br",{}),"Until midnight (prices)"]}),(0,s.jsx)(n.td,{children:"Automatic"}),(0,s.jsx)(n.td,{children:"50KB"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Translation Cache"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"const.py"})}),(0,s.jsx)(n.td,{children:"Until HA restart"}),(0,s.jsx)(n.td,{children:"Never"}),(0,s.jsx)(n.td,{children:"5KB"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Config Cache"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator/*"})}),(0,s.jsx)(n.td,{children:"Until config change"}),(0,s.jsx)(n.td,{children:"Explicit"}),(0,s.jsx)(n.td,{children:"1KB"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Period Cache"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator/periods.py"})}),(0,s.jsx)(n.td,{children:"Until data/config change"}),(0,s.jsx)(n.td,{children:"Hash-based"}),(0,s.jsx)(n.td,{children:"10KB"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Transformation Cache"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator/data_transformation.py"})}),(0,s.jsx)(n.td,{children:"Until midnight/config"}),(0,s.jsx)(n.td,{children:"Automatic"}),(0,s.jsx)(n.td,{children:"60KB"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Total cache overhead:"})," ~126KB per coordinator instance (main entry + subentries)"]}),"\n",(0,s.jsx)(n.h3,{id:"cache-coordination",children:"Cache Coordination"}),"\n",(0,s.jsx)(n.mermaid,{value:'flowchart LR\n USER[("User changes options")]\n MIDNIGHT[("Midnight turnover")]\n NEWDATA[("Tomorrow data arrives")]\n\n USER --\x3e|"Explicit invalidation"| CONFIG["Config Cache
    \u274c Clear"]\n USER --\x3e|"Explicit invalidation"| PERIOD["Period Cache
    \u274c Clear"]\n USER --\x3e|"Explicit invalidation"| TRANS["Transformation Cache
    \u274c Clear"]\n\n MIDNIGHT --\x3e|"Date validation"| API["API Cache
    \u274c Clear prices"]\n MIDNIGHT --\x3e|"Date check"| TRANS\n\n NEWDATA --\x3e|"Hash mismatch"| PERIOD\n\n CONFIG -.->|"Next access"| CONFIG_NEW["Reparse options"]\n PERIOD -.->|"Next access"| PERIOD_NEW["Recalculate"]\n TRANS -.->|"Next access"| TRANS_NEW["Re-enrich"]\n API -.->|"Next access"| API_NEW["Fetch from API"]\n\n classDef invalid fill:#ffebee,stroke:#c62828,stroke-width:2px\n classDef rebuild fill:#e8f5e9,stroke:#388e3c,stroke-width:2px\n\n class CONFIG,PERIOD,TRANS,API invalid\n class CONFIG_NEW,PERIOD_NEW,TRANS_NEW,API_NEW rebuild'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Key insight:"})," No cascading invalidations - each cache is independent and rebuilds on-demand."]}),"\n",(0,s.jsxs)(n.p,{children:["For detailed cache behavior, see ",(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/caching-strategy",children:"Caching Strategy"}),"."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"component-responsibilities",children:"Component Responsibilities"}),"\n",(0,s.jsx)(n.h3,{id:"core-components",children:"Core Components"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Component"}),(0,s.jsx)(n.th,{children:"File"}),(0,s.jsx)(n.th,{children:"Responsibility"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"API Client"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"api.py"})}),(0,s.jsx)(n.td,{children:"GraphQL queries to Tibber, retry logic, error handling"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Coordinator"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator.py"})}),(0,s.jsx)(n.td,{children:"Update orchestration, cache management, absolute-time scheduling with boundary tolerance"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Data Transformer"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator/data_transformation.py"})}),(0,s.jsx)(n.td,{children:"Price enrichment (averages, ratings, differences)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Period Calculator"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator/periods.py"})}),(0,s.jsx)(n.td,{children:"Best/peak price period calculation with relaxation"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Sensors"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"sensor/"})}),(0,s.jsx)(n.td,{children:"80+ entities for prices, levels, ratings, statistics"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Binary Sensors"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"binary_sensor/"})}),(0,s.jsx)(n.td,{children:"Period indicators (best/peak price active)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Services"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"services/"})}),(0,s.jsx)(n.td,{children:"Custom service endpoints (get_chartdata, get_apexcharts_yaml, refresh_user_data)"})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"sensor-architecture-calculator-pattern",children:"Sensor Architecture (Calculator Pattern)"}),"\n",(0,s.jsxs)(n.p,{children:["The sensor platform uses ",(0,s.jsx)(n.strong,{children:"Calculator Pattern"})," for clean separation of concerns (refactored Nov 2025):"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Component"}),(0,s.jsx)(n.th,{children:"Files"}),(0,s.jsx)(n.th,{children:"Lines"}),(0,s.jsx)(n.th,{children:"Responsibility"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Entity Class"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"sensor/core.py"})}),(0,s.jsx)(n.td,{children:"909"}),(0,s.jsx)(n.td,{children:"Entity lifecycle, coordinator, delegates to calculators"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Calculators"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"sensor/calculators/"})}),(0,s.jsx)(n.td,{children:"1,838"}),(0,s.jsx)(n.td,{children:"Business logic (8 specialized calculators)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Attributes"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"sensor/attributes/"})}),(0,s.jsx)(n.td,{children:"1,209"}),(0,s.jsx)(n.td,{children:"State presentation (8 specialized modules)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Routing"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"sensor/value_getters.py"})}),(0,s.jsx)(n.td,{children:"276"}),(0,s.jsx)(n.td,{children:"Centralized sensor \u2192 calculator mapping"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Chart Export"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"sensor/chart_data.py"})}),(0,s.jsx)(n.td,{children:"144"}),(0,s.jsx)(n.td,{children:"Service call handling, YAML parsing"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Helpers"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"sensor/helpers.py"})}),(0,s.jsx)(n.td,{children:"188"}),(0,s.jsx)(n.td,{children:"Aggregation functions, utilities"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Calculator Package"})," (",(0,s.jsx)(n.code,{children:"sensor/calculators/"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"base.py"})," - Abstract BaseCalculator with coordinator access"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"interval.py"})," - Single interval calculations (current/next/previous)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"rolling_hour.py"})," - 5-interval rolling windows"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"daily_stat.py"})," - Calendar day min/max/avg statistics"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"window_24h.py"})," - Trailing/leading 24h windows"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"volatility.py"})," - Price volatility analysis"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"trend.py"})," - Complex trend analysis with caching"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"timing.py"})," - Best/peak price period timing"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"metadata.py"})," - Home/metering metadata"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"58% reduction in core.py (2,170 \u2192 909 lines)"}),"\n",(0,s.jsx)(n.li,{children:"Clear separation: Calculators (logic) vs Attributes (presentation)"}),"\n",(0,s.jsx)(n.li,{children:"Independent testability for each calculator"}),"\n",(0,s.jsx)(n.li,{children:"Easy to add sensors: Choose calculation pattern, add to routing"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"helper-utilities",children:"Helper Utilities"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Utility"}),(0,s.jsx)(n.th,{children:"File"}),(0,s.jsx)(n.th,{children:"Purpose"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Price Utils"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"utils/price.py"})}),(0,s.jsx)(n.td,{children:"Rating calculation, enrichment, level aggregation"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Average Utils"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"utils/average.py"})}),(0,s.jsx)(n.td,{children:"Trailing/leading 24h average calculations"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Entity Utils"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"entity_utils/"})}),(0,s.jsx)(n.td,{children:"Shared icon/color/attribute logic"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Translations"})}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"const.py"})}),(0,s.jsx)(n.td,{children:"Translation loading and caching"})]})]})]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"key-patterns",children:"Key Patterns"}),"\n",(0,s.jsx)(n.h3,{id:"1-dual-translation-system",children:"1. Dual Translation System"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Standard translations"})," (",(0,s.jsx)(n.code,{children:"/translations/*.json"}),"): HA-compliant schema for entity names"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Custom translations"})," (",(0,s.jsx)(n.code,{children:"/custom_translations/*.json"}),"): Extended descriptions, usage tips"]}),"\n",(0,s.jsx)(n.li,{children:"Both loaded at integration setup, cached in memory"}),"\n",(0,s.jsxs)(n.li,{children:["Access via ",(0,s.jsx)(n.code,{children:"get_translation()"})," helper function"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"2-price-data-enrichment",children:"2. Price Data Enrichment"}),"\n",(0,s.jsxs)(n.p,{children:["All quarter-hourly price intervals get augmented via ",(0,s.jsx)(n.code,{children:"utils/price.py"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# Original from Tibber API\n{\n "startsAt": "2025-11-03T14:00:00+01:00",\n "total": 0.2534,\n "level": "NORMAL"\n}\n\n# After enrichment (utils/price.py)\n{\n "startsAt": "2025-11-03T14:00:00+01:00",\n "total": 0.2534,\n "level": "NORMAL",\n "trailing_avg_24h": 0.2312, # \u2190 Added: 24h trailing average\n "difference": 9.6, # \u2190 Added: % diff from trailing avg\n "rating_level": "NORMAL" # \u2190 Added: LOW/NORMAL/HIGH based on thresholds\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"3-quarter-hour-precision",children:"3. Quarter-Hour Precision"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"API polling"}),": Every 15 minutes (coordinator fetch cycle)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Entity updates"}),": On 00/15/30/45-minute boundaries via ",(0,s.jsx)(n.code,{children:"coordinator/listeners.py"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Timer scheduling"}),": Uses ",(0,s.jsx)(n.code,{children:"async_track_utc_time_change(minute=[0, 15, 30, 45], second=0)"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"HA may trigger \xb1few milliseconds before/after exact boundary"}),"\n",(0,s.jsxs)(n.li,{children:["Smart boundary tolerance (\xb12 seconds) handles scheduling jitter in ",(0,s.jsx)(n.code,{children:"sensor/helpers.py"})]}),"\n",(0,s.jsx)(n.li,{children:"If HA schedules at 14:59:58 \u2192 rounds to 15:00:00 (shows new interval data)"}),"\n",(0,s.jsx)(n.li,{children:"If HA restarts at 14:59:30 \u2192 stays at 14:45:00 (shows current interval data)"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Absolute time tracking"}),": Timer plans for ",(0,s.jsx)(n.strong,{children:"all future boundaries"})," (not relative delays)","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Prevents double-updates (if triggered at 14:59:58, next trigger is 15:15:00, not 15:00:00)"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Result"}),": Current price sensors update without waiting for next API poll"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"4-calculator-pattern-sensor-platform",children:"4. Calculator Pattern (Sensor Platform)"}),"\n",(0,s.jsxs)(n.p,{children:["Sensors organized by ",(0,s.jsx)(n.strong,{children:"calculation method"})," (refactored Nov 2025):"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Unified Handler Methods"})," (",(0,s.jsx)(n.code,{children:"sensor/core.py"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"_get_interval_value(offset, type)"})," - current/next/previous intervals"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"_get_rolling_hour_value(offset, type)"})," - 5-interval rolling windows"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"_get_daily_stat_value(day, stat_func)"})," - calendar day min/max/avg"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"_get_24h_window_value(stat_func)"})," - trailing/leading statistics"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Routing"})," (",(0,s.jsx)(n.code,{children:"sensor/value_getters.py"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Single source of truth mapping 80+ entity keys to calculator methods"}),"\n",(0,s.jsx)(n.li,{children:"Organized by calculation type (Interval, Rolling Hour, Daily Stats, etc.)"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Calculators"})," (",(0,s.jsx)(n.code,{children:"sensor/calculators/"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Each calculator inherits from ",(0,s.jsx)(n.code,{children:"BaseCalculator"})," with coordinator access"]}),"\n",(0,s.jsxs)(n.li,{children:["Focused responsibility: ",(0,s.jsx)(n.code,{children:"IntervalCalculator"}),", ",(0,s.jsx)(n.code,{children:"TrendCalculator"}),", etc."]}),"\n",(0,s.jsxs)(n.li,{children:["Complex logic isolated (e.g., ",(0,s.jsx)(n.code,{children:"TrendCalculator"})," has internal caching)"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Attributes"})," (",(0,s.jsx)(n.code,{children:"sensor/attributes/"}),"):"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Separate from business logic, handles state presentation"}),"\n",(0,s.jsx)(n.li,{children:"Builds extra_state_attributes dicts for entity classes"}),"\n",(0,s.jsxs)(n.li,{children:["Unified builders: ",(0,s.jsx)(n.code,{children:"build_sensor_attributes()"}),", ",(0,s.jsx)(n.code,{children:"build_extra_state_attributes()"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Minimal code duplication across 80+ sensors"}),"\n",(0,s.jsx)(n.li,{children:"Clear separation of concerns (calculation vs presentation)"}),"\n",(0,s.jsx)(n.li,{children:"Easy to extend: Add sensor \u2192 choose pattern \u2192 add to routing"}),"\n",(0,s.jsx)(n.li,{children:"Independent testability for each component"}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"performance-characteristics",children:"Performance Characteristics"}),"\n",(0,s.jsx)(n.h3,{id:"api-call-reduction",children:"API Call Reduction"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Without caching:"})," 96 API calls/day (every 15 min)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"With caching:"})," ~1-2 API calls/day (only when cache expires)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Reduction:"})," ~98%"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"cpu-optimization",children:"CPU Optimization"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Optimization"}),(0,s.jsx)(n.th,{children:"Location"}),(0,s.jsx)(n.th,{children:"Savings"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Config caching"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator/*"})}),(0,s.jsx)(n.td,{children:"~50% on config checks"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Period caching"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"coordinator/periods.py"})}),(0,s.jsx)(n.td,{children:"~70% on period recalculation"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Lazy logging"}),(0,s.jsx)(n.td,{children:"Throughout"}),(0,s.jsx)(n.td,{children:"~15% on log-heavy operations"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Import optimization"}),(0,s.jsx)(n.td,{children:"Module structure"}),(0,s.jsx)(n.td,{children:"~20% faster loading"})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"memory-usage",children:"Memory Usage"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Per coordinator instance:"})," ~126KB cache overhead"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Typical setup:"})," 1 main + 2 subentries = ~378KB total"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Redundancy eliminated:"})," 14% reduction (10KB saved per coordinator)"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"related-documentation",children:"Related Documentation"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/timer-architecture",children:"Timer Architecture"})})," - Timer system, scheduling, coordination (3 independent timers)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/caching-strategy",children:"Caching Strategy"})})," - Detailed cache behavior, invalidation, debugging"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/setup",children:"Setup Guide"})})," - Development environment setup"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/testing",children:"Testing Guide"})})," - How to test changes"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/release-management",children:"Release Management"})})," - Release workflow and versioning"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:"AGENTS.md"})})," - Complete reference for AI development"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/5480.63163f11.js b/developer/assets/js/5480.63163f11.js new file mode 100644 index 0000000..4ea83c3 --- /dev/null +++ b/developer/assets/js/5480.63163f11.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[5480],{2501:(t,e,n)=>{n.d(e,{o:()=>i});var i=(0,n(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},2875:(t,e,n)=>{n.d(e,{CP:()=>h,HT:()=>y,PB:()=>u,aC:()=>c,lC:()=>o,m:()=>l,tk:()=>a});var i=n(7633),s=n(797),r=n(6750),a=(0,s.K2)((t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),e.name&&n.attr("name",e.name),e.rx&&n.attr("rx",e.rx),e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for(const i in e.attrs)n.attr(i,e.attrs[i]);return e.class&&n.attr("class",e.class),n},"drawRect"),o=(0,s.K2)((t,e)=>{const n={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};a(t,n).lower()},"drawBackgroundRect"),l=(0,s.K2)((t,e)=>{const n=e.text.replace(i.H1," "),s=t.append("text");s.attr("x",e.x),s.attr("y",e.y),s.attr("class","legend"),s.style("text-anchor",e.anchor),e.class&&s.attr("class",e.class);const r=s.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(n),s},"drawText"),c=(0,s.K2)((t,e,n,i)=>{const s=t.append("image");s.attr("x",e),s.attr("y",n);const a=(0,r.J)(i);s.attr("xlink:href",a)},"drawImage"),h=(0,s.K2)((t,e,n,i)=>{const s=t.append("use");s.attr("x",e),s.attr("y",n);const a=(0,r.J)(i);s.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),u=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),y=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},5480:(t,e,n)=>{n.d(e,{diagram:()=>X});var i=n(2875),s=n(2501),r=n(7633),a=n(797),o=n(451),l=function(){var t=(0,a.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,11,12,14,16,17,18],n=[1,9],i=[1,10],s=[1,11],r=[1,12],o=[1,13],l=[1,14],c={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:(0,a.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 13:i.addTask(r[o-1],r[o]),this.$="task"}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:s,16:r,17:o,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:n,12:i,14:s,16:r,17:o,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,l="",c=0,h=0,u=0,y=r.slice.call(arguments,1),p=Object.create(this.lexer),d={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(d.yy[f]=this.yy[f]);p.setInput(t,d.yy),d.yy.lexer=p,d.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var g=p.yylloc;r.push(g);var x=p.options&&p.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,a.K2)(m,"lex");for(var k,_,b,w,v,K,$,T,M,S={};;){if(b=n[n.length-1],this.defaultActions[b]?w=this.defaultActions[b]:(null==k&&(k=m()),w=o[b]&&o[b][k]),void 0===w||!w.length||!w[0]){var C="";for(K in M=[],o[b])this.terminals_[K]&&K>2&&M.push("'"+this.terminals_[K]+"'");C=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:g,expected:M})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+k);switch(w[0]){case 1:n.push(k),s.push(p.yytext),r.push(p.yylloc),n.push(w[1]),k=null,_?(k=_,_=null):(h=p.yyleng,l=p.yytext,c=p.yylineno,g=p.yylloc,u>0&&u--);break;case 2:if($=this.productions_[w[1]][1],S.$=s[s.length-$],S._$={first_line:r[r.length-($||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-($||1)].first_column,last_column:r[r.length-1].last_column},x&&(S._$.range=[r[r.length-($||1)].range[0],r[r.length-1].range[1]]),void 0!==(v=this.performAction.apply(S,[l,h,c,d.yy,w[1],s,r].concat(y))))return v;$&&(n=n.slice(0,-1*$*2),s=s.slice(0,-1*$),r=r.slice(0,-1*$)),n.push(this.productions_[w[1]][0]),s.push(S.$),r.push(S._$),T=o[n[n.length-2]][n[n.length-1]],n.push(T);break;case 3:return!0}}return!0},"parse")},h=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}}}();function u(){this.yy={}}return c.lexer=h,(0,a.K2)(u,"Parser"),u.prototype=c,c.Parser=u,new u}();l.parser=l;var c=l,h="",u=[],y=[],p=[],d=(0,a.K2)(function(){u.length=0,y.length=0,h="",p.length=0,(0,r.IU)()},"clear"),f=(0,a.K2)(function(t){h=t,u.push(t)},"addSection"),g=(0,a.K2)(function(){return u},"getSections"),x=(0,a.K2)(function(){let t=b();let e=0;for(;!t&&e<100;)t=b(),e++;return y.push(...p),y},"getTasks"),m=(0,a.K2)(function(){const t=[];y.forEach(e=>{e.people&&t.push(...e.people)});return[...new Set(t)].sort()},"updateActors"),k=(0,a.K2)(function(t,e){const n=e.substr(1).split(":");let i=0,s=[];1===n.length?(i=Number(n[0]),s=[]):(i=Number(n[0]),s=n[1].split(","));const r=s.map(t=>t.trim()),a={section:h,type:h,people:r,task:t,score:i};p.push(a)},"addTask"),_=(0,a.K2)(function(t){const e={section:h,type:h,description:t,task:t,classes:[]};y.push(e)},"addTaskOrg"),b=(0,a.K2)(function(){const t=(0,a.K2)(function(t){return p[t].processed},"compileTask");let e=!0;for(const[n,i]of p.entries())t(n),e=e&&i.processed;return e},"compileTasks"),w=(0,a.K2)(function(){return m()},"getActors"),v={getConfig:(0,a.K2)(()=>(0,r.D7)().journey,"getConfig"),clear:d,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:f,getSections:g,getTasks:x,addTask:k,addTaskOrg:_,getActors:w},K=(0,a.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n font-family: ${t.fontFamily};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n ${(0,s.o)()}\n`,"getStyles"),$=(0,a.K2)(function(t,e){return(0,i.tk)(t,e)},"drawRect"),T=(0,a.K2)(function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),s=t.append("g");function r(t){const i=(0,o.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function l(t){const i=(0,o.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function c(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),s.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,a.K2)(r,"smile"),(0,a.K2)(l,"sad"),(0,a.K2)(c,"ambivalent"),e.score>3?r(s):e.score<3?l(s):c(s),i},"drawFace"),M=(0,a.K2)(function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},"drawCircle"),S=(0,a.K2)(function(t,e){return(0,i.m)(t,e)},"drawText"),C=(0,a.K2)(function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,a.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,S(t,e)},"drawLabel"),E=(0,a.K2)(function(t,e,n){const s=t.append("g"),r=(0,i.PB)();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width*e.taskCount+n.diagramMarginX*(e.taskCount-1),r.height=n.height,r.class="journey-section section-type-"+e.num,r.rx=3,r.ry=3,$(s,r),j(n)(e.text,s,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),I=-1,P=(0,a.K2)(function(t,e,n){const s=e.x+n.width/2,r=t.append("g");I++;r.append("line").attr("id","task"+I).attr("x1",s).attr("y1",e.y).attr("x2",s).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),T(r,{cx:s,cy:300+30*(5-e.score),score:e.score});const a=(0,i.PB)();a.x=e.x,a.y=e.y,a.fill=e.fill,a.width=n.width,a.height=n.height,a.class="task task-type-"+e.num,a.rx=3,a.ry=3,$(r,a);let o=e.x+14;e.people.forEach(t=>{const n=e.actors[t].color,i={cx:o,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};M(r,i),o+=10}),j(n)(e.task,r,a.x,a.y,a.width,a.height,{class:"task"},n,e.colour)},"drawTask"),A=(0,a.K2)(function(t,e){(0,i.lC)(t,e)},"drawBackgroundRect"),j=function(){function t(t,e,n,s,r,a,o,l){i(e.append("text").attr("x",n+r/2).attr("y",s+a/2+5).style("font-color",l).style("text-anchor","middle").text(t),o)}function e(t,e,n,s,r,a,o,l,c){const{taskFontSize:h,taskFontFamily:u}=l,y=t.split(//gi);for(let p=0;p{const r=L[s].color,a={cx:20,cy:i,r:7,fill:r,stroke:"#000",pos:L[s].position};B.drawCircle(t,a);let o=t.append("text").attr("visibility","hidden").text(s);const l=o.node().getBoundingClientRect().width;o.remove();let c=[];if(l<=n)c=[s];else{const e=s.split(" ");let i="";o=t.append("text").attr("visibility","hidden"),e.forEach(t=>{const e=i?`${i} ${t}`:t;o.text(e);if(o.node().getBoundingClientRect().width>n){if(i&&c.push(i),i=t,o.text(t),o.node().getBoundingClientRect().width>n){let e="";for(const i of t)e+=i,o.text(e+"-"),o.node().getBoundingClientRect().width>n&&(c.push(e.slice(0,-1)+"-"),e=i);i=e}}else i=e}),i&&c.push(i),o.remove()}c.forEach((n,s)=>{const r={x:40,y:i+7+20*s,fill:"#666",text:n,textMargin:e.boxTextMargin??5},a=B.drawText(t,r).node().getBoundingClientRect().width;a>D&&a>e.leftMargin-a&&(D=a)}),i+=Math.max(20,20*c.length)})}(0,a.K2)(V,"drawActorLegend");var R=(0,r.D7)().journey,O=0,N=(0,a.K2)(function(t,e,n,i){const s=(0,r.D7)(),a=s.journey.titleColor,l=s.journey.titleFontSize,c=s.journey.titleFontFamily,h=s.securityLevel;let u;"sandbox"===h&&(u=(0,o.Ltv)("#i"+e));const y="sandbox"===h?(0,o.Ltv)(u.nodes()[0].contentDocument.body):(0,o.Ltv)("body");z.init();const p=y.select("#"+e);B.initGraphics(p);const d=i.db.getTasks(),f=i.db.getDiagramTitle(),g=i.db.getActors();for(const r in L)delete L[r];let x=0;g.forEach(t=>{L[t]={color:R.actorColours[x%R.actorColours.length],position:x},x++}),V(p),O=R.leftMargin+D,z.insert(0,0,O,50*Object.keys(L).length),q(p,d,0);const m=z.getBounds();f&&p.append("text").text(f).attr("x",O).attr("font-size",l).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",c);const k=m.stopy-m.starty+2*R.diagramMarginY,_=O+m.stopx+2*R.diagramMarginX;(0,r.a$)(p,k,_,R.useMaxWidth),p.append("line").attr("x1",O).attr("y1",4*R.height).attr("x2",_-O-4).attr("y2",4*R.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const b=f?70:0;p.attr("viewBox",`${m.startx} -25 ${_} ${k+b}`),p.attr("preserveAspectRatio","xMinYMin meet"),p.attr("height",k+b+25)},"draw"),z={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:(0,a.K2)(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:(0,a.K2)(function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},"updateVal"),updateBounds:(0,a.K2)(function(t,e,n,i){const s=(0,r.D7)().journey,o=this;let l=0;function c(r){return(0,a.K2)(function(a){l++;const c=o.sequenceItems.length-l+1;o.updateVal(a,"starty",e-c*s.boxMargin,Math.min),o.updateVal(a,"stopy",i+c*s.boxMargin,Math.max),o.updateVal(z.data,"startx",t-c*s.boxMargin,Math.min),o.updateVal(z.data,"stopx",n+c*s.boxMargin,Math.max),"activation"!==r&&(o.updateVal(a,"startx",t-c*s.boxMargin,Math.min),o.updateVal(a,"stopx",n+c*s.boxMargin,Math.max),o.updateVal(z.data,"starty",e-c*s.boxMargin,Math.min),o.updateVal(z.data,"stopy",i+c*s.boxMargin,Math.max))},"updateItemBounds")}(0,a.K2)(c,"updateFn"),this.sequenceItems.forEach(c())},"updateBounds"),insert:(0,a.K2)(function(t,e,n,i){const s=Math.min(t,n),r=Math.max(t,n),a=Math.min(e,i),o=Math.max(e,i);this.updateVal(z.data,"startx",s,Math.min),this.updateVal(z.data,"starty",a,Math.min),this.updateVal(z.data,"stopx",r,Math.max),this.updateVal(z.data,"stopy",o,Math.max),this.updateBounds(s,a,r,o)},"insert"),bumpVerticalPos:(0,a.K2)(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:(0,a.K2)(function(){return this.verticalPos},"getVerticalPos"),getBounds:(0,a.K2)(function(){return this.data},"getBounds")},W=R.sectionFills,Y=R.sectionColours,q=(0,a.K2)(function(t,e,n){const i=(0,r.D7)().journey;let s="";const a=n+(2*i.height+i.diagramMarginY);let o=0,l="#CCC",c="black",h=0;for(const[r,u]of e.entries()){if(s!==u.section){l=W[o%W.length],h=o%W.length,c=Y[o%Y.length];let n=0;const a=u.section;for(let t=r;t(L[e]&&(t[e]=L[e]),t),{});u.x=r*i.taskMargin+r*i.width+O,u.y=a,u.width=i.diagramMarginX,u.height=i.diagramMarginY,u.colour=c,u.fill=l,u.num=h,u.actors=n,B.drawTask(t,u,i),z.insert(u.x,u.y,u.x+u.width+i.taskMargin,450)}},"drawTasks"),J={setConf:F,draw:N},X={parser:c,db:v,renderer:J,styles:K,init:(0,a.K2)(t=>{J.setConf(t.journey),v.clear()},"init")}}}]); \ No newline at end of file diff --git a/developer/assets/js/5901.32ecf05f.js b/developer/assets/js/5901.32ecf05f.js new file mode 100644 index 0000000..9a647db --- /dev/null +++ b/developer/assets/js/5901.32ecf05f.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[5901],{5901:(e,s,l)=>{l.d(s,{createTreemapServices:()=>p.d});var p=l(1633);l(7960)}}]); \ No newline at end of file diff --git a/developer/assets/js/5955.4e2cabc8.js b/developer/assets/js/5955.4e2cabc8.js new file mode 100644 index 0000000..9c68269 --- /dev/null +++ b/developer/assets/js/5955.4e2cabc8.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[5955],{5955:(t,i,e)=>{e.d(i,{diagram:()=>it});var s=e(3590),a=e(92),n=e(3226),h=e(7633),o=e(797),r=e(451),l=function(){var t=(0,o.K2)(function(t,i,e,s){for(e=e||{},s=t.length;s--;e[t[s]]=i);return e},"o"),i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],a=[1,5],n=[1,6],h=[1,7],r=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],c=[1,26],g=[1,28],u=[1,29],x=[1,30],d=[1,31],p=[1,32],f=[1,33],y=[1,34],m=[1,35],b=[1,36],A=[1,37],w=[1,43],S=[1,42],C=[1,47],k=[1,50],_=[1,10,12,14,16,18,19,21,23,34,35,36],T=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],R=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],L={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:(0,o.K2)(function(t,i,e,s,a,n,h){var o=n.length-1;switch(a){case 5:s.setOrientation(n[o]);break;case 9:s.setDiagramTitle(n[o].text.trim());break;case 12:s.setLineData({text:"",type:"text"},n[o]);break;case 13:s.setLineData(n[o-1],n[o]);break;case 14:s.setBarData({text:"",type:"text"},n[o]);break;case 15:s.setBarData(n[o-1],n[o]);break;case 16:this.$=n[o].trim(),s.setAccTitle(this.$);break;case 17:case 18:this.$=n[o].trim(),s.setAccDescription(this.$);break;case 19:case 27:this.$=n[o-1];break;case 20:this.$=[Number(n[o-2]),...n[o]];break;case 21:this.$=[Number(n[o])];break;case 22:s.setXAxisTitle(n[o]);break;case 23:s.setXAxisTitle(n[o-1]);break;case 24:s.setXAxisTitle({type:"text",text:""});break;case 25:s.setXAxisBand(n[o]);break;case 26:s.setXAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 28:this.$=[n[o-2],...n[o]];break;case 29:this.$=[n[o]];break;case 30:s.setYAxisTitle(n[o]);break;case 31:s.setYAxisTitle(n[o-1]);break;case 32:s.setYAxisTitle({type:"text",text:""});break;case 33:s.setYAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 37:case 38:this.$={text:n[o],type:"text"};break;case 39:this.$={text:n[o],type:"markdown"};break;case 40:this.$=n[o];break;case 41:this.$=n[o-1]+""+n[o]}},"anonymous"),table:[t(i,e,{3:1,4:2,7:4,5:s,34:a,35:n,36:h}),{1:[3]},t(i,e,{4:2,7:4,3:8,5:s,34:a,35:n,36:h}),t(i,e,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:a,35:n,36:h}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(r,[2,34]),t(r,[2,35]),t(r,[2,36]),{1:[2,1]},t(i,e,{4:2,7:4,3:21,5:s,34:a,35:n,36:h}),{1:[2,3]},t(r,[2,5]),t(i,[2,7],{4:22,34:a,35:n,36:h}),{11:23,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:39,13:38,24:w,27:S,29:40,30:41,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:45,15:44,27:C,33:46,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:49,17:48,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:52,17:51,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{20:[1,53]},{22:[1,54]},t(_,[2,18]),{1:[2,2]},t(_,[2,8]),t(_,[2,9]),t(T,[2,37],{40:55,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A}),t(T,[2,38]),t(T,[2,39]),t(R,[2,40]),t(R,[2,42]),t(R,[2,43]),t(R,[2,44]),t(R,[2,45]),t(R,[2,46]),t(R,[2,47]),t(R,[2,48]),t(R,[2,49]),t(R,[2,50]),t(R,[2,51]),t(_,[2,10]),t(_,[2,22],{30:41,29:56,24:w,27:S}),t(_,[2,24]),t(_,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,11]),t(_,[2,30],{33:60,27:C}),t(_,[2,32]),{31:[1,61]},t(_,[2,12]),{17:62,24:k},{25:63,27:D},t(_,[2,14]),{17:65,24:k},t(_,[2,16]),t(_,[2,17]),t(R,[2,41]),t(_,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(_,[2,31]),{27:[1,69]},t(_,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(_,[2,15]),t(_,[2,26]),t(_,[2,27]),{11:59,32:72,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,33]),t(_,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:(0,o.K2)(function(t,i){if(!i.recoverable){var e=new Error(t);throw e.hash=i,e}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var i=this,e=[0],s=[],a=[null],n=[],h=this.table,r="",l=0,c=0,g=0,u=n.slice.call(arguments,1),x=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);x.setInput(t,d.yy),d.yy.lexer=x,d.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var f=x.yylloc;n.push(f);var y=x.options&&x.options.ranges;function m(){var t;return"number"!=typeof(t=s.pop()||x.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=i.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){e.length=e.length-2*t,a.length=a.length-t,n.length=n.length-t},"popStack"),(0,o.K2)(m,"lex");for(var b,A,w,S,C,k,_,T,R,D={};;){if(w=e[e.length-1],this.defaultActions[w]?S=this.defaultActions[w]:(null==b&&(b=m()),S=h[w]&&h[w][b]),void 0===S||!S.length||!S[0]){var L="";for(k in R=[],h[w])this.terminals_[k]&&k>2&&R.push("'"+this.terminals_[k]+"'");L=x.showPosition?"Parse error on line "+(l+1)+":\n"+x.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[b]||b,line:x.yylineno,loc:f,expected:R})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+b);switch(S[0]){case 1:e.push(b),a.push(x.yytext),n.push(x.yylloc),e.push(S[1]),b=null,A?(b=A,A=null):(c=x.yyleng,r=x.yytext,l=x.yylineno,f=x.yylloc,g>0&&g--);break;case 2:if(_=this.productions_[S[1]][1],D.$=a[a.length-_],D._$={first_line:n[n.length-(_||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(_||1)].first_column,last_column:n[n.length-1].last_column},y&&(D._$.range=[n[n.length-(_||1)].range[0],n[n.length-1].range[1]]),void 0!==(C=this.performAction.apply(D,[r,c,l,d.yy,S[1],a,n].concat(u))))return C;_&&(e=e.slice(0,-1*_*2),a=a.slice(0,-1*_),n=n.slice(0,-1*_)),e.push(this.productions_[S[1]][0]),a.push(D.$),n.push(D._$),T=h[e[e.length-2]][e[e.length-1]],e.push(T);break;case 3:return!0}}return!0},"parse")},P=function(){return{EOF:1,parseError:(0,o.K2)(function(t,i){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,i)},"parseError"),setInput:(0,o.K2)(function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var i=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===s.length?this.yylloc.first_column:0)+s[s.length-e.length].length-e[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+i+"^"},"showPosition"),test_match:(0,o.K2)(function(t,i){var e,s,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),(s=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var n in a)this[n]=a[n];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,i,e,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),n=0;ni[0].length)){if(i=e,s=n,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,a[n])))return t;if(this._backtrack){i=!1;continue}return!1}if(!this.options.flex)break}return i?!1!==(t=this.test_match(i,a[s]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)(function(t,i,e,s){switch(e){case 0:case 1:case 5:case 44:break;case 2:case 3:return this.popState(),34;case 4:return 34;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:case 26:case 28:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";case 18:return this.pushState("axis_data"),"Y_AXIS";case 19:return this.pushState("axis_band_data"),24;case 20:return 31;case 21:return this.pushState("data"),16;case 22:return this.pushState("data"),18;case 23:return this.pushState("data_inner"),24;case 24:return 27;case 25:return this.popState(),26;case 27:this.pushState("string");break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 45:return 35;case 46:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}}}();function E(){this.yy={}}return L.lexer=P,(0,o.K2)(E,"Parser"),E.prototype=L,L.Parser=E,new E}();l.parser=l;var c=l;function g(t){return"bar"===t.type}function u(t){return"band"===t.type}function x(t){return"linear"===t.type}(0,o.K2)(g,"isBarPlot"),(0,o.K2)(u,"isBandAxisData"),(0,o.K2)(x,"isLinearAxisData");var d=class{constructor(t){this.parentGroup=t}static{(0,o.K2)(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce((t,i)=>Math.max(i.length,t),0)*i,height:i};const e={width:0,height:0},s=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const n of t){const t=(0,a.W6)(s,1,n),h=t?t.width:n.length*i,o=t?t.height:i;e.width=Math.max(e.width,h),e.height=Math.max(e.height,o)}return s.remove(),e}},p=class{constructor(t,i,e,s){this.axisConfig=t,this.title=i,this.textDimensionCalculator=e,this.axisThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{(0,o.K2)(this,"BaseAxis")}setRange(t){this.range=t,"left"===this.axisPosition||"right"===this.axisPosition?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){const t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>2*this.outerPadding&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let i=t.height;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.width;this.outerPadding=Math.min(e.width/2,s);const a=e.height+2*this.axisConfig.labelPadding;this.labelTextHeight=e.height,a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-i}calculateSpaceIfDrawnVertical(t){let i=t.width;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.height;this.outerPadding=Math.min(e.height/2,s);const a=e.width+2*this.axisConfig.labelPadding;a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return"left"===this.axisPosition||"right"===this.axisPosition?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(t),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const i=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${i},${this.getScaleValue(t)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(t)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${i} L ${this.getScaleValue(t)},${i+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+2*this.axisConfig.titlePadding:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(t)},${i+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if("left"===this.axisPosition)return this.getDrawableElementsForLeftAxis();if("right"===this.axisPosition)throw Error("Drawing of right axis is not implemented");return"bottom"===this.axisPosition?this.getDrawableElementsForBottomAxis():"top"===this.axisPosition?this.getDrawableElementsForTopAxis():[]}},f=class extends p{static{(0,o.K2)(this,"BandAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.categories=e,this.scale=(0,r.WH)().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=(0,r.WH)().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),o.Rm.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}},y=class extends p{static{(0,o.K2)(this,"LinearAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.domain=e,this.scale=(0,r.m4Y)().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];"left"===this.axisPosition&&t.reverse(),this.scale=(0,r.m4Y)().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}};function m(t,i,e,s){const a=new d(s);return u(t)?new f(i,e,t.categories,t.title,a):new y(i,e,[t.min,t.max],t.title,a)}(0,o.K2)(m,"getAxis");var b=class{constructor(t,i,e,s){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=e,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{(0,o.K2)(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){const i=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),e=Math.max(i.width,t.width),s=i.height+2*this.chartConfig.titlePadding;return i.width<=e&&i.height<=s&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=e,this.boundingRect.height=s,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};function A(t,i,e,s){const a=new d(s);return new b(a,t,i,e)}(0,o.K2)(A,"getChartTitleComponent");var w=class{constructor(t,i,e,s,a){this.plotData=t,this.xAxis=i,this.yAxis=e,this.orientation=s,this.plotIndex=a}static{(0,o.K2)(this,"LinePlot")}getDrawableElement(){const t=this.plotData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]);let i;return i="horizontal"===this.orientation?(0,r.n8j)().y(t=>t[0]).x(t=>t[1])(t):(0,r.n8j)().x(t=>t[0]).y(t=>t[1])(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}},S=class{constructor(t,i,e,s,a,n){this.barData=t,this.boundingRect=i,this.xAxis=e,this.yAxis=s,this.orientation=a,this.plotIndex=n}static{(0,o.K2)(this,"BarPlot")}getDrawableElement(){const t=this.barData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]),i=.95*Math.min(2*this.xAxis.getAxisOuterPadding(),this.xAxis.getTickDistance()),e=i/2;return"horizontal"===this.orientation?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(t=>({x:this.boundingRect.x,y:t[0]-e,height:i,width:t[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(t=>({x:t[0]-e,y:t[1],width:i,height:this.boundingRect.y+this.boundingRect.height-t[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}},C=class{constructor(t,i,e){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=e,this.boundingRect={x:0,y:0,width:0,height:0}}static{(0,o.K2)(this,"BasePlot")}setAxes(t,i){this.xAxis=t,this.yAxis=i}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!this.xAxis||!this.yAxis)throw Error("Axes must be passed to render Plots");const t=[];for(const[i,e]of this.chartData.plots.entries())switch(e.type){case"line":{const s=new w(e,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}break;case"bar":{const s=new S(e,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}}return t}};function k(t,i,e){return new C(t,i,e)}(0,o.K2)(k,"getPlotComponent");var _,T=class{constructor(t,i,e,s){this.chartConfig=t,this.chartData=i,this.componentStore={title:A(t,i,e,s),plot:k(t,i,e),xAxis:m(i.xAxis,t.xAxis,{titleColor:e.xAxisTitleColor,labelColor:e.xAxisLabelColor,tickColor:e.xAxisTickColor,axisLineColor:e.xAxisLineColor},s),yAxis:m(i.yAxis,t.yAxis,{titleColor:e.yAxisTitleColor,labelColor:e.yAxisLabelColor,tickColor:e.yAxisTickColor,axisLineColor:e.yAxisLineColor},s)}}static{(0,o.K2)(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),n=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),h=this.componentStore.plot.calculateSpace({width:a,height:n});t-=h.width,i-=h.height,h=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=h.height,i-=h.height,this.componentStore.xAxis.setAxisPosition("bottom"),h=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=h.height,this.componentStore.yAxis.setAxisPosition("left"),h=this.componentStore.yAxis.calculateSpace({width:t,height:i}),e=h.width,t-=h.width,t>0&&(a+=t,t=0),i>0&&(n+=i,i=0),this.componentStore.plot.calculateSpace({width:a,height:n}),this.componentStore.plot.setBoundingBoxXY({x:e,y:s}),this.componentStore.xAxis.setRange([e,e+a]),this.componentStore.xAxis.setBoundingBoxXY({x:e,y:s+n}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:s}),this.chartData.plots.some(t=>g(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=0,n=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),h=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),o=this.componentStore.plot.calculateSpace({width:n,height:h});t-=o.width,i-=o.height,o=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),e=o.height,i-=o.height,this.componentStore.xAxis.setAxisPosition("left"),o=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=o.width,s=o.width,this.componentStore.yAxis.setAxisPosition("top"),o=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=o.height,a=e+o.height,t>0&&(n+=t,t=0),i>0&&(h+=i,i=0),this.componentStore.plot.calculateSpace({width:n,height:h}),this.componentStore.plot.setBoundingBoxXY({x:s,y:a}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:s,y:e}),this.componentStore.xAxis.setRange([a,a+h]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(t=>g(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){"horizontal"===this.chartConfig.chartOrientation?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const i of Object.values(this.componentStore))t.push(...i.getDrawableElements());return t}},R=class{static{(0,o.K2)(this,"XYChartBuilder")}static build(t,i,e,s){return new T(t,i,e,s).getDrawableElement()}},D=0,L=M(),P=$(),E=z(),v=P.plotColorPalette.split(",").map(t=>t.trim()),K=!1,I=!1;function $(){const t=(0,h.P$)(),i=(0,h.zj)();return(0,n.$t)(t.xyChart,i.themeVariables.xyChart)}function M(){const t=(0,h.zj)();return(0,n.$t)(h.UI.xyChart,t.xyChart)}function z(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function B(t){const i=(0,h.zj)();return(0,h.jZ)(t.trim(),i)}function W(t){_=t}function O(t){L.chartOrientation="horizontal"===t?"horizontal":"vertical"}function F(t){E.xAxis.title=B(t.text)}function N(t,i){E.xAxis={type:"linear",title:E.xAxis.title,min:t,max:i},K=!0}function X(t){E.xAxis={type:"band",title:E.xAxis.title,categories:t.map(t=>B(t.text))},K=!0}function V(t){E.yAxis.title=B(t.text)}function Y(t,i){E.yAxis={type:"linear",title:E.yAxis.title,min:t,max:i},I=!0}function H(t){const i=Math.min(...t),e=Math.max(...t),s=x(E.yAxis)?E.yAxis.min:1/0,a=x(E.yAxis)?E.yAxis.max:-1/0;E.yAxis={type:"linear",title:E.yAxis.title,min:Math.min(s,i),max:Math.max(a,e)}}function U(t){let i=[];if(0===t.length)return i;if(!K){const i=x(E.xAxis)?E.xAxis.min:1/0,e=x(E.xAxis)?E.xAxis.max:-1/0;N(Math.min(i,1),Math.max(e,t.length))}if(I||H(t),u(E.xAxis)&&(i=E.xAxis.categories.map((i,e)=>[i,t[e]])),x(E.xAxis)){const e=E.xAxis.min,s=E.xAxis.max,a=(s-e)/(t.length-1),n=[];for(let t=e;t<=s;t+=a)n.push(`${t}`);i=n.map((i,e)=>[i,t[e]])}return i}function j(t){return v[0===t?0:t%v.length]}function G(t,i){const e=U(i);E.plots.push({type:"line",strokeFill:j(D),strokeWidth:2,data:e}),D++}function Q(t,i){const e=U(i);E.plots.push({type:"bar",fill:j(D),data:e}),D++}function Z(){if(0===E.plots.length)throw Error("No Plot to render, please provide a plot with some data");return E.title=(0,h.ab)(),R.build(L,E,P,_)}function q(){return P}function J(){return L}function tt(){return E}(0,o.K2)($,"getChartDefaultThemeConfig"),(0,o.K2)(M,"getChartDefaultConfig"),(0,o.K2)(z,"getChartDefaultData"),(0,o.K2)(B,"textSanitizer"),(0,o.K2)(W,"setTmpSVGG"),(0,o.K2)(O,"setOrientation"),(0,o.K2)(F,"setXAxisTitle"),(0,o.K2)(N,"setXAxisRangeData"),(0,o.K2)(X,"setXAxisBand"),(0,o.K2)(V,"setYAxisTitle"),(0,o.K2)(Y,"setYAxisRangeData"),(0,o.K2)(H,"setYAxisRangeFromPlotData"),(0,o.K2)(U,"transformDataWithoutCategory"),(0,o.K2)(j,"getPlotColorFromPalette"),(0,o.K2)(G,"setLineData"),(0,o.K2)(Q,"setBarData"),(0,o.K2)(Z,"getDrawableElem"),(0,o.K2)(q,"getChartThemeConfig"),(0,o.K2)(J,"getChartConfig"),(0,o.K2)(tt,"getXYChartData");var it={parser:c,db:{getDrawableElem:Z,clear:(0,o.K2)(function(){(0,h.IU)(),D=0,L=M(),E={yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]},P=$(),v=P.plotColorPalette.split(",").map(t=>t.trim()),K=!1,I=!1},"clear"),setAccTitle:h.SV,getAccTitle:h.iN,setDiagramTitle:h.ke,getDiagramTitle:h.ab,getAccDescription:h.m7,setAccDescription:h.EI,setOrientation:O,setXAxisTitle:F,setXAxisRangeData:N,setXAxisBand:X,setYAxisTitle:V,setYAxisRangeData:Y,setLineData:G,setBarData:Q,setTmpSVGG:W,getChartThemeConfig:q,getChartConfig:J,getXYChartData:tt},renderer:{draw:(0,o.K2)((t,i,e,a)=>{const n=a.db,r=n.getChartThemeConfig(),l=n.getChartConfig(),c=n.getXYChartData().plots[0].data.map(t=>t[1]);function g(t){return"top"===t?"text-before-edge":"middle"}function u(t){return"left"===t?"start":"right"===t?"end":"middle"}function x(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,o.K2)(g,"getDominantBaseLine"),(0,o.K2)(u,"getTextAnchor"),(0,o.K2)(x,"getTextTransformation"),o.Rm.debug("Rendering xychart chart\n"+t);const d=(0,s.D)(i),p=d.append("g").attr("class","main"),f=p.append("rect").attr("width",l.width).attr("height",l.height).attr("class","background");(0,h.a$)(d,l.height,l.width,!0),d.attr("viewBox",`0 0 ${l.width} ${l.height}`),f.attr("fill",r.backgroundColor),n.setTmpSVGG(d.append("g").attr("class","mermaid-tmp-group"));const y=n.getDrawableElem(),m={};function b(t){let i=p,e="";for(const[s]of t.entries()){let a=p;s>0&&m[e]&&(a=m[e]),e+=t[s],i=m[e],i||(i=m[e]=a.append("g").attr("class",t[s]))}return i}(0,o.K2)(b,"getGroup");for(const s of y){if(0===s.data.length)continue;const t=b(s.groupTexts);switch(s.type){case"rect":if(t.selectAll("rect").data(s.data).enter().append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth),l.showDataLabel)if("horizontal"===l.chartOrientation){let i=function(t,i){const{data:s,label:a}=t;return i*a.length*e<=s.width-10};(0,o.K2)(i,"fitsHorizontally");const e=.7,a=s.data.map((t,i)=>({data:t,label:c[i].toString()})).filter(t=>t.data.width>0&&t.data.height>0),n=a.map(t=>{const{data:e}=t;let s=.7*e.height;for(;!i(t,s)&&s>0;)s-=1;return s}),h=Math.floor(Math.min(...n));t.selectAll("text").data(a).enter().append("text").attr("x",t=>t.data.x+t.data.width-10).attr("y",t=>t.data.y+t.data.height/2).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",`${h}px`).text(t=>t.label)}else{let i=function(t,i,e){const{data:s,label:a}=t,n=i*a.length*.7,h=s.x+s.width/2,o=h+n/2,r=h-n/2>=s.x&&o<=s.x+s.width,l=s.y+e+i<=s.y+s.height;return r&&l};(0,o.K2)(i,"fitsInBar");const e=10,a=s.data.map((t,i)=>({data:t,label:c[i].toString()})).filter(t=>t.data.width>0&&t.data.height>0),n=a.map(t=>{const{data:s,label:a}=t;let n=s.width/(.7*a.length);for(;!i(t,n,e)&&n>0;)n-=1;return n}),h=Math.floor(Math.min(...n));t.selectAll("text").data(a).enter().append("text").attr("x",t=>t.data.x+t.data.width/2).attr("y",t=>t.data.y+e).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",`${h}px`).text(t=>t.label)}break;case"text":t.selectAll("text").data(s.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>g(t.verticalPos)).attr("text-anchor",t=>u(t.horizontalPos)).attr("transform",t=>x(t)).text(t=>t.text);break;case"path":t.selectAll("path").data(s.data).enter().append("path").attr("d",t=>t.path).attr("fill",t=>t.fill?t.fill:"none").attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth)}}},"draw")}}}}]); \ No newline at end of file diff --git a/developer/assets/js/5996.464bd964.js b/developer/assets/js/5996.464bd964.js new file mode 100644 index 0000000..930000e --- /dev/null +++ b/developer/assets/js/5996.464bd964.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[5996],{697:(t,e,r)=>{r.d(e,{T:()=>a.T});var a=r(7981)},2501:(t,e,r)=>{r.d(e,{o:()=>a});var a=(0,r(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},5937:(t,e,r)=>{r.d(e,{A:()=>i});var a=r(2453),s=r(4886);const i=(t,e)=>a.A.lang.round(s.A.parse(t)[e])},5996:(t,e,r)=>{r.d(e,{diagram:()=>we});var a=r(2501),s=r(8698),i=r(3245),n=r(92),o=r(3226),l=r(7633),c=r(797),d=r(53),h=r(5582),g=r(5937),u=r(451),p=r(697),y=function(){var t=(0,c.K2)(function(t,e,r,a){for(r=r||{},a=t.length;a--;r[t[a]]=e);return r},"o"),e=[1,15],r=[1,7],a=[1,13],s=[1,14],i=[1,19],n=[1,16],o=[1,17],l=[1,18],d=[8,30],h=[8,10,21,28,29,30,31,39,43,46],g=[1,23],u=[1,24],p=[8,10,15,16,21,28,29,30,31,39,43,46],y=[8,10,15,16,21,27,28,29,30,31,39,43,46],b=[1,49],x={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:(0,c.K2)(function(t,e,r,a,s,i,n){var o=i.length-1;switch(s){case 4:a.getLogger().debug("Rule: separator (NL) ");break;case 5:a.getLogger().debug("Rule: separator (Space) ");break;case 6:a.getLogger().debug("Rule: separator (EOF) ");break;case 7:a.getLogger().debug("Rule: hierarchy: ",i[o-1]),a.setHierarchy(i[o-1]);break;case 8:a.getLogger().debug("Stop NL ");break;case 9:a.getLogger().debug("Stop EOF ");break;case 10:a.getLogger().debug("Stop NL2 ");break;case 11:a.getLogger().debug("Stop EOF2 ");break;case 12:a.getLogger().debug("Rule: statement: ",i[o]),"number"==typeof i[o].length?this.$=i[o]:this.$=[i[o]];break;case 13:a.getLogger().debug("Rule: statement #2: ",i[o-1]),this.$=[i[o-1]].concat(i[o]);break;case 14:a.getLogger().debug("Rule: link: ",i[o],t),this.$={edgeTypeStr:i[o],label:""};break;case 15:a.getLogger().debug("Rule: LABEL link: ",i[o-3],i[o-1],i[o]),this.$={edgeTypeStr:i[o],label:i[o-1]};break;case 18:const e=parseInt(i[o]),r=a.generateId();this.$={id:r,type:"space",label:"",width:e,children:[]};break;case 23:a.getLogger().debug("Rule: (nodeStatement link node) ",i[o-2],i[o-1],i[o]," typestr: ",i[o-1].edgeTypeStr);const s=a.edgeStrToEdgeData(i[o-1].edgeTypeStr);this.$=[{id:i[o-2].id,label:i[o-2].label,type:i[o-2].type,directions:i[o-2].directions},{id:i[o-2].id+"-"+i[o].id,start:i[o-2].id,end:i[o].id,label:i[o-1].label,type:"edge",directions:i[o].directions,arrowTypeEnd:s,arrowTypeStart:"arrow_open"},{id:i[o].id,label:i[o].label,type:a.typeStr2Type(i[o].typeStr),directions:i[o].directions}];break;case 24:a.getLogger().debug("Rule: nodeStatement (abc88 node size) ",i[o-1],i[o]),this.$={id:i[o-1].id,label:i[o-1].label,type:a.typeStr2Type(i[o-1].typeStr),directions:i[o-1].directions,widthInColumns:parseInt(i[o],10)};break;case 25:a.getLogger().debug("Rule: nodeStatement (node) ",i[o]),this.$={id:i[o].id,label:i[o].label,type:a.typeStr2Type(i[o].typeStr),directions:i[o].directions,widthInColumns:1};break;case 26:a.getLogger().debug("APA123",this?this:"na"),a.getLogger().debug("COLUMNS: ",i[o]),this.$={type:"column-setting",columns:"auto"===i[o]?-1:parseInt(i[o])};break;case 27:a.getLogger().debug("Rule: id-block statement : ",i[o-2],i[o-1]);a.generateId();this.$={...i[o-2],type:"composite",children:i[o-1]};break;case 28:a.getLogger().debug("Rule: blockStatement : ",i[o-2],i[o-1],i[o]);const n=a.generateId();this.$={id:n,type:"composite",label:"",children:i[o-1]};break;case 29:a.getLogger().debug("Rule: node (NODE_ID separator): ",i[o]),this.$={id:i[o]};break;case 30:a.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",i[o-1],i[o]),this.$={id:i[o-1],label:i[o].label,typeStr:i[o].typeStr,directions:i[o].directions};break;case 31:a.getLogger().debug("Rule: dirList: ",i[o]),this.$=[i[o]];break;case 32:a.getLogger().debug("Rule: dirList: ",i[o-1],i[o]),this.$=[i[o-1]].concat(i[o]);break;case 33:a.getLogger().debug("Rule: nodeShapeNLabel: ",i[o-2],i[o-1],i[o]),this.$={typeStr:i[o-2]+i[o],label:i[o-1]};break;case 34:a.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",i[o-3],i[o-2]," #3:",i[o-1],i[o]),this.$={typeStr:i[o-3]+i[o],label:i[o-2],directions:i[o-1]};break;case 35:case 36:this.$={type:"classDef",id:i[o-1].trim(),css:i[o].trim()};break;case 37:this.$={type:"applyClass",id:i[o-1].trim(),styleClass:i[o].trim()};break;case 38:this.$={type:"applyStyles",id:i[o-1].trim(),stylesStr:i[o].trim()}}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:e,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{8:[1,20]},t(d,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:e,21:r,28:a,29:s,31:i,39:n,43:o,46:l}),t(h,[2,16],{14:22,15:g,16:u}),t(h,[2,17]),t(h,[2,18]),t(h,[2,19]),t(h,[2,20]),t(h,[2,21]),t(h,[2,22]),t(p,[2,25],{27:[1,25]}),t(h,[2,26]),{19:26,26:12,31:i},{10:e,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},t(y,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},t(d,[2,13]),{26:35,31:i},{31:[2,14]},{17:[1,36]},t(p,[2,24]),{10:e,11:37,13:4,14:22,15:g,16:u,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},t(y,[2,30]),{18:[1,43]},{18:[1,44]},t(p,[2,23]),{18:[1,45]},{30:[1,46]},t(h,[2,28]),t(h,[2,35]),t(h,[2,36]),t(h,[2,37]),t(h,[2,38]),{36:[1,47]},{33:48,34:b},{15:[1,50]},t(h,[2,27]),t(y,[2,33]),{38:[1,51]},{33:52,34:b,38:[2,31]},{31:[2,15]},t(y,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var r=new Error(t);throw r.hash=e,r}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,r=[0],a=[],s=[null],i=[],n=this.table,o="",l=0,d=0,h=0,g=i.slice.call(arguments,1),u=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);u.setInput(t,p.yy),p.yy.lexer=u,p.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var b=u.yylloc;i.push(b);var x=u.options&&u.options.ranges;function f(){var t;return"number"!=typeof(t=a.pop()||u.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){r.length=r.length-2*t,s.length=s.length-t,i.length=i.length-t},"popStack"),(0,c.K2)(f,"lex");for(var m,w,_,L,k,S,v,E,D,C={};;){if(_=r[r.length-1],this.defaultActions[_]?L=this.defaultActions[_]:(null==m&&(m=f()),L=n[_]&&n[_][m]),void 0===L||!L.length||!L[0]){var R="";for(S in D=[],n[_])this.terminals_[S]&&S>2&&D.push("'"+this.terminals_[S]+"'");R=u.showPosition?"Parse error on line "+(l+1)+":\n"+u.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(R,{text:u.match,token:this.terminals_[m]||m,line:u.yylineno,loc:b,expected:D})}if(L[0]instanceof Array&&L.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+m);switch(L[0]){case 1:r.push(m),s.push(u.yytext),i.push(u.yylloc),r.push(L[1]),m=null,w?(m=w,w=null):(d=u.yyleng,o=u.yytext,l=u.yylineno,b=u.yylloc,h>0&&h--);break;case 2:if(v=this.productions_[L[1]][1],C.$=s[s.length-v],C._$={first_line:i[i.length-(v||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(v||1)].first_column,last_column:i[i.length-1].last_column},x&&(C._$.range=[i[i.length-(v||1)].range[0],i[i.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[o,d,l,p.yy,L[1],s,i].concat(g))))return k;v&&(r=r.slice(0,-1*v*2),s=s.slice(0,-1*v),i=i.slice(0,-1*v)),r.push(this.productions_[L[1]][0]),s.push(C.$),i.push(C._$),E=n[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0},"parse")},f=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===a.length?this.yylloc.first_column:0)+a[a.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var r,a,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],r=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var i in s)this[i]=s[i];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,r,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;ie[0].length)){if(e=r,a=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,s[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,c.K2)(function(t,e,r,a){switch(r){case 0:return t.getLogger().debug("Found block-beta"),10;case 1:return t.getLogger().debug("Found id-block"),29;case 2:return t.getLogger().debug("Found block"),10;case 3:t.getLogger().debug(".",e.yytext);break;case 4:t.getLogger().debug("_",e.yytext);break;case 5:return 5;case 6:return e.yytext=-1,28;case 7:return e.yytext=e.yytext.replace(/columns\s+/,""),t.getLogger().debug("COLUMNS (LEX)",e.yytext),28;case 8:case 76:case 77:case 99:this.pushState("md_string");break;case 9:return"MD_STR";case 10:case 34:case 79:this.popState();break;case 11:this.pushState("string");break;case 12:t.getLogger().debug("LEX: POPPING STR:",e.yytext),this.popState();break;case 13:return t.getLogger().debug("LEX: STR end:",e.yytext),"STR";case 14:return e.yytext=e.yytext.replace(/space\:/,""),t.getLogger().debug("SPACE NUM (LEX)",e.yytext),21;case 15:return e.yytext="1",t.getLogger().debug("COLUMNS (LEX)",e.yytext),21;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 21:return this.popState(),this.pushState("CLASSDEFID"),40;case 22:return this.popState(),41;case 23:return this.pushState("CLASS"),43;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;case 25:return this.popState(),45;case 26:return this.pushState("STYLE_STMNT"),46;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;case 28:return this.popState(),48;case 29:return this.pushState("acc_title"),"acc_title";case 30:return this.popState(),"acc_title_value";case 31:return this.pushState("acc_descr"),"acc_descr";case 32:return this.popState(),"acc_descr_value";case 33:this.pushState("acc_descr_multiline");break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:case 38:case 40:case 41:case 44:return this.popState(),t.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),t.getLogger().debug("Lex: ))"),"NODE_DEND";case 42:return this.popState(),t.getLogger().debug("Lex: (-"),"NODE_DEND";case 43:return this.popState(),t.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),t.getLogger().debug("Lex: ]]"),"NODE_DEND";case 46:return this.popState(),t.getLogger().debug("Lex: ("),"NODE_DEND";case 47:return this.popState(),t.getLogger().debug("Lex: ])"),"NODE_DEND";case 48:case 49:return this.popState(),t.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),t.getLogger().debug("Lex: )]"),"NODE_DEND";case 51:return this.popState(),t.getLogger().debug("Lex: )"),"NODE_DEND";case 52:return this.popState(),t.getLogger().debug("Lex: ]>"),"NODE_DEND";case 53:return this.popState(),t.getLogger().debug("Lex: ]"),"NODE_DEND";case 54:return t.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;case 55:return t.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;case 56:return t.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;case 57:case 59:case 60:case 61:case 64:return t.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 58:return t.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;case 62:return t.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;case 63:return t.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;case 65:case 66:case 67:case 68:case 69:case 70:case 71:return this.pushState("NODE"),35;case 72:return t.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;case 73:return this.pushState("BLOCK_ARROW"),t.getLogger().debug("LEX ARR START"),37;case 74:return t.getLogger().debug("Lex: NODE_ID",e.yytext),31;case 75:return t.getLogger().debug("Lex: EOF",e.yytext),8;case 78:return"NODE_DESCR";case 80:t.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:t.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return t.getLogger().debug("LEX: NODE_DESCR:",e.yytext),"NODE_DESCR";case 83:t.getLogger().debug("LEX POPPING"),this.popState();break;case 84:t.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (right): dir:",e.yytext),"DIR";case 86:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (left):",e.yytext),"DIR";case 87:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (x):",e.yytext),"DIR";case 88:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (y):",e.yytext),"DIR";case 89:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (up):",e.yytext),"DIR";case 90:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (down):",e.yytext),"DIR";case 91:return e.yytext="]>",t.getLogger().debug("Lex (ARROW_DIR end):",e.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 92:return t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 93:case 94:case 95:return t.getLogger().debug("Lex: LINK",e.yytext),15;case 96:case 97:case 98:return t.getLogger().debug("Lex: START_LINK",e.yytext),this.pushState("LLABEL"),16;case 100:return t.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 101:return this.popState(),t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 102:case 103:return this.popState(),t.getLogger().debug("Lex: LINK",e.yytext),15;case 104:return t.getLogger().debug("Lex: COLON",e.yytext),e.yytext=e.yytext.slice(1),27}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}}}();function m(){this.yy={}}return x.lexer=f,(0,c.K2)(m,"Parser"),m.prototype=x,x.Parser=m,new m}();y.parser=y;var b=y,x=new Map,f=[],m=new Map,w="color",_="fill",L=(0,l.D7)(),k=new Map,S=(0,c.K2)(t=>l.Y2.sanitizeText(t,L),"sanitizeText"),v=(0,c.K2)(function(t,e=""){let r=k.get(t);r||(r={id:t,styles:[],textStyles:[]},k.set(t,r)),null!=e&&e.split(",").forEach(t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(w).exec(t)){const t=e.replace(_,"bgFill").replace(w,_);r.textStyles.push(t)}r.styles.push(e)})},"addStyleClass"),E=(0,c.K2)(function(t,e=""){const r=x.get(t);null!=e&&(r.styles=e.split(","))},"addStyle2Node"),D=(0,c.K2)(function(t,e){t.split(",").forEach(function(t){let r=x.get(t);if(void 0===r){const e=t.trim();r={id:e,type:"na",children:[]},x.set(e,r)}r.classes||(r.classes=[]),r.classes.push(e)})},"setCssClass"),C=(0,c.K2)((t,e)=>{const r=t.flat(),a=[],s=r.find(t=>"column-setting"===t?.type),i=s?.columns??-1;for(const n of r)if("number"==typeof i&&i>0&&"column-setting"!==n.type&&"number"==typeof n.widthInColumns&&n.widthInColumns>i&&c.Rm.warn(`Block ${n.id} width ${n.widthInColumns} exceeds configured column width ${i}`),n.label&&(n.label=S(n.label)),"classDef"!==n.type)if("applyClass"!==n.type)if("applyStyles"!==n.type)if("column-setting"===n.type)e.columns=n.columns??-1;else if("edge"===n.type){const t=(m.get(n.id)??0)+1;m.set(n.id,t),n.id=t+"-"+n.id,f.push(n)}else{n.label||("composite"===n.type?n.label="":n.label=n.id);const t=x.get(n.id);if(void 0===t?x.set(n.id,n):("na"!==n.type&&(t.type=n.type),n.label!==n.id&&(t.label=n.label)),n.children&&C(n.children,n),"space"===n.type){const t=n.width??1;for(let e=0;e{c.Rm.debug("Clear called"),(0,l.IU)(),K={id:"root",type:"composite",children:[],columns:-1},x=new Map([["root",K]]),R=[],k=new Map,f=[],m=new Map},"clear");function N(t){switch(c.Rm.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return c.Rm.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function T(t){return c.Rm.debug("typeStr2Type",t),"=="===t?"thick":"normal"}function A(t){switch(t.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}(0,c.K2)(N,"typeStr2Type"),(0,c.K2)(T,"edgeTypeStr2Type"),(0,c.K2)(A,"edgeStrToEdgeData");var I=0,O=(0,c.K2)(()=>(I++,"id-"+Math.random().toString(36).substr(2,12)+"-"+I),"generateId"),B=(0,c.K2)(t=>{K.children=t,C(t,K),R=K.children},"setHierarchy"),z=(0,c.K2)(t=>{const e=x.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),M=(0,c.K2)(()=>[...x.values()],"getBlocksFlat"),P=(0,c.K2)(()=>R||[],"getBlocks"),Y=(0,c.K2)(()=>f,"getEdges"),F=(0,c.K2)(t=>x.get(t),"getBlock"),j=(0,c.K2)(t=>{x.set(t.id,t)},"setBlock"),W=(0,c.K2)(()=>c.Rm,"getLogger"),X=(0,c.K2)(function(){return k},"getClasses"),H={getConfig:(0,c.K2)(()=>(0,l.zj)().block,"getConfig"),typeStr2Type:N,edgeTypeStr2Type:T,edgeStrToEdgeData:A,getLogger:W,getBlocksFlat:M,getBlocks:P,getEdges:Y,setHierarchy:B,getBlock:F,setBlock:j,getColumns:z,getClasses:X,clear:$,generateId:O},U=(0,c.K2)((t,e)=>{const r=g.A,a=r(t,"r"),s=r(t,"g"),i=r(t,"b");return h.A(a,s,i,e)},"fade"),Z=(0,c.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span,p {\n color: ${t.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${U(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .node .cluster {\n // fill: ${U(t.mainBkg,.5)};\n fill: ${U(t.clusterBkg,.5)};\n stroke: ${U(t.clusterBorder,.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span,p {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n ${(0,a.o)()}\n`,"getStyles"),q=(0,c.K2)((t,e,r,a)=>{e.forEach(e=>{G[e](t,r,a)})},"insertMarkers"),G={extension:(0,c.K2)((t,e,r)=>{c.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb")},J=q,V=(0,l.D7)()?.block?.padding??8;function Q(t,e){if(0===t||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(1===t)return{px:0,py:e};return{px:e%t,py:Math.floor(e/t)}}(0,c.K2)(Q,"calculateBlockPosition");var tt=(0,c.K2)(t=>{let e=0,r=0;for(const a of t.children){const{width:s,height:i,x:n,y:o}=a.size??{width:0,height:0,x:0,y:0};c.Rm.debug("getMaxChildSize abc95 child:",a.id,"width:",s,"height:",i,"x:",n,"y:",o,a.type),"space"!==a.type&&(s>e&&(e=s/(t.widthInColumns??1)),i>r&&(r=i))}return{width:e,height:r}},"getMaxChildSize");function et(t,e,r=0,a=0){c.Rm.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"siblingWidth",r),t?.size?.width||(t.size={width:r,height:a,x:0,y:0});let s=0,i=0;if(t.children?.length>0){for(const r of t.children)et(r,e);const n=tt(t);s=n.width,i=n.height,c.Rm.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",s,i);for(const e of t.children)e.size&&(c.Rm.debug(`abc95 Setting size of children of ${t.id} id=${e.id} ${s} ${i} ${JSON.stringify(e.size)}`),e.size.width=s*(e.widthInColumns??1)+V*((e.widthInColumns??1)-1),e.size.height=i,e.size.x=0,e.size.y=0,c.Rm.debug(`abc95 updating size of ${t.id} children child:${e.id} maxWidth:${s} maxHeight:${i}`));for(const r of t.children)et(r,e,s,i);const o=t.columns??-1;let l=0;for(const e of t.children)l+=e.widthInColumns??1;let d=t.children.length;o>0&&o0?Math.min(t.children.length,o):t.children.length;if(e>0){const r=(g-e*V-V)/e;c.Rm.debug("abc95 (growing to fit) width",t.id,g,t.size?.width,r);for(const e of t.children)e.size&&(e.size.width=r)}}t.size={width:g,height:u,x:0,y:0}}c.Rm.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function rt(t,e){c.Rm.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);const r=t.columns??-1;if(c.Rm.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){const a=t?.children[0]?.size?.width??0,s=t.children.length*a+(t.children.length-1)*V;c.Rm.debug("widthOfChildren 88",s,"posX");let i=0;c.Rm.debug("abc91 block?.size?.x",t.id,t?.size?.x);let n=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-V,o=0;for(const l of t.children){const a=t;if(!l.size)continue;const{width:s,height:d}=l.size,{px:h,py:g}=Q(r,i);if(g!=o&&(o=g,n=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-V,c.Rm.debug("New row in layout for block",t.id," and child ",l.id,o)),c.Rm.debug(`abc89 layout blocks (child) id: ${l.id} Pos: ${i} (px, py) ${h},${g} (${a?.size?.x},${a?.size?.y}) parent: ${a.id} width: ${s}${V}`),a.size){const t=s/2;l.size.x=n+V+t,c.Rm.debug(`abc91 layout blocks (calc) px, pyid:${l.id} startingPos=X${n} new startingPosX${l.size.x} ${t} padding=${V} width=${s} halfWidth=${t} => x:${l.size.x} y:${l.size.y} ${l.widthInColumns} (width * (child?.w || 1)) / 2 ${s*(l?.widthInColumns??1)/2}`),n=l.size.x+t,l.size.y=a.size.y-a.size.height/2+g*(d+V)+d/2+V,c.Rm.debug(`abc88 layout blocks (calc) px, pyid:${l.id}startingPosX${n}${V}${t}=>x:${l.size.x}y:${l.size.y}${l.widthInColumns}(width * (child?.w || 1)) / 2${s*(l?.widthInColumns??1)/2}`)}l.children&&rt(l,e);let u=l?.widthInColumns??1;r>0&&(u=Math.min(u,r-i%r)),i+=u,c.Rm.debug("abc88 columnsPos",l,i)}}c.Rm.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function at(t,{minX:e,minY:r,maxX:a,maxY:s}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&"root"!==t.id){const{x:i,y:n,width:o,height:l}=t.size;i-o/2a&&(a=i+o/2),n+l/2>s&&(s=n+l/2)}if(t.children)for(const i of t.children)({minX:e,minY:r,maxX:a,maxY:s}=at(i,{minX:e,minY:r,maxX:a,maxY:s}));return{minX:e,minY:r,maxX:a,maxY:s}}function st(t){const e=t.getBlock("root");if(!e)return;et(e,t,0,0),rt(e,t),c.Rm.debug("getBlocks",JSON.stringify(e,null,2));const{minX:r,minY:a,maxX:s,maxY:i}=at(e);return{x:r,y:a,width:s-r,height:i-a}}function it(t,e){e&&t.attr("style",e)}function nt(t,e){const r=(0,u.Ltv)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),a=r.append("xhtml:div"),s=t.label,i=t.isNode?"nodeLabel":"edgeLabel",n=a.append("span");return n.html((0,l.jZ)(s,e)),it(n,t.labelStyle),n.attr("class",i),it(a,t.labelStyle),a.style("display","inline-block"),a.style("white-space","nowrap"),a.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}(0,c.K2)(et,"setBlockSizes"),(0,c.K2)(rt,"layoutBlocks"),(0,c.K2)(at,"findBounds"),(0,c.K2)(st,"layout"),(0,c.K2)(it,"applyStyle"),(0,c.K2)(nt,"addHtmlLabel");var ot=(0,c.K2)(async(t,e,r,a)=>{let s=t||"";"object"==typeof s&&(s=s[0]);const i=(0,l.D7)();if((0,l._3)(i.flowchart.htmlLabels)){s=s.replace(/\\n|\n/g,"
    "),c.Rm.debug("vertexText"+s);return nt({isNode:a,label:await(0,n.hE)((0,o.Sm)(s)),labelStyle:e.replace("fill:","color:")},i)}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let a=[];a="string"==typeof s?s.split(/\\n|\n|/gi):Array.isArray(s)?s:[];for(const e of a){const a=document.createElementNS("http://www.w3.org/2000/svg","tspan");a.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),a.setAttribute("dy","1em"),a.setAttribute("x","0"),r?a.setAttribute("class","title-row"):a.setAttribute("class","row"),a.textContent=e.trim(),t.appendChild(a)}return t}},"createLabel"),lt=(0,c.K2)((t,e,r,a,s)=>{e.arrowTypeStart&&dt(t,"start",e.arrowTypeStart,r,a,s),e.arrowTypeEnd&&dt(t,"end",e.arrowTypeEnd,r,a,s)},"addEdgeMarkers"),ct={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},dt=(0,c.K2)((t,e,r,a,s,i)=>{const n=ct[r];if(!n)return void c.Rm.warn(`Unknown arrow type: ${r}`);const o="start"===e?"Start":"End";t.attr(`marker-${e}`,`url(${a}#${s}_${i}-${n}${o})`)},"addEdgeMarker"),ht={},gt={},ut=(0,c.K2)(async(t,e)=>{const r=(0,l.D7)(),a=(0,l._3)(r.flowchart.htmlLabels),s="markdown"===e.labelType?(0,n.GZ)(t,e.label,{style:e.labelStyle,useHtmlLabels:a,addSvgBackground:!0},r):await ot(e.label,e.labelStyle),i=t.insert("g").attr("class","edgeLabel"),o=i.insert("g").attr("class","label");o.node().appendChild(s);let c,d=s.getBBox();if(a){const t=s.children[0],e=(0,u.Ltv)(s);d=t.getBoundingClientRect(),e.attr("width",d.width),e.attr("height",d.height)}if(o.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),ht[e.id]=i,e.width=d.width,e.height=d.height,e.startLabelLeft){const r=await ot(e.startLabelLeft,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),gt[e.id]||(gt[e.id]={}),gt[e.id].startLeft=a,pt(c,e.startLabelLeft)}if(e.startLabelRight){const r=await ot(e.startLabelRight,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=a.node().appendChild(r),s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),gt[e.id]||(gt[e.id]={}),gt[e.id].startRight=a,pt(c,e.startLabelRight)}if(e.endLabelLeft){const r=await ot(e.endLabelLeft,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),a.node().appendChild(r),gt[e.id]||(gt[e.id]={}),gt[e.id].endLeft=a,pt(c,e.endLabelLeft)}if(e.endLabelRight){const r=await ot(e.endLabelRight,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),a.node().appendChild(r),gt[e.id]||(gt[e.id]={}),gt[e.id].endRight=a,pt(c,e.endLabelRight)}return s},"insertEdgeLabel");function pt(t,e){(0,l.D7)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,c.K2)(pt,"setTerminalWidth");var yt=(0,c.K2)((t,e)=>{c.Rm.debug("Moving label abc88 ",t.id,t.label,ht[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath;const a=(0,l.D7)(),{subGraphTitleTotalMargin:s}=(0,i.O)(a);if(t.label){const a=ht[t.id];let i=t.x,n=t.y;if(r){const a=o._K.calcLabelPosition(r);c.Rm.debug("Moving label "+t.label+" from (",i,",",n,") to (",a.x,",",a.y,") abc88"),e.updatedPath&&(i=a.x,n=a.y)}a.attr("transform",`translate(${i}, ${n+s/2})`)}if(t.startLabelLeft){const e=gt[t.id].startLeft;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.startLabelRight){const e=gt[t.id].startRight;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.endLabelLeft){const e=gt[t.id].endLeft;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.endLabelRight){const e=gt[t.id].endRight;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}},"positionEdgeLabel"),bt=(0,c.K2)((t,e)=>{const r=t.x,a=t.y,s=Math.abs(e.x-r),i=Math.abs(e.y-a),n=t.width/2,o=t.height/2;return s>=n||i>=o},"outsideNode"),xt=(0,c.K2)((t,e,r)=>{c.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const a=t.x,s=t.y,i=Math.abs(a-r.x),n=t.width/2;let o=r.xMath.abs(a-e.x)*l){let t=r.y{c.Rm.debug("abc88 cutPathAtIntersect",t,e);let r=[],a=t[0],s=!1;return t.forEach(t=>{if(bt(e,t)||s)a=t,s||r.push(t);else{const i=xt(e,a,t);let n=!1;r.forEach(t=>{n=n||t.x===i.x&&t.y===i.y}),r.some(t=>t.x===i.x&&t.y===i.y)||r.push(i),s=!0}}),r},"cutPathAtIntersect"),mt=(0,c.K2)(function(t,e,r,a,i,n,o){let d=r.points;c.Rm.debug("abc88 InsertEdge: edge=",r,"e=",e);let h=!1;const g=n.node(e.v);var p=n.node(e.w);p?.intersect&&g?.intersect&&(d=d.slice(1,r.points.length-1),d.unshift(g.intersect(d[0])),d.push(p.intersect(d[d.length-1]))),r.toCluster&&(c.Rm.debug("to cluster abc88",a[r.toCluster]),d=ft(r.points,a[r.toCluster].node),h=!0),r.fromCluster&&(c.Rm.debug("from cluster abc88",a[r.fromCluster]),d=ft(d.reverse(),a[r.fromCluster].node).reverse(),h=!0);const y=d.filter(t=>!Number.isNaN(t.y));let b=u.qrM;!r.curve||"graph"!==i&&"flowchart"!==i||(b=r.curve);const{x:x,y:f}=(0,s.RI)(r),m=(0,u.n8j)().x(x).y(f).curve(b);let w;switch(r.thickness){case"normal":w="edge-thickness-normal";break;case"thick":case"invisible":w="edge-thickness-thick";break;default:w=""}switch(r.pattern){case"solid":w+=" edge-pattern-solid";break;case"dotted":w+=" edge-pattern-dotted";break;case"dashed":w+=" edge-pattern-dashed"}const _=t.append("path").attr("d",m(y)).attr("id",r.id).attr("class"," "+w+(r.classes?" "+r.classes:"")).attr("style",r.style);let L="";((0,l.D7)().flowchart.arrowMarkerAbsolute||(0,l.D7)().state.arrowMarkerAbsolute)&&(L=(0,l.ID)(!0)),lt(_,r,L,o,i);let k={};return h&&(k.updatedPath=d),k.originalPath=r.points,k},"insertEdge"),wt=(0,c.K2)(t=>{const e=new Set;for(const r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r)}return e},"expandAndDeduplicateDirections"),_t=(0,c.K2)((t,e,r)=>{const a=wt(t),s=e.height+2*r.padding,i=s/2,n=e.width+2*i+r.padding,o=r.padding/2;return a.has("right")&&a.has("left")&&a.has("up")&&a.has("down")?[{x:0,y:0},{x:i,y:0},{x:n/2,y:2*o},{x:n-i,y:0},{x:n,y:0},{x:n,y:-s/3},{x:n+2*o,y:-s/2},{x:n,y:-2*s/3},{x:n,y:-s},{x:n-i,y:-s},{x:n/2,y:-s-2*o},{x:i,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*o,y:-s/2},{x:0,y:-s/3}]:a.has("right")&&a.has("left")&&a.has("up")?[{x:i,y:0},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}]:a.has("right")&&a.has("left")&&a.has("down")?[{x:0,y:0},{x:i,y:-s},{x:n-i,y:-s},{x:n,y:0}]:a.has("right")&&a.has("up")&&a.has("down")?[{x:0,y:0},{x:n,y:-i},{x:n,y:-s+i},{x:0,y:-s}]:a.has("left")&&a.has("up")&&a.has("down")?[{x:n,y:0},{x:0,y:-i},{x:0,y:-s+i},{x:n,y:-s}]:a.has("right")&&a.has("left")?[{x:i,y:0},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s},{x:0,y:-s/2}]:a.has("up")&&a.has("down")?[{x:n/2,y:0},{x:0,y:-o},{x:i,y:-o},{x:i,y:-s+o},{x:0,y:-s+o},{x:n/2,y:-s},{x:n,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o},{x:n,y:-o}]:a.has("right")&&a.has("up")?[{x:0,y:0},{x:n,y:-i},{x:0,y:-s}]:a.has("right")&&a.has("down")?[{x:0,y:0},{x:n,y:0},{x:0,y:-s}]:a.has("left")&&a.has("up")?[{x:n,y:0},{x:0,y:-i},{x:n,y:-s}]:a.has("left")&&a.has("down")?[{x:n,y:0},{x:0,y:0},{x:n,y:-s}]:a.has("right")?[{x:i,y:-o},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s+o}]:a.has("left")?[{x:i,y:0},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s},{x:0,y:-s/2}]:a.has("up")?[{x:i,y:-o},{x:i,y:-s+o},{x:0,y:-s+o},{x:n/2,y:-s},{x:n,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o}]:a.has("down")?[{x:n/2,y:0},{x:0,y:-o},{x:i,y:-o},{x:i,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o},{x:n,y:-o}]:[{x:0,y:0}]},"getArrowPoints");function Lt(t,e){return t.intersect(e)}(0,c.K2)(Lt,"intersectNode");var kt=Lt;function St(t,e,r,a){var s=t.x,i=t.y,n=s-a.x,o=i-a.y,l=Math.sqrt(e*e*o*o+r*r*n*n),c=Math.abs(e*r*n/l);a.x0}(0,c.K2)(Ct,"intersectLine"),(0,c.K2)(Rt,"sameSign");var Kt=Ct,$t=Nt;function Nt(t,e,r){var a=t.x,s=t.y,i=[],n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){n=Math.min(n,t.x),o=Math.min(o,t.y)}):(n=Math.min(n,e.x),o=Math.min(o,e.y));for(var l=a-t.width/2-n,c=s-t.height/2-o,d=0;d1&&i.sort(function(t,e){var a=t.x-r.x,s=t.y-r.y,i=Math.sqrt(a*a+s*s),n=e.x-r.x,o=e.y-r.y,l=Math.sqrt(n*n+o*o);return i{var r,a,s=t.x,i=t.y,n=e.x-s,o=e.y-i,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(n)*c?(o<0&&(c=-c),r=0===o?0:c*n/o,a=c):(n<0&&(l=-l),r=l,a=0===n?0:l*o/n),{x:s+r,y:i+a}},"intersectRect")},At=(0,c.K2)(async(t,e,r,a)=>{const s=(0,l.D7)();let i;const d=e.useHtmlLabels||(0,l._3)(s.flowchart.htmlLabels);i=r||"node default";const h=t.insert("g").attr("class",i).attr("id",e.domId||e.id),g=h.insert("g").attr("class","label").attr("style",e.labelStyle);let p;p=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0];const y=g.node();let b;b="markdown"===e.labelType?(0,n.GZ)(g,(0,l.jZ)((0,o.Sm)(p),s),{useHtmlLabels:d,width:e.width||s.flowchart.wrappingWidth,classes:"markdown-node-label"},s):y.appendChild(await ot((0,l.jZ)((0,o.Sm)(p),s),e.labelStyle,!1,a));let x=b.getBBox();const f=e.padding/2;if((0,l._3)(s.flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b),r=t.getElementsByTagName("img");if(r){const t=""===p.replace(/]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function a(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=s.fontSize?s.fontSize:window.getComputedStyle(document.body).fontSize,r=5,a=parseInt(t,10)*r+"px";e.style.minWidth=a,e.style.maxWidth=a}else e.style.width="100%";r(e)}(0,c.K2)(a,"setupImage"),setTimeout(()=>{e.complete&&a()}),e.addEventListener("error",a),e.addEventListener("load",a)})))}x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}return d?g.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"):g.attr("transform","translate(0, "+-x.height/2+")"),e.centerLabel&&g.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"),g.insert("rect",":first-child"),{shapeSvg:h,bbox:x,halfPadding:f,label:g}},"labelHelper"),It=(0,c.K2)((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");function Ot(t,e,r,a){return t.insert("polygon",":first-child").attr("points",a.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}(0,c.K2)(Ot,"insertPolygonShape");var Bt=(0,c.K2)(async(t,e)=>{e.useHtmlLabels||(0,l.D7)().flowchart.htmlLabels||(e.centerLabel=!0);const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes,!0);c.Rm.info("Classes = ",e.classes);const i=r.insert("rect",":first-child");return i.attr("rx",e.rx).attr("ry",e.ry).attr("x",-a.width/2-s).attr("y",-a.height/2-s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r},"note"),zt=(0,c.K2)(t=>t?" "+t:"","formatClass"),Mt=(0,c.K2)((t,e)=>`${e||"node default"}${zt(t.classes)} ${zt(t.class)}`,"getClassesFromNode"),Pt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding+(a.height+e.padding),i=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];c.Rm.info("Question main (Circle)");const n=Ot(r,s,s,i);return n.attr("style",e.style),It(e,n),e.intersect=function(t){return c.Rm.warn("Intersect called"),Tt.polygon(e,i,t)},r},"question"),Yt=(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return r.insert("polygon",":first-child").attr("points",a.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return Tt.circle(e,14,t)},r},"choice"),Ft=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.height+e.padding,i=s/4,n=a.width+2*i+e.padding,o=[{x:i,y:0},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}],l=Ot(r,n,s,o);return l.attr("style",e.style),It(e,l),e.intersect=function(t){return Tt.polygon(e,o,t)},r},"hexagon"),jt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,void 0,!0),s=a.height+2*e.padding,i=s/2,n=a.width+2*i+e.padding,o=_t(e.directions,a,e),l=Ot(r,n,s,o);return l.attr("style",e.style),It(e,l),e.intersect=function(t){return Tt.polygon(e,o,t)},r},"block_arrow"),Wt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-i/2,y:0},{x:s,y:0},{x:s,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}];return Ot(r,s,i,n).attr("style",e.style),e.width=s+i,e.height=i,e.intersect=function(t){return Tt.polygon(e,n,t)},r},"rect_left_inv_arrow"),Xt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-2*i/6,y:0},{x:s-i/6,y:0},{x:s+2*i/6,y:-i},{x:i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"lean_right"),Ht=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:2*i/6,y:0},{x:s+i/6,y:0},{x:s-2*i/6,y:-i},{x:-i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"lean_left"),Ut=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-2*i/6,y:0},{x:s+2*i/6,y:0},{x:s-i/6,y:-i},{x:i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"trapezoid"),Zt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:i/6,y:0},{x:s-i/6,y:0},{x:s+2*i/6,y:-i},{x:-2*i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"inv_trapezoid"),qt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:0,y:0},{x:s+i/2,y:0},{x:s,y:-i/2},{x:s+i/2,y:-i},{x:0,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"rect_right_inv_arrow"),Gt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=s/2,n=i/(2.5+s/50),o=a.height+n+e.padding,l="M 0,"+n+" a "+i+","+n+" 0,0,0 "+s+" 0 a "+i+","+n+" 0,0,0 "+-s+" 0 l 0,"+o+" a "+i+","+n+" 0,0,0 "+s+" 0 l 0,"+-o,c=r.attr("label-offset-y",n).insert("path",":first-child").attr("style",e.style).attr("d",l).attr("transform","translate("+-s/2+","+-(o/2+n)+")");return It(e,c),e.intersect=function(t){const r=Tt.rect(e,t),a=r.x-e.x;if(0!=i&&(Math.abs(a)e.height/2-n)){let s=n*n*(1-a*a/(i*i));0!=s&&(s=Math.sqrt(s)),s=n-s,t.y-e.y>0&&(s=-s),r.y+=s}return r},r},"cylinder"),Jt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes+" "+e.class,!0),i=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,l=e.positioned?-n/2:-a.width/2-s,d=e.positioned?-o/2:-a.height/2-s;if(i.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(i,e.props.borders,n,o),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r},"rect"),Vt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes,!0),i=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,l=e.positioned?-n/2:-a.width/2-s,d=e.positioned?-o/2:-a.height/2-s;if(i.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(i,e.props.borders,n,o),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r},"composite"),Qt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r}=await At(t,e,"label",!0);c.Rm.trace("Classes = ",e.class);const a=r.insert("rect",":first-child");if(a.attr("width",0).attr("height",0),r.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(a,e.props.borders,0,0),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return It(e,a),e.intersect=function(t){return Tt.rect(e,t)},r},"labelRect");function te(t,e,r,a){const s=[],i=(0,c.K2)(t=>{s.push(t,0)},"addBorder"),n=(0,c.K2)(t=>{s.push(0,t)},"skipBorder");e.includes("t")?(c.Rm.debug("add top border"),i(r)):n(r),e.includes("r")?(c.Rm.debug("add right border"),i(a)):n(a),e.includes("b")?(c.Rm.debug("add bottom border"),i(r)):n(r),e.includes("l")?(c.Rm.debug("add left border"),i(a)):n(a),t.attr("stroke-dasharray",s.join(" "))}(0,c.K2)(te,"applyNodePropertyBorders");var ee=(0,c.K2)(async(t,e)=>{let r;r=e.classes?"node "+e.classes:"node default";const a=t.insert("g").attr("class",r).attr("id",e.domId||e.id),s=a.insert("rect",":first-child"),i=a.insert("line"),n=a.insert("g").attr("class","label"),o=e.labelText.flat?e.labelText.flat():e.labelText;let d="";d="object"==typeof o?o[0]:o,c.Rm.info("Label text abc79",d,o,"object"==typeof o);const h=n.node().appendChild(await ot(d,e.labelStyle,!0,!0));let g={width:0,height:0};if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=h.children[0],e=(0,u.Ltv)(h);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}c.Rm.info("Text 2",o);const p=o.slice(1,o.length);let y=h.getBBox();const b=n.node().appendChild(await ot(p.join?p.join("
    "):p,e.labelStyle,!0,!0));if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}const x=e.padding/2;return(0,u.Ltv)(b).attr("transform","translate( "+(g.width>y.width?0:(y.width-g.width)/2)+", "+(y.height+x+5)+")"),(0,u.Ltv)(h).attr("transform","translate( "+(g.width{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.height+e.padding,i=a.width+s/4+e.padding,n=r.insert("rect",":first-child").attr("style",e.style).attr("rx",s/2).attr("ry",s/2).attr("x",-i/2).attr("y",-s/2).attr("width",i).attr("height",s);return It(e,n),e.intersect=function(t){return Tt.rect(e,t)},r},"stadium"),ae=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,Mt(e,void 0),!0),i=r.insert("circle",":first-child");return i.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),c.Rm.info("Circle main"),It(e,i),e.intersect=function(t){return c.Rm.info("Circle intersect",e,a.width/2+s,t),Tt.circle(e,a.width/2+s,t)},r},"circle"),se=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,Mt(e,void 0),!0),i=r.insert("g",":first-child"),n=i.insert("circle"),o=i.insert("circle");return i.attr("class",e.class),n.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s+5).attr("width",a.width+e.padding+10).attr("height",a.height+e.padding+10),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),c.Rm.info("DoubleCircle main"),It(e,n),e.intersect=function(t){return c.Rm.info("DoubleCircle intersect",e,a.width/2+s+5,t),Tt.circle(e,a.width/2+s+5,t)},r},"doublecircle"),ie=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:0,y:0},{x:s,y:0},{x:s,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:s+8,y:0},{x:s+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"subroutine"),ne=(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child");return a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),It(e,a),e.intersect=function(t){return Tt.circle(e,7,t)},r},"start"),oe=(0,c.K2)((t,e,r)=>{const a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let s=70,i=10;"LR"===r&&(s=10,i=70);const n=a.append("rect").attr("x",-1*s/2).attr("y",-1*i/2).attr("width",s).attr("height",i).attr("class","fork-join");return It(e,n),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Tt.rect(e,t)},a},"forkJoin"),le={rhombus:Pt,composite:Vt,question:Pt,rect:Jt,labelRect:Qt,rectWithTitle:ee,choice:Yt,circle:ae,doublecircle:se,stadium:re,hexagon:Ft,block_arrow:jt,rect_left_inv_arrow:Wt,lean_right:Xt,lean_left:Ht,trapezoid:Ut,inv_trapezoid:Zt,rect_right_inv_arrow:qt,cylinder:Gt,start:ne,end:(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child"),s=r.insert("circle",":first-child");return s.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),a.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),It(e,s),e.intersect=function(t){return Tt.circle(e,7,t)},r},"end"),note:Bt,subroutine:ie,fork:oe,join:oe,class_box:(0,c.K2)(async(t,e)=>{const r=e.padding/2;let a;a=e.classes?"node "+e.classes:"node default";const s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),i=s.insert("rect",":first-child"),n=s.insert("line"),o=s.insert("line");let c=0,d=4;const h=s.insert("g").attr("class","label");let g=0;const p=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xab"+e.classData.annotations[0]+"\xbb":"",b=h.node().appendChild(await ot(y,e.labelStyle,!0,!0));let x=b.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+4,c+=x.width);let f=e.classData.label;void 0!==e.classData.type&&""!==e.classData.type&&((0,l.D7)().flowchart.htmlLabels?f+="<"+e.classData.type+">":f+="<"+e.classData.type+">");const m=h.node().appendChild(await ot(f,e.labelStyle,!0,!0));(0,u.Ltv)(m).attr("class","classTitle");let w=m.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=m.children[0],e=(0,u.Ltv)(m);w=t.getBoundingClientRect(),e.attr("width",w.width),e.attr("height",w.height)}d+=w.height+4,w.width>c&&(c=w.width);const _=[];e.classData.members.forEach(async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.D7)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=h.node().appendChild(await ot(a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0));let i=s.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=s.children[0],e=(0,u.Ltv)(s);i=t.getBoundingClientRect(),e.attr("width",i.width),e.attr("height",i.height)}i.width>c&&(c=i.width),d+=i.height+4,_.push(s)}),d+=8;const L=[];if(e.classData.methods.forEach(async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.D7)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=h.node().appendChild(await ot(a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0));let i=s.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=s.children[0],e=(0,u.Ltv)(s);i=t.getBoundingClientRect(),e.attr("width",i.width),e.attr("height",i.height)}i.width>c&&(c=i.width),d+=i.height+4,L.push(s)}),d+=8,p){let t=(c-x.width)/2;(0,u.Ltv)(b).attr("transform","translate( "+(-1*c/2+t)+", "+-1*d/2+")"),g=x.height+4}let k=(c-w.width)/2;return(0,u.Ltv)(m).attr("transform","translate( "+(-1*c/2+k)+", "+(-1*d/2+g)+")"),g+=w.height+4,n.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+g).attr("y2",-d/2-r+8+g),g+=8,_.forEach(t=>{(0,u.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+g+4)+")");const e=t?.getBBox();g+=(e?.height??0)+4}),g+=8,o.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+g).attr("y2",-d/2-r+8+g),g+=8,L.forEach(t=>{(0,u.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+g)+")");const e=t?.getBBox();g+=(e?.height??0)+4}),i.attr("style",e.style).attr("class","outer title-state").attr("x",-c/2-r).attr("y",-d/2-r).attr("width",c+e.padding).attr("height",d+e.padding),It(e,i),e.intersect=function(t){return Tt.rect(e,t)},s},"class_box")},ce={},de=(0,c.K2)(async(t,e,r)=>{let a,s;if(e.link){let i;"sandbox"===(0,l.D7)().securityLevel?i="_top":e.linkTarget&&(i=e.linkTarget||"_blank"),a=t.insert("svg:a").attr("xlink:href",e.link).attr("target",i),s=await le[e.shape](a,e,r)}else s=await le[e.shape](t,e,r),a=s;return e.tooltip&&s.attr("title",e.tooltip),e.class&&s.attr("class","node default "+e.class),ce[e.id]=a,e.haveCallback&&ce[e.id].attr("class",ce[e.id].attr("class")+" clickable"),a},"insertNode"),he=(0,c.K2)(t=>{const e=ce[t.id];c.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode");function ge(t,e,r=!1){const a=t;let s="default";(a?.classes?.length||0)>0&&(s=(a?.classes??[]).join(" ")),s+=" flowchart-label";let i,n=0,c="";switch(a.type){case"round":n=5,c="rect";break;case"composite":n=0,c="composite",i=0;break;case"square":case"group":default:c="rect";break;case"diamond":c="question";break;case"hexagon":c="hexagon";break;case"block_arrow":c="block_arrow";break;case"odd":case"rect_left_inv_arrow":c="rect_left_inv_arrow";break;case"lean_right":c="lean_right";break;case"lean_left":c="lean_left";break;case"trapezoid":c="trapezoid";break;case"inv_trapezoid":c="inv_trapezoid";break;case"circle":c="circle";break;case"ellipse":c="ellipse";break;case"stadium":c="stadium";break;case"subroutine":c="subroutine";break;case"cylinder":c="cylinder";break;case"doublecircle":c="doublecircle"}const d=(0,o.sM)(a?.styles??[]),h=a.label,g=a.size??{width:0,height:0,x:0,y:0};return{labelStyle:d.labelStyle,shape:c,labelText:h,rx:n,ry:n,class:s,style:d.style,id:a.id,directions:a.directions,width:g.width,height:g.height,x:g.x,y:g.y,positioned:r,intersect:void 0,type:a.type,padding:i??(0,l.zj)()?.block?.padding??0}}async function ue(t,e,r){const a=ge(e,0,!1);if("group"===a.type)return;const s=(0,l.zj)(),i=await de(t,a,{config:s}),n=i.node().getBBox(),o=r.getBlock(a.id);o.size={width:n.width,height:n.height,x:0,y:0,node:i},r.setBlock(o),i.remove()}async function pe(t,e,r){const a=ge(e,0,!0);if("space"!==r.getBlock(a.id).type){const r=(0,l.zj)();await de(t,a,{config:r}),e.intersect=a?.intersect,he(a)}}async function ye(t,e,r,a){for(const s of e)await a(t,s,r),s.children&&await ye(t,s.children,r,a)}async function be(t,e,r){await ye(t,e,r,ue)}async function xe(t,e,r){await ye(t,e,r,pe)}async function fe(t,e,r,a,s){const i=new p.T({multigraph:!0,compound:!0});i.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const n of r)n.size&&i.setNode(n.id,{width:n.size.width,height:n.size.height,intersect:n.intersect});for(const n of e)if(n.start&&n.end){const e=a.getBlock(n.start),r=a.getBlock(n.end);if(e?.size&&r?.size){const a=e.size,o=r.size,l=[{x:a.x,y:a.y},{x:a.x+(o.x-a.x)/2,y:a.y+(o.y-a.y)/2},{x:o.x,y:o.y}];mt(t,{v:n.start,w:n.end,name:n.id},{...n,arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",i,s),n.label&&(await ut(t,{...n,label:n.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),yt({...n,x:l[1].x,y:l[1].y},{originalPath:l}))}}}(0,c.K2)(ge,"getNodeFromBlock"),(0,c.K2)(ue,"calculateBlockSize"),(0,c.K2)(pe,"insertBlockPositioned"),(0,c.K2)(ye,"performOperations"),(0,c.K2)(be,"calculateBlockSizes"),(0,c.K2)(xe,"insertBlocks"),(0,c.K2)(fe,"insertEdges");var me=(0,c.K2)(function(t,e){return e.db.getClasses()},"getClasses"),we={parser:b,db:H,renderer:{draw:(0,c.K2)(async function(t,e,r,a){const{securityLevel:s,block:i}=(0,l.zj)(),n=a.db;let o;"sandbox"===s&&(o=(0,u.Ltv)("#i"+e));const d="sandbox"===s?(0,u.Ltv)(o.nodes()[0].contentDocument.body):(0,u.Ltv)("body"),h="sandbox"===s?d.select(`[id="${e}"]`):(0,u.Ltv)(`[id="${e}"]`);J(h,["point","circle","cross"],a.type,e);const g=n.getBlocks(),p=n.getBlocksFlat(),y=n.getEdges(),b=h.insert("g").attr("class","block");await be(b,g,n);const x=st(n);if(await xe(b,g,n),await fe(b,y,p,n,e),x){const t=x,e=Math.max(1,Math.round(t.width/t.height*.125)),r=t.height+e+10,a=t.width+10,{useMaxWidth:s}=i;(0,l.a$)(h,r,a,!!s),c.Rm.debug("Here Bounds",x,t),h.attr("viewBox",`${t.x-5} ${t.y-5} ${t.width+10} ${t.height+10}`)}},"draw"),getClasses:me},styles:Z}},7981:(t,e,r)=>{r.d(e,{T:()=>f});var a=r(9142),s=r(9610),i=r(7422),n=r(4092),o=r(6401),l=r(8058),c=r(9592),d=r(1207),h=r(4326),g=r(9902),u=r(3533);const p=(0,h.A)(function(t){return(0,g.A)((0,d.A)(t,1,u.A,!0))});var y=r(8207),b=r(9463),x="\0";class f{constructor(t={}){this._isDirected=!Object.prototype.hasOwnProperty.call(t,"directed")||t.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(t,"multigraph")&&t.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=a.A(void 0),this._defaultEdgeLabelFn=a.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[x]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return s.A(t)||(t=a.A(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return i.A(this._nodes)}sources(){var t=this;return n.A(this.nodes(),function(e){return o.A(t._in[e])})}sinks(){var t=this;return n.A(this.nodes(),function(e){return o.A(t._out[e])})}setNodes(t,e){var r=arguments,a=this;return l.A(t,function(t){r.length>1?a.setNode(t,e):a.setNode(t)}),this}setNode(t,e){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=x,this._children[t]={},this._children[x][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var e=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],l.A(this.children(t),t=>{this.setParent(t)}),delete this._children[t]),l.A(i.A(this._in[t]),e),delete this._in[t],delete this._preds[t],l.A(i.A(this._out[t]),e),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(c.A(e))e=x;else{for(var r=e+="";!c.A(r);r=this.parent(r))if(r===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==x)return e}}children(t){if(c.A(t)&&(t=x),this._isCompound){var e=this._children[t];if(e)return i.A(e)}else{if(t===x)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return i.A(e)}successors(t){var e=this._sucs[t];if(e)return i.A(e)}neighbors(t){var e=this.predecessors(t);if(e)return p(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var r=this;l.A(this._nodes,function(r,a){t(a)&&e.setNode(a,r)}),l.A(this._edgeObjs,function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,r.edge(t))});var a={};function s(t){var i=r.parent(t);return void 0===i||e.hasNode(i)?(a[t]=i,i):i in a?a[i]:s(i)}return this._isCompound&&l.A(e.nodes(),function(t){e.setParent(t,s(t))}),e}setDefaultEdgeLabel(t){return s.A(t)||(t=a.A(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return y.A(this._edgeObjs)}setPath(t,e){var r=this,a=arguments;return b.A(t,function(t,s){return a.length>1?r.setEdge(t,s,e):r.setEdge(t,s),s}),this}setEdge(){var t,e,r,a,s=!1,i=arguments[0];"object"==typeof i&&null!==i&&"v"in i?(t=i.v,e=i.w,r=i.name,2===arguments.length&&(a=arguments[1],s=!0)):(t=i,e=arguments[1],r=arguments[3],arguments.length>2&&(a=arguments[2],s=!0)),t=""+t,e=""+e,c.A(r)||(r=""+r);var n=_(this._isDirected,t,e,r);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,n))return s&&(this._edgeLabels[n]=a),this;if(!c.A(r)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[n]=s?a:this._defaultEdgeLabelFn(t,e,r);var o=function(t,e,r,a){var s=""+e,i=""+r;if(!t&&s>i){var n=s;s=i,i=n}var o={v:s,w:i};a&&(o.name=a);return o}(this._isDirected,t,e,r);return t=o.v,e=o.w,Object.freeze(o),this._edgeObjs[n]=o,m(this._preds[e],t),m(this._sucs[t],e),this._in[e][n]=o,this._out[t][n]=o,this._edgeCount++,this}edge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r);return this._edgeLabels[a]}hasEdge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r);return Object.prototype.hasOwnProperty.call(this._edgeLabels,a)}removeEdge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r),s=this._edgeObjs[a];return s&&(t=s.v,e=s.w,delete this._edgeLabels[a],delete this._edgeObjs[a],w(this._preds[e],t),w(this._sucs[t],e),delete this._in[e][a],delete this._out[t][a],this._edgeCount--),this}inEdges(t,e){var r=this._in[t];if(r){var a=y.A(r);return e?n.A(a,function(t){return t.v===e}):a}}outEdges(t,e){var r=this._out[t];if(r){var a=y.A(r);return e?n.A(a,function(t){return t.w===e}):a}}nodeEdges(t,e){var r=this.inEdges(t,e);if(r)return r.concat(this.outEdges(t,e))}}function m(t,e){t[e]?t[e]++:t[e]=1}function w(t,e){--t[e]||delete t[e]}function _(t,e,r,a){var s=""+e,i=""+r;if(!t&&s>i){var n=s;s=i,i=n}return s+"\x01"+i+"\x01"+(c.A(a)?"\0":a)}function L(t,e){return _(t,e.v,e.w,e.name)}f.prototype._nodeCount=0,f.prototype._edgeCount=0}}]); \ No newline at end of file diff --git a/developer/assets/js/5e95c892.b6e0cd5a.js b/developer/assets/js/5e95c892.b6e0cd5a.js new file mode 100644 index 0000000..29e390a --- /dev/null +++ b/developer/assets/js/5e95c892.b6e0cd5a.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[9647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>t});r(6540);var l=r(4164),a=r(7559),c=r(5500),o=r(2831),d=r(4042),p=r(4848);function t(e){return(0,p.jsx)(c.e3,{className:(0,l.A)(a.G.wrapper.docsPages),children:(0,p.jsx)(d.A,{children:(0,o.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/developer/assets/js/617.f69cac95.js b/developer/assets/js/617.f69cac95.js new file mode 100644 index 0000000..237ade2 --- /dev/null +++ b/developer/assets/js/617.f69cac95.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[617],{617:(e,s,l)=>{l.d(s,{createPieServices:()=>c.f});var c=l(9150);l(7960)}}]); \ No newline at end of file diff --git a/developer/assets/js/6241.6315e1bc.js b/developer/assets/js/6241.6315e1bc.js new file mode 100644 index 0000000..376a578 --- /dev/null +++ b/developer/assets/js/6241.6315e1bc.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[6241],{2501:(t,e,n)=>{n.d(e,{o:()=>i});var i=(0,n(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},6241:(t,e,n)=>{n.d(e,{diagram:()=>I});var i=n(3590),s=n(2501),r=n(3981),o=n(5894),a=(n(3245),n(2387),n(92),n(3226),n(7633)),c=n(797),l=n(3219),h=n(8041),g=n(5263),u=function(){var t=(0,c.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],a=[1,19],l=[6,7,8],h=[1,26],g=[1,24],u=[1,25],d=[6,7,11],p=[1,31],y=[6,7,11,24],f=[1,6,13,16,17,20,23],m=[1,35],b=[1,36],_=[1,6,7,11,13,16,17,20,23],k=[1,38],E={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:(0,c.K2)(function(t,e,n,i,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",r[a-1].id),i.addNode(r[a-2].length,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 16:i.getLogger().info("Node: ",r[a].id),i.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 17:i.getLogger().trace("Icon: ",r[a]),i.decorateNode({icon:r[a]});break;case 18:case 23:i.decorateNode({class:r[a]});break;case 19:i.getLogger().trace("SPACELIST");break;case 20:i.getLogger().trace("Node: ",r[a-1].id),i.addNode(0,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 21:i.getLogger().trace("Node: ",r[a].id),i.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 22:i.decorateNode({icon:r[a]});break;case 27:i.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 28:this.$={id:r[a],descr:r[a],type:0};break;case 29:i.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 30:this.$=r[a-1]+r[a];break;case 31:this.$=r[a]}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:n,9:22,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:h,7:g,10:23,11:u},t(d,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:o,23:a}),t(d,[2,19]),t(d,[2,21],{15:30,24:p}),t(d,[2,22]),t(d,[2,23]),t(y,[2,25]),t(y,[2,26]),t(y,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:g,10:34,11:u},{1:[2,7],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(f,[2,14],{7:m,11:b}),t(_,[2,8]),t(_,[2,9]),t(_,[2,10]),t(d,[2,16],{15:37,24:p}),t(d,[2,17]),t(d,[2,18]),t(d,[2,20],{24:k}),t(y,[2,31]),{21:[1,39]},{22:[1,40]},t(f,[2,13],{7:m,11:b}),t(_,[2,11]),t(_,[2,12]),t(d,[2,15],{24:k}),t(y,[2,30]),{22:[1,41]},t(y,[2,27]),t(y,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,a="",l=0,h=0,g=0,u=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var f=d.yylloc;r.push(f);var m=d.options&&d.options.ranges;function b(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,c.K2)(b,"lex");for(var _,k,E,S,N,x,D,L,I,v={};;){if(E=n[n.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==_&&(_=b()),S=o[E]&&o[E][_]),void 0===S||!S.length||!S[0]){var C="";for(x in I=[],o[E])this.terminals_[x]&&x>2&&I.push("'"+this.terminals_[x]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[_]||_,line:d.yylineno,loc:f,expected:I})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(S[0]){case 1:n.push(_),s.push(d.yytext),r.push(d.yylloc),n.push(S[1]),_=null,k?(_=k,k=null):(h=d.yyleng,a=d.yytext,l=d.yylineno,f=d.yylloc,g>0&&g--);break;case 2:if(D=this.productions_[S[1]][1],v.$=s[s.length-D],v._$={first_line:r[r.length-(D||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(D||1)].first_column,last_column:r[r.length-1].last_column},m&&(v._$.range=[r[r.length-(D||1)].range[0],r[r.length-1].range[1]]),void 0!==(N=this.performAction.apply(v,[a,h,l,p.yy,S[1],s,r].concat(u))))return N;D&&(n=n.slice(0,-1*D*2),s=s.slice(0,-1*D),r=r.slice(0,-1*D)),n.push(this.productions_[S[1]][0]),s.push(v.$),r.push(v._$),L=o[n[n.length-2]][n[n.length-1]],n.push(L);break;case 3:return!0}}return!0},"parse")},S=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,n,i){switch(n){case 0:return this.pushState("shapeData"),e.yytext="",24;case 1:return this.pushState("shapeDataStr"),24;case 2:return this.popState(),24;case 3:const n=/\n\s*/g;return e.yytext=e.yytext.replace(n,"
    "),24;case 4:return 24;case 5:case 10:case 29:case 32:this.popState();break;case 6:return t.getLogger().trace("Found comment",e.yytext),6;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;case 11:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return t.getLogger().trace("SPACELINE"),6;case 13:return 7;case 14:return 16;case 15:t.getLogger().trace("end icon"),this.popState();break;case 16:return t.getLogger().trace("Exploding node"),this.begin("NODE"),20;case 17:return t.getLogger().trace("Cloud"),this.begin("NODE"),20;case 18:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;case 19:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;case 20:case 21:case 22:case 23:return this.begin("NODE"),20;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 30:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 33:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 34:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 35:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 36:case 39:case 40:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 37:case 38:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 41:case 42:return t.getLogger().trace("Long description:",e.yytext),21}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}}}();function N(){this.yy={}}return E.lexer=S,(0,c.K2)(N,"Parser"),N.prototype=E,E.Parser=N,new N}();u.parser=u;var d=u,p=[],y=[],f=0,m={},b=(0,c.K2)(()=>{p=[],y=[],f=0,m={}},"clear"),_=(0,c.K2)(t=>{if(0===p.length)return null;const e=p[0].level;let n=null;for(let i=p.length-1;i>=0;i--)if(p[i].level!==e||n||(n=p[i]),p[i].levelt.parentId===i.id);for(const r of s){const e={id:r.id,parentId:i.id,label:(0,a.jZ)(r.label??"",n),isGroup:!1,ticket:r?.ticket,priority:r?.priority,assigned:r?.assigned,icon:r?.icon,shape:"kanbanItem",level:r.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(e)}}return{nodes:t,edges:[],other:{},config:(0,a.D7)()}},"getData"),S=(0,c.K2)((t,e,n,i,s)=>{const o=(0,a.D7)();let c=o.mindmap?.padding??a.UI.mindmap.padding;switch(i){case N.ROUNDED_RECT:case N.RECT:case N.HEXAGON:c*=2}const l={id:(0,a.jZ)(e,o)||"kbn"+f++,level:t,label:(0,a.jZ)(n,o),width:o.mindmap?.maxNodeWidth??a.UI.mindmap.maxNodeWidth,padding:c,isGroup:!1};if(void 0!==s){let t;t=s.includes("\n")?s+"\n":"{\n"+s+"\n}";const e=(0,r.H)(t,{schema:r.r});if(e.shape&&(e.shape!==e.shape.toLowerCase()||e.shape.includes("_")))throw new Error(`No such shape: ${e.shape}. Shape names should be lowercase.`);e?.shape&&"kanbanItem"===e.shape&&(l.shape=e?.shape),e?.label&&(l.label=e?.label),e?.icon&&(l.icon=e?.icon.toString()),e?.assigned&&(l.assigned=e?.assigned.toString()),e?.ticket&&(l.ticket=e?.ticket.toString()),e?.priority&&(l.priority=e?.priority)}const h=_(t);h?l.parentId=h.id||"kbn"+f++:y.push(l),p.push(l)},"addNode"),N={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},x={clear:b,addNode:S,getSections:k,getData:E,nodeType:N,getType:(0,c.K2)((t,e)=>{switch(c.Rm.debug("In get type",t,e),t){case"[":return N.RECT;case"(":return")"===e?N.ROUNDED_RECT:N.CLOUD;case"((":return N.CIRCLE;case")":return N.CLOUD;case"))":return N.BANG;case"{{":return N.HEXAGON;default:return N.DEFAULT}},"getType"),setElementForId:(0,c.K2)((t,e)=>{m[t]=e},"setElementForId"),decorateNode:(0,c.K2)(t=>{if(!t)return;const e=(0,a.D7)(),n=p[p.length-1];t.icon&&(n.icon=(0,a.jZ)(t.icon,e)),t.class&&(n.cssClasses=(0,a.jZ)(t.class,e))},"decorateNode"),type2Str:(0,c.K2)(t=>{switch(t){case N.DEFAULT:return"no-border";case N.RECT:return"rect";case N.ROUNDED_RECT:return"rounded-rect";case N.CIRCLE:return"circle";case N.CLOUD:return"cloud";case N.BANG:return"bang";case N.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),getLogger:(0,c.K2)(()=>c.Rm,"getLogger"),getElementById:(0,c.K2)(t=>m[t],"getElementById")},D={draw:(0,c.K2)(async(t,e,n,s)=>{c.Rm.debug("Rendering kanban diagram\n"+t);const r=s.db.getData(),l=(0,a.D7)();l.htmlLabels=!1;const h=(0,i.D)(e),g=h.append("g");g.attr("class","sections");const u=h.append("g");u.attr("class","items");const d=r.nodes.filter(t=>t.isGroup);let p=0;const y=[];let f=25;for(const i of d){const t=l?.kanban?.sectionWidth||200;p+=1,i.x=t*p+10*(p-1)/2,i.width=t,i.y=0,i.height=3*t,i.rx=5,i.ry=5,i.cssClasses=i.cssClasses+" section-"+p;const e=await(0,o.U)(g,i);f=Math.max(f,e?.labelBBox?.height),y.push(e)}let m=0;for(const i of d){const t=y[m];m+=1;const e=l?.kanban?.sectionWidth||200,n=3*-e/2+f;let s=n;const a=r.nodes.filter(t=>t.parentId===i.id);for(const r of a){if(r.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");r.x=i.x,r.width=e-15;const t=(await(0,o.on)(u,r,{config:l})).node().getBBox();r.y=s+t.height/2,await(0,o.U_)(r),s=r.y+t.height/2+5}const c=t.cluster.select("rect"),h=Math.max(s-n+30,50)+(f-25);c.attr("height",h)}(0,a.ot)(void 0,h,l.mindmap?.padding??a.UI.kanban.padding,l.mindmap?.useMaxWidth??a.UI.kanban.useMaxWidth)},"draw")},L=(0,c.K2)(t=>{let e="";for(let i=0;it.darkMode?(0,g.A)(e,n):(0,h.A)(e,n),"adjuster");for(let i=0;i`\n .edge {\n stroke-width: 3;\n }\n ${L(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .cluster-label, .label {\n color: ${t.textColor};\n fill: ${t.textColor};\n }\n .kanban-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n ${(0,s.o)()}\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/developer/assets/js/6319.16b4da75.js b/developer/assets/js/6319.16b4da75.js new file mode 100644 index 0000000..5591976 --- /dev/null +++ b/developer/assets/js/6319.16b4da75.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[6319],{2938:(t,r,e)=>{e.d(r,{m:()=>o});var n=e(797),o=class{constructor(t){this.init=t,this.records=this.init()}static{(0,n.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},5871:(t,r,e)=>{function n(t,r){t.accDescr&&r.setAccDescription?.(t.accDescr),t.accTitle&&r.setAccTitle?.(t.accTitle),t.title&&r.setDiagramTitle?.(t.title)}e.d(r,{S:()=>n}),(0,e(797).K2)(n,"populateCommonDb")},6319:(t,r,e)=>{e.d(r,{diagram:()=>ut});var n=e(5871),o=e(2938),a=e(3226),c=e(7633),s=e(797),i=e(8731),h=e(451),d={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},m=c.UI.gitGraph,$=(0,s.K2)(()=>(0,a.$t)({...m,...(0,c.zj)().gitGraph}),"getConfig"),l=new o.m(()=>{const t=$(),r=t.mainBranchName,e=t.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:e}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}});function g(){return(0,a.yT)({length:7})}function y(t,r){const e=Object.create(null);return t.reduce((t,n)=>{const o=r(n);return e[o]||(e[o]=!0,t.push(n)),t},[])}(0,s.K2)(g,"getID"),(0,s.K2)(y,"uniqBy");var p=(0,s.K2)(function(t){l.records.direction=t},"setDirection"),x=(0,s.K2)(function(t){s.Rm.debug("options str",t),t=t?.trim(),t=t||"{}";try{l.records.options=JSON.parse(t)}catch(r){s.Rm.error("error while parsing gitGraph options",r.message)}},"setOptions"),f=(0,s.K2)(function(){return l.records.options},"getOptions"),u=(0,s.K2)(function(t){let r=t.msg,e=t.id;const n=t.type;let o=t.tags;s.Rm.info("commit",r,e,n,o),s.Rm.debug("Entering commit:",r,e,n,o);const a=$();e=c.Y2.sanitizeText(e,a),r=c.Y2.sanitizeText(r,a),o=o?.map(t=>c.Y2.sanitizeText(t,a));const i={id:e||l.records.seq+"-"+g(),message:r,seq:l.records.seq++,type:n??d.NORMAL,tags:o??[],parents:null==l.records.head?[]:[l.records.head.id],branch:l.records.currBranch};l.records.head=i,s.Rm.info("main branch",a.mainBranchName),l.records.commits.has(i.id)&&s.Rm.warn(`Commit ID ${i.id} already exists`),l.records.commits.set(i.id,i),l.records.branches.set(l.records.currBranch,i.id),s.Rm.debug("in pushCommit "+i.id)},"commit"),b=(0,s.K2)(function(t){let r=t.name;const e=t.order;if(r=c.Y2.sanitizeText(r,$()),l.records.branches.has(r))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${r}")`);l.records.branches.set(r,null!=l.records.head?l.records.head.id:null),l.records.branchConfig.set(r,{name:r,order:e}),E(r),s.Rm.debug("in createBranch")},"branch"),w=(0,s.K2)(t=>{let r=t.branch,e=t.id;const n=t.type,o=t.tags,a=$();r=c.Y2.sanitizeText(r,a),e&&(e=c.Y2.sanitizeText(e,a));const i=l.records.branches.get(l.records.currBranch),h=l.records.branches.get(r),m=i?l.records.commits.get(i):void 0,y=h?l.records.commits.get(h):void 0;if(m&&y&&m.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if(l.records.currBranch===r){const t=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(void 0===m||!m){const t=new Error(`Incorrect usage of "merge". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},t}if(!l.records.branches.has(r)){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},t}if(void 0===y||!y){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},t}if(m===y){const t=new Error('Incorrect usage of "merge". Both branches have same head');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(e&&l.records.commits.has(e)){const t=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom id");throw t.hash={text:`merge ${r} ${e} ${n} ${o?.join(" ")}`,token:`merge ${r} ${e} ${n} ${o?.join(" ")}`,expected:[`merge ${r} ${e}_UNIQUE ${n} ${o?.join(" ")}`]},t}const p=h||"",x={id:e||`${l.records.seq}-${g()}`,message:`merged branch ${r} into ${l.records.currBranch}`,seq:l.records.seq++,parents:null==l.records.head?[]:[l.records.head.id,p],branch:l.records.currBranch,type:d.MERGE,customType:n,customId:!!e,tags:o??[]};l.records.head=x,l.records.commits.set(x.id,x),l.records.branches.set(l.records.currBranch,x.id),s.Rm.debug(l.records.branches),s.Rm.debug("in mergeBranch")},"merge"),B=(0,s.K2)(function(t){let r=t.id,e=t.targetId,n=t.tags,o=t.parent;s.Rm.debug("Entering cherryPick:",r,e,n);const a=$();if(r=c.Y2.sanitizeText(r,a),e=c.Y2.sanitizeText(e,a),n=n?.map(t=>c.Y2.sanitizeText(t,a)),o=c.Y2.sanitizeText(o,a),!r||!l.records.commits.has(r)){const t=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const i=l.records.commits.get(r);if(void 0===i||!i)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(o&&(!Array.isArray(i.parents)||!i.parents.includes(o))){throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.")}const h=i.branch;if(i.type===d.MERGE&&!o){throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.")}if(!e||!l.records.commits.has(e)){if(h===l.records.currBranch){const t=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const t=l.records.branches.get(l.records.currBranch);if(void 0===t||!t){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const a=l.records.commits.get(t);if(void 0===a||!a){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const c={id:l.records.seq+"-"+g(),message:`cherry-picked ${i?.message} into ${l.records.currBranch}`,seq:l.records.seq++,parents:null==l.records.head?[]:[l.records.head.id,i.id],branch:l.records.currBranch,type:d.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${i.id}${i.type===d.MERGE?`|parent:${o}`:""}`]};l.records.head=c,l.records.commits.set(c.id,c),l.records.branches.set(l.records.currBranch,c.id),s.Rm.debug(l.records.branches),s.Rm.debug("in cherryPick")}},"cherryPick"),E=(0,s.K2)(function(t){if(t=c.Y2.sanitizeText(t,$()),!l.records.branches.has(t)){const r=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw r.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},r}{l.records.currBranch=t;const r=l.records.branches.get(l.records.currBranch);l.records.head=void 0!==r&&r?l.records.commits.get(r)??null:null}},"checkout");function k(t,r,e){const n=t.indexOf(r);-1===n?t.push(e):t.splice(n,1,e)}function C(t){const r=t.reduce((t,r)=>t.seq>r.seq?t:r,t[0]);let e="";t.forEach(function(t){e+=t===r?"\t*":"\t|"});const n=[e,r.id,r.seq];for(const o in l.records.branches)l.records.branches.get(o)===r.id&&n.push(o);if(s.Rm.debug(n.join(" ")),r.parents&&2==r.parents.length&&r.parents[0]&&r.parents[1]){const e=l.records.commits.get(r.parents[0]);k(t,r,e),r.parents[1]&&t.push(l.records.commits.get(r.parents[1]))}else{if(0==r.parents.length)return;if(r.parents[0]){const e=l.records.commits.get(r.parents[0]);k(t,r,e)}}C(t=y(t,t=>t.id))}(0,s.K2)(k,"upsert"),(0,s.K2)(C,"prettyPrintCommitHistory");var T=(0,s.K2)(function(){s.Rm.debug(l.records.commits);C([R()[0]])},"prettyPrint"),L=(0,s.K2)(function(){l.reset(),(0,c.IU)()},"clear"),K=(0,s.K2)(function(){return[...l.records.branchConfig.values()].map((t,r)=>null!==t.order&&void 0!==t.order?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),M=(0,s.K2)(function(){return l.records.branches},"getBranches"),v=(0,s.K2)(function(){return l.records.commits},"getCommits"),R=(0,s.K2)(function(){const t=[...l.records.commits.values()];return t.forEach(function(t){s.Rm.debug(t.id)}),t.sort((t,r)=>t.seq-r.seq),t},"getCommitsArray"),P={commitType:d,getConfig:$,setDirection:p,setOptions:x,getOptions:f,commit:u,branch:b,merge:w,cherryPick:B,checkout:E,prettyPrint:T,clear:L,getBranchesAsObjArray:K,getBranches:M,getCommits:v,getCommitsArray:R,getCurrentBranch:(0,s.K2)(function(){return l.records.currBranch},"getCurrentBranch"),getDirection:(0,s.K2)(function(){return l.records.direction},"getDirection"),getHead:(0,s.K2)(function(){return l.records.head},"getHead"),setAccTitle:c.SV,getAccTitle:c.iN,getAccDescription:c.m7,setAccDescription:c.EI,setDiagramTitle:c.ke,getDiagramTitle:c.ab},I=(0,s.K2)((t,r)=>{(0,n.S)(t,r),t.dir&&r.setDirection(t.dir);for(const e of t.statements)A(e,r)},"populate"),A=(0,s.K2)((t,r)=>{const e={Commit:(0,s.K2)(t=>r.commit(G(t)),"Commit"),Branch:(0,s.K2)(t=>r.branch(O(t)),"Branch"),Merge:(0,s.K2)(t=>r.merge(q(t)),"Merge"),Checkout:(0,s.K2)(t=>r.checkout(z(t)),"Checkout"),CherryPicking:(0,s.K2)(t=>r.cherryPick(D(t)),"CherryPicking")}[t.$type];e?e(t):s.Rm.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),G=(0,s.K2)(t=>({id:t.id,msg:t.message??"",type:void 0!==t.type?d[t.type]:d.NORMAL,tags:t.tags??void 0}),"parseCommit"),O=(0,s.K2)(t=>({name:t.name,order:t.order??0}),"parseBranch"),q=(0,s.K2)(t=>({branch:t.branch,id:t.id??"",type:void 0!==t.type?d[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),z=(0,s.K2)(t=>t.branch,"parseCheckout"),D=(0,s.K2)(t=>({id:t.id,targetId:"",tags:0===t.tags?.length?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),H={parse:(0,s.K2)(async t=>{const r=await(0,i.qg)("gitGraph",t);s.Rm.debug(r),I(r,P)},"parse")};var S=(0,c.D7)(),Y=S?.gitGraph,N=10,j=40,W=new Map,_=new Map,F=new Map,U=[],V=0,J="LR",Q=(0,s.K2)(()=>{W.clear(),_.clear(),F.clear(),V=0,U=[],J="LR"},"clear"),X=(0,s.K2)(t=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return("string"==typeof t?t.split(/\\n|\n|/gi):t).forEach(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","0"),e.setAttribute("class","row"),e.textContent=t.trim(),r.appendChild(e)}),r},"drawText"),Z=(0,s.K2)(t=>{let r,e,n;return"BT"===J?(e=(0,s.K2)((t,r)=>t<=r,"comparisonFunc"),n=1/0):(e=(0,s.K2)((t,r)=>t>=r,"comparisonFunc"),n=0),t.forEach(t=>{const o="TB"===J||"BT"==J?_.get(t)?.y:_.get(t)?.x;void 0!==o&&e(o,n)&&(r=t,n=o)}),r},"findClosestParent"),tt=(0,s.K2)(t=>{let r="",e=1/0;return t.forEach(t=>{const n=_.get(t).y;n<=e&&(r=t,e=n)}),r||void 0},"findClosestParentBT"),rt=(0,s.K2)((t,r,e)=>{let n=e,o=e;const a=[];t.forEach(t=>{const e=r.get(t);if(!e)throw new Error(`Commit not found for key ${t}`);e.parents.length?(n=nt(e),o=Math.max(n,o)):a.push(e),ot(e,n)}),n=o,a.forEach(t=>{at(t,n,e)}),t.forEach(t=>{const e=r.get(t);if(e?.parents.length){const t=tt(e.parents);n=_.get(t).y-j,n<=o&&(o=n);const r=W.get(e.branch).pos,a=n-N;_.set(e.id,{x:r,y:a})}})},"setParallelBTPos"),et=(0,s.K2)(t=>{const r=Z(t.parents.filter(t=>null!==t));if(!r)throw new Error(`Closest parent not found for commit ${t.id}`);const e=_.get(r)?.y;if(void 0===e)throw new Error(`Closest parent position not found for commit ${t.id}`);return e},"findClosestParentPos"),nt=(0,s.K2)(t=>et(t)+j,"calculateCommitPosition"),ot=(0,s.K2)((t,r)=>{const e=W.get(t.branch);if(!e)throw new Error(`Branch not found for commit ${t.id}`);const n=e.pos,o=r+N;return _.set(t.id,{x:n,y:o}),{x:n,y:o}},"setCommitPosition"),at=(0,s.K2)((t,r,e)=>{const n=W.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);const o=r+e,a=n.pos;_.set(t.id,{x:a,y:o})},"setRootPosition"),ct=(0,s.K2)((t,r,e,n,o,a)=>{if(a===d.HIGHLIGHT)t.append("rect").attr("x",e.x-10).attr("y",e.y-10).attr("width",20).attr("height",20).attr("class",`commit ${r.id} commit-highlight${o%8} ${n}-outer`),t.append("rect").attr("x",e.x-6).attr("y",e.y-6).attr("width",12).attr("height",12).attr("class",`commit ${r.id} commit${o%8} ${n}-inner`);else if(a===d.CHERRY_PICK)t.append("circle").attr("cx",e.x).attr("cy",e.y).attr("r",10).attr("class",`commit ${r.id} ${n}`),t.append("circle").attr("cx",e.x-3).attr("cy",e.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${n}`),t.append("circle").attr("cx",e.x+3).attr("cy",e.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${n}`),t.append("line").attr("x1",e.x+3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${n}`),t.append("line").attr("x1",e.x-3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${n}`);else{const c=t.append("circle");if(c.attr("cx",e.x),c.attr("cy",e.y),c.attr("r",r.type===d.MERGE?9:10),c.attr("class",`commit ${r.id} commit${o%8}`),a===d.MERGE){const a=t.append("circle");a.attr("cx",e.x),a.attr("cy",e.y),a.attr("r",6),a.attr("class",`commit ${n} ${r.id} commit${o%8}`)}if(a===d.REVERSE){t.append("path").attr("d",`M ${e.x-5},${e.y-5}L${e.x+5},${e.y+5}M${e.x-5},${e.y+5}L${e.x+5},${e.y-5}`).attr("class",`commit ${n} ${r.id} commit${o%8}`)}}},"drawCommitBullet"),st=(0,s.K2)((t,r,e,n)=>{if(r.type!==d.CHERRY_PICK&&(r.customId&&r.type===d.MERGE||r.type!==d.MERGE)&&Y?.showCommitLabel){const o=t.append("g"),a=o.insert("rect").attr("class","commit-label-bkg"),c=o.append("text").attr("x",n).attr("y",e.y+25).attr("class","commit-label").text(r.id),s=c.node()?.getBBox();if(s&&(a.attr("x",e.posWithOffset-s.width/2-2).attr("y",e.y+13.5).attr("width",s.width+4).attr("height",s.height+4),"TB"===J||"BT"===J?(a.attr("x",e.x-(s.width+16+5)).attr("y",e.y-12),c.attr("x",e.x-(s.width+16)).attr("y",e.y+s.height-12)):c.attr("x",e.posWithOffset-s.width/2),Y.rotateCommitLabel))if("TB"===J||"BT"===J)c.attr("transform","rotate(-45, "+e.x+", "+e.y+")"),a.attr("transform","rotate(-45, "+e.x+", "+e.y+")");else{const t=-7.5-(s.width+10)/25*9.5,r=10+s.width/25*8.5;o.attr("transform","translate("+t+", "+r+") rotate(-45, "+n+", "+e.y+")")}}},"drawCommitLabel"),it=(0,s.K2)((t,r,e,n)=>{if(r.tags.length>0){let o=0,a=0,c=0;const s=[];for(const n of r.tags.reverse()){const r=t.insert("polygon"),i=t.append("circle"),h=t.append("text").attr("y",e.y-16-o).attr("class","tag-label").text(n),d=h.node()?.getBBox();if(!d)throw new Error("Tag bbox not found");a=Math.max(a,d.width),c=Math.max(c,d.height),h.attr("x",e.posWithOffset-d.width/2),s.push({tag:h,hole:i,rect:r,yOffset:o}),o+=20}for(const{tag:t,hole:r,rect:i,yOffset:h}of s){const o=c/2,s=e.y-19.2-h;if(i.attr("class","tag-label-bkg").attr("points",`\n ${n-a/2-2},${s+2} \n ${n-a/2-2},${s-2}\n ${e.posWithOffset-a/2-4},${s-o-2}\n ${e.posWithOffset+a/2+4},${s-o-2}\n ${e.posWithOffset+a/2+4},${s+o+2}\n ${e.posWithOffset-a/2-4},${s+o+2}`),r.attr("cy",s).attr("cx",n-a/2+2).attr("r",1.5).attr("class","tag-hole"),"TB"===J||"BT"===J){const c=n+h;i.attr("class","tag-label-bkg").attr("points",`\n ${e.x},${c+2}\n ${e.x},${c-2}\n ${e.x+N},${c-o-2}\n ${e.x+N+a+4},${c-o-2}\n ${e.x+N+a+4},${c+o+2}\n ${e.x+N},${c+o+2}`).attr("transform","translate(12,12) rotate(45, "+e.x+","+n+")"),r.attr("cx",e.x+2).attr("cy",c).attr("transform","translate(12,12) rotate(45, "+e.x+","+n+")"),t.attr("x",e.x+5).attr("y",c+3).attr("transform","translate(14,14) rotate(45, "+e.x+","+n+")")}}}},"drawCommitTags"),ht=(0,s.K2)(t=>{switch(t.customType??t.type){case d.NORMAL:return"commit-normal";case d.REVERSE:return"commit-reverse";case d.HIGHLIGHT:return"commit-highlight";case d.MERGE:return"commit-merge";case d.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),dt=(0,s.K2)((t,r,e,n)=>{const o={x:0,y:0};if(!(t.parents.length>0)){if("TB"===r)return 30;if("BT"===r){return(n.get(t.id)??o).y-j}return 0}{const e=Z(t.parents);if(e){const a=n.get(e)??o;if("TB"===r)return a.y+j;if("BT"===r){return(n.get(t.id)??o).y-j}return a.x+j}}return 0},"calculatePosition"),mt=(0,s.K2)((t,r,e)=>{const n="BT"===J&&e?r:r+N,o="TB"===J||"BT"===J?n:W.get(t.branch)?.pos,a="TB"===J||"BT"===J?W.get(t.branch)?.pos:n;if(void 0===a||void 0===o)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:o,posWithOffset:n}},"getCommitPosition"),$t=(0,s.K2)((t,r,e)=>{if(!Y)throw new Error("GitGraph config not found");const n=t.append("g").attr("class","commit-bullets"),o=t.append("g").attr("class","commit-labels");let a="TB"===J||"BT"===J?30:0;const c=[...r.keys()],i=Y?.parallelCommits??!1,h=(0,s.K2)((t,e)=>{const n=r.get(t)?.seq,o=r.get(e)?.seq;return void 0!==n&&void 0!==o?n-o:0},"sortKeys");let d=c.sort(h);"BT"===J&&(i&&rt(d,r,a),d=d.reverse()),d.forEach(t=>{const c=r.get(t);if(!c)throw new Error(`Commit not found for key ${t}`);i&&(a=dt(c,J,a,_));const s=mt(c,a,i);if(e){const t=ht(c),r=c.customType??c.type,e=W.get(c.branch)?.index??0;ct(n,c,s,t,e,r),st(o,c,s,a),it(o,c,s,a)}"TB"===J||"BT"===J?_.set(c.id,{x:s.x,y:s.posWithOffset}):_.set(c.id,{x:s.posWithOffset,y:s.y}),a="BT"===J&&i?a+j:a+j+N,a>V&&(V=a)})},"drawCommits"),lt=(0,s.K2)((t,r,e,n,o)=>{const a=("TB"===J||"BT"===J?e.xt.branch===a,"isOnBranchToGetCurve"),i=(0,s.K2)(e=>e.seq>t.seq&&e.seqi(t)&&c(t))},"shouldRerouteArrow"),gt=(0,s.K2)((t,r,e=0)=>{const n=t+Math.abs(t-r)/2;if(e>5)return n;if(U.every(t=>Math.abs(t-n)>=10))return U.push(n),n;const o=Math.abs(t-r);return gt(t,r-o/5,e+1)},"findLane"),yt=(0,s.K2)((t,r,e,n)=>{const o=_.get(r.id),a=_.get(e.id);if(void 0===o||void 0===a)throw new Error(`Commit positions not found for commits ${r.id} and ${e.id}`);const c=lt(r,e,o,a,n);let s,i="",h="",m=0,$=0,l=W.get(e.branch)?.index;if(e.type===d.MERGE&&r.id!==e.parents[0]&&(l=W.get(r.branch)?.index),c){i="A 10 10, 0, 0, 0,",h="A 10 10, 0, 0, 1,",m=10,$=10;const t=o.ya.x&&(i="A 20 20, 0, 0, 0,",h="A 20 20, 0, 0, 1,",m=20,$=20,s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y-m} ${h} ${o.x-$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x+m} ${o.y} ${i} ${a.x} ${o.y+$} L ${a.x} ${a.y}`),o.x===a.x&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`)):"BT"===J?(o.xa.x&&(i="A 20 20, 0, 0, 0,",h="A 20 20, 0, 0, 1,",m=20,$=20,s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${i} ${o.x-$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`),o.x===a.x&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`)):(o.ya.y&&(s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${h} ${o.x+$} ${a.y} L ${a.x} ${a.y}`),o.y===a.y&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`));if(void 0===s)throw new Error("Line definition not found");t.append("path").attr("d",s).attr("class","arrow arrow"+l%8)},"drawArrow"),pt=(0,s.K2)((t,r)=>{const e=t.append("g").attr("class","commit-arrows");[...r.keys()].forEach(t=>{const n=r.get(t);n.parents&&n.parents.length>0&&n.parents.forEach(t=>{yt(e,r.get(t),n,r)})})},"drawArrows"),xt=(0,s.K2)((t,r)=>{const e=t.append("g");r.forEach((t,r)=>{const n=r%8,o=W.get(t.name)?.pos;if(void 0===o)throw new Error(`Position not found for branch ${t.name}`);const a=e.append("line");a.attr("x1",0),a.attr("y1",o),a.attr("x2",V),a.attr("y2",o),a.attr("class","branch branch"+n),"TB"===J?(a.attr("y1",30),a.attr("x1",o),a.attr("y2",V),a.attr("x2",o)):"BT"===J&&(a.attr("y1",V),a.attr("x1",o),a.attr("y2",30),a.attr("x2",o)),U.push(o);const c=t.name,s=X(c),i=e.insert("rect"),h=e.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+n);h.node().appendChild(s);const d=s.getBBox();i.attr("class","branchLabelBkg label"+n).attr("rx",4).attr("ry",4).attr("x",-d.width-4-(!0===Y?.rotateCommitLabel?30:0)).attr("y",-d.height/2+8).attr("width",d.width+18).attr("height",d.height+4),h.attr("transform","translate("+(-d.width-14-(!0===Y?.rotateCommitLabel?30:0))+", "+(o-d.height/2-1)+")"),"TB"===J?(i.attr("x",o-d.width/2-10).attr("y",0),h.attr("transform","translate("+(o-d.width/2-5)+", 0)")):"BT"===J?(i.attr("x",o-d.width/2-10).attr("y",V),h.attr("transform","translate("+(o-d.width/2-5)+", "+V+")")):i.attr("transform","translate(-19, "+(o-d.height/2)+")")})},"drawBranches"),ft=(0,s.K2)(function(t,r,e,n,o){return W.set(t,{pos:r,index:e}),r+=50+(o?40:0)+("TB"===J||"BT"===J?n.width/2:0)},"setBranchPosition");var ut={parser:H,db:P,renderer:{draw:(0,s.K2)(function(t,r,e,n){if(Q(),s.Rm.debug("in gitgraph renderer",t+"\n","id:",r,e),!Y)throw new Error("GitGraph config not found");const o=Y.rotateCommitLabel??!1,i=n.db;F=i.getCommits();const d=i.getBranchesAsObjArray();J=i.getDirection();const m=(0,h.Ltv)(`[id="${r}"]`);let $=0;d.forEach((t,r)=>{const e=X(t.name),n=m.append("g"),a=n.insert("g").attr("class","branchLabel"),c=a.insert("g").attr("class","label branch-label");c.node()?.appendChild(e);const s=e.getBBox();$=ft(t.name,$,r,s,o),c.remove(),a.remove(),n.remove()}),$t(m,F,!1),Y.showBranches&&xt(m,d),pt(m,F),$t(m,F,!0),a._K.insertTitle(m,"gitTitleText",Y.titleTopMargin??0,i.getDiagramTitle()),(0,c.mj)(void 0,m,Y.diagramPadding,Y.useMaxWidth)},"draw")},styles:(0,s.K2)(t=>`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0,1,2,3,4,5,6,7].map(r=>`\n .branch-label${r} { fill: ${t["gitBranchLabel"+r]}; }\n .commit${r} { stroke: ${t["git"+r]}; fill: ${t["git"+r]}; }\n .commit-highlight${r} { stroke: ${t["gitInv"+r]}; fill: ${t["gitInv"+r]}; }\n .label${r} { fill: ${t["git"+r]}; }\n .arrow${r} { stroke: ${t["git"+r]}; }\n `).join("\n")}\n\n .branch {\n stroke-width: 1;\n stroke: ${t.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n .commit-reverse {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/developer/assets/js/6366.f0b54494.js b/developer/assets/js/6366.f0b54494.js new file mode 100644 index 0000000..8393534 --- /dev/null +++ b/developer/assets/js/6366.f0b54494.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[6366],{6366:(e,s,c)=>{c.d(s,{createArchitectureServices:()=>l.S});var l=c(8980);c(7960)}}]); \ No newline at end of file diff --git a/developer/assets/js/6567.44269c43.js b/developer/assets/js/6567.44269c43.js new file mode 100644 index 0000000..c002dd1 --- /dev/null +++ b/developer/assets/js/6567.44269c43.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[6567],{5871:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(797).K2)(r,"populateCommonDb")},6567:(t,e,a)=>{a.d(e,{diagram:()=>m});var r=a(3590),i=a(5871),o=a(3226),s=a(7633),n=a(797),l=a(8731),c=s.UI.packet,d=class{constructor(){this.packet=[],this.setAccTitle=s.SV,this.getAccTitle=s.iN,this.setDiagramTitle=s.ke,this.getDiagramTitle=s.ab,this.getAccDescription=s.m7,this.setAccDescription=s.EI}static{(0,n.K2)(this,"PacketDB")}getConfig(){const t=(0,o.$t)({...c,...(0,s.zj)().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){(0,s.IU)(),this.packet=[]}},p=(0,n.K2)((t,e)=>{(0,i.S)(t,e);let a=-1,r=[],o=1;const{bitsPerRow:s}=e.getConfig();for(let{start:i,end:l,bits:c,label:d}of t.blocks){if(void 0!==i&&void 0!==l&&l{if(void 0===t.start)throw new Error("start should have been set during first phase");if(void 0===t.end)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*a)return[t,void 0];const r=e*a-1,i=e*a;return[{start:t.start,end:r,label:t.label,bits:r-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),h={parser:{yy:void 0},parse:(0,n.K2)(async t=>{const e=await(0,l.qg)("packet",t),a=h.parser?.yy;if(!(a instanceof d))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");n.Rm.debug(e),p(e,a)},"parse")},k=(0,n.K2)((t,e,a,i)=>{const o=i.db,n=o.getConfig(),{rowHeight:l,paddingY:c,bitWidth:d,bitsPerRow:p}=n,b=o.getPacket(),h=o.getDiagramTitle(),k=l+c,u=k*(b.length+1)-(h?0:l),f=d*p+2,w=(0,r.D)(e);w.attr("viewbox",`0 0 ${f} ${u}`),(0,s.a$)(w,u,f,n.useMaxWidth);for(const[r,s]of b.entries())g(w,s,r,n);w.append("text").text(h).attr("x",f/2).attr("y",u-k/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),g=(0,n.K2)((t,e,a,{rowHeight:r,paddingX:i,paddingY:o,bitWidth:s,bitsPerRow:n,showBits:l})=>{const c=t.append("g"),d=a*(r+o)+o;for(const p of e){const t=p.start%n*s+1,e=(p.end-p.start+1)*s-i;if(c.append("rect").attr("x",t).attr("y",d).attr("width",e).attr("height",r).attr("class","packetBlock"),c.append("text").attr("x",t+e/2).attr("y",d+r/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(p.label),!l)continue;const a=p.end===p.start,o=d-2;c.append("text").attr("x",t+(a?e/2:0)).attr("y",o).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",a?"middle":"start").text(p.start),a||c.append("text").attr("x",t+e).attr("y",o).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(p.end)}},"drawWord"),u={draw:k},f={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},w=(0,n.K2)(({packet:t}={})=>{const e=(0,o.$t)(f,t);return`\n\t.packetByte {\n\t\tfont-size: ${e.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${e.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${e.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${e.labelColor};\n\t\tfont-size: ${e.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${e.titleColor};\n\t\tfont-size: ${e.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${e.blockStrokeColor};\n\t\tstroke-width: ${e.blockStrokeWidth};\n\t\tfill: ${e.blockFillColor};\n\t}\n\t`},"styles"),m={parser:h,get db(){return new d},renderer:u,styles:w}}}]); \ No newline at end of file diff --git a/developer/assets/js/6992.6538a426.js b/developer/assets/js/6992.6538a426.js new file mode 100644 index 0000000..717ea3a --- /dev/null +++ b/developer/assets/js/6992.6538a426.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[6992],{5871:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(797).K2)(r,"populateCommonDb")},6992:(t,e,a)=>{a.d(e,{diagram:()=>z});var r=a(3590),n=a(5871),i=a(3226),s=a(7633),o=a(797),l=a(8731),c={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},d={axes:[],curves:[],options:c},g=structuredClone(d),p=s.UI.radar,h=(0,o.K2)(()=>(0,i.$t)({...p,...(0,s.zj)().radar}),"getConfig"),u=(0,o.K2)(()=>g.axes,"getAxes"),x=(0,o.K2)(()=>g.curves,"getCurves"),m=(0,o.K2)(()=>g.options,"getOptions"),$=(0,o.K2)(t=>{g.axes=t.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),f=(0,o.K2)(t=>{g.curves=t.map(t=>({name:t.name,label:t.label??t.name,entries:v(t.entries)}))},"setCurves"),v=(0,o.K2)(t=>{if(null==t[0].axis)return t.map(t=>t.value);const e=u();if(0===e.length)throw new Error("Axes must be populated before curves for reference entries");return e.map(e=>{const a=t.find(t=>t.axis?.$refText===e.name);if(void 0===a)throw new Error("Missing entry for axis "+e.label);return a.value})},"computeCurveEntries"),y={getAxes:u,getCurves:x,getOptions:m,setAxes:$,setCurves:f,setOptions:(0,o.K2)(t=>{const e=t.reduce((t,e)=>(t[e.name]=e,t),{});g.options={showLegend:e.showLegend?.value??c.showLegend,ticks:e.ticks?.value??c.ticks,max:e.max?.value??c.max,min:e.min?.value??c.min,graticule:e.graticule?.value??c.graticule}},"setOptions"),getConfig:h,clear:(0,o.K2)(()=>{(0,s.IU)(),g=structuredClone(d)},"clear"),setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,getAccDescription:s.m7,setAccDescription:s.EI},b=(0,o.K2)(t=>{(0,n.S)(t,y);const{axes:e,curves:a,options:r}=t;y.setAxes(e),y.setCurves(a),y.setOptions(r)},"populate"),w={parse:(0,o.K2)(async t=>{const e=await(0,l.qg)("radar",t);o.Rm.debug(e),b(e)},"parse")},C=(0,o.K2)((t,e,a,n)=>{const i=n.db,s=i.getAxes(),o=i.getCurves(),l=i.getOptions(),c=i.getConfig(),d=i.getDiagramTitle(),g=(0,r.D)(e),p=M(g,c),h=l.max??Math.max(...o.map(t=>Math.max(...t.entries))),u=l.min,x=Math.min(c.width,c.height)/2;K(p,s,x,l.ticks,l.graticule),T(p,s,x,c),L(p,s,o,u,h,l.graticule,c),O(p,o,l.showLegend,c),p.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),M=(0,o.K2)((t,e)=>{const a=e.width+e.marginLeft+e.marginRight,r=e.height+e.marginTop+e.marginBottom,n=e.marginLeft+e.width/2,i=e.marginTop+e.height/2;return t.attr("viewbox",`0 0 ${a} ${r}`).attr("width",a).attr("height",r),t.append("g").attr("transform",`translate(${n}, ${i})`)},"drawFrame"),K=(0,o.K2)((t,e,a,r,n)=>{if("circle"===n)for(let i=0;i{const a=2*e*Math.PI/n-Math.PI/2;return`${s*Math.cos(a)},${s*Math.sin(a)}`}).join(" ");t.append("polygon").attr("points",o).attr("class","radarGraticule")}}},"drawGraticule"),T=(0,o.K2)((t,e,a,r)=>{const n=e.length;for(let i=0;i{if(e.entries.length!==o)return;const c=e.entries.map((t,e)=>{const a=2*Math.PI*e/o-Math.PI/2,i=k(t,r,n,l);return{x:i*Math.cos(a),y:i*Math.sin(a)}});"circle"===i?t.append("path").attr("d",A(c,s.curveTension)).attr("class",`radarCurve-${a}`):"polygon"===i&&t.append("polygon").attr("points",c.map(t=>`${t.x},${t.y}`).join(" ")).attr("class",`radarCurve-${a}`)})}function k(t,e,a,r){return r*(Math.min(Math.max(t,e),a)-e)/(a-e)}function A(t,e){const a=t.length;let r=`M${t[0].x},${t[0].y}`;for(let n=0;n{const r=t.append("g").attr("transform",`translate(${n}, ${i+20*a})`);r.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${a}`),r.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(e.label)})}(0,o.K2)(L,"drawCurves"),(0,o.K2)(k,"relativeRadius"),(0,o.K2)(A,"closedRoundCurve"),(0,o.K2)(O,"drawLegend");var S={draw:C},I=(0,o.K2)((t,e)=>{let a="";for(let r=0;r{const e=(0,s.P$)(),a=(0,s.zj)(),r=(0,i.$t)(e,a.themeVariables);return{themeVariables:r,radarOptions:(0,i.$t)(r.radar,t)}},"buildRadarStyleOptions"),z={parser:w,db:y,renderer:S,styles:(0,o.K2)(({radar:t}={})=>{const{themeVariables:e,radarOptions:a}=D(t);return`\n\t.radarTitle {\n\t\tfont-size: ${e.fontSize};\n\t\tcolor: ${e.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${a.axisColor};\n\t\tstroke-width: ${a.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${a.axisLabelFontSize}px;\n\t\tcolor: ${a.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${a.graticuleColor};\n\t\tfill-opacity: ${a.graticuleOpacity};\n\t\tstroke: ${a.graticuleColor};\n\t\tstroke-width: ${a.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${a.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${I(e,a)}\n\t`},"styles")}}}]); \ No newline at end of file diff --git a/developer/assets/js/7465.e46df99c.js b/developer/assets/js/7465.e46df99c.js new file mode 100644 index 0000000..f32aa28 --- /dev/null +++ b/developer/assets/js/7465.e46df99c.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[7465],{7465:(e,r,a)=>{a.d(r,{diagram:()=>g});var s=a(9264),t=a(3590),n=a(7633),i=a(797),d=a(8731),o={parse:(0,i.K2)(async e=>{const r=await(0,d.qg)("info",e);i.Rm.debug(r)},"parse")},p={version:s.n.version+""},g={parser:o,db:{getVersion:(0,i.K2)(()=>p.version,"getVersion")},renderer:{draw:(0,i.K2)((e,r,a)=>{i.Rm.debug("rendering info diagram\n"+e);const s=(0,t.D)(r);(0,n.a$)(s,100,400,!0);s.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${a}`)},"draw")}}}}]); \ No newline at end of file diff --git a/developer/assets/js/7592.881d8ed3.js b/developer/assets/js/7592.881d8ed3.js new file mode 100644 index 0000000..d3798ad --- /dev/null +++ b/developer/assets/js/7592.881d8ed3.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[7592],{2875:(t,e,a)=>{a.d(e,{CP:()=>h,HT:()=>p,PB:()=>d,aC:()=>l,lC:()=>o,m:()=>c,tk:()=>n});var r=a(7633),s=a(797),i=a(6750),n=(0,s.K2)((t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),e.rx&&a.attr("rx",e.rx),e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const r in e.attrs)a.attr(r,e.attrs[r]);return e.class&&a.attr("class",e.class),a},"drawRect"),o=(0,s.K2)((t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};n(t,a).lower()},"drawBackgroundRect"),c=(0,s.K2)((t,e)=>{const a=e.text.replace(r.H1," "),s=t.append("text");s.attr("x",e.x),s.attr("y",e.y),s.attr("class","legend"),s.style("text-anchor",e.anchor),e.class&&s.attr("class",e.class);const i=s.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(a),s},"drawText"),l=(0,s.K2)((t,e,a,r)=>{const s=t.append("image");s.attr("x",e),s.attr("y",a);const n=(0,i.J)(r);s.attr("xlink:href",n)},"drawImage"),h=(0,s.K2)((t,e,a,r)=>{const s=t.append("use");s.attr("x",e),s.attr("y",a);const n=(0,i.J)(r);s.attr("xlink:href",`#${n}`)},"drawEmbeddedImage"),d=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),p=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},2938:(t,e,a)=>{a.d(e,{m:()=>s});var r=a(797),s=class{constructor(t){this.init=t,this.records=this.init()}static{(0,r.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},7592:(t,e,a)=>{a.d(e,{diagram:()=>vt});var r=a(2875),s=a(3981),i=a(2938),n=a(3226),o=a(7633),c=a(797),l=a(451),h=a(6750),d=function(){var t=(0,c.K2)(function(t,e,a,r){for(a=a||{},r=t.length;r--;a[t[r]]=e);return a},"o"),e=[1,2],a=[1,3],r=[1,4],s=[2,4],i=[1,9],n=[1,11],o=[1,13],l=[1,14],h=[1,16],d=[1,17],p=[1,18],g=[1,24],u=[1,25],x=[1,26],y=[1,27],m=[1,28],b=[1,29],T=[1,30],f=[1,31],E=[1,32],w=[1,33],I=[1,34],L=[1,35],_=[1,36],P=[1,37],k=[1,38],N=[1,39],A=[1,41],v=[1,42],M=[1,43],O=[1,44],D=[1,45],S=[1,46],R=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,55,60,61,62,63,71],$=[2,71],C=[4,5,16,50,52,53],Y=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],K=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,55,60,61,62,63,71],B=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,55,60,61,62,63,71],V=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,55,60,61,62,63,71],F=[69,70,71],W=[1,127],q={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,actor_with_config:54,note:55,placement:56,text2:57,over:58,actor_pair:59,links:60,link:61,properties:62,details:63,spaceList:64,",":65,left_of:66,right_of:67,signaltype:68,"+":69,"-":70,ACTOR:71,config_object:72,CONFIG_START:73,CONFIG_CONTENT:74,CONFIG_END:75,SOLID_OPEN_ARROW:76,DOTTED_OPEN_ARROW:77,SOLID_ARROW:78,BIDIRECTIONAL_SOLID_ARROW:79,DOTTED_ARROW:80,BIDIRECTIONAL_DOTTED_ARROW:81,SOLID_CROSS:82,DOTTED_CROSS:83,SOLID_POINT:84,DOTTED_POINT:85,TXT:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",55:"note",58:"over",60:"links",61:"link",62:"properties",63:"details",65:",",66:"left_of",67:"right_of",69:"+",70:"-",71:"ACTOR",73:"CONFIG_START",74:"CONFIG_CONTENT",75:"CONFIG_END",76:"SOLID_OPEN_ARROW",77:"DOTTED_OPEN_ARROW",78:"SOLID_ARROW",79:"BIDIRECTIONAL_SOLID_ARROW",80:"DOTTED_ARROW",81:"BIDIRECTIONAL_DOTTED_ARROW",82:"SOLID_CROSS",83:"DOTTED_CROSS",84:"SOLID_POINT",85:"DOTTED_POINT",86:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[64,2],[64,1],[59,3],[59,1],[56,1],[56,1],[17,5],[17,5],[17,4],[54,2],[72,3],[22,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[57,1]],performAction:(0,c.K2)(function(t,e,a,r,s,i,n){var o=i.length-1;switch(s){case 3:return r.apply(i[o]),i[o];case 4:case 9:case 8:case 13:this.$=[];break;case 5:case 10:i[o-1].push(i[o]),this.$=i[o-1];break;case 6:case 7:case 11:case 12:case 63:this.$=i[o];break;case 15:i[o].type="createParticipant",this.$=i[o];break;case 16:i[o-1].unshift({type:"boxStart",boxData:r.parseBoxData(i[o-2])}),i[o-1].push({type:"boxEnd",boxText:i[o-2]}),this.$=i[o-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-2]),sequenceIndexStep:Number(i[o-1]),sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:r.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:i[o-1].actor};break;case 23:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:i[o-1].actor};break;case 29:r.setDiagramTitle(i[o].substring(6)),this.$=i[o].substring(6);break;case 30:r.setDiagramTitle(i[o].substring(7)),this.$=i[o].substring(7);break;case 31:this.$=i[o].trim(),r.setAccTitle(this.$);break;case 32:case 33:this.$=i[o].trim(),r.setAccDescription(this.$);break;case 34:i[o-1].unshift({type:"loopStart",loopText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.LOOP_START}),i[o-1].push({type:"loopEnd",loopText:i[o-2],signalType:r.LINETYPE.LOOP_END}),this.$=i[o-1];break;case 35:i[o-1].unshift({type:"rectStart",color:r.parseMessage(i[o-2]),signalType:r.LINETYPE.RECT_START}),i[o-1].push({type:"rectEnd",color:r.parseMessage(i[o-2]),signalType:r.LINETYPE.RECT_END}),this.$=i[o-1];break;case 36:i[o-1].unshift({type:"optStart",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.OPT_START}),i[o-1].push({type:"optEnd",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.OPT_END}),this.$=i[o-1];break;case 37:i[o-1].unshift({type:"altStart",altText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.ALT_START}),i[o-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=i[o-1];break;case 38:i[o-1].unshift({type:"parStart",parText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.PAR_START}),i[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=i[o-1];break;case 39:i[o-1].unshift({type:"parStart",parText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.PAR_OVER_START}),i[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=i[o-1];break;case 40:i[o-1].unshift({type:"criticalStart",criticalText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.CRITICAL_START}),i[o-1].push({type:"criticalEnd",signalType:r.LINETYPE.CRITICAL_END}),this.$=i[o-1];break;case 41:i[o-1].unshift({type:"breakStart",breakText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.BREAK_START}),i[o-1].push({type:"breakEnd",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.BREAK_END}),this.$=i[o-1];break;case 43:this.$=i[o-3].concat([{type:"option",optionText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.CRITICAL_OPTION},i[o]]);break;case 45:this.$=i[o-3].concat([{type:"and",parText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.PAR_AND},i[o]]);break;case 47:this.$=i[o-3].concat([{type:"else",altText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.ALT_ELSE},i[o]]);break;case 48:i[o-3].draw="participant",i[o-3].type="addParticipant",i[o-3].description=r.parseMessage(i[o-1]),this.$=i[o-3];break;case 49:case 53:i[o-1].draw="participant",i[o-1].type="addParticipant",this.$=i[o-1];break;case 50:i[o-3].draw="actor",i[o-3].type="addParticipant",i[o-3].description=r.parseMessage(i[o-1]),this.$=i[o-3];break;case 51:i[o-1].draw="actor",i[o-1].type="addParticipant",this.$=i[o-1];break;case 52:i[o-1].type="destroyParticipant",this.$=i[o-1];break;case 54:this.$=[i[o-1],{type:"addNote",placement:i[o-2],actor:i[o-1].actor,text:i[o]}];break;case 55:i[o-2]=[].concat(i[o-1],i[o-1]).slice(0,2),i[o-2][0]=i[o-2][0].actor,i[o-2][1]=i[o-2][1].actor,this.$=[i[o-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:i[o-2].slice(0,2),text:i[o]}];break;case 56:this.$=[i[o-1],{type:"addLinks",actor:i[o-1].actor,text:i[o]}];break;case 57:this.$=[i[o-1],{type:"addALink",actor:i[o-1].actor,text:i[o]}];break;case 58:this.$=[i[o-1],{type:"addProperties",actor:i[o-1].actor,text:i[o]}];break;case 59:this.$=[i[o-1],{type:"addDetails",actor:i[o-1].actor,text:i[o]}];break;case 62:this.$=[i[o-2],i[o]];break;case 64:this.$=r.PLACEMENT.LEFTOF;break;case 65:this.$=r.PLACEMENT.RIGHTOF;break;case 66:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o],activate:!0},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:i[o-1].actor}];break;case 67:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:i[o-4].actor}];break;case 68:this.$=[i[o-3],i[o-1],{type:"addMessage",from:i[o-3].actor,to:i[o-1].actor,signalType:i[o-2],msg:i[o]}];break;case 69:this.$={type:"addParticipant",actor:i[o-1],config:i[o]};break;case 70:this.$=i[o-1].trim();break;case 71:this.$={type:"addParticipant",actor:i[o]};break;case 72:this.$=r.LINETYPE.SOLID_OPEN;break;case 73:this.$=r.LINETYPE.DOTTED_OPEN;break;case 74:this.$=r.LINETYPE.SOLID;break;case 75:this.$=r.LINETYPE.BIDIRECTIONAL_SOLID;break;case 76:this.$=r.LINETYPE.DOTTED;break;case 77:this.$=r.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 78:this.$=r.LINETYPE.SOLID_CROSS;break;case 79:this.$=r.LINETYPE.DOTTED_CROSS;break;case 80:this.$=r.LINETYPE.SOLID_POINT;break;case 81:this.$=r.LINETYPE.DOTTED_POINT;break;case 82:this.$=r.parseMessage(i[o].trim().substring(1))}},"anonymous"),table:[{3:1,4:e,5:a,6:r},{1:[3]},{3:5,4:e,5:a,6:r},{3:6,4:e,5:a,6:r},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],s,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:n,8:8,9:10,12:12,13:o,14:l,17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},t(R,[2,5]),{9:47,12:12,13:o,14:l,17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},t(R,[2,7]),t(R,[2,8]),t(R,[2,14]),{12:48,50:P,52:k,53:N},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,71:S},{22:55,71:S},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(R,[2,29]),t(R,[2,30]),{32:[1,61]},{34:[1,62]},t(R,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,54:72,71:[1,73]},{22:74,71:S},{22:75,71:S},{68:76,76:[1,77],77:[1,78],78:[1,79],79:[1,80],80:[1,81],81:[1,82],82:[1,83],83:[1,84],84:[1,85],85:[1,86]},{56:87,58:[1,88],66:[1,89],67:[1,90]},{22:91,71:S},{22:92,71:S},{22:93,71:S},{22:94,71:S},t([5,51,65,76,77,78,79,80,81,82,83,84,85,86],$),t(R,[2,6]),t(R,[2,15]),t(C,[2,9],{10:95}),t(R,[2,17]),{5:[1,97],19:[1,96]},{5:[1,98]},t(R,[2,21]),{5:[1,99]},{5:[1,100]},t(R,[2,24]),t(R,[2,25]),t(R,[2,26]),t(R,[2,27]),t(R,[2,28]),t(R,[2,31]),t(R,[2,32]),t(Y,s,{7:101}),t(Y,s,{7:102}),t(Y,s,{7:103}),t(K,s,{40:104,7:105}),t(B,s,{42:106,7:107}),t(B,s,{7:107,42:108}),t(V,s,{45:109,7:110}),t(Y,s,{7:111}),{5:[1,113],51:[1,112]},{5:[1,114]},t([5,51],$,{72:115,73:[1,116]}),{5:[1,118],51:[1,117]},{5:[1,119]},{22:122,69:[1,120],70:[1,121],71:S},t(F,[2,72]),t(F,[2,73]),t(F,[2,74]),t(F,[2,75]),t(F,[2,76]),t(F,[2,77]),t(F,[2,78]),t(F,[2,79]),t(F,[2,80]),t(F,[2,81]),{22:123,71:S},{22:125,59:124,71:S},{71:[2,64]},{71:[2,65]},{57:126,86:W},{57:128,86:W},{57:129,86:W},{57:130,86:W},{4:[1,133],5:[1,135],11:132,12:134,16:[1,131],50:P,52:k,53:N},{5:[1,136]},t(R,[2,19]),t(R,[2,20]),t(R,[2,22]),t(R,[2,23]),{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,137],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,138],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,139],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,140]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,46],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,49:[1,141],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,142]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,44],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,48:[1,143],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,144]},{16:[1,145]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,42],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,47:[1,146],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,147],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{15:[1,148]},t(R,[2,49]),t(R,[2,53]),{5:[2,69]},{74:[1,149]},{15:[1,150]},t(R,[2,51]),t(R,[2,52]),{22:151,71:S},{22:152,71:S},{57:153,86:W},{57:154,86:W},{57:155,86:W},{65:[1,156],86:[2,63]},{5:[2,56]},{5:[2,82]},{5:[2,57]},{5:[2,58]},{5:[2,59]},t(R,[2,16]),t(C,[2,10]),{12:157,50:P,52:k,53:N},t(C,[2,12]),t(C,[2,13]),t(R,[2,18]),t(R,[2,34]),t(R,[2,35]),t(R,[2,36]),t(R,[2,37]),{15:[1,158]},t(R,[2,38]),{15:[1,159]},t(R,[2,39]),t(R,[2,40]),{15:[1,160]},t(R,[2,41]),{5:[1,161]},{75:[1,162]},{5:[1,163]},{57:164,86:W},{57:165,86:W},{5:[2,68]},{5:[2,54]},{5:[2,55]},{22:166,71:S},t(C,[2,11]),t(K,s,{7:105,40:167}),t(B,s,{7:107,42:168}),t(V,s,{7:110,45:169}),t(R,[2,48]),{5:[2,70]},t(R,[2,50]),{5:[2,66]},{5:[2,67]},{86:[2,62]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],89:[2,64],90:[2,65],115:[2,69],126:[2,56],127:[2,82],128:[2,57],129:[2,58],130:[2,59],153:[2,68],154:[2,54],155:[2,55],162:[2,70],164:[2,66],165:[2,67],166:[2,62],167:[2,47],168:[2,45],169:[2,43]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,a=[0],r=[],s=[null],i=[],n=this.table,o="",l=0,h=0,d=0,p=i.slice.call(arguments,1),g=Object.create(this.lexer),u={yy:{}};for(var x in this.yy)Object.prototype.hasOwnProperty.call(this.yy,x)&&(u.yy[x]=this.yy[x]);g.setInput(t,u.yy),u.yy.lexer=g,u.yy.parser=this,void 0===g.yylloc&&(g.yylloc={});var y=g.yylloc;i.push(y);var m=g.options&&g.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||g.lex()||1)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){a.length=a.length-2*t,s.length=s.length-t,i.length=i.length-t},"popStack"),(0,c.K2)(b,"lex");for(var T,f,E,w,I,L,_,P,k,N={};;){if(E=a[a.length-1],this.defaultActions[E]?w=this.defaultActions[E]:(null==T&&(T=b()),w=n[E]&&n[E][T]),void 0===w||!w.length||!w[0]){var A="";for(L in k=[],n[E])this.terminals_[L]&&L>2&&k.push("'"+this.terminals_[L]+"'");A=g.showPosition?"Parse error on line "+(l+1)+":\n"+g.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[T]||T)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==T?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(A,{text:g.match,token:this.terminals_[T]||T,line:g.yylineno,loc:y,expected:k})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+T);switch(w[0]){case 1:a.push(T),s.push(g.yytext),i.push(g.yylloc),a.push(w[1]),T=null,f?(T=f,f=null):(h=g.yyleng,o=g.yytext,l=g.yylineno,y=g.yylloc,d>0&&d--);break;case 2:if(_=this.productions_[w[1]][1],N.$=s[s.length-_],N._$={first_line:i[i.length-(_||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(_||1)].first_column,last_column:i[i.length-1].last_column},m&&(N._$.range=[i[i.length-(_||1)].range[0],i[i.length-1].range[1]]),void 0!==(I=this.performAction.apply(N,[o,h,l,u.yy,w[1],s,i].concat(p))))return I;_&&(a=a.slice(0,-1*_*2),s=s.slice(0,-1*_),i=i.slice(0,-1*_)),a.push(this.productions_[w[1]][0]),s.push(N.$),i.push(N._$),P=n[a[a.length-2]][a[a.length-1]],a.push(P);break;case 3:return!0}}return!0},"parse")},z=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===r.length?this.yylloc.first_column:0)+r[r.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var a,r,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var i in s)this[i]=s[i];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,a,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;ie[0].length)){if(e=a,r=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,s[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,a,r){switch(a){case 0:case 56:case 72:return 5;case 1:case 2:case 3:case 4:case 5:break;case 6:return 19;case 7:return this.begin("CONFIG"),73;case 8:return 74;case 9:return this.popState(),this.popState(),75;case 10:case 57:return e.yytext=e.yytext.trim(),71;case 11:case 17:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),71;case 12:return this.begin("LINE"),14;case 13:return this.begin("ID"),50;case 14:return this.begin("ID"),52;case 15:return 13;case 16:return this.begin("ID"),53;case 18:return this.popState(),this.popState(),this.begin("LINE"),51;case 19:return this.popState(),this.popState(),5;case 20:return this.begin("LINE"),36;case 21:return this.begin("LINE"),37;case 22:return this.begin("LINE"),38;case 23:return this.begin("LINE"),39;case 24:return this.begin("LINE"),49;case 25:return this.begin("LINE"),41;case 26:return this.begin("LINE"),43;case 27:return this.begin("LINE"),48;case 28:return this.begin("LINE"),44;case 29:return this.begin("LINE"),47;case 30:return this.begin("LINE"),46;case 31:return this.popState(),15;case 32:return 16;case 33:return 66;case 34:return 67;case 35:return 60;case 36:return 61;case 37:return 62;case 38:return 63;case 39:return 58;case 40:return 55;case 41:return this.begin("ID"),21;case 42:return this.begin("ID"),23;case 43:return 29;case 44:return 30;case 45:return this.begin("acc_title"),31;case 46:return this.popState(),"acc_title_value";case 47:return this.begin("acc_descr"),33;case 48:return this.popState(),"acc_descr_value";case 49:this.begin("acc_descr_multiline");break;case 50:this.popState();break;case 51:return"acc_descr_multiline_value";case 52:return 6;case 53:return 18;case 54:return 20;case 55:return 65;case 58:return 78;case 59:return 79;case 60:return 80;case 61:return 81;case 62:return 76;case 63:return 77;case 64:return 82;case 65:return 83;case 66:return 84;case 67:return 85;case 68:case 69:return 86;case 70:return 69;case 71:return 70;case 73:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^\<->\->:\n,;@]+?([\-]*[^\<->\->:\n,;@]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^<\->\->:\n,;]+?([\-]*[^<\->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[50,51],inclusive:!1},acc_descr:{rules:[48],inclusive:!1},acc_title:{rules:[46],inclusive:!1},ID:{rules:[2,3,7,10,11,17],inclusive:!1},ALIAS:{rules:[2,3,18,19],inclusive:!1},LINE:{rules:[2,3,31],inclusive:!1},CONFIG:{rules:[8,9],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,12,13,14,15,16,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73],inclusive:!0}}}}();function H(){this.yy={}}return q.lexer=z,(0,c.K2)(H,"Parser"),H.prototype=q,q.Parser=H,new H}();d.parser=d;var p=d,g={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},u={FILLED:0,OPEN:1},x={LEFTOF:0,RIGHTOF:1,OVER:2},y="actor",m="control",b="database",T="entity",f=class{constructor(){this.state=new i.m(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),this.setAccTitle=o.SV,this.setAccDescription=o.EI,this.setDiagramTitle=o.ke,this.getAccTitle=o.iN,this.getAccDescription=o.m7,this.getDiagramTitle=o.ab,this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap((0,o.D7)().wrap),this.LINETYPE=g,this.ARROWTYPE=u,this.PLACEMENT=x}static{(0,c.K2)(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,e,a,r,i){let n,o=this.state.records.currentBox;if(void 0!==i){let t;t=i.includes("\n")?i+"\n":"{\n"+i+"\n}",n=(0,s.H)(t,{schema:s.r})}r=n?.type??r;const c=this.state.records.actors.get(t);if(c){if(this.state.records.currentBox&&c.box&&this.state.records.currentBox!==c.box)throw new Error(`A same participant should only be defined in one Box: ${c.name} can't be in '${c.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(o=c.box?c.box:this.state.records.currentBox,c.box=o,c&&e===c.name&&null==a)return}if(null==a?.text&&(a={text:e,type:r}),null!=r&&null!=a.text||(a={text:e,type:r}),this.state.records.actors.set(t,{box:o,name:e,description:a.text,wrap:a.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:r??"participant"}),this.state.records.prevActor){const e=this.state.records.actors.get(this.state.records.prevActor);e&&(e.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let e,a=0;if(!t)return 0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:e,message:a?.text??"",wrap:a?.wrap??this.autoWrap(),type:r,activate:s}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(void 0===t)return{};t=t.trim();const e=null!==/^:?wrap:/.exec(t)||null===/^:?nowrap:/.exec(t)&&void 0;return{cleanedText:(void 0===e?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}}autoWrap(){return void 0!==this.state.records.wrapEnabled?this.state.records.wrapEnabled:(0,o.D7)().sequence?.wrap??!1}clear(){this.state.reset(),(0,o.IU)()}parseMessage(t){const e=t.trim(),{wrap:a,cleanedText:r}=this.extractWrap(e),s={text:r,wrap:a};return c.Rm.debug(`parseMessage: ${JSON.stringify(s)}`),s}parseBoxData(t){const e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t);let a=e?.[1]?e[1].trim():"transparent",r=e?.[2]?e[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",a)||(a="transparent",r=t.trim());else{const e=(new Option).style;e.color=a,e.color!==a&&(a="transparent",r=t.trim())}const{wrap:s,cleanedText:i}=this.extractWrap(r);return{text:i?(0,o.jZ)(i,(0,o.D7)()):void 0,color:a,wrap:s}}addNote(t,e,a){const r={actor:t,placement:e,message:a.text,wrap:a.wrap??this.autoWrap()},s=[].concat(t,t);this.state.records.notes.push(r),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:s[0],to:s[1],message:a.text,wrap:a.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:e})}addLinks(t,e){const a=this.getActor(t);try{let t=(0,o.jZ)(e.text,(0,o.D7)());t=t.replace(/=/g,"="),t=t.replace(/&/g,"&");const r=JSON.parse(t);this.insertLinks(a,r)}catch(r){c.Rm.error("error while parsing actor link text",r)}}addALink(t,e){const a=this.getActor(t);try{const t={};let r=(0,o.jZ)(e.text,(0,o.D7)());const s=r.indexOf("@");r=r.replace(/=/g,"="),r=r.replace(/&/g,"&");const i=r.slice(0,s-1).trim(),n=r.slice(s+1).trim();t[i]=n,this.insertLinks(a,t)}catch(r){c.Rm.error("error while parsing actor link text",r)}}insertLinks(t,e){if(null==t.links)t.links=e;else for(const a in e)t.links[a]=e[a]}addProperties(t,e){const a=this.getActor(t);try{const t=(0,o.jZ)(e.text,(0,o.D7)()),r=JSON.parse(t);this.insertProperties(a,r)}catch(r){c.Rm.error("error while parsing actor properties text",r)}}insertProperties(t,e){if(null==t.properties)t.properties=e;else for(const a in e)t.properties[a]=e[a]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,e){const a=this.getActor(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&this.insertProperties(a,e.properties),e.links&&this.insertLinks(a,e.links)}catch(s){c.Rm.error("error while parsing actor details text",s)}}getActorProperty(t,e){if(void 0!==t?.properties)return t.properties[e]}apply(t){if(Array.isArray(t))t.forEach(t=>{this.apply(t)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":(0,o.SV)(t.text);break;case"parStart":case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType)}}getConfig(){return(0,o.D7)().sequence}},E=(0,c.K2)(t=>`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n \n .innerArc {\n stroke-width: 1.5;\n stroke-dasharray: none;\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n\n`,"getStyles"),w="actor-top",I="actor-bottom",L="actor-box",_="actor-man",P=(0,c.K2)(function(t,e){return(0,r.tk)(t,e)},"drawRect"),k=(0,c.K2)(function(t,e,a,r,s){if(void 0===e.links||null===e.links||0===Object.keys(e.links).length)return{height:0,width:0};const i=e.links,n=e.actorCnt,o=e.rectData;var c="none";s&&(c="block !important");const l=t.append("g");l.attr("id","actor"+n+"_popup"),l.attr("class","actorPopupMenu"),l.attr("display",c);var d="";void 0!==o.class&&(d=" "+o.class);let p=o.width>a?o.width:a;const g=l.append("rect");if(g.attr("class","actorPopupMenuPanel"+d),g.attr("x",o.x),g.attr("y",o.height),g.attr("fill",o.fill),g.attr("stroke",o.stroke),g.attr("width",p),g.attr("height",o.height),g.attr("rx",o.rx),g.attr("ry",o.ry),null!=i){var u=20;for(let t in i){var x=l.append("a"),y=(0,h.J)(i[t]);x.attr("xlink:href",y),x.attr("target","_blank"),st(r)(t,x,o.x+10,o.height+u,p,20,{class:"actor"},r),u+=30}}return g.attr("height",u),{height:o.height+u,width:p}},"drawPopup"),N=(0,c.K2)(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),A=(0,c.K2)(async function(t,e,a=null){let r=t.append("foreignObject");const s=await(0,o.dj)(e.text,(0,o.zj)()),i=r.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(s).node().getBoundingClientRect();if(r.attr("height",Math.round(i.height)).attr("width",Math.round(i.width)),"noteText"===e.class){const a=t.node().firstChild;a.setAttribute("height",i.height+2*e.textMargin);const s=a.getBBox();r.attr("x",Math.round(s.x+s.width/2-i.width/2)).attr("y",Math.round(s.y+s.height/2-i.height/2))}else if(a){let{startx:t,stopx:s,starty:n}=a;if(t>s){const e=t;t=s,s=e}r.attr("x",Math.round(t+Math.abs(t-s)/2-i.width/2)),"loopText"===e.class?r.attr("y",Math.round(n)):r.attr("y",Math.round(n-i.height))}return[r]},"drawKatex"),v=(0,c.K2)(function(t,e){let a=0,r=0;const s=e.text.split(o.Y2.lineBreakRegex),[i,l]=(0,n.I5)(e.fontSize);let h=[],d=0,p=(0,c.K2)(()=>e.y,"yfunc");if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":p=(0,c.K2)(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":p=(0,c.K2)(()=>Math.round(e.y+(a+r+e.textMargin)/2),"yfunc");break;case"bottom":case"end":p=(0,c.K2)(()=>Math.round(e.y+(a+r+2*e.textMargin)-e.textMargin),"yfunc")}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[o,c]of s.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==i&&(d=o*i);const s=t.append("text");s.attr("x",e.x),s.attr("y",p()),void 0!==e.anchor&&s.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&s.style("font-family",e.fontFamily),void 0!==l&&s.style("font-size",l),void 0!==e.fontWeight&&s.style("font-weight",e.fontWeight),void 0!==e.fill&&s.attr("fill",e.fill),void 0!==e.class&&s.attr("class",e.class),void 0!==e.dy?s.attr("dy",e.dy):0!==d&&s.attr("dy",d);const g=c||n.pe;if(e.tspan){const t=s.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(g)}else s.text(g);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(s._groups||s)[0][0].getBBox().height,a=r),h.push(s)}return h},"drawText"),M=(0,c.K2)(function(t,e){function a(t,e,a,r,s){return t+","+e+" "+(t+a)+","+e+" "+(t+a)+","+(e+r-s)+" "+(t+a-1.2*s)+","+(e+r)+" "+t+","+(e+r)}(0,c.K2)(a,"genPoints");const r=t.append("polygon");return r.attr("points",a(e.x,e.y,e.width,e.height,7)),r.attr("class","labelBox"),e.y=e.y+e.height/2,v(t,e),r},"drawLabel"),O=-1,D=(0,c.K2)((t,e,a,r)=>{t.select&&a.forEach(a=>{const s=e.get(a),i=t.select("#actor"+s.actorCnt);!r.mirrorActors&&s.stopy?i.attr("y2",s.stopy+s.height/2):r.mirrorActors&&i.attr("y2",s.stopy)})},"fixLifeLineHeights"),S=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();var h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();var p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.rx=3,d.ry=3,d.name=e.name;const g=P(h,d);if(e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,r.CP)(h,d.x+d.width-20,d.y+10,t.substr(1)):(0,r.aC)(h,d.x+d.width-20,d.y+10,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y,d.width,d.height,{class:`actor ${L}`},a);let u=e.height;if(g.node){const t=g.node().getBBox();e.height=t.height,u=t.height}return u},"drawActorTypeParticipant"),R=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();var h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();var p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name;const g={...d,x:d.x+-6,y:d.y+6,class:"actor"},u=P(h,d);if(P(h,g),e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,r.CP)(h,d.x+d.width-20,d.y+10,t.substr(1)):(0,r.aC)(h,d.x+d.width-20,d.y+10,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x-6,d.y+6,d.width,d.height,{class:`actor ${L}`},a);let x=e.height;if(u.node){const t=u.node().getBBox();e.height=t.height,x=t.height}return x},"drawActorTypeCollections"),$=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();let h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();let p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name;const g=d.height/2,u=g/(2.5+d.height/50),x=h.append("g"),y=h.append("g");if(x.append("path").attr("d",`M ${d.x},${d.y+g}\n a ${u},${g} 0 0 0 0,${d.height}\n h ${d.width-2*u}\n a ${u},${g} 0 0 0 0,-${d.height}\n Z\n `).attr("class",p),y.append("path").attr("d",`M ${d.x},${d.y+g}\n a ${u},${g} 0 0 0 0,${d.height}`).attr("stroke","#666").attr("stroke-width","1px").attr("class",p),x.attr("transform",`translate(${u}, ${-d.height/2})`),y.attr("transform",`translate(${d.width-u}, ${-d.height/2})`),e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim(),a=d.x+d.width-20,s=d.y+10;"@"===t.charAt(0)?(0,r.CP)(h,a,s,t.substr(1)):(0,r.aC)(h,a,s,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y,d.width,d.height,{class:`actor ${L}`},a);let m=e.height;const b=x.select("path:last-child");if(b.node()){const t=b.node().getBBox();e.height=t.height,m=t.height}return m},"drawActorTypeQueue"),C=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+75,l=t.append("g").lower();s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor";const g=e.x+e.width/2,u=i+30;h.append("defs").append("marker").attr("id","filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),h.append("circle").attr("cx",g).attr("cy",u).attr("r",18).attr("fill","#eaeaf7").attr("stroke","#666").attr("stroke-width",1.2),h.append("line").attr("marker-end","url(#filled-head-control)").attr("transform",`translate(${g}, ${u-18})`);const x=h.node().getBBox();return e.height=x.height+2*(a?.sequence?.labelBoxHeight??0),rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+18+(s?5:10),p.width,p.height,{class:`actor ${_}`},a),e.height},"drawActorTypeControl"),Y=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+75,l=t.append("g").lower(),h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor";const g=e.x+e.width/2,u=i+(s?10:25),x=18;h.append("circle").attr("cx",g).attr("cy",u).attr("r",x).attr("width",e.width).attr("height",e.height),h.append("line").attr("x1",g-x).attr("x2",g+x).attr("y1",u+x).attr("y2",u+x).attr("stroke","#333").attr("stroke-width",2);const y=h.node().getBBox();return e.height=y.height+(a?.sequence?.labelBoxHeight??0),s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O),rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+(s?(u-i+x-5)/2:(u+x-i)/2),p.width,p.height,{class:`actor ${_}`},a),h.attr("transform","translate(0, 9)"),e.height},"drawActorTypeEntity"),K=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height+2*a.boxTextMargin,l=t.append("g").lower();let h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();let p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name,d.x=e.x,d.y=i;const g=d.width/4,u=d.width/4,x=g/2,y=x/(2.5+g/50),m=h.append("g"),b=`\n M ${d.x},${d.y+y}\n a ${x},${y} 0 0 0 ${g},0\n a ${x},${y} 0 0 0 -${g},0\n l 0,${u-2*y}\n a ${x},${y} 0 0 0 ${g},0\n l 0,-${u-2*y}\n`;m.append("path").attr("d",b).attr("fill","#eaeaea").attr("stroke","#000").attr("stroke-width",1).attr("class",p),s?m.attr("transform",`translate(${1.5*g}, ${d.height/4-2*y})`):m.attr("transform",`translate(${1.5*g}, ${(d.height+y)/4})`),e.rectData=d,rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y+(s?(d.height+u)/4:(d.height+y)/2),d.width,d.height,{class:`actor ${L}`},a);const T=m.select("path:last-child");if(T.node()){const t=T.node().getBBox();e.height=t.height+(a.sequence.labelBoxHeight??0)}return e.height},"drawActorTypeDatabase"),B=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+80,l=30,h=t.append("g").lower();s||(O++,h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const d=t.append("g");let p=_;p+=s?` ${I}`:` ${w}`,d.attr("class",p),d.attr("name",e.name);const g=(0,r.PB)();g.x=e.x,g.y=i,g.fill="#eaeaea",g.width=e.width,g.height=e.height,g.class="actor",d.append("line").attr("id","actor-man-torso"+O).attr("x1",e.x+e.width/2-75).attr("y1",i+10).attr("x2",e.x+e.width/2-15).attr("y2",i+10),d.append("line").attr("id","actor-man-arms"+O).attr("x1",e.x+e.width/2-75).attr("y1",i+0).attr("x2",e.x+e.width/2-75).attr("y2",i+20),d.append("circle").attr("cx",e.x+e.width/2).attr("cy",i+10).attr("r",l);const u=d.node().getBBox();return e.height=u.height+(a.sequence.labelBoxHeight??0),rt(a,(0,o.Wi)(e.description))(e.description,d,g.x,g.y+(s?11:18),g.width,g.height,{class:`actor ${_}`},a),d.attr("transform","translate(0,22)"),e.height},"drawActorTypeBoundary"),V=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+80,l=t.append("g").lower();s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor",p.rx=3,p.ry=3,h.append("line").attr("id","actor-man-torso"+O).attr("x1",n).attr("y1",i+25).attr("x2",n).attr("y2",i+45),h.append("line").attr("id","actor-man-arms"+O).attr("x1",n-18).attr("y1",i+33).attr("x2",n+18).attr("y2",i+33),h.append("line").attr("x1",n-18).attr("y1",i+60).attr("x2",n).attr("y2",i+45),h.append("line").attr("x1",n).attr("y1",i+45).attr("x2",n+18-2).attr("y2",i+60);const g=h.append("circle");g.attr("cx",e.x+e.width/2),g.attr("cy",i+10),g.attr("r",15),g.attr("width",e.width),g.attr("height",e.height);const u=h.node().getBBox();return e.height=u.height,rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+35,p.width,p.height,{class:`actor ${_}`},a),e.height},"drawActorTypeActor"),F=(0,c.K2)(async function(t,e,a,r){switch(e.type){case"actor":return await V(t,e,a,r);case"participant":return await S(t,e,a,r);case"boundary":return await B(t,e,a,r);case"control":return await C(t,e,a,r);case"entity":return await Y(t,e,a,r);case"database":return await K(t,e,a,r);case"collections":return await R(t,e,a,r);case"queue":return await $(t,e,a,r)}},"drawActor"),W=(0,c.K2)(function(t,e,a){const r=t.append("g");j(r,e),e.name&&rt(a)(e.name,r,e.x,e.y+a.boxTextMargin+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},a),r.lower()},"drawBox"),q=(0,c.K2)(function(t){return t.append("g")},"anchorElement"),z=(0,c.K2)(function(t,e,a,s,i){const n=(0,r.PB)(),o=e.anchored;n.x=e.startx,n.y=e.starty,n.class="activation"+i%3,n.width=e.stopx-e.startx,n.height=a-e.starty,P(o,n)},"drawActivation"),H=(0,c.K2)(async function(t,e,a,s){const{boxMargin:i,boxTextMargin:n,labelBoxHeight:l,labelBoxWidth:h,messageFontFamily:d,messageFontSize:p,messageFontWeight:g}=s,u=t.append("g"),x=(0,c.K2)(function(t,e,a,r){return u.append("line").attr("x1",t).attr("y1",e).attr("x2",a).attr("y2",r).attr("class","loopLine")},"drawLoopLine");x(e.startx,e.starty,e.stopx,e.starty),x(e.stopx,e.starty,e.stopx,e.stopy),x(e.startx,e.stopy,e.stopx,e.stopy),x(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach(function(t){x(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")});let y=(0,r.HT)();y.text=a,y.x=e.startx,y.y=e.starty,y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.anchor="middle",y.valign="middle",y.tspan=!1,y.width=h||50,y.height=l||20,y.textMargin=n,y.class="labelText",M(u,y),y=et(),y.text=e.title,y.x=e.startx+h/2+(e.stopx-e.startx)/2,y.y=e.starty+i+n,y.anchor="middle",y.valign="middle",y.textMargin=n,y.class="loopText",y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.wrap=!0;let m=(0,o.Wi)(y.text)?await A(u,y,e):v(u,y);if(void 0!==e.sectionTitles)for(const[r,c]of Object.entries(e.sectionTitles))if(c.message){y.text=c.message,y.x=e.startx+(e.stopx-e.startx)/2,y.y=e.sections[r].y+i+n,y.class="loopText",y.anchor="middle",y.valign="middle",y.tspan=!1,y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.wrap=e.wrap,(0,o.Wi)(y.text)?(e.starty=e.sections[r].y,await A(u,y,e)):v(u,y);let t=Math.round(m.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));e.sections[r].height+=t-(i+n)}return e.height=Math.round(e.stopy-e.starty),u},"drawLoop"),j=(0,c.K2)(function(t,e){(0,r.lC)(t,e)},"drawBackgroundRect"),U=(0,c.K2)(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),G=(0,c.K2)(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),X=(0,c.K2)(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),J=(0,c.K2)(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),Z=(0,c.K2)(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),Q=(0,c.K2)(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),tt=(0,c.K2)(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),et=(0,c.K2)(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),at=(0,c.K2)(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),rt=function(){function t(t,e,a,r,i,n,o){s(e.append("text").attr("x",a+i/2).attr("y",r+n/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,a,r,i,c,l,h){const{actorFontSize:d,actorFontFamily:p,actorFontWeight:g}=h,[u,x]=(0,n.I5)(d),y=t.split(o.Y2.lineBreakRegex);for(let n=0;nt.height||0))+(0===this.loops.length?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.messages.length?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.notes.length?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:(0,c.K2)(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:(0,c.K2)(function(t){this.boxes.push(t)},"addBox"),addActor:(0,c.K2)(function(t){this.actors.push(t)},"addActor"),addLoop:(0,c.K2)(function(t){this.loops.push(t)},"addLoop"),addMessage:(0,c.K2)(function(t){this.messages.push(t)},"addMessage"),addNote:(0,c.K2)(function(t){this.notes.push(t)},"addNote"),lastActor:(0,c.K2)(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:(0,c.K2)(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:(0,c.K2)(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:(0,c.K2)(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:(0,c.K2)(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,mt((0,o.D7)())},"init"),updateVal:(0,c.K2)(function(t,e,a,r){void 0===t[e]?t[e]=a:t[e]=r(a,t[e])},"updateVal"),updateBounds:(0,c.K2)(function(t,e,a,r){const s=this;let i=0;function n(n){return(0,c.K2)(function(o){i++;const c=s.sequenceItems.length-i+1;s.updateVal(o,"starty",e-c*nt.boxMargin,Math.min),s.updateVal(o,"stopy",r+c*nt.boxMargin,Math.max),s.updateVal(ot.data,"startx",t-c*nt.boxMargin,Math.min),s.updateVal(ot.data,"stopx",a+c*nt.boxMargin,Math.max),"activation"!==n&&(s.updateVal(o,"startx",t-c*nt.boxMargin,Math.min),s.updateVal(o,"stopx",a+c*nt.boxMargin,Math.max),s.updateVal(ot.data,"starty",e-c*nt.boxMargin,Math.min),s.updateVal(ot.data,"stopy",r+c*nt.boxMargin,Math.max))},"updateItemBounds")}(0,c.K2)(n,"updateFn"),this.sequenceItems.forEach(n()),this.activations.forEach(n("activation"))},"updateBounds"),insert:(0,c.K2)(function(t,e,a,r){const s=o.Y2.getMin(t,a),i=o.Y2.getMax(t,a),n=o.Y2.getMin(e,r),c=o.Y2.getMax(e,r);this.updateVal(ot.data,"startx",s,Math.min),this.updateVal(ot.data,"starty",n,Math.min),this.updateVal(ot.data,"stopx",i,Math.max),this.updateVal(ot.data,"stopy",c,Math.max),this.updateBounds(s,n,i,c)},"insert"),newActivation:(0,c.K2)(function(t,e,a){const r=a.get(t.from),s=bt(t.from).length||0,i=r.x+r.width/2+(s-1)*nt.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+nt.activationWidth,stopy:void 0,actor:t.from,anchored:it.anchorElement(e)})},"newActivation"),endActivation:(0,c.K2)(function(t){const e=this.activations.map(function(t){return t.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:(0,c.K2)(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:(0,c.K2)(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:(0,c.K2)(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:(0,c.K2)(function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap},"isLoopOverlap"),addSectionToLoop:(0,c.K2)(function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ot.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:(0,c.K2)(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:(0,c.K2)(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:(0,c.K2)(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=o.Y2.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:(0,c.K2)(function(){return this.verticalPos},"getVerticalPos"),getBounds:(0,c.K2)(function(){return{bounds:this.data,models:this.models}},"getBounds")},ct=(0,c.K2)(async function(t,e){ot.bumpVerticalPos(nt.boxMargin),e.height=nt.boxMargin,e.starty=ot.getVerticalPos();const a=(0,r.PB)();a.x=e.startx,a.y=e.starty,a.width=e.width||nt.width,a.class="note";const s=t.append("g"),i=it.drawRect(s,a),n=(0,r.HT)();n.x=e.startx,n.y=e.starty,n.width=a.width,n.dy="1em",n.text=e.message,n.class="noteText",n.fontFamily=nt.noteFontFamily,n.fontSize=nt.noteFontSize,n.fontWeight=nt.noteFontWeight,n.anchor=nt.noteAlign,n.textMargin=nt.noteMargin,n.valign="center";const c=(0,o.Wi)(n.text)?await A(s,n):v(s,n),l=Math.round(c.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));i.attr("height",l+2*nt.noteMargin),e.height+=l+2*nt.noteMargin,ot.bumpVerticalPos(l+2*nt.noteMargin),e.stopy=e.starty+l+2*nt.noteMargin,e.stopx=e.startx+a.width,ot.insert(e.startx,e.starty,e.stopx,e.stopy),ot.models.addNote(e)},"drawNote"),lt=(0,c.K2)(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),ht=(0,c.K2)(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),dt=(0,c.K2)(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");async function pt(t,e){ot.bumpVerticalPos(10);const{startx:a,stopx:r,message:s}=e,i=o.Y2.splitBreaks(s).length,c=(0,o.Wi)(s),l=c?await(0,o.Dl)(s,(0,o.D7)()):n._K.calculateTextDimensions(s,lt(nt));if(!c){const t=l.height/i;e.height+=t,ot.bumpVerticalPos(t)}let h,d=l.height-10;const p=l.width;if(a===r){h=ot.getVerticalPos()+d,nt.rightAngles||(d+=nt.boxMargin,h=ot.getVerticalPos()+d),d+=30;const t=o.Y2.getMax(p/2,nt.width/2);ot.insert(a-t,ot.getVerticalPos()-10+d,r+t,ot.getVerticalPos()+30+d)}else d+=nt.boxMargin,h=ot.getVerticalPos()+d,ot.insert(a,h-10,r,h);return ot.bumpVerticalPos(d),e.height+=d,e.stopy=e.starty+e.height,ot.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),h}(0,c.K2)(pt,"boundMessage");var gt=(0,c.K2)(async function(t,e,a,s){const{startx:i,stopx:c,starty:l,message:h,type:d,sequenceIndex:p,sequenceVisible:g}=e,u=n._K.calculateTextDimensions(h,lt(nt)),x=(0,r.HT)();x.x=i,x.y=l+10,x.width=c-i,x.class="messageText",x.dy="1em",x.text=h,x.fontFamily=nt.messageFontFamily,x.fontSize=nt.messageFontSize,x.fontWeight=nt.messageFontWeight,x.anchor=nt.messageAlign,x.valign="center",x.textMargin=nt.wrapPadding,x.tspan=!1,(0,o.Wi)(x.text)?await A(t,x,{startx:i,stopx:c,starty:a}):v(t,x);const y=u.width;let m;i===c?m=nt.rightAngles?t.append("path").attr("d",`M ${i},${a} H ${i+o.Y2.getMax(nt.width/2,y/2)} V ${a+25} H ${i}`):t.append("path").attr("d","M "+i+","+a+" C "+(i+60)+","+(a-10)+" "+(i+60)+","+(a+30)+" "+i+","+(a+20)):(m=t.append("line"),m.attr("x1",i),m.attr("y1",a),m.attr("x2",c),m.attr("y2",a)),d===s.db.LINETYPE.DOTTED||d===s.db.LINETYPE.DOTTED_CROSS||d===s.db.LINETYPE.DOTTED_POINT||d===s.db.LINETYPE.DOTTED_OPEN||d===s.db.LINETYPE.BIDIRECTIONAL_DOTTED?(m.style("stroke-dasharray","3, 3"),m.attr("class","messageLine1")):m.attr("class","messageLine0");let b="";if(nt.arrowMarkerAbsolute&&(b=(0,o.ID)(!0)),m.attr("stroke-width",2),m.attr("stroke","none"),m.style("fill","none"),d!==s.db.LINETYPE.SOLID&&d!==s.db.LINETYPE.DOTTED||m.attr("marker-end","url("+b+"#arrowhead)"),d!==s.db.LINETYPE.BIDIRECTIONAL_SOLID&&d!==s.db.LINETYPE.BIDIRECTIONAL_DOTTED||(m.attr("marker-start","url("+b+"#arrowhead)"),m.attr("marker-end","url("+b+"#arrowhead)")),d!==s.db.LINETYPE.SOLID_POINT&&d!==s.db.LINETYPE.DOTTED_POINT||m.attr("marker-end","url("+b+"#filled-head)"),d!==s.db.LINETYPE.SOLID_CROSS&&d!==s.db.LINETYPE.DOTTED_CROSS||m.attr("marker-end","url("+b+"#crosshead)"),g||nt.showSequenceNumbers){if(d===s.db.LINETYPE.BIDIRECTIONAL_SOLID||d===s.db.LINETYPE.BIDIRECTIONAL_DOTTED){const t=6;is&&(s=c.height),c.width+a.x>i&&(i=c.width+a.x)}return{maxHeight:s,maxWidth:i}},"drawActorsPopup"),mt=(0,c.K2)(function(t){(0,o.hH)(nt,t),t.fontFamily&&(nt.actorFontFamily=nt.noteFontFamily=nt.messageFontFamily=t.fontFamily),t.fontSize&&(nt.actorFontSize=nt.noteFontSize=nt.messageFontSize=t.fontSize),t.fontWeight&&(nt.actorFontWeight=nt.noteFontWeight=nt.messageFontWeight=t.fontWeight)},"setConf"),bt=(0,c.K2)(function(t){return ot.activations.filter(function(e){return e.actor===t})},"actorActivations"),Tt=(0,c.K2)(function(t,e){const a=e.get(t),r=bt(t);return[r.reduce(function(t,e){return o.Y2.getMin(t,e.startx)},a.x+a.width/2-1),r.reduce(function(t,e){return o.Y2.getMax(t,e.stopx)},a.x+a.width/2+1)]},"activationBounds");function ft(t,e,a,r,s){ot.bumpVerticalPos(a);let i=r;if(e.id&&e.message&&t[e.id]){const a=t[e.id].width,s=lt(nt);e.message=n._K.wrapLabel(`[${e.message}]`,a-2*nt.wrapPadding,s),e.width=a,e.wrap=!0;const l=n._K.calculateTextDimensions(e.message,s),h=o.Y2.getMax(l.height,nt.labelBoxHeight);i=r+h,c.Rm.debug(`${h} - ${e.message}`)}s(e),ot.bumpVerticalPos(i)}function Et(t,e,a,r,s,i,n){function o(a,r){a.x{t.add(e.from),t.add(e.to)}),m=m.filter(e=>t.has(e))}ut(p,g,u,m,0,b,!1);const I=await Nt(b,g,w,r);function L(t,e){const a=ot.endActivation(t);a.starty+18>e&&(a.starty=e-6,e+=12),it.drawActivation(p,a,e,nt,bt(t.from).length),ot.insert(a.startx,e-10,a.stopx,e)}it.insertArrowHead(p),it.insertArrowCrossHead(p),it.insertArrowFilledHead(p),it.insertSequenceNumber(p),(0,c.K2)(L,"activeEnd");let _=1,P=1;const k=[],N=[];let A=0;for(const o of b){let t,e,a;switch(o.type){case r.db.LINETYPE.NOTE:ot.resetVerticalPos(),e=o.noteModel,await ct(p,e);break;case r.db.LINETYPE.ACTIVE_START:ot.newActivation(o,p,g);break;case r.db.LINETYPE.ACTIVE_END:L(o,ot.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.LOOP_END:t=ot.endLoop(),await it.drawLoop(p,t,"loop",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.RECT_START:ft(I,o,nt.boxMargin,nt.boxMargin,t=>ot.newLoop(void 0,t.message));break;case r.db.LINETYPE.RECT_END:t=ot.endLoop(),N.push(t),ot.models.addLoop(t),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos());break;case r.db.LINETYPE.OPT_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.OPT_END:t=ot.endLoop(),await it.drawLoop(p,t,"opt",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.ALT_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.ALT_ELSE:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,t=>ot.addSectionToLoop(t));break;case r.db.LINETYPE.ALT_END:t=ot.endLoop(),await it.drawLoop(p,t,"alt",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t)),ot.saveVerticalPos();break;case r.db.LINETYPE.PAR_AND:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,t=>ot.addSectionToLoop(t));break;case r.db.LINETYPE.PAR_END:t=ot.endLoop(),await it.drawLoop(p,t,"par",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.AUTONUMBER:_=o.message.start||_,P=o.message.step||P,o.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.CRITICAL_OPTION:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,t=>ot.addSectionToLoop(t));break;case r.db.LINETYPE.CRITICAL_END:t=ot.endLoop(),await it.drawLoop(p,t,"critical",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.BREAK_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.BREAK_END:t=ot.endLoop(),await it.drawLoop(p,t,"break",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;default:try{a=o.msgModel,a.starty=ot.getVerticalPos(),a.sequenceIndex=_,a.sequenceVisible=r.db.showSequenceNumbers();const t=await pt(0,a);Et(o,a,t,A,g,u,x),k.push({messageModel:a,lineStartY:t}),ot.models.addMessage(a)}catch(Y){c.Rm.error("error while drawing message",Y)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(o.type)&&(_+=P),A++}c.Rm.debug("createdActors",u),c.Rm.debug("destroyedActors",x),await xt(p,g,m,!1);for(const o of k)await gt(p,o.messageModel,o.lineStartY,r);nt.mirrorActors&&await xt(p,g,m,!0),N.forEach(t=>it.drawBackgroundRect(p,t)),D(p,g,m,nt);for(const o of ot.models.boxes){o.height=ot.getVerticalPos()-o.y,ot.insert(o.x,o.y,o.x+o.width,o.height);const t=2*nt.boxMargin;o.startx=o.x-t,o.starty=o.y-.25*t,o.stopx=o.startx+o.width+2*t,o.stopy=o.starty+o.height+.75*t,o.stroke="rgb(0,0,0, 0.5)",it.drawBox(p,o,nt)}f&&ot.bumpVerticalPos(nt.boxMargin);const v=yt(p,g,m,d),{bounds:M}=ot.getBounds();void 0===M.startx&&(M.startx=0),void 0===M.starty&&(M.starty=0),void 0===M.stopx&&(M.stopx=0),void 0===M.stopy&&(M.stopy=0);let O=M.stopy-M.starty;O{const a=lt(nt);let r=e.actorKeys.reduce((e,a)=>e+(t.get(a).width+(t.get(a).margin||0)),0);r+=8*nt.boxMargin,r-=2*nt.boxTextMargin,e.wrap&&(e.name=n._K.wrapLabel(e.name,r-2*nt.wrapPadding,a));const i=n._K.calculateTextDimensions(e.name,a);s=o.Y2.getMax(i.height,s);const c=o.Y2.getMax(r,i.width+2*nt.wrapPadding);if(e.margin=nt.boxTextMargin,rt.textMaxHeight=s),o.Y2.getMax(r,nt.height)}(0,c.K2)(_t,"calculateActorMargins");var Pt=(0,c.K2)(async function(t,e,a){const r=e.get(t.from),s=e.get(t.to),i=r.x,l=s.x,h=t.wrap&&t.message;let d=(0,o.Wi)(t.message)?await(0,o.Dl)(t.message,(0,o.D7)()):n._K.calculateTextDimensions(h?n._K.wrapLabel(t.message,nt.width,ht(nt)):t.message,ht(nt));const p={width:h?nt.width:o.Y2.getMax(nt.width,d.width+2*nt.noteMargin),height:0,startx:r.x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===a.db.PLACEMENT.RIGHTOF?(p.width=h?o.Y2.getMax(nt.width,d.width):o.Y2.getMax(r.width/2+s.width/2,d.width+2*nt.noteMargin),p.startx=i+(r.width+nt.actorMargin)/2):t.placement===a.db.PLACEMENT.LEFTOF?(p.width=h?o.Y2.getMax(nt.width,d.width+2*nt.noteMargin):o.Y2.getMax(r.width/2+s.width/2,d.width+2*nt.noteMargin),p.startx=i-p.width+(r.width-nt.actorMargin)/2):t.to===t.from?(d=n._K.calculateTextDimensions(h?n._K.wrapLabel(t.message,o.Y2.getMax(nt.width,r.width),ht(nt)):t.message,ht(nt)),p.width=h?o.Y2.getMax(nt.width,r.width):o.Y2.getMax(r.width,nt.width,d.width+2*nt.noteMargin),p.startx=i+(r.width-p.width)/2):(p.width=Math.abs(i+r.width/2-(l+s.width/2))+nt.actorMargin,p.startx=i2,u=(0,c.K2)(t=>h?-t:t,"adjustValue");t.from===t.to?p=d:(t.activate&&!g&&(p+=u(nt.activationWidth/2-1)),[a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(p+=u(3)),[a.db.LINETYPE.BIDIRECTIONAL_SOLID,a.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(d-=u(3)));const x=[r,s,i,l],y=Math.abs(d-p);t.wrap&&t.message&&(t.message=n._K.wrapLabel(t.message,o.Y2.getMax(y+2*nt.wrapPadding,nt.width),lt(nt)));const m=n._K.calculateTextDimensions(t.message,lt(nt));return{width:o.Y2.getMax(t.wrap?0:m.width+2*nt.wrapPadding,y+2*nt.wrapPadding,nt.width),height:0,startx:d,stopx:p,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,x),toBounds:Math.max.apply(null,x)}},"buildMessageModel"),Nt=(0,c.K2)(async function(t,e,a,r){const s={},i=[];let n,l,h;for(const c of t){switch(c.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:i.push({id:c.id,msg:c.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:c.message&&(n=i.pop(),s[n.id]=n,s[c.id]=n,i.push(n));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:n=i.pop(),s[n.id]=n;break;case r.db.LINETYPE.ACTIVE_START:{const t=e.get(c.from?c.from:c.to.actor),a=bt(c.from?c.from:c.to.actor).length,r=t.x+t.width/2+(a-1)*nt.activationWidth/2,s={startx:r,stopx:r+nt.activationWidth,actor:c.from,enabled:!0};ot.activations.push(s)}break;case r.db.LINETYPE.ACTIVE_END:{const t=ot.activations.map(t=>t.actor).lastIndexOf(c.from);ot.activations.splice(t,1).splice(0,1)}}void 0!==c.placement?(l=await Pt(c,e,r),c.noteModel=l,i.forEach(t=>{n=t,n.from=o.Y2.getMin(n.from,l.startx),n.to=o.Y2.getMax(n.to,l.startx+l.width),n.width=o.Y2.getMax(n.width,Math.abs(n.from-n.to))-nt.labelBoxWidth})):(h=kt(c,e,r),c.msgModel=h,h.startx&&h.stopx&&i.length>0&&i.forEach(t=>{if(n=t,h.startx===h.stopx){const t=e.get(c.from),a=e.get(c.to);n.from=o.Y2.getMin(t.x-h.width/2,t.x-t.width/2,n.from),n.to=o.Y2.getMax(a.x+h.width/2,a.x+t.width/2,n.to),n.width=o.Y2.getMax(n.width,Math.abs(n.to-n.from))-nt.labelBoxWidth}else n.from=o.Y2.getMin(h.startx,n.from),n.to=o.Y2.getMax(h.stopx,n.to),n.width=o.Y2.getMax(n.width,h.width)-nt.labelBoxWidth}))}return ot.activations=[],c.Rm.debug("Loop type widths:",s),s},"calculateLoopBounds"),At={bounds:ot,drawActors:xt,drawActorsPopup:yt,setConf:mt,draw:wt},vt={parser:p,get db(){return new f},renderer:At,styles:E,init:(0,c.K2)(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,(0,o.XV)({sequence:{wrap:t.wrap}}))},"init")}}}]); \ No newline at end of file diff --git a/developer/assets/js/7873.3af72c28.js b/developer/assets/js/7873.3af72c28.js new file mode 100644 index 0000000..bda5556 --- /dev/null +++ b/developer/assets/js/7873.3af72c28.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[7873],{7873:(e,n,t)=>{t.r(n),t.d(n,{render:()=>k});var r=t(5164),i=(t(8698),t(5894)),a=t(3245),o=(t(2387),t(92),t(3226),t(7633)),d=t(797),s=t(2334),c=t(9592),g=t(53),l=t(4722);t(7981);function f(e){var n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:h(e),edges:p(e)};return c.A(e.graph())||(n.value=g.A(e.graph())),n}function h(e){return l.A(e.nodes(),function(n){var t=e.node(n),r=e.parent(n),i={v:n};return c.A(t)||(i.value=t),c.A(r)||(i.parent=r),i})}function p(e){return l.A(e.edges(),function(n){var t=e.edge(n),r={v:n.v,w:n.w};return c.A(n.name)||(r.name=n.name),c.A(t)||(r.value=t),r})}var u=t(697),m=new Map,w=new Map,R=new Map,v=(0,d.K2)(()=>{w.clear(),R.clear(),m.clear()},"clear"),y=(0,d.K2)((e,n)=>{const t=w.get(n)||[];return d.Rm.trace("In isDescendant",n," ",e," = ",t.includes(e)),t.includes(e)},"isDescendant"),X=(0,d.K2)((e,n)=>{const t=w.get(n)||[];return d.Rm.info("Descendants of ",n," is ",t),d.Rm.info("Edge is ",e),e.v!==n&&e.w!==n&&(t?t.includes(e.v)||y(e.v,n)||y(e.w,n)||t.includes(e.w):(d.Rm.debug("Tilt, ",n,",not in descendants"),!1))},"edgeInCluster"),b=(0,d.K2)((e,n,t,r)=>{d.Rm.warn("Copying children of ",e,"root",r,"data",n.node(e),r);const i=n.children(e)||[];e!==r&&i.push(e),d.Rm.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach(i=>{if(n.children(i).length>0)b(i,n,t,r);else{const a=n.node(i);d.Rm.info("cp ",i," to ",r," with parent ",e),t.setNode(i,a),r!==n.parent(i)&&(d.Rm.warn("Setting parent",i,n.parent(i)),t.setParent(i,n.parent(i))),e!==r&&i!==e?(d.Rm.debug("Setting parent",i,e),t.setParent(i,e)):(d.Rm.info("In copy ",e,"root",r,"data",n.node(e),r),d.Rm.debug("Not Setting parent for node=",i,"cluster!==rootId",e!==r,"node!==clusterId",i!==e));const o=n.edges(i);d.Rm.debug("Copying Edges",o),o.forEach(i=>{d.Rm.info("Edge",i);const a=n.edge(i.v,i.w,i.name);d.Rm.info("Edge data",a,r);try{X(i,r)?(d.Rm.info("Copying as ",i.v,i.w,a,i.name),t.setEdge(i.v,i.w,a,i.name),d.Rm.info("newGraph edges ",t.edges(),t.edge(t.edges()[0]))):d.Rm.info("Skipping copy of edge ",i.v,"--\x3e",i.w," rootId: ",r," clusterId:",e)}catch(o){d.Rm.error(o)}})}d.Rm.debug("Removing node",i),n.removeNode(i)})},"copy"),E=(0,d.K2)((e,n)=>{const t=n.children(e);let r=[...t];for(const i of t)R.set(i,e),r=[...r,...E(i,n)];return r},"extractDescendants"),N=(0,d.K2)((e,n,t)=>{const r=e.edges().filter(e=>e.v===n||e.w===n),i=e.edges().filter(e=>e.v===t||e.w===t),a=r.map(e=>({v:e.v===n?t:e.v,w:e.w===n?n:e.w})),o=i.map(e=>({v:e.v,w:e.w}));return a.filter(e=>o.some(n=>e.v===n.v&&e.w===n.w))},"findCommonEdges"),C=(0,d.K2)((e,n,t)=>{const r=n.children(e);if(d.Rm.trace("Searching children of id ",e,r),r.length<1)return e;let i;for(const a of r){const e=C(a,n,t),r=N(n,t,e);if(e){if(!(r.length>0))return e;i=e}}return i},"findNonClusterChild"),S=(0,d.K2)(e=>m.has(e)&&m.get(e).externalConnections&&m.has(e)?m.get(e).id:e,"getAnchorId"),x=(0,d.K2)((e,n)=>{if(!e||n>10)d.Rm.debug("Opting out, no graph ");else{d.Rm.debug("Opting in, graph "),e.nodes().forEach(function(n){e.children(n).length>0&&(d.Rm.warn("Cluster identified",n," Replacement id in edges: ",C(n,e,n)),w.set(n,E(n,e)),m.set(n,{id:C(n,e,n),clusterData:e.node(n)}))}),e.nodes().forEach(function(n){const t=e.children(n),r=e.edges();t.length>0?(d.Rm.debug("Cluster identified",n,w),r.forEach(e=>{y(e.v,n)^y(e.w,n)&&(d.Rm.warn("Edge: ",e," leaves cluster ",n),d.Rm.warn("Descendants of XXX ",n,": ",w.get(n)),m.get(n).externalConnections=!0)})):d.Rm.debug("Not a cluster ",n,w)});for(let n of m.keys()){const t=m.get(n).id,r=e.parent(t);r!==n&&m.has(r)&&!m.get(r).externalConnections&&(m.get(n).id=r)}e.edges().forEach(function(n){const t=e.edge(n);d.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),d.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let r=n.v,i=n.w;if(d.Rm.warn("Fix XXX",m,"ids:",n.v,n.w,"Translating: ",m.get(n.v)," --- ",m.get(n.w)),m.get(n.v)||m.get(n.w)){if(d.Rm.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),r=S(n.v),i=S(n.w),e.removeEdge(n.v,n.w,n.name),r!==n.v){const i=e.parent(r);m.get(i).externalConnections=!0,t.fromCluster=n.v}if(i!==n.w){const r=e.parent(i);m.get(r).externalConnections=!0,t.toCluster=n.w}d.Rm.warn("Fix Replacing with XXX",r,i,n.name),e.setEdge(r,i,t,n.name)}}),d.Rm.warn("Adjusted Graph",f(e)),I(e,0),d.Rm.trace(m)}},"adjustClustersAndEdges"),I=(0,d.K2)((e,n)=>{if(d.Rm.warn("extractor - ",n,f(e),e.children("D")),n>10)return void d.Rm.error("Bailing out");let t=e.nodes(),r=!1;for(const i of t){const n=e.children(i);r=r||n.length>0}if(r){d.Rm.debug("Nodes = ",t,n);for(const r of t)if(d.Rm.debug("Extracting node",r,m,m.has(r)&&!m.get(r).externalConnections,!e.parent(r),e.node(r),e.children("D")," Depth ",n),m.has(r))if(!m.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){d.Rm.warn("Cluster without external connections, without a parent and with children",r,n);let t="TB"===e.graph().rankdir?"LR":"TB";m.get(r)?.clusterData?.dir&&(t=m.get(r).clusterData.dir,d.Rm.warn("Fixing dir",m.get(r).clusterData.dir,t));const i=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:t,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});d.Rm.warn("Old graph before copy",f(e)),b(r,e,i,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:m.get(r).clusterData,label:m.get(r).label,graph:i}),d.Rm.warn("New graph after copy node: (",r,")",f(i)),d.Rm.debug("Old graph after copy",f(e))}else d.Rm.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!m.get(r).externalConnections," no parent: ",!e.parent(r)," children ",e.children(r)&&e.children(r).length>0,e.children("D"),n),d.Rm.debug(m);else d.Rm.debug("Not a cluster",r,n);t=e.nodes(),d.Rm.warn("New list of nodes",t);for(const r of t){const t=e.node(r);d.Rm.warn(" Now next level",r,t),t?.clusterNode&&I(t.graph,n+1)}}else d.Rm.debug("Done, no node has children",e.nodes())},"extractor"),D=(0,d.K2)((e,n)=>{if(0===n.length)return[];let t=Object.assign([],n);return n.forEach(n=>{const r=e.children(n),i=D(e,r);t=[...t,...i]}),t},"sorter"),A=(0,d.K2)(e=>D(e,e.children()),"sortNodesByHierarchy"),O=(0,d.K2)(async(e,n,t,o,c,g)=>{d.Rm.warn("Graph in recursive render:XAX",f(n),c);const l=n.graph().rankdir;d.Rm.trace("Dir in recursive render - dir:",l);const h=e.insert("g").attr("class","root");n.nodes()?d.Rm.info("Recursive render XXX",n.nodes()):d.Rm.info("No nodes found for",n),n.edges().length>0&&d.Rm.info("Recursive edges",n.edge(n.edges()[0]));const p=h.insert("g").attr("class","clusters"),u=h.insert("g").attr("class","edgePaths"),w=h.insert("g").attr("class","edgeLabels"),R=h.insert("g").attr("class","nodes");await Promise.all(n.nodes().map(async function(e){const r=n.node(e);if(void 0!==c){const t=JSON.parse(JSON.stringify(c.clusterData));d.Rm.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",t.height,"\nParent cluster",c.height),n.setNode(c.id,t),n.parent(e)||(d.Rm.trace("Setting parent",e,c.id),n.setParent(e,c.id,t))}if(d.Rm.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),r?.clusterNode){d.Rm.info("Cluster identified XBX",e,r.width,n.node(e));const{ranksep:a,nodesep:s}=n.graph();r.graph.setGraph({...r.graph.graph(),ranksep:a+25,nodesep:s});const c=await O(R,r.graph,t,o,n.node(e),g),l=c.elem;(0,i.lC)(r,l),r.diff=c.diff||0,d.Rm.info("New compound node after recursive render XAX",e,"width",r.width,"height",r.height),(0,i.U7)(l,r)}else n.children(e).length>0?(d.Rm.trace("Cluster - the non recursive path XBX",e,r.id,r,r.width,"Graph:",n),d.Rm.trace(C(r.id,n)),m.set(r.id,{id:C(r.id,n),node:r})):(d.Rm.trace("Node - the non recursive path XAX",e,R,n.node(e),l),await(0,i.on)(R,n.node(e),{config:g,dir:l}))}));const v=(0,d.K2)(async()=>{const e=n.edges().map(async function(e){const t=n.edge(e.v,e.w,e.name);d.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),d.Rm.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(n.edge(e))),d.Rm.info("Fix",m,"ids:",e.v,e.w,"Translating: ",m.get(e.v),m.get(e.w)),await(0,r.jP)(w,t)});await Promise.all(e)},"processEdges");await v(),d.Rm.info("Graph before layout:",JSON.stringify(f(n))),d.Rm.info("############################################# XXX"),d.Rm.info("### Layout ### XXX"),d.Rm.info("############################################# XXX"),(0,s.Zp)(n),d.Rm.info("Graph after layout:",JSON.stringify(f(n)));let y=0,{subGraphTitleTotalMargin:X}=(0,a.O)(g);return await Promise.all(A(n).map(async function(e){const t=n.node(e);if(d.Rm.info("Position XBX => "+e+": ("+t.x,","+t.y,") width: ",t.width," height: ",t.height),t?.clusterNode)t.y+=X,d.Rm.info("A tainted cluster node XBX1",e,t.id,t.width,t.height,t.x,t.y,n.parent(e)),m.get(t.id).node=t,(0,i.U_)(t);else if(n.children(e).length>0){d.Rm.info("A pure cluster node XBX1",e,t.id,t.x,t.y,t.width,t.height,n.parent(e)),t.height+=X,n.node(t.parentId);const r=t?.padding/2||0,a=t?.labelBBox?.height||0,o=a-r||0;d.Rm.debug("OffsetY",o,"labelHeight",a,"halfPadding",r),await(0,i.U)(p,t),m.get(t.id).node=t}else{const e=n.node(t.parentId);t.y+=X/2,d.Rm.info("A regular node XBX1 - using the padding",t.id,"parent",t.parentId,t.width,t.height,t.x,t.y,"offsetY",t.offsetY,"parent",e,e?.offsetY,t),(0,i.U_)(t)}})),n.edges().forEach(function(e){const i=n.edge(e);d.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(i),i),i.points.forEach(e=>e.y+=X/2);const a=n.node(e.v);var s=n.node(e.w);const c=(0,r.Jo)(u,i,m,t,a,s,o);(0,r.T_)(i,c)}),n.nodes().forEach(function(e){const t=n.node(e);d.Rm.info(e,t.type,t.diff),t.isGroup&&(y=t.diff)}),d.Rm.warn("Returning from recursive render XAX",h,y),{elem:h,diff:y}},"recursiveRender"),k=(0,d.K2)(async(e,n)=>{const t=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=n.select("g");(0,r.g0)(a,e.markers,e.type,e.diagramId),(0,i.gh)(),(0,r.IU)(),(0,i.IU)(),v(),e.nodes.forEach(e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)}),d.Rm.debug("Edges:",e.edges),e.edges.forEach(e=>{if(e.start===e.end){const n=e.start,r=n+"---"+n+"---1",i=n+"---"+n+"---2",a=t.node(n);t.setNode(r,{domId:r,id:r,parentId:a.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(r,a.parentId),t.setNode(i,{domId:i,id:i,parentId:a.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(i,a.parentId);const o=structuredClone(e),d=structuredClone(e),s=structuredClone(e);o.label="",o.arrowTypeEnd="none",o.id=n+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=n+"-cyclic-special-mid",s.label="",a.isGroup&&(o.fromCluster=n,s.toCluster=n),s.id=n+"-cyclic-special-2",s.arrowTypeStart="none",t.setEdge(n,r,o,n+"-cyclic-special-0"),t.setEdge(r,i,d,n+"-cyclic-special-1"),t.setEdge(i,n,s,n+"-cyce&&(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)),this.labelHeight>i&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-i)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-i),this.setHeight(this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==n.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var r=new h(e,i),n=t.inverseTransformPoint(r);this.setLocation(n.x,n.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";function r(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(t){this.x=t},r.prototype.setY=function(t){this.y=t},r.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=r},function(t,e,i){"use strict";var r=i(2),n=i(10),o=i(0),s=i(6),a=i(3),h=i(1),l=i(13),g=i(12),u=i(11);function c(t,e,i){r.call(this,i),this.estimatedSize=n.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var d in c.prototype=Object.create(r.prototype),r)c[d]=r[d];c.prototype.getNodes=function(){return this.nodes},c.prototype.getEdges=function(){return this.edges},c.prototype.getGraphManager=function(){return this.graphManager},c.prototype.getParent=function(){return this.parent},c.prototype.getLeft=function(){return this.left},c.prototype.getRight=function(){return this.right},c.prototype.getTop=function(){return this.top},c.prototype.getBottom=function(){return this.bottom},c.prototype.isConnected=function(){return this.isConnected},c.prototype.add=function(t,e,i){if(null==e&&null==i){var r=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(r)>-1)throw"Node already in graph!";return r.owner=this,this.getNodes().push(r),r}var n=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(n.source=e,n.target=i,n.isInterGraph=!1,this.getEdges().push(n),e.edges.push(n),i!=e&&i.edges.push(n),n)},c.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),r=i.length,n=0;n-1&&g>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(g,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},c.prototype.updateLeftTop=function(){for(var t,e,i,r=n.MAX_VALUE,o=n.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h(t=l.getTop())&&(r=t),o>(e=l.getLeft())&&(o=e)}return r==n.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=r-i,new g(this.left,this.top))},c.prototype.updateBounds=function(t){for(var e,i,r,o,s,a=n.MAX_VALUE,h=-n.MAX_VALUE,g=n.MAX_VALUE,u=-n.MAX_VALUE,c=this.nodes,d=c.length,p=0;p(e=f.getLeft())&&(a=e),h<(i=f.getRight())&&(h=i),g>(r=f.getTop())&&(g=r),u<(o=f.getBottom())&&(u=o)}var y=new l(a,g,h-a,u-g);a==n.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=c[0].getParent().paddingLeft?c[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},c.calculateBounds=function(t){for(var e,i,r,o,s=n.MAX_VALUE,a=-n.MAX_VALUE,h=n.MAX_VALUE,g=-n.MAX_VALUE,u=t.length,c=0;c(e=d.getLeft())&&(s=e),a<(i=d.getRight())&&(a=i),h>(r=d.getTop())&&(h=r),g<(o=d.getBottom())&&(g=o)}return new l(s,h,a-s,g-h)},c.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},c.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},c.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,r=0;r=this.nodes.length){var h=0;n.forEach(function(e){e.owner==t&&h++}),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=c},function(t,e,i){"use strict";var r,n=i(1);function o(t){r=i(5),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,r,n){if(null==i&&null==r&&null==n){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}n=i,i=t;var o=(r=e).getOwner(),s=n.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,r,n);if(i.isInterGraph=!0,i.source=r,i.target=n,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof r){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]s)return i[0]=r,i[1]=h,i[2]=o,i[3]=A,!1;if(no)return i[0]=a,i[1]=n,i[2]=E,i[3]=s,!1;if(ro?(i[0]=g,i[1]=u,L=!0):(i[0]=l,i[1]=h,L=!0):O===D&&(r>o?(i[0]=a,i[1]=h,L=!0):(i[0]=c,i[1]=u,L=!0)),-I===D?o>r?(i[2]=v,i[3]=A,m=!0):(i[2]=E,i[3]=y,m=!0):I===D&&(o>r?(i[2]=f,i[3]=y,m=!0):(i[2]=N,i[3]=A,m=!0)),L&&m)return!1;if(r>o?n>s?(w=this.getCardinalDirection(O,D,4),R=this.getCardinalDirection(I,D,2)):(w=this.getCardinalDirection(-O,D,3),R=this.getCardinalDirection(-I,D,1)):n>s?(w=this.getCardinalDirection(-O,D,1),R=this.getCardinalDirection(-I,D,3)):(w=this.getCardinalDirection(O,D,2),R=this.getCardinalDirection(I,D,4)),!L)switch(w){case 1:M=h,C=r+-p/D,i[0]=C,i[1]=M;break;case 2:C=c,M=n+d*D,i[0]=C,i[1]=M;break;case 3:M=u,C=r+p/D,i[0]=C,i[1]=M;break;case 4:C=g,M=n+-d*D,i[0]=C,i[1]=M}if(!m)switch(R){case 1:x=y,G=o+-_/D,i[2]=G,i[3]=x;break;case 2:G=N,x=s+T*D,i[2]=G,i[3]=x;break;case 3:x=A,G=o+_/D,i[2]=G,i[3]=x;break;case 4:G=v,x=s+-T*D,i[2]=G,i[3]=x}}return!1},n.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},n.getIntersection=function(t,e,i,n){if(null==n)return this.getIntersection2(t,e,i);var o,s,a,h,l,g,u,c=t.x,d=t.y,p=e.x,f=e.y,y=i.x,E=i.y,v=n.x,A=n.y;return 0===(u=(o=f-d)*(h=y-v)-(s=A-E)*(a=c-p))?null:new r((a*(g=v*E-y*A)-h*(l=p*d-c*f))/u,(s*l-o*g)/u)},n.angleOfVector=function(t,e,i,r){var n=void 0;return t!==i?(n=Math.atan((r-e)/(i-t)),i0?1:t<0?-1:0},r.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},r.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=r},function(t,e,i){"use strict";function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,t.exports=r},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i0&&e;){for(a.push(l[0]);a.length>0&&e;){var g=a[0];a.splice(0,1),s.add(g);var u=g.getEdges();for(o=0;o-1&&l.splice(f,1)}s=new Set,h=new Map}else t=[]}return t},c.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,r=this.graphManager.calcLowestCommonAncestor(t.source,t.target),n=0;n0){for(var n=this.edgeToDummyNodes.get(i),o=0;o=0&&e.splice(u,1),g.getNeighborsList().forEach(function(t){if(i.indexOf(t)<0){var e=r.get(t)-1;1==e&&h.push(t),r.set(t,e)}})}i=i.concat(h),1!=e.length&&2!=e.length||(n=!0,o=e[0])}return o},c.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=c},function(t,e,i){"use strict";function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=1e4*Math.sin(r.seed++),r.x-Math.floor(r.x)},t.exports=r},function(t,e,i){"use strict";var r=i(4);function n(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}n.prototype.getWorldOrgX=function(){return this.lworldOrgX},n.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},n.prototype.getWorldOrgY=function(){return this.lworldOrgY},n.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},n.prototype.getWorldExtX=function(){return this.lworldExtX},n.prototype.setWorldExtX=function(t){this.lworldExtX=t},n.prototype.getWorldExtY=function(){return this.lworldExtY},n.prototype.setWorldExtY=function(t){this.lworldExtY=t},n.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},n.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},n.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},n.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},n.prototype.getDeviceExtX=function(){return this.ldeviceExtX},n.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},n.prototype.getDeviceExtY=function(){return this.ldeviceExtY},n.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},n.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},n.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},n.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},n.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},n.prototype.inverseTransformPoint=function(t){return new r(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=n},function(t,e,i){"use strict";var r=i(15),n=i(7),o=i(0),s=i(8),a=i(9);function h(){r.call(this),this.useSmartIdealEdgeLengthCalculation=n.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=n.DEFAULT_EDGE_LENGTH,this.springConstant=n.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=n.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=n.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=n.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=n.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=n.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*n.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=n.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=n.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=n.MAX_ITERATIONS}for(var l in h.prototype=Object.create(r.prototype),r)h[l]=r[l];h.prototype.initParameters=function(){r.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=n.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,r,s,a,h=this.getGraphManager().getAllEdges(),l=0;ln.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*n.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-n.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>n.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(n.COOLING_ADAPTATION_FACTOR,1-(t-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*(1-n.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%n.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*n,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*n*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=a.length||l>=a[0].length))for(var g=0;gt}}]),t}();t.exports=o},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=r,this.mismatch_penalty=n,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s=0;i--){var r=this.listeners[i];r.event===t&&r.callback===e&&this.listeners.splice(i,1)}},n.emit=function(t,e){for(var i=0;i0&&(s=i.getGraphManager().add(i.newGraph(),o),this.processChildrenList(s,u,i))}},u.prototype.stop=function(){return this.stopped=!0,this};var d=function(t){t("layout","cose-bilkent",u)};"undefined"!=typeof cytoscape&&d(cytoscape),t.exports=d}])},t.exports=r(i(7799))},7799:function(t,e,i){var r;r=function(t){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=7)}([function(e,i){e.exports=t},function(t,e,i){"use strict";var r=i(0).FDLayoutConstants;function n(){}for(var o in r)n[o]=r[o];n.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,n.DEFAULT_RADIAL_SEPARATION=r.DEFAULT_EDGE_LENGTH,n.DEFAULT_COMPONENT_SEPERATION=60,n.TILE=!0,n.TILING_PADDING_VERTICAL=10,n.TILING_PADDING_HORIZONTAL=10,n.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=n},function(t,e,i){"use strict";var r=i(0).FDLayoutEdge;function n(t,e,i){r.call(this,t,e,i)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).LGraph;function n(t,e,i){r.call(this,t,e,i)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).LGraphManager;function n(t){r.call(this,t)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).FDLayoutNode,n=i(0).IMath;function o(t,e,i,n){r.call(this,t,e,i,n)}for(var s in o.prototype=Object.create(r.prototype),r)o[s]=r[s];o.prototype.move=function(){var t=this.graphManager.getLayout();this.displacementX=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*n.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*n.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,r=this.getChild().getNodes(),n=0;n0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},v.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},v.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i1)for(a=0;ar&&(r=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new c(g.WORLD_CENTER_X-s.x/2,g.WORLD_CENTER_Y-s.y/2))},v.radialLayout=function(t,e,i){var r=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);v.branchRadialLayout(e,null,0,359,0,r);var n=y.calculateBounds(t),o=new E;o.setDeviceOrgX(n.getMinX()),o.setDeviceOrgY(n.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s1;){var E=y[0];y.splice(0,1);var A=g.indexOf(E);A>=0&&g.splice(A,1),p--,u--}c=null!=e?(g.indexOf(y[0])+1)%p:0;for(var N=Math.abs(r-i)/u,T=c;d!=u;T=++T%p){var _=g[T].getOtherEnd(t);if(_!=e){var L=(i+d*N)%360,m=(L+N)%360;v.branchRadialLayout(_,t,L,m,n+o,o),d++}}},v.maxDiagonalInTree=function(t){for(var e=p.MIN_VALUE,i=0;ie&&(e=r)}return e},v.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},v.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],r=this.graphManager.getAllNodes(),n=0;n1){var r="DummyCompound_"+i;t.memberGroups[r]=e[i];var n=e[i][0].getParent(),o=new s(t.graphManager);o.id=r,o.paddingLeft=n.paddingLeft||0,o.paddingRight=n.paddingRight||0,o.paddingBottom=n.paddingBottom||0,o.paddingTop=n.paddingTop||0,t.idToDummyNode[r]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=n.getChild();h.add(o);for(var l=0;l=0;t--){var e=this.compoundOrder[t],i=e.id,r=e.paddingLeft,n=e.paddingTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,r,n)}},v.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(i){var r=t.idToDummyNode[i],n=r.paddingLeft,o=r.paddingTop;t.adjustLocations(e[i],r.rect.x,r.rect.y,n,o)})},v.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var r=i.getNodes(),n=0;n0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},v.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,r=0;rh&&(h=g.rect.height)}i+=h+t.verticalPadding}},v.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(r){var n=e[r];i.tiledMemberPack[r]=i.tileNodes(t[r],n.paddingLeft+n.paddingRight),n.rect.width=i.tiledMemberPack[r].width,n.rect.height=i.tiledMemberPack[r].height})},v.prototype.tileNodes=function(t,e){var i={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:h.TILING_PADDING_VERTICAL,horizontalPadding:h.TILING_PADDING_HORIZONTAL};t.sort(function(t,e){return t.rect.width*t.rect.height>e.rect.width*e.rect.height?-1:t.rect.width*t.rect.height0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},v.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,r=0;ri&&(e=r,i=t.rowWidth[r]);return e},v.prototype.canAddHorizontal=function(t,e,i){var r=this.getShortestRowIndex(t);if(r<0)return!0;var n=t.rowWidth[r];if(n+t.horizontalPadding+e<=t.width)return!0;var o,s,a=0;return t.rowHeight[r]0&&(a=i+t.verticalPadding-t.rowHeight[r]),o=t.width-n>=e+t.horizontalPadding?(t.height+a)/(n+e+t.horizontalPadding):(t.height+a)/t.width,a=i+t.verticalPadding,(s=t.widtho&&e!=i){r.splice(-1,1),t.rows[i].push(n),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;as&&(s=r[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]0)for(var g=n;g<=o;g++)h[0]+=this.grid[g][s-1].length+this.grid[g][s].length-1;if(o0)for(g=s;g<=a;g++)h[3]+=this.grid[n-1][g].length+this.grid[n][g].length-1;for(var u,c,d=p.MAX_VALUE,f=0;f{"use strict";i.r(e),i.d(e,{render:()=>p});var r=i(797),n=i(165),o=i(3457),s=i(451);function a(t,e){t.forEach(t=>{const i={id:t.id,labelText:t.label,height:t.height,width:t.width,padding:t.padding??0};Object.keys(t).forEach(e=>{["id","label","height","width","padding","x","y"].includes(e)||(i[e]=t[e])}),e.add({group:"nodes",data:i,position:{x:t.x??0,y:t.y??0}})})}function h(t,e){t.forEach(t=>{const i={id:t.id,source:t.start,target:t.end};Object.keys(t).forEach(e=>{["id","start","end"].includes(e)||(i[e]=t[e])}),e.add({group:"edges",data:i})})}function l(t){return new Promise(e=>{const i=(0,s.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),o=(0,n.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});i.remove(),a(t.nodes,o),h(t.edges,o),o.nodes().forEach(function(t){t.layoutDimensions=()=>{const e=t.data();return{w:e.width,h:e.height}}});o.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),o.ready(t=>{r.Rm.info("Cytoscape ready",t),e(o)})})}function g(t){return t.nodes().map(t=>{const e=t.data(),i=t.position(),r={id:e.id,x:i.x,y:i.y};return Object.keys(e).forEach(t=>{"id"!==t&&(r[t]=e[t])}),r})}function u(t){return t.edges().map(t=>{const e=t.data(),i=t._private.rscratch,r={id:e.id,source:e.source,target:e.target,startX:i.startX,startY:i.startY,midX:i.midX,midY:i.midY,endX:i.endX,endY:i.endY};return Object.keys(e).forEach(t=>{["id","source","target"].includes(t)||(r[t]=e[t])}),r})}async function c(t,e){r.Rm.debug("Starting cose-bilkent layout algorithm");try{d(t);const e=await l(t),i=g(e),n=u(e);return r.Rm.debug(`Layout completed: ${i.length} nodes, ${n.length} edges`),{nodes:i,edges:n}}catch(i){throw r.Rm.error("Error in cose-bilkent layout algorithm:",i),i}}function d(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(t.edges))throw new Error("Edges array is required in layout data");return!0}n.A.use(o),(0,r.K2)(a,"addNodes"),(0,r.K2)(h,"addEdges"),(0,r.K2)(l,"createCytoscapeInstance"),(0,r.K2)(g,"extractPositionedNodes"),(0,r.K2)(u,"extractPositionedEdges"),(0,r.K2)(c,"executeCoseBilkentLayout"),(0,r.K2)(d,"validateLayoutData");var p=(0,r.K2)(async(t,e,{insertCluster:i,insertEdge:r,insertEdgeLabel:n,insertMarkers:o,insertNode:s,log:a,positionEdgeLabel:h},{algorithm:l})=>{const g={},u={},d=e.select("g");o(d,t.markers,t.type,t.diagramId);const p=d.insert("g").attr("class","subgraphs"),f=d.insert("g").attr("class","edgePaths"),y=d.insert("g").attr("class","edgeLabels"),E=d.insert("g").attr("class","nodes");a.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map(async e=>{if(e.isGroup){const t={...e};u[e.id]=t,g[e.id]=t,await i(p,e)}else{const i={...e};g[e.id]=i;const r=await s(E,e,{config:t.config,dir:t.direction||"TB"}),n=r.node().getBBox();i.width=n.width,i.height=n.height,i.domId=r,a.debug(`Node ${e.id} dimensions: ${n.width}x${n.height}`)}})),a.debug("Running cose-bilkent layout algorithm");const v={...t,nodes:t.nodes.map(t=>{const e=g[t.id];return{...t,width:e.width,height:e.height}})},A=await c(v,t.config);a.debug("Positioning nodes based on layout results"),A.nodes.forEach(t=>{const e=g[t.id];e?.domId&&(e.domId.attr("transform",`translate(${t.x}, ${t.y})`),e.x=t.x,e.y=t.y,a.debug(`Positioned node ${e.id} at center (${t.x}, ${t.y})`))}),A.edges.forEach(e=>{const i=t.edges.find(t=>t.id===e.id);i&&(i.points=[{x:e.startX,y:e.startY},{x:e.midX,y:e.midY},{x:e.endX,y:e.endY}])}),a.debug("Inserting and positioning edges"),await Promise.all(t.edges.map(async e=>{await n(y,e);const i=g[e.start??""],o=g[e.end??""];if(i&&o){const n=A.edges.find(t=>t.id===e.id);if(n){a.debug("APA01 positionedEdge",n);const s={...e},l=r(f,s,u,t.type,i,o,t.diagramId);h(s,l)}else{const n={...e,points:[{x:i.x||0,y:i.y||0},{x:o.x||0,y:o.y||0}]},s=r(f,n,u,t.type,i,o,t.diagramId);h(n,s)}}})),a.debug("Cose-bilkent rendering completed")},"render")}}]); \ No newline at end of file diff --git a/developer/assets/js/8142.749f55ea.js b/developer/assets/js/8142.749f55ea.js new file mode 100644 index 0000000..9eb1fe7 --- /dev/null +++ b/developer/assets/js/8142.749f55ea.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8142],{8142:(t,e,a)=>{a.d(e,{diagram:()=>R});var i,n=a(4616),r=(a(9625),a(1152),a(45),a(5164),a(8698),a(5894),a(3245),a(2387),a(92),a(3226)),d=a(7633),s=a(797),o=a(451),g=a(2334),p=a(697),h=(0,s.K2)(t=>t.append("circle").attr("class","start-state").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit),"drawStartState"),c=(0,s.K2)(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",(0,d.D7)().state.textHeight).attr("class","divider").attr("x2",2*(0,d.D7)().state.textHeight).attr("y1",0).attr("y2",0),"drawDivider"),l=(0,s.K2)((t,e)=>{const a=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+2*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),i=a.node().getBBox();return t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",i.width+2*(0,d.D7)().state.padding).attr("height",i.height+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),a},"drawSimpleState"),x=(0,s.K2)((t,e)=>{const a=(0,s.K2)(function(t,e,a){const i=t.append("tspan").attr("x",2*(0,d.D7)().state.padding).text(e);a||i.attr("dy",(0,d.D7)().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+1.3*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),n=i.height,r=t.append("text").attr("x",(0,d.D7)().state.padding).attr("y",n+.4*(0,d.D7)().state.padding+(0,d.D7)().state.dividerMargin+(0,d.D7)().state.textHeight).attr("class","state-description");let o=!0,g=!0;e.descriptions.forEach(function(t){o||(a(r,t,g),g=!1),o=!1});const p=t.append("line").attr("x1",(0,d.D7)().state.padding).attr("y1",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("y2",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("class","descr-divider"),h=r.node().getBBox(),c=Math.max(h.width,i.width);return p.attr("x2",c+3*(0,d.D7)().state.padding),t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",c+2*(0,d.D7)().state.padding).attr("height",h.height+n+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),t},"drawDescrState"),D=(0,s.K2)((t,e,a)=>{const i=(0,d.D7)().state.padding,n=2*(0,d.D7)().state.padding,r=t.node().getBBox(),s=r.width,o=r.x,g=t.append("text").attr("x",0).attr("y",(0,d.D7)().state.titleShift).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),p=g.node().getBBox().width+n;let h,c=Math.max(p,s);c===s&&(c+=n);const l=t.node().getBBox();e.doc,h=o-i,p>s&&(h=(s-c)/2+i),Math.abs(o-l.x)s&&(h=o-(p-s)/2);const x=1-(0,d.D7)().state.textHeight;return t.insert("rect",":first-child").attr("x",h).attr("y",x).attr("class",a?"alt-composit":"composit").attr("width",c).attr("height",l.height+(0,d.D7)().state.textHeight+(0,d.D7)().state.titleShift+1).attr("rx","0"),g.attr("x",h+i),p<=s&&g.attr("x",o+(c-n)/2-p/2+i),t.insert("rect",":first-child").attr("x",h).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",3*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t.insert("rect",":first-child").attr("x",h).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",l.height+3+2*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t},"addTitleAndBox"),u=(0,s.K2)(t=>(t.append("circle").attr("class","end-state-outer").attr("r",(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2)),"drawEndState"),f=(0,s.K2)((t,e)=>{let a=(0,d.D7)().state.forkWidth,i=(0,d.D7)().state.forkHeight;if(e.parentId){let t=a;a=i,i=t}return t.append("rect").style("stroke","black").style("fill","black").attr("width",a).attr("height",i).attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding)},"drawForkJoinState"),y=(0,s.K2)((t,e,a,i)=>{let n=0;const r=i.append("text");r.style("text-anchor","start"),r.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");const o=s.split(d.Y2.lineBreakRegex);let g=1.25*(0,d.D7)().state.noteMargin;for(const p of o){const t=p.trim();if(t.length>0){const i=r.append("tspan");if(i.text(t),0===g){g+=i.node().getBBox().height}n+=g,i.attr("x",e+(0,d.D7)().state.noteMargin),i.attr("y",a+n+1.25*(0,d.D7)().state.noteMargin)}}return{textWidth:r.node().getBBox().width,textHeight:n}},"_drawLongText"),w=(0,s.K2)((t,e)=>{e.attr("class","state-note");const a=e.append("rect").attr("x",0).attr("y",(0,d.D7)().state.padding),i=e.append("g"),{textWidth:n,textHeight:r}=y(t,0,0,i);return a.attr("height",r+2*(0,d.D7)().state.noteMargin),a.attr("width",n+2*(0,d.D7)().state.noteMargin),a},"drawNote"),m=(0,s.K2)(function(t,e){const a=e.id,i={id:a,label:e.id,width:0,height:0},n=t.append("g").attr("id",a).attr("class","stateGroup");"start"===e.type&&h(n),"end"===e.type&&u(n),"fork"!==e.type&&"join"!==e.type||f(n,e),"note"===e.type&&w(e.note.text,n),"divider"===e.type&&c(n),"default"===e.type&&0===e.descriptions.length&&l(n,e),"default"===e.type&&e.descriptions.length>0&&x(n,e);const r=n.node().getBBox();return i.width=r.width+2*(0,d.D7)().state.padding,i.height=r.height+2*(0,d.D7)().state.padding,i},"drawState"),b=0,B=(0,s.K2)(function(t,e,a){const i=(0,s.K2)(function(t){switch(t){case n.u4.relationType.AGGREGATION:return"aggregation";case n.u4.relationType.EXTENSION:return"extension";case n.u4.relationType.COMPOSITION:return"composition";case n.u4.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(t=>!Number.isNaN(t.y));const g=e.points,p=(0,o.n8j)().x(function(t){return t.x}).y(function(t){return t.y}).curve(o.qrM),h=t.append("path").attr("d",p(g)).attr("id","edge"+b).attr("class","transition");let c="";if((0,d.D7)().state.arrowMarkerAbsolute&&(c=(0,d.ID)(!0)),h.attr("marker-end","url("+c+"#"+i(n.u4.relationType.DEPENDENCY)+"End)"),void 0!==a.title){const i=t.append("g").attr("class","stateLabel"),{x:n,y:o}=r._K.calcLabelPosition(e.points),g=d.Y2.getRows(a.title);let p=0;const h=[];let c=0,l=0;for(let t=0;t<=g.length;t++){const e=i.append("text").attr("text-anchor","middle").text(g[t]).attr("x",n).attr("y",o+p),a=e.node().getBBox();if(c=Math.max(c,a.width),l=Math.min(l,a.x),s.Rm.info(a.x,n,o+p),0===p){const t=e.node().getBBox();p=t.height,s.Rm.info("Title height",p,o)}h.push(e)}let x=p*g.length;if(g.length>1){const t=(g.length-1)*p*.5;h.forEach((e,a)=>e.attr("y",o+a*p-t)),x=p*g.length}const D=i.node().getBBox();i.insert("rect",":first-child").attr("class","box").attr("x",n-c/2-(0,d.D7)().state.padding/2).attr("y",o-x/2-(0,d.D7)().state.padding/2-3.5).attr("width",c+(0,d.D7)().state.padding).attr("height",x+(0,d.D7)().state.padding),s.Rm.info(D)}b++},"drawEdge"),k={},S=(0,s.K2)(function(){},"setConf"),N=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),E=(0,s.K2)(function(t,e,a,n){i=(0,d.D7)().state;const r=(0,d.D7)().securityLevel;let g;"sandbox"===r&&(g=(0,o.Ltv)("#i"+e));const p="sandbox"===r?(0,o.Ltv)(g.nodes()[0].contentDocument.body):(0,o.Ltv)("body"),h="sandbox"===r?g.nodes()[0].contentDocument:document;s.Rm.debug("Rendering diagram "+t);const c=p.select(`[id='${e}']`);N(c);const l=n.db.getRootDoc();M(l,c,void 0,!1,p,h,n);const x=i.padding,D=c.node().getBBox(),u=D.width+2*x,f=D.height+2*x,y=1.75*u;(0,d.a$)(c,f,y,i.useMaxWidth),c.attr("viewBox",`${D.x-i.padding} ${D.y-i.padding} `+u+" "+f)},"draw"),v=(0,s.K2)(t=>t?t.length*i.fontSizeFactor:1,"getLabelWidth"),M=(0,s.K2)((t,e,a,n,r,o,h)=>{const c=new p.T({compound:!0,multigraph:!0});let l,x=!0;for(l=0;l{const e=t.parentElement;let a=0,i=0;e&&(e.parentElement&&(a=e.parentElement.getBBox().width),i=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(i)&&(i=0)),t.setAttribute("x1",0-i+8),t.setAttribute("x2",a-i-8)})}else s.Rm.debug("No Node "+t+": "+JSON.stringify(c.node(t)))});let S=b.getBBox();c.edges().forEach(function(t){void 0!==t&&void 0!==c.edge(t)&&(s.Rm.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(c.edge(t))),B(e,c.edge(t),c.edge(t).relation))}),S=b.getBBox();const N={id:a||"root",label:a||"root",width:0,height:0};return N.width=S.width+2*i.padding,N.height=S.height+2*i.padding,s.Rm.debug("Doc rendered",N,c),N},"renderDoc"),K={setConf:S,draw:E},R={parser:n.Zk,get db(){return new n.u4(1)},renderer:K,styles:n.tM,init:(0,s.K2)(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/developer/assets/js/8249.3ddf6e4d.js b/developer/assets/js/8249.3ddf6e4d.js new file mode 100644 index 0000000..5c13554 --- /dev/null +++ b/developer/assets/js/8249.3ddf6e4d.js @@ -0,0 +1 @@ +(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8249],{1709:function(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={45:(t,e,i)=>{var n={};n.layoutBase=i(551),n.CoSEConstants=i(806),n.CoSEEdge=i(767),n.CoSEGraph=i(880),n.CoSEGraphManager=i(578),n.CoSELayout=i(765),n.CoSENode=i(991),n.ConstraintHandler=i(902),t.exports=n},806:(t,e,i)=>{var n=i(551).FDLayoutConstants;function r(){}for(var o in n)r[o]=n[o];r.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,r.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,r.DEFAULT_COMPONENT_SEPERATION=60,r.TILE=!0,r.TILING_PADDING_VERTICAL=10,r.TILING_PADDING_HORIZONTAL=10,r.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,r.ENFORCE_CONSTRAINTS=!0,r.APPLY_LAYOUT=!0,r.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,r.TREE_REDUCTION_ON_INCREMENTAL=!0,r.PURE_INCREMENTAL=r.DEFAULT_INCREMENTAL,t.exports=r},767:(t,e,i)=>{var n=i(551).FDLayoutEdge;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},880:(t,e,i)=>{var n=i(551).LGraph;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},578:(t,e,i)=>{var n=i(551).LGraphManager;function r(t){n.call(this,t)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},765:(t,e,i)=>{var n=i(551).FDLayout,r=i(578),o=i(880),s=i(991),a=i(767),h=i(806),l=i(902),d=i(551).FDLayoutConstants,c=i(551).LayoutConstants,g=i(551).Point,u=i(551).PointD,f=i(551).DimensionD,p=i(551).Layout,y=i(551).Integer,v=i(551).IGeometry,m=i(551).LGraph,E=i(551).Transform,N=i(551).LinkedList;function T(){n.call(this),this.toBeTiled={},this.constraints={}}for(var A in T.prototype=Object.create(n.prototype),n)T[A]=n[A];T.prototype.newGraphManager=function(){var t=new r(this);return this.graphManager=t,t},T.prototype.newGraph=function(t){return new o(null,this.graphManager,t)},T.prototype.newNode=function(t){return new s(this.graphManager,t)},T.prototype.newEdge=function(t){return new a(null,null,t)},T.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=d.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=d.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=d.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},T.prototype.initSpringEmbedder=function(){n.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/d.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},T.prototype.layout=function(){return c.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},T.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental)h.TREE_REDUCTION_ON_INCREMENTAL&&(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)}),this.graphManager.setAllNodesToApplyGravitation(i));else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(l.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),h.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%d.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),h.PURE_INCREMENTAL?this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),h.PURE_INCREMENTAL?this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,n=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,n),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i0&&this.updateDisplacements(),e=0;e0&&(n.fixedNodeWeight=o)}if(this.constraints.relativePlacementConstraint){var s=new Map,a=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(e){t.fixedNodesOnHorizontal.add(e),t.fixedNodesOnVertical.add(e)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical){var l=this.constraints.alignmentConstraint.vertical;for(i=0;i=2*t.length/3;n--)e=Math.floor(Math.random()*(n+1)),i=t[n],t[n]=t[e],t[e]=i;return t},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(e){if(e.left){var i=s.has(e.left)?s.get(e.left):e.left,n=s.has(e.right)?s.get(e.right):e.right;t.nodesInRelativeHorizontal.includes(i)||(t.nodesInRelativeHorizontal.push(i),t.nodeToRelativeConstraintMapHorizontal.set(i,[]),t.dummyToNodeForVerticalAlignment.has(i)?t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(i)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(i).getCenterX())),t.nodesInRelativeHorizontal.includes(n)||(t.nodesInRelativeHorizontal.push(n),t.nodeToRelativeConstraintMapHorizontal.set(n,[]),t.dummyToNodeForVerticalAlignment.has(n)?t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(n)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(n).getCenterX())),t.nodeToRelativeConstraintMapHorizontal.get(i).push({right:n,gap:e.gap}),t.nodeToRelativeConstraintMapHorizontal.get(n).push({left:i,gap:e.gap})}else{var r=a.has(e.top)?a.get(e.top):e.top,o=a.has(e.bottom)?a.get(e.bottom):e.bottom;t.nodesInRelativeVertical.includes(r)||(t.nodesInRelativeVertical.push(r),t.nodeToRelativeConstraintMapVertical.set(r,[]),t.dummyToNodeForHorizontalAlignment.has(r)?t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(r)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(r).getCenterY())),t.nodesInRelativeVertical.includes(o)||(t.nodesInRelativeVertical.push(o),t.nodeToRelativeConstraintMapVertical.set(o,[]),t.dummyToNodeForHorizontalAlignment.has(o)?t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(o)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(o).getCenterY())),t.nodeToRelativeConstraintMapVertical.get(r).push({bottom:o,gap:e.gap}),t.nodeToRelativeConstraintMapVertical.get(o).push({top:r,gap:e.gap})}});else{var c=new Map,g=new Map;this.constraints.relativePlacementConstraint.forEach(function(t){if(t.left){var e=s.has(t.left)?s.get(t.left):t.left,i=s.has(t.right)?s.get(t.right):t.right;c.has(e)?c.get(e).push(i):c.set(e,[i]),c.has(i)?c.get(i).push(e):c.set(i,[e])}else{var n=a.has(t.top)?a.get(t.top):t.top,r=a.has(t.bottom)?a.get(t.bottom):t.bottom;g.has(n)?g.get(n).push(r):g.set(n,[r]),g.has(r)?g.get(r).push(n):g.set(r,[n])}});var u=function(t,e){var i=[],n=[],r=new N,o=new Set,s=0;return t.forEach(function(a,h){if(!o.has(h)){i[s]=[],n[s]=!1;var l=h;for(r.push(l),o.add(l),i[s].push(l);0!=r.length;)l=r.shift(),e.has(l)&&(n[s]=!0),t.get(l).forEach(function(t){o.has(t)||(r.push(t),o.add(t),i[s].push(t))});s++}}),{components:i,isFixed:n}},f=u(c,t.fixedNodesOnHorizontal);this.componentsOnHorizontal=f.components,this.fixedComponentsOnHorizontal=f.isFixed;var p=u(g,t.fixedNodesOnVertical);this.componentsOnVertical=p.components,this.fixedComponentsOnVertical=p.isFixed}}},T.prototype.updateDisplacements=function(){var t=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(e){var i=t.idToNodeMap.get(e.nodeId);i.displacementX=0,i.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var e=this.constraints.alignmentConstraint.vertical,i=0;i1)for(a=0;an&&(n=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new u(c.WORLD_CENTER_X-s.x/2,c.WORLD_CENTER_Y-s.y/2))},T.radialLayout=function(t,e,i){var n=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(e,null,0,359,0,n);var r=m.calculateBounds(t),o=new E;o.setDeviceOrgX(r.getMinX()),o.setDeviceOrgY(r.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s1;){var y=p[0];p.splice(0,1);var m=d.indexOf(y);m>=0&&d.splice(m,1),f--,c--}g=null!=e?(d.indexOf(p[0])+1)%f:0;for(var E=Math.abs(n-i)/c,N=g;u!=c;N=++N%f){var A=d[N].getOtherEnd(t);if(A!=e){var w=(i+u*E)%360,L=(w+E)%360;T.branchRadialLayout(A,t,w,L,r+o,o),u++}}},T.maxDiagonalInTree=function(t){for(var e=y.MIN_VALUE,i=0;ie&&(e=n)}return e},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],n=this.graphManager.getAllNodes(),r=0;r1){var n="DummyCompound_"+i;t.memberGroups[n]=e[i];var r=e[i][0].getParent(),o=new s(t.graphManager);o.id=n,o.paddingLeft=r.paddingLeft||0,o.paddingRight=r.paddingRight||0,o.paddingBottom=r.paddingBottom||0,o.paddingTop=r.paddingTop||0,t.idToDummyNode[n]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=r.getChild();h.add(o);for(var l=0;lr?(n.rect.x-=(n.labelWidth-r)/2,n.setWidth(n.labelWidth),n.labelMarginLeft=(n.labelWidth-r)/2):"right"==n.labelPosHorizontal&&n.setWidth(r+n.labelWidth)),n.labelHeight&&("top"==n.labelPosVertical?(n.rect.y-=n.labelHeight,n.setHeight(o+n.labelHeight),n.labelMarginTop=n.labelHeight):"center"==n.labelPosVertical&&n.labelHeight>o?(n.rect.y-=(n.labelHeight-o)/2,n.setHeight(n.labelHeight),n.labelMarginTop=(n.labelHeight-o)/2):"bottom"==n.labelPosVertical&&n.setHeight(o+n.labelHeight))}})},T.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],i=e.id,n=e.paddingLeft,r=e.paddingTop,o=e.labelMarginLeft,s=e.labelMarginTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,n,r,o,s)}},T.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(i){var n=t.idToDummyNode[i],r=n.paddingLeft,o=n.paddingTop,s=n.labelMarginLeft,a=n.labelMarginTop;t.adjustLocations(e[i],n.rect.x,n.rect.y,r,o,s,a)})},T.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var n=i.getNodes(),r=0;r0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},T.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,n=0;nd&&(d=g.rect.height)}i+=d+t.verticalPadding}},T.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(n){var r=e[n];if(i.tiledMemberPack[n]=i.tileNodes(t[n],r.paddingLeft+r.paddingRight),r.rect.width=i.tiledMemberPack[n].width,r.rect.height=i.tiledMemberPack[n].height,r.setCenter(i.tiledMemberPack[n].centerX,i.tiledMemberPack[n].centerY),r.labelMarginLeft=0,r.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var o=r.rect.width,s=r.rect.height;r.labelWidth&&("left"==r.labelPosHorizontal?(r.rect.x-=r.labelWidth,r.setWidth(o+r.labelWidth),r.labelMarginLeft=r.labelWidth):"center"==r.labelPosHorizontal&&r.labelWidth>o?(r.rect.x-=(r.labelWidth-o)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-o)/2):"right"==r.labelPosHorizontal&&r.setWidth(o+r.labelWidth)),r.labelHeight&&("top"==r.labelPosVertical?(r.rect.y-=r.labelHeight,r.setHeight(s+r.labelHeight),r.labelMarginTop=r.labelHeight):"center"==r.labelPosVertical&&r.labelHeight>s?(r.rect.y-=(r.labelHeight-s)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-s)/2):"bottom"==r.labelPosVertical&&r.setHeight(s+r.labelHeight))}})},T.prototype.tileNodes=function(t,e){var i=this.tileNodesByFavoringDim(t,e,!0),n=this.tileNodesByFavoringDim(t,e,!1),r=this.getOrgRatio(i);return this.getOrgRatio(n)a&&(a=t.getWidth())});var l,d=o/r,c=s/r,g=Math.pow(i-n,2)+4*(d+n)*(c+i)*r,u=(n-i+Math.sqrt(g))/(2*(d+n));e?(l=Math.ceil(u))==u&&l++:l=Math.floor(u);var f=l*(d+n)-n;return a>f&&(f=a),f+=2*n},T.prototype.tileNodesByFavoringDim=function(t,e,i){var n=h.TILING_PADDING_VERTICAL,r=h.TILING_PADDING_HORIZONTAL,o=h.TILING_COMPARE_BY,s={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:n,horizontalPadding:r,centerX:0,centerY:0};o&&(s.idealRowWidth=this.calcIdealRowWidth(t,i));var a=function(t){return t.rect.width*t.rect.height},l=function(t,e){return a(e)-a(t)};t.sort(function(t,e){var i=l;return s.idealRowWidth?(i=o)(t.id,e.id):i(t,e)});for(var d=0,c=0,g=0;g0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},T.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,n=0;ni&&(e=n,i=t.rowWidth[n]);return e},T.prototype.canAddHorizontal=function(t,e,i){if(t.idealRowWidth){var n=t.rows.length-1;return t.rowWidth[n]+e+t.horizontalPadding<=t.idealRowWidth}var r=this.getShortestRowIndex(t);if(r<0)return!0;var o=t.rowWidth[r];if(o+t.horizontalPadding+e<=t.width)return!0;var s,a,h=0;return t.rowHeight[r]0&&(h=i+t.verticalPadding-t.rowHeight[r]),s=t.width-o>=e+t.horizontalPadding?(t.height+h)/(o+e+t.horizontalPadding):(t.height+h)/t.width,h=i+t.verticalPadding,(a=t.widtho&&e!=i){n.splice(-1,1),t.rows[i].push(r),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;as&&(s=n[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]0)for(var c=r;c<=o;c++)l[0]+=this.grid[c][s-1].length+this.grid[c][s].length-1;if(o0)for(c=s;c<=a;c++)l[3]+=this.grid[r-1][c].length+this.grid[r][c].length-1;for(var g,u,f=y.MAX_VALUE,p=0;p{var n=i(551).FDLayoutNode,r=i(551).IMath;function o(t,e,i,r){n.call(this,t,e,i,r)}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];o.prototype.calculateDisplacement=function(){var t=this.graphManager.getLayout();null!=this.getChild()&&this.fixedNodeWeight?(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,n=this.getChild().getNodes(),r=0;r{function n(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e0){var o=0;n.forEach(function(t){"horizontal"==e?(c.set(t,h.has(t)?l[h.get(t)]:r.get(t)),o+=c.get(t)):(c.set(t,h.has(t)?d[h.get(t)]:r.get(t)),o+=c.get(t))}),o/=n.length,t.forEach(function(t){i.has(t)||c.set(t,o)})}else{var s=0;t.forEach(function(t){s+="horizontal"==e?h.has(t)?l[h.get(t)]:r.get(t):h.has(t)?d[h.get(t)]:r.get(t)}),s/=t.length,t.forEach(function(t){c.set(t,s)})}});for(var f=function(){var n=u.shift();t.get(n).forEach(function(t){if(c.get(t.id)s&&(s=m),Ea&&(a=E)}}catch(_){u=!0,f=_}finally{try{!g&&y.return&&y.return()}finally{if(u)throw f}}var N=(n+s)/2-(o+a)/2,T=!0,A=!1,w=void 0;try{for(var L,C=t[Symbol.iterator]();!(T=(L=C.next()).done);T=!0){var I=L.value;c.set(I,c.get(I)+N)}}catch(_){A=!0,w=_}finally{try{!T&&C.return&&C.return()}finally{if(A)throw w}}})}return c},v=function(t){var e=0,i=0,n=0,r=0;if(t.forEach(function(t){t.left?l[h.get(t.left)]-l[h.get(t.right)]>=0?e++:i++:d[h.get(t.top)]-d[h.get(t.bottom)]>=0?n++:r++}),e>i&&n>r)for(var o=0;oi)for(var s=0;sr)for(var a=0;a1)e.fixedNodeConstraint.forEach(function(t,e){T[e]=[t.position.x,t.position.y],A[e]=[l[h.get(t.nodeId)],d[h.get(t.nodeId)]]}),w=!0;else if(e.alignmentConstraint)!function(){var t=0;if(e.alignmentConstraint.vertical){for(var i=e.alignmentConstraint.vertical,r=function(e){var r=new Set;i[e].forEach(function(t){r.add(t)});var o=new Set([].concat(n(r)).filter(function(t){return C.has(t)})),s=void 0;s=o.size>0?l[h.get(o.values().next().value)]:p(r).x,i[e].forEach(function(e){T[t]=[s,d[h.get(e)]],A[t]=[l[h.get(e)],d[h.get(e)]],t++})},o=0;o0?l[h.get(r.values().next().value)]:p(i).y,s[e].forEach(function(e){T[t]=[l[h.get(e)],o],A[t]=[l[h.get(e)],d[h.get(e)]],t++})},c=0;cx&&(x=M[D].length,O=D);if(x<_.size/2)v(e.relativePlacementConstraint),w=!1,L=!1;else{var R=new Map,b=new Map,F=[];M[O].forEach(function(t){I.get(t).forEach(function(e){"horizontal"==e.direction?(R.has(t)?R.get(t).push(e):R.set(t,[e]),R.has(e.id)||R.set(e.id,[]),F.push({left:t,right:e.id})):(b.has(t)?b.get(t).push(e):b.set(t,[e]),b.has(e.id)||b.set(e.id,[]),F.push({top:t,bottom:e.id}))})}),v(F),L=!1;var G=y(R,"horizontal"),S=y(b,"vertical");M[O].forEach(function(t,e){A[e]=[l[h.get(t)],d[h.get(t)]],T[e]=[],G.has(t)?T[e][0]=G.get(t):T[e][0]=l[h.get(t)],S.has(t)?T[e][1]=S.get(t):T[e][1]=d[h.get(t)]}),w=!0}}if(w){for(var P,U=s.transpose(T),Y=s.transpose(A),k=0;k0){var j={x:0,y:0};e.fixedNodeConstraint.forEach(function(t,e){var i,n,r={x:l[h.get(t.nodeId)],y:d[h.get(t.nodeId)]},o=t.position,s=(n=r,{x:(i=o).x-n.x,y:i.y-n.y});j.x+=s.x,j.y+=s.y}),j.x/=e.fixedNodeConstraint.length,j.y/=e.fixedNodeConstraint.length,l.forEach(function(t,e){l[e]+=j.x}),d.forEach(function(t,e){d[e]+=j.y}),e.fixedNodeConstraint.forEach(function(t){l[h.get(t.nodeId)]=t.position.x,d[h.get(t.nodeId)]=t.position.y})}if(e.alignmentConstraint){if(e.alignmentConstraint.vertical)for(var $=e.alignmentConstraint.vertical,q=function(t){var e=new Set;$[t].forEach(function(t){e.add(t)});var i=new Set([].concat(n(e)).filter(function(t){return C.has(t)})),r=void 0;r=i.size>0?l[h.get(i.values().next().value)]:p(e).x,e.forEach(function(t){C.has(t)||(l[h.get(t)]=r)})},K=0;K<$.length;K++)q(K);if(e.alignmentConstraint.horizontal)for(var Z=e.alignmentConstraint.horizontal,Q=function(t){var e=new Set;Z[t].forEach(function(t){e.add(t)});var i=new Set([].concat(n(e)).filter(function(t){return C.has(t)})),r=void 0;r=i.size>0?d[h.get(i.values().next().value)]:p(e).y,e.forEach(function(t){C.has(t)||(d[h.get(t)]=r)})},J=0;J{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(45);return n})()},t.exports=n(i(6679))},5871:(t,e,i)=>{"use strict";function n(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}i.d(e,{S:()=>n}),(0,i(797).K2)(n,"populateCommonDb")},6527:function(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={658:t=>{t.exports=null!=Object.assign?Object.assign.bind(Object):function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;n{var n=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var i=[],n=!0,r=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(i.push(s.value),!e||i.length!==e);n=!0);}catch(h){r=!0,o=h}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=i(140).layoutBase.LinkedList,o={getTopMostNodes:function(t){for(var e={},i=0;i0&&l.merge(t)});for(var d=0;d1){l=a[0],d=l.connectedEdges().length,a.forEach(function(t){t.connectedEdges().length0&&n.set("dummy"+(n.size+1),u),f},relocateComponent:function(t,e,i){if(!i.fixedNodeConstraint){var r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;if("draft"==i.quality){var h=!0,l=!1,d=void 0;try{for(var c,g=e.nodeIndexes[Symbol.iterator]();!(h=(c=g.next()).done);h=!0){var u=c.value,f=n(u,2),p=f[0],y=f[1],v=i.cy.getElementById(p);if(v){var m=v.boundingBox(),E=e.xCoords[y]-m.w/2,N=e.xCoords[y]+m.w/2,T=e.yCoords[y]-m.h/2,A=e.yCoords[y]+m.h/2;Eo&&(o=N),Ta&&(a=A)}}}catch(_){l=!0,d=_}finally{try{!h&&g.return&&g.return()}finally{if(l)throw d}}var w=t.x-(o+r)/2,L=t.y-(a+s)/2;e.xCoords=e.xCoords.map(function(t){return t+w}),e.yCoords=e.yCoords.map(function(t){return t+L})}else{Object.keys(e).forEach(function(t){var i=e[t],n=i.getRect().x,h=i.getRect().x+i.getRect().width,l=i.getRect().y,d=i.getRect().y+i.getRect().height;no&&(o=h),la&&(a=d)});var C=t.x-(o+r)/2,I=t.y-(a+s)/2;Object.keys(e).forEach(function(t){var i=e[t];i.setCenter(i.getCenterX()+C,i.getCenterY()+I)})}}},calcBoundingBox:function(t,e,i,n){for(var r=Number.MAX_SAFE_INTEGER,o=Number.MIN_SAFE_INTEGER,s=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER,h=void 0,l=void 0,d=void 0,c=void 0,g=t.descendants().not(":parent"),u=g.length,f=0;f(h=e[n.get(p.id())]-p.width()/2)&&(r=h),o<(l=e[n.get(p.id())]+p.width()/2)&&(o=l),s>(d=i[n.get(p.id())]-p.height()/2)&&(s=d),a<(c=i[n.get(p.id())]+p.height()/2)&&(a=c)}var y={};return y.topLeftX=r,y.topLeftY=s,y.width=o-r,y.height=a-s,y},calcParentsWithoutChildren:function(t,e){var i=t.collection();return e.nodes(":parent").forEach(function(t){var e=!1;t.children().forEach(function(t){"none"!=t.css("display")&&(e=!0)}),e||i.merge(t)}),i}};t.exports=o},816:(t,e,i)=>{var n=i(548),r=i(140).CoSELayout,o=i(140).CoSENode,s=i(140).layoutBase.PointD,a=i(140).layoutBase.DimensionD,h=i(140).layoutBase.LayoutConstants,l=i(140).layoutBase.FDLayoutConstants,d=i(140).CoSEConstants;t.exports={coseLayout:function(t,e){var i=t.cy,c=t.eles,g=c.nodes(),u=c.edges(),f=void 0,p=void 0,y=void 0,v={};t.randomize&&(f=e.nodeIndexes,p=e.xCoords,y=e.yCoords);var m=function(t){return"function"==typeof t},E=function(t,e){return m(t)?t(e):t},N=n.calcParentsWithoutChildren(i,c);null!=t.nestingFactor&&(d.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.nestingFactor),null!=t.gravity&&(d.DEFAULT_GRAVITY_STRENGTH=l.DEFAULT_GRAVITY_STRENGTH=t.gravity),null!=t.numIter&&(d.MAX_ITERATIONS=l.MAX_ITERATIONS=t.numIter),null!=t.gravityRange&&(d.DEFAULT_GRAVITY_RANGE_FACTOR=l.DEFAULT_GRAVITY_RANGE_FACTOR=t.gravityRange),null!=t.gravityCompound&&(d.DEFAULT_COMPOUND_GRAVITY_STRENGTH=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.gravityCompound),null!=t.gravityRangeCompound&&(d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.gravityRangeCompound),null!=t.initialEnergyOnIncremental&&(d.DEFAULT_COOLING_FACTOR_INCREMENTAL=l.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.initialEnergyOnIncremental),null!=t.tilingCompareBy&&(d.TILING_COMPARE_BY=t.tilingCompareBy),"proof"==t.quality?h.QUALITY=2:h.QUALITY=0,d.NODE_DIMENSIONS_INCLUDE_LABELS=l.NODE_DIMENSIONS_INCLUDE_LABELS=h.NODE_DIMENSIONS_INCLUDE_LABELS=t.nodeDimensionsIncludeLabels,d.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!t.randomize,d.ANIMATE=l.ANIMATE=h.ANIMATE=t.animate,d.TILE=t.tile,d.TILING_PADDING_VERTICAL="function"==typeof t.tilingPaddingVertical?t.tilingPaddingVertical.call():t.tilingPaddingVertical,d.TILING_PADDING_HORIZONTAL="function"==typeof t.tilingPaddingHorizontal?t.tilingPaddingHorizontal.call():t.tilingPaddingHorizontal,d.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!0,d.PURE_INCREMENTAL=!t.randomize,h.DEFAULT_UNIFORM_LEAF_NODE_SIZES=t.uniformNodeDimensions,"transformed"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,d.ENFORCE_CONSTRAINTS=!1,d.APPLY_LAYOUT=!1),"enforced"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!0,d.APPLY_LAYOUT=!1),"cose"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!1,d.APPLY_LAYOUT=!0),"all"==t.step&&(t.randomize?d.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!0,d.APPLY_LAYOUT=!0),t.fixedNodeConstraint||t.alignmentConstraint||t.relativePlacementConstraint?d.TREE_REDUCTION_ON_INCREMENTAL=!1:d.TREE_REDUCTION_ON_INCREMENTAL=!0;var T=new r,A=T.newGraphManager();return function t(e,i,r,h){for(var l=i.length,d=0;d0&&t(r.getGraphManager().add(r.newGraph(),u),g,r,h)}}(A.addRoot(),n.getTopMostNodes(g),T,t),function(e,i,n){for(var r=0,o=0,s=0;s0?d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=r/o:m(t.idealEdgeLength)?d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=50:d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=t.idealEdgeLength,d.MIN_REPULSION_DIST=l.MIN_REPULSION_DIST=l.DEFAULT_EDGE_LENGTH/10,d.DEFAULT_RADIAL_SEPARATION=l.DEFAULT_EDGE_LENGTH)}(T,A,u),function(t,e){e.fixedNodeConstraint&&(t.constraints.fixedNodeConstraint=e.fixedNodeConstraint),e.alignmentConstraint&&(t.constraints.alignmentConstraint=e.alignmentConstraint),e.relativePlacementConstraint&&(t.constraints.relativePlacementConstraint=e.relativePlacementConstraint)}(T,t),T.runLayout(),v}}},212:(t,e,i)=>{var n=function(){function t(t,e){for(var i=0;i0)if(c){var g=o.getTopMostNodes(t.eles.nodes());if((h=o.connectComponents(e,t.eles,g)).forEach(function(t){var e=t.boundingBox();l.push({x:e.x1+e.w/2,y:e.y1+e.h/2})}),t.randomize&&h.forEach(function(e){t.eles=e,n.push(s(t))}),"default"==t.quality||"proof"==t.quality){var u=e.collection();if(t.tile){var f=new Map,p=0,y={nodeIndexes:f,xCoords:[],yCoords:[]},v=[];if(h.forEach(function(t,e){0==t.edges().length&&(t.nodes().forEach(function(e,i){u.merge(t.nodes()[i]),e.isParent()||(y.nodeIndexes.set(t.nodes()[i].id(),p++),y.xCoords.push(t.nodes()[0].position().x),y.yCoords.push(t.nodes()[0].position().y))}),v.push(e))}),u.length>1){var m=u.boundingBox();l.push({x:m.x1+m.w/2,y:m.y1+m.h/2}),h.push(u),n.push(y);for(var E=v.length-1;E>=0;E--)h.splice(v[E],1),n.splice(v[E],1),l.splice(v[E],1)}}h.forEach(function(e,i){t.eles=e,r.push(a(t,n[i])),o.relocateComponent(l[i],r[i],t)})}else h.forEach(function(e,i){o.relocateComponent(l[i],n[i],t)});var N=new Set;if(h.length>1){var T=[],A=i.filter(function(t){return"none"==t.css("display")});h.forEach(function(e,i){var s=void 0;if("draft"==t.quality&&(s=n[i].nodeIndexes),e.nodes().not(A).length>0){var a={edges:[],nodes:[]},h=void 0;e.nodes().not(A).forEach(function(e){if("draft"==t.quality)if(e.isParent()){var l=o.calcBoundingBox(e,n[i].xCoords,n[i].yCoords,s);a.nodes.push({x:l.topLeftX,y:l.topLeftY,width:l.width,height:l.height})}else h=s.get(e.id()),a.nodes.push({x:n[i].xCoords[h]-e.boundingbox().w/2,y:n[i].yCoords[h]-e.boundingbox().h/2,width:e.boundingbox().w,height:e.boundingbox().h});else r[i][e.id()]&&a.nodes.push({x:r[i][e.id()].getLeft(),y:r[i][e.id()].getTop(),width:r[i][e.id()].getWidth(),height:r[i][e.id()].getHeight()})}),e.edges().forEach(function(e){var h=e.source(),l=e.target();if("none"!=h.css("display")&&"none"!=l.css("display"))if("draft"==t.quality){var d=s.get(h.id()),c=s.get(l.id()),g=[],u=[];if(h.isParent()){var f=o.calcBoundingBox(h,n[i].xCoords,n[i].yCoords,s);g.push(f.topLeftX+f.width/2),g.push(f.topLeftY+f.height/2)}else g.push(n[i].xCoords[d]),g.push(n[i].yCoords[d]);if(l.isParent()){var p=o.calcBoundingBox(l,n[i].xCoords,n[i].yCoords,s);u.push(p.topLeftX+p.width/2),u.push(p.topLeftY+p.height/2)}else u.push(n[i].xCoords[c]),u.push(n[i].yCoords[c]);a.edges.push({startX:g[0],startY:g[1],endX:u[0],endY:u[1]})}else r[i][h.id()]&&r[i][l.id()]&&a.edges.push({startX:r[i][h.id()].getCenterX(),startY:r[i][h.id()].getCenterY(),endX:r[i][l.id()].getCenterX(),endY:r[i][l.id()].getCenterY()})}),a.nodes.length>0&&(T.push(a),N.add(i))}});var w=d.packComponents(T,t.randomize).shifts;if("draft"==t.quality)n.forEach(function(t,e){var i=t.xCoords.map(function(t){return t+w[e].dx}),n=t.yCoords.map(function(t){return t+w[e].dy});t.xCoords=i,t.yCoords=n});else{var L=0;N.forEach(function(t){Object.keys(r[t]).forEach(function(e){var i=r[t][e];i.setCenter(i.getCenterX()+w[L].dx,i.getCenterY()+w[L].dy)}),L++})}}}else{var C=t.eles.boundingBox();if(l.push({x:C.x1+C.w/2,y:C.y1+C.h/2}),t.randomize){var I=s(t);n.push(I)}"default"==t.quality||"proof"==t.quality?(r.push(a(t,n[0])),o.relocateComponent(l[0],r[0],t)):o.relocateComponent(l[0],n[0],t)}var _=function(e,i){if("default"==t.quality||"proof"==t.quality){"number"==typeof e&&(e=i);var o=void 0,s=void 0,a=e.data("id");return r.forEach(function(t){a in t&&(o={x:t[a].getRect().getCenterX(),y:t[a].getRect().getCenterY()},s=t[a])}),t.nodeDimensionsIncludeLabels&&(s.labelWidth&&("left"==s.labelPosHorizontal?o.x+=s.labelWidth/2:"right"==s.labelPosHorizontal&&(o.x-=s.labelWidth/2)),s.labelHeight&&("top"==s.labelPosVertical?o.y+=s.labelHeight/2:"bottom"==s.labelPosVertical&&(o.y-=s.labelHeight/2))),null==o&&(o={x:e.position("x"),y:e.position("y")}),{x:o.x,y:o.y}}var h=void 0;return n.forEach(function(t){var i=t.nodeIndexes.get(e.id());null!=i&&(h={x:t.xCoords[i],y:t.yCoords[i]})}),null==h&&(h={x:e.position("x"),y:e.position("y")}),{x:h.x,y:h.y}};if("default"==t.quality||"proof"==t.quality||t.randomize){var M=o.calcParentsWithoutChildren(e,i),x=i.filter(function(t){return"none"==t.css("display")});t.eles=i.not(x),i.nodes().not(":parent").not(x).layoutPositions(this,t,_),M.length>0&&M.forEach(function(t){t.position(_(t))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")}}]),t}();t.exports=l},657:(t,e,i)=>{var n=i(548),r=i(140).layoutBase.Matrix,o=i(140).layoutBase.SVD;t.exports={spectralLayout:function(t){var e=t.cy,i=t.eles,s=i.nodes(),a=i.nodes(":parent"),h=new Map,l=new Map,d=new Map,c=[],g=[],u=[],f=[],p=[],y=[],v=[],m=[],E=void 0,N=1e8,T=1e-9,A=t.piTol,w=t.samplingType,L=t.nodeSeparation,C=void 0,I=function(t,e,i){for(var n=[],r=0,o=0,s=0,a=void 0,h=[],d=0,g=1,u=0;u=r;){s=n[r++];for(var f=c[s],v=0;vd&&(d=p[T],g=T)}return g};n.connectComponents(e,i,n.getTopMostNodes(s),h),a.forEach(function(t){n.connectComponents(e,i,n.getTopMostNodes(t.descendants().intersection(i)),h)});for(var _=0,M=0;M0&&(n.isParent()?c[e].push(d.get(n.id())):c[e].push(n.id()))})});var S=function(t){var i=l.get(t),n=void 0;h.get(t).forEach(function(r){n=e.getElementById(r).isParent()?d.get(r):r,c[i].push(n),c[l.get(n)].push(t)})},P=!0,U=!1,Y=void 0;try{for(var k,H=h.keys()[Symbol.iterator]();!(P=(k=H.next()).done);P=!0)S(k.value)}catch(K){U=!0,Y=K}finally{try{!P&&H.return&&H.return()}finally{if(U)throw Y}}var X=void 0;if((E=l.size)>2){C=E=1)break;l=h}for(var f=0;f=1)break;l=h}for(var v=0;v{var n=i(212),r=function(t){t&&t("layout","fcose",n)};"undefined"!=typeof cytoscape&&r(cytoscape),t.exports=r},140:e=>{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(579);return n})()},t.exports=n(i(1709))},6679:function(t){var e;e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=28)}([function(t,e,i){"use strict";function n(){}n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(8),o=i(9);function s(t,e,i){n.call(this,i),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=i,this.bendpoints=[],this.source=t,this.target=e}for(var a in s.prototype=Object.create(n.prototype),n)s[a]=n[a];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(t,e){for(var i=this.getOtherEnd(t),n=e.getGraphManager().getRoot();;){if(i.getOwner()==e)return i;if(i.getOwner()==n)break;i=i.getOwner().getParent()}return null},s.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=r.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,i){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(13),s=i(0),a=i(16),h=i(5);function l(t,e,i,s){null==i&&null==s&&(s=e),n.call(this,s),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=r.MIN_VALUE,this.inclusionTreeDepth=r.MAX_VALUE,this.vGraphObject=s,this.edges=[],this.graphManager=t,this.rect=null!=i&&null!=e?new o(e.x,e.y,i.width,i.height):new o}for(var d in l.prototype=Object.create(n.prototype),n)l[d]=n[d];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(t){this.rect.width=t},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(t){this.rect.height=t},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new h(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new h(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},l.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},l.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},l.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},l.prototype.getEdgeListToNode=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.target==t){if(n.source!=i)throw"Incorrect edge source!";e.push(n)}}),e},l.prototype.getEdgesBetween=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.source!=i&&n.target!=i)throw"Incorrect edge source and/or target";n.target!=t&&n.source!=t||e.push(n)}),e},l.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach(function(i){if(i.source==e)t.add(i.target);else{if(i.target!=e)throw"Incorrect incidency!";t.add(i.source)}}),t},l.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),i=0;ie?(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)):"right"==this.labelPosHorizontal&&this.setWidth(e+this.labelWidth)),this.labelHeight&&("top"==this.labelPosVertical?(this.rect.y-=this.labelHeight,this.setHeight(i+this.labelHeight)):"center"==this.labelPosVertical&&this.labelHeight>i?(this.rect.y-=(this.labelHeight-i)/2,this.setHeight(this.labelHeight)):"bottom"==this.labelPosVertical&&this.setHeight(i+this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==r.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var n=new h(e,i),r=t.inverseTransformPoint(n);this.setLocation(r.x,r.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";var n=i(0);function r(){}for(var o in n)r[o]=n[o];r.MAX_ITERATIONS=2500,r.DEFAULT_EDGE_LENGTH=50,r.DEFAULT_SPRING_STRENGTH=.45,r.DEFAULT_REPULSION_STRENGTH=4500,r.DEFAULT_GRAVITY_STRENGTH=.4,r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,r.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,r.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,r.COOLING_ADAPTATION_FACTOR=.33,r.ADAPTATION_LOWER_NODE_LIMIT=1e3,r.ADAPTATION_UPPER_NODE_LIMIT=5e3,r.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,r.MAX_NODE_DISPLACEMENT=3*r.MAX_NODE_DISPLACEMENT_INCREMENTAL,r.MIN_REPULSION_DIST=r.DEFAULT_EDGE_LENGTH/10,r.CONVERGENCE_CHECK_PERIOD=100,r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,r.MIN_EDGE_LENGTH=1,r.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=r},function(t,e,i){"use strict";function n(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(t){this.x=t},n.prototype.setY=function(t){this.y=t},n.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(0),s=i(7),a=i(3),h=i(1),l=i(13),d=i(12),c=i(11);function g(t,e,i){n.call(this,i),this.estimatedSize=r.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var u in g.prototype=Object.create(n.prototype),n)g[u]=n[u];g.prototype.getNodes=function(){return this.nodes},g.prototype.getEdges=function(){return this.edges},g.prototype.getGraphManager=function(){return this.graphManager},g.prototype.getParent=function(){return this.parent},g.prototype.getLeft=function(){return this.left},g.prototype.getRight=function(){return this.right},g.prototype.getTop=function(){return this.top},g.prototype.getBottom=function(){return this.bottom},g.prototype.isConnected=function(){return this.isConnected},g.prototype.add=function(t,e,i){if(null==e&&null==i){var n=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(n)>-1)throw"Node already in graph!";return n.owner=this,this.getNodes().push(n),n}var r=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(r.source=e,r.target=i,r.isInterGraph=!1,this.getEdges().push(r),e.edges.push(r),i!=e&&i.edges.push(r),r)},g.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),n=i.length,r=0;r-1&&d>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(d,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},g.prototype.updateLeftTop=function(){for(var t,e,i,n=r.MAX_VALUE,o=r.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h(t=l.getTop())&&(n=t),o>(e=l.getLeft())&&(o=e)}return n==r.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=n-i,new d(this.left,this.top))},g.prototype.updateBounds=function(t){for(var e,i,n,o,s,a=r.MAX_VALUE,h=-r.MAX_VALUE,d=r.MAX_VALUE,c=-r.MAX_VALUE,g=this.nodes,u=g.length,f=0;f(e=p.getLeft())&&(a=e),h<(i=p.getRight())&&(h=i),d>(n=p.getTop())&&(d=n),c<(o=p.getBottom())&&(c=o)}var y=new l(a,d,h-a,c-d);a==r.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=g[0].getParent().paddingLeft?g[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},g.calculateBounds=function(t){for(var e,i,n,o,s=r.MAX_VALUE,a=-r.MAX_VALUE,h=r.MAX_VALUE,d=-r.MAX_VALUE,c=t.length,g=0;g(e=u.getLeft())&&(s=e),a<(i=u.getRight())&&(a=i),h>(n=u.getTop())&&(h=n),d<(o=u.getBottom())&&(d=o)}return new l(s,h,a-s,d-h)},g.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},g.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},g.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,n=0;n=this.nodes.length){var h=0;r.forEach(function(e){e.owner==t&&h++}),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=g},function(t,e,i){"use strict";var n,r=i(1);function o(t){n=i(6),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,n,r){if(null==i&&null==n&&null==r){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}r=i,i=t;var o=(n=e).getOwner(),s=r.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,n,r);if(i.isInterGraph=!0,i.source=n,i.target=r,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof n){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]s)return i[0]=n,i[1]=h,i[2]=o,i[3]=E,!1;if(ro)return i[0]=a,i[1]=r,i[2]=v,i[3]=s,!1;if(no?(i[0]=d,i[1]=c,w=!0):(i[0]=l,i[1]=h,w=!0):C===_&&(n>o?(i[0]=a,i[1]=h,w=!0):(i[0]=g,i[1]=c,w=!0)),-I===_?o>n?(i[2]=m,i[3]=E,L=!0):(i[2]=v,i[3]=y,L=!0):I===_&&(o>n?(i[2]=p,i[3]=y,L=!0):(i[2]=N,i[3]=E,L=!0)),w&&L)return!1;if(n>o?r>s?(M=this.getCardinalDirection(C,_,4),x=this.getCardinalDirection(I,_,2)):(M=this.getCardinalDirection(-C,_,3),x=this.getCardinalDirection(-I,_,1)):r>s?(M=this.getCardinalDirection(-C,_,1),x=this.getCardinalDirection(-I,_,3)):(M=this.getCardinalDirection(C,_,2),x=this.getCardinalDirection(I,_,4)),!w)switch(M){case 1:D=h,O=n+-f/_,i[0]=O,i[1]=D;break;case 2:O=g,D=r+u*_,i[0]=O,i[1]=D;break;case 3:D=c,O=n+f/_,i[0]=O,i[1]=D;break;case 4:O=d,D=r+-u*_,i[0]=O,i[1]=D}if(!L)switch(x){case 1:b=y,R=o+-A/_,i[2]=R,i[3]=b;break;case 2:R=N,b=s+T*_,i[2]=R,i[3]=b;break;case 3:b=E,R=o+A/_,i[2]=R,i[3]=b;break;case 4:R=m,b=s+-T*_,i[2]=R,i[3]=b}}return!1},r.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},r.getIntersection=function(t,e,i,r){if(null==r)return this.getIntersection2(t,e,i);var o,s,a,h,l,d,c,g=t.x,u=t.y,f=e.x,p=e.y,y=i.x,v=i.y,m=r.x,E=r.y;return 0===(c=(o=p-u)*(h=y-m)-(s=E-v)*(a=g-f))?null:new n((a*(d=m*v-y*E)-h*(l=f*u-g*p))/c,(s*l-o*d)/c)},r.angleOfVector=function(t,e,i,n){var r=void 0;return t!==i?(r=Math.atan((n-e)/(i-t)),i=0){var d=(-h+Math.sqrt(h*h-4*a*l))/(2*a),c=(-h-Math.sqrt(h*h-4*a*l))/(2*a);return d>=0&&d<=1?[d]:c>=0&&c<=1?[c]:null}return null},r.HALF_PI=.5*Math.PI,r.ONE_AND_HALF_PI=1.5*Math.PI,r.TWO_PI=2*Math.PI,r.THREE_PI=3*Math.PI,t.exports=r},function(t,e,i){"use strict";function n(){}n.sign=function(t){return t>0?1:t<0?-1:0},n.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},n.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=n},function(t,e,i){"use strict";function n(){}n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i0&&e;){for(a.push(l[0]);a.length>0&&e;){var d=a[0];a.splice(0,1),s.add(d);var c=d.getEdges();for(o=0;o-1&&l.splice(p,1)}s=new Set,h=new Map}else t=[]}return t},g.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,n=this.graphManager.calcLowestCommonAncestor(t.source,t.target),r=0;r0){for(var r=this.edgeToDummyNodes.get(i),o=0;o=0&&e.splice(c,1),d.getNeighborsList().forEach(function(t){if(i.indexOf(t)<0){var e=n.get(t)-1;1==e&&h.push(t),n.set(t,e)}})}i=i.concat(h),1!=e.length&&2!=e.length||(r=!0,o=e[0])}return o},g.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=g},function(t,e,i){"use strict";function n(){}n.seed=1,n.x=0,n.nextDouble=function(){return n.x=1e4*Math.sin(n.seed++),n.x-Math.floor(n.x)},t.exports=n},function(t,e,i){"use strict";var n=i(5);function r(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}r.prototype.getWorldOrgX=function(){return this.lworldOrgX},r.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},r.prototype.getWorldOrgY=function(){return this.lworldOrgY},r.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},r.prototype.getWorldExtX=function(){return this.lworldExtX},r.prototype.setWorldExtX=function(t){this.lworldExtX=t},r.prototype.getWorldExtY=function(){return this.lworldExtY},r.prototype.setWorldExtY=function(t){this.lworldExtY=t},r.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},r.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},r.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},r.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},r.prototype.getDeviceExtX=function(){return this.ldeviceExtX},r.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},r.prototype.getDeviceExtY=function(){return this.ldeviceExtY},r.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},r.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},r.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},r.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},r.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},r.prototype.inverseTransformPoint=function(t){return new n(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=r},function(t,e,i){"use strict";var n=i(15),r=i(4),o=i(0),s=i(8),a=i(9);function h(){n.call(this),this.useSmartIdealEdgeLengthCalculation=r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=r.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=r.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=r.MAX_ITERATIONS}for(var l in h.prototype=Object.create(n.prototype),n)h[l]=n[l];h.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,n,s,a,h,l=this.getGraphManager().getAllEdges(),d=0;dr.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*r.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-r.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>r.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(r.COOLING_ADAPTATION_FACTOR,1-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*(1-r.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=a.length||l>=a[0].length))for(var d=0;dt}}]),t}();t.exports=o},function(t,e,i){"use strict";function n(){}n.svd=function(t){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=t.length,this.n=t[0].length;var e=Math.min(this.m,this.n);this.s=function(t){for(var e=[];t-- >0;)e.push(0);return e}(Math.min(this.m+1,this.n)),this.U=function t(e){if(0==e.length)return 0;for(var i=[],n=0;n0;)e.push(0);return e}(this.n),r=function(t){for(var e=[];t-- >0;)e.push(0);return e}(this.m),o=Math.min(this.m-1,this.n),s=Math.max(0,Math.min(this.n-2,this.m)),a=0;a=0;_--)if(0!==this.s[_]){for(var M=_+1;M=0;G--){if(function(t,e){return t&&e}(G0;){var B=void 0,V=void 0;for(B=L-2;B>=-1&&-1!==B;B--)if(Math.abs(i[B])<=z+X*(Math.abs(this.s[B])+Math.abs(this.s[B+1]))){i[B]=0;break}if(B===L-2)V=4;else{var W=void 0;for(W=L-1;W>=B&&W!==B;W--){var j=(W!==L?Math.abs(i[W]):0)+(W!==B+1?Math.abs(i[W-1]):0);if(Math.abs(this.s[W])<=z+X*j){this.s[W]=0;break}}W===B?V=3:W===L-1?V=1:(V=2,B=W)}switch(B++,V){case 1:var $=i[L-2];i[L-2]=0;for(var q=L-2;q>=B;q--){var K=n.hypot(this.s[q],$),Z=this.s[q]/K,Q=$/K;this.s[q]=K,q!==B&&($=-Q*i[q-1],i[q-1]=Z*i[q-1]);for(var J=0;J=this.s[B+1]);){var Lt=this.s[B];if(this.s[B]=this.s[B+1],this.s[B+1]=Lt,BMath.abs(e)?(i=e/t,i=Math.abs(t)*Math.sqrt(1+i*i)):0!=e?(i=t/e,i=Math.abs(e)*Math.sqrt(1+i*i)):i=0,i},t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=n,this.mismatch_penalty=r,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s=0;i--){var n=this.listeners[i];n.event===t&&n.callback===e&&this.listeners.splice(i,1)}},r.emit=function(t,e){for(var i=0;i{"use strict";i.d(e,{diagram:()=>Z});var n=i(3590),r=i(92),o=i(5871),s=i(3226),a=i(7633),h=i(797),l=i(8731),d=i(165),c=i(6527),g=i(451),u={L:"left",R:"right",T:"top",B:"bottom"},f={L:(0,h.K2)(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:(0,h.K2)(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:(0,h.K2)(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:(0,h.K2)(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},p={L:(0,h.K2)((t,e)=>t-e+2,"L"),R:(0,h.K2)((t,e)=>t-2,"R"),T:(0,h.K2)((t,e)=>t-e+2,"T"),B:(0,h.K2)((t,e)=>t-2,"B")},y=(0,h.K2)(function(t){return m(t)?"L"===t?"R":"L":"T"===t?"B":"T"},"getOppositeArchitectureDirection"),v=(0,h.K2)(function(t){return"L"===t||"R"===t||"T"===t||"B"===t},"isArchitectureDirection"),m=(0,h.K2)(function(t){return"L"===t||"R"===t},"isArchitectureDirectionX"),E=(0,h.K2)(function(t){return"T"===t||"B"===t},"isArchitectureDirectionY"),N=(0,h.K2)(function(t,e){const i=m(t)&&E(e),n=E(t)&&m(e);return i||n},"isArchitectureDirectionXY"),T=(0,h.K2)(function(t){const e=t[0],i=t[1],n=m(e)&&E(i),r=E(e)&&m(i);return n||r},"isArchitecturePairXY"),A=(0,h.K2)(function(t){return"LL"!==t&&"RR"!==t&&"TT"!==t&&"BB"!==t},"isValidArchitectureDirectionPair"),w=(0,h.K2)(function(t,e){const i=`${t}${e}`;return A(i)?i:void 0},"getArchitectureDirectionPair"),L=(0,h.K2)(function([t,e],i){const n=i[0],r=i[1];return m(n)?E(r)?[t+("L"===n?-1:1),e+("T"===r?1:-1)]:[t+("L"===n?-1:1),e]:m(r)?[t+("L"===r?1:-1),e+("T"===n?1:-1)]:[t,e+("T"===n?1:-1)]},"shiftPositionByArchitectureDirectionPair"),C=(0,h.K2)(function(t){return"LT"===t||"TL"===t?[1,1]:"BL"===t||"LB"===t?[1,-1]:"BR"===t||"RB"===t?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),I=(0,h.K2)(function(t,e){return N(t,e)?"bend":m(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),_=(0,h.K2)(function(t){return"service"===t.type},"isArchitectureService"),M=(0,h.K2)(function(t){return"junction"===t.type},"isArchitectureJunction"),x=(0,h.K2)(t=>t.data(),"edgeData"),O=(0,h.K2)(t=>t.data(),"nodeData"),D=a.UI.architecture,R=class{constructor(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.elements={},this.setAccTitle=a.SV,this.getAccTitle=a.iN,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.getAccDescription=a.m7,this.setAccDescription=a.EI,this.clear()}static{(0,h.K2)(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},(0,a.IU)()}addService({id:t,icon:e,in:i,title:n,iconText:r}){if(void 0!==this.registeredIds[t])throw new Error(`The service id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The service [${t}] cannot be placed within itself`);if(void 0===this.registeredIds[i])throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if("node"===this.registeredIds[i])throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:e,iconText:r,title:n,edges:[],in:i}}getServices(){return Object.values(this.nodes).filter(_)}addJunction({id:t,in:e}){this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:e}}getJunctions(){return Object.values(this.nodes).filter(M)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:e,in:i,title:n}){if(void 0!==this.registeredIds?.[t])throw new Error(`The group id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The group [${t}] cannot be placed within itself`);if(void 0===this.registeredIds?.[i])throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if("node"===this.registeredIds?.[i])throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:e,title:n,in:i}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:e,lhsDir:i,rhsDir:n,lhsInto:r,rhsInto:o,lhsGroup:s,rhsGroup:a,title:h}){if(!v(i))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${String(i)}`);if(!v(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${String(n)}`);if(void 0===this.nodes[t]&&void 0===this.groups[t])throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(void 0===this.nodes[e]&&void 0===this.groups[e])throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);const l=this.nodes[t].in,d=this.nodes[e].in;if(s&&l&&d&&l==d)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(a&&l&&d&&l==d)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);const c={lhsId:t,lhsDir:i,lhsInto:r,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:o,rhsGroup:a,title:h};this.edges.push(c),this.nodes[t]&&this.nodes[e]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[e].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(void 0===this.dataStructures){const t={},e=Object.entries(this.nodes).reduce((e,[i,n])=>(e[i]=n.edges.reduce((e,n)=>{const r=this.getNode(n.lhsId)?.in,o=this.getNode(n.rhsId)?.in;if(r&&o&&r!==o){const e=I(n.lhsDir,n.rhsDir);"bend"!==e&&(t[r]??={},t[r][o]=e,t[o]??={},t[o][r]=e)}if(n.lhsId===i){const t=w(n.lhsDir,n.rhsDir);t&&(e[t]=n.rhsId)}else{const t=w(n.rhsDir,n.lhsDir);t&&(e[t]=n.lhsId)}return e},{}),e),{}),i=Object.keys(e)[0],n={[i]:1},r=Object.keys(e).reduce((t,e)=>e===i?t:{...t,[e]:1},{}),o=(0,h.K2)(t=>{const i={[t]:[0,0]},o=[t];for(;o.length>0;){const t=o.shift();if(t){n[t]=1,delete r[t];const s=e[t],[a,h]=i[t];Object.entries(s).forEach(([t,e])=>{n[e]||(i[e]=L([a,h],t),o.push(e))})}}return i},"BFS"),s=[o(i)];for(;Object.keys(r).length>0;)s.push(o(Object.keys(r)[0]));this.dataStructures={adjList:e,spatialMaps:s,groupAlignments:t}}return this.dataStructures}setElementForId(t,e){this.elements[t]=e}getElementById(t){return this.elements[t]}getConfig(){return(0,s.$t)({...D,...(0,a.zj)().architecture})}getConfigField(t){return this.getConfig()[t]}},b=(0,h.K2)((t,e)=>{(0,o.S)(t,e),t.groups.map(t=>e.addGroup(t)),t.services.map(t=>e.addService({...t,type:"service"})),t.junctions.map(t=>e.addJunction({...t,type:"junction"})),t.edges.map(t=>e.addEdge(t))},"populateDb"),F={parser:{yy:void 0},parse:(0,h.K2)(async t=>{const e=await(0,l.qg)("architecture",t);h.Rm.debug(e);const i=F.parser?.yy;if(!(i instanceof R))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");b(e,i)},"parse")},G=(0,h.K2)(t=>`\n .edge {\n stroke-width: ${t.archEdgeWidth};\n stroke: ${t.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${t.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${t.archGroupBorderColor};\n stroke-width: ${t.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`,"getStyles"),S=(0,h.K2)(t=>`${t}`,"wrapIcon"),P={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:S('')},server:{body:S('')},disk:{body:S('')},internet:{body:S('')},cloud:{body:S('')},unknown:r.Gc,blank:{body:S("")}}},U=(0,h.K2)(async function(t,e,i){const n=i.getConfigField("padding"),o=i.getConfigField("iconSize"),h=o/2,l=o/6,d=l/2;await Promise.all(e.edges().map(async e=>{const{source:o,sourceDir:c,sourceArrow:g,sourceGroup:u,target:y,targetDir:v,targetArrow:A,targetGroup:L,label:I}=x(e);let{x:_,y:M}=e[0].sourceEndpoint();const{x:O,y:D}=e[0].midpoint();let{x:R,y:b}=e[0].targetEndpoint();const F=n+4;if(u&&(m(c)?_+="L"===c?-F:F:M+="T"===c?-F:F+18),L&&(m(v)?R+="L"===v?-F:F:b+="T"===v?-F:F+18),u||"junction"!==i.getNode(o)?.type||(m(c)?_+="L"===c?h:-h:M+="T"===c?h:-h),L||"junction"!==i.getNode(y)?.type||(m(v)?R+="L"===v?h:-h:b+="T"===v?h:-h),e[0]._private.rscratch){const e=t.insert("g");if(e.insert("path").attr("d",`M ${_},${M} L ${O},${D} L${R},${b} `).attr("class","edge").attr("id",(0,s.rY)(o,y,{prefix:"L"})),g){const t=m(c)?p[c](_,l):_-d,i=E(c)?p[c](M,l):M-d;e.insert("polygon").attr("points",f[c](l)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(A){const t=m(v)?p[v](R,l):R-d,i=E(v)?p[v](b,l):b-d;e.insert("polygon").attr("points",f[v](l)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(I){const t=N(c,v)?"XY":m(c)?"X":"Y";let i=0;i="X"===t?Math.abs(_-R):"Y"===t?Math.abs(M-b)/1.5:Math.abs(_-R)/2;const n=e.append("g");if(await(0,r.GZ)(n,I,{useHtmlLabels:!1,width:i,classes:"architecture-service-label"},(0,a.D7)()),n.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),"X"===t)n.attr("transform","translate("+O+", "+D+")");else if("Y"===t)n.attr("transform","translate("+O+", "+D+") rotate(-90)");else if("XY"===t){const t=w(c,v);if(t&&T(t)){const e=n.node().getBoundingClientRect(),[i,r]=C(t);n.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*i*r*45})`);const o=n.node().getBoundingClientRect();n.attr("transform",`\n translate(${O}, ${D-e.height/2})\n translate(${i*o.width/2}, ${r*o.height/2})\n rotate(${-1*i*r*45}, 0, ${e.height/2})\n `)}}}}}))},"drawEdges"),Y=(0,h.K2)(async function(t,e,i){const n=.75*i.getConfigField("padding"),o=i.getConfigField("fontSize"),s=i.getConfigField("iconSize")/2;await Promise.all(e.nodes().map(async e=>{const h=O(e);if("group"===h.type){const{h:l,w:d,x1:c,y1:g}=e.boundingBox(),u=t.append("rect");u.attr("id",`group-${h.id}`).attr("x",c+s).attr("y",g+s).attr("width",d).attr("height",l).attr("class","node-bkg");const f=t.append("g");let p=c,y=g;if(h.icon){const t=f.append("g");t.html(`${await(0,r.WY)(h.icon,{height:n,width:n,fallbackPrefix:P.prefix})}`),t.attr("transform","translate("+(p+s+1)+", "+(y+s+1)+")"),p+=n,y+=o/2-1-2}if(h.label){const t=f.append("g");await(0,r.GZ)(t,h.label,{useHtmlLabels:!1,width:d,classes:"architecture-service-label"},(0,a.D7)()),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),t.attr("transform","translate("+(p+s+4)+", "+(y+s+2)+")")}i.setElementForId(h.id,u)}}))},"drawGroups"),k=(0,h.K2)(async function(t,e,i){const n=(0,a.D7)();for(const o of i){const i=e.append("g"),s=t.getConfigField("iconSize");if(o.title){const t=i.append("g");await(0,r.GZ)(t,o.title,{useHtmlLabels:!1,width:1.5*s,classes:"architecture-service-label"},n),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),t.attr("transform","translate("+s/2+", "+s+")")}const h=i.append("g");if(o.icon)h.html(`${await(0,r.WY)(o.icon,{height:s,width:s,fallbackPrefix:P.prefix})}`);else if(o.iconText){h.html(`${await(0,r.WY)("blank",{height:s,width:s,fallbackPrefix:P.prefix})}`);const t=h.append("g").append("foreignObject").attr("width",s).attr("height",s).append("div").attr("class","node-icon-text").attr("style",`height: ${s}px;`).append("div").html((0,a.jZ)(o.iconText,n)),e=parseInt(window.getComputedStyle(t.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;t.attr("style",`-webkit-line-clamp: ${Math.floor((s-2)/e)};`)}else h.append("path").attr("class","node-bkg").attr("id","node-"+o.id).attr("d",`M0 ${s} v${-s} q0,-5 5,-5 h${s} q5,0 5,5 v${s} H0 Z`);i.attr("id",`service-${o.id}`).attr("class","architecture-service");const{width:l,height:d}=i.node().getBBox();o.width=l,o.height=d,t.setElementForId(o.id,i)}return 0},"drawServices"),H=(0,h.K2)(function(t,e,i){i.forEach(i=>{const n=e.append("g"),r=t.getConfigField("iconSize");n.append("g").append("rect").attr("id","node-"+i.id).attr("fill-opacity","0").attr("width",r).attr("height",r),n.attr("class","architecture-junction");const{width:o,height:s}=n._groups[0][0].getBBox();n.width=o,n.height=s,t.setElementForId(i.id,n)})},"drawJunctions");function X(t,e,i){t.forEach(t=>{e.add({group:"nodes",data:{type:"service",id:t.id,icon:t.icon,label:t.title,parent:t.in,width:i.getConfigField("iconSize"),height:i.getConfigField("iconSize")},classes:"node-service"})})}function z(t,e,i){t.forEach(t=>{e.add({group:"nodes",data:{type:"junction",id:t.id,parent:t.in,width:i.getConfigField("iconSize"),height:i.getConfigField("iconSize")},classes:"node-junction"})})}function B(t,e){e.nodes().map(e=>{const i=O(e);if("group"===i.type)return;i.x=e.position().x,i.y=e.position().y;t.getElementById(i.id).attr("transform","translate("+(i.x||0)+","+(i.y||0)+")")})}function V(t,e){t.forEach(t=>{e.add({group:"nodes",data:{type:"group",id:t.id,icon:t.icon,label:t.title,parent:t.in},classes:"node-group"})})}function W(t,e){t.forEach(t=>{const{lhsId:i,rhsId:n,lhsInto:r,lhsGroup:o,rhsInto:s,lhsDir:a,rhsDir:h,rhsGroup:l,title:d}=t,c=N(t.lhsDir,t.rhsDir)?"segments":"straight",g={id:`${i}-${n}`,label:d,source:i,sourceDir:a,sourceArrow:r,sourceGroup:o,sourceEndpoint:"L"===a?"0 50%":"R"===a?"100% 50%":"T"===a?"50% 0":"50% 100%",target:n,targetDir:h,targetArrow:s,targetGroup:l,targetEndpoint:"L"===h?"0 50%":"R"===h?"100% 50%":"T"===h?"50% 0":"50% 100%"};e.add({group:"edges",data:g,classes:c})})}function j(t,e,i){const n=(0,h.K2)((t,e)=>Object.entries(t).reduce((t,[n,r])=>{let o=0;const s=Object.entries(r);if(1===s.length)return t[n]=s[0][1],t;for(let a=0;a{const i={},r={};return Object.entries(e).forEach(([e,[n,o]])=>{const s=t.getNode(e)?.in??"default";i[o]??={},i[o][s]??=[],i[o][s].push(e),r[n]??={},r[n][s]??=[],r[n][s].push(e)}),{horiz:Object.values(n(i,"horizontal")).filter(t=>t.length>1),vert:Object.values(n(r,"vertical")).filter(t=>t.length>1)}}),[o,s]=r.reduce(([t,e],{horiz:i,vert:n})=>[[...t,...i],[...e,...n]],[[],[]]);return{horizontal:o,vertical:s}}function $(t,e){const i=[],n=(0,h.K2)(t=>`${t[0]},${t[1]}`,"posToStr"),r=(0,h.K2)(t=>t.split(",").map(t=>parseInt(t)),"strToPos");return t.forEach(t=>{const o=Object.fromEntries(Object.entries(t).map(([t,e])=>[n(e),t])),s=[n([0,0])],a={},h={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){const t=s.shift();if(t){a[t]=1;const l=o[t];if(l){const d=r(t);Object.entries(h).forEach(([t,r])=>{const h=n([d[0]+r[0],d[1]+r[1]]),c=o[h];c&&!a[h]&&(s.push(h),i.push({[u[t]]:c,[u[y(t)]]:l,gap:1.5*e.getConfigField("iconSize")}))})}}}}),i}function q(t,e,i,n,r,{spatialMaps:o,groupAlignments:s}){return new Promise(a=>{const l=(0,g.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),c=(0,d.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${r.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${r.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});l.remove(),V(i,c),X(t,c,r),z(e,c,r),W(n,c);const u=j(r,o,s),f=$(o,r),p=c.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:o}=O(i);return n===o?1.5*r.getConfigField("iconSize"):.5*r.getConfigField("iconSize")},edgeElasticity(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:r}=O(i);return n===r?.45:.001},alignmentConstraint:u,relativePlacementConstraint:f});p.one("layoutstop",()=>{function t(t,e,i,n){let r,o;const{x:s,y:a}=t,{x:h,y:l}=e;o=(n-a+(s-i)*(a-l)/(s-h))/Math.sqrt(1+Math.pow((a-l)/(s-h),2)),r=Math.sqrt(Math.pow(n-a,2)+Math.pow(i-s,2)-Math.pow(o,2));r/=Math.sqrt(Math.pow(h-s,2)+Math.pow(l-a,2));let d=(h-s)*(n-a)-(l-a)*(i-s);switch(!0){case d>=0:d=1;break;case d<0:d=-1}let c=(h-s)*(i-s)+(l-a)*(n-a);switch(!0){case c>=0:c=1;break;case c<0:c=-1}return o=Math.abs(o)*d,r*=c,{distances:o,weights:r}}(0,h.K2)(t,"getSegmentWeights"),c.startBatch();for(const e of Object.values(c.edges()))if(e.data?.()){const{x:i,y:n}=e.source().position(),{x:r,y:o}=e.target().position();if(i!==r&&n!==o){const i=e.sourceEndpoint(),n=e.targetEndpoint(),{sourceDir:r}=x(e),[o,s]=E(r)?[i.x,n.y]:[n.x,i.y],{weights:a,distances:h}=t(i,n,o,s);e.style("segment-distances",h),e.style("segment-weights",a)}}c.endBatch(),p.run()}),p.run(),c.ready(t=>{h.Rm.info("Ready",t),a(c)})})}(0,r.pC)([{name:P.prefix,icons:P}]),d.A.use(c),(0,h.K2)(X,"addServices"),(0,h.K2)(z,"addJunctions"),(0,h.K2)(B,"positionNodes"),(0,h.K2)(V,"addGroups"),(0,h.K2)(W,"addEdges"),(0,h.K2)(j,"getAlignments"),(0,h.K2)($,"getRelativeConstraints"),(0,h.K2)(q,"layoutArchitecture");var K={draw:(0,h.K2)(async(t,e,i,r)=>{const o=r.db,s=o.getServices(),h=o.getJunctions(),l=o.getGroups(),d=o.getEdges(),c=o.getDataStructures(),g=(0,n.D)(e),u=g.append("g");u.attr("class","architecture-edges");const f=g.append("g");f.attr("class","architecture-services");const p=g.append("g");p.attr("class","architecture-groups"),await k(o,f,s),H(o,f,h);const y=await q(s,h,l,d,o,c);await U(u,y,o),await Y(p,y,o),B(o,y),(0,a.ot)(void 0,g,o.getConfigField("padding"),o.getConfigField("useMaxWidth"))},"draw")},Z={parser:F,get db(){return new R},renderer:K,styles:G}}}]); \ No newline at end of file diff --git a/developer/assets/js/8525.e2d71772.js b/developer/assets/js/8525.e2d71772.js new file mode 100644 index 0000000..37c8e89 --- /dev/null +++ b/developer/assets/js/8525.e2d71772.js @@ -0,0 +1 @@ +(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8525],{1336:(e,n,t)=>{"use strict";t.d(n,{A:()=>We});var s=t(6540),a=t(8453),r=t(5260),i=t(2303),c=t(4164),o=t(5293),l=t(6342);function d(){const{prism:e}=(0,l.p)(),{colorMode:n}=(0,o.G)(),t=e.theme,s=e.darkTheme||t;return"dark"===n?s:t}var u=t(7559),m=t(8426),h=t.n(m),f=t(9532),p=t(4848);const x=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,j={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},v={...j,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},b=Object.keys(j);function N(e,n){const t=e.map(e=>{const{start:t,end:s}=v[e];return`(?:${t}\\s*(${n.flatMap(e=>[e.line,e.block?.start,e.block?.end].filter(Boolean)).join("|")})\\s*${s})`}).join("|");return new RegExp(`^\\s*(?:${t})\\s*$`)}function A({showLineNumbers:e,metastring:n}){return"boolean"==typeof e?e?1:void 0:"number"==typeof e?e:function(e){const n=e?.split(" ").find(e=>e.startsWith("showLineNumbers"));if(n){if(n.startsWith("showLineNumbers=")){const e=n.replace("showLineNumbers=","");return parseInt(e,10)}return 1}}(n)}function y(e,n){const{language:t,magicComments:s}=n;if(void 0===t)return{lineClassNames:{},code:e};const a=function(e,n){switch(e){case"js":case"javascript":case"ts":case"typescript":return N(["js","jsBlock"],n);case"jsx":case"tsx":return N(["js","jsBlock","jsx"],n);case"html":return N(["js","jsBlock","html"],n);case"python":case"py":case"bash":return N(["bash"],n);case"markdown":case"md":return N(["html","jsx","bash"],n);case"tex":case"latex":case"matlab":return N(["tex"],n);case"lua":case"haskell":return N(["lua"],n);case"sql":return N(["lua","jsBlock"],n);case"wasm":return N(["wasm"],n);case"vb":case"vba":case"visual-basic":return N(["vb","rem"],n);case"vbnet":return N(["vbnet","rem"],n);case"batch":return N(["rem"],n);case"basic":return N(["rem","f90"],n);case"fsharp":return N(["js","ml"],n);case"ocaml":case"sml":return N(["ml"],n);case"fortran":return N(["f90"],n);case"cobol":return N(["cobol"],n);default:return N(b,n)}}(t,s),r=e.split(/\r?\n/),i=Object.fromEntries(s.map(e=>[e.className,{start:0,range:""}])),c=Object.fromEntries(s.filter(e=>e.line).map(({className:e,line:n})=>[n,e])),o=Object.fromEntries(s.filter(e=>e.block).map(({className:e,block:n})=>[n.start,e])),l=Object.fromEntries(s.filter(e=>e.block).map(({className:e,block:n})=>[n.end,e]));for(let u=0;u<r.length;){const e=r[u].match(a);if(!e){u+=1;continue}const n=e.slice(1).find(e=>void 0!==e);c[n]?i[c[n]].range+=`${u},`:o[n]?i[o[n]].start=u:l[n]&&(i[l[n]].range+=`${i[l[n]].start}-${u-1},`),r.splice(u,1)}const d={};return Object.entries(i).forEach(([e,{range:n}])=>{h()(n).forEach(n=>{d[n]??=[],d[n].push(e)})}),{code:r.join("\n"),lineClassNames:d}}function C(e,n){const t=e.replace(/\r?\n$/,"");return function(e,{metastring:n,magicComments:t}){if(n&&g.test(n)){const s=n.match(g).groups.range;if(0===t.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${n}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const a=t[0].className,r=h()(s).filter(e=>e>0).map(e=>[e-1,[a]]);return{lineClassNames:Object.fromEntries(r),code:e}}return null}(t,{...n})??y(t,{...n})}function w(e){const n=function(e){return n=e.language??function(e){if(!e)return;const n=e.split(" ").find(e=>e.startsWith("language-"));return n?.replace(/language-/,"")}(e.className)??e.defaultLanguage,n?.toLowerCase()??"text";var n}({language:e.language,defaultLanguage:e.defaultLanguage,className:e.className}),{lineClassNames:t,code:s}=C(e.code,{metastring:e.metastring,magicComments:e.magicComments,language:n}),a=function({className:e,language:n}){return(0,c.A)(e,n&&!e?.includes(`language-${n}`)&&`language-${n}`)}({className:e.className,language:n}),r=(i=e.metastring,(i?.match(x)?.groups.title??"")||e.title);var i;const o=A({showLineNumbers:e.showLineNumbers,metastring:e.metastring});return{codeInput:e.code,code:s,className:a,language:n,title:r,lineNumbersStart:o,lineClassNames:t}}const k=(0,s.createContext)(null);function L({metadata:e,wordWrap:n,children:t}){const a=(0,s.useMemo)(()=>({metadata:e,wordWrap:n}),[e,n]);return(0,p.jsx)(k.Provider,{value:a,children:t})}function B(){const e=(0,s.useContext)(k);if(null===e)throw new f.dV("CodeBlockContextProvider");return e}const T="codeBlockContainer_Ckt0";function _({as:e,...n}){const t=function(e){const n={color:"--prism-color",backgroundColor:"--prism-background-color"},t={};return Object.entries(e.plain).forEach(([e,s])=>{const a=n[e];a&&"string"==typeof s&&(t[a]=s)}),t}(d());return(0,p.jsx)(e,{...n,style:t,className:(0,c.A)(n.className,T,u.G.common.codeBlock)})}const E="codeBlock_bY9V",H="codeBlockStandalone_MEMb",M="codeBlockLines_e6Vv",S="codeBlockLinesWithNumbering_o6Pm";function I({children:e,className:n}){return(0,p.jsx)(_,{as:"pre",tabIndex:0,className:(0,c.A)(H,"thin-scrollbar",n),children:(0,p.jsx)("code",{className:M,children:e})})}const U={attributes:!0,characterData:!0,childList:!0,subtree:!0};function z(e,n){const[t,a]=(0,s.useState)(),r=(0,s.useCallback)(()=>{a(e.current?.closest("[role=tabpanel][hidden]"))},[e,a]);(0,s.useEffect)(()=>{r()},[r]),function(e,n,t=U){const a=(0,f._q)(n),r=(0,f.Be)(t);(0,s.useEffect)(()=>{const n=new MutationObserver(a);return e&&n.observe(e,r),()=>n.disconnect()},[e,a,r])}(t,e=>{e.forEach(e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(n(),r())})},{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function R({children:e}){return e}var V=t(1765);function O({line:e,token:n,...t}){return(0,p.jsx)("span",{...t})}const $="codeLine_lJS_",P="codeLineNumber_Tfdd",W="codeLineContent_feaV";function q({line:e,classNames:n,showLineNumbers:t,getLineProps:s,getTokenProps:a}){const r=function(e){const n=1===e.length&&"\n"===e[0].content?e[0]:void 0;return n?[{...n,content:""}]:e}(e),i=s({line:r,className:(0,c.A)(n,t&&$)}),o=r.map((e,n)=>{const t=a({token:e});return(0,p.jsx)(O,{...t,line:r,token:e,children:t.children},n)});return(0,p.jsxs)("span",{...i,children:[t?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("span",{className:P}),(0,p.jsx)("span",{className:W,children:o})]}):o,(0,p.jsx)("br",{})]})}const D=s.forwardRef((e,n)=>(0,p.jsx)("pre",{ref:n,tabIndex:0,...e,className:(0,c.A)(e.className,E,"thin-scrollbar")}));function F(e){const{metadata:n}=B();return(0,p.jsx)("code",{...e,className:(0,c.A)(e.className,M,void 0!==n.lineNumbersStart&&S),style:{...e.style,counterReset:void 0===n.lineNumbersStart?void 0:"line-count "+(n.lineNumbersStart-1)}})}function G({className:e}){const{metadata:n,wordWrap:t}=B(),s=d(),{code:a,language:r,lineNumbersStart:i,lineClassNames:o}=n;return(0,p.jsx)(V.f4,{theme:s,code:a,language:r,children:({className:n,style:s,tokens:a,getLineProps:r,getTokenProps:l})=>(0,p.jsx)(D,{ref:t.codeBlockRef,className:(0,c.A)(e,n),style:s,children:(0,p.jsx)(F,{children:a.map((e,n)=>(0,p.jsx)(q,{line:e,getLineProps:r,getTokenProps:l,classNames:o[n],showLineNumbers:void 0!==i},n))})})})}function J({children:e,fallback:n}){return(0,i.A)()?(0,p.jsx)(p.Fragment,{children:e?.()}):n??null}var Z=t(1312);function X({className:e,...n}){return(0,p.jsx)("button",{type:"button",...n,className:(0,c.A)("clean-btn",e)})}function Y(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function Q(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const K={copyButtonCopied:"copyButtonCopied_Vdqa",copyButtonIcons:"copyButtonIcons_IEyt",copyButtonIcon:"copyButtonIcon_TrPX",copyButtonSuccessIcon:"copyButtonSuccessIcon_cVMy"};function ee(e){return e?(0,Z.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,Z.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"})}function ne({className:e}){const{copyCode:n,isCopied:t}=function(){const{metadata:{code:e}}=B(),[n,t]=(0,s.useState)(!1),a=(0,s.useRef)(void 0),r=(0,s.useCallback)(()=>{navigator.clipboard.writeText(e).then(()=>{t(!0),a.current=window.setTimeout(()=>{t(!1)},1e3)})},[e]);return(0,s.useEffect)(()=>()=>window.clearTimeout(a.current),[]),{copyCode:r,isCopied:n}}();return(0,p.jsx)(X,{"aria-label":ee(t),title:(0,Z.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,c.A)(e,K.copyButton,t&&K.copyButtonCopied),onClick:n,children:(0,p.jsxs)("span",{className:K.copyButtonIcons,"aria-hidden":"true",children:[(0,p.jsx)(Y,{className:K.copyButtonIcon}),(0,p.jsx)(Q,{className:K.copyButtonSuccessIcon})]})})}function te(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const se="wordWrapButtonIcon_b1P5",ae="wordWrapButtonEnabled_uzNF";function re({className:e}){const{wordWrap:n}=B();if(!(n.isEnabled||n.isCodeScrollable))return!1;const t=(0,Z.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,p.jsx)(X,{onClick:()=>n.toggle(),className:(0,c.A)(e,n.isEnabled&&ae),"aria-label":t,title:t,children:(0,p.jsx)(te,{className:se,"aria-hidden":"true"})})}const ie="buttonGroup_M5ko";function ce({className:e}){return(0,p.jsx)(J,{children:()=>(0,p.jsxs)("div",{className:(0,c.A)(e,ie),children:[(0,p.jsx)(re,{}),(0,p.jsx)(ne,{})]})})}const oe="codeBlockContent_QJqH",le="codeBlockTitle_OeMC";function de({className:e}){const{metadata:n}=B();return(0,p.jsxs)(_,{as:"div",className:(0,c.A)(e,n.className),children:[n.title&&(0,p.jsx)("div",{className:le,children:(0,p.jsx)(R,{children:n.title})}),(0,p.jsxs)("div",{className:oe,children:[(0,p.jsx)(G,{}),(0,p.jsx)(ce,{})]})]})}function ue(e){const n=function(e){const{prism:n}=(0,l.p)();return w({code:e.children,className:e.className,metastring:e.metastring,magicComments:n.magicComments,defaultLanguage:n.defaultLanguage,language:e.language,title:e.title,showLineNumbers:e.showLineNumbers})}(e),t=function(){const[e,n]=(0,s.useState)(!1),[t,a]=(0,s.useState)(!1),r=(0,s.useRef)(null),i=(0,s.useCallback)(()=>{const t=r.current.querySelector("code");e?t.removeAttribute("style"):(t.style.whiteSpace="pre-wrap",t.style.overflowWrap="anywhere"),n(e=>!e)},[r,e]),c=(0,s.useCallback)(()=>{const{scrollWidth:e,clientWidth:n}=r.current,t=e>n||r.current.querySelector("code").hasAttribute("style");a(t)},[r]);return z(r,c),(0,s.useEffect)(()=>{c()},[e,c]),(0,s.useEffect)(()=>(window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)}),[c]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:t,toggle:i}}();return(0,p.jsx)(L,{metadata:n,wordWrap:t,children:(0,p.jsx)(de,{})})}function me({children:e,...n}){const t=(0,i.A)(),a=function(e){return s.Children.toArray(e).some(e=>(0,s.isValidElement)(e))?e:Array.isArray(e)?e.join(""):e}(e),r="string"==typeof a?ue:I;return(0,p.jsx)(r,{...n,children:a},String(t))}function he(e){return(0,p.jsx)("code",{...e})}var fe=t(8774),pe=t(3535);var xe=t(3427),ge=t(1422);const je="details_lb9f",ve="isBrowser_bmU9",be="collapsibleContent_i85q";function Ne(e){return!!e&&("SUMMARY"===e.tagName||Ne(e.parentElement))}function Ae(e,n){return!!e&&(e===n||Ae(e.parentElement,n))}function ye({summary:e,children:n,...t}){(0,xe.A)().collectAnchor(t.id);const a=(0,i.A)(),r=(0,s.useRef)(null),{collapsed:o,setCollapsed:l}=(0,ge.u)({initialState:!t.open}),[d,u]=(0,s.useState)(t.open),m=s.isValidElement(e)?e:(0,p.jsx)("summary",{children:e??"Details"});return(0,p.jsxs)("details",{...t,ref:r,open:d,"data-collapsed":o,className:(0,c.A)(je,a&&ve,t.className),onMouseDown:e=>{Ne(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const n=e.target;Ne(n)&&Ae(n,r.current)&&(e.preventDefault(),o?(l(!1),u(!0)):l(!0))},children:[m,(0,p.jsx)(ge.N,{lazy:!1,collapsed:o,onCollapseTransitionEnd:e=>{l(e),u(!e)},children:(0,p.jsx)("div",{className:be,children:n})})]})}const Ce="details_b_Ee";function we({...e}){return(0,p.jsx)(ye,{...e,className:(0,c.A)("alert alert--info",Ce,e.className)})}function ke(e){const n=s.Children.toArray(e.children),t=n.find(e=>s.isValidElement(e)&&"summary"===e.type),a=(0,p.jsx)(p.Fragment,{children:n.filter(e=>e!==t)});return(0,p.jsx)(we,{...e,summary:t,children:a})}var Le=t(1107);function Be(e){return(0,p.jsx)(Le.A,{...e})}const Te="containsTaskList_mC6p";function _e(e){if(void 0!==e)return(0,c.A)(e,e?.includes("contains-task-list")&&Te)}const Ee="img_ev3q";var He=t(7293),Me=t(7489),Se=t(2181);let Ie=null;async function Ue(){return Ie||(Ie=async function(){return(await t.e(2279).then(t.bind(t,2279))).default}()),Ie}function ze(){const{colorMode:e}=(0,o.G)(),n=(0,l.p)().mermaid,t=n.theme[e],{options:a}=n;return(0,s.useMemo)(()=>({startOnLoad:!1,...a,theme:t}),[t,a])}function Re({text:e,config:n}){const[t,a]=(0,s.useState)(null),r=(0,s.useState)(`mermaid-svg-${Math.round(1e7*Math.random())}`)[0],i=ze(),c=n??i;return(0,s.useEffect)(()=>{(async function({id:e,text:n,config:t}){const s=await Ue();s.initialize(t);try{return await s.render(e,n)}catch(a){throw document.querySelector(`#d${e}`)?.remove(),a}})({id:r,text:e,config:c}).then(a).catch(e=>{a(()=>{throw e})})},[r,e,c]),t}const Ve="container_lyt7";function Oe({renderResult:e}){const n=(0,s.useRef)(null);return(0,s.useEffect)(()=>{const t=n.current;e.bindFunctions?.(t)},[e]),(0,p.jsx)("div",{ref:n,className:`docusaurus-mermaid-container ${Ve}`,dangerouslySetInnerHTML:{__html:e.svg}})}function $e({value:e}){const n=Re({text:e});return null===n?null:(0,p.jsx)(Oe,{renderResult:n})}const Pe={Head:r.A,details:ke,Details:ke,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every(e=>"string"==typeof e&&!e.includes("\n"))}(e)?(0,p.jsx)(he,{...e}):(0,p.jsx)(me,{...e})},a:function(e){const n=(0,pe.v)(e.id);return(0,p.jsx)(fe.A,{...e,className:(0,c.A)(n,e.className)})},pre:function(e){return(0,p.jsx)(p.Fragment,{children:e.children})},ul:function(e){return(0,p.jsx)("ul",{...e,className:_e(e.className)})},li:function(e){(0,xe.A)().collectAnchor(e.id);const n=(0,pe.v)(e.id);return(0,p.jsx)("li",{className:(0,c.A)(n,e.className),...e})},img:function(e){return(0,p.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(n=e.className,(0,c.A)(n,Ee))});var n},h1:e=>(0,p.jsx)(Be,{as:"h1",...e}),h2:e=>(0,p.jsx)(Be,{as:"h2",...e}),h3:e=>(0,p.jsx)(Be,{as:"h3",...e}),h4:e=>(0,p.jsx)(Be,{as:"h4",...e}),h5:e=>(0,p.jsx)(Be,{as:"h5",...e}),h6:e=>(0,p.jsx)(Be,{as:"h6",...e}),admonition:He.A,mermaid:function(e){return(0,p.jsx)(Me.A,{fallback:e=>(0,p.jsx)(Se.MN,{...e}),children:(0,p.jsx)($e,{...e})})}};function We({children:e}){return(0,p.jsx)(a.x,{components:Pe,children:e})}},2153:(e,n,t)=>{"use strict";t.d(n,{A:()=>g});t(6540);var s=t(4164),a=t(1312),r=t(7559),i=t(8774);const c={iconEdit:"iconEdit_Z9Sw"};var o=t(4848);function l({className:e,...n}){return(0,o.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.A)(c.iconEdit,e),"aria-hidden":"true",...n,children:(0,o.jsx)("g",{children:(0,o.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function d({editUrl:e}){return(0,o.jsxs)(i.A,{to:e,className:r.G.common.editThisPage,children:[(0,o.jsx)(l,{}),(0,o.jsx)(a.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var u=t(4586);function m(e={}){const{i18n:{currentLocale:n}}=(0,u.A)(),t=function(){const{i18n:{currentLocale:e,localeConfigs:n}}=(0,u.A)();return n[e].calendar}();return new Intl.DateTimeFormat(n,{calendar:t,...e})}function h({lastUpdatedAt:e}){const n=new Date(e),t=m({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,o.jsx)(a.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,o.jsx)("b",{children:(0,o.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:t})})},children:" on {date}"})}function f({lastUpdatedBy:e}){return(0,o.jsx)(a.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,o.jsx)("b",{children:e})},children:" by {user}"})}function p({lastUpdatedAt:e,lastUpdatedBy:n}){return(0,o.jsxs)("span",{className:r.G.common.lastUpdated,children:[(0,o.jsx)(a.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:e?(0,o.jsx)(h,{lastUpdatedAt:e}):"",byUser:n?(0,o.jsx)(f,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const x={lastUpdated:"lastUpdated_JAkA",noPrint:"noPrint_WFHX"};function g({className:e,editUrl:n,lastUpdatedAt:t,lastUpdatedBy:a}){return(0,o.jsxs)("div",{className:(0,s.A)("row",e),children:[(0,o.jsx)("div",{className:(0,s.A)("col",x.noPrint),children:n&&(0,o.jsx)(d,{editUrl:n})}),(0,o.jsx)("div",{className:(0,s.A)("col",x.lastUpdated),children:(t||a)&&(0,o.jsx)(p,{lastUpdatedAt:t,lastUpdatedBy:a})})]})}},5195:(e,n,t)=>{"use strict";t.d(n,{A:()=>p});var s=t(6540),a=t(6342);function r(e){const n=e.map(e=>({...e,parentIndex:-1,children:[]})),t=Array(7).fill(-1);n.forEach((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n});const s=[];return n.forEach(e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):s.push(a)}),s}function i({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return e.flatMap(e=>{const s=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:t});return function(e){return e.level>=n&&e.level<=t}(e)?[{...e,children:s}]:s})}function c(e){const n=e.getBoundingClientRect();return n.top===n.bottom?c(e.parentNode):n}function o(e,{anchorTopOffset:n}){const t=e.find(e=>c(e).top>=n);if(t){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(c(t))?t:e[e.indexOf(t)-1]??null}return e[e.length-1]??null}function l(){const e=(0,s.useRef)(0),{navbar:{hideOnScroll:n}}=(0,a.p)();return(0,s.useEffect)(()=>{e.current=n?0:document.querySelector(".navbar").clientHeight},[n]),e}function d(e){const n=(0,s.useRef)(void 0),t=l();(0,s.useEffect)(()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:r,maxHeadingLevel:i}=e;function c(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),c=function({minHeadingLevel:e,maxHeadingLevel:n}){const t=[];for(let s=e;s<=n;s+=1)t.push(`h${s}.anchor`);return Array.from(document.querySelectorAll(t.join()))}({minHeadingLevel:r,maxHeadingLevel:i}),l=o(c,{anchorTopOffset:t.current}),d=e.find(e=>l&&l.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e));e.forEach(e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)})}return document.addEventListener("scroll",c),document.addEventListener("resize",c),c(),()=>{document.removeEventListener("scroll",c),document.removeEventListener("resize",c)}},[e,t])}var u=t(8774),m=t(4848);function h({toc:e,className:n,linkClassName:t,isChild:s}){return e.length?(0,m.jsx)("ul",{className:s?void 0:n,children:e.map(e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:t??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:n,linkClassName:t})]},e.id))}):null}const f=s.memo(h);function p({toc:e,className:n="table-of-contents table-of-contents__left-border",linkClassName:t="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:o,maxHeadingLevel:l,...u}){const h=(0,a.p)(),p=o??h.tableOfContents.minHeadingLevel,x=l??h.tableOfContents.maxHeadingLevel,g=function({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return(0,s.useMemo)(()=>i({toc:r(e),minHeadingLevel:n,maxHeadingLevel:t}),[e,n,t])}({toc:e,minHeadingLevel:p,maxHeadingLevel:x});return d((0,s.useMemo)(()=>{if(t&&c)return{linkClassName:t,linkActiveClassName:c,minHeadingLevel:p,maxHeadingLevel:x}},[t,c,p,x])),(0,m.jsx)(f,{toc:g,className:n,linkClassName:t,...u})}},6896:(e,n,t)=>{"use strict";t.d(n,{A:()=>g});t(6540);var s=t(4164),a=t(1312),r=t(5260),i=t(4848);function c(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function o(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function l(){return(0,i.jsx)(r.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function d(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function u(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}var m=t(7559),h=t(7293);function f({className:e}){return(0,i.jsx)(h.A,{type:"caution",title:(0,i.jsx)(d,{}),className:(0,s.A)(e,m.G.common.draftBanner),children:(0,i.jsx)(u,{})})}function p({className:e}){return(0,i.jsx)(h.A,{type:"caution",title:(0,i.jsx)(c,{}),className:(0,s.A)(e,m.G.common.unlistedBanner),children:(0,i.jsx)(o,{})})}function x(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(l,{}),(0,i.jsx)(p,{...e})]})}function g({metadata:e}){const{unlisted:n,frontMatter:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(n||t.unlisted)&&(0,i.jsx)(x,{}),t.draft&&(0,i.jsx)(f,{})]})}},7293:(e,n,t)=>{"use strict";t.d(n,{A:()=>H});var s=t(6540),a=t(4848);function r(e){const{mdxAdmonitionTitle:n,rest:t}=function(e){const n=s.Children.toArray(e),t=n.find(e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type),r=n.filter(e=>e!==t),i=t?.props.children;return{mdxAdmonitionTitle:i,rest:r.length>0?(0,a.jsx)(a.Fragment,{children:r}):null}}(e.children),r=e.title??n;return{...e,...r&&{title:r},children:t}}var i=t(4164),c=t(1312),o=t(7559);const l="admonition_xJq3",d="admonitionHeading_Gvgb",u="admonitionIcon_Rf37",m="admonitionContent_BuS1";function h({type:e,className:n,children:t}){return(0,a.jsx)("div",{className:(0,i.A)(o.G.common.admonition,o.G.common.admonitionType(e),l,n),children:t})}function f({icon:e,title:n}){return(0,a.jsxs)("div",{className:d,children:[(0,a.jsx)("span",{className:u,children:e}),n]})}function p({children:e}){return e?(0,a.jsx)("div",{className:m,children:e}):null}function x(e){const{type:n,icon:t,title:s,children:r,className:i}=e;return(0,a.jsxs)(h,{type:n,className:i,children:[s||t?(0,a.jsx)(f,{title:s,icon:t}):null,(0,a.jsx)(p,{children:r})]})}function g(e){return(0,a.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const j={icon:(0,a.jsx)(g,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function v(e){return(0,a.jsx)(x,{...j,...e,className:(0,i.A)("alert alert--secondary",e.className),children:e.children})}function b(e){return(0,a.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const N={icon:(0,a.jsx)(b,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function A(e){return(0,a.jsx)(x,{...N,...e,className:(0,i.A)("alert alert--success",e.className),children:e.children})}function y(e){return(0,a.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const C={icon:(0,a.jsx)(y,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function w(e){return(0,a.jsx)(x,{...C,...e,className:(0,i.A)("alert alert--info",e.className),children:e.children})}function k(e){return(0,a.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const L={icon:(0,a.jsx)(k,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function B(e){return(0,a.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const T={icon:(0,a.jsx)(B,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const _={icon:(0,a.jsx)(k,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const E={...{note:v,tip:A,info:w,warning:function(e){return(0,a.jsx)(x,{...L,...e,className:(0,i.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,a.jsx)(x,{...T,...e,className:(0,i.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,a.jsx)(v,{title:"secondary",...e}),important:e=>(0,a.jsx)(w,{title:"important",...e}),success:e=>(0,a.jsx)(A,{title:"success",...e}),caution:function(e){return(0,a.jsx)(x,{..._,...e,className:(0,i.A)("alert alert--warning",e.className),children:e.children})}}};function H(e){const n=r(e),t=(s=n.type,E[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),E.info));var s;return(0,a.jsx)(t,{...n})}},7763:(e,n,t)=>{"use strict";t.d(n,{A:()=>l});t(6540);var s=t(4164),a=t(5195);const r={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var i=t(4848);const c="table-of-contents__link toc-highlight",o="table-of-contents__link--active";function l({className:e,...n}){return(0,i.jsx)("div",{className:(0,s.A)(r.tableOfContents,"thin-scrollbar",e),children:(0,i.jsx)(a.A,{...n,linkClassName:c,linkActiveClassName:o})})}},8426:(e,n)=>{function t(e){let n,t=[];for(let s of e.split(",").map(e=>e.trim()))if(/^-?\d+$/.test(s))t.push(parseInt(s,10));else if(n=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,r]=n;if(s&&r){s=parseInt(s),r=parseInt(r);const e=s<r?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(r+=e);for(let n=s;n!==r;n+=e)t.push(n)}}return t}n.default=t,e.exports=t}}]); \ No newline at end of file diff --git a/developer/assets/js/8577.9d14d67e.js b/developer/assets/js/8577.9d14d67e.js new file mode 100644 index 0000000..0ee2cb8 --- /dev/null +++ b/developer/assets/js/8577.9d14d67e.js @@ -0,0 +1 @@ +(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8577],{549:(s,e,l)=>{"use strict";l.d(e,{A:()=>p});var o=l(8291);const p=o},5741:()=>{}}]); \ No newline at end of file diff --git a/developer/assets/js/8591.c8685fea.js b/developer/assets/js/8591.c8685fea.js new file mode 100644 index 0000000..3601d1b --- /dev/null +++ b/developer/assets/js/8591.c8685fea.js @@ -0,0 +1,2 @@ +/*! For license information please see 8591.c8685fea.js.LICENSE.txt */ +(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8591],{392:(e,t,n)=>{"use strict";var i=n(6220),r=n(1622),s=n(6766);e.exports=function(e,t,n,o){var a=s(e.as._ua);if(a&&a[0]>=3&&a[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(e){return e[n.source]};if(!n.index)return i.error("Missing 'index' key");var l=n.index;return o=o||{},function(a,c){e.search(a,t,function(e,a){if(e)i.error(e.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var d=s(l.as._ua);return d&&d[0]>=3&&d[1]>20&&(t.additionalUA="autocomplete.js "+r),void l.search(u(h),p,function(e,t){if(e)i.error(e.message);else{var n=[];if(o.includeAll){var r=o.allTitle||"All departments";n.push(i.mixin({facet:{value:r,count:t.nbHits}},i.cloneDeep(h)))}i.each(t.facets,function(e,t){i.each(e,function(e,r){n.push(i.mixin({facet:{facet:t,value:r,count:e}},i.cloneDeep(h)))})});for(var s=1;s<a.hits.length;++s)n.push(a.hits[s]);c(n,a)}})}c([])}})}}},819:(e,t,n)=>{"use strict";var i=n(6220),r={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(r.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(r.input,{marginTop:"-1px"}),e.exports=r},874:(e,t,n)=>{"use strict";var i,r,s,o=[n(5741),n(1856),n(1015),n(6486),n(5723),n(6345)],a=-1,u=[],l=!1;function c(){i&&r&&(i=!1,r.length?u=r.concat(u):a=-1,u.length&&h())}function h(){if(!i){l=!1,i=!0;for(var e=u.length,t=setTimeout(c);e;){for(r=u,u=[];r&&++a<e;)r[a].run();a=-1,e=u.length}r=null,a=-1,i=!1,clearTimeout(t)}}for(var p=-1,d=o.length;++p<d;)if(o[p]&&o[p].test&&o[p].test()){s=o[p].install(h);break}function f(e,t){this.fun=e,this.array=t}f.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},e.exports=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new f(e,t)),l||i||(l=!0,s())}},1015:(e,t)=>{"use strict";var n=globalThis.MutationObserver||globalThis.WebKitMutationObserver;t.test=function(){return n},t.install=function(e){var t=0,i=new n(e),r=globalThis.document.createTextNode("");return i.observe(r,{characterData:!0}),function(){r.data=t=++t%2}}},1242:(e,t,n)=>{"use strict";var i=n(6220),r=n(1622),s=n(6766);e.exports=function(e,t){var n=s(e.as._ua);return n&&n[0]>=3&&n[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),function(n,r){e.search(n,t,function(e,t){e?i.error(e.message):r(t.hits,t)})}}},1337:e=>{"use strict";e.exports={element:null}},1622:e=>{e.exports="0.37.1"},1805:(e,t,n)=>{"use strict";var i=n(874),r=/\s+/;function s(e,t,n,i){var s;if(!n)return this;for(t=t.split(r),n=i?function(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};s=t.shift();)this._callbacks[s]=this._callbacks[s]||{sync:[],async:[]},this._callbacks[s][e].push(n);return this}function o(e,t,n){return function(){for(var i,r=0,s=e.length;!i&&r<s;r+=1)i=!1===e[r].apply(t,n);return!i}}e.exports={onSync:function(e,t,n){return s.call(this,"sync",e,t,n)},onAsync:function(e,t,n){return s.call(this,"async",e,t,n)},off:function(e){var t;if(!this._callbacks)return this;e=e.split(r);for(;t=e.shift();)delete this._callbacks[t];return this},trigger:function(e){var t,n,s,a,u;if(!this._callbacks)return this;e=e.split(r),s=[].slice.call(arguments,1);for(;(t=e.shift())&&(n=this._callbacks[t]);)a=o(n.sync,this,[t].concat(s)),u=o(n.async,this,[t].concat(s)),a()&&i(u);return this}}},1856:(e,t)=>{"use strict";t.test=function(){return"function"==typeof globalThis.queueMicrotask},t.install=function(e){return function(){globalThis.queueMicrotask(e)}}},2731:(e,t,n)=>{"use strict";var i=n(6220),r=n(1337),s=n(1805),o=n(9324),a=n(819);function u(e){var t,n,s,o=this;(e=e||{}).menu||i.error("menu is required"),i.isArray(e.datasets)||i.isObject(e.datasets)||i.error("1 or more datasets required"),e.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=e.minLength||0,this.templates={},this.appendTo=e.appendTo||!1,this.css=i.mixin({},a,e.appendTo?a.appendTo:{}),this.cssClasses=e.cssClasses=i.mixin({},a.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),t=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),s=i.bind(this._onSuggestionMouseLeave,this);var l=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=r.element(e.menu).on("mouseenter.aa",l,n).on("mouseleave.aa",l,s).on("click.aa",l,t),this.$container=e.appendTo?e.wrapper:this.$menu,e.templates&&e.templates.header&&(this.templates.header=i.templatify(e.templates.header),this.$menu.prepend(this.templates.header())),e.templates&&e.templates.empty&&(this.templates.empty=i.templatify(e.templates.empty),this.$empty=r.element('<div class="'+i.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(e.datasets,function(t){return function(e,t,n){return new u.Dataset(i.mixin({$menu:e,cssClasses:n},t))}(o.$menu,t,e.cssClasses)}),i.each(this.datasets,function(e){var t=e.getRoot();t&&0===t.parent().length&&o.$menu.append(t),e.onSync("rendered",o._onRendered,o)}),e.templates&&e.templates.footer&&(this.templates.footer=i.templatify(e.templates.footer),this.$menu.append(this.templates.footer()));var c=this;r.element(window).resize(function(){c._redraw()})}i.mixin(u.prototype,s,{_onSuggestionClick:function(e){this.trigger("suggestionClicked",r.element(e.currentTarget))},_onSuggestionMouseEnter:function(e){var t=r.element(e.currentTarget);if(!t.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout(function(){n._setCursor(t,!1)},0)}},_onSuggestionMouseLeave:function(e){if(e.relatedTarget&&r.element(e.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(e,t){if(this.isEmpty=i.every(this.datasets,function(e){return e.isEmpty()}),this.isEmpty)if(t.length>=this.minLength&&this.trigger("empty"),this.$empty)if(t.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else i.any(this.datasets,function(e){return e.templates&&e.templates.empty})?t.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),t.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(e,t){e.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",t)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(e){var t,n,i,r;this.isOpen&&(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=t.index(n)+e)+1)%(t.length+1)-1)?(i<-1&&(i=t.length-1),this._setCursor(r=t.eq(i),!0),this._ensureVisible(r)):this.trigger("cursorRemoved"))},_ensureVisible:function(e){var t,n,i,r;n=(t=e.position().top)+e.height()+parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),i=this.$menu.scrollTop(),r=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),t<0?this.$menu.scrollTop(i+t):r<n&&this.$menu.scrollTop(i+(n-r))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:o.extractDatum(e),value:o.extractValue(e),datasetName:o.extractDatasetName(e)}),t},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(e){i.each(this.datasets,function(t){t.update(e)})},empty:function(){i.each(this.datasets,function(e){e.clear()}),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,i.each(this.datasets,function(e){e.destroy()})}}),u.Dataset=o,e.exports=u},3704:e=>{var t;t=window,e.exports=function(e){var t,n,i=function(){var t,n,i,r,s,o,a=[],u=a.concat,l=a.filter,c=a.slice,h=e.document,p={},d={},f={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,v=/^(?:body|html)$/i,x=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],w=["after","prepend","before","append"],S=h.createElement("table"),C=h.createElement("tr"),E={tr:h.createElement("tbody"),tbody:S,thead:S,tfoot:S,td:C,th:C,"*":h.createElement("div")},k=/complete|loaded|interactive/,_=/^[\w-]*$/,T={},L=T.toString,O={},A=h.createElement("div"),$={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},P=Array.isArray||function(e){return e instanceof Array};function I(e){return null==e?String(e):T[L.call(e)]||"object"}function Q(e){return"function"==I(e)}function R(e){return null!=e&&e==e.window}function N(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function D(e){return"object"==I(e)}function F(e){return D(e)&&!R(e)&&Object.getPrototypeOf(e)==Object.prototype}function j(e){var t=!!e&&"length"in e&&e.length,n=i.type(e);return"function"!=n&&!R(e)&&("array"==n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function H(e){return l.call(e,function(e){return null!=e})}function V(e){return e.length>0?i.fn.concat.apply([],e):e}function B(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function M(e){return e in d?d[e]:d[e]=new RegExp("(^|\\s)"+e+"(\\s|$)")}function q(e,t){return"number"!=typeof t||f[B(e)]?t:t+"px"}function z(e){var t,n;return p[e]||(t=h.createElement(e),h.body.appendChild(t),n=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==n&&(n="block"),p[e]=n),p[e]}function K(e){return"children"in e?c.call(e.children):i.map(e.childNodes,function(e){if(1==e.nodeType)return e})}function W(e,t){var n,i=e?e.length:0;for(n=0;n<i;n++)this[n]=e[n];this.length=i,this.selector=t||""}function U(e,i,r){for(n in i)r&&(F(i[n])||P(i[n]))?(F(i[n])&&!F(e[n])&&(e[n]={}),P(i[n])&&!P(e[n])&&(e[n]=[]),U(e[n],i[n],r)):i[n]!==t&&(e[n]=i[n])}function G(e,t){return null==t?i(e):i(e).filter(t)}function Z(e,t,n,i){return Q(t)?t.call(e,n,i):t}function J(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function X(e,n){var i=e.className||"",r=i&&i.baseVal!==t;if(n===t)return r?i.baseVal:i;r?i.baseVal=n:e.className=n}function Y(e){try{return e?"true"==e||"false"!=e&&("null"==e?null:+e+""==e?+e:/^[\[\{]/.test(e)?i.parseJSON(e):e):e}catch(t){return e}}function ee(e,t){t(e);for(var n=0,i=e.childNodes.length;n<i;n++)ee(e.childNodes[n],t)}return O.matches=function(e,t){if(!t||!e||1!==e.nodeType)return!1;var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.matchesSelector;if(n)return n.call(e,t);var i,r=e.parentNode,s=!r;return s&&(r=A).appendChild(e),i=~O.qsa(r,t).indexOf(e),s&&A.removeChild(e),i},s=function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},o=function(e){return l.call(e,function(t,n){return e.indexOf(t)==n})},O.fragment=function(e,n,r){var s,o,a;return m.test(e)&&(s=i(h.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(y,"<$1></$2>")),n===t&&(n=g.test(e)&&RegExp.$1),n in E||(n="*"),(a=E[n]).innerHTML=""+e,s=i.each(c.call(a.childNodes),function(){a.removeChild(this)})),F(r)&&(o=i(s),i.each(r,function(e,t){b.indexOf(e)>-1?o[e](t):o.attr(e,t)})),s},O.Z=function(e,t){return new W(e,t)},O.isZ=function(e){return e instanceof O.Z},O.init=function(e,n){var r;if(!e)return O.Z();if("string"==typeof e)if("<"==(e=e.trim())[0]&&g.test(e))r=O.fragment(e,RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=O.qsa(h,e)}else{if(Q(e))return i(h).ready(e);if(O.isZ(e))return e;if(P(e))r=H(e);else if(D(e))r=[e],e=null;else if(g.test(e))r=O.fragment(e.trim(),RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=O.qsa(h,e)}}return O.Z(r,e)},(i=function(e,t){return O.init(e,t)}).extend=function(e){var t,n=c.call(arguments,1);return"boolean"==typeof e&&(t=e,e=n.shift()),n.forEach(function(n){U(e,n,t)}),e},O.qsa=function(e,t){var n,i="#"==t[0],r=!i&&"."==t[0],s=i||r?t.slice(1):t,o=_.test(s);return e.getElementById&&o&&i?(n=e.getElementById(s))?[n]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:c.call(o&&!i&&e.getElementsByClassName?r?e.getElementsByClassName(s):e.getElementsByTagName(t):e.querySelectorAll(t))},i.contains=h.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},i.type=I,i.isFunction=Q,i.isWindow=R,i.isArray=P,i.isPlainObject=F,i.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},i.isNumeric=function(e){var t=Number(e),n=typeof e;return null!=e&&"boolean"!=n&&("string"!=n||e.length)&&!isNaN(t)&&isFinite(t)||!1},i.inArray=function(e,t,n){return a.indexOf.call(t,e,n)},i.camelCase=s,i.trim=function(e){return null==e?"":String.prototype.trim.call(e)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(e,t){var n,i,r,s=[];if(j(e))for(i=0;i<e.length;i++)null!=(n=t(e[i],i))&&s.push(n);else for(r in e)null!=(n=t(e[r],r))&&s.push(n);return V(s)},i.each=function(e,t){var n,i;if(j(e)){for(n=0;n<e.length;n++)if(!1===t.call(e[n],n,e[n]))return e}else for(i in e)if(!1===t.call(e[i],i,e[i]))return e;return e},i.grep=function(e,t){return l.call(e,t)},e.JSON&&(i.parseJSON=JSON.parse),i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){T["[object "+t+"]"]=t.toLowerCase()}),i.fn={constructor:O.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var e,t,n=[];for(e=0;e<arguments.length;e++)t=arguments[e],n[e]=O.isZ(t)?t.toArray():t;return u.apply(O.isZ(this)?this.toArray():this,n)},map:function(e){return i(i.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return i(c.apply(this,arguments))},ready:function(e){return k.test(h.readyState)&&h.body?e(i):h.addEventListener("DOMContentLoaded",function(){e(i)},!1),this},get:function(e){return e===t?c.call(this):this[e>=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(e){return a.every.call(this,function(t,n){return!1!==e.call(t,n,t)}),this},filter:function(e){return Q(e)?this.not(this.not(e)):i(l.call(this,function(t){return O.matches(t,e)}))},add:function(e,t){return i(o(this.concat(i(e,t))))},is:function(e){return this.length>0&&O.matches(this[0],e)},not:function(e){var n=[];if(Q(e)&&e.call!==t)this.each(function(t){e.call(this,t)||n.push(this)});else{var r="string"==typeof e?this.filter(e):j(e)&&Q(e.item)?c.call(e):i(e);this.forEach(function(e){r.indexOf(e)<0&&n.push(e)})}return i(n)},has:function(e){return this.filter(function(){return D(e)?i.contains(this,e):i(this).find(e).size()})},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!D(e)?e:i(e)},last:function(){var e=this[this.length-1];return e&&!D(e)?e:i(e)},find:function(e){var t=this;return e?"object"==typeof e?i(e).filter(function(){var e=this;return a.some.call(t,function(t){return i.contains(t,e)})}):1==this.length?i(O.qsa(this[0],e)):this.map(function(){return O.qsa(this,e)}):i()},closest:function(e,t){var n=[],r="object"==typeof e&&i(e);return this.each(function(i,s){for(;s&&!(r?r.indexOf(s)>=0:O.matches(s,e));)s=s!==t&&!N(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)}),i(n)},parents:function(e){for(var t=[],n=this;n.length>0;)n=i.map(n,function(e){if((e=e.parentNode)&&!N(e)&&t.indexOf(e)<0)return t.push(e),e});return G(t,e)},parent:function(e){return G(o(this.pluck("parentNode")),e)},children:function(e){return G(this.map(function(){return K(this)}),e)},contents:function(){return this.map(function(){return this.contentDocument||c.call(this.childNodes)})},siblings:function(e){return G(this.map(function(e,t){return l.call(K(t.parentNode),function(e){return e!==t})}),e)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(e){return i.map(this,function(t){return t[e]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=z(this.nodeName))})},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var t=Q(e);if(this[0]&&!t)var n=i(e).get(0),r=n.parentNode||this.length>1;return this.each(function(s){i(this).wrapAll(t?e.call(this,s):r?n.cloneNode(!0):n)})},wrapAll:function(e){if(this[0]){var t;for(i(this[0]).before(e=i(e));(t=e.children()).length;)e=t.first();i(e).append(this)}return this},wrapInner:function(e){var t=Q(e);return this.each(function(n){var r=i(this),s=r.contents(),o=t?e.call(this,n):e;s.length?s.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){i(this).replaceWith(i(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(e){return this.each(function(){var n=i(this);(e===t?"none"==n.css("display"):e)?n.show():n.hide()})},prev:function(e){return i(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return i(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each(function(t){var n=this.innerHTML;i(this).empty().append(Z(this,e,t,n))}):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each(function(t){var n=Z(this,e,t,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(e,i){var r;return"string"!=typeof e||1 in arguments?this.each(function(t){if(1===this.nodeType)if(D(e))for(n in e)J(this,n,e[n]);else J(this,e,Z(this,i,t,this.getAttribute(e)))}):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(e))?r:t},removeAttr:function(e){return this.each(function(){1===this.nodeType&&e.split(" ").forEach(function(e){J(this,e)},this)})},prop:function(e,t){return e=$[e]||e,1 in arguments?this.each(function(n){this[e]=Z(this,t,n,this[e])}):this[0]&&this[0][e]},removeProp:function(e){return e=$[e]||e,this.each(function(){delete this[e]})},data:function(e,n){var i="data-"+e.replace(x,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?Y(r):t},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each(function(t){this.value=Z(this,e,t,this.value)})):this[0]&&(this[0].multiple?i(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=i(this),r=Z(this,t,e,n.offset()),s=n.offsetParent().offset(),o={top:r.top-s.top,left:r.left-s.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+e.pageXOffset,top:n.top+e.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(e,t){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[s(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(P(e)){if(!r)return;var o={},a=getComputedStyle(r,"");return i.each(e,function(e,t){o[t]=r.style[s(t)]||a.getPropertyValue(t)}),o}}var u="";if("string"==I(e))t||0===t?u=B(e)+":"+q(e,t):this.each(function(){this.style.removeProperty(B(e))});else for(n in e)e[n]||0===e[n]?u+=B(n)+":"+q(n,e[n])+";":this.each(function(){this.style.removeProperty(B(n))});return this.each(function(){this.style.cssText+=";"+u})},index:function(e){return e?this.indexOf(i(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&a.some.call(this,function(e){return this.test(X(e))},M(e))},addClass:function(e){return e?this.each(function(t){if("className"in this){r=[];var n=X(this);Z(this,e,t,n).split(/\s+/g).forEach(function(e){i(this).hasClass(e)||r.push(e)},this),r.length&&X(this,n+(n?" ":"")+r.join(" "))}}):this},removeClass:function(e){return this.each(function(n){if("className"in this){if(e===t)return X(this,"");r=X(this),Z(this,e,n,r).split(/\s+/g).forEach(function(e){r=r.replace(M(e)," ")}),X(this,r.trim())}})},toggleClass:function(e,n){return e?this.each(function(r){var s=i(this);Z(this,e,r,X(this)).split(/\s+/g).forEach(function(e){(n===t?!s.hasClass(e):n)?s.addClass(e):s.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var e=this[0],t=this.offsetParent(),n=this.offset(),r=v.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(i(e).css("margin-top"))||0,n.left-=parseFloat(i(e).css("margin-left"))||0,r.top+=parseFloat(i(t[0]).css("border-top-width"))||0,r.left+=parseFloat(i(t[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||h.body;e&&!v.test(e.nodeName)&&"static"==i(e).css("position");)e=e.offsetParent;return e})}},i.fn.detach=i.fn.remove,["width","height"].forEach(function(e){var n=e.replace(/./,function(e){return e[0].toUpperCase()});i.fn[e]=function(r){var s,o=this[0];return r===t?R(o)?o["inner"+n]:N(o)?o.documentElement["scroll"+n]:(s=this.offset())&&s[e]:this.each(function(t){(o=i(this)).css(e,Z(this,r,t,o[e]()))})}}),w.forEach(function(n,r){var s=r%2;i.fn[n]=function(){var n,o,a=i.map(arguments,function(e){var r=[];return"array"==(n=I(e))?(e.forEach(function(e){return e.nodeType!==t?r.push(e):i.zepto.isZ(e)?r=r.concat(e.get()):void(r=r.concat(O.fragment(e)))}),r):"object"==n||null==e?e:O.fragment(e)}),u=this.length>1;return a.length<1?this:this.each(function(t,n){o=s?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var l=i.contains(h.documentElement,o);a.forEach(function(t){if(u)t=t.cloneNode(!0);else if(!o)return i(t).remove();o.insertBefore(t,n),l&&ee(t,function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var n=t.ownerDocument?t.ownerDocument.defaultView:e;n.eval.call(n,t.innerHTML)}})})})},i.fn[s?n+"To":"insert"+(r?"Before":"After")]=function(e){return i(e)[n](this),this}}),O.Z.prototype=W.prototype=i.fn,O.uniq=o,O.deserializeValue=Y,i.zepto=O,i}();return function(t){var n,i=1,r=Array.prototype.slice,s=t.isFunction,o=function(e){return"string"==typeof e},a={},u={},l="onfocusin"in e,c={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(e){return e._zid||(e._zid=i++)}function d(e,t,n,i){if((t=f(t)).ns)var r=g(t.ns);return(a[p(e)]||[]).filter(function(e){return e&&(!t.e||e.e==t.e)&&(!t.ns||r.test(e.ns))&&(!n||p(e.fn)===p(n))&&(!i||e.sel==i)})}function f(e){var t=(""+e).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function g(e){return new RegExp("(?:^| )"+e.replace(" "," .* ?")+"(?: |$)")}function m(e,t){return e.del&&!l&&e.e in c||!!t}function y(e){return h[e]||l&&c[e]||e}function v(e,i,r,s,o,u,l){var c=p(e),d=a[c]||(a[c]=[]);i.split(/\s/).forEach(function(i){if("ready"==i)return t(document).ready(r);var a=f(i);a.fn=r,a.sel=o,a.e in h&&(r=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var c=u||r;a.proxy=function(t){if(!(t=E(t)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(t,"data");i&&!i.writable||(t.data=s)}catch(t){}var r=c.apply(e,t._args==n?[t]:[t].concat(t._args));return!1===r&&(t.preventDefault(),t.stopPropagation()),r}},a.i=d.length,d.push(a),"addEventListener"in e&&e.addEventListener(y(a.e),a.proxy,m(a,l))})}function x(e,t,n,i,r){var s=p(e);(t||"").split(/\s/).forEach(function(t){d(e,t,n,i).forEach(function(t){delete a[s][t.i],"removeEventListener"in e&&e.removeEventListener(y(t.e),t.proxy,m(t,r))})})}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",t.event={add:v,remove:x},t.proxy=function(e,n){var i=2 in arguments&&r.call(arguments,2);if(s(e)){var a=function(){return e.apply(n,i?i.concat(r.call(arguments)):arguments)};return a._zid=p(e),a}if(o(n))return i?(i.unshift(e[n],e),t.proxy.apply(null,i)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(e,t,n){return this.on(e,t,n)},t.fn.unbind=function(e,t){return this.off(e,t)},t.fn.one=function(e,t,n,i){return this.on(e,t,n,i,1)};var b=function(){return!0},w=function(){return!1},S=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,C={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function E(e,i){if(i||!e.isDefaultPrevented){i||(i=e),t.each(C,function(t,n){var r=i[t];e[t]=function(){return this[n]=b,r&&r.apply(i,arguments)},e[n]=w});try{e.timeStamp||(e.timeStamp=Date.now())}catch(r){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=b)}return e}function k(e){var t,i={originalEvent:e};for(t in e)S.test(t)||e[t]===n||(i[t]=e[t]);return E(i,e)}t.fn.delegate=function(e,t,n){return this.on(t,e,n)},t.fn.undelegate=function(e,t,n){return this.off(t,e,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,i,a,u,l){var c,h,p=this;return e&&!o(e)?(t.each(e,function(e,t){p.on(e,i,a,t,l)}),p):(o(i)||s(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=w),p.each(function(n,s){l&&(c=function(e){return x(s,e.type,u),u.apply(this,arguments)}),i&&(h=function(e){var n,o=t(e.target).closest(i,s).get(0);if(o&&o!==s)return n=t.extend(k(e),{currentTarget:o,liveFired:s}),(c||u).apply(o,[n].concat(r.call(arguments,1)))}),v(s,e,u,a,i,h||c)}))},t.fn.off=function(e,i,r){var a=this;return e&&!o(e)?(t.each(e,function(e,t){a.off(e,i,t)}),a):(o(i)||s(r)||!1===r||(r=i,i=n),!1===r&&(r=w),a.each(function(){x(this,e,r,i)}))},t.fn.trigger=function(e,n){return(e=o(e)||t.isPlainObject(e)?t.Event(e):E(e))._args=n,this.each(function(){e.type in c&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){(i=k(o(e)?t.Event(e):e))._args=n,i.target=a,t.each(d(a,e.type||e),function(e,t){if(r=t.proxy(i),i.isImmediatePropagationStopped())return!1})}),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(e,t){o(e)||(e=(t=e).type);var n=document.createEvent(u[e]||"Events"),i=!0;if(t)for(var r in t)"bubbles"==r?i=!!t[r]:n[r]=t[r];return n.initEvent(e,i,!0),E(n)}}(i),n=[],i.fn.remove=function(){return this.each(function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",t&&clearTimeout(t),t=setTimeout(function(){n=[]},6e4)),this.parentNode.removeChild(this))})},function(e){var t={},n=e.fn.data,i=e.camelCase,r=e.expando="Zepto"+ +new Date,s=[];function o(s,o){var u=s[r],l=u&&t[u];if(void 0===o)return l||a(s);if(l){if(o in l)return l[o];var c=i(o);if(c in l)return l[c]}return n.call(e(s),o)}function a(n,s,o){var a=n[r]||(n[r]=++e.uuid),l=t[a]||(t[a]=u(n));return void 0!==s&&(l[i(s)]=o),l}function u(t){var n={};return e.each(t.attributes||s,function(t,r){0==r.name.indexOf("data-")&&(n[i(r.name.replace("data-",""))]=e.zepto.deserializeValue(r.value))}),n}e.fn.data=function(t,n){return void 0===n?e.isPlainObject(t)?this.each(function(n,i){e.each(t,function(e,t){a(i,e,t)})}):0 in this?o(this[0],t):void 0:this.each(function(){a(this,t,n)})},e.data=function(t,n,i){return e(t).data(n,i)},e.hasData=function(n){var i=n[r],s=i&&t[i];return!!s&&!e.isEmptyObject(s)},e.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each(function(){var s=this[r],o=s&&t[s];o&&e.each(n||o,function(e){delete o[n?i(this):e]})})},["remove","empty"].forEach(function(t){var n=e.fn[t];e.fn[t]=function(){var e=this.find("*");return"remove"===t&&(e=e.add(this)),e.removeData(),n.call(this)}})}(i),i}(t)},4045:(e,t,n)=>{"use strict";var i=n(6220),r=n(1337);function s(e){e&&e.el||i.error("EventBus initialized without el"),this.$el=r.element(e.el)}i.mixin(s.prototype,{trigger:function(e,t,n,r){var s=i.Event("autocomplete:"+e);return this.$el.trigger(s,[t,n,r]),s}}),e.exports=s},4498:(e,t,n)=>{"use strict";e.exports=n(5275)},4499:e=>{"use strict";e.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},4710:(e,t,n)=>{"use strict";e.exports={hits:n(1242),popularIn:n(392)}},4714:(e,t,n)=>{var i=n(9110);i.Template=n(9549).Template,i.template=i.Template,e.exports=i},5275:(e,t,n)=>{"use strict";var i=n(3704);n(1337).element=i;var r=n(6220);r.isArray=i.isArray,r.isFunction=i.isFunction,r.isObject=i.isPlainObject,r.bind=i.proxy,r.each=function(e,t){i.each(e,function(e,n){return t(n,e)})},r.map=i.map,r.mixin=i.extend,r.Event=i.Event;var s="aaAutocomplete",o=n(8693),a=n(4045);function u(e,t,n,u){n=r.isArray(n)?n:[].slice.call(arguments,2);var l=i(e).each(function(e,r){var l=i(r),c=new a({el:l}),h=u||new o({input:l,eventBus:c,dropdownMenuContainer:t.dropdownMenuContainer,hint:void 0===t.hint||!!t.hint,minLength:t.minLength,autoselect:t.autoselect,autoselectOnBlur:t.autoselectOnBlur,tabAutocomplete:t.tabAutocomplete,openOnFocus:t.openOnFocus,templates:t.templates,debug:t.debug,clearOnSelected:t.clearOnSelected,cssClasses:t.cssClasses,datasets:n,keyboardShortcuts:t.keyboardShortcuts,appendTo:t.appendTo,autoWidth:t.autoWidth,ariaLabel:t.ariaLabel||r.getAttribute("aria-label")});l.data(s,h)});return l.autocomplete={},r.each(["open","close","getVal","setVal","destroy","getWrapper"],function(e){l.autocomplete[e]=function(){var t,n=arguments;return l.each(function(r,o){var a=i(o).data(s);t=a[e].apply(a,n)}),t}}),l}u.sources=o.sources,u.escapeHighlightedString=r.escapeHighlightedString;var l="autocomplete"in window,c=window.autocomplete;u.noConflict=function(){return l?window.autocomplete=c:delete window.autocomplete,u},e.exports=u},5723:(e,t)=>{"use strict";t.test=function(){return"document"in globalThis&&"onreadystatechange"in globalThis.document.createElement("script")},t.install=function(e){return function(){var t=globalThis.document.createElement("script");return t.onreadystatechange=function(){e(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},globalThis.document.documentElement.appendChild(t),e}}},5765:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var i=n(4714),r=n.n(i),s=n(549);s.A.tokenizer.separator=/[\s\-/]+/;const o=class{constructor(e,t,n="/",i){this.searchDocs=e,this.lunrIndex=s.A.Index.load(t),this.baseUrl=n,this.maxHits=i}getLunrResult(e){return this.lunrIndex.query(function(t){const n=s.A.tokenizer(e);t.term(n,{boost:10}),t.term(n,{wildcard:s.A.Query.wildcard.TRAILING})})}getHit(e,t,n){return{hierarchy:{lvl0:e.pageTitle||e.title,lvl1:0===e.type?null:e.title},url:e.url,version:e.version,_snippetResult:n?{content:{value:n,matchLevel:"full"}}:null,_highlightResult:{hierarchy:{lvl0:{value:0===e.type?t||e.title:e.pageTitle},lvl1:0===e.type?null:{value:t||e.title}}}}}getTitleHit(e,t,n){const i=t[0],r=t[0]+n;let s=e.title.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.title.substring(i,r)+"</span>"+e.title.substring(r,e.title.length);return this.getHit(e,s)}getKeywordHit(e,t,n){const i=t[0],r=t[0]+n;let s=e.title+"<br /><i>Keywords: "+e.keywords.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.keywords.substring(i,r)+"</span>"+e.keywords.substring(r,e.keywords.length)+"</i>";return this.getHit(e,s)}getContentHit(e,t){const n=t[0],i=t[0]+t[1];let r=n,s=i,o=!0,a=!0;for(let l=0;l<3;l++){const t=e.content.lastIndexOf(" ",r-2),n=e.content.lastIndexOf(".",r-2);if(n>0&&n>t){r=n+1,o=!1;break}if(t<0){r=0,o=!1;break}r=t+1}for(let l=0;l<10;l++){const t=e.content.indexOf(" ",s+1),n=e.content.indexOf(".",s+1);if(n>0&&n<t){s=n,a=!1;break}if(t<0){s=e.content.length,a=!1;break}s=t}let u=e.content.substring(r,n);return o&&(u="... "+u),u+='<span class="algolia-docsearch-suggestion--highlight">'+e.content.substring(n,i)+"</span>",u+=e.content.substring(i,s),a&&(u+=" ..."),this.getHit(e,null,u)}search(e){return new Promise((t,n)=>{const i=this.getLunrResult(e),r=[];i.length>this.maxHits&&(i.length=this.maxHits),this.titleHitsRes=[],this.contentHitsRes=[],i.forEach(t=>{const n=this.searchDocs[t.ref],{metadata:i}=t.matchData;for(let s in i)if(i[s].title){if(!this.titleHitsRes.includes(t.ref)){const o=i[s].title.position[0];r.push(this.getTitleHit(n,o,e.length)),this.titleHitsRes.push(t.ref)}}else if(i[s].content){const e=i[s].content.position[0];r.push(this.getContentHit(n,e))}else if(i[s].keywords){const o=i[s].keywords.position[0];r.push(this.getKeywordHit(n,o,e.length)),this.titleHitsRes.push(t.ref)}}),r.length>this.maxHits&&(r.length=this.maxHits),t(r)})}};var a=n(4498),u=n.n(a);const l="algolia-docsearch",c=`${l}-suggestion`,h={suggestion:`\n <a class="${c}\n {{#isCategoryHeader}}${c}__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}${c}__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="${c}--category-header">\n <span class="${c}--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="${c}--wrapper">\n <div class="${c}--subcategory-column">\n <span class="${c}--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="${c}--content">\n <div class="${c}--subcategory-inline">{{{subcategory}}}</div>\n <div class="${c}--title">{{{title}}}</div>\n {{#text}}<div class="${c}--text">{{{text}}}</div>{{/text}}\n {{#version}}<div class="${c}--version">{{version}}</div>{{/version}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n `,suggestionSimple:`\n <div class="${c}\n {{#isCategoryHeader}}${c}__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}${c}__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="${c}--category-header">\n {{^isLvl0}}\n <span class="${c}--category-header-lvl0 ${c}--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="${c}--category-header-lvl1 ${c}--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="${c}--title ${c}--category-header-item">\n {{#isLvl2}}\n {{{title}}}\n {{/isLvl2}}\n {{#isLvl1}}\n {{{subcategory}}}\n {{/isLvl1}}\n {{#isLvl0}}\n {{{category}}}\n {{/isLvl0}}\n </div>\n </div>\n <div class="${c}--wrapper">\n {{#text}}\n <div class="${c}--content">\n <div class="${c}--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n `,footer:`\n <div class="${`${l}-footer`}">\n </div>\n `,empty:`\n <div class="${c}">\n <div class="${c}--wrapper">\n <div class="${c}--content ${c}--no-results">\n <div class="${c}--title">\n <div class="${c}--text">\n No results found for query <b>"{{query}}"</b>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,searchBox:'\n <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n <div role="search" class="searchbox__wrapper">\n <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n <button type="submit" title="Submit your search query." class="searchbox__submit" >\n <svg width=12 height=12 role="img" aria-label="Search">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n </svg>\n </button>\n <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n <svg width=12 height=12 role="img" aria-label="Reset">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n </svg>\n </button>\n </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n <svg xmlns="http://www.w3.org/2000/svg">\n <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n </svg>\n</div>\n '};var p=n(3704),d=n.n(p);const f={mergeKeyWithParent(e,t){if(void 0===e[t])return e;if("object"!=typeof e[t])return e;const n=d().extend({},e,e[t]);return delete n[t],n},groupBy(e,t){const n={};return d().each(e,(e,i)=>{if(void 0===i[t])throw new Error(`[groupBy]: Object has no key ${t}`);let r=i[t];"string"==typeof r&&(r=r.toLowerCase()),Object.prototype.hasOwnProperty.call(n,r)||(n[r]=[]),n[r].push(i)}),n},values:e=>Object.keys(e).map(t=>e[t]),flatten(e){const t=[];return e.forEach(e=>{Array.isArray(e)?e.forEach(e=>{t.push(e)}):t.push(e)}),t},flattenAndFlagFirst(e,t){const n=this.values(e).map(e=>e.map((e,n)=>(e[t]=0===n,e)));return this.flatten(n)},compact(e){const t=[];return e.forEach(e=>{e&&t.push(e)}),t},getHighlightedValue:(e,t)=>e._highlightResult&&e._highlightResult.hierarchy_camel&&e._highlightResult.hierarchy_camel[t]&&e._highlightResult.hierarchy_camel[t].matchLevel&&"none"!==e._highlightResult.hierarchy_camel[t].matchLevel&&e._highlightResult.hierarchy_camel[t].value?e._highlightResult.hierarchy_camel[t].value:e._highlightResult&&e._highlightResult&&e._highlightResult[t]&&e._highlightResult[t].value?e._highlightResult[t].value:e[t],getSnippetedValue(e,t){if(!e._snippetResult||!e._snippetResult[t]||!e._snippetResult[t].value)return e[t];let n=e._snippetResult[t].value;return n[0]!==n[0].toUpperCase()&&(n=`\u2026${n}`),-1===[".","!","?"].indexOf(n[n.length-1])&&(n=`${n}\u2026`),n},deepClone:e=>JSON.parse(JSON.stringify(e))};class g{constructor({searchDocs:e,searchIndex:t,inputSelector:n,debug:i=!1,baseUrl:r="/",queryDataCallback:s=null,autocompleteOptions:a={debug:!1,hint:!1,autoselect:!0},transformData:l=!1,queryHook:c=!1,handleSelected:p=!1,enhancedSearchInput:f=!1,layout:m="column",maxHits:y=5}){this.input=g.getInputFromSelector(n),this.queryDataCallback=s||null;const v=!(!a||!a.debug)&&a.debug;a.debug=i||v,this.autocompleteOptions=a,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";const x=this.input&&"function"==typeof this.input.attr&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||x||"search input",this.isSimpleLayout="simple"===m,this.client=new o(e,t,r,y),f&&(this.input=g.injectSearchBox(this.input)),this.autocomplete=u()(this.input,a,[{source:this.getAutocompleteSource(l,c),templates:{suggestion:g.getSuggestionTemplate(this.isSimpleLayout),footer:h.footer,empty:g.getEmptyTemplate()}}]);const b=p;this.handleSelected=b||this.handleSelected,b&&d()(".algolia-autocomplete").on("click",".ds-suggestions a",e=>{e.preventDefault()}),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),f&&g.bindSearchBoxEvent(),document.addEventListener("keydown",e=>{(e.ctrlKey||e.metaKey)&&"k"==e.key&&(this.input.focus(),e.preventDefault())})}static injectSearchBox(e){e.before(h.searchBox);const t=e.prev().prev().find("input");return e.remove(),t}static bindSearchBoxEvent(){d()('.searchbox [type="reset"]').on("click",function(){d()("input#docsearch").focus(),d()(this).addClass("hide"),u().autocomplete.setVal("")}),d()("input#docsearch").on("keyup",()=>{const e=document.querySelector("input#docsearch"),t=document.querySelector('.searchbox [type="reset"]');t.className="searchbox__reset",0===e.value.length&&(t.className+=" hide")})}static getInputFromSelector(e){const t=d()(e).filter("input");return t.length?d()(t[0]):null}getAutocompleteSource(e,t){return(n,i)=>{t&&(n=t(n)||n),this.client.search(n).then(t=>{this.queryDataCallback&&"function"==typeof this.queryDataCallback&&this.queryDataCallback(t),e&&(t=e(t)||t),i(g.formatHits(t))})}}static formatHits(e){const t=f.deepClone(e).map(e=>(e._highlightResult&&(e._highlightResult=f.mergeKeyWithParent(e._highlightResult,"hierarchy")),f.mergeKeyWithParent(e,"hierarchy")));let n=f.groupBy(t,"lvl0");return d().each(n,(e,t)=>{const i=f.groupBy(t,"lvl1"),r=f.flattenAndFlagFirst(i,"isSubCategoryHeader");n[e]=r}),n=f.flattenAndFlagFirst(n,"isCategoryHeader"),n.map(e=>{const t=g.formatURL(e),n=f.getHighlightedValue(e,"lvl0"),i=f.getHighlightedValue(e,"lvl1")||n,r=f.compact([f.getHighlightedValue(e,"lvl2")||i,f.getHighlightedValue(e,"lvl3"),f.getHighlightedValue(e,"lvl4"),f.getHighlightedValue(e,"lvl5"),f.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> \u203a </span>'),s=f.getSnippetedValue(e,"content"),o=i&&""!==i||r&&""!==r,a=!i||""===i||i===n,u=r&&""!==r&&r!==i,l=!u&&i&&""!==i&&i!==n,c=!l&&!u,h=e.version;return{isLvl0:c,isLvl1:l,isLvl2:u,isLvl1EmptyOrDuplicate:a,isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:o,category:n,subcategory:i,title:r,text:s,url:t,version:h}})}static formatURL(e){const{url:t,anchor:n}=e;if(t){return-1!==t.indexOf("#")?t:n?`${e.url}#${e.anchor}`:t}return n?`#${e.anchor}`:(console.warn("no anchor nor url for : ",JSON.stringify(e)),null)}static getEmptyTemplate(){return e=>r().compile(h.empty).render(e)}static getSuggestionTemplate(e){const t=e?h.suggestionSimple:h.suggestion,n=r().compile(t);return e=>n.render(e)}handleSelected(e,t,n,i,r={}){"click"!==r.selectionMethod&&(e.setVal(""),window.location.assign(n.url))}handleShown(e){const t=e.offset().left+e.width()/2;let n=d()(document).width()/2;isNaN(n)&&(n=900);const i=t-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",r=t-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",s=d()(".algolia-autocomplete");s.hasClass(i)||s.addClass(i),s.hasClass(r)&&s.removeClass(r)}}const m=g},6220:(e,t,n)=>{"use strict";var i,r=n(1337);function s(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}e.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(e){if(void 0===e&&(e=navigator.userAgent),/(msie|trident)/i.test(e)){var t=e.match(/(msie |rv:)(\d+(.\d+)?)/i);if(t)return t[2]}return!1},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(e){return"number"==typeof e},toStr:function(e){return null==e?"":e+""},cloneDeep:function(e){var t=this.mixin({},e),n=this;return this.each(t,function(e,i){e&&(n.isArray(e)?t[i]=[].concat(e):n.isObject(e)&&(t[i]=n.cloneDeep(e)))}),t},error:function(e){throw new Error(e)},every:function(e,t){var n=!0;return e?(this.each(e,function(i,r){n&&(n=t.call(null,i,r,e)&&n)}),!!n):n},any:function(e,t){var n=!1;return e?(this.each(e,function(i,r){if(t.call(null,i,r,e))return n=!0,!1}),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(e){if(this.isFunction(e))return e;var t=r.element(e);return"SCRIPT"===t.prop("tagName")?function(){return t.text()}:function(){return String(e)}},defer:function(e){setTimeout(e,0)},noop:function(){},formatPrefix:function(e,t){return t?"":e+"-"},className:function(e,t,n){return(n?"":".")+e+t},escapeHighlightedString:function(e,t,n){t=t||"<em>";var i=document.createElement("div");i.appendChild(document.createTextNode(t)),n=n||"</em>";var r=document.createElement("div");r.appendChild(document.createTextNode(n));var o=document.createElement("div");return o.appendChild(document.createTextNode(e)),o.innerHTML.replace(RegExp(s(i.innerHTML),"g"),t).replace(RegExp(s(r.innerHTML),"g"),n)}}},6345:(e,t)=>{"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},6486:(e,t)=>{"use strict";t.test=function(){return!globalThis.setImmediate&&void 0!==globalThis.MessageChannel},t.install=function(e){var t=new globalThis.MessageChannel;return t.port1.onmessage=e,function(){t.port2.postMessage(0)}}},6766:e=>{"use strict";e.exports=function(e){var t=e.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||e.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(t)return[t[1],t[2],t[3]]}},7748:(e,t,n)=>{"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var r=n(6220),s=n(1337),o=n(1805);function a(e){var t,n,o,a,u,l=this;(e=e||{}).input||r.error("input is missing"),t=r.bind(this._onBlur,this),n=r.bind(this._onFocus,this),o=r.bind(this._onKeydown,this),a=r.bind(this._onInput,this),this.$hint=s.element(e.hint),this.$input=s.element(e.input).on("blur.aa",t).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=r.noop),r.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function(e){i[e.which||e.keyCode]||r.defer(r.bind(l._onInput,l,e))}):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,s.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}a.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},r.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=i[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,i,r;switch(e){case"tab":i=this.getHint(),r=this.getInputValue(),n=i&&i!==r&&!u(t);break;case"up":case"down":n=!u(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;if("tab"===e)n=!u(t);else n=!0;return n},_checkInputValue:function(){var e,t,n,i,r;e=this.getInputValue(),i=e,r=this.query,n=!(!(t=a.normalizeQuery(i)===a.normalizeQuery(r))||!this.query)&&this.query.length!==e.length,this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){void 0===e&&(e=this.query),this.$input.val(e),t?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(e){this.$input.attr("aria-activedescendant",e)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),""!==e&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,t,n;return e=this.$input.val().length,t=this.$input[0].selectionStart,r.isNumber(t)?t===e:!document.selection||((n=document.selection.createRange()).moveStart("character",-e),e===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),e.exports=a},8291:(e,t,n)=>{var i,r;!function(){var s,o,a,u,l,c,h,p,d,f,g,m,y,v,x,b,w,S,C,E,k,_,T,L,O,A,$,P,I,Q,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.9",R.utils={},R.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?"":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var r=n[i],s=e[r];if(Array.isArray(s))t[r]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[r]=s}}return t},R.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},R.FieldRef.joiner="/",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),i=e.slice(t+1);return new R.FieldRef(i,n,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,n,i,r=[];if(e===R.Set.complete)return this;if(e===R.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in n.elements&&r.push(o)}return new R.Set(r)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.idf=function(e,t){var n=0;for(var i in e)"_index"!=i&&(n+=Object.keys(e[i]).length);var r=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(r))},R.Token=function(e,t){this.str=e||"",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.utils.clone(t))});for(var n=e.toString().toLowerCase(),i=n.length,r=[],s=0,o=0;s<=i;s++){var a=s-o;if(n.charAt(s).match(R.tokenizer.separator)||s==i){if(a>0){var u=R.utils.clone(t)||{};u.position=[o,a],u.index=r.length,r.push(new R.Token(n.slice(o,s),u))}o=s+1}}return r},R.tokenizer.separator=/[\s\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn("Overwriting existing registered function: "+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach(function(e){var n=R.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)}),t},R.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var i=this._stack[n],r=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)r.push(o[a]);else r.push(o)}e=r}return e},R.Pipeline.prototype.runString=function(e,t){var n=new R.Token(e,t);return this.run([n]).map(function(e){return e.toString()})},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label})},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,i=n-t,r=Math.floor(i/2),s=this.elements[2*r];i>1&&(s<e&&(t=r),s>e&&(n=r),s!=e);)i=n-t,r=t+Math.floor(i/2),s=this.elements[2*r];return s==e||s>e?2*r:s<e?2*(r+1):void 0},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},R.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],t):this.elements.splice(i,0,e,t)},R.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},R.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,i=e.elements,r=n.length,s=i.length,o=0,a=0,u=0,l=0;u<r&&l<s;)(o=n[u])<(a=i[l])?u+=2:o>a?l+=2:o==a&&(t+=n[u+1]*i[l+1],u+=2,l+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},R.Vector.prototype.toJSON=function(){return this.elements},R.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},a={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},h="^("+(l="[^aeiou][^aeiouy]*")+")?"+(c=(u="[aeiouy]")+"[aeiou]*")+l+"("+c+")?$",p="^("+l+")?"+c+l+c+l,d="^("+l+")?"+u,f=new RegExp("^("+l+")?"+c+l),g=new RegExp(p),m=new RegExp(h),y=new RegExp(d),v=/^(.+?)(ss|i)es$/,x=/^(.+?)([^s])s$/,b=/^(.+?)eed$/,w=/^(.+?)(ed|ing)$/,S=/.$/,C=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+l+u+"[^aeiouwxy]$"),_=/^(.+?[^aeiou])y$/,T=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,L=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,O=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,A=/^(.+?)(s|t)(ion)$/,$=/^(.+?)e$/,P=/ll$/,I=new RegExp("^"+l+u+"[^aeiouwxy]$"),Q=function(e){var t,n,i,r,s,u,l;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=x,(r=v).test(e)?e=e.replace(r,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=w,(r=b).test(e)){var c=r.exec(e);(r=f).test(c[1])&&(r=S,e=e.replace(r,""))}else s.test(e)&&(t=(c=s.exec(e))[1],(s=y).test(t)&&(u=E,l=k,(s=C).test(e=t)?e+="e":u.test(e)?(r=S,e=e.replace(r,"")):l.test(e)&&(e+="e")));return(r=_).test(e)&&(e=(t=(c=r.exec(e))[1])+"i"),(r=T).test(e)&&(t=(c=r.exec(e))[1],n=c[2],(r=f).test(t)&&(e=t+o[n])),(r=L).test(e)&&(t=(c=r.exec(e))[1],n=c[2],(r=f).test(t)&&(e=t+a[n])),s=A,(r=O).test(e)?(t=(c=r.exec(e))[1],(r=g).test(t)&&(e=t)):s.test(e)&&(t=(c=s.exec(e))[1]+c[2],(s=g).test(t)&&(e=t)),(r=$).test(e)&&(t=(c=r.exec(e))[1],s=m,u=I,((r=g).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=g,(r=P).test(e)&&s.test(e)&&(r=S,e=e.replace(r,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(Q)}),R.Pipeline.registerFunction(R.stemmer,"stemmer"),R.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},R.stopWordFilter=R.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),R.Pipeline.registerFunction(R.stopWordFilter,"stopWordFilter"),R.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},R.Pipeline.registerFunction(R.trimmer,"trimmer"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,n=0,i=e.length;n<i;n++)t.insert(e[n]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return"editDistance"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var n=new R.TokenSet,i=[{node:n,editsRemaining:t,str:e}];i.length;){var r=i.pop();if(r.str.length>0){var s,o=r.str.charAt(0);o in r.node.edges?s=r.node.edges[o]:(s=new R.TokenSet,r.node.edges[o]=s),1==r.str.length&&(s.final=!0),i.push({node:s,editsRemaining:r.editsRemaining,str:r.str.slice(1)})}if(0!=r.editsRemaining){if("*"in r.node.edges)var a=r.node.edges["*"];else{a=new R.TokenSet;r.node.edges["*"]=a}if(0==r.str.length&&(a.final=!0),i.push({node:a,editsRemaining:r.editsRemaining-1,str:r.str}),r.str.length>1&&i.push({node:r.node,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)}),1==r.str.length&&(r.node.final=!0),r.str.length>=1){if("*"in r.node.edges)var u=r.node.edges["*"];else{u=new R.TokenSet;r.node.edges["*"]=u}1==r.str.length&&(u.final=!0),i.push({node:u,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)})}if(r.str.length>1){var l,c=r.str.charAt(0),h=r.str.charAt(1);h in r.node.edges?l=r.node.edges[h]:(l=new R.TokenSet,r.node.edges[h]=l),1==r.str.length&&(l.final=!0),i.push({node:l,editsRemaining:r.editsRemaining-1,str:c+r.str.slice(2)})}}}return n},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,n=t,i=0,r=e.length;i<r;i++){var s=e[i],o=i==r-1;if("*"==s)t.edges[s]=t,t.final=o;else{var a=new R.TokenSet;a.final=o,t.edges[s]=a,t=a}}return n},R.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),i=Object.keys(n.node.edges),r=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var s=0;s<r;s++){var o=i[s];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},R.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,i=0;i<n;i++){var r=t[i];e=e+r+this.edges[r].id}return e},R.TokenSet.prototype.intersect=function(e){for(var t=new R.TokenSet,n=void 0,i=[{qNode:e,output:t,node:this}];i.length;){n=i.pop();for(var r=Object.keys(n.qNode.edges),s=r.length,o=Object.keys(n.node.edges),a=o.length,u=0;u<s;u++)for(var l=r[u],c=0;c<a;c++){var h=o[c];if(h==l||"*"==l){var p=n.node.edges[h],d=n.qNode.edges[l],f=p.final&&d.final,g=void 0;h in n.output.edges?(g=n.output.edges[h]).final=g.final||f:((g=new R.TokenSet).final=f,n.output.edges[h]=g),i.push({qNode:d,output:g,node:p})}}}return t},R.TokenSet.Builder=function(){this.previousWord="",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=n;i<e.length;i++){var r=new R.TokenSet,s=e[i];t.edges[s]=r,this.uncheckedNodes.push({parent:t,char:s,child:r}),t=r}t.final=!0,this.previousWord=e},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query(function(t){new R.QueryParser(e,t).parse()})},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),n=Object.create(null),i=Object.create(null),r=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new R.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],l=null,c=R.Set.empty;l=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<l.length;h++){var p=l[h];u.term=p;var d=R.TokenSet.fromClause(u),f=this.tokenSet.intersect(d).toArray();if(0===f.length&&u.presence===R.Query.presence.REQUIRED){for(var g=0;g<u.fields.length;g++){s[$=u.fields[g]]=R.Set.empty}break}for(var m=0;m<f.length;m++){var y=f[m],v=this.invertedIndex[y],x=v._index;for(g=0;g<u.fields.length;g++){var b=v[$=u.fields[g]],w=Object.keys(b),S=y+"/"+$,C=new R.Set(w);if(u.presence==R.Query.presence.REQUIRED&&(c=c.union(C),void 0===s[$]&&(s[$]=R.Set.complete)),u.presence!=R.Query.presence.PROHIBITED){if(i[$].upsert(x,u.boost,function(e,t){return e+t}),!r[S]){for(var E=0;E<w.length;E++){var k,_=w[E],T=new R.FieldRef(_,$),L=b[_];void 0===(k=n[T])?n[T]=new R.MatchData(y,$,L):k.add(y,$,L)}r[S]=!0}}else void 0===o[$]&&(o[$]=R.Set.empty),o[$]=o[$].union(C)}}}if(u.presence===R.Query.presence.REQUIRED)for(g=0;g<u.fields.length;g++){s[$=u.fields[g]]=s[$].intersect(c)}}var O=R.Set.complete,A=R.Set.empty;for(a=0;a<this.fields.length;a++){var $;s[$=this.fields[a]]&&(O=O.intersect(s[$])),o[$]&&(A=A.union(o[$]))}var P=Object.keys(n),I=[],Q=Object.create(null);if(t.isNegated()){P=Object.keys(this.fieldVectors);for(a=0;a<P.length;a++){T=P[a];var N=R.FieldRef.fromString(T);n[T]=new R.MatchData}}for(a=0;a<P.length;a++){var D=(N=R.FieldRef.fromString(P[a])).docRef;if(O.contains(D)&&!A.contains(D)){var F,j=this.fieldVectors[N],H=i[N.fieldName].similarity(j);if(void 0!==(F=Q[D]))F.score+=H,F.matchData.combine(n[N]);else{var V={ref:D,score:H,matchData:n[N]};Q[D]=V,I.push(V)}}}return I.sort(function(e,t){return t.score-e.score})},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),t=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},n={},i=e.fieldVectors,r=Object.create(null),s=e.invertedIndex,o=new R.TokenSet.Builder,a=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var l=(h=i[u])[0],c=h[1];n[l]=new R.Vector(c)}for(u=0;u<s.length;u++){var h,p=(h=s[u])[0],d=h[1];o.insert(p),r[p]=d}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=r,t.tokenSet=o.root,t.pipeline=a,new R.Index(t)},R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var r=0;r<i.length;r++){var s=i[r],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new R.FieldRef(n,s),h=Object.create(null);this.fieldTermFrequencies[c]=h,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var p=0;p<l.length;p++){var d=l[p];if(null==h[d]&&(h[d]=0),h[d]+=1,null==this.invertedIndex[d]){var f=Object.create(null);f._index=this.termIndex,this.termIndex+=1;for(var g=0;g<i.length;g++)f[i[g]]=Object.create(null);this.invertedIndex[d]=f}null==this.invertedIndex[d][s][n]&&(this.invertedIndex[d][s][n]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var y=this.metadataWhitelist[m],v=d.metadata[y];null==this.invertedIndex[d][s][n][y]&&(this.invertedIndex[d][s][n][y]=[]),this.invertedIndex[d][s][n][y].push(v)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},i={},r=0;r<t;r++){var s=R.FieldRef.fromString(e[r]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(r=0;r<a.length;r++){var u=a[r];n[u]=n[u]/i[u]}this.averageFieldLength=n},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,i=Object.create(null),r=0;r<n;r++){for(var s=R.FieldRef.fromString(t[r]),o=s.fieldName,a=this.fieldLengths[s],u=new R.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),h=c.length,p=this._fields[o].boost||1,d=this._documents[s.docRef].boost||1,f=0;f<h;f++){var g,m,y,v=c[f],x=l[v],b=this.invertedIndex[v]._index;void 0===i[v]?(g=R.idf(this.invertedIndex[v],this.documentCount),i[v]=g):g=i[v],m=g*((this._k1+1)*x)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+x),m*=p,m*=d,y=Math.round(1e3*m)/1e3,u.insert(b,y)}e[s]=u}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,n){for(var i=Object.create(null),r=Object.keys(n||{}),s=0;s<r.length;s++){var o=r[s];i[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var i=t[n],r=Object.keys(e.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<r.length;s++){var o=r[s],a=Object.keys(e.metadata[i][o]);null==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];null==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},R.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var i=Object.keys(n),r=0;r<i.length;r++){var s=i[r];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(n[s]):this.metadata[e][t][s]=n[s]}else this.metadata[e][t]=n},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach(function(e){this.term(e,R.utils.clone(t))},this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},R.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new R.QueryParseError(n,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(n,t.start,t.end)}var i=e.peekLexeme();if(null==i){n="expecting term or field, found nothing";throw new R.QueryParseError(n,t.start,t.end)}switch(i.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:n="expecting term or field, found '"+i.type+"'";throw new R.QueryParseError(n,i.start,i.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+n;throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var r=e.peekLexeme();if(null==r){i="expecting term, found nothing";throw new R.QueryParseError(i,t.start,t.end)}if(r.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;i="expecting term, found '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="boost must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.boost=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}else e.nextClause()}},void 0===(r="function"==typeof(i=function(){return R})?i.call(t,n,t,e):i)||(e.exports=r)}()},8693:(e,t,n)=>{"use strict";var i="aaAttrs",r=n(6220),s=n(1337),o=n(4045),a=n(7748),u=n(2731),l=n(4499),c=n(819);function h(e){var t,n;if((e=e||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!e.debug,this.autoselect=!!e.autoselect,this.autoselectOnBlur=!!e.autoselectOnBlur,this.openOnFocus=!!e.openOnFocus,this.minLength=r.isNumber(e.minLength)?e.minLength:1,this.autoWidth=void 0===e.autoWidth||!!e.autoWidth,this.clearOnSelected=!!e.clearOnSelected,this.tabAutocomplete=void 0===e.tabAutocomplete||!!e.tabAutocomplete,e.hint=!!e.hint,e.hint&&e.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=e.css=r.mixin({},c,e.appendTo?c.appendTo:{}),this.cssClasses=e.cssClasses=r.mixin({},c.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=e.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var a=function(e){var t,n,o,a;t=s.element(e.input),n=s.element(l.wrapper.replace("%ROOT%",e.cssClasses.root)).css(e.css.wrapper),e.appendTo||"block"!==t.css("display")||"table"!==t.parent().css("display")||n.css("display","table-cell");var u=l.dropdown.replace("%PREFIX%",e.cssClasses.prefix).replace("%DROPDOWN_MENU%",e.cssClasses.dropdownMenu);o=s.element(u).css(e.css.dropdown).attr({role:"listbox",id:e.listboxId}),e.templates&&e.templates.dropdownMenu&&o.html(r.templatify(e.templates.dropdownMenu)());a=t.clone().css(e.css.hint).css(function(e){return{backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}}(t)),a.val("").addClass(r.className(e.cssClasses.prefix,e.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();t.data(i,{"aria-autocomplete":t.attr("aria-autocomplete"),"aria-expanded":t.attr("aria-expanded"),"aria-owns":t.attr("aria-owns"),autocomplete:t.attr("autocomplete"),dir:t.attr("dir"),role:t.attr("role"),spellcheck:t.attr("spellcheck"),style:t.attr("style"),type:t.attr("type")}),t.addClass(r.className(e.cssClasses.prefix,e.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":e.datasets&&e.datasets[0]&&e.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":e.ariaLabel,"aria-owns":e.listboxId}).css(e.hint?e.css.input:e.css.inputWithNoHint);try{t.attr("dir")||t.attr("dir","auto")}catch(c){}return n=e.appendTo?n.appendTo(s.element(e.appendTo).eq(0)).eq(0):t.wrap(n).parent(),n.prepend(e.hint?a:null).append(o),{wrapper:n,input:t,hint:a,menu:o}}(e);this.$node=a.wrapper;var u=this.$input=a.input;t=a.menu,n=a.hint,e.dropdownMenuContainer&&s.element(e.dropdownMenuContainer).css("position","relative").append(t.css("top","0")),u.on("blur.aa",function(e){var n=document.activeElement;r.isMsie()&&(t[0]===n||t[0].contains(n))&&(e.preventDefault(),e.stopImmediatePropagation(),r.defer(function(){u.focus()}))}),t.on("mousedown.aa",function(e){e.preventDefault()}),this.eventBus=e.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:e.appendTo,wrapper:this.$node,menu:t,datasets:e.datasets,templates:e.templates,cssClasses:e.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(e),this._setLanguageDirection()}r.mixin(h.prototype,{_bindKeyboardShortcuts:function(e){if(e.keyboardShortcuts){var t=this.$input,n=[];r.each(e.keyboardShortcuts,function(e){"string"==typeof e&&(e=e.toUpperCase().charCodeAt(0)),n.push(e)}),s.element(document).keydown(function(e){var i=e.target||e.srcElement,r=i.tagName;if(!i.isContentEditable&&"INPUT"!==r&&"SELECT"!==r&&"TEXTAREA"!==r){var s=e.which||e.keyCode;-1!==n.indexOf(s)&&(t.focus(),e.stopPropagation(),e.preventDefault())}})}},_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(e,t){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(t&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var e=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",e.width+"px");var t=this.$node[0].getBoundingClientRect(),n=e.bottom-t.top;this.$node.css("top",n+"px");var i=e.left-t.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var e=this.input.getQuery();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var e,t;e=this.dropdown.getDatumForCursor(),t=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&e?this._select(e,n):this.autoselectOnBlur&&t?this._select(t,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(e,t){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var r={selectionMethod:"enterKey"};n?(this._select(n,r),t.preventDefault()):this.autoselect&&i&&(this._select(i,r),t.preventDefault())},_onTabKeyed:function(e,t){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),t.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e=this.input.getLanguageDirection();this.dir!==e&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,t,n,i,s;(e=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(t=this.input.getInputValue(),n=a.normalizeQuery(t),i=r.escapeRegExChars(n),(s=new RegExp("^(?:"+i+")(.+$)","i").exec(e.value))?this.input.setHint(t+s[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,i,r;t=this.input.getHint(),n=this.input.getQuery(),i=e||this.input.isCursorAtEnd(),t&&n!==t&&i&&((r=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(r.value),this.eventBus.trigger("autocompleted",r.raw,r.datasetName))},_select:function(e,t){void 0!==e.value&&this.input.setQuery(e.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(e.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",e.raw,e.datasetName,t).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var e=this.input.getInputValue();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=r.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(e,t){var n=e.find(r.className(t.prefix,t.input));r.each(n.data(i),function(e,t){void 0===e?n.removeAttr(t):n.attr(t,e)}),n.detach().removeClass(r.className(t.prefix,t.input,!0)).insertAfter(e),n.removeData&&n.removeData(i);e.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(4710),e.exports=h},9110:(e,t)=>{!function(e){var t=/\S/,n=/\"/g,i=/\n/g,r=/\r/g,s=/\\/g,o=/\u2028/,a=/\u2029/;function u(e){"}"===e.n.substr(e.n.length-1)&&(e.n=e.n.substring(0,e.n.length-1))}function l(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function c(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var i=1,r=e.length;i<r;i++)if(t.charAt(n+i)!=e.charAt(i))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,i){var r=n.length,s=0,o=null,a=null,h="",p=[],d=!1,f=0,g=0,m="{{",y="}}";function v(){h.length>0&&(p.push({tag:"_t",text:new String(h)}),h="")}function x(n,i){if(v(),n&&function(){for(var n=!0,i=g;i<p.length;i++)if(!(n=e.tags[p[i].tag]<e.tags._v||"_t"==p[i].tag&&null===p[i].text.match(t)))return!1;return n}())for(var r,s=g;s<p.length;s++)p[s].text&&((r=p[s+1])&&">"==r.tag&&(r.indent=p[s].text.toString()),p.splice(s,1));else i||p.push({tag:"\n"});d=!1,g=p.length}function b(e,t){var n="="+y,i=e.indexOf(n,t),r=l(e.substring(e.indexOf("=",t)+1,i)).split(" ");return m=r[0],y=r[r.length-1],i+n.length-1}for(i&&(i=i.split(" "),m=i[0],y=i[1]),f=0;f<r;f++)0==s?c(m,n,f)?(--f,v(),s=1):"\n"==n.charAt(f)?x(d):h+=n.charAt(f):1==s?(f+=m.length-1,"="==(o=(a=e.tags[n.charAt(f+1)])?n.charAt(f+1):"_v")?(f=b(n,f),s=0):(a&&f++,s=2),d=f):c(y,n,f)?(p.push({tag:o,n:l(h),otag:m,ctag:y,i:"/"==o?d-m.length:f+y.length}),h="",f+=y.length-1,s=0,"{"==o&&("}}"==y?f++:u(p[p.length-1]))):h+=n.charAt(f);return x(d,!0),p};var h={_t:!0,"\n":!0,$:!0,"/":!0};function p(t,n,i,r){var s,o=[],a=null,u=null;for(s=i[i.length-1];t.length>0;){if(u=t.shift(),s&&"<"==s.tag&&!(u.tag in h))throw new Error("Illegal content in < super tag.");if(e.tags[u.tag]<=e.tags.$||d(u,r))i.push(u),u.nodes=p(t,u.tag,i,r);else{if("/"==u.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+u.n);if(a=i.pop(),u.n!=a.n&&!f(u.n,a.n,r))throw new Error("Nesting error: "+a.n+" vs. "+u.n);return a.end=u.i,o}"\n"==u.tag&&(u.last=0==t.length||"\n"==t[0].tag)}o.push(u)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return o}function d(e,t){for(var n=0,i=t.length;n<i;n++)if(t[n].o==e.n)return e.tag="#",!0}function f(e,t,n){for(var i=0,r=n.length;i<r;i++)if(n[i].c==e&&n[i].o==t)return!0}function g(e){var t=[];for(var n in e.partials)t.push('"'+y(n)+'":{name:"'+y(e.partials[n].name)+'", '+g(e.partials[n])+"}");return"partials: {"+t.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+y(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(e.subs)}e.stringify=function(t,n,i){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+g(t)+"}"};var m=0;function y(e){return e.replace(s,"\\\\").replace(n,'\\"').replace(i,"\\n").replace(r,"\\r").replace(o,"\\u2028").replace(a,"\\u2029")}function v(e){return~e.indexOf(".")?"d":"f"}function x(e,t){var n="<"+(t.prefix||"")+e.n+m++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+y(n)+'",c,p,"'+(e.indent||"")+'"));',n}function b(e,t){t.code+="t.b(t.t(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'}function w(e){return"t.b("+e+");"}e.generate=function(t,n,i){m=0;var r={code:"",subs:{},partials:{}};return e.walk(t,r),i.asString?this.stringify(r,n,i):this.makeTemplate(r,n,i)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var i=this.makePartials(e);return i.code=new Function("c","p","i",this.wrapMain(e.code)),new this.template(i,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=new Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":x,"<":function(t,n){var i={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,i);var r=n.partials[x(t,n)];r.subs=i.subs,r.partials=i.partials},$:function(t,n){var i={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,i),n.subs[t.n]=i.code,n.inPartial||(n.code+='t.sub("'+y(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=w('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=w('"'+y(e.text)+'"')},"{":b,"&":b},e.walk=function(t,n){for(var i,r=0,s=t.length;r<s;r++)(i=e.codegen[t[r].tag])&&i(t[r],n);return n},e.parse=function(e,t,n){return p(e,0,[],(n=n||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var i=e.cacheKey(t,n),r=this.cache[i];if(r){var s=r.partials;for(var o in s)delete s[o].instance;return r}return r=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[i]=r}}(t)},9324:(e,t,n)=>{"use strict";var i="aaDataset",r="aaValue",s="aaDatum",o=n(6220),a=n(1337),u=n(4499),l=n(819),c=n(1805);function h(e){var t;(e=e||{}).templates=e.templates||{},e.source||o.error("missing source"),e.name&&(t=e.name,!/^[_a-zA-Z0-9-]+$/.test(t))&&o.error("invalid dataset name: "+e.name),this.query=null,this._isEmpty=!0,this.highlight=!!e.highlight,this.name=void 0===e.name||null===e.name?o.getUniqueId():e.name,this.source=e.source,this.displayFn=function(e){return e=e||"value",o.isFunction(e)?e:t;function t(t){return t[e]}}(e.display||e.displayKey),this.debounce=e.debounce,this.cache=!1!==e.cache,this.templates=function(e,t){return{empty:e.empty&&o.templatify(e.empty),header:e.header&&o.templatify(e.header),footer:e.footer&&o.templatify(e.footer),suggestion:e.suggestion||n};function n(e){return"<p>"+t(e)+"</p>"}}(e.templates,this.displayFn),this.css=o.mixin({},l,e.appendTo?l.appendTo:{}),this.cssClasses=e.cssClasses=o.mixin({},l.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=e.$menu&&e.$menu.find(n+"-"+this.name).length>0?a.element(e.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=e.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(e){return a.element(e).data(i)},h.extractValue=function(e){return a.element(e).data(r)},h.extractDatum=function(e){var t=a.element(e).data(s);return"string"==typeof t&&(t=JSON.parse(t)),t},o.mixin(h.prototype,c,{_render:function(e,t){if(this.$el){var n,l=this,c=[].slice.call(arguments,2);if(this.$el.empty(),n=t&&t.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(function(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!0}].concat(t),l.templates.empty.apply(this,t)}.apply(this,c)).prepend(l.templates.header?h.apply(this,c):null).append(l.templates.footer?p.apply(this,c):null);else if(n)this.$el.html(function(){var e,n,c=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return e=a.element(p).css(this.css.suggestions),n=o.map(t,d),e.append.apply(e,n),e;function d(e){var t,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(t=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(l.templates.suggestion.apply(this,[e].concat(c)))).data(i,l.name),t.data(r,l.displayFn(e)||void 0),t.data(s,JSON.stringify(e)),t.children().each(function(){a.element(this).css(h.css.suggestionChild)}),t}}.apply(this,c)).prepend(l.templates.header?h.apply(this,c):null).append(l.templates.footer?p.apply(this,c):null);else if(t&&!Array.isArray(t))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",e)}function h(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),l.templates.header.apply(this,t)}function p(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),l.templates.footer.apply(this,t)}},getRoot:function(){return this.$el},update:function(e){function t(t){if(!this.canceled&&e===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(e,t,n),this._render.apply(this,[e,t].concat(n))}}if(this.query=e,this.canceled=!1,this.shouldFetchFromCache(e))t.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(e,t.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(function(){n.debounceTimeout=null,i()},this.debounce)}else i()}},cacheSuggestions:function(e,t,n){this.cachedQuery=e,this.cachedSuggestions=t,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(e){return this.cache&&this.cachedQuery===e&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),e.exports=h},9549:(e,t)=>{!function(e){function t(e,t,n){var i;return t&&"object"==typeof t&&(void 0!==t[e]?i=t[e]:n&&t.get&&"function"==typeof t.get&&(i=t.get(e))),i}e.Template=function(e,t,n,i){e=e||{},this.r=e.code||this.r,this.c=n,this.options=i||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return e=u(e),a.test(e)?e.replace(n,"&").replace(i,"<").replace(r,">").replace(s,"'").replace(o,"""):e},t:u,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],i=t[n.name];if(n.instance&&n.base==i)return n.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=function(e,t,n,i,r,s){function o(){}function a(){}var u;o.prototype=e,a.prototype=e.subs;var l=new o;for(u in l.subs=new a,l.subsText={},l.buf="",i=i||{},l.stackSubs=i,l.subsText=s,t)i[u]||(i[u]=t[u]);for(u in i)l.subs[u]=i[u];for(u in r=r||{},l.stackPartials=r,n)r[u]||(r[u]=n[u]);for(u in r)l.partials[u]=r[u];return l}(i,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,i){var r=this.ep(e,n);return r?r.ri(t,n,i):""},rs:function(e,t,n){var i=e[e.length-1];if(l(i))for(var r=0;r<i.length;r++)e.push(i[r]),n(e,t,this),e.pop();else n(e,t,this)},s:function(e,t,n,i,r,s,o){var a;return(!l(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,i,r,s,o)),a=!!e,!i&&a&&t&&t.push("object"==typeof e?e:t[t.length-1]),a)},d:function(e,n,i,r){var s,o=e.split("."),a=this.f(o[0],n,i,r),u=this.options.modelGet,c=null;if("."===e&&l(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<o.length;h++)void 0!==(s=t(o[h],a,u))?(c=a,a=s):a="";return!(r&&!a)&&(r||"function"!=typeof a||(n.push(c),a=this.mv(a,n,i),n.pop()),a)},f:function(e,n,i,r){for(var s=!1,o=!1,a=this.options.modelGet,u=n.length-1;u>=0;u--)if(void 0!==(s=t(e,n[u],a))){o=!0;break}return o?(r||"function"!=typeof s||(s=this.mv(s,n,i)),s):!r&&""},ls:function(e,t,n,i,r){var s=this.options.delimiters;return this.options.delimiters=r,this.b(this.ct(u(e.call(t,i)),t,n)),this.options.delimiters=s,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,i,r,s,o){var a,u=t[t.length-1],l=e.call(u);return"function"==typeof l?!!i||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(l,u,n,a.substring(r,s),o)):l},mv:function(e,t,n){var i=t[t.length-1],r=e.call(i);return"function"==typeof r?this.ct(u(r.call(i)),i,n):r},sub:function(e,t,n,i){var r=this.subs[e];r&&(this.activeSub=e,r(t,n,this,i),this.activeSub=!1)}};var n=/&/g,i=/</g,r=/>/g,s=/\'/g,o=/\"/g,a=/[&<>\"\']/;function u(e){return String(null==e?"":e)}var l=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)}}]); \ No newline at end of file diff --git a/developer/assets/js/8591.c8685fea.js.LICENSE.txt b/developer/assets/js/8591.c8685fea.js.LICENSE.txt new file mode 100644 index 0000000..1cf473c --- /dev/null +++ b/developer/assets/js/8591.c8685fea.js.LICENSE.txt @@ -0,0 +1,61 @@ +/*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ diff --git a/developer/assets/js/8731.7ab96767.js b/developer/assets/js/8731.7ab96767.js new file mode 100644 index 0000000..d60de41 --- /dev/null +++ b/developer/assets/js/8731.7ab96767.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8731],{418:(e,t,n)=>{n.d(t,{Bd:()=>f,P3:()=>x,PV:()=>E,Rp:()=>T,S:()=>I,SS:()=>g,U5:()=>A,Uz:()=>k,Xq:()=>R,YV:()=>c,eb:()=>h,g4:()=>d,qO:()=>p});var r=n(1564),i=n(2151),s=n(2479),a=n(9683),o=n(6373),l=n(2806);function c(e,t){const n=new Set,r=function(e){return e.rules.find(e=>i.s7(e)&&e.entry)}(e);if(!r)return new Set(e.rules);const s=[r].concat(function(e){return e.rules.filter(e=>i.rE(e)&&e.hidden)}(e));for(const i of s)u(i,n,t);const a=new Set;for(const o of e.rules)(n.has(o.name)||i.rE(o)&&o.hidden)&&a.add(o);return a}function u(e,t,n){t.add(e.name),(0,a.Uo)(e).forEach(e=>{if(i.$g(e)||n&&i.lF(e)){const r=e.rule.ref;r&&!t.has(r.name)&&u(r,t,n)}})}function d(e){if(e.terminal)return e.terminal;if(e.type.ref){const t=A(e.type.ref);return null==t?void 0:t.terminal}}function h(e){return e.hidden&&!(0,l.Yv)(I(e))}function f(e,t){return e&&t?m(e,t,e.astNode,!0):[]}function p(e,t,n){if(!e||!t)return;const r=m(e,t,e.astNode,!0);return 0!==r.length?r[n=void 0!==n?Math.max(0,Math.min(n,r.length-1)):0]:void 0}function m(e,t,n,r){if(!r){const n=(0,a.XG)(e.grammarSource,i.wh);if(n&&n.feature===t)return[e]}return(0,s.mD)(e)&&e.astNode===n?e.content.flatMap(e=>m(e,t,n,!1)):[]}function g(e,t,n){if(!e)return;const r=y(e,t,null==e?void 0:e.astNode);return 0!==r.length?r[n=void 0!==n?Math.max(0,Math.min(n,r.length-1)):0]:void 0}function y(e,t,n){if(e.astNode!==n)return[];if(i.wb(e.grammarSource)&&e.grammarSource.value===t)return[e];const r=(0,o.NS)(e).iterator();let s;const a=[];do{if(s=r.next(),!s.done){const e=s.value;e.astNode===n?i.wb(e.grammarSource)&&e.grammarSource.value===t&&a.push(e):r.prune()}}while(!s.done);return a}function T(e){var t;const n=e.astNode;for(;n===(null===(t=e.container)||void 0===t?void 0:t.astNode);){const t=(0,a.XG)(e.grammarSource,i.wh);if(t)return t;e=e.container}}function A(e){let t=e;return i.SP(t)&&(i.ve(t.$container)?t=t.$container.$container:i.s7(t.$container)?t=t.$container:(0,r.d)(t.$container)),v(e,t,new Map)}function v(e,t,n){var r;function s(t,r){let s;return(0,a.XG)(t,i.wh)||(s=v(r,r,n)),n.set(e,s),s}if(n.has(e))return n.get(e);n.set(e,void 0);for(const o of(0,a.Uo)(t)){if(i.wh(o)&&"name"===o.feature.toLowerCase())return n.set(e,o),o;if(i.$g(o)&&i.s7(o.rule.ref))return s(o,o.rule.ref);if(i.D8(o)&&(null===(r=o.typeRef)||void 0===r?void 0:r.ref))return s(o,o.typeRef.ref)}}function R(e){return $(e,new Set)}function $(e,t){if(t.has(e))return!0;t.add(e);for(const n of(0,a.Uo)(e))if(i.$g(n)){if(!n.rule.ref)return!1;if(i.s7(n.rule.ref)&&!$(n.rule.ref,t))return!1}else{if(i.wh(n))return!1;if(i.ve(n))return!1}return Boolean(e.definition)}function E(e){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){const t=e.returnType.ref;if(t){if(i.s7(t))return t.name;if(i.S2(t)||i.Xj(t))return t.name}}}function k(e){var t;if(i.s7(e))return R(e)?e.name:null!==(t=E(e))&&void 0!==t?t:e.name;if(i.S2(e)||i.Xj(e)||i.fG(e))return e.name;if(i.ve(e)){const t=function(e){var t;if(e.inferredType)return e.inferredType.name;if(null===(t=e.type)||void 0===t?void 0:t.ref)return k(e.type.ref);return}(e);if(t)return t}else if(i.SP(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function x(e){var t,n,r;return i.rE(e)?null!==(n=null===(t=e.type)||void 0===t?void 0:t.name)&&void 0!==n?n:"string":null!==(r=E(e))&&void 0!==r?r:e.name}function I(e){const t={s:!1,i:!1,u:!1},n=N(e.definition,t),r=Object.entries(t).filter(([,e])=>e).map(([e])=>e).join("");return new RegExp(n,r)}const S=/[\s\S]/.source;function N(e,t){if(i.Fy(e))return w((a=e).elements.map(e=>N(e)).join("|"),{cardinality:a.cardinality,lookahead:a.lookahead});if(i.O4(e))return w((s=e).elements.map(e=>N(e)).join(""),{cardinality:s.cardinality,lookahead:s.lookahead});if(i.Bg(e))return function(e){if(e.right)return w(`[${C(e.left)}-${C(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1});return w(C(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1})}(e);if(i.lF(e)){const t=e.rule.ref;if(!t)throw new Error("Missing rule reference.");return w(N(t.definition),{cardinality:e.cardinality,lookahead:e.lookahead})}if(i.GL(e))return w(`(?!${N((r=e).terminal)})${S}*?`,{cardinality:r.cardinality,lookahead:r.lookahead});if(i.Mz(e))return w(`${S}*?${N((n=e).terminal)}`,{cardinality:n.cardinality,lookahead:n.lookahead});if(i.vd(e)){const n=e.regex.lastIndexOf("/"),r=e.regex.substring(1,n),i=e.regex.substring(n+1);return t&&(t.i=i.includes("i"),t.s=i.includes("s"),t.u=i.includes("u")),w(r,{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1})}if(i.z2(e))return w(S,{cardinality:e.cardinality,lookahead:e.lookahead});throw new Error(`Invalid terminal element: ${null==e?void 0:e.$type}`);var n,r,s,a}function C(e){return(0,l.Nt)(e.value)}function w(e,t){var n;return(!1!==t.wrap||t.lookahead)&&(e=`(${null!==(n=t.lookahead)&&void 0!==n?n:""}${e})`),t.cardinality?`${e}${t.cardinality}`:e}},966:(e,t)=>{function n(e){return"string"==typeof e||e instanceof String}function r(e){return Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.stringArray=t.array=t.func=t.error=t.number=t.string=t.boolean=void 0,t.boolean=function(e){return!0===e||!1===e},t.string=n,t.number=function(e){return"number"==typeof e||e instanceof Number},t.error=function(e){return e instanceof Error},t.func=function(e){return"function"==typeof e},t.array=r,t.stringArray=function(e){return r(e)&&e.every(e=>n(e))}},1477:(e,t,n)=>{n.d(t,{$:()=>c});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function c(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.AM,l);return t.ServiceRegistry.register(n),{shared:t,Packet:n}}(0,r.K2)(c,"createPacketServices")},1564:(e,t,n)=>{n.d(t,{W:()=>r,d:()=>i});class r extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}}function i(e){throw new Error("Error! The input value was not handled.")}},1633:(e,t,n)=>{n.d(t,{d:()=>f});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},l=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,c=class extends r.dg{static{(0,r.K2)(this,"TreemapValueConverter")}runCustomConverter(e,t,n){if("NUMBER2"===e.name)return parseFloat(t.replace(/,/g,""));if("SEPARATOR"===e.name)return t.substring(1,t.length-1);if("STRING2"===e.name)return t.substring(1,t.length-1);if("INDENTATION"===e.name)return t.length;if("ClassDef"===e.name){if("string"!=typeof t)return t;const e=l.exec(t);if(e)return{$type:"ClassDefStatement",className:e[1],styleText:e[2]||void 0}}}};function u(e){const t=e.validation.TreemapValidator,n=e.validation.ValidationRegistry;if(n){const e={Treemap:t.checkSingleRoot.bind(t)};n.register(e,t)}}(0,r.K2)(u,"registerValidationChecks");var d=class{static{(0,r.K2)(this,"TreemapValidator")}checkSingleRoot(e,t){let n;for(const r of e.TreemapRows)r.item&&(void 0===n&&void 0===r.indent?n=0:(void 0===r.indent||void 0!==n&&n>=parseInt(r.indent,10))&&t("error","Multiple root nodes are not allowed in a treemap.",{node:r,property:"item"}))}},h={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new c,"ValueConverter")},validation:{TreemapValidator:(0,r.K2)(()=>new d,"TreemapValidator")}};function f(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.eV,h);return t.ServiceRegistry.register(n),u(n),{shared:t,Treemap:n}}(0,r.K2)(f,"createTreemapServices")},1719:(e,t,n)=>{n.d(t,{B5:()=>a,Rf:()=>o,Td:()=>l,Vj:()=>c,fq:()=>r,iD:()=>u});class r{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){const e=this.iterator();return Boolean(e.next().done)}count(){const e=this.iterator();let t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){const e=[],t=this.iterator();let n;do{n=t.next(),void 0!==n.value&&e.push(n.value)}while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){const n=this.map(n=>[e?e(n):n,t?t(n):n]);return new Map(n)}toString(){return this.join()}concat(e){return new r(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),e=>{let t;if(!e.firstDone){do{if(t=this.nextFn(e.first),!t.done)return t}while(!t.done);e.firstDone=!0}do{if(t=e.iterator.next(),!t.done)return t}while(!t.done);return o})}join(e=","){const t=this.iterator();let n,r="",s=!1;do{n=t.next(),n.done||(s&&(r+=e),r+=i(n.value)),s=!0}while(!n.done);return r}indexOf(e,t=0){const n=this.iterator();let r=0,i=n.next();for(;!i.done;){if(r>=t&&i.value===e)return r;i=n.next(),r++}return-1}every(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){const t=this.iterator();let n=0,r=t.next();for(;!r.done;)e(r.value,n),r=t.next(),n++}map(e){return new r(this.startFn,t=>{const{done:n,value:r}=this.nextFn(t);return n?o:{done:!1,value:e(r)}})}filter(e){return new r(this.startFn,t=>{let n;do{if(n=this.nextFn(t),!n.done&&e(n.value))return n}while(!n.done);return o})}nonNullable(){return this.filter(e=>null!=e)}reduce(e,t){const n=this.iterator();let r=t,i=n.next();for(;!i.done;)r=void 0===r?i.value:e(r,i.value),i=n.next();return r}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){const r=e.next();if(r.done)return n;const i=this.recursiveReduce(e,t,n);return void 0===i?r.value:t(i,r.value)}find(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){const t=this.iterator();let n=0,r=t.next();for(;!r.done;){if(e(r.value))return n;r=t.next(),n++}return-1}includes(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(e){return new r(()=>({this:this.startFn()}),t=>{do{if(t.iterator){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}const{done:n,value:r}=this.nextFn(t.this);if(!n){const n=e(r);if(!s(n))return{done:!1,value:n};t.iterator=n[Symbol.iterator]()}}while(t.iterator);return o})}flat(e){if(void 0===e&&(e=1),e<=0)return this;const t=e>1?this.flat(e-1):this;return new r(()=>({this:t.startFn()}),e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}const{done:n,value:r}=t.nextFn(e.this);if(!n){if(!s(r))return{done:!1,value:r};e.iterator=r[Symbol.iterator]()}}while(e.iterator);return o})}head(){const e=this.iterator().next();if(!e.done)return e.value}tail(e=1){return new r(()=>{const t=this.startFn();for(let n=0;n<e;n++){if(this.nextFn(t).done)return t}return t},this.nextFn)}limit(e){return new r(()=>({size:0,state:this.startFn()}),t=>(t.size++,t.size>e?o:this.nextFn(t.state)))}distinct(e){return new r(()=>({set:new Set,internalState:this.startFn()}),t=>{let n;do{if(n=this.nextFn(t.internalState),!n.done){const r=e?e(n.value):n.value;if(!t.set.has(r))return t.set.add(r),n}}while(!n.done);return o})}exclude(e,t){const n=new Set;for(const r of e){const e=t?t(r):r;n.add(e)}return this.filter(e=>{const r=t?t(e):e;return!n.has(r)})}}function i(e){return"string"==typeof e?e:void 0===e?"undefined":"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e)}function s(e){return!!e&&"function"==typeof e[Symbol.iterator]}const a=new r(()=>{},()=>o),o=Object.freeze({done:!0,value:void 0});function l(...e){if(1===e.length){const t=e[0];if(t instanceof r)return t;if(s(t))return new r(()=>t[Symbol.iterator](),e=>e.next());if("number"==typeof t.length)return new r(()=>({index:0}),e=>e.index<t.length?{done:!1,value:t[e.index++]}:o)}return e.length>1?new r(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){const n=e[t.collIndex++];s(n)?t.iterator=n[Symbol.iterator]():n&&"number"==typeof n.length&&(t.array=n)}}while(t.iterator||t.array||t.collIndex<e.length);return o}):a}class c extends r{constructor(e,t,n){super(()=>({iterators:(null==n?void 0:n.includeRoot)?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),e=>{for(e.pruned&&(e.iterators.pop(),e.pruned=!1);e.iterators.length>0;){const n=e.iterators[e.iterators.length-1].next();if(!n.done)return e.iterators.push(t(n.value)[Symbol.iterator]()),n;e.iterators.pop()}return o})}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}}var u;!function(e){e.sum=function(e){return e.reduce((e,t)=>e+t,0)},e.product=function(e){return e.reduce((e,t)=>e*t,0)},e.min=function(e){return e.reduce((e,t)=>Math.min(e,t))},e.max=function(e){return e.reduce((e,t)=>Math.max(e,t))}}(u||(u={}))},1885:(e,t,n)=>{n.d(t,{v:()=>c});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function c(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.e5,l);return t.ServiceRegistry.register(n),{shared:t,Info:n}}(0,r.K2)(c,"createInfoServices")},1945:(e,t,n)=>{n.d(t,{Q:()=>c});var r=n(9637),i=n(2151),s=n(9683),a=n(418),o=n(2806),l=n(1719);class c{constructor(){this.diagnostics=[]}buildTokens(e,t){const n=(0,l.Td)((0,a.YV)(e,!1)),r=this.buildTerminalTokens(n),i=this.buildKeywordTokens(n,r,t);return r.forEach(e=>{const t=e.PATTERN;"object"==typeof t&&t&&"test"in t&&(0,o.Yv)(t)?i.unshift(e):i.push(e)}),i}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){const e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(i.rE).filter(e=>!e.fragment).map(e=>this.buildTerminalToken(e)).toArray()}buildTerminalToken(e){const t=(0,a.S)(e),n=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,i={name:e.name,PATTERN:n};return"function"==typeof n&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=(0,o.Yv)(t)?r.JG.SKIPPED:"hidden"),i}requiresCustomPattern(e){return!(!e.flags.includes("u")&&!e.flags.includes("s"))||!(!e.source.includes("?<=")&&!e.source.includes("?<!"))}regexPatternFunction(e){const t=new RegExp(e,e.flags+"y");return(e,n)=>{t.lastIndex=n;return t.exec(e)}}buildKeywordTokens(e,t,n){return e.filter(i.s7).flatMap(e=>(0,s.Uo)(e).filter(i.wb)).distinct(e=>e.value).toArray().sort((e,t)=>t.value.length-e.value.length).map(e=>this.buildKeywordToken(e,t,Boolean(null==n?void 0:n.caseInsensitive)))}buildKeywordToken(e,t,n){const r=this.buildKeywordPattern(e,n),i={name:e.value,PATTERN:r,LONGER_ALT:this.findLongerAlt(e,t)};return"function"==typeof r&&(i.LINE_BREAKS=!0),i}buildKeywordPattern(e,t){return t?new RegExp((0,o.Ao)(e.value)):e.value}findLongerAlt(e,t){return t.reduce((t,n)=>{const r=null==n?void 0:n.PATTERN;return(null==r?void 0:r.source)&&(0,o.PC)("^"+r.source+"$",e.value)&&t.push(n),t},[])}}},2151:(e,t,n)=>{n.d(t,{$g:()=>fe,Bg:()=>J,Ct:()=>S,Cz:()=>p,D8:()=>U,FO:()=>re,Fy:()=>me,GL:()=>ce,IZ:()=>se,Mz:()=>Ee,O4:()=>ye,QX:()=>Ie,RP:()=>T,S2:()=>k,SP:()=>$,TF:()=>L,Tu:()=>g,Xj:()=>V,_c:()=>te,cY:()=>Re,fG:()=>M,jp:()=>X,lF:()=>Ae,r1:()=>u,rE:()=>K,s7:()=>O,vd:()=>de,ve:()=>z,wb:()=>oe,wh:()=>Q,z2:()=>xe});var r=n(2479);const i="AbstractRule";const s="AbstractType";const a="Condition";const o="TypeDefinition";const l="ValueLiteral";const c="AbstractElement";function u(e){return Se.isInstance(e,c)}const d="ArrayLiteral";const h="ArrayType";const f="BooleanLiteral";function p(e){return Se.isInstance(e,f)}const m="Conjunction";function g(e){return Se.isInstance(e,m)}const y="Disjunction";function T(e){return Se.isInstance(e,y)}const A="Grammar";const v="GrammarImport";const R="InferredType";function $(e){return Se.isInstance(e,R)}const E="Interface";function k(e){return Se.isInstance(e,E)}const x="NamedArgument";const I="Negation";function S(e){return Se.isInstance(e,I)}const N="NumberLiteral";const C="Parameter";const w="ParameterReference";function L(e){return Se.isInstance(e,w)}const b="ParserRule";function O(e){return Se.isInstance(e,b)}const _="ReferenceType";const P="ReturnType";function M(e){return Se.isInstance(e,P)}const D="SimpleType";function U(e){return Se.isInstance(e,D)}const F="StringLiteral";const G="TerminalRule";function K(e){return Se.isInstance(e,G)}const B="Type";function V(e){return Se.isInstance(e,B)}const j="TypeAttribute";const H="UnionType";const W="Action";function z(e){return Se.isInstance(e,W)}const Y="Alternatives";function X(e){return Se.isInstance(e,Y)}const q="Assignment";function Q(e){return Se.isInstance(e,q)}const Z="CharacterRange";function J(e){return Se.isInstance(e,Z)}const ee="CrossReference";function te(e){return Se.isInstance(e,ee)}const ne="EndOfFile";function re(e){return Se.isInstance(e,ne)}const ie="Group";function se(e){return Se.isInstance(e,ie)}const ae="Keyword";function oe(e){return Se.isInstance(e,ae)}const le="NegatedToken";function ce(e){return Se.isInstance(e,le)}const ue="RegexToken";function de(e){return Se.isInstance(e,ue)}const he="RuleCall";function fe(e){return Se.isInstance(e,he)}const pe="TerminalAlternatives";function me(e){return Se.isInstance(e,pe)}const ge="TerminalGroup";function ye(e){return Se.isInstance(e,ge)}const Te="TerminalRuleCall";function Ae(e){return Se.isInstance(e,Te)}const ve="UnorderedGroup";function Re(e){return Se.isInstance(e,ve)}const $e="UntilToken";function Ee(e){return Se.isInstance(e,$e)}const ke="Wildcard";function xe(e){return Se.isInstance(e,ke)}class Ie extends r.kD{getAllTypes(){return[c,i,s,W,Y,d,h,q,f,Z,a,m,ee,y,ne,A,v,ie,R,E,ae,x,le,I,N,C,w,b,_,ue,P,he,D,F,pe,ge,G,Te,B,j,o,H,ve,$e,l,ke]}computeIsSubtype(e,t){switch(e){case W:case Y:case q:case Z:case ee:case ne:case ie:case ae:case le:case ue:case he:case pe:case ge:case Te:case ve:case $e:case ke:return this.isSubtype(c,t);case d:case N:case F:return this.isSubtype(l,t);case h:case _:case D:case H:return this.isSubtype(o,t);case f:return this.isSubtype(a,t)||this.isSubtype(l,t);case m:case y:case I:case w:return this.isSubtype(a,t);case R:case E:case B:return this.isSubtype(s,t);case b:return this.isSubtype(i,t)||this.isSubtype(s,t);case G:return this.isSubtype(i,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;switch(t){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return s;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return i;case"Grammar:usedGrammars":return A;case"NamedArgument:parameter":case"ParameterReference:parameter":return C;case"TerminalRuleCall:rule":return G;default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case c:return{name:c,properties:[{name:"cardinality"},{name:"lookahead"}]};case d:return{name:d,properties:[{name:"elements",defaultValue:[]}]};case h:return{name:h,properties:[{name:"elementType"}]};case f:return{name:f,properties:[{name:"true",defaultValue:!1}]};case m:return{name:m,properties:[{name:"left"},{name:"right"}]};case y:return{name:y,properties:[{name:"left"},{name:"right"}]};case A:return{name:A,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case v:return{name:v,properties:[{name:"path"}]};case R:return{name:R,properties:[{name:"name"}]};case E:return{name:E,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case x:return{name:x,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case I:return{name:I,properties:[{name:"value"}]};case N:return{name:N,properties:[{name:"value"}]};case C:return{name:C,properties:[{name:"name"}]};case w:return{name:w,properties:[{name:"parameter"}]};case b:return{name:b,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case _:return{name:_,properties:[{name:"referenceType"}]};case P:return{name:P,properties:[{name:"name"}]};case D:return{name:D,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case F:return{name:F,properties:[{name:"value"}]};case G:return{name:G,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case B:return{name:B,properties:[{name:"name"},{name:"type"}]};case j:return{name:j,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case H:return{name:H,properties:[{name:"types",defaultValue:[]}]};case W:return{name:W,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Y:return{name:Y,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case q:return{name:q,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Z:return{name:Z,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case ee:return{name:ee,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case ne:return{name:ne,properties:[{name:"cardinality"},{name:"lookahead"}]};case ie:return{name:ie,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case ae:return{name:ae,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case le:return{name:le,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case ue:return{name:ue,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case he:return{name:he,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case pe:return{name:pe,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case ge:return{name:ge,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Te:return{name:Te,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case ve:return{name:ve,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case $e:return{name:$e,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case ke:return{name:ke,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}}const Se=new Ie},2479:(e,t,n)=>{function r(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$type}function i(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$refText}function s(e){return"object"==typeof e&&null!==e&&"string"==typeof e.name&&"string"==typeof e.type&&"string"==typeof e.path}function a(e){return"object"==typeof e&&null!==e&&r(e.container)&&i(e.reference)&&"string"==typeof e.message}n.d(t,{A_:()=>i,FC:()=>c,Nr:()=>s,Zl:()=>a,br:()=>u,kD:()=>o,mD:()=>l,ng:()=>r});class o{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return r(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});const r=n[t];if(void 0!==r)return r;{const r=this.computeIsSubtype(e,t);return n[t]=r,r}}getAllSubTypes(e){const t=this.allSubtypes[e];if(t)return t;{const t=this.getAllTypes(),n=[];for(const r of t)this.isSubtype(r,e)&&n.push(r);return this.allSubtypes[e]=n,n}}}function l(e){return"object"==typeof e&&null!==e&&Array.isArray(e.content)}function c(e){return"object"==typeof e&&null!==e&&"object"==typeof e.tokenType}function u(e){return l(e)&&"string"==typeof e.fullText}},2676:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=t.Event=void 0;const r=n(9590);var i;!function(e){const t={dispose(){}};e.None=function(){return t}}(i||(t.Event=i={}));class s{add(e,t=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let n=!1;for(let r=0,i=this._callbacks.length;r<i;r++)if(this._callbacks[r]===e){if(this._contexts[r]===t)return this._callbacks.splice(r,1),void this._contexts.splice(r,1);n=!0}if(n)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...e){if(!this._callbacks)return[];const t=[],n=this._callbacks.slice(0),i=this._contexts.slice(0);for(let a=0,o=n.length;a<o;a++)try{t.push(n[a].apply(i[a],e))}catch(s){(0,r.default)().console.error(s)}return t}isEmpty(){return!this._callbacks||0===this._callbacks.length}dispose(){this._callbacks=void 0,this._contexts=void 0}}class a{constructor(e){this._options=e}get event(){return this._event||(this._event=(e,t,n)=>{this._callbacks||(this._callbacks=new s),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);const r={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),r.dispose=a._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(r),r}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}}t.Emitter=a,a._noop=function(){}},2806:(e,t,n)=>{n.d(t,{Ao:()=>h,Nt:()=>d,PC:()=>f,TH:()=>i,Yv:()=>u,lU:()=>l});var r=n(5186);const i=/\r?\n/gm,s=new r.H;class a extends r.z{constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){const t=String.fromCharCode(e.value);if(this.multiline||"\n"!==t||(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const e=d(t);this.endRegexpStack.push(e),this.isStarting&&(this.startRegexp+=e)}}visitSet(e){if(!this.multiline){const t=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(t);this.multiline=Boolean("\n".match(n))}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){if("Group"===e.type){if(e.quantifier)return}super.visitChildren(e)}}const o=new a;function l(e){try{return"string"==typeof e&&(e=new RegExp(e)),e=e.toString(),o.reset(e),o.visit(s.pattern(e)),o.multiline}catch(t){return!1}}const c="\f\n\r\t\v \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff".split("");function u(e){const t="string"==typeof e?new RegExp(e):e;return c.some(e=>t.test(e))}function d(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function h(e){return Array.prototype.map.call(e,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:d(e)).join("")}function f(e,t){const n=function(e){"string"==typeof e&&(e=new RegExp(e));const t=e,n=e.source;let r=0;function i(){let e,s="";function a(e){s+=n.substr(r,e),r+=e}function o(e){s+="(?:"+n.substr(r,e)+"|$)",r+=e}for(;r<n.length;)switch(n[r]){case"\\":switch(n[r+1]){case"c":o(3);break;case"x":o(4);break;case"u":t.unicode?"{"===n[r+2]?o(n.indexOf("}",r)-r+1):o(6):o(2);break;case"p":case"P":t.unicode?o(n.indexOf("}",r)-r+1):o(2);break;case"k":o(n.indexOf(">",r)-r+1);break;default:o(2)}break;case"[":e=/\[(?:\\.|.)*?\]/g,e.lastIndex=r,e=e.exec(n)||[],o(e[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":a(1);break;case"{":e=/\{\d+,?\d*\}/g,e.lastIndex=r,e=e.exec(n),e?a(e[0].length):o(1);break;case"(":if("?"===n[r+1])switch(n[r+2]){case":":s+="(?:",r+=3,s+=i()+"|$)";break;case"=":s+="(?=",r+=3,s+=i()+")";break;case"!":e=r,r+=3,i(),s+=n.substr(e,r-e);break;case"<":switch(n[r+3]){case"=":case"!":e=r,r+=4,i(),s+=n.substr(e,r-e);break;default:a(n.indexOf(">",r)-r+1),s+=i()+"|$)"}}else a(1),s+=i()+"|$)";break;case")":return++r,s;default:o(1)}return s}return new RegExp(i(),e.flags)}(e),r=t.match(n);return!!r&&r[0].length>0}},4298:(e,t,n)=>{n.d(t,{D:()=>i});class r{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}}const i={fileSystemProvider:()=>new r}},5033:(e,t,n)=>{n.d(t,{d:()=>a});var r,i=n(2151),s=n(418);class a{convert(e,t){let n=t.grammarSource;if((0,i._c)(n)&&(n=(0,s.g4)(n)),(0,i.$g)(n)){const r=n.rule.ref;if(!r)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(r,e,t)}return e}runConverter(e,t,n){var i;switch(e.name.toUpperCase()){case"INT":return r.convertInt(t);case"STRING":return r.convertString(t);case"ID":return r.convertID(t)}switch(null===(i=(0,s.P3)(e))||void 0===i?void 0:i.toLowerCase()){case"number":return r.convertNumber(t);case"boolean":return r.convertBoolean(t);case"bigint":return r.convertBigint(t);case"date":return r.convertDate(t);default:return t}}}!function(e){function t(e){switch(e){case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";case"v":return"\v";case"0":return"\0";default:return e}}e.convertString=function(e){let n="";for(let r=1;r<e.length-1;r++){const i=e.charAt(r);if("\\"===i){n+=t(e.charAt(++r))}else n+=i}return n},e.convertID=function(e){return"^"===e.charAt(0)?e.substring(1):e},e.convertInt=function(e){return parseInt(e)},e.convertBigint=function(e){return BigInt(e)},e.convertDate=function(e){return new Date(e)},e.convertNumber=function(e){return Number(e)},e.convertBoolean=function(e){return"true"===e.toLowerCase()}}(r||(r={}))},5186:(e,t,n)=>{function r(e){return e.charCodeAt(0)}function i(e,t){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}function s(e,t){if(!0===e[t])throw"duplicate flag "+t;e[t];e[t]=!0}function a(e){if(void 0===e)throw Error("Internal Error - Should never get here!");return!0}function o(){throw Error("Internal Error - Should never get here!")}function l(e){return"Character"===e.type}n.d(t,{z:()=>g,H:()=>m});const c=[];for(let y=r("0");y<=r("9");y++)c.push(y);const u=[r("_")].concat(c);for(let y=r("a");y<=r("z");y++)u.push(y);for(let y=r("A");y<=r("Z");y++)u.push(y);const d=[r(" "),r("\f"),r("\n"),r("\r"),r("\t"),r("\v"),r("\t"),r("\xa0"),r("\u1680"),r("\u2000"),r("\u2001"),r("\u2002"),r("\u2003"),r("\u2004"),r("\u2005"),r("\u2006"),r("\u2007"),r("\u2008"),r("\u2009"),r("\u200a"),r("\u2028"),r("\u2029"),r("\u202f"),r("\u205f"),r("\u3000"),r("\ufeff")],h=/[0-9a-fA-F]/,f=/[0-9]/,p=/[1-9]/;class m{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");const t=this.disjunction();this.consumeChar("/");const n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":s(n,"global");break;case"i":s(n,"ignoreCase");break;case"m":s(n,"multiLine");break;case"u":s(n,"unicode");break;case"y":s(n,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:t,loc:this.loc(0)}}disjunction(){const e=[],t=this.idx;for(e.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){const e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":let t;switch(this.consumeChar("?"),this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead"}a(t);const n=this.disjunction();return this.consumeChar(")"),{type:t,value:n,loc:this.loc(e)}}return o()}quantifier(e=!1){let t;const n=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":const n=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:n,atMost:n};break;case",":let e;this.isDigit()?(e=this.integerIncludingZero(),t={atLeast:n,atMost:e}):t={atLeast:n,atMost:1/0},this.consumeChar("}")}if(!0===e&&void 0===t)return;a(t)}if(!0!==e||void 0!==t)return a(t)?("?"===this.peekChar(0)?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(n),t):void 0}atom(){let e;const t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group()}return void 0===e&&this.isPatternCharacter()&&(e=this.patternCharacter()),a(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):o()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[r("\n"),r("\r"),r("\u2028"),r("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=c;break;case"D":e=c,t=!0;break;case"s":e=d;break;case"S":e=d,t=!0;break;case"w":e=u;break;case"W":e=u,t=!0}return a(e)?{type:"Set",value:e,complement:t}:o()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=r("\f");break;case"n":e=r("\n");break;case"r":e=r("\r");break;case"t":e=r("\t");break;case"v":e=r("\v")}return a(e)?{type:"Character",value:e}:o()}controlLetterEscapeAtom(){this.consumeChar("c");const e=this.popChar();if(!1===/[a-zA-Z]/.test(e))throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:r("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:r(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case"\n":case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:return{type:"Character",value:r(this.popChar())}}}characterClass(){const e=[];let t=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),t=!0);this.isClassAtom();){const t=this.classAtom();t.type;if(l(t)&&this.isRangeDash()){this.consumeChar("-");const n=this.classAtom();n.type;if(l(n)){if(n.value<t.value)throw Error("Range out of order in character class");e.push({from:t.value,to:n.value})}else i(t.value,e),e.push(r("-")),i(n.value,e)}else i(t.value,e)}return this.consumeChar("]"),{type:"Set",complement:t,value:e}}classAtom(){switch(this.peekChar()){case"]":case"\n":case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}}classEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:r("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}group(){let e=!0;if(this.consumeChar("("),"?"===this.peekChar(0))this.consumeChar("?"),this.consumeChar(":"),e=!1;else this.groupIdx++;const t=this.disjunction();this.consumeChar(")");const n={type:"Group",capturing:e,value:t};return e&&(n.idx=this.groupIdx),n}positiveInteger(){let e=this.popChar();if(!1===p.test(e))throw Error("Expecting a positive integer");for(;f.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}integerIncludingZero(){let e=this.popChar();if(!1===f.test(e))throw Error("Expecting an integer");for(;f.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}patternCharacter(){const e=this.popChar();switch(e){case"\n":case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:r(e)}}}isRegExpFlag(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}}isRangeDash(){return"-"===this.peekChar()&&this.isClassAtom(1)}isDigit(){return f.test(this.peekChar(0))}isClassAtom(e=0){switch(this.peekChar(e)){case"]":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}isTerm(){return this.isAtom()||this.isAssertion()}isAtom(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}}isAssertion(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return"?"===this.peekChar(1)&&("="===this.peekChar(2)||"!"===this.peekChar(2));default:return!1}}isQuantifier(){const e=this.saveState();try{return void 0!==this.quantifier(!0)}catch(t){return!1}finally{this.restoreState(e)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let t="";for(let n=0;n<e;n++){const e=this.popChar();if(!1===h.test(e))throw Error("Expecting a HexDecimal digits");t+=e}return{type:"Character",value:parseInt(t,16)}}peekChar(e=0){return this.input[this.idx+e]}popChar(){const e=this.peekChar(0);return this.consumeChar(void 0),e}consumeChar(e){if(void 0!==e&&this.input[this.idx]!==e)throw Error("Expected: '"+e+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}class g{visitChildren(e){for(const t in e){const n=e[t];e.hasOwnProperty(t)&&(void 0!==n.type?this.visit(n):Array.isArray(n)&&n.forEach(e=>{this.visit(e)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e)}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}},6373:(e,t,n)=>{n.d(t,{El:()=>d,NS:()=>a,SX:()=>c,pO:()=>o,r4:()=>u,v:()=>h,wf:()=>l});var r,i=n(2479),s=n(1719);function a(e){return new s.Vj(e,e=>(0,i.mD)(e)?e.content:[],{includeRoot:!0})}function o(e,t){for(;e.container;)if((e=e.container)===t)return!0;return!1}function l(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function c(e){if(!e)return;const{offset:t,end:n,range:r}=e;return{range:r,offset:t,end:n,length:n-t}}function u(e,t){const n=function(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return r.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return r.After;const n=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,i=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return n&&i?r.Inside:n?r.OverlapBack:i?r.OverlapFront:r.Outside}(e,t);return n>r.After}!function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"}(r||(r={}));const d=/^[\w\p{L}]$/u;function h(e,t){if(e){const n=function(e,t=!0){for(;e.container;){const n=e.container;let r=n.content.indexOf(e);for(;r>0;){r--;const e=n.content[r];if(t||!e.hidden)return e}e=n}return}(e,!0);if(n&&f(n,t))return n;if((0,i.br)(e)){for(let n=e.content.findIndex(e=>!e.hidden)-1;n>=0;n--){const r=e.content[n];if(f(r,t))return r}}}}function f(e,t){return(0,i.FC)(e)&&t.includes(e.tokenType.name)}},7539:(e,t,n)=>{n.d(t,{b:()=>c});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function c(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.eZ,l);return t.ServiceRegistry.register(n),{shared:t,GitGraph:n}}(0,r.K2)(c,"createGitGraphServices")},7608:(e,t,n)=>{var r;n.d(t,{A:()=>s,r:()=>i}),(()=>{var e={470:e=>{function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,s=-1,a=0,o=0;o<=e.length;++o){if(o<e.length)n=e.charCodeAt(o);else{if(47===n)break;n=47}if(47===n){if(s===o-1||1===a);else if(s!==o-1&&2===a){if(r.length<2||2!==i||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var l=r.lastIndexOf("/");if(l!==r.length-1){-1===l?(r="",i=0):i=(r=r.slice(0,l)).length-1-r.lastIndexOf("/"),s=o,a=0;continue}}else if(2===r.length||1===r.length){r="",i=0,s=o,a=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(s+1,o):r=e.slice(s+1,o),i=o-s-1;s=o,a=0}else 46===n&&-1!==a?++a:a=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,s=arguments.length-1;s>=-1&&!i;s--){var a;s>=0?a=arguments[s]:(void 0===e&&(e=process.cwd()),a=e),t(a),0!==a.length&&(r=a+"/"+r,i=47===a.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var i=arguments[n];t(i),i.length>0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;i<e.length&&47===e.charCodeAt(i);++i);for(var s=e.length,a=s-i,o=1;o<n.length&&47===n.charCodeAt(o);++o);for(var l=n.length-o,c=a<l?a:l,u=-1,d=0;d<=c;++d){if(d===c){if(l>c){if(47===n.charCodeAt(o+d))return n.slice(o+d+1);if(0===d)return n.slice(o+d)}else a>c&&(47===e.charCodeAt(i+d)?u=d:0===d&&(u=0));break}var h=e.charCodeAt(i+d);if(h!==n.charCodeAt(o+d))break;47===h&&(u=d)}var f="";for(d=i+u+1;d<=s;++d)d!==s&&47!==e.charCodeAt(d)||(0===f.length?f+="..":f+="/..");return f.length>0?f+n.slice(o+u):(o+=u,47===n.charCodeAt(o)&&++o,n.slice(o))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,s=!0,a=e.length-1;a>=1;--a)if(47===(n=e.charCodeAt(a))){if(!s){i=a;break}}else s=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,s=-1,a=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var o=n.length-1,l=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!a){i=r+1;break}}else-1===l&&(a=!1,l=r+1),o>=0&&(c===n.charCodeAt(o)?-1==--o&&(s=r):(o=-1,s=l))}return i===s?s=l:-1===s&&(s=e.length),e.slice(i,s)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!a){i=r+1;break}}else-1===s&&(a=!1,s=r+1);return-1===s?"":e.slice(i,s)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,s=!0,a=0,o=e.length-1;o>=0;--o){var l=e.charCodeAt(o);if(47!==l)-1===i&&(s=!1,i=o+1),46===l?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!s){r=o+1;break}}return-1===n||-1===i||0===a||1===a&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),s=47===i;s?(n.root="/",r=1):r=0;for(var a=-1,o=0,l=-1,c=!0,u=e.length-1,d=0;u>=r;--u)if(47!==(i=e.charCodeAt(u)))-1===l&&(c=!1,l=u+1),46===i?-1===a?a=u:1!==d&&(d=1):-1!==a&&(d=-1);else if(!c){o=u+1;break}return-1===a||-1===l||0===d||1===d&&a===l-1&&a===o+1?-1!==l&&(n.base=n.name=0===o&&s?e.slice(1,l):e.slice(o,l)):(0===o&&s?(n.name=e.slice(1,a),n.base=e.slice(1,l)):(n.name=e.slice(o,a),n.base=e.slice(o,l)),n.ext=e.slice(a,l)),o>0?n.dir=e.slice(0,o-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{let e;if(n.r(i),n.d(i,{URI:()=>u,Utils:()=>k}),"object"==typeof process)e="win32"===process.platform;else if("object"==typeof navigator){let t=navigator.userAgent;e=t.indexOf("Windows")>=0}const t=/^\w[\w\d+.-]*$/,r=/^\//,s=/^\/\//;function a(e,n){if(!e.scheme&&n)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!t.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!r.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(s.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}const o="",l="/",c=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class u{static isUri(e){return e instanceof u||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"string"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}scheme;authority;path;query;fragment;constructor(e,t,n,r,i,s=!1){"object"==typeof e?(this.scheme=e.scheme||o,this.authority=e.authority||o,this.path=e.path||o,this.query=e.query||o,this.fragment=e.fragment||o):(this.scheme=function(e,t){return e||t?e:"file"}(e,s),this.authority=t||o,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==l&&(t=l+t):t=l}return t}(this.scheme,n||o),this.query=r||o,this.fragment=i||o,a(this,s))}get fsPath(){return g(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:r,query:i,fragment:s}=e;return void 0===t?t=this.scheme:null===t&&(t=o),void 0===n?n=this.authority:null===n&&(n=o),void 0===r?r=this.path:null===r&&(r=o),void 0===i?i=this.query:null===i&&(i=o),void 0===s?s=this.fragment:null===s&&(s=o),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&s===this.fragment?this:new h(t,n,r,i,s)}static parse(e,t=!1){const n=c.exec(e);return n?new h(n[2]||o,v(n[4]||o),v(n[5]||o),v(n[7]||o),v(n[9]||o),t):new h(o,o,o,o,o)}static file(t){let n=o;if(e&&(t=t.replace(/\\/g,l)),t[0]===l&&t[1]===l){const e=t.indexOf(l,2);-1===e?(n=t.substring(2),t=l):(n=t.substring(2,e),t=t.substring(e)||l)}return new h("file",n,t,o,o)}static from(e){const t=new h(e.scheme,e.authority,e.path,e.query,e.fragment);return a(t,!0),t}toString(e=!1){return y(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof u)return e;{const t=new h(e);return t._formatted=e.external,t._fsPath=e._sep===d?e.fsPath:null,t}}return e}}const d=e?1:void 0;class h extends u{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=g(this,!1)),this._fsPath}toString(e=!1){return e?y(this,!0):(this._formatted||(this._formatted=y(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=d),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const f={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function p(e,t,n){let r,i=-1;for(let s=0;s<e.length;s++){const a=e.charCodeAt(s);if(a>=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57||45===a||46===a||95===a||126===a||t&&47===a||n&&91===a||n&&93===a||n&&58===a)-1!==i&&(r+=encodeURIComponent(e.substring(i,s)),i=-1),void 0!==r&&(r+=e.charAt(s));else{void 0===r&&(r=e.substr(0,s));const t=f[a];void 0!==t?(-1!==i&&(r+=encodeURIComponent(e.substring(i,s)),i=-1),r+=t):-1===i&&(i=s)}}return-1!==i&&(r+=encodeURIComponent(e.substring(i))),void 0!==r?r:e}function m(e){let t;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);35===r||63===r?(void 0===t&&(t=e.substr(0,n)),t+=f[r]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function g(t,n){let r;return r=t.authority&&t.path.length>1&&"file"===t.scheme?`//${t.authority}${t.path}`:47===t.path.charCodeAt(0)&&(t.path.charCodeAt(1)>=65&&t.path.charCodeAt(1)<=90||t.path.charCodeAt(1)>=97&&t.path.charCodeAt(1)<=122)&&58===t.path.charCodeAt(2)?n?t.path.substr(1):t.path[1].toLowerCase()+t.path.substr(2):t.path,e&&(r=r.replace(/\//g,"\\")),r}function y(e,t){const n=t?m:p;let r="",{scheme:i,authority:s,path:a,query:o,fragment:c}=e;if(i&&(r+=i,r+=":"),(s||"file"===i)&&(r+=l,r+=l),s){let e=s.indexOf("@");if(-1!==e){const t=s.substr(0,e);s=s.substr(e+1),e=t.lastIndexOf(":"),-1===e?r+=n(t,!1,!1):(r+=n(t.substr(0,e),!1,!1),r+=":",r+=n(t.substr(e+1),!1,!0)),r+="@"}s=s.toLowerCase(),e=s.lastIndexOf(":"),-1===e?r+=n(s,!1,!0):(r+=n(s.substr(0,e),!1,!0),r+=s.substr(e))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2)){const e=a.charCodeAt(1);e>=65&&e<=90&&(a=`/${String.fromCharCode(e+32)}:${a.substr(3)}`)}else if(a.length>=2&&58===a.charCodeAt(1)){const e=a.charCodeAt(0);e>=65&&e<=90&&(a=`${String.fromCharCode(e+32)}:${a.substr(2)}`)}r+=n(a,!0,!1)}return o&&(r+="?",r+=n(o,!1,!1)),c&&(r+="#",r+=t?c:p(c,!1,!1)),r}function T(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+T(e.substr(3)):e}}const A=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function v(e){return e.match(A)?e.replace(A,e=>T(e)):e}var R=n(470);const $=R.posix||R,E="/";var k;!function(e){e.joinPath=function(e,...t){return e.with({path:$.join(e.path,...t)})},e.resolvePath=function(e,...t){let n=e.path,r=!1;n[0]!==E&&(n=E+n,r=!0);let i=$.resolve(n,...t);return r&&i[0]===E&&!e.authority&&(i=i.substring(1)),e.with({path:i})},e.dirname=function(e){if(0===e.path.length||e.path===E)return e;let t=$.dirname(e.path);return 1===t.length&&46===t.charCodeAt(0)&&(t=""),e.with({path:t})},e.basename=function(e){return $.basename(e.path)},e.extname=function(e){return $.extname(e.path)}}(k||(k={}))})(),r=i})();const{URI:i,Utils:s}=r},7846:(e,t,n)=>{n.d(t,{f:()=>c});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function c(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.YP,l);return t.ServiceRegistry.register(n),{shared:t,Radar:n}}(0,r.K2)(c,"createRadarServices")},7960:(e,t,n)=>{n.d(t,{mR:()=>xe,dg:()=>Ee,jE:()=>Te,Tm:()=>ke,eZ:()=>Ae,e5:()=>me,sr:()=>pe,AM:()=>ge,KX:()=>ye,YP:()=>ve,eV:()=>Re,K2:()=>m});var r=n(2479),i=n(8913),s=n(9364),a=n(2151),o=n(4298),l=n(7608);const c={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},u={AstReflection:()=>new a.QX};function d(e){var t;const n=function(){const e=(0,s.WQ)((0,i.u)(o.D),u),t=(0,s.WQ)((0,i.t)({shared:e}),c);return e.ServiceRegistry.register(t),t}(),r=n.serializer.JsonSerializer.deserialize(e);return n.shared.workspace.LangiumDocumentFactory.fromModel(r,l.r.parse(`memory://${null!==(t=r.name)&&void 0!==t?t:"grammar"}.langium`)),r}var h=n(5033),f=n(1945),p=Object.defineProperty,m=(e,t)=>p(e,"name",{value:t,configurable:!0}),g="Statement",y="Architecture";m(function(e){return J.isInstance(e,y)},"isArchitecture");var T="Axis",A="Branch";m(function(e){return J.isInstance(e,A)},"isBranch");var v="Checkout",R="CherryPicking",$="ClassDefStatement",E="Commit";m(function(e){return J.isInstance(e,E)},"isCommit");var k="Curve",x="Edge",I="Entry",S="GitGraph";m(function(e){return J.isInstance(e,S)},"isGitGraph");var N="Group",C="Info";m(function(e){return J.isInstance(e,C)},"isInfo");var w="Item",L="Junction",b="Merge";m(function(e){return J.isInstance(e,b)},"isMerge");var O="Option",_="Packet";m(function(e){return J.isInstance(e,_)},"isPacket");var P="PacketBlock";m(function(e){return J.isInstance(e,P)},"isPacketBlock");var M="Pie";m(function(e){return J.isInstance(e,M)},"isPie");var D="PieSection";m(function(e){return J.isInstance(e,D)},"isPieSection");var U="Radar",F="Service",G="Treemap";m(function(e){return J.isInstance(e,G)},"isTreemap");var K,B,V,j,H,W,z,Y="TreemapRow",X="Direction",q="Leaf",Q="Section",Z=class extends r.kD{static{m(this,"MermaidAstReflection")}getAllTypes(){return[y,T,A,v,R,$,E,k,X,x,I,S,N,C,w,L,q,b,O,_,P,M,D,U,Q,F,g,G,Y]}computeIsSubtype(e,t){switch(e){case A:case v:case R:case E:case b:return this.isSubtype(g,t);case X:return this.isSubtype(S,t);case q:case Q:return this.isSubtype(w,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;if("Entry:axis"===t)return T;throw new Error(`${t} is not a valid reference id.`)}getTypeMetaData(e){switch(e){case y:return{name:y,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case T:return{name:T,properties:[{name:"label"},{name:"name"}]};case A:return{name:A,properties:[{name:"name"},{name:"order"}]};case v:return{name:v,properties:[{name:"branch"}]};case R:return{name:R,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case $:return{name:$,properties:[{name:"className"},{name:"styleText"}]};case E:return{name:E,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case k:return{name:k,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case x:return{name:x,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case I:return{name:I,properties:[{name:"axis"},{name:"value"}]};case S:return{name:S,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case N:return{name:N,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case C:return{name:C,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case w:return{name:w,properties:[{name:"classSelector"},{name:"name"}]};case L:return{name:L,properties:[{name:"id"},{name:"in"}]};case b:return{name:b,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case O:return{name:O,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case _:return{name:_,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case P:return{name:P,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case M:return{name:M,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case D:return{name:D,properties:[{name:"label"},{name:"value"}]};case U:return{name:U,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case F:return{name:F,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case G:return{name:G,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case Y:return{name:Y,properties:[{name:"indent"},{name:"item"}]};case X:return{name:X,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case q:return{name:q,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case Q:return{name:Q,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:e,properties:[]}}}},J=new Z,ee=m(()=>K??(K=d('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"InfoGrammar"),te=m(()=>B??(B=d('{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"PacketGrammar"),ne=m(()=>V??(V=d('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"PieGrammar"),re=m(()=>j??(j=d('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),ie=m(()=>H??(H=d('{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"GitGraphGrammar"),se=m(()=>W??(W=d('{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}')),"RadarGrammar"),ae=m(()=>z??(z=d('{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|\'[^\']*\'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}')),"TreemapGrammar"),oe={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},le={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ce={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ue={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},de={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},he={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},fe={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},pe={AstReflection:m(()=>new Z,"AstReflection")},me={Grammar:m(()=>ee(),"Grammar"),LanguageMetaData:m(()=>oe,"LanguageMetaData"),parser:{}},ge={Grammar:m(()=>te(),"Grammar"),LanguageMetaData:m(()=>le,"LanguageMetaData"),parser:{}},ye={Grammar:m(()=>ne(),"Grammar"),LanguageMetaData:m(()=>ce,"LanguageMetaData"),parser:{}},Te={Grammar:m(()=>re(),"Grammar"),LanguageMetaData:m(()=>ue,"LanguageMetaData"),parser:{}},Ae={Grammar:m(()=>ie(),"Grammar"),LanguageMetaData:m(()=>de,"LanguageMetaData"),parser:{}},ve={Grammar:m(()=>se(),"Grammar"),LanguageMetaData:m(()=>he,"LanguageMetaData"),parser:{}},Re={Grammar:m(()=>ae(),"Grammar"),LanguageMetaData:m(()=>fe,"LanguageMetaData"),parser:{}},$e={ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/accTitle[\t ]*:([^\n\r]*)/,TITLE:/title([\t ][^\n\r]*|)/},Ee=class extends h.d{static{m(this,"AbstractMermaidValueConverter")}runConverter(e,t,n){let r=this.runCommonConverter(e,t,n);return void 0===r&&(r=this.runCustomConverter(e,t,n)),void 0===r?super.runConverter(e,t,n):r}runCommonConverter(e,t,n){const r=$e[e.name];if(void 0===r)return;const i=r.exec(t);return null!==i?void 0!==i[1]?i[1].trim().replace(/[\t ]{2,}/gm," "):void 0!==i[2]?i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,"\n"):void 0:void 0}},ke=class extends Ee{static{m(this,"CommonValueConverter")}runCustomConverter(e,t,n){}},xe=class extends f.Q{static{m(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,n){const r=super.buildKeywordTokens(e,t,n);return r.forEach(e=>{this.keywords.has(e.name)&&void 0!==e.PATTERN&&(e.PATTERN=new RegExp(e.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),r}};(class extends xe{static{m(this,"CommonTokenBuilder")}})},8139:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(1207),i=n(4722);const s=function(e,t){return(0,r.A)((0,i.A)(e,t),1)}},8731:(e,t,n)=>{n.d(t,{qg:()=>a});n(7539),n(1885),n(1477),n(9150),n(8980),n(7846),n(1633);var r=n(7960),i={},s={info:(0,r.K2)(async()=>{const{createInfoServices:e}=await n.e(3490).then(n.bind(n,3490)),t=e().Info.parser.LangiumParser;i.info=t},"info"),packet:(0,r.K2)(async()=>{const{createPacketServices:e}=await n.e(2325).then(n.bind(n,2325)),t=e().Packet.parser.LangiumParser;i.packet=t},"packet"),pie:(0,r.K2)(async()=>{const{createPieServices:e}=await n.e(617).then(n.bind(n,617)),t=e().Pie.parser.LangiumParser;i.pie=t},"pie"),architecture:(0,r.K2)(async()=>{const{createArchitectureServices:e}=await n.e(6366).then(n.bind(n,6366)),t=e().Architecture.parser.LangiumParser;i.architecture=t},"architecture"),gitGraph:(0,r.K2)(async()=>{const{createGitGraphServices:e}=await n.e(4250).then(n.bind(n,1869)),t=e().GitGraph.parser.LangiumParser;i.gitGraph=t},"gitGraph"),radar:(0,r.K2)(async()=>{const{createRadarServices:e}=await n.e(1e3).then(n.bind(n,1e3)),t=e().Radar.parser.LangiumParser;i.radar=t},"radar"),treemap:(0,r.K2)(async()=>{const{createTreemapServices:e}=await n.e(5901).then(n.bind(n,5901)),t=e().Treemap.parser.LangiumParser;i.treemap=t},"treemap")};async function a(e,t){const n=s[e];if(!n)throw new Error(`Unknown diagram type: ${e}`);i[e]||await n();const r=i[e].parse(t);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new o(r);return r.value}(0,r.K2)(a,"parse");var o=class extends Error{constructor(e){super(`Parsing failed: ${e.lexerErrors.map(e=>e.message).join("\n")} ${e.parserErrors.map(e=>e.message).join("\n")}`),this.result=e}static{(0,r.K2)(this,"MermaidParseError")}}},8913:(e,t,n)=>{n.d(t,{t:()=>Fr,u:()=>Gr});var r=n(6373),i=n(418),s=n(2806),a=n(2151);var o=n(9637),l=n(4722),c=n(4092);function u(e,t,n){return`${e.name}_${t}_${n}`}class d{constructor(e){this.target=e}isEpsilon(){return!1}}class h extends d{constructor(e,t){super(e),this.tokenType=t}}class f extends d{constructor(e){super(e)}isEpsilon(){return!0}}class p extends d{constructor(e,t,n){super(e),this.rule=t,this.followState=n}isEpsilon(){return!0}}function m(e){const t={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};!function(e,t){const n=t.length;for(let r=0;r<n;r++){const n=t[r],i=x(e,n,void 0,{type:2}),s=x(e,n,void 0,{type:7});i.stop=s,e.ruleToStartState.set(n,i),e.ruleToStopState.set(n,s)}}(t,e);const n=e.length;for(let r=0;r<n;r++){const n=e[r],i=y(t,n,n);void 0!==i&&E(t,n,i)}return t}function g(e,t,n){return n instanceof o.BK?$(e,t,n.terminalType,n):n instanceof o.wL?function(e,t,n){const r=n.referencedRule,i=e.ruleToStartState.get(r),s=x(e,t,n,{type:1}),a=x(e,t,n,{type:1}),o=new p(i,r,a);return I(s,o),{left:s,right:a}}(e,t,n):n instanceof o.ak?function(e,t,n){const r=x(e,t,n,{type:1});v(e,r);const i=(0,l.A)(n.definition,n=>g(e,t,n)),s=R(e,t,r,n,...i);return s}(e,t,n):n instanceof o.c$?function(e,t,n){const r=x(e,t,n,{type:1});v(e,r);const i=R(e,t,r,n,y(e,t,n));return function(e,t,n,r){const i=r.left,s=r.right;return k(i,s),e.decisionMap[u(t,"Option",n.idx)]=i,r}(e,t,n,i)}(e,t,n):n instanceof o.Y2?function(e,t,n){const r=x(e,t,n,{type:5});v(e,r);const i=R(e,t,r,n,y(e,t,n));return A(e,t,n,i)}(e,t,n):n instanceof o.Pp?function(e,t,n){const r=x(e,t,n,{type:5});v(e,r);const i=R(e,t,r,n,y(e,t,n)),s=$(e,t,n.separator,n);return A(e,t,n,i,s)}(e,t,n):n instanceof o.$P?function(e,t,n){const r=x(e,t,n,{type:4});v(e,r);const i=R(e,t,r,n,y(e,t,n));return T(e,t,n,i)}(e,t,n):n instanceof o.Cy?function(e,t,n){const r=x(e,t,n,{type:4});v(e,r);const i=R(e,t,r,n,y(e,t,n)),s=$(e,t,n.separator,n);return T(e,t,n,i,s)}(e,t,n):y(e,t,n)}function y(e,t,n){const r=(0,c.A)((0,l.A)(n.definition,n=>g(e,t,n)),e=>void 0!==e);return 1===r.length?r[0]:0===r.length?void 0:function(e,t){const n=t.length;for(let s=0;s<n-1;s++){const n=t[s];let r;1===n.left.transitions.length&&(r=n.left.transitions[0]);const i=r instanceof p,a=r,o=t[s+1].left;1===n.left.type&&1===n.right.type&&void 0!==r&&(i&&a.followState===n.right||r.target===n.right)?(i?a.followState=o:r.target=o,S(e,n.right)):k(n.right,o)}const r=t[0],i=t[n-1];return{left:r.left,right:i.right}}(e,r)}function T(e,t,n,r,i){const s=r.left,a=r.right,o=x(e,t,n,{type:11});v(e,o);const l=x(e,t,n,{type:12});return s.loopback=o,l.loopback=o,e.decisionMap[u(t,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",n.idx)]=o,k(a,o),void 0===i?(k(o,s),k(o,l)):(k(o,l),k(o,i.left),k(i.right,s)),{left:s,right:l}}function A(e,t,n,r,i){const s=r.left,a=r.right,o=x(e,t,n,{type:10});v(e,o);const l=x(e,t,n,{type:12}),c=x(e,t,n,{type:9});return o.loopback=c,l.loopback=c,k(o,s),k(o,l),k(a,c),void 0!==i?(k(c,l),k(c,i.left),k(i.right,s)):k(c,o),e.decisionMap[u(t,i?"RepetitionWithSeparator":"Repetition",n.idx)]=o,{left:o,right:l}}function v(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}function R(e,t,n,r,...i){const s=x(e,t,r,{type:8,start:n});n.end=s;for(const o of i)void 0!==o?(k(n,o.left),k(o.right,s)):k(n,s);const a={left:n,right:s};return e.decisionMap[u(t,function(e){if(e instanceof o.ak)return"Alternation";if(e instanceof o.c$)return"Option";if(e instanceof o.Y2)return"Repetition";if(e instanceof o.Pp)return"RepetitionWithSeparator";if(e instanceof o.$P)return"RepetitionMandatory";if(e instanceof o.Cy)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}(r),r.idx)]=n,a}function $(e,t,n,r){const i=x(e,t,r,{type:1}),s=x(e,t,r,{type:1});return I(i,new h(s,n)),{left:i,right:s}}function E(e,t,n){const r=e.ruleToStartState.get(t);k(r,n.left);const i=e.ruleToStopState.get(t);k(n.right,i);return{left:r,right:i}}function k(e,t){I(e,new f(t))}function x(e,t,n,r){const i=Object.assign({atn:e,production:n,epsilonOnlyTransitions:!1,rule:t,transitions:[],nextTokenWithinRule:[],stateNumber:e.states.length},r);return e.states.push(i),i}function I(e,t){0===e.transitions.length&&(e.epsilonOnlyTransitions=t.isEpsilon()),e.transitions.push(t)}function S(e,t){e.states.splice(e.states.indexOf(t),1)}const N={};class C{constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){const t=w(e);t in this.map||(this.map[t]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return(0,l.A)(this.configs,e=>e.alt)}get key(){let e="";for(const t in this.map)e+=t+":";return e}}function w(e,t=!0){return`${t?`a${e.alt}`:""}s${e.state.stateNumber}:${e.stack.map(e=>e.stateNumber.toString()).join("_")}`}var L=n(6452),b=n(8139),O=n(3958),_=n(9902);const P=function(e,t){return e&&e.length?(0,_.A)(e,(0,O.A)(t,2)):[]};var M=n(4098),D=n(8058),U=n(6401),F=n(9463);function G(e,t){const n={};return r=>{const i=r.toString();let s=n[i];return void 0!==s||(s={atnStartState:e,decision:t,states:{}},n[i]=s),s}}class K{constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="";const t=this.predicates.length;for(let n=0;n<t;n++)e+=!0===this.predicates[n]?"1":"0";return e}}const B=new K;class V extends o.T6{constructor(e){var t;super(),this.logging=null!==(t=null==e?void 0:e.logging)&&void 0!==t?t:e=>console.log(e)}initialize(e){this.atn=m(e.rules),this.dfas=function(e){const t=e.decisionStates.length,n=Array(t);for(let r=0;r<t;r++)n[r]=G(e.decisionStates[r],r);return n}(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){const{prodOccurrence:t,rule:n,hasPredicates:r,dynamicTokensEnabled:i}=e,s=this.dfas,a=this.logging,c=u(n,"Alternation",t),d=this.atn.decisionMap[c].decision,h=(0,l.A)((0,o.jk)({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:n}),e=>(0,l.A)(e,e=>e[0]));if(j(h,!1)&&!i){const e=(0,F.A)(h,(e,t,n)=>((0,D.A)(t,t=>{t&&(e[t.tokenTypeIdx]=n,(0,D.A)(t.categoryMatches,t=>{e[t]=n}))}),e),{});return r?function(t){var n;const r=this.LA(1),i=e[r.tokenTypeIdx];if(void 0!==t&&void 0!==i){const e=null===(n=t[i])||void 0===n?void 0:n.GATE;if(void 0!==e&&!1===e.call(this))return}return i}:function(){const t=this.LA(1);return e[t.tokenTypeIdx]}}return r?function(e){const t=new K,n=void 0===e?0:e.length;for(let i=0;i<n;i++){const n=null==e?void 0:e[i].GATE;t.set(i,void 0===n||n.call(this))}const r=H.call(this,s,d,t,a);return"number"==typeof r?r:void 0}:function(){const e=H.call(this,s,d,B,a);return"number"==typeof e?e:void 0}}buildLookaheadForOptional(e){const{prodOccurrence:t,rule:n,prodType:r,dynamicTokensEnabled:i}=e,s=this.dfas,a=this.logging,c=u(n,r,t),d=this.atn.decisionMap[c].decision,h=(0,l.A)((0,o.jk)({maxLookahead:1,occurrence:t,prodType:r,rule:n}),e=>(0,l.A)(e,e=>e[0]));if(j(h)&&h[0][0]&&!i){const e=h[0],t=(0,M.A)(e);if(1===t.length&&(0,U.A)(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=(0,F.A)(t,(e,t)=>(void 0!==t&&(e[t.tokenTypeIdx]=!0,(0,D.A)(t.categoryMatches,t=>{e[t]=!0})),e),{});return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){const e=H.call(this,s,d,B,a);return"object"!=typeof e&&0===e}}}function j(e,t=!0){const n=new Set;for(const r of e){const e=new Set;for(const i of r){if(void 0===i){if(t)break;return!1}const r=[i.tokenTypeIdx].concat(i.categoryMatches);for(const t of r)if(n.has(t)){if(!e.has(t))return!1}else n.add(t),e.add(t)}}return!0}function H(e,t,n,r){const i=e[t](n);let s=i.start;if(void 0===s){s=ee(i,Z(te(i.atnStartState))),i.start=s}return W.apply(this,[i,s,n,r])}function W(e,t,n,r){let i=t,s=1;const a=[];let o=this.LA(s++);for(;;){let t=q(i,o);if(void 0===t&&(t=z.apply(this,[e,i,o,s,n,r])),t===N)return X(a,i,o);if(!0===t.isAcceptState)return t.prediction;i=t,a.push(o),o=this.LA(s++)}}function z(e,t,n,r,i,s){const a=function(e,t,n){const r=new C,i=[];for(const a of e.elements){if(!1===n.is(a.alt))continue;if(7===a.state.type){i.push(a);continue}const e=a.state.transitions.length;for(let n=0;n<e;n++){const e=Q(a.state.transitions[n],t);void 0!==e&&r.add({state:e,alt:a.alt,stack:a.stack})}}let s;0===i.length&&1===r.size&&(s=r);if(void 0===s){s=new C;for(const e of r.elements)ne(e,s)}if(i.length>0&&!function(e){for(const t of e.elements)if(7===t.state.type)return!0;return!1}(s))for(const a of i)s.add(a);return s}(t.configs,n,i);if(0===a.size)return J(e,t,n,N),N;let o=Z(a);const l=function(e,t){let n;for(const r of e.elements)if(!0===t.is(r.alt))if(void 0===n)n=r.alt;else if(n!==r.alt)return;return n}(a,i);if(void 0!==l)o.isAcceptState=!0,o.prediction=l,o.configs.uniqueAlt=l;else if(function(e){if(function(e){for(const t of e.elements)if(7!==t.state.type)return!1;return!0}(e))return!0;const t=function(e){const t=new Map;for(const n of e){const e=w(n,!1);let r=t.get(e);void 0===r&&(r={},t.set(e,r)),r[n.alt]=!0}return t}(e.elements);return function(e){for(const t of Array.from(e.values()))if(Object.keys(t).length>1)return!0;return!1}(t)&&!function(e){for(const t of Array.from(e.values()))if(1===Object.keys(t).length)return!0;return!1}(t)}(a)){const t=(0,L.A)(a.alts);o.isAcceptState=!0,o.prediction=t,o.configs.uniqueAlt=t,Y.apply(this,[e,r,a.alts,s])}return o=J(e,t,n,o),o}function Y(e,t,n,r){const i=[];for(let a=1;a<=t;a++)i.push(this.LA(a).tokenType);const s=e.atnStartState;r(function(e){const t=(0,l.A)(e.prefixPath,e=>(0,o.Sk)(e)).join(", "),n=0===e.production.idx?"":e.production.idx;let r=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${function(e){if(e instanceof o.wL)return"SUBRULE";if(e instanceof o.c$)return"OPTION";if(e instanceof o.ak)return"OR";if(e instanceof o.$P)return"AT_LEAST_ONE";if(e instanceof o.Cy)return"AT_LEAST_ONE_SEP";if(e instanceof o.Pp)return"MANY_SEP";if(e instanceof o.Y2)return"MANY";if(e instanceof o.BK)return"CONSUME";throw Error("non exhaustive match")}(e.production)}${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r}({topLevelRule:s.rule,ambiguityIndices:n,production:s.production,prefixPath:i}))}function X(e,t,n){const r=(0,b.A)(t.configs.elements,e=>e.state.transitions);return{actualToken:n,possibleTokenTypes:P(r.filter(e=>e instanceof h).map(e=>e.tokenType),e=>e.tokenTypeIdx),tokenPath:e}}function q(e,t){return e.edges[t.tokenTypeIdx]}function Q(e,t){if(e instanceof h&&(0,o.G)(t,e.tokenType))return e.target}function Z(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function J(e,t,n,r){return r=ee(e,r),t.edges[n.tokenTypeIdx]=r,r}function ee(e,t){if(t===N)return t;const n=t.configs.key,r=e.states[n];return void 0!==r?r:(t.configs.finalize(),e.states[n]=t,t)}function te(e){const t=new C,n=e.transitions.length;for(let r=0;r<n;r++){ne({state:e.transitions[r].target,alt:r,stack:[]},t)}return t}function ne(e,t){const n=e.state;if(7===n.type){if(e.stack.length>0){const n=[...e.stack];ne({state:n.pop(),alt:e.alt,stack:n},t)}else t.add(e);return}n.epsilonOnlyTransitions||t.add(e);const r=n.transitions.length;for(let i=0;i<r;i++){const r=re(e,n.transitions[i]);void 0!==r&&ne(r,t)}}function re(e,t){if(t instanceof f)return{state:t.target,alt:e.alt,stack:e.stack};if(t instanceof p){const n=[...e.stack,t.followState];return{state:t.target,alt:e.alt,stack:n}}}var ie,se,ae,oe,le,ce,ue,de,he,fe,pe,me,ge,ye,Te,Ae,ve,Re,$e,Ee,ke,xe,Ie,Se,Ne,Ce,we,Le,be,Oe,_e,Pe,Me,De,Ue,Fe,Ge,Ke,Be,Ve,je,He,We,ze,Ye,Xe,qe,Qe,Ze,Je,et,tt,nt,rt,it,st,at,ot,lt,ct,ut,dt,ht,ft,pt,mt,gt,yt,Tt,At,vt,Rt,$t,Et,kt,xt,It,St,Nt=n(9683);!function(e){e.is=function(e){return"string"==typeof e}}(ie||(ie={})),function(e){e.is=function(e){return"string"==typeof e}}(se||(se={})),function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647,e.is=function(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}}(ae||(ae={})),function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647,e.is=function(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}}(oe||(oe={})),function(e){e.create=function(e,t){return e===Number.MAX_VALUE&&(e=oe.MAX_VALUE),t===Number.MAX_VALUE&&(t=oe.MAX_VALUE),{line:e,character:t}},e.is=function(e){let t=e;return wt.objectLiteral(t)&&wt.uinteger(t.line)&&wt.uinteger(t.character)}}(le||(le={})),function(e){e.create=function(e,t,n,r){if(wt.uinteger(e)&&wt.uinteger(t)&&wt.uinteger(n)&&wt.uinteger(r))return{start:le.create(e,t),end:le.create(n,r)};if(le.is(e)&&le.is(t))return{start:e,end:t};throw new Error(`Range#create called with invalid arguments[${e}, ${t}, ${n}, ${r}]`)},e.is=function(e){let t=e;return wt.objectLiteral(t)&&le.is(t.start)&&le.is(t.end)}}(ce||(ce={})),function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){let t=e;return wt.objectLiteral(t)&&ce.is(t.range)&&(wt.string(t.uri)||wt.undefined(t.uri))}}(ue||(ue={})),function(e){e.create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},e.is=function(e){let t=e;return wt.objectLiteral(t)&&ce.is(t.targetRange)&&wt.string(t.targetUri)&&ce.is(t.targetSelectionRange)&&(ce.is(t.originSelectionRange)||wt.undefined(t.originSelectionRange))}}(de||(de={})),function(e){e.create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.numberRange(t.red,0,1)&&wt.numberRange(t.green,0,1)&&wt.numberRange(t.blue,0,1)&&wt.numberRange(t.alpha,0,1)}}(he||(he={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&ce.is(t.range)&&he.is(t.color)}}(fe||(fe={})),function(e){e.create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.string(t.label)&&(wt.undefined(t.textEdit)||Ee.is(t))&&(wt.undefined(t.additionalTextEdits)||wt.typedArray(t.additionalTextEdits,Ee.is))}}(pe||(pe={})),function(e){e.Comment="comment",e.Imports="imports",e.Region="region"}(me||(me={})),function(e){e.create=function(e,t,n,r,i,s){const a={startLine:e,endLine:t};return wt.defined(n)&&(a.startCharacter=n),wt.defined(r)&&(a.endCharacter=r),wt.defined(i)&&(a.kind=i),wt.defined(s)&&(a.collapsedText=s),a},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.uinteger(t.startLine)&&wt.uinteger(t.startLine)&&(wt.undefined(t.startCharacter)||wt.uinteger(t.startCharacter))&&(wt.undefined(t.endCharacter)||wt.uinteger(t.endCharacter))&&(wt.undefined(t.kind)||wt.string(t.kind))}}(ge||(ge={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){let t=e;return wt.defined(t)&&ue.is(t.location)&&wt.string(t.message)}}(ye||(ye={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(Te||(Te={})),function(e){e.Unnecessary=1,e.Deprecated=2}(Ae||(Ae={})),function(e){e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.string(t.href)}}(ve||(ve={})),function(e){e.create=function(e,t,n,r,i,s){let a={range:e,message:t};return wt.defined(n)&&(a.severity=n),wt.defined(r)&&(a.code=r),wt.defined(i)&&(a.source=i),wt.defined(s)&&(a.relatedInformation=s),a},e.is=function(e){var t;let n=e;return wt.defined(n)&&ce.is(n.range)&&wt.string(n.message)&&(wt.number(n.severity)||wt.undefined(n.severity))&&(wt.integer(n.code)||wt.string(n.code)||wt.undefined(n.code))&&(wt.undefined(n.codeDescription)||wt.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(wt.string(n.source)||wt.undefined(n.source))&&(wt.undefined(n.relatedInformation)||wt.typedArray(n.relatedInformation,ye.is))}}(Re||(Re={})),function(e){e.create=function(e,t,...n){let r={title:e,command:t};return wt.defined(n)&&n.length>0&&(r.arguments=n),r},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.title)&&wt.string(t.command)}}($e||($e={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.string(t.newText)&&ce.is(t.range)}}(Ee||(Ee={})),function(e){e.create=function(e,t,n){const r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.string(t.label)&&(wt.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(wt.string(t.description)||void 0===t.description)}}(ke||(ke={})),function(e){e.is=function(e){const t=e;return wt.string(t)}}(xe||(xe={})),function(e){e.replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},e.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},e.del=function(e,t){return{range:e,newText:"",annotationId:t}},e.is=function(e){const t=e;return Ee.is(t)&&(ke.is(t.annotationId)||xe.is(t.annotationId))}}(Ie||(Ie={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){let t=e;return wt.defined(t)&&_e.is(t.textDocument)&&Array.isArray(t.edits)}}(Se||(Se={})),function(e){e.create=function(e,t,n){let r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){let t=e;return t&&"create"===t.kind&&wt.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||wt.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||wt.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(Ne||(Ne={})),function(e){e.create=function(e,t,n,r){let i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},e.is=function(e){let t=e;return t&&"rename"===t.kind&&wt.string(t.oldUri)&&wt.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||wt.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||wt.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(Ce||(Ce={})),function(e){e.create=function(e,t,n){let r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){let t=e;return t&&"delete"===t.kind&&wt.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||wt.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||wt.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(we||(we={})),function(e){e.is=function(e){let t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every(e=>wt.string(e.kind)?Ne.is(e)||Ce.is(e)||we.is(e):Se.is(e)))}}(Le||(Le={}));!function(e){e.create=function(e){return{uri:e}},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.uri)}}(be||(be={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.uri)&&wt.integer(t.version)}}(Oe||(Oe={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.uri)&&(null===t.version||wt.integer(t.version))}}(_e||(_e={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.uri)&&wt.string(t.languageId)&&wt.integer(t.version)&&wt.string(t.text)}}(Pe||(Pe={})),function(e){e.PlainText="plaintext",e.Markdown="markdown",e.is=function(t){const n=t;return n===e.PlainText||n===e.Markdown}}(Me||(Me={})),function(e){e.is=function(e){const t=e;return wt.objectLiteral(e)&&Me.is(t.kind)&&wt.string(t.value)}}(De||(De={})),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}(Ue||(Ue={})),function(e){e.PlainText=1,e.Snippet=2}(Fe||(Fe={})),function(e){e.Deprecated=1}(Ge||(Ge={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){const t=e;return t&&wt.string(t.newText)&&ce.is(t.insert)&&ce.is(t.replace)}}(Ke||(Ke={})),function(e){e.asIs=1,e.adjustIndentation=2}(Be||(Be={})),function(e){e.is=function(e){const t=e;return t&&(wt.string(t.detail)||void 0===t.detail)&&(wt.string(t.description)||void 0===t.description)}}(Ve||(Ve={})),function(e){e.create=function(e){return{label:e}}}(je||(je={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(He||(He={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){const t=e;return wt.string(t)||wt.objectLiteral(t)&&wt.string(t.language)&&wt.string(t.value)}}(We||(We={})),function(e){e.is=function(e){let t=e;return!!t&&wt.objectLiteral(t)&&(De.is(t.contents)||We.is(t.contents)||wt.typedArray(t.contents,We.is))&&(void 0===e.range||ce.is(e.range))}}(ze||(ze={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(Ye||(Ye={})),function(e){e.create=function(e,t,...n){let r={label:e};return wt.defined(t)&&(r.documentation=t),wt.defined(n)?r.parameters=n:r.parameters=[],r}}(Xe||(Xe={})),function(e){e.Text=1,e.Read=2,e.Write=3}(qe||(qe={})),function(e){e.create=function(e,t){let n={range:e};return wt.number(t)&&(n.kind=t),n}}(Qe||(Qe={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(Ze||(Ze={})),function(e){e.Deprecated=1}(Je||(Je={})),function(e){e.create=function(e,t,n,r,i){let s={name:e,kind:t,location:{uri:r,range:n}};return i&&(s.containerName=i),s}}(et||(et={})),function(e){e.create=function(e,t,n,r){return void 0!==r?{name:e,kind:t,location:{uri:n,range:r}}:{name:e,kind:t,location:{uri:n}}}}(tt||(tt={})),function(e){e.create=function(e,t,n,r,i,s){let a={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==s&&(a.children=s),a},e.is=function(e){let t=e;return t&&wt.string(t.name)&&wt.number(t.kind)&&ce.is(t.range)&&ce.is(t.selectionRange)&&(void 0===t.detail||wt.string(t.detail))&&(void 0===t.deprecated||wt.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}}(nt||(nt={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(rt||(rt={})),function(e){e.Invoked=1,e.Automatic=2}(it||(it={})),function(e){e.create=function(e,t,n){let r={diagnostics:e};return null!=t&&(r.only=t),null!=n&&(r.triggerKind=n),r},e.is=function(e){let t=e;return wt.defined(t)&&wt.typedArray(t.diagnostics,Re.is)&&(void 0===t.only||wt.typedArray(t.only,wt.string))&&(void 0===t.triggerKind||t.triggerKind===it.Invoked||t.triggerKind===it.Automatic)}}(st||(st={})),function(e){e.create=function(e,t,n){let r={title:e},i=!0;return"string"==typeof t?(i=!1,r.kind=t):$e.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},e.is=function(e){let t=e;return t&&wt.string(t.title)&&(void 0===t.diagnostics||wt.typedArray(t.diagnostics,Re.is))&&(void 0===t.kind||wt.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||$e.is(t.command))&&(void 0===t.isPreferred||wt.boolean(t.isPreferred))&&(void 0===t.edit||Le.is(t.edit))}}(at||(at={})),function(e){e.create=function(e,t){let n={range:e};return wt.defined(t)&&(n.data=t),n},e.is=function(e){let t=e;return wt.defined(t)&&ce.is(t.range)&&(wt.undefined(t.command)||$e.is(t.command))}}(ot||(ot={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){let t=e;return wt.defined(t)&&wt.uinteger(t.tabSize)&&wt.boolean(t.insertSpaces)}}(lt||(lt={})),function(e){e.create=function(e,t,n){return{range:e,target:t,data:n}},e.is=function(e){let t=e;return wt.defined(t)&&ce.is(t.range)&&(wt.undefined(t.target)||wt.string(t.target))}}(ct||(ct={})),function(e){e.create=function(e,t){return{range:e,parent:t}},e.is=function(t){let n=t;return wt.objectLiteral(n)&&ce.is(n.range)&&(void 0===n.parent||e.is(n.parent))}}(ut||(ut={})),function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"}(dt||(dt={})),function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"}(ht||(ht={})),function(e){e.is=function(e){const t=e;return wt.objectLiteral(t)&&(void 0===t.resultId||"string"==typeof t.resultId)&&Array.isArray(t.data)&&(0===t.data.length||"number"==typeof t.data[0])}}(ft||(ft={})),function(e){e.create=function(e,t){return{range:e,text:t}},e.is=function(e){const t=e;return null!=t&&ce.is(t.range)&&wt.string(t.text)}}(pt||(pt={})),function(e){e.create=function(e,t,n){return{range:e,variableName:t,caseSensitiveLookup:n}},e.is=function(e){const t=e;return null!=t&&ce.is(t.range)&&wt.boolean(t.caseSensitiveLookup)&&(wt.string(t.variableName)||void 0===t.variableName)}}(mt||(mt={})),function(e){e.create=function(e,t){return{range:e,expression:t}},e.is=function(e){const t=e;return null!=t&&ce.is(t.range)&&(wt.string(t.expression)||void 0===t.expression)}}(gt||(gt={})),function(e){e.create=function(e,t){return{frameId:e,stoppedLocation:t}},e.is=function(e){const t=e;return wt.defined(t)&&ce.is(e.stoppedLocation)}}(yt||(yt={})),function(e){e.Type=1,e.Parameter=2,e.is=function(e){return 1===e||2===e}}(Tt||(Tt={})),function(e){e.create=function(e){return{value:e}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&(void 0===t.tooltip||wt.string(t.tooltip)||De.is(t.tooltip))&&(void 0===t.location||ue.is(t.location))&&(void 0===t.command||$e.is(t.command))}}(At||(At={})),function(e){e.create=function(e,t,n){const r={position:e,label:t};return void 0!==n&&(r.kind=n),r},e.is=function(e){const t=e;return wt.objectLiteral(t)&&le.is(t.position)&&(wt.string(t.label)||wt.typedArray(t.label,At.is))&&(void 0===t.kind||Tt.is(t.kind))&&void 0===t.textEdits||wt.typedArray(t.textEdits,Ee.is)&&(void 0===t.tooltip||wt.string(t.tooltip)||De.is(t.tooltip))&&(void 0===t.paddingLeft||wt.boolean(t.paddingLeft))&&(void 0===t.paddingRight||wt.boolean(t.paddingRight))}}(vt||(vt={})),function(e){e.createSnippet=function(e){return{kind:"snippet",value:e}}}(Rt||(Rt={})),function(e){e.create=function(e,t,n,r){return{insertText:e,filterText:t,range:n,command:r}}}($t||($t={})),function(e){e.create=function(e){return{items:e}}}(Et||(Et={})),function(e){e.Invoked=0,e.Automatic=1}(kt||(kt={})),function(e){e.create=function(e,t){return{range:e,text:t}}}(xt||(xt={})),function(e){e.create=function(e,t){return{triggerKind:e,selectedCompletionInfo:t}}}(It||(It={})),function(e){e.is=function(e){const t=e;return wt.objectLiteral(t)&&se.is(t.uri)&&wt.string(t.name)}}(St||(St={}));var Ct,wt;!function(e){function t(e,n){if(e.length<=1)return e;const r=e.length/2|0,i=e.slice(0,r),s=e.slice(r);t(i,n),t(s,n);let a=0,o=0,l=0;for(;a<i.length&&o<s.length;){let t=n(i[a],s[o]);e[l++]=t<=0?i[a++]:s[o++]}for(;a<i.length;)e[l++]=i[a++];for(;o<s.length;)e[l++]=s[o++];return e}e.create=function(e,t,n,r){return new Lt(e,t,n,r)},e.is=function(e){let t=e;return!!(wt.defined(t)&&wt.string(t.uri)&&(wt.undefined(t.languageId)||wt.string(t.languageId))&&wt.uinteger(t.lineCount)&&wt.func(t.getText)&&wt.func(t.positionAt)&&wt.func(t.offsetAt))},e.applyEdits=function(e,n){let r=e.getText(),i=t(n,(e,t)=>{let n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n}),s=r.length;for(let t=i.length-1;t>=0;t--){let n=i[t],a=e.offsetAt(n.range.start),o=e.offsetAt(n.range.end);if(!(o<=s))throw new Error("Overlapping edit");r=r.substring(0,a)+n.newText+r.substring(o,r.length),s=a}return r}}(Ct||(Ct={}));class Lt{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(void 0===this._lineOffsets){let e=[],t=this._content,n=!0;for(let r=0;r<t.length;r++){n&&(e.push(r),n=!1);let i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return le.create(0,e);for(;n<r;){let i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}let i=n-1;return le.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)}get lineCount(){return this.getLineOffsets().length}}!function(e){const t=Object.prototype.toString;e.defined=function(e){return void 0!==e},e.undefined=function(e){return void 0===e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.numberRange=function(e,n,r){return"[object Number]"===t.call(e)&&n<=e&&e<=r},e.integer=function(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647},e.uinteger=function(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"==typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(wt||(wt={}));class bt{constructor(){this.nodeStack=[]}get current(){var e;return null!==(e=this.nodeStack[this.nodeStack.length-1])&&void 0!==e?e:this.rootNode}buildRootNode(e){return this.rootNode=new Dt(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){const t=new Pt;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){const n=new _t(e.startOffset,e.image.length,(0,r.wf)(e),e.tokenType,!t);return n.grammarSource=t,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){const t=e.container;if(t){const n=t.content.indexOf(e);n>=0&&t.content.splice(n,1)}}addHiddenNodes(e){const t=[];for(const s of e){const e=new _t(s.startOffset,s.image.length,(0,r.wf)(s),s.tokenType,!0);e.root=this.rootNode,t.push(e)}let n=this.current,i=!1;if(n.content.length>0)n.content.push(...t);else{for(;n.container;){const e=n.container.content.indexOf(n);if(e>0){n.container.content.splice(e,0,...t),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...t)}}construct(e){const t=this.current;"string"==typeof e.$type&&(this.current.astNode=e),e.$cstNode=t;const n=this.nodeStack.pop();0===(null==n?void 0:n.content.length)&&this.removeNode(n)}}class Ot{get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,t;const n="string"==typeof(null===(e=this._astNode)||void 0===e?void 0:e.$type)?this._astNode:null===(t=this.container)||void 0===t?void 0:t.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}}class _t extends Ot{get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,n,r,i=!1){super(),this._hidden=i,this._offset=e,this._tokenType=r,this._length=t,this._range=n}}class Pt extends Ot{constructor(){super(...arguments),this.content=new Mt(this)}get children(){return this.content}get offset(){var e,t;return null!==(t=null===(e=this.firstNonHiddenNode)||void 0===e?void 0:e.offset)&&void 0!==t?t:0}get length(){return this.end-this.offset}get end(){var e,t;return null!==(t=null===(e=this.lastNonHiddenNode)||void 0===e?void 0:e.end)&&void 0!==t?t:0}get range(){const e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(void 0===this._rangeCache){const{range:n}=e,{range:r}=t;this._rangeCache={start:n.start,end:r.end.line<n.start.line?n.start:r.end}}return this._rangeCache}return{start:le.create(0,0),end:le.create(0,0)}}get firstNonHiddenNode(){for(const e of this.content)if(!e.hidden)return e;return this.content[0]}get lastNonHiddenNode(){for(let e=this.content.length-1;e>=0;e--){const t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}}class Mt extends Array{constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,Mt.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,t,...n){return this.addParents(n),super.splice(e,t,...n)}addParents(e){for(const t of e)t.container=this.parent}}class Dt extends Pt{get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=null!=e?e:""}}const Ut=Symbol("Datatype");function Ft(e){return e.$type===Ut}const Gt=e=>e.endsWith("\u200b")?e:e+"\u200b";class Kt{constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;const t=this.lexer.definition,n="production"===e.LanguageMetaData.mode;this.wrapper=new zt(t,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}}class Bt extends Kt{get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new bt,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){const n=this.computeRuleType(e),r=this.wrapper.DEFINE_RULE(Gt(e.name),this.startImplementation(n,t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}computeRuleType(e){if(!e.fragment){if((0,i.Xq)(e))return Ut;{const t=(0,i.PV)(e);return null!=t?t:e.name}}}parse(e,t={}){this.nodeBuilder.buildRootNode(e);const n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;const r=t.rule?this.allRules.get(t.rule):this.mainRule;if(!r)throw new Error(t.rule?`No rule found with name '${t.rule}'`:"No main rule available.");const i=r.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:i,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,t){return n=>{const r=!this.isRecording()&&void 0!==e;if(r){const t={$type:e};this.stack.push(t),e===Ut&&(t.value="")}let i;try{i=t(n)}catch(s){i=void 0}return void 0===i&&r&&(i=this.construct()),i}}extractHiddenTokens(e){const t=this.lexerResult.hidden;if(!t.length)return[];const n=e.startOffset;for(let r=0;r<t.length;r++){if(t[r].startOffset>n)return t.splice(0,r)}return t.splice(0,t.length)}consume(e,t,n){const r=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(r)){const e=this.extractHiddenTokens(r);this.nodeBuilder.addHiddenNodes(e);const t=this.nodeBuilder.buildLeafNode(r,n),{assignment:i,isCrossRef:s}=this.getAssignment(n),o=this.current;if(i){const e=(0,a.wb)(n)?r.image:this.converter.convert(r.image,t);this.assign(i.operator,i.feature,e,t,s)}else if(Ft(o)){let e=r.image;(0,a.wb)(n)||(e=this.converter.convert(e,t).toString()),o.value+=e}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&"number"==typeof e.endOffset&&!isNaN(e.endOffset)}subrule(e,t,n,r,i){let s;this.isRecording()||n||(s=this.nodeBuilder.buildCompositeNode(r));const a=this.wrapper.wrapSubrule(e,t,i);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(a,r,s)}performSubruleAssignment(e,t,n){const{assignment:r,isCrossRef:i}=this.getAssignment(t);if(r)this.assign(r.operator,r.feature,e,n,i);else if(!r){const t=this.current;if(Ft(t))t.value+=e.toString();else if("object"==typeof e&&e){const n=this.assignWithoutOverride(e,t);this.stack.pop(),this.stack.push(n)}}}action(e,t){if(!this.isRecording()){let n=this.current;if(t.feature&&t.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode);this.nodeBuilder.buildCompositeNode(t).content.push(n.$cstNode);const r={$type:e};this.stack.push(r),this.assign(t.operator,t.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;const e=this.current;return(0,Nt.SD)(e),this.nodeBuilder.construct(e),this.stack.pop(),Ft(e)?this.converter.convert(e.value,e.$cstNode):((0,Nt.OP)(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){const t=(0,Nt.XG)(e,a.wh);this.assignmentMap.set(e,{assignment:t,isCrossRef:!!t&&(0,a._c)(t.terminal)})}return this.assignmentMap.get(e)}assign(e,t,n,r,i){const s=this.current;let a;switch(a=i&&"string"==typeof n?this.linker.buildReference(s,t,r,n):n,e){case"=":s[t]=a;break;case"?=":s[t]=!0;break;case"+=":Array.isArray(s[t])||(s[t]=[]),s[t].push(a)}}assignWithoutOverride(e,t){for(const[r,i]of Object.entries(t)){const t=e[r];void 0===t?e[r]=i:Array.isArray(t)&&Array.isArray(i)&&(i.push(...t),e[r]=i)}const n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}}class Vt{buildMismatchTokenMessage(e){return o.my.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return o.my.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return o.my.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return o.my.buildEarlyExitMessage(e)}}class jt extends Vt{buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}}class Ht extends Kt{constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();const t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){const n=this.wrapper.DEFINE_RULE(Gt(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{const n=this.keepStackSize();try{e(t)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){const e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,n){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,n,r,i){this.before(r),this.wrapper.wrapSubrule(e,t,i),this.after(r)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){const t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}}const Wt={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new jt};class zt extends o.jr{constructor(e,t){const n=t&&"maxLookahead"in t;super(e,Object.assign(Object.assign(Object.assign({},Wt),{lookaheadStrategy:n?new o.T6({maxLookahead:t.maxLookahead}):new V({logging:t.skipValidations?()=>{}:void 0})}),t))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t){return this.RULE(e,t)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t)}wrapSubrule(e,t,n){return this.subrule(e,t,{ARGS:[n]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}}var Yt=n(1564),Xt=n(1719);function qt(e,t,n){return function(e,t){const n=(0,i.YV)(t,!1),r=(0,Xt.Td)(t.rules).filter(a.s7).filter(e=>n.has(e));for(const i of r){const t=Object.assign(Object.assign({},e),{consume:1,optional:1,subrule:1,many:1,or:1});e.parser.rule(i,Qt(t,i.definition))}}({parser:t,tokens:n,ruleNames:new Map},e),t}function Qt(e,t,n=!1){let r;if((0,a.wb)(t))r=function(e,t){const n=e.consume++,r=e.tokens[t.value];if(!r)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(n,r,t)}(e,t);else if((0,a.ve)(t))r=function(e,t){const n=(0,i.Uz)(t);return()=>e.parser.action(n,t)}(e,t);else if((0,a.wh)(t))r=Qt(e,t.terminal);else if((0,a._c)(t))r=en(e,t);else if((0,a.$g)(t))r=function(e,t){const n=t.rule.ref;if((0,a.s7)(n)){const r=e.subrule++,i=n.fragment,s=t.arguments.length>0?function(e,t){const n=t.map(e=>Zt(e.value));return t=>{const r={};for(let i=0;i<n.length;i++){const s=e.parameters[i],a=n[i];r[s.name]=a(t)}return r}}(n,t.arguments):()=>({});return a=>e.parser.subrule(r,nn(e,n),i,t,s(a))}if((0,a.rE)(n)){const r=e.consume++,i=rn(e,n.name);return()=>e.parser.consume(r,i,t)}if(!n)throw new Yt.W(t.$cstNode,`Undefined rule: ${t.rule.$refText}`);(0,Yt.d)(n)}(e,t);else if((0,a.jp)(t))r=function(e,t){if(1===t.elements.length)return Qt(e,t.elements[0]);{const n=[];for(const i of t.elements){const t={ALT:Qt(e,i,!0)},r=Jt(i);r&&(t.GATE=Zt(r)),n.push(t)}const r=e.or++;return t=>e.parser.alternatives(r,n.map(e=>{const n={ALT:()=>e.ALT(t)},r=e.GATE;return r&&(n.GATE=()=>r(t)),n}))}}(e,t);else if((0,a.cY)(t))r=function(e,t){if(1===t.elements.length)return Qt(e,t.elements[0]);const n=[];for(const o of t.elements){const t={ALT:Qt(e,o,!0)},r=Jt(o);r&&(t.GATE=Zt(r)),n.push(t)}const r=e.or++,i=(e,t)=>`uGroup_${e}_${t.getRuleStack().join("-")}`,s=t=>e.parser.alternatives(r,n.map((n,s)=>{const a={ALT:()=>!0},o=e.parser;a.ALT=()=>{if(n.ALT(t),!o.isRecording()){const e=i(r,o);o.unorderedGroups.get(e)||o.unorderedGroups.set(e,[]);const t=o.unorderedGroups.get(e);void 0===(null==t?void 0:t[s])&&(t[s]=!0)}};const l=n.GATE;return a.GATE=l?()=>l(t):()=>{const e=o.unorderedGroups.get(i(r,o));return!(null==e?void 0:e[s])},a})),a=tn(e,Jt(t),s,"*");return t=>{a(t),e.parser.isRecording()||e.parser.unorderedGroups.delete(i(r,e.parser))}}(e,t);else if((0,a.IZ)(t))r=function(e,t){const n=t.elements.map(t=>Qt(e,t));return e=>n.forEach(t=>t(e))}(e,t);else{if(!(0,a.FO)(t))throw new Yt.W(t.$cstNode,`Unexpected element type: ${t.$type}`);{const n=e.consume++;r=()=>e.parser.consume(n,o.LT,t)}}return tn(e,n?void 0:Jt(t),r,t.cardinality)}function Zt(e){if((0,a.RP)(e)){const t=Zt(e.left),n=Zt(e.right);return e=>t(e)||n(e)}if((0,a.Tu)(e)){const t=Zt(e.left),n=Zt(e.right);return e=>t(e)&&n(e)}if((0,a.Ct)(e)){const t=Zt(e.value);return e=>!t(e)}if((0,a.TF)(e)){const t=e.parameter.ref.name;return e=>void 0!==e&&!0===e[t]}if((0,a.Cz)(e)){const t=Boolean(e.true);return()=>t}(0,Yt.d)(e)}function Jt(e){if((0,a.IZ)(e))return e.guardCondition}function en(e,t,n=t.terminal){if(n){if((0,a.$g)(n)&&(0,a.s7)(n.rule.ref)){const r=n.rule.ref,i=e.subrule++;return n=>e.parser.subrule(i,nn(e,r),!1,t,n)}if((0,a.$g)(n)&&(0,a.rE)(n.rule.ref)){const r=e.consume++,i=rn(e,n.rule.ref.name);return()=>e.parser.consume(r,i,t)}if((0,a.wb)(n)){const r=e.consume++,i=rn(e,n.value);return()=>e.parser.consume(r,i,t)}throw new Error("Could not build cross reference parser")}{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);const n=(0,i.U5)(t.type.ref),r=null==n?void 0:n.terminal;if(!r)throw new Error("Could not find name assignment for type: "+(0,i.Uz)(t.type.ref));return en(e,t,r)}}function tn(e,t,n,r){const i=t&&Zt(t);if(!r){if(i){const t=e.or++;return r=>e.parser.alternatives(t,[{ALT:()=>n(r),GATE:()=>i(r)},{ALT:(0,o.mT)(),GATE:()=>!i(r)}])}return n}if("*"===r){const t=e.many++;return r=>e.parser.many(t,{DEF:()=>n(r),GATE:i?()=>i(r):void 0})}if("+"===r){const t=e.many++;if(i){const r=e.or++;return s=>e.parser.alternatives(r,[{ALT:()=>e.parser.atLeastOne(t,{DEF:()=>n(s)}),GATE:()=>i(s)},{ALT:(0,o.mT)(),GATE:()=>!i(s)}])}return r=>e.parser.atLeastOne(t,{DEF:()=>n(r)})}if("?"===r){const t=e.optional++;return r=>e.parser.optional(t,{DEF:()=>n(r),GATE:i?()=>i(r):void 0})}(0,Yt.d)(r)}function nn(e,t){const n=function(e,t){if((0,a.s7)(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let n=t,r=n.$container,i=t.$type;for(;!(0,a.s7)(r);){if((0,a.IZ)(r)||(0,a.jp)(r)||(0,a.cY)(r)){i=r.elements.indexOf(n).toString()+":"+i}n=r,r=r.$container}return i=r.name+":"+i,e.ruleNames.set(t,i),i}}(e,t),r=e.parser.getRule(n);if(!r)throw new Error(`Rule "${n}" not found."`);return r}function rn(e,t){const n=e.tokens[t];if(!n)throw new Error(`Token "${t}" not found."`);return n}function sn(e){const t=function(e){const t=e.Grammar,n=e.parser.Lexer,r=new Bt(e);return qt(t,r,n.definition)}(e);return t.finalize(),t}var an=n(1945),on=n(5033),ln=n(9850),cn=n(2479);let un=0,dn=10;const hn=Symbol("OperationCancelled");function fn(e){return e===hn}async function pn(e){if(e===ln.XO.None)return;const t=performance.now();if(t-un>=dn&&(un=t,await new Promise(e=>{"undefined"==typeof setImmediate?setTimeout(e,0):setImmediate(e)}),un=performance.now()),e.isCancellationRequested)throw hn}class mn{constructor(){this.promise=new Promise((e,t)=>{this.resolve=t=>(e(t),this),this.reject=e=>(t(e),this)})}}class gn{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){const t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){for(const n of e)if(gn.isIncremental(n)){const e=Rn(n.range),t=this.offsetAt(e.start),r=this.offsetAt(e.end);this._content=this._content.substring(0,t)+n.text+this._content.substring(r,this._content.length);const i=Math.max(e.start.line,0),s=Math.max(e.end.line,0);let a=this._lineOffsets;const o=An(n.text,!1,t);if(s-i===o.length)for(let n=0,c=o.length;n<c;n++)a[n+i+1]=o[n];else o.length<1e4?a.splice(i+1,s-i,...o):this._lineOffsets=a=a.slice(0,i+1).concat(o,a.slice(s+1));const l=n.text.length-(r-t);if(0!==l)for(let n=i+1+o.length,c=a.length;n<c;n++)a[n]=a[n]+l}else{if(!gn.isFull(n))throw new Error("Unknown change event received");this._content=n.text,this._lineOffsets=void 0}this._version=t}getLineOffsets(){return void 0===this._lineOffsets&&(this._lineOffsets=An(this._content,!0)),this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);const t=this.getLineOffsets();let n=0,r=t.length;if(0===r)return{line:0,character:e};for(;n<r;){const i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}const i=n-1;return{line:i,character:(e=this.ensureBeforeEOL(e,t[i]))-t[i]}}offsetAt(e){const t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;const n=t[e.line];if(e.character<=0)return n;const r=e.line+1<t.length?t[e.line+1]:this._content.length,i=Math.min(n+e.character,r);return this.ensureBeforeEOL(i,n)}ensureBeforeEOL(e,t){for(;e>t&&vn(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)}static isFull(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength}}var yn;function Tn(e,t){if(e.length<=1)return e;const n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);Tn(r,t),Tn(i,t);let s=0,a=0,o=0;for(;s<r.length&&a<i.length;){const n=t(r[s],i[a]);e[o++]=n<=0?r[s++]:i[a++]}for(;s<r.length;)e[o++]=r[s++];for(;a<i.length;)e[o++]=i[a++];return e}function An(e,t,n=0){const r=t?[n]:[];for(let i=0;i<e.length;i++){const t=e.charCodeAt(i);vn(t)&&(13===t&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,r.push(n+i+1))}return r}function vn(e){return 13===e||10===e}function Rn(e){const t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function $n(e){const t=Rn(e.range);return t!==e.range?{newText:e.newText,range:t}:e}!function(e){e.create=function(e,t,n,r){return new gn(e,t,n,r)},e.update=function(e,t,n){if(e instanceof gn)return e.update(t,n),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){const n=e.getText(),r=Tn(t.map($n),(e,t)=>{const n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n});let i=0;const s=[];for(const a of r){const t=e.offsetAt(a.range.start);if(t<i)throw new Error("Overlapping edit");t>i&&s.push(n.substring(i,t)),a.newText.length&&s.push(a.newText),i=e.offsetAt(a.range.end)}return s.push(n.substr(i)),s.join("")}}(yn||(yn={}));var En,kn=n(7608);!function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"}(En||(En={}));class xn{constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=ln.XO.None){const n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,t)}fromTextDocument(e,t,n){return t=null!=t?t:kn.r.parse(e.uri),ln.XO.is(n)?this.createAsync(t,e,n):this.create(t,e,n)}fromString(e,t,n){return ln.XO.is(n)?this.createAsync(t,e,n):this.create(t,e,n)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,n){if("string"==typeof t){const r=this.parse(e,t,n);return this.createLangiumDocument(r,e,void 0,t)}if("$model"in t){const n={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}{const r=this.parse(e,t.getText(),n);return this.createLangiumDocument(r,e,t)}}async createAsync(e,t,n){if("string"==typeof t){const r=await this.parseAsync(e,t,n);return this.createLangiumDocument(r,e,void 0,t)}{const r=await this.parseAsync(e,t.getText(),n);return this.createLangiumDocument(r,e,t)}}createLangiumDocument(e,t,n,r){let i;if(n)i={parseResult:e,uri:t,state:En.Parsed,references:[],textDocument:n};else{const n=this.createTextDocumentGetter(t,r);i={parseResult:e,uri:t,state:En.Parsed,references:[],get textDocument(){return n()}}}return e.value.$document=i,i}async update(e,t){var n,r;const i=null===(n=e.parseResult.value.$cstNode)||void 0===n?void 0:n.root.fullText,s=null===(r=this.textDocuments)||void 0===r?void 0:r.get(e.uri.toString()),a=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{const t=this.createTextDocumentGetter(e.uri,a);Object.defineProperty(e,"textDocument",{get:t})}return i!==a&&(e.parseResult=await this.parseAsync(e.uri,a,t),e.parseResult.value.$document=e),e.state=En.Parsed,e}parse(e,t,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,n)}parseAsync(e,t,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,n)}createTextDocumentGetter(e,t){const n=this.serviceRegistry;let r;return()=>null!=r?r:r=yn.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,null!=t?t:"")}}class In{constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return(0,Xt.Td)(this.documentMap.values())}addDocument(e){const t=e.uri.toString();if(this.documentMap.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentMap.set(t,e)}getDocument(e){const t=e.toString();return this.documentMap.get(t)}async getOrCreateDocument(e,t){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(n),n)}createDocument(e,t,n){if(n)return this.langiumDocumentFactory.fromString(t,e,n).then(e=>(this.addDocument(e),e));{const n=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(n),n}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){const t=e.toString(),n=this.documentMap.get(t);if(n){this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=En.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0}return n}deleteDocument(e){const t=e.toString(),n=this.documentMap.get(t);return n&&(n.state=En.Changed,this.documentMap.delete(t)),n}}const Sn=Symbol("ref_resolving");class Nn{constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,t=ln.XO.None){for(const n of(0,Nt.jm)(e.parseResult.value))await pn(t),(0,Nt.DM)(n).forEach(t=>this.doLink(t,e))}doLink(e,t){var n;const r=e.reference;if(void 0===r._ref){r._ref=Sn;try{const t=this.getCandidate(e);if((0,cn.Zl)(t))r._ref=t;else if(r._nodeDescription=t,this.langiumDocuments().hasDocument(t.documentUri)){const n=this.loadAstNode(t);r._ref=null!=n?n:this.createLinkingError(e,t)}else r._ref=void 0}catch(i){console.error(`An error occurred while resolving reference to '${r.$refText}':`,i);const t=null!==(n=i.message)&&void 0!==n?n:String(i);r._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${r.$refText}': ${t}`})}t.references.push(r)}}unlink(e){for(const t of e.references)delete t._ref,delete t._nodeDescription;e.references=[]}getCandidate(e){const t=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return null!=t?t:this.createLinkingError(e)}buildReference(e,t,n,r){const i=this,s={$refNode:n,$refText:r,get ref(){var n;if((0,cn.ng)(this._ref))return this._ref;if((0,cn.Nr)(this._nodeDescription)){const n=i.loadAstNode(this._nodeDescription);this._ref=null!=n?n:i.createLinkingError({reference:s,container:e,property:t},this._nodeDescription)}else if(void 0===this._ref){this._ref=Sn;const r=(0,Nt.cQ)(e).$document,a=i.getLinkedNode({reference:s,container:e,property:t});if(a.error&&r&&r.state<En.ComputedScopes)return this._ref=void 0;this._ref=null!==(n=a.node)&&void 0!==n?n:a.error,this._nodeDescription=a.descr,null==r||r.references.push(this)}else if(this._ref===Sn)throw new Error(`Cyclic reference resolution detected: ${i.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`);return(0,cn.ng)(this._ref)?this._ref:void 0},get $nodeDescription(){return this._nodeDescription},get error(){return(0,cn.Zl)(this._ref)?this._ref:void 0}};return s}getLinkedNode(e){var t;try{const t=this.getCandidate(e);if((0,cn.Zl)(t))return{error:t};const n=this.loadAstNode(t);return n?{node:n,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(n){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,n);const r=null!==(t=n.message)&&void 0!==t?t:String(n);return{error:Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`})}}}loadAstNode(e){if(e.node)return e.node;const t=this.langiumDocuments().getDocument(e.documentUri);return t?this.astNodeLocator.getAstNode(t.parseResult.value,e.path):void 0}createLinkingError(e,t){const n=(0,Nt.cQ)(e.container).$document;n&&n.state<En.ComputedScopes&&console.warn(`Attempted reference resolution before document reached ComputedScopes state (${n.uri}).`);const r=this.reflection.getReferenceType(e);return Object.assign(Object.assign({},e),{message:`Could not resolve reference to ${r} named '${e.reference.$refText}'.`,targetDescription:t})}}class Cn{getName(e){if(function(e){return"string"==typeof e.name}(e))return e.name}getNameNode(e){return(0,i.qO)(e.$cstNode,"name")}}var wn;!function(e){e.basename=kn.A.basename,e.dirname=kn.A.dirname,e.extname=kn.A.extname,e.joinPath=kn.A.joinPath,e.resolvePath=kn.A.resolvePath,e.equals=function(e,t){return(null==e?void 0:e.toString())===(null==t?void 0:t.toString())},e.relative=function(e,t){const n="string"==typeof e?e:e.path,r="string"==typeof t?t:t.path,i=n.split("/").filter(e=>e.length>0),s=r.split("/").filter(e=>e.length>0);let a=0;for(;a<i.length&&i[a]===s[a];a++);return"../".repeat(i.length-a)+s.slice(a).join("/")},e.normalize=function(e){return kn.r.parse(e.toString()).toString()}}(wn||(wn={}));class Ln{constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){const t=(0,i.Rp)(e),n=e.astNode;if(t&&n){const r=n[t.feature];if((0,cn.A_)(r))return r.ref;if(Array.isArray(r))for(const t of r)if((0,cn.A_)(t)&&t.$refNode&&t.$refNode.offset<=e.offset&&t.$refNode.end>=e.end)return t.ref}if(n){const t=this.nameProvider.getNameNode(n);if(t&&(t===e||(0,r.pO)(e,t)))return n}}}findDeclarationNode(e){const t=this.findDeclaration(e);if(null==t?void 0:t.$cstNode){const e=this.nameProvider.getNameNode(t);return null!=e?e:t.$cstNode}}findReferences(e,t){const n=[];if(t.includeDeclaration){const t=this.getReferenceToSelf(e);t&&n.push(t)}let r=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(r=r.filter(e=>wn.equals(e.sourceUri,t.documentUri))),n.push(...r),(0,Xt.Td)(n)}getReferenceToSelf(e){const t=this.nameProvider.getNameNode(e);if(t){const n=(0,Nt.YE)(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:(0,r.SX)(t),local:!0}}}}class bn{constructor(e){if(this.map=new Map,e)for(const[t,n]of e)this.add(t,n)}get size(){return Xt.iD.sum((0,Xt.Td)(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(void 0===t)return this.map.delete(e);{const n=this.map.get(e);if(n){const r=n.indexOf(t);if(r>=0)return 1===n.length?this.map.delete(e):n.splice(r,1),!0}return!1}}get(e){var t;return null!==(t=this.map.get(e))&&void 0!==t?t:[]}has(e,t){if(void 0===t)return this.map.has(e);{const n=this.map.get(e);return!!n&&n.indexOf(t)>=0}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,n)=>t.forEach(t=>e(t,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return(0,Xt.Td)(this.map.entries()).flatMap(([e,t])=>t.map(t=>[e,t]))}keys(){return(0,Xt.Td)(this.map.keys())}values(){return(0,Xt.Td)(this.map.values()).flat()}entriesGroupedByKey(){return(0,Xt.Td)(this.map.entries())}}class On{get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(const[t,n]of e)this.set(t,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){const t=this.map.get(e);return void 0!==t&&(this.map.delete(e),this.inverse.delete(t),!0)}}class _n{constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,t=ln.XO.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,t)}async computeExportsForNode(e,t,n=Nt.VN,r=ln.XO.None){const i=[];this.exportNode(e,i,t);for(const s of n(e))await pn(r),this.exportNode(s,i,t);return i}exportNode(e,t,n){const r=this.nameProvider.getName(e);r&&t.push(this.descriptions.createDescription(e,r,n))}async computeLocalScopes(e,t=ln.XO.None){const n=e.parseResult.value,r=new bn;for(const i of(0,Nt.Uo)(n))await pn(t),this.processNode(i,e,r);return r}processNode(e,t,n){const r=e.$container;if(r){const i=this.nameProvider.getName(e);i&&n.add(r,this.descriptions.createDescription(e,i,t))}}}class Pn{constructor(e,t,n){var r;this.elements=e,this.outerScope=t,this.caseInsensitive=null!==(r=null==n?void 0:n.caseInsensitive)&&void 0!==r&&r}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){const t=this.caseInsensitive?this.elements.find(t=>t.name.toLowerCase()===e.toLowerCase()):this.elements.find(t=>t.name===e);return t||(this.outerScope?this.outerScope.getElement(e):void 0)}}class Mn{constructor(e,t,n){var r;this.elements=new Map,this.caseInsensitive=null!==(r=null==n?void 0:n.caseInsensitive)&&void 0!==r&&r;for(const i of e){const e=this.caseInsensitive?i.name.toLowerCase():i.name;this.elements.set(e,i)}this.outerScope=t}getElement(e){const t=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(t);return n||(this.outerScope?this.outerScope.getElement(e):void 0)}getAllElements(){let e=(0,Xt.Td)(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}}class Dn{constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}}class Un extends Dn{constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){const n=t();return this.cache.set(e,n),n}}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}}class Fn extends Dn{constructor(e){super(),this.cache=new Map,this.converter=null!=e?e:e=>e}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,n){this.throwIfDisposed(),this.cacheForContext(e).set(t,n)}get(e,t,n){this.throwIfDisposed();const r=this.cacheForContext(e);if(r.has(t))return r.get(t);if(n){const e=n();return r.set(t,e),e}}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){const t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){const t=this.converter(e);let n=this.cache.get(t);return n||(n=new Map,this.cache.set(t,n)),n}}class Gn extends Un{constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((e,t)=>{t.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}class Kn{constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new Gn(e.shared)}getScope(e){const t=[],n=this.reflection.getReferenceType(e),r=(0,Nt.YE)(e.container).precomputedScopes;if(r){let i=e.container;do{const e=r.get(i);e.length>0&&t.push((0,Xt.Td)(e).filter(e=>this.reflection.isSubtype(e.type,n))),i=i.$container}while(i)}let i=this.getGlobalScope(n,e);for(let s=t.length-1;s>=0;s--)i=this.createScope(t[s],i);return i}createScope(e,t,n){return new Pn((0,Xt.Td)(e),t,n)}createScopeForNodes(e,t,n){const r=(0,Xt.Td)(e).map(e=>{const t=this.nameProvider.getName(e);if(t)return this.descriptions.createDescription(e,t)}).nonNullable();return new Pn(r,t,n)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new Mn(this.indexManager.allElements(e)))}}function Bn(e){return"object"==typeof e&&!!e&&("$ref"in e||"$error"in e)}class Vn{constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){const n=null!=t?t:{},r=null==t?void 0:t.replacer,i=(e,t)=>this.replacer(e,t,n),s=r?(e,t)=>r(e,t,i):i;try{return this.currentDocument=(0,Nt.YE)(e),JSON.stringify(e,s,null==t?void 0:t.space)}finally{this.currentDocument=void 0}}deserialize(e,t){const n=null!=t?t:{},r=JSON.parse(e);return this.linkNode(r,r,n),r}replacer(e,t,{refText:n,sourceText:r,textRegions:i,comments:s,uriConverter:a}){var o,l,c,u;if(!this.ignoreProperties.has(e)){if((0,cn.A_)(t)){const e=t.ref,r=n?t.$refText:void 0;if(e){const n=(0,Nt.YE)(e);let i="";this.currentDocument&&this.currentDocument!==n&&(i=a?a(n.uri,t):n.uri.toString());return{$ref:`${i}#${this.astNodeLocator.getAstNodePath(e)}`,$refText:r}}return{$error:null!==(l=null===(o=t.error)||void 0===o?void 0:o.message)&&void 0!==l?l:"Could not resolve reference",$refText:r}}if((0,cn.ng)(t)){let n;if(i&&(n=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},t)),e&&!t.$document||!(null==n?void 0:n.$textRegion)||(n.$textRegion.documentURI=null===(c=this.currentDocument)||void 0===c?void 0:c.uri.toString())),r&&!e&&(null!=n||(n=Object.assign({},t)),n.$sourceText=null===(u=t.$cstNode)||void 0===u?void 0:u.text),s){null!=n||(n=Object.assign({},t));const e=this.commentProvider.getComment(t);e&&(n.$comment=e.replace(/\r/g,""))}return null!=n?n:t}return t}}addAstNodeRegionWithAssignmentsTo(e){const t=e=>({offset:e.offset,end:e.end,length:e.length,range:e.range});if(e.$cstNode){const n=(e.$textRegion=t(e.$cstNode)).assignments={};return Object.keys(e).filter(e=>!e.startsWith("$")).forEach(r=>{const s=(0,i.Bd)(e.$cstNode,r).map(t);0!==s.length&&(n[r]=s)}),e}}linkNode(e,t,n,r,i,s){for(const[o,l]of Object.entries(e))if(Array.isArray(l))for(let r=0;r<l.length;r++){const i=l[r];Bn(i)?l[r]=this.reviveReference(e,o,t,i,n):(0,cn.ng)(i)&&this.linkNode(i,t,n,e,o,r)}else Bn(l)?e[o]=this.reviveReference(e,o,t,l,n):(0,cn.ng)(l)&&this.linkNode(l,t,n,e,o);const a=e;a.$container=r,a.$containerProperty=i,a.$containerIndex=s}reviveReference(e,t,n,r,i){let s=r.$refText,a=r.$error;if(r.$ref){const e=this.getRefNode(n,r.$ref,i.uriConverter);if((0,cn.ng)(e))return s||(s=this.nameProvider.getName(e)),{$refText:null!=s?s:"",ref:e};a=e}if(a){const n={$refText:null!=s?s:""};return n.error={container:e,property:t,message:a,reference:n},n}}getRefNode(e,t,n){try{const r=t.indexOf("#");if(0===r){const n=this.astNodeLocator.getAstNode(e,t.substring(1));return n||"Could not resolve path: "+t}if(r<0){const e=n?n(t):kn.r.parse(t),r=this.langiumDocuments.getDocument(e);return r?r.parseResult.value:"Could not find document for URI: "+t}const i=n?n(t.substring(0,r)):kn.r.parse(t.substring(0,r)),s=this.langiumDocuments.getDocument(i);if(!s)return"Could not find document for URI: "+t;if(r===t.length-1)return s.parseResult.value;const a=this.astNodeLocator.getAstNode(s.parseResult.value,t.substring(r+1));return a||"Could not resolve URI: "+t}catch(r){return String(r)}}}class jn{get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=null==e?void 0:e.workspace.TextDocuments}register(e){const t=e.LanguageMetaData;for(const n of t.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(t.languageId,e),1===this.languageIdMap.size?this.singleton=e:this.singleton=void 0}getServices(e){var t,n;if(void 0!==this.singleton)return this.singleton;if(0===this.languageIdMap.size)throw new Error("The service registry is empty. Use `register` to register the services of a language.");const r=null===(n=null===(t=this.textDocuments)||void 0===t?void 0:t.get(e))||void 0===n?void 0:n.languageId;if(void 0!==r){const e=this.languageIdMap.get(r);if(e)return e}const i=wn.extname(e),s=this.fileExtensionMap.get(i);if(!s)throw r?new Error(`The service registry contains no services for the extension '${i}' for language '${r}'.`):new Error(`The service registry contains no services for the extension '${i}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch(t){return!1}}get all(){return Array.from(this.languageIdMap.values())}}function Hn(e){return{code:e}}var Wn,zn;!function(e){e.all=["fast","slow","built-in"]}(Wn||(Wn={}));class Yn{constructor(e){this.entries=new bn,this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,t=this,n="fast"){if("built-in"===n)throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(const[r,i]of Object.entries(e)){const e=i;if(Array.isArray(e))for(const i of e){const e={check:this.wrapValidationException(i,t),category:n};this.addEntry(r,e)}else if("function"==typeof e){const i={check:this.wrapValidationException(e,t),category:n};this.addEntry(r,i)}else(0,Yt.d)(e)}}wrapValidationException(e,t){return async(n,r,i)=>{await this.handleException(()=>e.call(t,n,r,i),"An error occurred during validation",r,n)}}async handleException(e,t,n,r){try{await e()}catch(i){if(fn(i))throw i;console.error(`${t}:`,i),i instanceof Error&&i.stack&&console.error(i.stack);n("error",`${t}: ${i instanceof Error?i.message:String(i)}`,{node:r})}}addEntry(e,t){if("AstNode"!==e)for(const n of this.reflection.getAllSubTypes(e))this.entries.add(n,t);else this.entries.add("AstNode",t)}getChecks(e,t){let n=(0,Xt.Td)(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(n=n.filter(e=>t.includes(e.category))),n.map(e=>e.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,n){return async(r,i,s,a)=>{await this.handleException(()=>e.call(n,r,i,s,a),t,i,r)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}class Xn{constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,t={},n=ln.XO.None){const r=e.parseResult,i=[];if(await pn(n),!t.categories||t.categories.includes("built-in")){if(this.processLexingErrors(r,i,t),t.stopAfterLexingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.LexingError}))return i;if(this.processParsingErrors(r,i,t),t.stopAfterParsingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.ParsingError}))return i;if(this.processLinkingErrors(e,i,t),t.stopAfterLinkingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.LinkingError}))return i}try{i.push(...await this.validateAst(r.value,t,n))}catch(s){if(fn(s))throw s;console.error("An error occurred during validation:",s)}return await pn(n),i}processLexingErrors(e,t,n){var r,i,s;const a=[...e.lexerErrors,...null!==(i=null===(r=e.lexerReport)||void 0===r?void 0:r.diagnostics)&&void 0!==i?i:[]];for(const o of a){const e=null!==(s=o.severity)&&void 0!==s?s:"error",n={severity:Qn(e),range:{start:{line:o.line-1,character:o.column-1},end:{line:o.line-1,character:o.column+o.length-1}},message:o.message,data:Zn(e),source:this.getSource()};t.push(n)}}processParsingErrors(e,t,n){for(const i of e.parserErrors){let e;if(isNaN(i.token.startOffset)){if("previousToken"in i){const t=i.previousToken;if(isNaN(t.startOffset)){const t={line:0,character:0};e={start:t,end:t}}else{const n={line:t.endLine-1,character:t.endColumn};e={start:n,end:n}}}}else e=(0,r.wf)(i.token);if(e){const n={severity:Qn("error"),range:e,message:i.message,data:Hn(zn.ParsingError),source:this.getSource()};t.push(n)}}}processLinkingErrors(e,t,n){for(const r of e.references){const e=r.error;if(e){const n={node:e.container,property:e.property,index:e.index,data:{code:zn.LinkingError,containerType:e.container.$type,property:e.property,refText:e.reference.$refText}};t.push(this.toDiagnostic("error",e.message,n))}}}async validateAst(e,t,n=ln.XO.None){const r=[],i=(e,t,n)=>{r.push(this.toDiagnostic(e,t,n))};return await this.validateAstBefore(e,t,i,n),await this.validateAstNodes(e,t,i,n),await this.validateAstAfter(e,t,i,n),r}async validateAstBefore(e,t,n,r=ln.XO.None){var i;const s=this.validationRegistry.checksBefore;for(const a of s)await pn(r),await a(e,n,null!==(i=t.categories)&&void 0!==i?i:[],r)}async validateAstNodes(e,t,n,r=ln.XO.None){await Promise.all((0,Nt.jm)(e).map(async e=>{await pn(r);const i=this.validationRegistry.getChecks(e.$type,t.categories);for(const t of i)await t(e,n,r)}))}async validateAstAfter(e,t,n,r=ln.XO.None){var i;const s=this.validationRegistry.checksAfter;for(const a of s)await pn(r),await a(e,n,null!==(i=t.categories)&&void 0!==i?i:[],r)}toDiagnostic(e,t,n){return{message:t,range:qn(n),severity:Qn(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}}function qn(e){if(e.range)return e.range;let t;return"string"==typeof e.property?t=(0,i.qO)(e.node.$cstNode,e.property,e.index):"string"==typeof e.keyword&&(t=(0,i.SS)(e.node.$cstNode,e.keyword,e.index)),null!=t||(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function Qn(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function Zn(e){switch(e){case"error":return Hn(zn.LexingError);case"warning":return Hn(zn.LexingWarning);case"info":return Hn(zn.LexingInfo);case"hint":return Hn(zn.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}!function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"}(zn||(zn={}));class Jn{constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,n){const i=null!=n?n:(0,Nt.YE)(e);null!=t||(t=this.nameProvider.getName(e));const s=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${s} has no name.`);let a;const o=()=>{var t;return null!=a?a:a=(0,r.SX)(null!==(t=this.nameProvider.getNameNode(e))&&void 0!==t?t:e.$cstNode)};return{node:e,name:t,get nameSegment(){return o()},selectionSegment:(0,r.SX)(e.$cstNode),type:e.$type,documentUri:i.uri,path:s}}}class er{constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=ln.XO.None){const n=[],r=e.parseResult.value;for(const i of(0,Nt.jm)(r))await pn(t),(0,Nt.DM)(i).filter(e=>!(0,cn.Zl)(e)).forEach(e=>{const t=this.createDescription(e);t&&n.push(t)});return n}createDescription(e){const t=e.reference.$nodeDescription,n=e.reference.$refNode;if(!t||!n)return;const i=(0,Nt.YE)(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:t.documentUri,targetPath:t.path,segment:(0,r.SX)(n),local:wn.equals(t.documentUri,i)}}}class tr{constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){const t=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return t+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return void 0!==t?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((e,t)=>{if(!e||0===t.length)return e;const n=t.indexOf(this.indexSeparator);if(n>0){const r=t.substring(0,n),i=parseInt(t.substring(n+1)),s=e[r];return null==s?void 0:s[i]}return e[t]},e)}}var nr,rr=n(2676);class ir{constructor(e){this._ready=new mn,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new rr.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var t,n;this.workspaceConfig=null!==(n=null===(t=e.capabilities.workspace)||void 0===t?void 0:t.configuration)&&void 0!==n&&n}async initialized(e){if(this.workspaceConfig){if(e.register){const t=this.serviceRegistry.all;e.register({section:t.map(e=>this.toSectionName(e.LanguageMetaData.languageId))})}if(e.fetchConfiguration){const t=this.serviceRegistry.all.map(e=>({section:this.toSectionName(e.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(t);t.forEach((e,t)=>{this.updateSectionConfiguration(e.section,n[t])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(t=>{const n=e.settings[t];this.updateSectionConfiguration(t,n),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:n})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;const n=this.toSectionName(e);if(this.settings[n])return this.settings[n][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}!function(e){e.create=function(e){return{dispose:async()=>await e()}}}(nr||(nr={}));class sr{constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new bn,this.documentPhaseListeners=new bn,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=En.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},n=ln.XO.None){var r,i;for(const s of e){const e=s.uri.toString();if(s.state===En.Validated){if("boolean"==typeof t.validation&&t.validation)s.state=En.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(e);else if("object"==typeof t.validation){const n=this.buildState.get(e),a=null===(r=null==n?void 0:n.result)||void 0===r?void 0:r.validationChecks;if(a){const r=(null!==(i=t.validation.categories)&&void 0!==i?i:Wn.all).filter(e=>!a.includes(e));r.length>0&&(this.buildState.set(e,{completed:!1,options:{validation:Object.assign(Object.assign({},t.validation),{categories:r})},result:n.result}),s.state=En.IndexedReferences)}}}else this.buildState.delete(e)}this.currentState=En.Changed,await this.emitUpdate(e.map(e=>e.uri),[]),await this.buildDocuments(e,t,n)}async update(e,t,n=ln.XO.None){this.currentState=En.Changed;for(const s of t)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(const s of e){if(!this.langiumDocuments.invalidateDocument(s)){const e=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);e.state=En.Changed,this.langiumDocuments.addDocument(e)}this.buildState.delete(s.toString())}const r=(0,Xt.Td)(e).concat(t).map(e=>e.toString()).toSet();this.langiumDocuments.all.filter(e=>!r.has(e.uri.toString())&&this.shouldRelink(e,r)).forEach(e=>{this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e),e.state=Math.min(e.state,En.ComputedScopes),e.diagnostics=void 0}),await this.emitUpdate(e,t),await pn(n);const i=this.sortDocuments(this.langiumDocuments.all.filter(e=>{var t;return e.state<En.Linked||!(null===(t=this.buildState.get(e.uri.toString()))||void 0===t?void 0:t.completed)}).toArray());await this.buildDocuments(i,this.updateBuildOptions,n)}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(n=>n(e,t)))}sortDocuments(e){let t=0,n=e.length-1;for(;t<n;){for(;t<e.length&&this.hasTextDocument(e[t]);)t++;for(;n>=0&&!this.hasTextDocument(e[n]);)n--;t<n&&([e[t],e[n]]=[e[n],e[t]])}return e}hasTextDocument(e){var t;return Boolean(null===(t=this.textDocuments)||void 0===t?void 0:t.get(e.uri))}shouldRelink(e,t){return!!e.references.some(e=>void 0!==e.error)||this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),nr.create(()=>{const t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}async buildDocuments(e,t,n){this.prepareBuild(e,t),await this.runCancelable(e,En.Parsed,n,e=>this.langiumDocumentFactory.update(e,n)),await this.runCancelable(e,En.IndexedContent,n,e=>this.indexManager.updateContent(e,n)),await this.runCancelable(e,En.ComputedScopes,n,async e=>{const t=this.serviceRegistry.getServices(e.uri).references.ScopeComputation;e.precomputedScopes=await t.computeLocalScopes(e,n)}),await this.runCancelable(e,En.Linked,n,e=>this.serviceRegistry.getServices(e.uri).references.Linker.link(e,n)),await this.runCancelable(e,En.IndexedReferences,n,e=>this.indexManager.updateReferences(e,n));const r=e.filter(e=>this.shouldValidate(e));await this.runCancelable(r,En.Validated,n,e=>this.validate(e,n));for(const i of e){const e=this.buildState.get(i.uri.toString());e&&(e.completed=!0)}}prepareBuild(e,t){for(const n of e){const e=n.uri.toString(),r=this.buildState.get(e);r&&!r.completed||this.buildState.set(e,{completed:!1,options:t,result:null==r?void 0:r.result})}}async runCancelable(e,t,n,r){const i=e.filter(e=>e.state<t);for(const a of i)await pn(n),await r(a),a.state=t,await this.notifyDocumentPhase(a,t,n);const s=e.filter(e=>e.state===t);await this.notifyBuildPhase(s,t,n),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),nr.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),nr.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,n){let r;if(t&&"path"in t?r=t:n=t,null!=n||(n=ln.XO.None),r){const t=this.langiumDocuments.getDocument(r);if(t&&t.state>e)return Promise.resolve(r)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(hn):new Promise((t,i)=>{const s=this.onBuildPhase(e,()=>{if(s.dispose(),a.dispose(),r){const e=this.langiumDocuments.getDocument(r);t(null==e?void 0:e.uri)}else t(void 0)}),a=n.onCancellationRequested(()=>{s.dispose(),a.dispose(),i(hn)})})}async notifyDocumentPhase(e,t,n){const r=this.documentPhaseListeners.get(t).slice();for(const s of r)try{await s(e,n)}catch(i){if(!fn(i))throw i}}async notifyBuildPhase(e,t,n){if(0===e.length)return;const r=this.buildPhaseListeners.get(t).slice();for(const i of r)await pn(n),await i(e,n)}shouldValidate(e){return Boolean(this.getBuildOptions(e).validation)}async validate(e,t){var n,r;const i=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,a="object"==typeof s?s:void 0,o=await i.validateDocument(e,a,t);e.diagnostics?e.diagnostics.push(...o):e.diagnostics=o;const l=this.buildState.get(e.uri.toString());if(l){null!==(n=l.result)&&void 0!==n||(l.result={});const e=null!==(r=null==a?void 0:a.categories)&&void 0!==r?r:Wn.all;l.result.validationChecks?l.result.validationChecks.push(...e):l.result.validationChecks=[...e]}}getBuildOptions(e){var t,n;return null!==(n=null===(t=this.buildState.get(e.uri.toString()))||void 0===t?void 0:t.options)&&void 0!==n?n:{}}}class ar{constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Fn,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){const n=(0,Nt.YE)(e).uri,r=[];return this.referenceIndex.forEach(e=>{e.forEach(e=>{wn.equals(e.targetUri,n)&&e.targetPath===t&&r.push(e)})}),(0,Xt.Td)(r)}allElements(e,t){let n=(0,Xt.Td)(this.symbolIndex.keys());return t&&(n=n.filter(e=>!t||t.has(e))),n.map(t=>this.getFileDescriptions(t,e)).flat()}getFileDescriptions(e,t){var n;if(!t)return null!==(n=this.symbolIndex.get(e))&&void 0!==n?n:[];const r=this.symbolByTypeIndex.get(e,t,()=>{var n;return(null!==(n=this.symbolIndex.get(e))&&void 0!==n?n:[]).filter(e=>this.astReflection.isSubtype(e.type,t))});return r}remove(e){const t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t),this.referenceIndex.delete(t)}async updateContent(e,t=ln.XO.None){const n=this.serviceRegistry.getServices(e.uri),r=await n.references.ScopeComputation.computeExports(e,t),i=e.uri.toString();this.symbolIndex.set(i,r),this.symbolByTypeIndex.clear(i)}async updateReferences(e,t=ln.XO.None){const n=this.serviceRegistry.getServices(e.uri),r=await n.workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),r)}isAffected(e,t){const n=this.referenceIndex.get(e.uri.toString());return!!n&&n.some(e=>!e.local&&t.has(e.targetUri.toString()))}}class or{constructor(e){this.initialBuildOptions={},this._ready=new mn,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var t;this.folders=null!==(t=e.workspaceFolders)&&void 0!==t?t:void 0}initialized(e){return this.mutex.write(e=>{var t;return this.initializeWorkspace(null!==(t=this.folders)&&void 0!==t?t:[],e)})}async initializeWorkspace(e,t=ln.XO.None){const n=await this.performStartup(e);await pn(t),await this.documentBuilder.build(n,this.initialBuildOptions,t)}async performStartup(e){const t=this.serviceRegistry.all.flatMap(e=>e.LanguageMetaData.fileExtensions),n=[],r=e=>{n.push(e),this.langiumDocuments.hasDocument(e.uri)||this.langiumDocuments.addDocument(e)};return await this.loadAdditionalDocuments(e,r),await Promise.all(e.map(e=>[e,this.getRootFolder(e)]).map(async e=>this.traverseFolder(...e,t,r))),this._ready.resolve(),n}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return kn.r.parse(e.uri)}async traverseFolder(e,t,n,r){const i=await this.fileSystemProvider.readDirectory(t);await Promise.all(i.map(async t=>{if(this.includeEntry(e,t,n))if(t.isDirectory)await this.traverseFolder(e,t.uri,n,r);else if(t.isFile){const e=await this.langiumDocuments.getOrCreateDocument(t.uri);r(e)}}))}includeEntry(e,t,n){const r=wn.basename(t.uri);if(r.startsWith("."))return!1;if(t.isDirectory)return"node_modules"!==r&&"out"!==r;if(t.isFile){const e=wn.extname(t.uri);return n.includes(e)}return!1}}class lr{buildUnexpectedCharactersMessage(e,t,n,r,i){return o.PW.buildUnexpectedCharactersMessage(e,t,n,r,i)}buildUnableToPopLexerModeMessage(e){return o.PW.buildUnableToPopLexerModeMessage(e)}}const cr={mode:"full"};class ur{constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;const t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);const n=hr(t)?Object.values(t):t,r="production"===e.LanguageMetaData.mode;this.chevrotainLexer=new o.JG(n,{positionTracking:"full",skipValidations:r,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=cr){var n,r,i;const s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:null!==(n=s.groups.hidden)&&void 0!==n?n:[],report:null===(i=(r=this.tokenBuilder).flushLexingReport)||void 0===i?void 0:i.call(r,e)}}toTokenTypeDictionary(e){if(hr(e))return e;const t=dr(e)?Object.values(e.modes).flat():e,n={};return t.forEach(e=>n[e.name]=e),n}}function dr(e){return e&&"modes"in e&&"defaultMode"in e}function hr(e){return!function(e){return Array.isArray(e)&&(0===e.length||"name"in e[0])}(e)&&!dr(e)}function fr(e,t,n){let r,i;"string"==typeof e?(i=t,r=n):(i=e.range.start,r=t),i||(i=le.create(0,0));const s=function(e){var t,n,r;const i=[];let s=e.position.line,a=e.position.character;for(let o=0;o<e.lines.length;o++){const l=0===o,c=o===e.lines.length-1;let u=e.lines[o],d=0;if(l&&e.options.start){const n=null===(t=e.options.start)||void 0===t?void 0:t.exec(u);n&&(d=n.index+n[0].length)}else{const t=null===(n=e.options.line)||void 0===n?void 0:n.exec(u);t&&(d=t.index+t[0].length)}if(c){const t=null===(r=e.options.end)||void 0===r?void 0:r.exec(u);t&&(u=u.substring(0,t.index))}u=u.substring(0,Rr(u));if(vr(u,d)>=u.length){if(i.length>0){const e=le.create(s,a);i.push({type:"break",content:"",range:ce.create(e,e)})}}else{mr.lastIndex=d;const e=mr.exec(u);if(e){const t=e[0],n=e[1],r=le.create(s,a+d),o=le.create(s,a+d+t.length);i.push({type:"tag",content:n,range:ce.create(r,o)}),d+=t.length,d=vr(u,d)}if(d<u.length){const e=u.substring(d),t=Array.from(e.matchAll(gr));i.push(...yr(t,e,s,a+d))}}s++,a=0}if(i.length>0&&"break"===i[i.length-1].type)return i.slice(0,-1);return i}({lines:pr(e),position:i,options:Sr(r)});return function(e){var t,n,r,i;const s=le.create(e.position.line,e.position.character);if(0===e.tokens.length)return new Cr([],ce.create(s,s));const a=[];for(;e.index<e.tokens.length;){const t=$r(e,a[a.length-1]);t&&a.push(t)}const o=null!==(n=null===(t=a[0])||void 0===t?void 0:t.range.start)&&void 0!==n?n:s,l=null!==(i=null===(r=a[a.length-1])||void 0===r?void 0:r.range.end)&&void 0!==i?i:s;return new Cr(a,ce.create(o,l))}({index:0,tokens:s,position:i})}function pr(e){let t="";t="string"==typeof e?e:e.text;return t.split(s.TH)}const mr=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,gr=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function yr(e,t,n,r){const i=[];if(0===e.length){const e=le.create(n,r),s=le.create(n,r+t.length);i.push({type:"text",content:t,range:ce.create(e,s)})}else{let s=0;for(const o of e){const e=o.index,a=t.substring(s,e);a.length>0&&i.push({type:"text",content:t.substring(s,e),range:ce.create(le.create(n,s+r),le.create(n,e+r))});let l=a.length+1;const c=o[1];if(i.push({type:"inline-tag",content:c,range:ce.create(le.create(n,s+l+r),le.create(n,s+l+c.length+r))}),l+=c.length,4===o.length){l+=o[2].length;const e=o[3];i.push({type:"text",content:e,range:ce.create(le.create(n,s+l+r),le.create(n,s+l+e.length+r))})}else i.push({type:"text",content:"",range:ce.create(le.create(n,s+l+r),le.create(n,s+l+r))});s=e+o[0].length}const a=t.substring(s);a.length>0&&i.push({type:"text",content:a,range:ce.create(le.create(n,s+r),le.create(n,s+r+a.length))})}return i}const Tr=/\S/,Ar=/\s*$/;function vr(e,t){const n=e.substring(t).match(Tr);return n?t+n.index:e.length}function Rr(e){const t=e.match(Ar);if(t&&"number"==typeof t.index)return t.index}function $r(e,t){const n=e.tokens[e.index];return"tag"===n.type?xr(e,!1):"text"===n.type||"inline-tag"===n.type?Er(e):(function(e,t){if(t){const n=new br("",e.range);"inlines"in t?t.inlines.push(n):t.content.inlines.push(n)}}(n,t),void e.index++)}function Er(e){let t=e.tokens[e.index];const n=t;let r=t;const i=[];for(;t&&"break"!==t.type&&"tag"!==t.type;)i.push(kr(e)),r=t,t=e.tokens[e.index];return new Lr(i,ce.create(n.range.start,r.range.end))}function kr(e){return"inline-tag"===e.tokens[e.index].type?xr(e,!0):Ir(e)}function xr(e,t){const n=e.tokens[e.index++],r=n.content.substring(1),i=e.tokens[e.index];if("text"===(null==i?void 0:i.type)){if(t){const i=Ir(e);return new wr(r,new Lr([i],i.range),t,ce.create(n.range.start,i.range.end))}{const i=Er(e);return new wr(r,i,t,ce.create(n.range.start,i.range.end))}}{const e=n.range;return new wr(r,new Lr([],e),t,e)}}function Ir(e){const t=e.tokens[e.index++];return new br(t.content,t.range)}function Sr(e){if(!e)return Sr({start:"/**",end:"*/",line:"*"});const{start:t,end:n,line:r}=e;return{start:Nr(t,!0),end:Nr(n,!1),line:Nr(r,!0)}}function Nr(e,t){if("string"==typeof e||"object"==typeof e){const n="string"==typeof e?(0,s.Nt)(e):e.source;return t?new RegExp(`^\\s*${n}`):new RegExp(`\\s*${n}\\s*$`)}return e}class Cr{constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(const t of this.elements)if(0===e.length)e=t.toString();else{const n=t.toString();e+=Or(e)+n}return e.trim()}toMarkdown(e){let t="";for(const n of this.elements)if(0===t.length)t=n.toMarkdown(e);else{const r=n.toMarkdown(e);t+=Or(t)+r}return t.trim()}}class wr{constructor(e,t,n,r){this.name=e,this.content=t,this.inline=n,this.range=r}toString(){let e=`@${this.name}`;const t=this.content.toString();return 1===this.content.inlines.length?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e}\n${t}`),this.inline?`{${e}}`:e}toMarkdown(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.renderTag)||void 0===t?void 0:t.call(e,this))&&void 0!==n?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){const t=this.content.toMarkdown(e);if(this.inline){const n=function(e,t,n){var r,i;if("linkplain"===e||"linkcode"===e||"link"===e){const s=t.indexOf(" ");let a=t;if(s>0){const e=vr(t,s);a=t.substring(e),t=t.substring(0,s)}("linkcode"===e||"link"===e&&"code"===n.link)&&(a=`\`${a}\``);const o=null!==(i=null===(r=n.renderLink)||void 0===r?void 0:r.call(n,t,a))&&void 0!==i?i:function(e,t){try{return kn.r.parse(e,!0),`[${t}](${e})`}catch(r){return e}}(t,a);return o}return}(this.name,t,null!=e?e:{});if("string"==typeof n)return n}let n="";"italic"===(null==e?void 0:e.tag)||void 0===(null==e?void 0:e.tag)?n="*":"bold"===(null==e?void 0:e.tag)?n="**":"bold-italic"===(null==e?void 0:e.tag)&&(n="***");let r=`${n}@${this.name}${n}`;return 1===this.content.inlines.length?r=`${r} \u2014 ${t}`:this.content.inlines.length>1&&(r=`${r}\n${t}`),this.inline?`{${r}}`:r}}class Lr{constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;t<this.inlines.length;t++){const n=this.inlines[t],r=this.inlines[t+1];e+=n.toString(),r&&r.range.start.line>n.range.start.line&&(e+="\n")}return e}toMarkdown(e){let t="";for(let n=0;n<this.inlines.length;n++){const r=this.inlines[n],i=this.inlines[n+1];t+=r.toMarkdown(e),i&&i.range.start.line>r.range.start.line&&(t+="\n")}return t}}class br{constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}}function Or(e){return e.endsWith("\n")?"\n":"\n\n"}class _r{constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){const t=this.commentProvider.getComment(e);if(t&&function(e,t){const n=Sr(t),r=pr(e);if(0===r.length)return!1;const i=r[0],s=r[r.length-1],a=n.start,o=n.end;return Boolean(null==a?void 0:a.exec(i))&&Boolean(null==o?void 0:o.exec(s))}(t)){return fr(t).toMarkdown({renderLink:(t,n)=>this.documentationLinkRenderer(e,t,n),renderTag:t=>this.documentationTagRenderer(e,t)})}}documentationLinkRenderer(e,t,n){var r;const i=null!==(r=this.findNameInPrecomputedScopes(e,t))&&void 0!==r?r:this.findNameInGlobalScope(e,t);if(i&&i.nameSegment){const e=i.nameSegment.range.start.line+1,t=i.nameSegment.range.start.character+1;return`[${n}](${i.documentUri.with({fragment:`L${e},${t}`}).toString()})`}}documentationTagRenderer(e,t){}findNameInPrecomputedScopes(e,t){const n=(0,Nt.YE)(e).precomputedScopes;if(!n)return;let r=e;do{const e=n.get(r).find(e=>e.name===t);if(e)return e;r=r.$container}while(r)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(e=>e.name===t)}}class Pr{constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var t;return function(e){return"string"==typeof e.$comment}(e)?e.$comment:null===(t=(0,r.v)(e.$cstNode,this.grammarConfig().multilineCommentRules))||void 0===t?void 0:t.text}}class Mr{constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}}class Dr{constructor(){this.previousTokenSource=new ln.Qi,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();const t=(un=performance.now(),new ln.Qi);return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,n=ln.XO.None){const r=new mn,i={action:t,deferred:r,cancellationToken:n};return e.push(i),this.performNextOperation(),r.promise}async performNextOperation(){if(!this.done)return;const e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else{if(!(this.readQueue.length>0))return;e.push(...this.readQueue.splice(0,this.readQueue.length))}this.done=!1,await Promise.all(e.map(async({action:e,deferred:t,cancellationToken:n})=>{try{const r=await Promise.resolve().then(()=>e(n));t.resolve(r)}catch(r){fn(r)?t.resolve(void 0):t.reject(r)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}class Ur{constructor(e){this.grammarElementIdMap=new On,this.tokenTypeIdMap=new On,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(e=>Object.assign(Object.assign({},e),{message:e.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){const t=new Map,n=new Map;for(const r of(0,Nt.jm)(e))t.set(r,{});if(e.$cstNode)for(const i of(0,r.NS)(e.$cstNode))n.set(i,{});return{astNodes:t,cstNodes:n}}dehydrateAstNode(e,t){const n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,void 0!==e.$cstNode&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(const[r,i]of Object.entries(e))if(!r.startsWith("$"))if(Array.isArray(i)){const e=[];n[r]=e;for(const n of i)(0,cn.ng)(n)?e.push(this.dehydrateAstNode(n,t)):(0,cn.A_)(n)?e.push(this.dehydrateReference(n,t)):e.push(n)}else(0,cn.ng)(i)?n[r]=this.dehydrateAstNode(i,t):(0,cn.A_)(i)?n[r]=this.dehydrateReference(i,t):void 0!==i&&(n[r]=i);return n}dehydrateReference(e,t){const n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=t.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,t){const n=t.cstNodes.get(e);return(0,cn.br)(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=t.astNodes.get(e.astNode),(0,cn.mD)(e)?n.content=e.content.map(e=>this.dehydrateCstNode(e,t)):(0,cn.FC)(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){const t=e.value,n=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,n)}}createHydrationContext(e){const t=new Map,n=new Map;for(const r of(0,Nt.jm)(e))t.set(r,{});let i;if(e.$cstNode)for(const s of(0,r.NS)(e.$cstNode)){let e;"fullText"in s?(e=new Dt(s.fullText),i=e):"content"in s?e=new Pt:"tokenType"in s&&(e=this.hydrateCstLeafNode(s)),e&&(n.set(s,e),e.root=i)}return{astNodes:t,cstNodes:n}}hydrateAstNode(e,t){const n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=t.cstNodes.get(e.$cstNode));for(const[r,i]of Object.entries(e))if(!r.startsWith("$"))if(Array.isArray(i)){const e=[];n[r]=e;for(const s of i)(0,cn.ng)(s)?e.push(this.setParent(this.hydrateAstNode(s,t),n)):(0,cn.A_)(s)?e.push(this.hydrateReference(s,n,r,t)):e.push(s)}else(0,cn.ng)(i)?n[r]=this.setParent(this.hydrateAstNode(i,t),n):(0,cn.A_)(i)?n[r]=this.hydrateReference(i,n,r,t):void 0!==i&&(n[r]=i);return n}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,n,r){return this.linker.buildReference(t,n,r.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,n=0){const r=t.cstNodes.get(e);if("number"==typeof e.grammarSource&&(r.grammarSource=this.getGrammarElement(e.grammarSource)),r.astNode=t.astNodes.get(e.astNode),(0,cn.mD)(r))for(const i of e.content){const e=this.hydrateCstNode(i,t,n++);r.content.push(e)}return r}hydrateCstLeafNode(e){const t=this.getTokenType(e.tokenType),n=e.offset,r=e.length,i=e.startLine,s=e.startColumn,a=e.endLine,o=e.endColumn,l=e.hidden;return new _t(n,r,{start:{line:i,character:s},end:{line:a,character:o}},t,l)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return 0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap();return this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(const t of(0,Nt.jm)(this.grammar))(0,a.r1)(t)&&this.grammarElementIdMap.set(t,e++)}}function Fr(e){return{documentation:{CommentProvider:e=>new Pr(e),DocumentationProvider:e=>new _r(e)},parser:{AsyncParser:e=>new Mr(e),GrammarConfig:e=>function(e){const t=[],n=e.Grammar;for(const r of n.rules)(0,a.rE)(r)&&(0,i.eb)(r)&&(0,s.lU)((0,i.S)(r))&&t.push(r.name);return{multilineCommentRules:t,nameRegexp:r.El}}(e),LangiumParser:e=>sn(e),CompletionParser:e=>function(e){const t=e.Grammar,n=e.parser.Lexer,r=new Ht(e);return qt(t,r,n.definition),r.finalize(),r}(e),ValueConverter:()=>new on.d,TokenBuilder:()=>new an.Q,Lexer:e=>new ur(e),ParserErrorMessageProvider:()=>new jt,LexerErrorMessageProvider:()=>new lr},workspace:{AstNodeLocator:()=>new tr,AstNodeDescriptionProvider:e=>new Jn(e),ReferenceDescriptionProvider:e=>new er(e)},references:{Linker:e=>new Nn(e),NameProvider:()=>new Cn,ScopeProvider:e=>new Kn(e),ScopeComputation:e=>new _n(e),References:e=>new Ln(e)},serializer:{Hydrator:e=>new Ur(e),JsonSerializer:e=>new Vn(e)},validation:{DocumentValidator:e=>new Xn(e),ValidationRegistry:e=>new Yn(e)},shared:()=>e.shared}}function Gr(e){return{ServiceRegistry:e=>new jn(e),workspace:{LangiumDocuments:e=>new In(e),LangiumDocumentFactory:e=>new xn(e),DocumentBuilder:e=>new sr(e),IndexManager:e=>new ar(e),WorkspaceManager:e=>new or(e),FileSystemProvider:t=>e.fileSystemProvider(t),WorkspaceLock:()=>new Dr,ConfigurationProvider:e=>new ir(e)}}}},8980:(e,t,n)=>{n.d(t,{S:()=>u});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},l=class extends r.dg{static{(0,r.K2)(this,"ArchitectureValueConverter")}runCustomConverter(e,t,n){return"ARCH_ICON"===e.name?t.replace(/[()]/g,"").trim():"ARCH_TEXT_ICON"===e.name?t.replace(/["()]/g,""):"ARCH_TITLE"===e.name?t.replace(/[[\]]/g,"").trim():void 0}},c={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new l,"ValueConverter")}};function u(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.jE,c);return t.ServiceRegistry.register(n),{shared:t,Architecture:n}}(0,r.K2)(u,"createArchitectureServices")},9150:(e,t,n)=>{n.d(t,{f:()=>u});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},l=class extends r.dg{static{(0,r.K2)(this,"PieValueConverter")}runCustomConverter(e,t,n){if("PIE_SECTION_LABEL"===e.name)return t.replace(/"/g,"").trim()}},c={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new l,"ValueConverter")}};function u(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.KX,c);return t.ServiceRegistry.register(n),{shared:t,Pie:n}}(0,r.K2)(u,"createPieServices")},9364:(e,t,n)=>{var r;function i(e,t,n,r,i,s,o,l,u){return a([e,t,n,r,i,s,o,l,u].reduce(c,{}))}n.d(t,{WQ:()=>i}),function(e){e.merge=(e,t)=>c(c({},e),t)}(r||(r={}));const s=Symbol("isProxy");function a(e,t){const n=new Proxy({},{deleteProperty:()=>!1,set:()=>{throw new Error("Cannot set property on injected service container")},get:(r,i)=>i===s||l(r,i,e,t||n),getOwnPropertyDescriptor:(r,i)=>(l(r,i,e,t||n),Object.getOwnPropertyDescriptor(r,i)),has:(t,n)=>n in e,ownKeys:()=>[...Object.getOwnPropertyNames(e)]});return n}const o=Symbol();function l(e,t,n,r){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:e[t]});if(e[t]===o)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}if(t in n){const s=n[t];e[t]=o;try{e[t]="function"==typeof s?s(r):a(s,r)}catch(i){throw e[t]=i instanceof Error?i:void 0,i}return e[t]}}function c(e,t){if(t)for(const[n,r]of Object.entries(t))if(void 0!==r){const t=e[n];e[n]=null!==t&&null!==r&&"object"==typeof t&&"object"==typeof r?c(t,r):r}return e}},9590:(e,t)=>{let n;function r(){if(void 0===n)throw new Error("No runtime abstraction layer installed");return n}Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.install=function(e){if(void 0===e)throw new Error("No runtime abstraction layer provided");n=e}}(r||(r={})),t.default=r},9637:(e,t,n)=>{n.d(t,{ak:()=>j,mT:()=>Pr,LT:()=>Xt,jr:()=>Dr,T6:()=>dr,JG:()=>Mt,wL:()=>M,c$:()=>F,Y2:()=>B,$P:()=>G,Cy:()=>K,Pp:()=>V,BK:()=>H,PW:()=>Ot,my:()=>Zt,jk:()=>En,Sk:()=>Dt,G:()=>Qt});var r=n(8058),i=n(8207),s=n(6401),a=n(4722),o=n(8585),l=n(53);function c(e){function t(){}t.prototype=e;const n=new t;function r(){return typeof n.bar}return r(),r(),e}const u=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(i);++r<i;)s[r]=e[r+t];return s};var d=n(8593);const h=function(e,t,n){var r=null==e?0:e.length;return r?(t=n||void 0===t?1:(0,d.A)(t),u(e,t<0?0:t,r)):[]};var f=n(9703),p=n(2851),m=n(2031),g=n(3767),y=n(8446),T=n(7271),A=n(7422),v=Object.prototype.hasOwnProperty;const R=(0,g.A)(function(e,t){if((0,T.A)(t)||(0,y.A)(t))(0,m.A)(t,(0,A.A)(t),e);else for(var n in t)v.call(t,n)&&(0,p.A)(e,n,t[n])});var $=n(5572),E=n(3958),k=n(9354),x=n(3973);const I=function(e,t){if(null==e)return{};var n=(0,$.A)((0,x.A)(e),function(e){return[e]});return t=(0,E.A)(t),(0,k.A)(e,n,function(e,n){return t(e,n[0])})};var S=n(8496),N=n(3098);const C=function(e){return(0,N.A)(e)&&"[object RegExp]"==(0,S.A)(e)};var w=n(2789),L=n(4841),b=L.A&&L.A.isRegExp;const O=b?(0,w.A)(b):C;function _(e){return t=e,(0,f.A)(t.LABEL)&&""!==t.LABEL?e.LABEL:e.name;var t}class P{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),(0,r.A)(this.definition,t=>{t.accept(e)})}}class M extends P{constructor(e){super([]),this.idx=1,R(this,I(e,e=>void 0!==e))}set definition(e){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(e){e.visit(this)}}class D extends P{constructor(e){super(e.definition),this.orgText="",R(this,I(e,e=>void 0!==e))}}class U extends P{constructor(e){super(e.definition),this.ignoreAmbiguities=!1,R(this,I(e,e=>void 0!==e))}}class F extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class G extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class K extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class B extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class V extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class j extends P{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,R(this,I(e,e=>void 0!==e))}}class H{constructor(e){this.idx=1,R(this,I(e,e=>void 0!==e))}accept(e){e.visit(this)}}function W(e){function t(e){return(0,a.A)(e,W)}if(e instanceof M){const t={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return(0,f.A)(e.label)&&(t.label=e.label),t}if(e instanceof U)return{type:"Alternative",definition:t(e.definition)};if(e instanceof F)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof G)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof K)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:W(new H({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof V)return{type:"RepetitionWithSeparator",idx:e.idx,separator:W(new H({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof B)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof j)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof H){const t={type:"Terminal",name:e.terminalType.name,label:_(e.terminalType),idx:e.idx};(0,f.A)(e.label)&&(t.terminalLabel=e.label);const n=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(t.pattern=O(n)?n.source:n),t}if(e instanceof D)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}class z{visit(e){const t=e;switch(t.constructor){case M:return this.visitNonTerminal(t);case U:return this.visitAlternative(t);case F:return this.visitOption(t);case G:return this.visitRepetitionMandatory(t);case K:return this.visitRepetitionMandatoryWithSeparator(t);case V:return this.visitRepetitionWithSeparator(t);case B:return this.visitRepetition(t);case j:return this.visitAlternation(t);case H:return this.visitTerminal(t);case D:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}var Y=n(3736),X=n(6240);const q=function(e,t){var n;return(0,X.A)(e,function(e,r,i){return!(n=t(e,r,i))}),!!n};var Q=n(2049),Z=n(6832);const J=function(e,t,n){var r=(0,Q.A)(e)?Y.A:q;return n&&(0,Z.A)(e,t,n)&&(t=void 0),r(e,(0,E.A)(t,3))};var ee=n(818),te=Math.max;const ne=function(e,t,n,r){e=(0,y.A)(e)?e:(0,i.A)(e),n=n&&!r?(0,d.A)(n):0;var s=e.length;return n<0&&(n=te(s+n,0)),(0,f.A)(e)?n<=s&&e.indexOf(t,n)>-1:!!s&&(0,ee.A)(e,t,n)>-1};const re=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0};const ie=function(e,t){var n=!0;return(0,X.A)(e,function(e,r,i){return n=!!t(e,r,i)}),n};const se=function(e,t,n){var r=(0,Q.A)(e)?re:ie;return n&&(0,Z.A)(e,t,n)&&(t=void 0),r(e,(0,E.A)(t,3))};function ae(e,t=[]){return!!(e instanceof F||e instanceof B||e instanceof V)||(e instanceof j?J(e.definition,e=>ae(e,t)):!(e instanceof M&&ne(t,e))&&(e instanceof P&&(e instanceof M&&t.push(e),se(e.definition,e=>ae(e,t)))))}function oe(e){if(e instanceof M)return"SUBRULE";if(e instanceof F)return"OPTION";if(e instanceof j)return"OR";if(e instanceof G)return"AT_LEAST_ONE";if(e instanceof K)return"AT_LEAST_ONE_SEP";if(e instanceof V)return"MANY_SEP";if(e instanceof B)return"MANY";if(e instanceof H)return"CONSUME";throw Error("non exhaustive match")}class le{walk(e,t=[]){(0,r.A)(e.definition,(n,r)=>{const i=h(e.definition,r+1);if(n instanceof M)this.walkProdRef(n,i,t);else if(n instanceof H)this.walkTerminal(n,i,t);else if(n instanceof U)this.walkFlat(n,i,t);else if(n instanceof F)this.walkOption(n,i,t);else if(n instanceof G)this.walkAtLeastOne(n,i,t);else if(n instanceof K)this.walkAtLeastOneSep(n,i,t);else if(n instanceof V)this.walkManySep(n,i,t);else if(n instanceof B)this.walkMany(n,i,t);else{if(!(n instanceof j))throw Error("non exhaustive match");this.walkOr(n,i,t)}})}walkTerminal(e,t,n){}walkProdRef(e,t,n){}walkFlat(e,t,n){const r=t.concat(n);this.walk(e,r)}walkOption(e,t,n){const r=t.concat(n);this.walk(e,r)}walkAtLeastOne(e,t,n){const r=[new F({definition:e.definition})].concat(t,n);this.walk(e,r)}walkAtLeastOneSep(e,t,n){const r=ce(e,t,n);this.walk(e,r)}walkMany(e,t,n){const r=[new F({definition:e.definition})].concat(t,n);this.walk(e,r)}walkManySep(e,t,n){const r=ce(e,t,n);this.walk(e,r)}walkOr(e,t,n){const i=t.concat(n);(0,r.A)(e.definition,e=>{const t=new U({definition:[e]});this.walk(t,i)})}}function ce(e,t,n){return[new F({definition:[new H({terminalType:e.separator})].concat(e.definition)})].concat(t,n)}var ue=n(9902);const de=function(e){return e&&e.length?(0,ue.A)(e):[]};var he=n(4098);function fe(e){if(e instanceof M)return fe(e.referencedRule);if(e instanceof H)return[e.terminalType];if(function(e){return e instanceof U||e instanceof F||e instanceof B||e instanceof G||e instanceof K||e instanceof V||e instanceof H||e instanceof D}(e))return function(e){let t=[];const n=e.definition;let r,i=0,s=n.length>i,a=!0;for(;s&&a;)r=n[i],a=ae(r),t=t.concat(fe(r)),i+=1,s=n.length>i;return de(t)}(e);if(function(e){return e instanceof j}(e))return function(e){const t=(0,a.A)(e.definition,e=>fe(e));return de((0,he.A)(t))}(e);throw Error("non exhaustive match")}const pe="_~IN~_";class me extends le{constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,n){}walkProdRef(e,t,n){const r=(i=e.referencedRule,s=e.idx,i.name+s+pe+this.topProd.name);var i,s;const a=t.concat(n),o=fe(new U({definition:a}));this.follows[r]=o}}var ge=n(9592),ye=n(5186),Te=n(3068),Ae=n(2634),ve=n(1790);const Re=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}};const $e=function(e,t){return((0,Q.A)(e)?Ae.A:ve.A)(e,Re((0,E.A)(t,3)))};var Ee=n(9610),ke=Math.max;const xe=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:(0,d.A)(n);return i<0&&(i=ke(r+i,0)),(0,ee.A)(e,t,i)};var Ie=n(9463),Se=n(4092),Ne=n(2062),Ce=n(5530),we=n(7809),Le=n(4099);const be=function(e,t,n,r){var i=-1,s=Ce.A,a=!0,o=e.length,l=[],c=t.length;if(!o)return l;n&&(t=(0,$.A)(t,(0,w.A)(n))),r?(s=we.A,a=!1):t.length>=200&&(s=Le.A,a=!1,t=new Ne.A(t));e:for(;++i<o;){var u=e[i],d=null==n?u:n(u);if(u=r||0!==u?u:0,a&&d==d){for(var h=c;h--;)if(t[h]===d)continue e;l.push(u)}else s(t,d,r)||l.push(u)}return l};var Oe=n(1207),_e=n(4326),Pe=n(3533);const Me=(0,_e.A)(function(e,t){return(0,Pe.A)(e)?be(e,(0,Oe.A)(t,1,Pe.A,!0)):[]});const De=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var s=e[t];s&&(i[r++]=s)}return i};const Ue=function(e){return e&&e.length?e[0]:void 0};var Fe=n(6145);function Ge(e){console&&console.error&&console.error(`Error: ${e}`)}function Ke(e){console&&console.warn&&console.warn(`Warning: ${e}`)}let Be={};const Ve=new ye.H;function je(e){const t=e.toString();if(Be.hasOwnProperty(t))return Be[t];{const e=Ve.pattern(t);return Be[t]=e,e}}const He="Complement Sets are not supported for first char optimization",We='Unable to use "first char" lexer optimizations:\n';function ze(e,t=!1){try{const t=je(e);return Ye(t.value,{},t.flags.ignoreCase)}catch(n){if(n.message===He)t&&Ke(`${We}\tUnable to optimize: < ${e.toString()} >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";t&&(n="\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."),Ge(`${We}\n\tFailed parsing: < ${e.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Ye(e,t,n){switch(e.type){case"Disjunction":for(let r=0;r<e.value.length;r++)Ye(e.value[r],t,n);break;case"Alternative":const i=e.value;for(let e=0;e<i.length;e++){const s=i[e];switch(s.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}const a=s;switch(a.type){case"Character":Xe(a.value,t,n);break;case"Set":if(!0===a.complement)throw Error(He);(0,r.A)(a.value,e=>{if("number"==typeof e)Xe(e,t,n);else{const r=e;if(!0===n)for(let e=r.from;e<=r.to;e++)Xe(e,t,n);else{for(let e=r.from;e<=r.to&&e<yt;e++)Xe(e,t,n);if(r.to>=yt){const e=r.from>=yt?r.from:yt,n=r.to,i=At(e),s=At(n);for(let r=i;r<=s;r++)t[r]=r}}}});break;case"Group":Ye(a.value,t,n);break;default:throw Error("Non Exhaustive Match")}const o=void 0!==a.quantifier&&0===a.quantifier.atLeast;if("Group"===a.type&&!1===Qe(a)||"Group"!==a.type&&!1===o)break}break;default:throw Error("non exhaustive match!")}return(0,i.A)(t)}function Xe(e,t,n){const r=At(e);t[r]=r,!0===n&&function(e,t){const n=String.fromCharCode(e),r=n.toUpperCase();if(r!==n){const e=At(r.charCodeAt(0));t[e]=e}else{const e=n.toLowerCase();if(e!==n){const n=At(e.charCodeAt(0));t[n]=n}}}(e,t)}function qe(e,t){return(0,Fe.A)(e.value,e=>{if("number"==typeof e)return ne(t,e);{const n=e;return void 0!==(0,Fe.A)(t,e=>n.from<=e&&e<=n.to)}})}function Qe(e){const t=e.quantifier;return!(!t||0!==t.atLeast)||!!e.value&&((0,Q.A)(e.value)?se(e.value,Qe):Qe(e.value))}class Ze extends ye.z{constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(!0!==this.found){switch(e.type){case"Lookahead":return void this.visitLookahead(e);case"NegativeLookahead":return void this.visitNegativeLookahead(e)}super.visitChildren(e)}}visitCharacter(e){ne(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?void 0===qe(e,this.targetCharCodes)&&(this.found=!0):void 0!==qe(e,this.targetCharCodes)&&(this.found=!0)}}function Je(e,t){if(t instanceof RegExp){const n=je(t),r=new Ze(e);return r.visit(n),r.found}return void 0!==(0,Fe.A)(t,t=>ne(e,t.charCodeAt(0)))}const et="PATTERN",tt="defaultMode",nt="modes";let rt="boolean"==typeof new RegExp("(?:)").sticky;function it(e,t){const n=(t=(0,Te.A)(t,{useSticky:rt,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r","\n"],tracer:(e,t)=>t()})).tracer;let i;n("initCharCodeToOptimizedIndexMap",()=>{!function(){if((0,s.A)(Tt)){Tt=new Array(65536);for(let e=0;e<65536;e++)Tt[e]=e>255?255+~~(e/255):e}}()}),n("Reject Lexer.NA",()=>{i=$e(e,e=>e[et]===Mt.NA)});let l,c,u,d,h,p,m,g,y,T,A,v=!1;n("Transform Patterns",()=>{v=!1,l=(0,a.A)(i,e=>{const n=e[et];if(O(n)){const e=n.source;return 1!==e.length||"^"===e||"$"===e||"."===e||n.ignoreCase?2!==e.length||"\\"!==e[0]||ne(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],e[1])?t.useSticky?ct(n):lt(n):e[1]:e}if((0,Ee.A)(n))return v=!0,{exec:n};if("object"==typeof n)return v=!0,n;if("string"==typeof n){if(1===n.length)return n;{const e=n.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),r=new RegExp(e);return t.useSticky?ct(r):lt(r)}}throw Error("non exhaustive match")})}),n("misc mapping",()=>{c=(0,a.A)(i,e=>e.tokenTypeIdx),u=(0,a.A)(i,e=>{const t=e.GROUP;if(t!==Mt.SKIPPED){if((0,f.A)(t))return t;if((0,ge.A)(t))return!1;throw Error("non exhaustive match")}}),d=(0,a.A)(i,e=>{const t=e.LONGER_ALT;if(t){return(0,Q.A)(t)?(0,a.A)(t,e=>xe(i,e)):[xe(i,t)]}}),h=(0,a.A)(i,e=>e.PUSH_MODE),p=(0,a.A)(i,e=>(0,o.A)(e,"POP_MODE"))}),n("Line Terminator Handling",()=>{const e=mt(t.lineTerminatorCharacters);m=(0,a.A)(i,e=>!1),"onlyOffset"!==t.positionTracking&&(m=(0,a.A)(i,t=>(0,o.A)(t,"LINE_BREAKS")?!!t.LINE_BREAKS:!1===pt(t,e)&&Je(e,t.PATTERN)))}),n("Misc Mapping #2",()=>{g=(0,a.A)(i,dt),y=(0,a.A)(l,ht),T=(0,Ie.A)(i,(e,t)=>{const n=t.GROUP;return(0,f.A)(n)&&n!==Mt.SKIPPED&&(e[n]=[]),e},{}),A=(0,a.A)(l,(e,t)=>({pattern:l[t],longerAlt:d[t],canLineTerminator:m[t],isCustom:g[t],short:y[t],group:u[t],push:h[t],pop:p[t],tokenTypeIdx:c[t],tokenType:i[t]}))});let R=!0,$=[];return t.safeMode||n("First Char Optimization",()=>{$=(0,Ie.A)(i,(e,n,i)=>{if("string"==typeof n.PATTERN){const t=At(n.PATTERN.charCodeAt(0));gt(e,t,A[i])}else if((0,Q.A)(n.START_CHARS_HINT)){let t;(0,r.A)(n.START_CHARS_HINT,n=>{const r=At("string"==typeof n?n.charCodeAt(0):n);t!==r&&(t=r,gt(e,r,A[i]))})}else if(O(n.PATTERN))if(n.PATTERN.unicode)R=!1,t.ensureOptimizations&&Ge(`${We}\tUnable to analyze < ${n.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const a=ze(n.PATTERN,t.ensureOptimizations);(0,s.A)(a)&&(R=!1),(0,r.A)(a,t=>{gt(e,t,A[i])})}else t.ensureOptimizations&&Ge(`${We}\tTokenType: <${n.name}> is using a custom token pattern without providing <start_chars_hint> parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),R=!1;return e},[])}),{emptyGroups:T,patternIdxToConfig:A,charCodeToPatternIdxToConfig:$,hasCustom:v,canBeOptimized:R}}function st(e,t){let n=[];const i=function(e){const t=(0,Se.A)(e,e=>!(0,o.A)(e,et)),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- missing static 'PATTERN' property",type:_t.MISSING_PATTERN,tokenTypes:[e]})),r=Me(e,t);return{errors:n,valid:r}}(e);n=n.concat(i.errors);const s=function(e){const t=(0,Se.A)(e,e=>{const t=e[et];return!(O(t)||(0,Ee.A)(t)||(0,o.A)(t,"exec")||(0,f.A)(t))}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:_t.INVALID_PATTERN,tokenTypes:[e]})),r=Me(e,t);return{errors:n,valid:r}}(i.valid),l=s.valid;return n=n.concat(s.errors),n=n.concat(function(e){let t=[];const n=(0,Se.A)(e,e=>O(e[et]));return t=t.concat(function(e){class t extends ye.z{constructor(){super(...arguments),this.found=!1}visitEndAnchor(e){this.found=!0}}const n=(0,Se.A)(e,e=>{const n=e.PATTERN;try{const e=je(n),r=new t;return r.visit(e),r.found}catch(r){return at.test(n.source)}}),r=(0,a.A)(n,e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:_t.EOI_ANCHOR_FOUND,tokenTypes:[e]}));return r}(n)),t=t.concat(function(e){class t extends ye.z{constructor(){super(...arguments),this.found=!1}visitStartAnchor(e){this.found=!0}}const n=(0,Se.A)(e,e=>{const n=e.PATTERN;try{const e=je(n),r=new t;return r.visit(e),r.found}catch(r){return ot.test(n.source)}}),r=(0,a.A)(n,e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:_t.SOI_ANCHOR_FOUND,tokenTypes:[e]}));return r}(n)),t=t.concat(function(e){const t=(0,Se.A)(e,e=>{const t=e[et];return t instanceof RegExp&&(t.multiline||t.global)}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:_t.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[e]}));return n}(n)),t=t.concat(function(e){const t=[];let n=(0,a.A)(e,n=>(0,Ie.A)(e,(e,r)=>(n.PATTERN.source!==r.PATTERN.source||ne(t,r)||r.PATTERN===Mt.NA||(t.push(r),e.push(r)),e),[]));n=De(n);const r=(0,Se.A)(n,e=>e.length>1),i=(0,a.A)(r,e=>{const t=(0,a.A)(e,e=>e.name);return{message:`The same RegExp pattern ->${Ue(e).PATTERN}<-has been used in all of the following Token Types: ${t.join(", ")} <-`,type:_t.DUPLICATE_PATTERNS_FOUND,tokenTypes:e}});return i}(n)),t=t.concat(function(e){const t=(0,Se.A)(e,e=>e.PATTERN.test("")),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' must not match an empty string",type:_t.EMPTY_MATCH_PATTERN,tokenTypes:[e]}));return n}(n)),t}(l)),n=n.concat(function(e){const t=(0,Se.A)(e,e=>{if(!(0,o.A)(e,"GROUP"))return!1;const t=e.GROUP;return t!==Mt.SKIPPED&&t!==Mt.NA&&!(0,f.A)(t)}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:_t.INVALID_GROUP_TYPE_FOUND,tokenTypes:[e]}));return n}(l)),n=n.concat(function(e,t){const n=(0,Se.A)(e,e=>void 0!==e.PUSH_MODE&&!ne(t,e.PUSH_MODE)),r=(0,a.A)(n,e=>({message:`Token Type: ->${e.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${e.PUSH_MODE}<-which does not exist`,type:_t.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[e]}));return r}(l,t)),n=n.concat(function(e){const t=[],n=(0,Ie.A)(e,(e,t,n)=>{const r=t.PATTERN;return r===Mt.NA||((0,f.A)(r)?e.push({str:r,idx:n,tokenType:t}):O(r)&&function(e){const t=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return void 0===(0,Fe.A)(t,t=>-1!==e.source.indexOf(t))}(r)&&e.push({str:r.source,idx:n,tokenType:t})),e},[]);return(0,r.A)(e,(e,i)=>{(0,r.A)(n,({str:n,idx:r,tokenType:s})=>{if(i<r&&function(e,t){if(O(t)){const n=t.exec(e);return null!==n&&0===n.index}if((0,Ee.A)(t))return t(e,0,[],{});if((0,o.A)(t,"exec"))return t.exec(e,0,[],{});if("string"==typeof t)return t===e;throw Error("non exhaustive match")}(n,e.PATTERN)){const n=`Token: ->${s.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${e.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:n,type:_t.UNREACHABLE_PATTERN,tokenTypes:[e,s]})}})}),t}(l)),n}const at=/[^\\][$]/;const ot=/[^\\[][\^]|^\^/;function lt(e){const t=e.ignoreCase?"i":"";return new RegExp(`^(?:${e.source})`,t)}function ct(e){const t=e.ignoreCase?"iy":"y";return new RegExp(`${e.source}`,t)}function ut(e,t,n){const s=[];let a=!1;const l=De((0,he.A)((0,i.A)(e.modes))),c=$e(l,e=>e[et]===Mt.NA),u=mt(n);return t&&(0,r.A)(c,e=>{const t=pt(e,u);if(!1!==t){const n=function(e,t){if(t.issue===_t.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <${e.name}> Token Type\n\t Root cause: ${t.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===_t.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.\n\tThe problem is in the <${e.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}(e,t),r={message:n,type:t.issue,tokenType:e};s.push(r)}else(0,o.A)(e,"LINE_BREAKS")?!0===e.LINE_BREAKS&&(a=!0):Je(u,e.PATTERN)&&(a=!0)}),t&&!a&&s.push({message:"Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n\tfor details.",type:_t.NO_LINE_BREAKS_FLAGS}),s}function dt(e){const t=e.PATTERN;if(O(t))return!1;if((0,Ee.A)(t))return!0;if((0,o.A)(t,"exec"))return!0;if((0,f.A)(t))return!1;throw Error("non exhaustive match")}function ht(e){return!(!(0,f.A)(e)||1!==e.length)&&e.charCodeAt(0)}const ft={test:function(e){const t=e.length;for(let n=this.lastIndex;n<t;n++){const t=e.charCodeAt(n);if(10===t)return this.lastIndex=n+1,!0;if(13===t)return 10===e.charCodeAt(n+1)?this.lastIndex=n+2:this.lastIndex=n+1,!0}return!1},lastIndex:0};function pt(e,t){if((0,o.A)(e,"LINE_BREAKS"))return!1;if(O(e.PATTERN)){try{Je(t,e.PATTERN)}catch(n){return{issue:_t.IDENTIFY_TERMINATOR,errMsg:n.message}}return!1}if((0,f.A)(e.PATTERN))return!1;if(dt(e))return{issue:_t.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}function mt(e){return(0,a.A)(e,e=>(0,f.A)(e)?e.charCodeAt(0):e)}function gt(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}const yt=256;let Tt=[];function At(e){return e<yt?e:Tt[e]}var vt=n(9008),Rt=n(2302),$t=n(6666);function Et(e){const t=(new Date).getTime(),n=e();return{time:(new Date).getTime()-t,value:n}}function kt(e,t){const n=e.tokenTypeIdx;return n===t.tokenTypeIdx||!0===t.isParent&&!0===t.categoryMatchesMap[n]}function xt(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}let It=1;const St={};function Nt(e){const t=function(e){let t=(0,l.A)(e),n=e,r=!0;for(;r;){n=De((0,he.A)((0,a.A)(n,e=>e.CATEGORIES)));const e=Me(n,t);t=t.concat(e),(0,s.A)(e)?r=!1:n=e}return t}(e);!function(e){(0,r.A)(e,e=>{var t;wt(e)||(St[It]=e,e.tokenTypeIdx=It++),Lt(e)&&!(0,Q.A)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Lt(e)||(e.CATEGORIES=[]),t=e,(0,o.A)(t,"categoryMatches")||(e.categoryMatches=[]),function(e){return(0,o.A)(e,"categoryMatchesMap")}(e)||(e.categoryMatchesMap={})})}(t),function(e){(0,r.A)(e,e=>{Ct([],e)})}(t),function(e){(0,r.A)(e,e=>{e.categoryMatches=[],(0,r.A)(e.categoryMatchesMap,(t,n)=>{e.categoryMatches.push(St[n].tokenTypeIdx)})})}(t),(0,r.A)(t,e=>{e.isParent=e.categoryMatches.length>0})}function Ct(e,t){(0,r.A)(e,e=>{t.categoryMatchesMap[e.tokenTypeIdx]=!0}),(0,r.A)(t.CATEGORIES,n=>{const r=e.concat(t);ne(r,n)||Ct(r,n)})}function wt(e){return(0,o.A)(e,"tokenTypeIdx")}function Lt(e){return(0,o.A)(e,"CATEGORIES")}function bt(e){return(0,o.A)(e,"tokenTypeIdx")}const Ot={buildUnableToPopLexerModeMessage:e=>`Unable to pop Lexer Mode after encountering Token ->${e.image}<- The Mode Stack is empty`,buildUnexpectedCharactersMessage:(e,t,n,r,i)=>`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${n} characters.`};var _t;!function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"}(_t||(_t={}));const Pt={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:["\n","\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:Ot,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Pt);class Mt{constructor(e,t=Pt){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(e,t)=>{if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${e}>`);const{time:r,value:i}=Et(t),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${e}> time: ${r}ms`),this.traceInitIndent--,i}return t()},"boolean"==typeof t)throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported");this.config=R({},Pt,t);const n=this.config.traceInitPerf;!0===n?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):"number"==typeof n&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,i=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Pt.lineTerminatorsPattern)this.config.lineTerminatorsPattern=ft;else if(this.config.lineTerminatorCharacters===Pt.lineTerminatorCharacters)throw Error("Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS");if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),(0,Q.A)(e)?n={modes:{defaultMode:(0,l.A)(e)},defaultMode:tt}:(i=!1,n=(0,l.A)(e))}),!1===this.config.skipValidations&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(function(e){const t=[];return(0,o.A)(e,tt)||t.push({message:"A MultiMode Lexer cannot be initialized without a <"+tt+"> property in its definition\n",type:_t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,o.A)(e,nt)||t.push({message:"A MultiMode Lexer cannot be initialized without a <modes> property in its definition\n",type:_t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,o.A)(e,nt)&&(0,o.A)(e,tt)&&!(0,o.A)(e.modes,e.defaultMode)&&t.push({message:`A MultiMode Lexer cannot be initialized with a ${tt}: <${e.defaultMode}>which does not exist\n`,type:_t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,o.A)(e,nt)&&(0,r.A)(e.modes,(e,n)=>{(0,r.A)(e,(i,s)=>{if((0,ge.A)(i))t.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${n}> at index: <${s}>\n`,type:_t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if((0,o.A)(i,"LONGER_ALT")){const s=(0,Q.A)(i.LONGER_ALT)?i.LONGER_ALT:[i.LONGER_ALT];(0,r.A)(s,r=>{(0,ge.A)(r)||ne(e,r)||t.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${r.name}> on token <${i.name}> outside of mode <${n}>\n`,type:_t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),t}(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(ut(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},(0,r.A)(n.modes,(e,t)=>{n.modes[t]=$e(e,e=>(0,ge.A)(e))});const u=(0,A.A)(n.modes);if((0,r.A)(n.modes,(e,n)=>{this.TRACE_INIT(`Mode: <${n}> processing`,()=>{if(this.modes.push(n),!1===this.config.skipValidations&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(st(e,u))}),(0,s.A)(this.lexerDefinitionErrors)){let r;Nt(e),this.TRACE_INIT("analyzeTokenTypes",()=>{r=it(e,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[n]=r.patternIdxToConfig,this.charCodeToPatternIdxToConfig[n]=r.charCodeToPatternIdxToConfig,this.emptyGroups=R({},this.emptyGroups,r.emptyGroups),this.hasCustom=r.hasCustom||this.hasCustom,this.canModeBeOptimized[n]=r.canBeOptimized}})}),this.defaultMode=n.defaultMode,!(0,s.A)(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const e=(0,a.A)(this.lexerDefinitionErrors,e=>e.message).join("-----------------------\n");throw new Error("Errors detected in definition of Lexer:\n"+e)}(0,r.A)(this.lexerDefinitionWarning,e=>{Ke(e.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(rt?(this.chopInput=vt.A,this.match=this.matchWithTest):(this.updateLastIndex=Rt.A,this.match=this.matchWithExec),i&&(this.handleModes=Rt.A),!1===this.trackStartLines&&(this.computeNewColumn=vt.A),!1===this.trackEndLines&&(this.updateTokenEndLineColumnLocation=Rt.A),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else{if(!/onlyOffset/i.test(this.config.positionTracking))throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.createTokenInstance=this.createOffsetOnlyToken}this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{const e=(0,Ie.A)(this.canModeBeOptimized,(e,t,n)=>(!1===t&&e.push(n),e),[]);if(t.ensureOptimizations&&!(0,s.A)(e))throw Error(`Lexer Modes: < ${e.join(", ")} > cannot be optimized.\n\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{Be={}}),this.TRACE_INIT("toFastProperties",()=>{c(this)})})}tokenize(e,t=this.defaultMode){if(!(0,s.A)(this.lexerDefinitionErrors)){const e=(0,a.A)(this.lexerDefinitionErrors,e=>e.message).join("-----------------------\n");throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n"+e)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let n,i,s,a,o,l,c,u,d,h,f,p,m,g,y;const T=e,v=T.length;let R=0,$=0;const E=this.hasCustom?0:Math.floor(e.length/10),k=new Array(E),x=[];let I=this.trackStartLines?1:void 0,S=this.trackStartLines?1:void 0;const N=function(e){const t={},n=(0,A.A)(e);return(0,r.A)(n,n=>{const r=e[n];if(!(0,Q.A)(r))throw Error("non exhaustive match");t[n]=[]}),t}(this.emptyGroups),C=this.trackStartLines,w=this.config.lineTerminatorsPattern;let L=0,b=[],O=[];const _=[],P=[];let M;function D(){return b}function U(e){const t=At(e),n=O[t];return void 0===n?P:n}Object.freeze(P);const F=e=>{if(1===_.length&&void 0===e.tokenType.PUSH_MODE){const t=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(e);x.push({offset:e.startOffset,line:e.startLine,column:e.startColumn,length:e.image.length,message:t})}else{_.pop();const e=(0,$t.A)(_);b=this.patternIdxToConfig[e],O=this.charCodeToPatternIdxToConfig[e],L=b.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;M=O&&t?U:D}};function G(e){_.push(e),O=this.charCodeToPatternIdxToConfig[e],b=this.patternIdxToConfig[e],L=b.length,L=b.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;M=O&&t?U:D}let K;G.call(this,t);const B=this.config.recoveryEnabled;for(;R<v;){l=null;const t=T.charCodeAt(R),r=M(t),A=r.length;for(n=0;n<A;n++){K=r[n];const i=K.pattern;c=null;const d=K.short;if(!1!==d?t===d&&(l=i):!0===K.isCustom?(y=i.exec(T,R,k,N),null!==y?(l=y[0],void 0!==y.payload&&(c=y.payload)):l=null):(this.updateLastIndex(i,R),l=this.match(i,e,R)),null!==l){if(o=K.longerAlt,void 0!==o){const t=o.length;for(s=0;s<t;s++){const t=b[o[s]],n=t.pattern;if(u=null,!0===t.isCustom?(y=n.exec(T,R,k,N),null!==y?(a=y[0],void 0!==y.payload&&(u=y.payload)):a=null):(this.updateLastIndex(n,R),a=this.match(n,e,R)),a&&a.length>l.length){l=a,c=u,K=t;break}}}break}}if(null!==l){if(d=l.length,h=K.group,void 0!==h&&(f=K.tokenTypeIdx,p=this.createTokenInstance(l,R,f,K.tokenType,I,S,d),this.handlePayload(p,c),!1===h?$=this.addToken(k,$,p):N[h].push(p)),e=this.chopInput(e,d),R+=d,S=this.computeNewColumn(S,d),!0===C&&!0===K.canLineTerminator){let e,t,n=0;w.lastIndex=0;do{e=w.test(l),!0===e&&(t=w.lastIndex-1,n++)}while(!0===e);0!==n&&(I+=n,S=d-t,this.updateTokenEndLineColumnLocation(p,h,t,n,I,S,d))}this.handleModes(K,F,G,p)}else{const t=R,n=I,r=S;let s=!1===B;for(;!1===s&&R<v;)for(e=this.chopInput(e,1),R++,i=0;i<L;i++){const t=b[i],n=t.pattern,r=t.short;if(!1!==r?T.charCodeAt(R)===r&&(s=!0):!0===t.isCustom?s=null!==n.exec(T,R,k,N):(this.updateLastIndex(n,R),s=null!==n.exec(e)),!0===s)break}if(m=R-t,S=this.computeNewColumn(S,m),g=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(T,t,m,n,r),x.push({offset:t,line:n,column:r,length:m,message:g}),!1===B)break}}return this.hasCustom||(k.length=$),{tokens:k,groups:N,errors:x}}handleModes(e,t,n,r){if(!0===e.pop){const i=e.push;t(r),void 0!==i&&n.call(this,i)}else void 0!==e.push&&n.call(this,e.push)}chopInput(e,t){return e.substring(t)}updateLastIndex(e,t){e.lastIndex=t}updateTokenEndLineColumnLocation(e,t,n,r,i,s,a){let o,l;void 0!==t&&(o=n===a-1,l=o?-1:0,1===r&&!0===o||(e.endLine=i+l,e.endColumn=s-1-l))}computeNewColumn(e,t){return e+t}createOffsetOnlyToken(e,t,n,r){return{image:e,startOffset:t,tokenTypeIdx:n,tokenType:r}}createStartOnlyToken(e,t,n,r,i,s){return{image:e,startOffset:t,startLine:i,startColumn:s,tokenTypeIdx:n,tokenType:r}}createFullToken(e,t,n,r,i,s,a){return{image:e,startOffset:t,endOffset:t+a-1,startLine:i,endLine:i,startColumn:s,endColumn:s+a-1,tokenTypeIdx:n,tokenType:r}}addTokenUsingPush(e,t,n){return e.push(n),t}addTokenUsingMemberAccess(e,t,n){return e[t]=n,++t}handlePayloadNoCustom(e,t){}handlePayloadWithCustom(e,t){null!==t&&(e.payload=t)}matchWithTest(e,t,n){return!0===e.test(t)?t.substring(n,e.lastIndex):null}matchWithExec(e,t){const n=e.exec(t);return null!==n?n[0]:null}}function Dt(e){return Ut(e)?e.LABEL:e.name}function Ut(e){return(0,f.A)(e.LABEL)&&""!==e.LABEL}Mt.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",Mt.NA=/NOT_APPLICABLE/;const Ft="parent",Gt="categories",Kt="label",Bt="group",Vt="push_mode",jt="pop_mode",Ht="longer_alt",Wt="line_breaks",zt="start_chars_hint";function Yt(e){return function(e){const t=e.pattern,n={};n.name=e.name,(0,ge.A)(t)||(n.PATTERN=t);if((0,o.A)(e,Ft))throw"The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.";(0,o.A)(e,Gt)&&(n.CATEGORIES=e[Gt]);Nt([n]),(0,o.A)(e,Kt)&&(n.LABEL=e[Kt]);(0,o.A)(e,Bt)&&(n.GROUP=e[Bt]);(0,o.A)(e,jt)&&(n.POP_MODE=e[jt]);(0,o.A)(e,Vt)&&(n.PUSH_MODE=e[Vt]);(0,o.A)(e,Ht)&&(n.LONGER_ALT=e[Ht]);(0,o.A)(e,Wt)&&(n.LINE_BREAKS=e[Wt]);(0,o.A)(e,zt)&&(n.START_CHARS_HINT=e[zt]);return n}(e)}const Xt=Yt({name:"EOF",pattern:Mt.NA});function qt(e,t,n,r,i,s,a,o){return{image:t,startOffset:n,endOffset:r,startLine:i,endLine:s,startColumn:a,endColumn:o,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}function Qt(e,t){return kt(e,t)}Nt([Xt]);const Zt={buildMismatchTokenMessage:({expected:e,actual:t,previous:n,ruleName:r})=>`Expecting ${Ut(e)?`--\x3e ${Dt(e)} <--`:`token of type --\x3e ${e.name} <--`} but found --\x3e '${t.image}' <--`,buildNotAllInputParsedMessage:({firstRedundant:e,ruleName:t})=>"Redundant input, expecting EOF but found: "+e.image,buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:n,customUserDescription:r,ruleName:i}){const s="Expecting: ",o="\nbut found: '"+Ue(t).image+"'";if(r)return s+r+o;{const t=(0,Ie.A)(e,(e,t)=>e.concat(t),[]),n=(0,a.A)(t,e=>`[${(0,a.A)(e,e=>Dt(e)).join(", ")}]`);return s+`one of these possible Token sequences:\n${(0,a.A)(n,(e,t)=>` ${t+1}. ${e}`).join("\n")}`+o}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:n,ruleName:r}){const i="Expecting: ",s="\nbut found: '"+Ue(t).image+"'";if(n)return i+n+s;return i+`expecting at least one iteration which starts with one of these possible Token sequences::\n <${(0,a.A)(e,e=>`[${(0,a.A)(e,e=>Dt(e)).join(",")}]`).join(" ,")}>`+s}};Object.freeze(Zt);const Jt={buildRuleNotFoundError:(e,t)=>"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+"<-\ninside top level rule: ->"+e.name+"<-"},en={buildDuplicateFoundError(e,t){const n=e.name,r=Ue(t),i=r.idx,s=oe(r),a=(o=r)instanceof H?o.terminalType.name:o instanceof M?o.nonTerminalName:"";var o;let l=`->${s}${i>0?i:""}<- ${a?`with argument: ->${a}<-`:""}\n appears more than once (${t.length} times) in the top level rule: ->${n}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;return l=l.replace(/[ \t]+/g," "),l=l.replace(/\s\s+/g,"\n"),l},buildNamespaceConflictError:e=>`Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`,buildAlternationPrefixAmbiguityError(e){const t=(0,a.A)(e.prefixPath,e=>Dt(e)).join(", "),n=0===e.alternation.idx?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix\nin <OR${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`},buildAlternationAmbiguityError(e){const t=(0,a.A)(e.prefixPath,e=>Dt(e)).join(", "),n=0===e.alternation.idx?"":e.alternation.idx;let r=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in <OR${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r},buildEmptyRepetitionError(e){let t=oe(e.repetition);0!==e.repetition.idx&&(t+=e.repetition.idx);return`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`},buildTokenNameError:e=>"deprecated",buildEmptyAlternationError:e=>`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in <OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`,buildTooManyAlternativesError:e=>`An Alternation cannot have more than 256 alternatives:\n<OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.\n has ${e.alternation.definition.length+1} alternatives.`,buildLeftRecursionError(e){const t=e.topLevelRule.name;return`Left Recursion found in grammar.\nrule: <${t}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${`${t} --\x3e ${(0,a.A)(e.leftRecursionPath,e=>e.name).concat([t]).join(" --\x3e ")}`}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError:e=>"deprecated",buildDuplicateRuleNameError(e){let t;t=e.topLevelRule instanceof D?e.topLevelRule.name:e.topLevelRule;return`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};class tn extends z{constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){(0,r.A)((0,i.A)(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){const t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{const t=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:t,type:Or.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}var nn=n(8139),rn=n(2528);const sn=function(e,t,n,r){for(var i=-1,s=null==e?0:e.length;++i<s;){var a=e[i];t(r,a,n(a),e)}return r};const an=function(e,t,n,r){return(0,X.A)(e,function(e,i,s){t(r,e,n(e),s)}),r};const on=function(e,t){return function(n,r){var i=(0,Q.A)(n)?sn:an,s=t?t():{};return i(n,e,(0,E.A)(r,2),s)}};var ln=Object.prototype.hasOwnProperty;const cn=on(function(e,t,n){ln.call(e,n)?e[n].push(t):(0,rn.A)(e,n,[t])});const un=function(e,t,n){var r=null==e?0:e.length;return r?(t=n||void 0===t?1:(0,d.A)(t),u(e,0,(t=r-t)<0?0:t)):[]};class dn extends le{constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,l.A)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,l.A)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){const r=t.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,r)}}updateExpectedNext(){(0,s.A)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}}class hn extends dn{constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){const e=t.concat(n),r=new U({definition:e});this.possibleTokTypes=fe(r),this.found=!0}}}class fn extends le{constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}}class pn extends fn{walkMany(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkMany(e,t,n)}}class mn extends fn{walkManySep(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkManySep(e,t,n)}}class gn extends fn{walkAtLeastOne(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkAtLeastOne(e,t,n)}}class yn extends fn{walkAtLeastOneSep(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkAtLeastOneSep(e,t,n)}}function Tn(e,t,n=[]){n=(0,l.A)(n);let i=[],a=0;function o(r){const s=Tn(r.concat(h(e,a+1)),t,n);return i.concat(s)}for(;n.length<t&&a<e.length;){const t=e[a];if(t instanceof U)return o(t.definition);if(t instanceof M)return o(t.definition);if(t instanceof F)i=o(t.definition);else{if(t instanceof G){return o(t.definition.concat([new B({definition:t.definition})]))}if(t instanceof K){return o([new U({definition:t.definition}),new B({definition:[new H({terminalType:t.separator})].concat(t.definition)})])}if(t instanceof V){const e=t.definition.concat([new B({definition:[new H({terminalType:t.separator})].concat(t.definition)})]);i=o(e)}else if(t instanceof B){const e=t.definition.concat([new B({definition:t.definition})]);i=o(e)}else{if(t instanceof j)return(0,r.A)(t.definition,e=>{!1===(0,s.A)(e.definition)&&(i=o(e.definition))}),i;if(!(t instanceof H))throw Error("non exhaustive match");n.push(t.terminalType)}}a++}return i.push({partialPath:n,suffixDef:h(e,a)}),i}function An(e,t,n,r){const i="EXIT_NONE_TERMINAL",a=[i],o="EXIT_ALTERNATIVE";let c=!1;const u=t.length,d=u-r-1,f=[],p=[];for(p.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!(0,s.A)(p);){const e=p.pop();if(e===o){c&&(0,$t.A)(p).idx<=d&&p.pop();continue}const r=e.def,m=e.idx,g=e.ruleStack,y=e.occurrenceStack;if((0,s.A)(r))continue;const T=r[0];if(T===i){const e={idx:m,def:h(r),ruleStack:un(g),occurrenceStack:un(y)};p.push(e)}else if(T instanceof H)if(m<u-1){const e=m+1;if(n(t[e],T.terminalType)){const t={idx:e,def:h(r),ruleStack:g,occurrenceStack:y};p.push(t)}}else{if(m!==u-1)throw Error("non exhaustive match");f.push({nextTokenType:T.terminalType,nextTokenOccurrence:T.idx,ruleStack:g,occurrenceStack:y}),c=!0}else if(T instanceof M){const e=(0,l.A)(g);e.push(T.nonTerminalName);const t=(0,l.A)(y);t.push(T.idx);const n={idx:m,def:T.definition.concat(a,h(r)),ruleStack:e,occurrenceStack:t};p.push(n)}else if(T instanceof F){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t={idx:m,def:T.definition.concat(h(r)),ruleStack:g,occurrenceStack:y};p.push(t)}else if(T instanceof G){const e=new B({definition:T.definition,idx:T.idx}),t={idx:m,def:T.definition.concat([e],h(r)),ruleStack:g,occurrenceStack:y};p.push(t)}else if(T instanceof K){const e=new H({terminalType:T.separator}),t=new B({definition:[e].concat(T.definition),idx:T.idx}),n={idx:m,def:T.definition.concat([t],h(r)),ruleStack:g,occurrenceStack:y};p.push(n)}else if(T instanceof V){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t=new H({terminalType:T.separator}),n=new B({definition:[t].concat(T.definition),idx:T.idx}),i={idx:m,def:T.definition.concat([n],h(r)),ruleStack:g,occurrenceStack:y};p.push(i)}else if(T instanceof B){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t=new B({definition:T.definition,idx:T.idx}),n={idx:m,def:T.definition.concat([t],h(r)),ruleStack:g,occurrenceStack:y};p.push(n)}else if(T instanceof j)for(let t=T.definition.length-1;t>=0;t--){const e={idx:m,def:T.definition[t].definition.concat(h(r)),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o)}else if(T instanceof U)p.push({idx:m,def:T.definition.concat(h(r)),ruleStack:g,occurrenceStack:y});else{if(!(T instanceof D))throw Error("non exhaustive match");p.push(vn(T,m,g,y))}}return f}function vn(e,t,n,r){const i=(0,l.A)(n);i.push(e.name);const s=(0,l.A)(r);return s.push(1),{idx:t,def:e.definition,ruleStack:i,occurrenceStack:s}}var Rn;function $n(e){if(e instanceof F||"Option"===e)return Rn.OPTION;if(e instanceof B||"Repetition"===e)return Rn.REPETITION;if(e instanceof G||"RepetitionMandatory"===e)return Rn.REPETITION_MANDATORY;if(e instanceof K||"RepetitionMandatoryWithSeparator"===e)return Rn.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof V||"RepetitionWithSeparator"===e)return Rn.REPETITION_WITH_SEPARATOR;if(e instanceof j||"Alternation"===e)return Rn.ALTERNATION;throw Error("non exhaustive match")}function En(e){const{occurrence:t,rule:n,prodType:r,maxLookahead:i}=e,s=$n(r);return s===Rn.ALTERNATION?bn(t,n,i):On(t,n,s,i)}function kn(e,t,n,i){const s=e.length,l=se(e,e=>se(e,e=>1===e.length));if(t)return function(t){const r=(0,a.A)(t,e=>e.GATE);for(let i=0;i<s;i++){const t=e[i],s=t.length,a=r[i];if(void 0===a||!1!==a.call(this))e:for(let e=0;e<s;e++){const r=t[e],s=r.length;for(let e=0;e<s;e++){const t=this.LA(e+1);if(!1===n(t,r[e]))continue e}return i}}};if(l&&!i){const t=(0,a.A)(e,e=>(0,he.A)(e)),n=(0,Ie.A)(t,(e,t,n)=>((0,r.A)(t,t=>{(0,o.A)(e,t.tokenTypeIdx)||(e[t.tokenTypeIdx]=n),(0,r.A)(t.categoryMatches,t=>{(0,o.A)(e,t)||(e[t]=n)})}),e),{});return function(){const e=this.LA(1);return n[e.tokenTypeIdx]}}return function(){for(let t=0;t<s;t++){const r=e[t],i=r.length;e:for(let e=0;e<i;e++){const i=r[e],s=i.length;for(let e=0;e<s;e++){const t=this.LA(e+1);if(!1===n(t,i[e]))continue e}return t}}}}function xn(e,t,n){const i=se(e,e=>1===e.length),a=e.length;if(i&&!n){const t=(0,he.A)(e);if(1===t.length&&(0,s.A)(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=(0,Ie.A)(t,(e,t,n)=>(e[t.tokenTypeIdx]=!0,(0,r.A)(t.categoryMatches,t=>{e[t]=!0}),e),[]);return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){e:for(let n=0;n<a;n++){const r=e[n],i=r.length;for(let e=0;e<i;e++){const n=this.LA(e+1);if(!1===t(n,r[e]))continue e}return!0}return!1}}!function(e){e[e.OPTION=0]="OPTION",e[e.REPETITION=1]="REPETITION",e[e.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",e[e.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",e[e.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",e[e.ALTERNATION=5]="ALTERNATION"}(Rn||(Rn={}));class In extends le{constructor(e,t,n){super(),this.topProd=e,this.targetOccurrence=t,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,t,n,r){return e.idx===this.targetOccurrence&&this.targetProdType===t&&(this.restDef=n.concat(r),!0)}walkOption(e,t,n){this.checkIsTarget(e,Rn.OPTION,t,n)||super.walkOption(e,t,n)}walkAtLeastOne(e,t,n){this.checkIsTarget(e,Rn.REPETITION_MANDATORY,t,n)||super.walkOption(e,t,n)}walkAtLeastOneSep(e,t,n){this.checkIsTarget(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR,t,n)||super.walkOption(e,t,n)}walkMany(e,t,n){this.checkIsTarget(e,Rn.REPETITION,t,n)||super.walkOption(e,t,n)}walkManySep(e,t,n){this.checkIsTarget(e,Rn.REPETITION_WITH_SEPARATOR,t,n)||super.walkOption(e,t,n)}}class Sn extends z{constructor(e,t,n){super(),this.targetOccurrence=e,this.targetProdType=t,this.targetRef=n,this.result=[]}checkIsTarget(e,t){e.idx!==this.targetOccurrence||this.targetProdType!==t||void 0!==this.targetRef&&e!==this.targetRef||(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,Rn.OPTION)}visitRepetition(e){this.checkIsTarget(e,Rn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,Rn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,Rn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,Rn.ALTERNATION)}}function Nn(e){const t=new Array(e);for(let n=0;n<e;n++)t[n]=[];return t}function Cn(e){let t=[""];for(let n=0;n<e.length;n++){const r=e[n],i=[];for(let e=0;e<t.length;e++){const n=t[e];i.push(n+"_"+r.tokenTypeIdx);for(let e=0;e<r.categoryMatches.length;e++){const t="_"+r.categoryMatches[e];i.push(n+t)}}t=i}return t}function wn(e,t,n){for(let r=0;r<e.length;r++){if(r===n)continue;const i=e[r];for(let e=0;e<t.length;e++){if(!0===i[t[e]])return!1}}return!0}function Ln(e,t){const n=(0,a.A)(e,e=>Tn([e],1)),i=Nn(n.length),o=(0,a.A)(n,e=>{const t={};return(0,r.A)(e,e=>{const n=Cn(e.partialPath);(0,r.A)(n,e=>{t[e]=!0})}),t});let l=n;for(let a=1;a<=t;a++){const e=l;l=Nn(e.length);for(let n=0;n<e.length;n++){const c=e[n];for(let e=0;e<c.length;e++){const u=c[e].partialPath,d=c[e].suffixDef,h=Cn(u);if(wn(o,h,n)||(0,s.A)(d)||u.length===t){const e=i[n];if(!1===_n(e,u)){e.push(u);for(let e=0;e<h.length;e++){const t=h[e];o[n][t]=!0}}}else{const e=Tn(d,a+1,u);l[n]=l[n].concat(e),(0,r.A)(e,e=>{const t=Cn(e.partialPath);(0,r.A)(t,e=>{o[n][e]=!0})})}}}}return i}function bn(e,t,n,r){const i=new Sn(e,Rn.ALTERNATION,r);return t.accept(i),Ln(i.result,n)}function On(e,t,n,r){const i=new Sn(e,n);t.accept(i);const s=i.result,a=new In(t,e,n).startWalking();return Ln([new U({definition:s}),new U({definition:a})],r)}function _n(e,t){e:for(let n=0;n<e.length;n++){const r=e[n];if(r.length===t.length){for(let e=0;e<r.length;e++){const n=t[e],i=r[e];if(!1===(n===i||void 0!==i.categoryMatchesMap[n.tokenTypeIdx]))continue e}return!0}}return!1}function Pn(e){return se(e,e=>se(e,e=>se(e,e=>(0,s.A)(e.categoryMatches))))}function Mn(e,t,n,s){const o=(0,nn.A)(e,e=>function(e,t){const n=new Fn;e.accept(n);const r=n.allProductions,s=cn(r,Dn),o=I(s,e=>e.length>1),l=(0,a.A)((0,i.A)(o),n=>{const r=Ue(n),i=t.buildDuplicateFoundError(e,n),s=oe(r),a={message:i,type:Or.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:s,occurrence:r.idx},o=Un(r);return o&&(a.parameter=o),a});return l}(e,n)),l=function(e,t,n){const i=[],s=(0,a.A)(t,e=>e.name);return(0,r.A)(e,e=>{const t=e.name;if(ne(s,t)){const r=n.buildNamespaceConflictError(e);i.push({message:r,type:Or.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:t})}}),i}(e,t,n),c=(0,nn.A)(e,e=>function(e,t){const n=new Bn;e.accept(n);const r=n.alternations,i=(0,nn.A)(r,n=>n.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:n}),type:Or.TOO_MANY_ALTS,ruleName:e.name,occurrence:n.idx}]:[]);return i}(e,n)),u=(0,nn.A)(e,t=>function(e,t,n,r){const i=[],s=(0,Ie.A)(t,(t,n)=>n.name===e.name?t+1:t,0);if(s>1){const t=r.buildDuplicateRuleNameError({topLevelRule:e,grammarName:n});i.push({message:t,type:Or.DUPLICATE_RULE_NAME,ruleName:e.name})}return i}(t,e,s,n));return o.concat(l,c,u)}function Dn(e){return`${oe(e)}_#_${e.idx}_#_${Un(e)}`}function Un(e){return e instanceof H?e.terminalType.name:e instanceof M?e.nonTerminalName:""}class Fn extends z{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}}function Gn(e,t,n,r=[]){const i=[],a=Kn(t.definition);if((0,s.A)(a))return[];{const t=e.name;ne(a,e)&&i.push({message:n.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:r}),type:Or.LEFT_RECURSION,ruleName:t});const s=Me(a,r.concat([e])),o=(0,nn.A)(s,t=>{const i=(0,l.A)(r);return i.push(t),Gn(e,t,n,i)});return i.concat(o)}}function Kn(e){let t=[];if((0,s.A)(e))return t;const n=Ue(e);if(n instanceof M)t.push(n.referencedRule);else if(n instanceof U||n instanceof F||n instanceof G||n instanceof K||n instanceof V||n instanceof B)t=t.concat(Kn(n.definition));else if(n instanceof j)t=(0,he.A)((0,a.A)(n.definition,e=>Kn(e.definition)));else if(!(n instanceof H))throw Error("non exhaustive match");const r=ae(n),i=e.length>1;if(r&&i){const n=h(e);return t.concat(Kn(n))}return t}class Bn extends z{constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}}function Vn(e,t,n){const i=new Bn;e.accept(i);let s=i.alternations;s=$e(s,e=>!0===e.ignoreAmbiguities);const o=(0,nn.A)(s,i=>{const s=i.idx,o=i.maxLookahead||t,l=bn(s,e,o,i),c=function(e,t,n,i){const s=[],o=(0,Ie.A)(e,(n,i,a)=>(!0===t.definition[a].ignoreAmbiguities||(0,r.A)(i,i=>{const o=[a];(0,r.A)(e,(e,n)=>{a!==n&&_n(e,i)&&!0!==t.definition[n].ignoreAmbiguities&&o.push(n)}),o.length>1&&!_n(s,i)&&(s.push(i),n.push({alts:o,path:i}))}),n),[]),l=(0,a.A)(o,e=>{const r=(0,a.A)(e.alts,e=>e+1);return{message:i.buildAlternationAmbiguityError({topLevelRule:n,alternation:t,ambiguityIndices:r,prefixPath:e.path}),type:Or.AMBIGUOUS_ALTS,ruleName:n.name,occurrence:t.idx,alternatives:e.alts}});return l}(l,i,e,n),u=function(e,t,n,r){const i=(0,Ie.A)(e,(e,t,n)=>{const r=(0,a.A)(t,e=>({idx:n,path:e}));return e.concat(r)},[]),s=De((0,nn.A)(i,e=>{if(!0===t.definition[e.idx].ignoreAmbiguities)return[];const s=e.idx,o=e.path,l=(0,Se.A)(i,e=>{return!0!==t.definition[e.idx].ignoreAmbiguities&&e.idx<s&&(n=e.path,r=o,n.length<r.length&&se(n,(e,t)=>{const n=r[t];return e===n||n.categoryMatchesMap[e.tokenTypeIdx]}));var n,r});return(0,a.A)(l,e=>{const i=[e.idx+1,s+1],a=0===t.idx?"":t.idx;return{message:r.buildAlternationPrefixAmbiguityError({topLevelRule:n,alternation:t,ambiguityIndices:i,prefixPath:e.path}),type:Or.AMBIGUOUS_PREFIX_ALTS,ruleName:n.name,occurrence:a,alternatives:i}})}));return s}(l,i,e,n);return c.concat(u)});return o}class jn extends z{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}}function Hn(e){const t=(0,Te.A)(e,{errMsgProvider:Jt}),n={};return(0,r.A)(e.rules,e=>{n[e.name]=e}),function(e,t){const n=new tn(e,t);return n.resolveRefs(),n.errors}(n,t.errMsgProvider)}const Wn="MismatchedTokenException",zn="NoViableAltException",Yn="EarlyExitException",Xn="NotAllInputParsedException",qn=[Wn,zn,Yn,Xn];function Qn(e){return ne(qn,e.name)}Object.freeze(qn);class Zn extends Error{constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}class Jn extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=Wn}}class er extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=zn}}class tr extends Zn{constructor(e,t){super(e,t),this.name=Xn}}class nr extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=Yn}}const rr={},ir="InRuleRecoveryException";class sr extends Error{constructor(e){super(e),this.name=ir}}function ar(e,t,n,r,i,s,a){const o=this.getKeyForAutomaticLookahead(r,i);let l=this.firstAfterRepMap[o];if(void 0===l){const e=this.getCurrRuleFullName();l=new s(this.getGAstProductions()[e],i).startWalking(),this.firstAfterRepMap[o]=l}let c=l.token,u=l.occurrence;const d=l.isEndOfRule;1===this.RULE_STACK.length&&d&&void 0===c&&(c=Xt,u=1),void 0!==c&&void 0!==u&&this.shouldInRepetitionRecoveryBeTried(c,u,a)&&this.tryInRepetitionRecovery(e,t,n,c)}const or=1024,lr=1280,cr=1536;function ur(e,t,n){return n|t|e}class dr{constructor(e){var t;this.maxLookahead=null!==(t=null==e?void 0:e.maxLookahead)&&void 0!==t?t:Lr.maxLookahead}validate(e){const t=this.validateNoLeftRecursion(e.rules);if((0,s.A)(t)){const n=this.validateEmptyOrAlternatives(e.rules),r=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),i=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...t,...n,...r,...i]}return t}validateNoLeftRecursion(e){return(0,nn.A)(e,e=>Gn(e,e,en))}validateEmptyOrAlternatives(e){return(0,nn.A)(e,e=>function(e,t){const n=new Bn;e.accept(n);const r=n.alternations;return(0,nn.A)(r,n=>{const r=un(n.definition);return(0,nn.A)(r,(r,i)=>{const a=An([r],[],kt,1);return(0,s.A)(a)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:n,emptyChoiceIdx:i}),type:Or.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:n.idx,alternative:i+1}]:[]})})}(e,en))}validateAmbiguousAlternationAlternatives(e,t){return(0,nn.A)(e,e=>Vn(e,t,en))}validateSomeNonEmptyLookaheadPath(e,t){return function(e,t,n){const i=[];return(0,r.A)(e,e=>{const a=new jn;e.accept(a);const o=a.allProductions;(0,r.A)(o,r=>{const a=$n(r),o=r.maxLookahead||t,l=On(r.idx,e,a,o)[0];if((0,s.A)((0,he.A)(l))){const t=n.buildEmptyRepetitionError({topLevelRule:e,repetition:r});i.push({message:t,type:Or.NO_NON_EMPTY_LOOKAHEAD,ruleName:e.name})}})}),i}(e,t,en)}buildLookaheadForAlternation(e){return function(e,t,n,r,i,s){const a=bn(e,t,n);return s(a,r,Pn(a)?xt:kt,i)}(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,kn)}buildLookaheadForOptional(e){return function(e,t,n,r,i,s){const a=On(e,t,i,n),o=Pn(a)?xt:kt;return s(a[0],o,r)}(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,$n(e.prodType),xn)}}const hr=new class extends z{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}};function fr(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffset<t.endOffset==!0&&(e.endOffset=t.endOffset)}function pr(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.startColumn=t.startColumn,e.startLine=t.startLine,e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine):e.endOffset<t.endOffset==!0&&(e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine)}function mr(e,t){Object.defineProperty(e,"name",{enumerable:!1,configurable:!0,writable:!1,value:t})}function gr(e,t){const n=(0,A.A)(e),r=n.length;for(let i=0;i<r;i++){const r=e[n[i]],s=r.length;for(let e=0;e<s;e++){const n=r[e];void 0===n.tokenTypeIdx&&this[n.name](n.children,t)}}}function yr(e,t){const n=function(){};mr(n,e+"BaseSemantics");const r={visit:function(e,t){if((0,Q.A)(e)&&(e=e[0]),!(0,ge.A)(e))return this[e.name](e.children,t)},validateVisitor:function(){const e=function(e,t){const n=function(e,t){const n=(0,Se.A)(t,t=>!1===(0,Ee.A)(e[t])),r=(0,a.A)(n,t=>({msg:`Missing visitor method: <${t}> on ${e.constructor.name} CST Visitor.`,type:Tr.MISSING_METHOD,methodName:t}));return De(r)}(e,t);return n}(this,t);if(!(0,s.A)(e)){const t=(0,a.A)(e,e=>e.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${t.join("\n\n").replace(/\n/g,"\n\t")}`)}}};return(n.prototype=r).constructor=n,n._RULE_NAMES=t,n}var Tr;!function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"}(Tr||(Tr={}));var Ar=n(3149);const vr={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(vr);const Rr=!0,$r=Math.pow(2,8)-1,Er=Yt({name:"RECORDING_PHASE_TOKEN",pattern:Mt.NA});Nt([Er]);const kr=qt(Er,"This IToken indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",-1,-1,-1,-1,-1,-1);Object.freeze(kr);const xr={name:"This CSTNode indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",children:{}};function Ir(e,t,n,r=!1){Cr(n);const i=(0,$t.A)(this.recordingProdStack),s=(0,Ee.A)(t)?t:t.DEF,a=new e({definition:[],idx:n});return r&&(a.separator=t.SEP),(0,o.A)(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(a),s.call(this),i.definition.push(a),this.recordingProdStack.pop(),vr}function Sr(e,t){Cr(t);const n=(0,$t.A)(this.recordingProdStack),i=!1===(0,Q.A)(e),s=!1===i?e:e.DEF,a=new j({definition:[],idx:t,ignoreAmbiguities:i&&!0===e.IGNORE_AMBIGUITIES});(0,o.A)(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);const l=J(s,e=>(0,Ee.A)(e.GATE));return a.hasPredicates=l,n.definition.push(a),(0,r.A)(s,e=>{const t=new U({definition:[]});a.definition.push(t),(0,o.A)(e,"IGNORE_AMBIGUITIES")?t.ignoreAmbiguities=e.IGNORE_AMBIGUITIES:(0,o.A)(e,"GATE")&&(t.ignoreAmbiguities=!0),this.recordingProdStack.push(t),e.ALT.call(this),this.recordingProdStack.pop()}),vr}function Nr(e){return 0===e?"":`${e}`}function Cr(e){if(e<0||e>$r){const t=new Error(`Invalid DSL Method idx value: <${e}>\n\tIdx value must be a none negative value smaller than ${$r+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}const wr=qt(Xt,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(wr);const Lr=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Zt,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),br=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});var Or,_r;function Pr(e=void 0){return function(){return e}}!function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"}(Or||(Or={}));class Mr{static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated.\t\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;const t=this.className;this.TRACE_INIT("toFastProps",()=>{c(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),(0,r.A)(this.definedRulesNames,e=>{const t=this[e].originalGrammarAction;let n;this.TRACE_INIT(`${e} Rule`,()=>{n=this.topLevelRuleRecord(e,t)}),this.gastProductionsCache[e]=n})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Hn({rules:(0,i.A)(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if((0,s.A)(n)&&!1===this.skipValidations){const n=(e={rules:(0,i.A)(this.gastProductionsCache),tokenTypes:(0,i.A)(this.tokensMap),errMsgProvider:en,grammarName:t},Mn((e=(0,Te.A)(e,{errMsgProvider:en})).rules,e.tokenTypes,e.errMsgProvider,e.grammarName)),r=function(e){const t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return(0,a.A)(t,e=>Object.assign({type:Or.CUSTOM_LOOKAHEAD_VALIDATION},e))}({lookaheadStrategy:this.lookaheadStrategy,rules:(0,i.A)(this.gastProductionsCache),tokenTypes:(0,i.A)(this.tokensMap),grammarName:t});this.definitionErrors=this.definitionErrors.concat(n,r)}var e}),(0,s.A)(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{const e=function(e){const t={};return(0,r.A)(e,e=>{const n=new me(e).startWalking();R(t,n)}),t}((0,i.A)(this.gastProductionsCache));this.resyncFollows=e}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var e,t;null===(t=(e=this.lookaheadStrategy).initialize)||void 0===t||t.call(e,{rules:(0,i.A)(this.gastProductionsCache)}),this.preComputeLookaheadFunctions((0,i.A)(this.gastProductionsCache))})),!Mr.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,s.A)(this.definitionErrors))throw e=(0,a.A)(this.definitionErrors,e=>e.message),new Error(`Parser Definition Errors detected:\n ${e.join("\n-------------------------------\n")}`)})}constructor(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;const n=this;if(n.initErrorHandler(t),n.initLexerAdapter(),n.initLooksAhead(t),n.initRecognizerEngine(e,t),n.initRecoverable(t),n.initTreeBuilder(t),n.initContentAssist(),n.initGastRecorder(t),n.initPerformanceTracer(t),(0,o.A)(t,"ignoredIssues"))throw new Error("The <ignoredIssues> IParserConfig property has been deprecated.\n\tPlease use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.");this.skipValidations=(0,o.A)(t,"skipValidations")?t.skipValidations:Lr.skipValidations}}Mr.DEFER_DEFINITION_ERRORS_HANDLING=!1,_r=Mr,[class{initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,o.A)(e,"recoveryEnabled")?e.recoveryEnabled:Lr.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=ar)}getTokenToInsert(e){const t=qt(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,n,r){const i=this.findReSyncTokenType(),s=this.exportLexerState(),a=[];let o=!1;const l=this.LA(1);let c=this.LA(1);const u=()=>{const e=this.LA(0),t=this.errorMessageProvider.buildMismatchTokenMessage({expected:r,actual:l,previous:e,ruleName:this.getCurrRuleFullName()}),n=new Jn(t,l,this.LA(0));n.resyncedTokens=un(a),this.SAVE_ERROR(n)};for(;!o;){if(this.tokenMatcher(c,r))return void u();if(n.call(this))return u(),void e.apply(this,t);this.tokenMatcher(c,i)?o=!0:(c=this.SKIP_TOKEN(),this.addToResyncTokens(c,a))}this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,t,n){return!1!==n&&!this.tokenMatcher(this.LA(1),e)&&!this.isBackTracking()&&!this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t))}getFollowsForInRuleRecovery(e,t){const n=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){const e=this.SKIP_TOKEN();return this.consumeToken(),e}throw new sr("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e))return!1;if((0,s.A)(t))return!1;const n=this.LA(1);return void 0!==(0,Fe.A)(t,e=>this.tokenMatcher(n,e))}canRecoverWithSingleTokenDeletion(e){return!!this.canTokenTypeBeDeletedInRecovery(e)&&this.tokenMatcher(this.LA(2),e)}isInCurrentRuleReSyncSet(e){const t=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(t);return ne(n,e)}findReSyncTokenType(){const e=this.flattenFollowSet();let t=this.LA(1),n=2;for(;;){const r=(0,Fe.A)(e,e=>Qt(t,e));if(void 0!==r)return r;t=this.LA(n),n++}}getCurrFollowKey(){if(1===this.RULE_STACK.length)return rr;const e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){const e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return(0,a.A)(e,(n,r)=>0===r?rr:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:t[r],inRule:this.shortRuleNameToFullName(e[r-1])})}flattenFollowSet(){const e=(0,a.A)(this.buildFullFollowKeyStack(),e=>this.getFollowSetFromFollowKey(e));return(0,he.A)(e)}getFollowSetFromFollowKey(e){if(e===rr)return[Xt];const t=e.ruleName+e.idxInCallingRule+pe+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,Xt)||t.push(e),t}reSyncTo(e){const t=[];let n=this.LA(1);for(;!1===this.tokenMatcher(n,e);)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,t);return un(t)}attemptInRepetitionRecovery(e,t,n,r,i,s,a){}getCurrentGrammarPath(e,t){return{ruleStack:this.getHumanReadableRuleStack(),occurrenceStack:(0,l.A)(this.RULE_OCCURRENCE_STACK),lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return(0,a.A)(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}},class{initLooksAhead(e){this.dynamicTokensEnabled=(0,o.A)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Lr.dynamicTokensEnabled,this.maxLookahead=(0,o.A)(e,"maxLookahead")?e.maxLookahead:Lr.maxLookahead,this.lookaheadStrategy=(0,o.A)(e,"lookaheadStrategy")?e.lookaheadStrategy:new dr({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){(0,r.A)(e,e=>{this.TRACE_INIT(`${e.name} Rule Lookahead`,()=>{const{alternation:t,repetition:n,option:i,repetitionMandatory:s,repetitionMandatoryWithSeparator:a,repetitionWithSeparator:o}=function(e){hr.reset(),e.accept(hr);const t=hr.dslMethods;return hr.reset(),t}(e);(0,r.A)(t,t=>{const n=0===t.idx?"":t.idx;this.TRACE_INIT(`${oe(t)}${n}`,()=>{const n=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:t.idx,rule:e,maxLookahead:t.maxLookahead||this.maxLookahead,hasPredicates:t.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),r=ur(this.fullRuleNameToShort[e.name],256,t.idx);this.setLaFuncCache(r,n)})}),(0,r.A)(n,t=>{this.computeLookaheadFunc(e,t.idx,768,"Repetition",t.maxLookahead,oe(t))}),(0,r.A)(i,t=>{this.computeLookaheadFunc(e,t.idx,512,"Option",t.maxLookahead,oe(t))}),(0,r.A)(s,t=>{this.computeLookaheadFunc(e,t.idx,or,"RepetitionMandatory",t.maxLookahead,oe(t))}),(0,r.A)(a,t=>{this.computeLookaheadFunc(e,t.idx,cr,"RepetitionMandatoryWithSeparator",t.maxLookahead,oe(t))}),(0,r.A)(o,t=>{this.computeLookaheadFunc(e,t.idx,lr,"RepetitionWithSeparator",t.maxLookahead,oe(t))})})})}computeLookaheadFunc(e,t,n,r,i,s){this.TRACE_INIT(`${s}${0===t?"":t}`,()=>{const s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:r}),a=ur(this.fullRuleNameToShort[e.name],n,t);this.setLaFuncCache(a,s)})}getKeyForAutomaticLookahead(e,t){return ur(this.getLastExplicitRuleShortName(),e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},class{initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,o.A)(e,"nodeLocationTracking")?e.nodeLocationTracking:Lr.nodeLocationTracking,this.outputCst)if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=pr,this.setNodeLocationFromNode=pr,this.cstPostRule=Rt.A,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=fr,this.setNodeLocationFromNode=fr,this.cstPostRule=Rt.A,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else{if(!/none/i.test(this.nodeLocationTracking))throw Error(`Invalid <nodeLocationTracking> config option: "${e.nodeLocationTracking}"`);this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=Rt.A,this.setInitialNodeLocation=Rt.A}else this.cstInvocationStateUpdate=Rt.A,this.cstFinallyStateUpdate=Rt.A,this.cstPostTerminal=Rt.A,this.cstPostNonTerminal=Rt.A,this.cstPostRule=Rt.A}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){const t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){const t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){const t=this.LA(0),n=e.location;n.startOffset<=t.startOffset==1?(n.endOffset=t.endOffset,n.endLine=t.endLine,n.endColumn=t.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){const t=this.LA(0),n=e.location;n.startOffset<=t.startOffset==1?n.endOffset=t.endOffset:n.startOffset=NaN}cstPostTerminal(e,t){const n=this.CST_STACK[this.CST_STACK.length-1];var r,i,s;i=t,s=e,void 0===(r=n).children[s]?r.children[s]=[i]:r.children[s].push(i),this.setNodeLocationFromToken(n.location,t)}cstPostNonTerminal(e,t){const n=this.CST_STACK[this.CST_STACK.length-1];!function(e,t,n){void 0===e.children[t]?e.children[t]=[n]:e.children[t].push(n)}(n,t,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if((0,ge.A)(this.baseCstVisitorConstructor)){const e=yr(this.className,(0,A.A)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if((0,ge.A)(this.baseCstVisitorWithDefaultsConstructor)){const e=function(e,t,n){const i=function(){};mr(i,e+"BaseSemanticsWithDefaults");const s=Object.create(n.prototype);return(0,r.A)(t,e=>{s[e]=gr}),(i.prototype=s).constructor=i,i}(this.className,(0,A.A)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){const e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},class{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(!0!==this.selfAnalysisDone)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):wr}LA(e){const t=this.currIdx+e;return t<0||this.tokVectorLength<=t?wr:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},class{initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=xt,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,o.A)(t,"serializedGrammar"))throw Error("The Parser's configuration can no longer contain a <serializedGrammar> property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.");if((0,Q.A)(e)){if((0,s.A)(e))throw Error("A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis no longer a Token vector (since v4.0).");if("number"==typeof e[0].startOffset)throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.")}if((0,Q.A)(e))this.tokensMap=(0,Ie.A)(e,(e,t)=>(e[t.name]=t,e),{});else if((0,o.A)(e,"modes")&&se((0,he.A)((0,i.A)(e.modes)),bt)){const t=(0,he.A)((0,i.A)(e.modes)),n=de(t);this.tokensMap=(0,Ie.A)(n,(e,t)=>(e[t.name]=t,e),{})}else{if(!(0,Ar.A)(e))throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap=(0,l.A)(e)}this.tokensMap.EOF=Xt;const n=(0,o.A)(e,"modes")?(0,he.A)((0,i.A)(e.modes)):(0,i.A)(e),r=se(n,e=>(0,s.A)(e.categoryMatches));this.tokenMatcher=r?xt:kt,Nt((0,i.A)(this.tokensMap))}defineRule(e,t,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const r=(0,o.A)(n,"resyncEnabled")?n.resyncEnabled:br.resyncEnabled,i=(0,o.A)(n,"recoveryValueFunc")?n.recoveryValueFunc:br.recoveryValueFunc,s=this.ruleShortNameIdx<<12;let a;return this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s,a=!0===this.outputCst?function(...n){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),t.apply(this,n);const r=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(r),r}catch(a){return this.invokeRuleCatch(a,r,i)}finally{this.ruleFinallyStateUpdate()}}:function(...n){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),t.apply(this,n)}catch(a){return this.invokeRuleCatch(a,r,i)}finally{this.ruleFinallyStateUpdate()}},Object.assign(a,{ruleName:e,originalGrammarAction:t})}invokeRuleCatch(e,t,n){const r=1===this.RULE_STACK.length,i=t&&!this.isBackTracking()&&this.recoveryEnabled;if(Qn(e)){const t=e;if(i){const r=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(r)){if(t.resyncedTokens=this.reSyncTo(r),this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];return e.recoveredNode=!0,e}return n(e)}if(this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];e.recoveredNode=!0,t.partialCstResult=e}throw t}if(r)return this.moveToTerminatedState(),n(e);throw t}throw e}optionInternal(e,t){const n=this.getKeyForAutomaticLookahead(512,t);return this.optionInternalLogic(e,t,n)}optionInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof e){r=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=()=>t.call(this)&&e.call(this)}}else r=e;if(!0===i.call(this))return r.call(this)}atLeastOneInternal(e,t){const n=this.getKeyForAutomaticLookahead(or,e);return this.atLeastOneInternalLogic(e,t,n)}atLeastOneInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;if(!0!==i.call(this))throw this.raiseEarlyExitException(e,Rn.REPETITION_MANDATORY,t.ERR_MSG);{let e=this.doSingleRepetition(r);for(;!0===i.call(this)&&!0===e;)e=this.doSingleRepetition(r)}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],i,or,e,gn)}atLeastOneSepFirstInternal(e,t){const n=this.getKeyForAutomaticLookahead(cr,e);this.atLeastOneSepFirstInternalLogic(e,t,n)}atLeastOneSepFirstInternalLogic(e,t,n){const r=t.DEF,i=t.SEP;if(!0!==this.getLaFuncFromCache(n).call(this))throw this.raiseEarlyExitException(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG);{r.call(this);const t=()=>this.tokenMatcher(this.LA(1),i);for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,r,yn],t,cr,e,yn)}}manyInternal(e,t){const n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,t,n)}manyInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;let s=!0;for(;!0===i.call(this)&&!0===s;)s=this.doSingleRepetition(r);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],i,768,e,pn,s)}manySepFirstInternal(e,t){const n=this.getKeyForAutomaticLookahead(lr,e);this.manySepFirstInternalLogic(e,t,n)}manySepFirstInternalLogic(e,t,n){const r=t.DEF,i=t.SEP;if(!0===this.getLaFuncFromCache(n).call(this)){r.call(this);const t=()=>this.tokenMatcher(this.LA(1),i);for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,r,mn],t,lr,e,mn)}}repetitionSepSecondInternal(e,t,n,r,i){for(;n();)this.CONSUME(t),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,n,r,i],n,cr,e,i)}doSingleRepetition(e){const t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){const n=this.getKeyForAutomaticLookahead(256,t),r=(0,Q.A)(e)?e:e.DEF,i=this.getLaFuncFromCache(n).call(this,r);if(void 0!==i)return r[i].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),0===this.RULE_STACK.length&&!1===this.isAtEndOfInput()){const e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new tr(t,e))}}subruleInternal(e,t,n){let r;try{const i=void 0!==n?n.ARGS:void 0;return this.subruleIdx=t,r=e.apply(this,i),this.cstPostNonTerminal(r,void 0!==n&&void 0!==n.LABEL?n.LABEL:e.ruleName),r}catch(i){throw this.subruleInternalError(i,n,e.ruleName)}}subruleInternalError(e,t,n){throw Qn(e)&&void 0!==e.partialCstResult&&(this.cstPostNonTerminal(e.partialCstResult,void 0!==t&&void 0!==t.LABEL?t.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,t,n){let r;try{const t=this.LA(1);!0===this.tokenMatcher(t,e)?(this.consumeToken(),r=t):this.consumeInternalError(e,t,n)}catch(i){r=this.consumeInternalRecovery(e,t,i)}return this.cstPostTerminal(void 0!==n&&void 0!==n.LABEL?n.LABEL:e.name,r),r}consumeInternalError(e,t,n){let r;const i=this.LA(0);throw r=void 0!==n&&n.ERR_MSG?n.ERR_MSG:this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Jn(r,t,i))}consumeInternalRecovery(e,t,n){if(!this.recoveryEnabled||"MismatchedTokenException"!==n.name||this.isBackTracking())throw n;{const i=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,i)}catch(r){throw r.name===ir?n:r}}}saveRecogState(){const e=this.errors,t=(0,l.A)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return 0!==this.isBackTrackingStack.length}getCurrRuleFullName(){const e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),Xt)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},class{ACTION(e){return e.call(this)}consume(e,t,n){return this.consumeInternal(t,e,n)}subrule(e,t,n){return this.subruleInternal(t,e,n)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,n=br){if(ne(this.definedRulesNames,e)){const t={message:en.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Or.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(t)}this.definedRulesNames.push(e);const r=this.defineRule(e,t,n);return this[e]=r,r}OVERRIDE_RULE(e,t,n=br){const r=function(e,t,n){const r=[];let i;return ne(t,e)||(i=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${n}<-as it is not defined in any of the super grammars `,r.push({message:i,type:Or.INVALID_RULE_OVERRIDE,ruleName:e})),r}(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(r);const i=this.defineRule(e,t,n);return this[e]=i,i}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);const n=this.saveRecogState();try{return e.apply(this,t),!0}catch(r){if(Qn(r))return!1;throw r}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return e=(0,i.A)(this.gastProductionsCache),(0,a.A)(e,W);var e}},class{initErrorHandler(e){this._errors=[],this.errorMessageProvider=(0,o.A)(e,"errorMessageProvider")?e.errorMessageProvider:Lr.errorMessageProvider}SAVE_ERROR(e){if(Qn(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,l.A)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return(0,l.A)(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,n){const r=this.getCurrRuleFullName(),i=On(e,this.getGAstProductions()[r],t,this.maxLookahead)[0],s=[];for(let o=1;o<=this.maxLookahead;o++)s.push(this.LA(o));const a=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:i,actual:s,previous:this.LA(0),customUserDescription:n,ruleName:r});throw this.SAVE_ERROR(new nr(a,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){const n=this.getCurrRuleFullName(),r=bn(e,this.getGAstProductions()[n],this.maxLookahead),i=[];for(let o=1;o<=this.maxLookahead;o++)i.push(this.LA(o));const s=this.LA(0),a=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:r,actual:i,previous:s,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new er(a,this.LA(1),s))}},class{initContentAssist(){}computeContentAssist(e,t){const n=this.gastProductionsCache[e];if((0,ge.A)(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return An([n],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){const t=Ue(e.ruleStack),n=this.getGAstProductions()[t];return new hn(n,e).startWalking()}},class{initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){const t=e>0?e:"";this[`CONSUME${t}`]=function(t,n){return this.consumeInternalRecord(t,e,n)},this[`SUBRULE${t}`]=function(t,n){return this.subruleInternalRecord(t,e,n)},this[`OPTION${t}`]=function(t){return this.optionInternalRecord(t,e)},this[`OR${t}`]=function(t){return this.orInternalRecord(t,e)},this[`MANY${t}`]=function(t){this.manyInternalRecord(e,t)},this[`MANY_SEP${t}`]=function(t){this.manySepFirstInternalRecord(e,t)},this[`AT_LEAST_ONE${t}`]=function(t){this.atLeastOneInternalRecord(e,t)},this[`AT_LEAST_ONE_SEP${t}`]=function(t){this.atLeastOneSepFirstInternalRecord(e,t)}}this.consume=function(e,t,n){return this.consumeInternalRecord(t,e,n)},this.subrule=function(e,t,n){return this.subruleInternalRecord(t,e,n)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{const e=this;for(let t=0;t<10;t++){const n=t>0?t:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return wr}topLevelRuleRecord(e,t){try{const n=new D({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),t.call(this),this.recordingProdStack.pop(),n}catch(n){if(!0!==n.KNOWN_RECORDER_ERROR)try{n.message=n.message+'\n\t This error was thrown during the "grammar recording phase" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording'}catch(r){throw n}throw n}}optionInternalRecord(e,t){return Ir.call(this,F,e,t)}atLeastOneInternalRecord(e,t){Ir.call(this,G,t,e)}atLeastOneSepFirstInternalRecord(e,t){Ir.call(this,K,t,e,Rr)}manyInternalRecord(e,t){Ir.call(this,B,t,e)}manySepFirstInternalRecord(e,t){Ir.call(this,V,t,e,Rr)}orInternalRecord(e,t){return Sr.call(this,e,t)}subruleInternalRecord(e,t,n){if(Cr(t),!e||!1===(0,o.A)(e,"ruleName")){const n=new Error(`<SUBRULE${Nr(t)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=(0,$t.A)(this.recordingProdStack),i=e.ruleName,s=new M({idx:t,nonTerminalName:i,label:null==n?void 0:n.LABEL,referencedRule:void 0});return r.definition.push(s),this.outputCst?xr:vr}consumeInternalRecord(e,t,n){if(Cr(t),!wt(e)){const n=new Error(`<CONSUME${Nr(t)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=(0,$t.A)(this.recordingProdStack),i=new H({idx:t,terminalType:e,label:null==n?void 0:n.LABEL});return r.definition.push(i),kr}},class{initPerformanceTracer(e){if((0,o.A)(e,"traceInitPerf")){const t=e.traceInitPerf,n="number"==typeof t;this.traceInitMaxIdent=n?t:1/0,this.traceInitPerf=n?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Lr.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${e}>`);const{time:r,value:i}=Et(t),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${e}> time: ${r}ms`),this.traceInitIndent--,i}return t()}}].forEach(e=>{const t=e.prototype;Object.getOwnPropertyNames(t).forEach(n=>{if("constructor"===n)return;const r=Object.getOwnPropertyDescriptor(t,n);r&&(r.get||r.set)?Object.defineProperty(_r.prototype,n,r):_r.prototype[n]=e.prototype[n]})});class Dr extends Mr{constructor(e,t=Lr){const n=(0,l.A)(t);n.outputCst=!1,super(e,n)}}},9683:(e,t,n)=>{n.d(t,{DM:()=>p,OP:()=>m,SD:()=>a,Uo:()=>d,VN:()=>u,XG:()=>o,YE:()=>l,cQ:()=>c,jm:()=>h});var r=n(2479),i=n(1719),s=n(6373);function a(e){for(const[t,n]of Object.entries(e))t.startsWith("$")||(Array.isArray(n)?n.forEach((n,i)=>{(0,r.ng)(n)&&(n.$container=e,n.$containerProperty=t,n.$containerIndex=i)}):(0,r.ng)(n)&&(n.$container=e,n.$containerProperty=t))}function o(e,t){let n=e;for(;n;){if(t(n))return n;n=n.$container}}function l(e){const t=c(e).$document;if(!t)throw new Error("AST node has no document.");return t}function c(e){for(;e.$container;)e=e.$container;return e}function u(e,t){if(!e)throw new Error("Node must be an AstNode.");const n=null==t?void 0:t.range;return new i.fq(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){const i=t.keys[t.keyIndex];if(!i.startsWith("$")){const s=e[i];if((0,r.ng)(s)){if(t.keyIndex++,f(s,n))return{done:!1,value:s}}else if(Array.isArray(s)){for(;t.arrayIndex<s.length;){const e=s[t.arrayIndex++];if((0,r.ng)(e)&&f(e,n))return{done:!1,value:e}}t.arrayIndex=0}}t.keyIndex++}return i.Rf})}function d(e,t){if(!e)throw new Error("Root node must be an AstNode.");return new i.Vj(e,e=>u(e,t))}function h(e,t){if(!e)throw new Error("Root node must be an AstNode.");return(null==t?void 0:t.range)&&!f(e,t.range)?new i.Vj(e,()=>[]):new i.Vj(e,e=>u(e,t),{includeRoot:!0})}function f(e,t){var n;if(!t)return!0;const r=null===(n=e.$cstNode)||void 0===n?void 0:n.range;return!!r&&(0,s.r4)(r,t)}function p(e){return new i.fq(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){const n=t.keys[t.keyIndex];if(!n.startsWith("$")){const i=e[n];if((0,r.A_)(i))return t.keyIndex++,{done:!1,value:{reference:i,container:e,property:n}};if(Array.isArray(i)){for(;t.arrayIndex<i.length;){const s=t.arrayIndex++,a=i[s];if((0,r.A_)(a))return{done:!1,value:{reference:a,container:e,property:n,index:s}}}t.arrayIndex=0}}t.keyIndex++}return i.Rf})}function m(e,t){const n=e.getTypeMetaData(t.$type),r=t;for(const i of n.properties)void 0!==i.defaultValue&&void 0===r[i.name]&&(r[i.name]=g(i.defaultValue))}function g(e){return Array.isArray(e)?[...e.map(g)]:e}},9850:(e,t,n)=>{t.Qi=t.XO=void 0;const r=n(9590),i=n(966),s=n(2676);var a;!function(e){e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:s.Event.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:s.Event.None}),e.is=function(t){const n=t;return n&&(n===e.None||n===e.Cancelled||i.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}}(a||(t.XO=a={}));const o=Object.freeze(function(e,t){const n=(0,r.default)().timer.setTimeout(e.bind(t),0);return{dispose(){n.dispose()}}});class l{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?o:(this._emitter||(this._emitter=new s.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}}t.Qi=class{get token(){return this._token||(this._token=new l),this._token}cancel(){this._token?this._token.cancel():this._token=a.Cancelled}dispose(){this._token?this._token instanceof l&&this._token.dispose():this._token=a.None}}}}]); \ No newline at end of file diff --git a/developer/assets/js/8756.26be73b3.js b/developer/assets/js/8756.26be73b3.js new file mode 100644 index 0000000..0262fcb --- /dev/null +++ b/developer/assets/js/8756.26be73b3.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8756],{5937:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(2453),n=s(4886);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])},8756:(t,e,s)=>{s.d(e,{diagram:()=>f});var i=s(9625),n=s(1152),r=s(45),a=(s(5164),s(8698),s(5894),s(3245),s(2387),s(92),s(3226)),c=s(7633),o=s(797),l=s(451),h=s(5582),u=s(5937),y=function(){var t=(0,o.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],s=[1,10],i=[1,11],n=[1,12],r=[1,13],a=[1,20],c=[1,21],l=[1,22],h=[1,23],u=[1,24],y=[1,19],d=[1,25],p=[1,26],_=[1,18],g=[1,33],b=[1,34],m=[1,35],f=[1,36],E=[1,37],k=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],O=[1,42],S=[1,43],T=[1,52],A=[40,50,68,69],R=[1,63],N=[1,61],I=[1,58],C=[1,62],x=[1,64],D=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],v=[63,64,65,66,67],$=[1,81],K=[1,80],w=[1,78],L=[1,79],M=[6,10,42,47],F=[6,10,13,41,42,47,48,49],B=[1,89],Y=[1,88],P=[1,87],z=[19,56],G=[1,98],U=[1,97],Z=[19,56,58,60],j={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:(0,o.K2)(function(t,e,s,i,n,r,a){var c=r.length-1;switch(n){case 1:break;case 2:case 6:case 7:this.$=[];break;case 3:r[c-1].push(r[c]),this.$=r[c-1];break;case 4:case 5:case 55:case 78:case 62:case 63:case 66:this.$=r[c];break;case 8:i.addEntity(r[c-4]),i.addEntity(r[c-2]),i.addRelationship(r[c-4],r[c],r[c-2],r[c-3]);break;case 9:i.addEntity(r[c-8]),i.addEntity(r[c-4]),i.addRelationship(r[c-8],r[c],r[c-4],r[c-5]),i.setClass([r[c-8]],r[c-6]),i.setClass([r[c-4]],r[c-2]);break;case 10:i.addEntity(r[c-6]),i.addEntity(r[c-2]),i.addRelationship(r[c-6],r[c],r[c-2],r[c-3]),i.setClass([r[c-6]],r[c-4]);break;case 11:i.addEntity(r[c-6]),i.addEntity(r[c-4]),i.addRelationship(r[c-6],r[c],r[c-4],r[c-5]),i.setClass([r[c-4]],r[c-2]);break;case 12:i.addEntity(r[c-3]),i.addAttributes(r[c-3],r[c-1]);break;case 13:i.addEntity(r[c-5]),i.addAttributes(r[c-5],r[c-1]),i.setClass([r[c-5]],r[c-3]);break;case 14:i.addEntity(r[c-2]);break;case 15:i.addEntity(r[c-4]),i.setClass([r[c-4]],r[c-2]);break;case 16:i.addEntity(r[c]);break;case 17:i.addEntity(r[c-2]),i.setClass([r[c-2]],r[c]);break;case 18:i.addEntity(r[c-6],r[c-4]),i.addAttributes(r[c-6],r[c-1]);break;case 19:i.addEntity(r[c-8],r[c-6]),i.addAttributes(r[c-8],r[c-1]),i.setClass([r[c-8]],r[c-3]);break;case 20:i.addEntity(r[c-5],r[c-3]);break;case 21:i.addEntity(r[c-7],r[c-5]),i.setClass([r[c-7]],r[c-2]);break;case 22:i.addEntity(r[c-3],r[c-1]);break;case 23:i.addEntity(r[c-5],r[c-3]),i.setClass([r[c-5]],r[c]);break;case 24:case 25:this.$=r[c].trim(),i.setAccTitle(this.$);break;case 26:case 27:this.$=r[c].trim(),i.setAccDescription(this.$);break;case 32:i.setDirection("TB");break;case 33:i.setDirection("BT");break;case 34:i.setDirection("RL");break;case 35:i.setDirection("LR");break;case 36:this.$=r[c-3],i.addClass(r[c-2],r[c-1]);break;case 37:case 38:case 56:case 64:case 43:this.$=[r[c]];break;case 39:case 40:this.$=r[c-2].concat([r[c]]);break;case 41:this.$=r[c-2],i.setClass(r[c-1],r[c]);break;case 42:this.$=r[c-3],i.addCssStyles(r[c-2],r[c-1]);break;case 44:case 65:r[c-2].push(r[c]),this.$=r[c-2];break;case 46:this.$=r[c-1]+r[c];break;case 54:case 76:case 77:case 67:this.$=r[c].replace(/"/g,"");break;case 57:r[c].push(r[c-1]),this.$=r[c];break;case 58:this.$={type:r[c-1],name:r[c]};break;case 59:this.$={type:r[c-2],name:r[c-1],keys:r[c]};break;case 60:this.$={type:r[c-2],name:r[c-1],comment:r[c]};break;case 61:this.$={type:r[c-3],name:r[c-2],keys:r[c-1],comment:r[c]};break;case 68:this.$={cardA:r[c],relType:r[c-1],cardB:r[c-2]};break;case 69:this.$=i.Cardinality.ZERO_OR_ONE;break;case 70:this.$=i.Cardinality.ZERO_OR_MORE;break;case 71:this.$=i.Cardinality.ONE_OR_MORE;break;case 72:this.$=i.Cardinality.ONLY_ONE;break;case 73:this.$=i.Cardinality.MD_PARENT;break;case 74:this.$=i.Identification.NON_IDENTIFYING;break;case 75:this.$=i.Identification.IDENTIFYING}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:a,34:c,35:l,36:h,37:u,40:y,43:d,44:p,50:_},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:a,34:c,35:l,36:h,37:u,40:y,43:d,44:p,50:_},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:g,64:b,65:m,66:f,67:E}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(k,[2,54]),t(k,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:O,41:S},{16:44,40:O,41:S},{16:45,40:O,41:S},t(e,[2,4]),{11:46,40:y,50:_},{16:47,40:O,41:S},{18:48,19:[1,49],51:50,52:51,56:T},{11:53,40:y,50:_},{62:54,68:[1,55],69:[1,56]},t(A,[2,69]),t(A,[2,70]),t(A,[2,71]),t(A,[2,72]),t(A,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:R,38:57,41:N,42:I,45:59,46:60,48:C,49:x},t(D,[2,37]),t(D,[2,38]),{16:65,40:O,41:S,42:I},{13:R,38:66,41:N,42:I,45:59,46:60,48:C,49:x},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:I,63:g,64:b,65:m,66:f,67:E}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:T},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:g,64:b,65:m,66:f,67:E},t(v,[2,74]),t(v,[2,75]),{6:$,10:K,39:77,42:w,47:L},{40:[1,82],41:[1,83]},t(M,[2,43],{46:84,13:R,41:N,48:C,49:x}),t(F,[2,45]),t(F,[2,50]),t(F,[2,51]),t(F,[2,52]),t(F,[2,53]),t(e,[2,41],{42:I}),{6:$,10:K,39:85,42:w,47:L},{14:86,40:B,50:Y,70:P},{16:90,40:O,41:S},{11:91,40:y,50:_},{18:92,19:[1,93],51:50,52:51,56:T},t(e,[2,12]),{19:[2,57]},t(z,[2,58],{54:94,55:95,57:96,59:G,60:U}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:R,41:N,45:101,46:60,48:C,49:x},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(D,[2,39]),t(D,[2,40]),t(F,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:I},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(z,[2,59],{55:106,58:[1,107],60:U}),t(z,[2,60]),t(Z,[2,64]),t(z,[2,67]),t(Z,[2,66]),{18:108,19:[1,109],51:50,52:51,56:T},{16:110,40:O,41:S},t(M,[2,44],{46:84,13:R,41:N,48:C,49:x}),{14:111,40:B,50:Y,70:P},{16:112,40:O,41:S},{14:113,40:B,50:Y,70:P},t(e,[2,13]),t(z,[2,61]),{57:114,59:G},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:I}),t(e,[2,11]),{13:[1,117],42:I},t(e,[2,10]),t(Z,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:T},{14:120,40:B,50:Y,70:P},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:(0,o.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,c="",l=0,h=0,u=0,y=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(p.yy[_]=this.yy[_]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var g=d.yylloc;r.push(g);var b=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,o.K2)(m,"lex");for(var f,E,k,O,S,T,A,R,N,I={};;){if(k=s[s.length-1],this.defaultActions[k]?O=this.defaultActions[k]:(null==f&&(f=m()),O=a[k]&&a[k][f]),void 0===O||!O.length||!O[0]){var C="";for(T in N=[],a[k])this.terminals_[T]&&T>2&&N.push("'"+this.terminals_[T]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+N.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[f]||f,line:d.yylineno,loc:g,expected:N})}if(O[0]instanceof Array&&O.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+f);switch(O[0]){case 1:s.push(f),n.push(d.yytext),r.push(d.yylloc),s.push(O[1]),f=null,E?(f=E,E=null):(h=d.yyleng,c=d.yytext,l=d.yylineno,g=d.yylloc,u>0&&u--);break;case 2:if(A=this.productions_[O[1]][1],I.$=n[n.length-A],I._$={first_line:r[r.length-(A||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(A||1)].first_column,last_column:r[r.length-1].last_column},b&&(I._$.range=[r[r.length-(A||1)].range[0],r[r.length-1].range[1]]),void 0!==(S=this.performAction.apply(I,[c,h,l,p.yy,O[1],n,r].concat(y))))return S;A&&(s=s.slice(0,-1*A*2),n=n.slice(0,-1*A),r=r.slice(0,-1*A)),s.push(this.productions_[O[1]][0]),n.push(I.$),r.push(I._$),R=a[s[s.length-2]][s[s.length-1]],s.push(R);break;case 3:return!0}}return!0},"parse")},W=function(){return{EOF:1,parseError:(0,o.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,o.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,o.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),24;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),26;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:case 23:case 28:case 35:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;case 18:case 19:case 38:return 49;case 20:case 37:return 42;case 21:return 15;case 22:case 36:return 13;case 24:return 59;case 25:case 26:return 56;case 27:return 60;case 29:return this.popState(),19;case 30:case 73:return e.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;case 34:return this.popState(),10;case 39:return this.begin("style"),37;case 40:return 43;case 41:case 45:case 46:case 59:return 63;case 42:case 43:case 44:case 52:case 54:case 61:return 65;case 47:case 48:case 49:case 50:case 51:case 53:case 60:return 64;case 55:case 56:case 57:case 58:return 66;case 62:return 67;case 63:case 66:case 67:case 68:return 68;case 64:case 65:return 69;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74],inclusive:!0}}}}();function X(){this.yy={}}return j.lexer=W,(0,o.K2)(X,"Parser"),X.prototype=j,j.Parser=X,new X}();y.parser=y;var d=y,p=class{constructor(){this.entities=new Map,this.relationships=[],this.classes=new Map,this.direction="TB",this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},this.setAccTitle=c.SV,this.getAccTitle=c.iN,this.setAccDescription=c.EI,this.getAccDescription=c.m7,this.setDiagramTitle=c.ke,this.getDiagramTitle=c.ab,this.getConfig=(0,o.K2)(()=>(0,c.D7)().er,"getConfig"),this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,o.K2)(this,"ErDB")}addEntity(t,e=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&e&&(this.entities.get(t).alias=e,o.Rm.info(`Add alias '${e}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:e,shape:"erBox",look:(0,c.D7)().look??"default",cssClasses:"default",cssStyles:[]}),o.Rm.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,e){const s=this.addEntity(t);let i;for(i=e.length-1;i>=0;i--)e[i].keys||(e[i].keys=[]),e[i].comment||(e[i].comment=""),s.attributes.push(e[i]),o.Rm.debug("Added attribute ",e[i].name)}addRelationship(t,e,s,i){const n=this.entities.get(t),r=this.entities.get(s);if(!n||!r)return;const a={entityA:n.id,roleA:e,entityB:r.id,relSpec:i};this.relationships.push(a),o.Rm.debug("Added new relationship :",a)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}addCssStyles(t,e){for(const s of t){const t=this.entities.get(s);if(!e||!t)return;for(const s of e)t.cssStyles.push(s)}}addClass(t,e){t.forEach(t=>{let s=this.classes.get(t);void 0===s&&(s={id:t,styles:[],textStyles:[]},this.classes.set(t,s)),e&&e.forEach(function(t){if(/color/.exec(t)){const e=t.replace("fill","bgFill");s.textStyles.push(e)}s.styles.push(t)})})}setClass(t,e){for(const s of t){const t=this.entities.get(s);if(t)for(const s of e)t.cssClasses+=" "+s}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],(0,c.IU)()}getData(){const t=[],e=[],s=(0,c.D7)();for(const n of this.entities.keys()){const e=this.entities.get(n);e&&(e.cssCompiledStyles=this.getCompiledStyles(e.cssClasses.split(" ")),t.push(e))}let i=0;for(const n of this.relationships){const t={id:(0,a.rY)(n.entityA,n.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:n.entityA,end:n.entityB,label:n.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:n.relSpec.cardB.toLowerCase(),arrowTypeEnd:n.relSpec.cardA.toLowerCase(),pattern:"IDENTIFYING"==n.relSpec.relType?"solid":"dashed",look:s.look};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:"TB"}}},_={};(0,o.VA)(_,{draw:()=>g});var g=(0,o.K2)(async function(t,e,s,h){o.Rm.info("REF0:"),o.Rm.info("Drawing er diagram (unified)",e);const{securityLevel:u,er:y,layout:d}=(0,c.D7)(),p=h.db.getData(),_=(0,i.A)(e,u);p.type=h.type,p.layoutAlgorithm=(0,r.q7)(d),p.config.flowchart.nodeSpacing=y?.nodeSpacing||140,p.config.flowchart.rankSpacing=y?.rankSpacing||80,p.direction=h.db.getDirection(),p.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],p.diagramId=e,await(0,r.XX)(p,_),"elk"===p.layoutAlgorithm&&_.select(".edges").lower();const g=_.selectAll('[id*="-background"]');Array.from(g).length>0&&g.each(function(){const t=(0,l.Ltv)(this),e=t.attr("id").replace("-background",""),s=_.select(`#${CSS.escape(e)}`);if(!s.empty()){const e=s.attr("transform");t.attr("transform",e)}});a._K.insertTitle(_,"erDiagramTitleText",y?.titleTopMargin??25,h.db.getDiagramTitle()),(0,n.P)(_,8,"erDiagram",y?.useMaxWidth??!0)},"draw"),b=(0,o.K2)((t,e)=>{const s=u.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return h.A(i,n,r,e)},"fade"),m=(0,o.K2)(t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .labelBkg {\n background-color: ${b(t.tertiaryColor,.5)};\n }\n\n .edgeLabel .label {\n fill: ${t.nodeBorder};\n font-size: 14px;\n }\n\n .label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .edge-pattern-dashed {\n stroke-dasharray: 8,8;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon\n {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n }\n\n .marker {\n fill: none !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n`,"getStyles"),f={parser:d,get db(){return new p},renderer:_,styles:m}}}]); \ No newline at end of file diff --git a/developer/assets/js/9032.88b22b5b.js b/developer/assets/js/9032.88b22b5b.js new file mode 100644 index 0000000..074cd0e --- /dev/null +++ b/developer/assets/js/9032.88b22b5b.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[9032],{9032:(e,t,s)=>{s.d(t,{diagram:()=>p});var i=s(9625),n=s(1152),r=s(45),a=(s(5164),s(8698),s(5894),s(3245),s(2387),s(92),s(3226)),l=s(7633),c=s(797),o=function(){var e=(0,c.K2)(function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s},"o"),t=[1,3],s=[1,4],i=[1,5],n=[1,6],r=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],a=[1,22],l=[2,7],o=[1,26],h=[1,27],u=[1,28],y=[1,29],m=[1,33],E=[1,34],p=[1,35],R=[1,36],d=[1,37],_=[1,38],f=[1,24],g=[1,31],S=[1,32],I=[1,30],b=[1,39],T=[1,40],k=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],N=[1,61],q=[89,90],C=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],A=[27,29],v=[1,70],L=[1,71],O=[1,72],w=[1,73],D=[1,74],x=[1,75],M=[1,76],$=[1,83],F=[1,80],K=[1,84],P=[1,85],U=[1,86],V=[1,87],Y=[1,88],B=[1,89],Q=[1,90],H=[1,91],W=[1,92],j=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],G=[63,64],z=[1,101],X=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],J=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Z=[1,110],ee=[1,106],te=[1,107],se=[1,108],ie=[1,109],ne=[1,111],re=[1,116],ae=[1,117],le=[1,114],ce=[1,115],oe={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:(0,c.K2)(function(e,t,s,i,n,r,a){var l=r.length-1;switch(n){case 4:this.$=r[l].trim(),i.setAccTitle(this.$);break;case 5:case 6:this.$=r[l].trim(),i.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:i.setDirection("TB");break;case 18:i.setDirection("BT");break;case 19:i.setDirection("RL");break;case 20:i.setDirection("LR");break;case 21:i.addRequirement(r[l-3],r[l-4]);break;case 22:i.addRequirement(r[l-5],r[l-6]),i.setClass([r[l-5]],r[l-3]);break;case 23:i.setNewReqId(r[l-2]);break;case 24:i.setNewReqText(r[l-2]);break;case 25:i.setNewReqRisk(r[l-2]);break;case 26:i.setNewReqVerifyMethod(r[l-2]);break;case 29:this.$=i.RequirementType.REQUIREMENT;break;case 30:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=i.RiskLevel.LOW_RISK;break;case 36:this.$=i.RiskLevel.MED_RISK;break;case 37:this.$=i.RiskLevel.HIGH_RISK;break;case 38:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=i.VerifyType.VERIFY_TEST;break;case 42:i.addElement(r[l-3]);break;case 43:i.addElement(r[l-5]),i.setClass([r[l-5]],r[l-3]);break;case 44:i.setNewElementType(r[l-2]);break;case 45:i.setNewElementDocRef(r[l-2]);break;case 48:i.addRelationship(r[l-2],r[l],r[l-4]);break;case 49:i.addRelationship(r[l-2],r[l-4],r[l]);break;case 50:this.$=i.Relationships.CONTAINS;break;case 51:this.$=i.Relationships.COPIES;break;case 52:this.$=i.Relationships.DERIVES;break;case 53:this.$=i.Relationships.SATISFIES;break;case 54:this.$=i.Relationships.VERIFIES;break;case 55:this.$=i.Relationships.REFINES;break;case 56:this.$=i.Relationships.TRACES;break;case 57:this.$=r[l-2],i.defineClass(r[l-1],r[l]);break;case 58:i.setClass(r[l-1],r[l]);break;case 59:i.setClass([r[l-2]],r[l]);break;case 60:case 62:case 65:this.$=[r[l]];break;case 61:case 63:this.$=r[l-2].concat([r[l]]);break;case 64:this.$=r[l-2],i.setCssStyle(r[l-1],r[l]);break;case 66:r[l-2].push(r[l]),this.$=r[l-2];break;case 68:this.$=r[l-1]+r[l]}},"anonymous"),table:[{3:1,4:2,6:t,9:s,11:i,13:n},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:s,11:i,13:n},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(r,[2,6]),{3:12,4:2,6:t,9:s,11:i,13:n},{1:[2,2]},{4:17,5:a,7:13,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},e(r,[2,4]),e(r,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:a,7:42,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:43,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:44,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:45,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:46,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:47,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:48,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:49,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:50,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(k,[2,17]),e(k,[2,18]),e(k,[2,19]),e(k,[2,20]),{30:60,33:62,75:N,89:b,90:T},{30:63,33:62,75:N,89:b,90:T},{30:64,33:62,75:N,89:b,90:T},e(q,[2,29]),e(q,[2,30]),e(q,[2,31]),e(q,[2,32]),e(q,[2,33]),e(q,[2,34]),e(C,[2,81]),e(C,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(A,[2,79]),e(A,[2,80]),{27:[1,67],29:[1,68]},e(A,[2,85]),e(A,[2,86]),{62:69,65:v,66:L,67:O,68:w,69:D,70:x,71:M},{62:77,65:v,66:L,67:O,68:w,69:D,70:x,71:M},{30:78,33:62,75:N,89:b,90:T},{73:79,75:$,76:F,78:81,79:82,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W},e(j,[2,60]),e(j,[2,62]),{73:93,75:$,76:F,78:81,79:82,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W},{30:94,33:62,75:N,76:F,89:b,90:T},{5:[1,95]},{30:96,33:62,75:N,89:b,90:T},{5:[1,97]},{30:98,33:62,75:N,89:b,90:T},{63:[1,99]},e(G,[2,50]),e(G,[2,51]),e(G,[2,52]),e(G,[2,53]),e(G,[2,54]),e(G,[2,55]),e(G,[2,56]),{64:[1,100]},e(k,[2,59],{76:F}),e(k,[2,64],{76:z}),{33:103,75:[1,102],89:b,90:T},e(X,[2,65],{79:104,75:$,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W}),e(J,[2,67]),e(J,[2,69]),e(J,[2,70]),e(J,[2,71]),e(J,[2,72]),e(J,[2,73]),e(J,[2,74]),e(J,[2,75]),e(J,[2,76]),e(J,[2,77]),e(J,[2,78]),e(k,[2,57],{76:z}),e(k,[2,58],{76:F}),{5:Z,28:105,31:ee,34:te,36:se,38:ie,40:ne},{27:[1,112],76:F},{5:re,40:ae,56:113,57:le,59:ce},{27:[1,118],76:F},{33:119,89:b,90:T},{33:120,89:b,90:T},{75:$,78:121,79:82,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W},e(j,[2,61]),e(j,[2,63]),e(J,[2,68]),e(k,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Z,28:126,31:ee,34:te,36:se,38:ie,40:ne},e(k,[2,28]),{5:[1,127]},e(k,[2,42]),{32:[1,128]},{32:[1,129]},{5:re,40:ae,56:130,57:le,59:ce},e(k,[2,47]),{5:[1,131]},e(k,[2,48]),e(k,[2,49]),e(X,[2,66],{79:104,75:$,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W}),{33:132,89:b,90:T},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(k,[2,27]),{5:Z,28:145,31:ee,34:te,36:se,38:ie,40:ne},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(k,[2,46]),{5:re,40:ae,56:152,57:le,59:ce},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(k,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(k,[2,43]),{5:Z,28:159,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:160,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:161,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:162,31:ee,34:te,36:se,38:ie,40:ne},{5:re,40:ae,56:163,57:le,59:ce},{5:re,40:ae,56:164,57:le,59:ce},e(k,[2,23]),e(k,[2,24]),e(k,[2,25]),e(k,[2,26]),e(k,[2,44]),e(k,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:(0,c.K2)(function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)},"parseError"),parse:(0,c.K2)(function(e){var t=this,s=[0],i=[],n=[null],r=[],a=this.table,l="",o=0,h=0,u=0,y=r.slice.call(arguments,1),m=Object.create(this.lexer),E={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(E.yy[p]=this.yy[p]);m.setInput(e,E.yy),E.yy.lexer=m,E.yy.parser=this,void 0===m.yylloc&&(m.yylloc={});var R=m.yylloc;r.push(R);var d=m.options&&m.options.ranges;function _(){var e;return"number"!=typeof(e=i.pop()||m.lex()||1)&&(e instanceof Array&&(e=(i=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof E.yy.parseError?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(e){s.length=s.length-2*e,n.length=n.length-e,r.length=r.length-e},"popStack"),(0,c.K2)(_,"lex");for(var f,g,S,I,b,T,k,N,q,C={};;){if(S=s[s.length-1],this.defaultActions[S]?I=this.defaultActions[S]:(null==f&&(f=_()),I=a[S]&&a[S][f]),void 0===I||!I.length||!I[0]){var A="";for(T in q=[],a[S])this.terminals_[T]&&T>2&&q.push("'"+this.terminals_[T]+"'");A=m.showPosition?"Parse error on line "+(o+1)+":\n"+m.showPosition()+"\nExpecting "+q.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(A,{text:m.match,token:this.terminals_[f]||f,line:m.yylineno,loc:R,expected:q})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+f);switch(I[0]){case 1:s.push(f),n.push(m.yytext),r.push(m.yylloc),s.push(I[1]),f=null,g?(f=g,g=null):(h=m.yyleng,l=m.yytext,o=m.yylineno,R=m.yylloc,u>0&&u--);break;case 2:if(k=this.productions_[I[1]][1],C.$=n[n.length-k],C._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},d&&(C._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[l,h,o,E.yy,I[1],n,r].concat(y))))return b;k&&(s=s.slice(0,-1*k*2),n=n.slice(0,-1*k),r=r.slice(0,-1*k)),s.push(this.productions_[I[1]][0]),n.push(C.$),r.push(C._$),N=a[s[s.length-2]][s[s.length-1]],s.push(N);break;case 3:return!0}}return!0},"parse")},he=function(){return{EOF:1,parseError:(0,c.K2)(function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},"parseError"),setInput:(0,c.K2)(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},"input"),unput:(0,c.K2)(function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(e){this.unput(this.match.slice(e))},"less"),pastInput:(0,c.K2)(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},"showPosition"),test_match:(0,c.K2)(function(e,t){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!t||s[0].length>t[0].length)){if(t=s,i=r,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,n[r])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,n[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var e=this.next();return e||this.lex()},"lex"),begin:(0,c.K2)(function(e){this.conditionStack.push(e)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(e){this.begin(e)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(e,t,s,i){switch(s){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 58:case 65:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:case 14:case 15:case 56:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;case 50:case 68:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 57:case 64:this.begin("string");break;case 59:return this.begin("style"),72;case 60:return this.begin("style"),74;case 61:return 61;case 62:return 64;case 63:return 63;case 66:return"qString";case 67:return t.yytext=t.yytext.trim(),89;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}}}();function ue(){this.yy={}}return oe.lexer=he,(0,c.K2)(ue,"Parser"),ue.prototype=oe,oe.Parser=ue,new ue}();o.parser=o;var h=o,u=class{constructor(){this.relations=[],this.latestRequirement=this.getInitialRequirement(),this.requirements=new Map,this.latestElement=this.getInitialElement(),this.elements=new Map,this.classes=new Map,this.direction="TB",this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},this.setAccTitle=l.SV,this.getAccTitle=l.iN,this.setAccDescription=l.EI,this.getAccDescription=l.m7,this.setDiagramTitle=l.ke,this.getDiagramTitle=l.ab,this.getConfig=(0,c.K2)(()=>(0,l.D7)().requirement,"getConfig"),this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,c.K2)(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,t){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:t,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){void 0!==this.latestRequirement&&(this.latestRequirement.requirementId=e)}setNewReqText(e){void 0!==this.latestRequirement&&(this.latestRequirement.text=e)}setNewReqRisk(e){void 0!==this.latestRequirement&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){void 0!==this.latestRequirement&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),c.Rm.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){void 0!==this.latestElement&&(this.latestElement.type=e)}setNewElementDocRef(e){void 0!==this.latestElement&&(this.latestElement.docRef=e)}addRelationship(e,t,s){this.relations.push({type:e,src:t,dst:s})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,(0,l.IU)()}setCssStyle(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(!t||!e)return;for(const s of t)s.includes(",")?e.cssStyles.push(...s.split(",")):e.cssStyles.push(s)}}setClass(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(e)for(const s of t){e.classes.push(s);const t=this.classes.get(s)?.styles;t&&e.cssStyles.push(...t)}}}defineClass(e,t){for(const s of e){let e=this.classes.get(s);void 0===e&&(e={id:s,styles:[],textStyles:[]},this.classes.set(s,e)),t&&t.forEach(function(t){if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)}),this.requirements.forEach(e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap(e=>e.split(",")))}),this.elements.forEach(e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap(e=>e.split(",")))})}}getClasses(){return this.classes}getData(){const e=(0,l.D7)(),t=[],s=[];for(const i of this.requirements.values()){const s=i;s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),s.shape="requirementBox",s.look=e.look,t.push(s)}for(const i of this.elements.values()){const s=i;s.shape="requirementBox",s.look=e.look,s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),t.push(s)}for(const i of this.relations){let t=0;const n=i.type===this.Relationships.CONTAINS,r={id:`${i.src}-${i.dst}-${t}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",n?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:n?"normal":"dashed",arrowTypeStart:n?"requirement_contains":"",arrowTypeEnd:n?"":"requirement_arrow",look:e.look};s.push(r),t++}return{nodes:t,edges:s,other:{},config:e,direction:this.getDirection()}}},y=(0,c.K2)(e=>`\n\n marker {\n fill: ${e.relationColor};\n stroke: ${e.relationColor};\n }\n\n marker.cross {\n stroke: ${e.lineColor};\n }\n\n svg {\n font-family: ${e.fontFamily};\n font-size: ${e.fontSize};\n }\n\n .reqBox {\n fill: ${e.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${e.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${e.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${e.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${e.relationLabelColor};\n }\n .divider {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n }\n .label {\n font-family: ${e.fontFamily};\n color: ${e.nodeTextColor||e.textColor};\n }\n .label text,span {\n fill: ${e.nodeTextColor||e.textColor};\n color: ${e.nodeTextColor||e.textColor};\n }\n .labelBkg {\n background-color: ${e.edgeLabelBackground};\n }\n\n`,"getStyles"),m={};(0,c.VA)(m,{draw:()=>E});var E=(0,c.K2)(async function(e,t,s,o){c.Rm.info("REF0:"),c.Rm.info("Drawing requirement diagram (unified)",t);const{securityLevel:h,state:u,layout:y}=(0,l.D7)(),m=o.db.getData(),E=(0,i.A)(t,h);m.type=o.type,m.layoutAlgorithm=(0,r.q7)(y),m.nodeSpacing=u?.nodeSpacing??50,m.rankSpacing=u?.rankSpacing??50,m.markers=["requirement_contains","requirement_arrow"],m.diagramId=t,await(0,r.XX)(m,E);a._K.insertTitle(E,"requirementDiagramTitleText",u?.titleTopMargin??25,o.db.getDiagramTitle()),(0,n.P)(E,8,"requirementDiagram",u?.useMaxWidth??!0)},"draw"),p={parser:h,get db(){return new u},renderer:m,styles:y}}}]); \ No newline at end of file diff --git a/developer/assets/js/9278.8263111e.js b/developer/assets/js/9278.8263111e.js new file mode 100644 index 0000000..eba1e60 --- /dev/null +++ b/developer/assets/js/9278.8263111e.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[9278],{9278:(e,s,l)=>{l.r(s)}}]); \ No newline at end of file diff --git a/developer/assets/js/929d68ea.6281dad7.js b/developer/assets/js/929d68ea.6281dad7.js new file mode 100644 index 0000000..52296c5 --- /dev/null +++ b/developer/assets/js/929d68ea.6281dad7.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2397],{842:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"caching-strategy","title":"Caching Strategy","description":"This document explains all caching mechanisms in the Tibber Prices integration, their purpose, invalidation logic, and lifetime.","source":"@site/docs/caching-strategy.md","sourceDirName":".","slug":"/caching-strategy","permalink":"/hass.tibber_prices/developer/caching-strategy","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/caching-strategy.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Timer Architecture","permalink":"/hass.tibber_prices/developer/timer-architecture"},"next":{"title":"API Reference","permalink":"/hass.tibber_prices/developer/api-reference"}}');var s=i(4848),c=i(8453);const a={comments:!1},t="Caching Strategy",d={},l=[{value:"Overview",id:"overview",level:2},{value:"1. Persistent API Data Cache",id:"1-persistent-api-data-cache",level:2},{value:"2. Translation Cache",id:"2-translation-cache",level:2},{value:"3. Config Dictionary Cache",id:"3-config-dictionary-cache",level:2},{value:"DataTransformer Config Cache",id:"datatransformer-config-cache",level:3},{value:"PeriodCalculator Config Cache",id:"periodcalculator-config-cache",level:3},{value:"4. Period Calculation Cache",id:"4-period-calculation-cache",level:2},{value:"5. Transformation Cache (Price Enrichment Only)",id:"5-transformation-cache-price-enrichment-only",level:2},{value:"Cache Invalidation Flow",id:"cache-invalidation-flow",level:2},{value:"User Changes Options (Config Flow)",id:"user-changes-options-config-flow",level:3},{value:"Midnight Turnover (Day Transition)",id:"midnight-turnover-day-transition",level:3},{value:"Tomorrow Data Arrives (~13:00)",id:"tomorrow-data-arrives-1300",level:3},{value:"Cache Coordination",id:"cache-coordination",level:2},{value:"Performance Characteristics",id:"performance-characteristics",level:2},{value:"Typical Operation (No Changes)",id:"typical-operation-no-changes",level:3},{value:"After Midnight Turnover",id:"after-midnight-turnover",level:3},{value:"After Config Change",id:"after-config-change",level:3},{value:"Summary Table",id:"summary-table",level:2},{value:"Debugging Cache Issues",id:"debugging-cache-issues",level:2},{value:"Symptom: Stale data after config change",id:"symptom-stale-data-after-config-change",level:3},{value:"Symptom: Period calculation not updating",id:"symptom-period-calculation-not-updating",level:3},{value:"Symptom: Yesterday's prices shown as today",id:"symptom-yesterdays-prices-shown-as-today",level:3},{value:"Symptom: Missing translations",id:"symptom-missing-translations",level:3},{value:"Related Documentation",id:"related-documentation",level:2}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,c.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"caching-strategy",children:"Caching Strategy"})}),"\n",(0,s.jsx)(n.p,{children:"This document explains all caching mechanisms in the Tibber Prices integration, their purpose, invalidation logic, and lifetime."}),"\n",(0,s.jsxs)(n.p,{children:["For timer coordination and scheduling details, see ",(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/timer-architecture",children:"Timer Architecture"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(n.p,{children:["The integration uses ",(0,s.jsx)(n.strong,{children:"4 distinct caching layers"})," with different purposes and lifetimes:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Persistent API Data Cache"})," (HA Storage) - Hours to days"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Translation Cache"})," (Memory) - Forever (until HA restart)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Config Dictionary Cache"})," (Memory) - Until config changes"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Period Calculation Cache"})," (Memory) - Until price data or config changes"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"1-persistent-api-data-cache",children:"1. Persistent API Data Cache"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Location:"})," ",(0,s.jsx)(n.code,{children:"coordinator/cache.py"})," \u2192 HA Storage (",(0,s.jsx)(n.code,{children:".storage/tibber_prices.<entry_id>"}),")"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Purpose:"})," Reduce API calls to Tibber by caching user data and price data between HA restarts."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What is cached:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Price data"})," (",(0,s.jsx)(n.code,{children:"price_data"}),"): Day before yesterday/yesterday/today/tomorrow price intervals with enriched fields (384 intervals total)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"User data"})," (",(0,s.jsx)(n.code,{children:"user_data"}),"): Homes, subscriptions, features from Tibber GraphQL ",(0,s.jsx)(n.code,{children:"viewer"})," query"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Timestamps"}),": Last update times for validation"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Lifetime:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Price data"}),": Until midnight turnover (cleared daily at 00:00 local time)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"User data"}),": 24 hours (refreshed daily)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Survives"}),": HA restarts via persistent Storage"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Invalidation triggers:"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Midnight turnover"})," (Timer #2 in coordinator):"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"# coordinator/day_transitions.py\ndef _handle_midnight_turnover() -> None:\n self._cached_price_data = None # Force fresh fetch for new day\n self._last_price_update = None\n await self.store_cache()\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Cache validation on load"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"# coordinator/cache.py\ndef is_cache_valid(cache_data: CacheData) -> bool:\n # Checks if price data is from a previous day\n if today_date < local_now.date(): # Yesterday's data\n return False\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Tomorrow data check"})," (after 13:00):"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# coordinator/data_fetching.py\nif tomorrow_missing or tomorrow_invalid:\n return "tomorrow_check" # Update needed\n'})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Why this cache matters:"})," Reduces API load on Tibber (~192 intervals per fetch), speeds up HA restarts, enables offline operation until cache expires."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"2-translation-cache",children:"2. Translation Cache"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Location:"})," ",(0,s.jsx)(n.code,{children:"const.py"})," \u2192 ",(0,s.jsx)(n.code,{children:"_TRANSLATIONS_CACHE"})," and ",(0,s.jsx)(n.code,{children:"_STANDARD_TRANSLATIONS_CACHE"})," (in-memory dicts)"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Purpose:"})," Avoid repeated file I/O when accessing entity descriptions, UI strings, etc."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What is cached:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Standard translations"})," (",(0,s.jsx)(n.code,{children:"/translations/*.json"}),"): Config flow, selector options, entity names"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Custom translations"})," (",(0,s.jsx)(n.code,{children:"/custom_translations/*.json"}),"): Entity descriptions, usage tips, long descriptions"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Lifetime:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Forever"})," (until HA restart)"]}),"\n",(0,s.jsx)(n.li,{children:"No invalidation during runtime"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"When populated:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["At integration setup: ",(0,s.jsx)(n.code,{children:'async_load_translations(hass, "en")'})," in ",(0,s.jsx)(n.code,{children:"__init__.py"})]}),"\n",(0,s.jsx)(n.li,{children:"Lazy loading: If translation missing, attempts file load once"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Access pattern:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# Non-blocking synchronous access from cached data\ndescription = get_translation("binary_sensor.best_price_period.description", "en")\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Why this cache matters:"})," Entity attributes are accessed on every state update (~15 times per hour per entity). File I/O would block the event loop. Cache enables synchronous, non-blocking attribute generation."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"3-config-dictionary-cache",children:"3. Config Dictionary Cache"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Location:"})," ",(0,s.jsx)(n.code,{children:"coordinator/data_transformation.py"})," and ",(0,s.jsx)(n.code,{children:"coordinator/periods.py"})," (per-instance fields)"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Purpose:"})," Avoid ~30-40 ",(0,s.jsx)(n.code,{children:"options.get()"})," calls on every coordinator update (every 15 minutes)."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What is cached:"})}),"\n",(0,s.jsx)(n.h3,{id:"datatransformer-config-cache",children:"DataTransformer Config Cache"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'{\n "thresholds": {"low": 15, "high": 35},\n "volatility_thresholds": {"moderate": 15.0, "high": 25.0, "very_high": 40.0},\n # ... 20+ more config fields\n}\n'})}),"\n",(0,s.jsx)(n.h3,{id:"periodcalculator-config-cache",children:"PeriodCalculator Config Cache"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'{\n "best": {"flex": 0.15, "min_distance_from_avg": 5.0, "min_period_length": 60},\n "peak": {"flex": 0.15, "min_distance_from_avg": 5.0, "min_period_length": 60}\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Lifetime:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Until ",(0,s.jsx)(n.code,{children:"invalidate_config_cache()"})," is called"]}),"\n",(0,s.jsx)(n.li,{children:"Built once on first use per coordinator update cycle"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Invalidation trigger:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Options change"})," (user reconfigures integration):","\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"# coordinator/core.py\nasync def _handle_options_update(...) -> None:\n self._data_transformer.invalidate_config_cache()\n self._period_calculator.invalidate_config_cache()\n await self.async_request_refresh()\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Performance impact:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Before:"})," ~30 dict lookups + type conversions per update = ~50\u03bcs"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"After:"})," 1 cache check = ~1\u03bcs"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Savings:"})," ~98% (50\u03bcs \u2192 1\u03bcs per update)"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Why this cache matters:"})," Config is read multiple times per update (transformation + period calculation + validation). Caching eliminates redundant lookups without changing behavior."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"4-period-calculation-cache",children:"4. Period Calculation Cache"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Location:"})," ",(0,s.jsx)(n.code,{children:"coordinator/periods.py"})," \u2192 ",(0,s.jsx)(n.code,{children:"PeriodCalculator._cached_periods"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Purpose:"})," Avoid expensive period calculations (~100-500ms) when price data and config haven't changed."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What is cached:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'{\n "best_price": {\n "periods": [...], # Calculated period objects\n "intervals": [...], # All intervals in periods\n "metadata": {...} # Config snapshot\n },\n "best_price_relaxation": {"relaxation_active": bool, ...},\n "peak_price": {...},\n "peak_price_relaxation": {...}\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Cache key:"})," Hash of relevant inputs"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"hash_data = (\n today_signature, # (startsAt, rating_level) for each interval\n tuple(best_config.items()), # Best price config\n tuple(peak_config.items()), # Peak price config\n best_level_filter, # Level filter overrides\n peak_level_filter\n)\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Lifetime:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Until price data changes (today's intervals modified)"}),"\n",(0,s.jsx)(n.li,{children:"Until config changes (flex, thresholds, filters)"}),"\n",(0,s.jsx)(n.li,{children:"Recalculated at midnight (new today data)"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Invalidation triggers:"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Config change"})," (explicit):"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"def invalidate_config_cache() -> None:\n self._cached_periods = None\n self._last_periods_hash = None\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Price data change"})," (automatic via hash mismatch):"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"current_hash = self._compute_periods_hash(price_info)\nif self._last_periods_hash != current_hash:\n # Cache miss - recalculate\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Cache hit rate:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"High:"})," During normal operation (coordinator updates every 15min, price data unchanged)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Low:"})," After midnight (new today data) or when tomorrow data arrives (~13:00-14:00)"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Performance impact:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Period calculation:"})," ~100-500ms (depends on interval count, relaxation attempts)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Cache hit:"})," ",(0,s.jsx)(n.code,{children:"<"}),"1ms (hash comparison + dict lookup)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Savings:"})," ~70% of calculation time (most updates hit cache)"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Why this cache matters:"})," Period calculation is CPU-intensive (filtering, gap tolerance, relaxation). Caching avoids recalculating unchanged periods 3-4 times per hour."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"5-transformation-cache-price-enrichment-only",children:"5. Transformation Cache (Price Enrichment Only)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Location:"})," ",(0,s.jsx)(n.code,{children:"coordinator/data_transformation.py"})," \u2192 ",(0,s.jsx)(n.code,{children:"_cached_transformed_data"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Status:"})," \u2705 ",(0,s.jsx)(n.strong,{children:"Clean separation"})," - enrichment only, no redundancy"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What is cached:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'{\n "timestamp": ...,\n "homes": {...},\n "priceInfo": {...}, # Enriched price data (trailing_avg_24h, difference, rating_level)\n # NO periods - periods are exclusively managed by PeriodCalculator\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Purpose:"})," Avoid re-enriching price data when config unchanged between midnight checks."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Current behavior:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Caches ",(0,s.jsx)(n.strong,{children:"only enriched price data"})," (price + statistics)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Does NOT cache periods"})," (handled by Period Calculation Cache)"]}),"\n",(0,s.jsxs)(n.li,{children:["Invalidated when:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Config changes (thresholds affect enrichment)"}),"\n",(0,s.jsx)(n.li,{children:"Midnight turnover detected"}),"\n",(0,s.jsx)(n.li,{children:"New update cycle begins"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Architecture:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"DataTransformer: Handles price enrichment only"}),"\n",(0,s.jsx)(n.li,{children:"PeriodCalculator: Handles period calculation only (with hash-based cache)"}),"\n",(0,s.jsx)(n.li,{children:"Coordinator: Assembles final data on-demand from both caches"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Memory savings:"})," Eliminating redundant period storage saves ~10KB per coordinator (14% reduction)."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"cache-invalidation-flow",children:"Cache Invalidation Flow"}),"\n",(0,s.jsx)(n.h3,{id:"user-changes-options-config-flow",children:"User Changes Options (Config Flow)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"User saves options\n \u2193\nconfig_entry.add_update_listener() triggers\n \u2193\ncoordinator._handle_options_update()\n \u2193\n\u251c\u2500> DataTransformer.invalidate_config_cache()\n\u2502 \u2514\u2500> _config_cache = None\n\u2502 _config_cache_valid = False\n\u2502 _cached_transformed_data = None\n\u2502\n\u2514\u2500> PeriodCalculator.invalidate_config_cache()\n \u2514\u2500> _config_cache = None\n _config_cache_valid = False\n _cached_periods = None\n _last_periods_hash = None\n \u2193\ncoordinator.async_request_refresh()\n \u2193\nFresh data fetch with new config\n"})}),"\n",(0,s.jsx)(n.h3,{id:"midnight-turnover-day-transition",children:"Midnight Turnover (Day Transition)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'Timer #2 fires at 00:00\n \u2193\ncoordinator._handle_midnight_turnover()\n \u2193\n\u251c\u2500> Clear persistent cache\n\u2502 \u2514\u2500> _cached_price_data = None\n\u2502 _last_price_update = None\n\u2502\n\u2514\u2500> Clear transformation cache\n \u2514\u2500> _cached_transformed_data = None\n _last_transformation_config = None\n \u2193\nPeriod cache auto-invalidates (hash mismatch on new "today")\n \u2193\nFresh API fetch for new day\n'})}),"\n",(0,s.jsx)(n.h3,{id:"tomorrow-data-arrives-1300",children:"Tomorrow Data Arrives (~13:00)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"Coordinator update cycle\n \u2193\nshould_update_price_data() checks tomorrow\n \u2193\nTomorrow data missing/invalid\n \u2193\nAPI fetch with new tomorrow data\n \u2193\nPrice data hash changes (new intervals)\n \u2193\nPeriod cache auto-invalidates (hash mismatch)\n \u2193\nPeriods recalculated with tomorrow included\n"})}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"cache-coordination",children:"Cache Coordination"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"All caches work together:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"Persistent Storage (HA restart)\n \u2193\nAPI Data Cache (price_data, user_data)\n \u2193\n \u251c\u2500> Enrichment (add rating_level, difference, etc.)\n \u2502 \u2193\n \u2502 Transformation Cache (_cached_transformed_data)\n \u2502\n \u2514\u2500> Period Calculation\n \u2193\n Period Cache (_cached_periods)\n \u2193\n Config Cache (avoid re-reading options)\n \u2193\n Translation Cache (entity descriptions)\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"No cache invalidation cascades:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Config cache invalidation is ",(0,s.jsx)(n.strong,{children:"explicit"})," (on options update)"]}),"\n",(0,s.jsxs)(n.li,{children:["Period cache invalidation is ",(0,s.jsx)(n.strong,{children:"automatic"})," (via hash mismatch)"]}),"\n",(0,s.jsxs)(n.li,{children:["Transformation cache invalidation is ",(0,s.jsx)(n.strong,{children:"automatic"})," (on midnight/config change)"]}),"\n",(0,s.jsxs)(n.li,{children:["Translation cache is ",(0,s.jsx)(n.strong,{children:"never invalidated"})," (read-only after load)"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Thread safety:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["All caches are accessed from ",(0,s.jsx)(n.code,{children:"MainThread"})," only (Home Assistant event loop)"]}),"\n",(0,s.jsx)(n.li,{children:"No locking needed (single-threaded execution model)"}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"performance-characteristics",children:"Performance Characteristics"}),"\n",(0,s.jsx)(n.h3,{id:"typical-operation-no-changes",children:"Typical Operation (No Changes)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"Coordinator Update (every 15 min)\n\u251c\u2500> API fetch: SKIP (cache valid)\n\u251c\u2500> Config dict build: ~1\u03bcs (cached)\n\u251c\u2500> Period calculation: ~1ms (cached, hash match)\n\u251c\u2500> Transformation: ~10ms (enrichment only, periods cached)\n\u2514\u2500> Entity updates: ~5ms (translation cache hit)\n\nTotal: ~16ms (down from ~600ms without caching)\n"})}),"\n",(0,s.jsx)(n.h3,{id:"after-midnight-turnover",children:"After Midnight Turnover"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"Coordinator Update (00:00)\n\u251c\u2500> API fetch: ~500ms (cache cleared, fetch new day)\n\u251c\u2500> Config dict build: ~50\u03bcs (rebuild, no cache)\n\u251c\u2500> Period calculation: ~200ms (cache miss, recalculate)\n\u251c\u2500> Transformation: ~50ms (re-enrich, rebuild)\n\u2514\u2500> Entity updates: ~5ms (translation cache still valid)\n\nTotal: ~755ms (expected once per day)\n"})}),"\n",(0,s.jsx)(n.h3,{id:"after-config-change",children:"After Config Change"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"Options Update\n\u251c\u2500> Cache invalidation: `<`1ms\n\u251c\u2500> Coordinator refresh: ~600ms\n\u2502 \u251c\u2500> API fetch: SKIP (data unchanged)\n\u2502 \u251c\u2500> Config rebuild: ~50\u03bcs\n\u2502 \u251c\u2500> Period recalculation: ~200ms (new thresholds)\n\u2502 \u251c\u2500> Re-enrichment: ~50ms\n\u2502 \u2514\u2500> Entity updates: ~5ms\n\u2514\u2500> Total: ~600ms (expected on manual reconfiguration)\n"})}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"summary-table",children:"Summary Table"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Cache Type"}),(0,s.jsx)(n.th,{children:"Lifetime"}),(0,s.jsx)(n.th,{children:"Size"}),(0,s.jsx)(n.th,{children:"Invalidation"}),(0,s.jsx)(n.th,{children:"Purpose"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"API Data"})}),(0,s.jsx)(n.td,{children:"Hours to 1 day"}),(0,s.jsx)(n.td,{children:"~50KB"}),(0,s.jsx)(n.td,{children:"Midnight, validation"}),(0,s.jsx)(n.td,{children:"Reduce API calls"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Translations"})}),(0,s.jsx)(n.td,{children:"Forever (until HA restart)"}),(0,s.jsx)(n.td,{children:"~5KB"}),(0,s.jsx)(n.td,{children:"Never"}),(0,s.jsx)(n.td,{children:"Avoid file I/O"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Config Dicts"})}),(0,s.jsx)(n.td,{children:"Until options change"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"<"}),"1KB"]}),(0,s.jsx)(n.td,{children:"Explicit (options update)"}),(0,s.jsx)(n.td,{children:"Avoid dict lookups"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Period Calculation"})}),(0,s.jsx)(n.td,{children:"Until data/config change"}),(0,s.jsx)(n.td,{children:"~10KB"}),(0,s.jsx)(n.td,{children:"Auto (hash mismatch)"}),(0,s.jsx)(n.td,{children:"Avoid CPU-intensive calculation"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Transformation"})}),(0,s.jsx)(n.td,{children:"Until midnight/config change"}),(0,s.jsx)(n.td,{children:"~50KB"}),(0,s.jsx)(n.td,{children:"Auto (midnight/config)"}),(0,s.jsx)(n.td,{children:"Avoid re-enrichment"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Total memory overhead:"})," ~116KB per coordinator instance (main + subentries)"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"97% reduction in API calls (from every 15min to once per day)"}),"\n",(0,s.jsx)(n.li,{children:"70% reduction in period calculation time (cache hits during normal operation)"}),"\n",(0,s.jsx)(n.li,{children:"98% reduction in config access time (30+ lookups \u2192 1 cache check)"}),"\n",(0,s.jsx)(n.li,{children:"Zero file I/O during runtime (translations cached at startup)"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Trade-offs:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Memory usage: ~116KB per home (negligible for modern systems)"}),"\n",(0,s.jsx)(n.li,{children:"Code complexity: 5 cache invalidation points (well-tested, documented)"}),"\n",(0,s.jsx)(n.li,{children:"Debugging: Must understand cache lifetime when investigating stale data issues"}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"debugging-cache-issues",children:"Debugging Cache Issues"}),"\n",(0,s.jsx)(n.h3,{id:"symptom-stale-data-after-config-change",children:"Symptom: Stale data after config change"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check:"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Is ",(0,s.jsx)(n.code,{children:"_handle_options_update()"}),' called? (should see "Options updated" log)']}),"\n",(0,s.jsxs)(n.li,{children:["Are ",(0,s.jsx)(n.code,{children:"invalidate_config_cache()"})," methods executed?"]}),"\n",(0,s.jsxs)(n.li,{children:["Does ",(0,s.jsx)(n.code,{children:"async_request_refresh()"})," trigger?"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Fix:"})," Ensure ",(0,s.jsx)(n.code,{children:"config_entry.add_update_listener()"})," is registered in coordinator init."]}),"\n",(0,s.jsx)(n.h3,{id:"symptom-period-calculation-not-updating",children:"Symptom: Period calculation not updating"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check:"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Verify hash changes when data changes: ",(0,s.jsx)(n.code,{children:"_compute_periods_hash()"})]}),"\n",(0,s.jsxs)(n.li,{children:["Check ",(0,s.jsx)(n.code,{children:"_last_periods_hash"})," vs ",(0,s.jsx)(n.code,{children:"current_hash"})]}),"\n",(0,s.jsx)(n.li,{children:'Look for "Using cached period calculation" vs "Calculating periods" logs'}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Fix:"})," Hash function may not include all relevant data. Review ",(0,s.jsx)(n.code,{children:"_compute_periods_hash()"})," inputs."]}),"\n",(0,s.jsx)(n.h3,{id:"symptom-yesterdays-prices-shown-as-today",children:"Symptom: Yesterday's prices shown as today"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check:"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"is_cache_valid()"})," logic in ",(0,s.jsx)(n.code,{children:"coordinator/cache.py"})]}),"\n",(0,s.jsx)(n.li,{children:"Midnight turnover execution (Timer #2)"}),"\n",(0,s.jsx)(n.li,{children:"Cache clear confirmation in logs"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Fix:"})," Timer may not be firing. Check ",(0,s.jsx)(n.code,{children:"_schedule_midnight_turnover()"})," registration."]}),"\n",(0,s.jsx)(n.h3,{id:"symptom-missing-translations",children:"Symptom: Missing translations"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check:"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"async_load_translations()"})," called at startup?"]}),"\n",(0,s.jsxs)(n.li,{children:["Translation files exist in ",(0,s.jsx)(n.code,{children:"/translations/"})," and ",(0,s.jsx)(n.code,{children:"/custom_translations/"}),"?"]}),"\n",(0,s.jsxs)(n.li,{children:["Cache population: ",(0,s.jsx)(n.code,{children:"_TRANSLATIONS_CACHE"})," keys"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Fix:"})," Re-install integration or restart HA to reload translation files."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"related-documentation",children:"Related Documentation"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/timer-architecture",children:"Timer Architecture"})})," - Timer system, scheduling, midnight coordination"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/architecture",children:"Architecture"})})," - Overall system design, data flow"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:"AGENTS.md"})})," - Complete reference for AI development"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/9412.d260116d.js b/developer/assets/js/9412.d260116d.js new file mode 100644 index 0000000..f9d2b7a --- /dev/null +++ b/developer/assets/js/9412.d260116d.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[9412],{5871:(e,t,a)=>{function i(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}a.d(t,{S:()=>i}),(0,a(797).K2)(i,"populateCommonDb")},9412:(e,t,a)=>{a.d(t,{diagram:()=>C});var i=a(3590),l=a(5871),n=a(3226),r=a(7633),s=a(797),o=a(8731),c=a(451),p=r.UI.pie,d={sections:new Map,showData:!1,config:p},u=d.sections,g=d.showData,h=structuredClone(p),f=(0,s.K2)(()=>structuredClone(h),"getConfig"),m=(0,s.K2)(()=>{u=new Map,g=d.showData,(0,r.IU)()},"clear"),w=(0,s.K2)(({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invalid value: ${t}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);u.has(e)||(u.set(e,t),s.Rm.debug(`added new section: ${e}, with value: ${t}`))},"addSection"),S=(0,s.K2)(()=>u,"getSections"),x=(0,s.K2)(e=>{g=e},"setShowData"),D=(0,s.K2)(()=>g,"getShowData"),T={getConfig:f,clear:m,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:w,getSections:S,setShowData:x,getShowData:D},$=(0,s.K2)((e,t)=>{(0,l.S)(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)},"populateDb"),b={parse:(0,s.K2)(async e=>{const t=await(0,o.qg)("pie",e);s.Rm.debug(t),$(t,T)},"parse")},v=(0,s.K2)(e=>`\n .pieCircle{\n stroke: ${e.pieStrokeColor};\n stroke-width : ${e.pieStrokeWidth};\n opacity : ${e.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${e.pieOuterStrokeColor};\n stroke-width: ${e.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${e.pieTitleTextSize};\n fill: ${e.pieTitleTextColor};\n font-family: ${e.fontFamily};\n }\n .slice {\n font-family: ${e.fontFamily};\n fill: ${e.pieSectionTextColor};\n font-size:${e.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${e.pieLegendTextColor};\n font-family: ${e.fontFamily};\n font-size: ${e.pieLegendTextSize};\n }\n`,"getStyles"),y=(0,s.K2)(e=>{const t=[...e.values()].reduce((e,t)=>e+t,0),a=[...e.entries()].map(([e,t])=>({label:e,value:t})).filter(e=>e.value/t*100>=1).sort((e,t)=>t.value-e.value);return(0,c.rLf)().value(e=>e.value)(a)},"createPieArcs"),C={parser:b,db:T,renderer:{draw:(0,s.K2)((e,t,a,l)=>{s.Rm.debug("rendering pie chart\n"+e);const o=l.db,p=(0,r.D7)(),d=(0,n.$t)(o.getConfig(),p.pie),u=18,g=450,h=g,f=(0,i.D)(t),m=f.append("g");m.attr("transform","translate(225,225)");const{themeVariables:w}=p;let[S]=(0,n.I5)(w.pieOuterStrokeWidth);S??=2;const x=d.textPosition,D=Math.min(h,g)/2-40,T=(0,c.JLW)().innerRadius(0).outerRadius(D),$=(0,c.JLW)().innerRadius(D*x).outerRadius(D*x);m.append("circle").attr("cx",0).attr("cy",0).attr("r",D+S/2).attr("class","pieOuterCircle");const b=o.getSections(),v=y(b),C=[w.pie1,w.pie2,w.pie3,w.pie4,w.pie5,w.pie6,w.pie7,w.pie8,w.pie9,w.pie10,w.pie11,w.pie12];let k=0;b.forEach(e=>{k+=e});const A=v.filter(e=>"0"!==(e.data.value/k*100).toFixed(0)),K=(0,c.UMr)(C);m.selectAll("mySlices").data(A).enter().append("path").attr("d",T).attr("fill",e=>K(e.data.label)).attr("class","pieCircle"),m.selectAll("mySlices").data(A).enter().append("text").text(e=>(e.data.value/k*100).toFixed(0)+"%").attr("transform",e=>"translate("+$.centroid(e)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(o.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");const R=[...b.entries()].map(([e,t])=>({label:e,value:t})),z=m.selectAll(".legend").data(R).enter().append("g").attr("class","legend").attr("transform",(e,t)=>"translate(216,"+(22*t-22*R.length/2)+")");z.append("rect").attr("width",u).attr("height",u).style("fill",e=>K(e.label)).style("stroke",e=>K(e.label)),z.append("text").attr("x",22).attr("y",14).text(e=>o.getShowData()?`${e.label} [${e.value}]`:e.label);const M=512+Math.max(...z.selectAll("text").nodes().map(e=>e?.getBoundingClientRect().width??0));f.attr("viewBox",`0 0 ${M} 450`),(0,r.a$)(f,g,M,d.useMaxWidth)},"draw")},styles:v}}}]); \ No newline at end of file diff --git a/developer/assets/js/9510.b0ddb86b.js b/developer/assets/js/9510.b0ddb86b.js new file mode 100644 index 0000000..4a7b0ac --- /dev/null +++ b/developer/assets/js/9510.b0ddb86b.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[9510],{9510:(e,r,s)=>{s.d(r,{diagram:()=>t});var a=s(1746),l=(s(2501),s(9625),s(1152),s(45),s(5164),s(8698),s(5894),s(3245),s(2387),s(92),s(3226),s(7633),s(797)),t={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,l.K2)(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/developer/assets/js/964ae018.49be7f51.js b/developer/assets/js/964ae018.49be7f51.js new file mode 100644 index 0000000..3d6ec15 --- /dev/null +++ b/developer/assets/js/964ae018.49be7f51.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[7443],{3588:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"api-reference","title":"API Reference","description":"Documentation of the Tibber GraphQL API used by this integration.","source":"@site/docs/api-reference.md","sourceDirName":".","slug":"/api-reference","permalink":"/hass.tibber_prices/developer/api-reference","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/api-reference.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Caching Strategy","permalink":"/hass.tibber_prices/developer/caching-strategy"},"next":{"title":"Development Setup","permalink":"/hass.tibber_prices/developer/setup"}}');var i=r(4848),l=r(8453);const t={comments:!1},d="API Reference",c={},o=[{value:"GraphQL Endpoint",id:"graphql-endpoint",level:2},{value:"Queries Used",id:"queries-used",level:2},{value:"User Data Query",id:"user-data-query",level:3},{value:"Price Data Query",id:"price-data-query",level:3},{value:"Rate Limits",id:"rate-limits",level:2},{value:"Response Format",id:"response-format",level:2},{value:"Price Node Structure",id:"price-node-structure",level:3},{value:"Currency Information",id:"currency-information",level:3},{value:"Error Handling",id:"error-handling",level:2},{value:"Common Error Responses",id:"common-error-responses",level:3},{value:"Data Transformation",id:"data-transformation",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"api-reference",children:"API Reference"})}),"\n",(0,i.jsx)(n.p,{children:"Documentation of the Tibber GraphQL API used by this integration."}),"\n",(0,i.jsx)(n.h2,{id:"graphql-endpoint",children:"GraphQL Endpoint"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"https://api.tibber.com/v1-beta/gql\n"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Authentication:"})," Bearer token in ",(0,i.jsx)(n.code,{children:"Authorization"})," header"]}),"\n",(0,i.jsx)(n.h2,{id:"queries-used",children:"Queries Used"}),"\n",(0,i.jsx)(n.h3,{id:"user-data-query",children:"User Data Query"}),"\n",(0,i.jsx)(n.p,{children:"Fetches home information and metadata:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-graphql",children:"query {\n viewer {\n homes {\n id\n appNickname\n address {\n address1\n postalCode\n city\n country\n }\n timeZone\n currentSubscription {\n priceInfo {\n current {\n currency\n }\n }\n }\n meteringPointData {\n consumptionEan\n gridAreaCode\n }\n }\n }\n}\n"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Cached for:"})," 24 hours"]}),"\n",(0,i.jsx)(n.h3,{id:"price-data-query",children:"Price Data Query"}),"\n",(0,i.jsx)(n.p,{children:"Fetches quarter-hourly prices:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-graphql",children:"query($homeId: ID!) {\n viewer {\n home(id: $homeId) {\n currentSubscription {\n priceInfo {\n range(resolution: QUARTER_HOURLY, first: 384) {\n nodes {\n total\n startsAt\n level\n }\n }\n }\n }\n }\n }\n}\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Parameters:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"homeId"}),": Tibber home identifier"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"resolution"}),": Always ",(0,i.jsx)(n.code,{children:"QUARTER_HOURLY"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"first"}),": 384 intervals (4 days of data)"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Cached until:"})," Midnight local time"]}),"\n",(0,i.jsx)(n.h2,{id:"rate-limits",children:"Rate Limits"}),"\n",(0,i.jsx)(n.p,{children:"Tibber API rate limits (as of 2024):"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"5000 requests per hour"})," per token"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Burst limit:"})," 100 requests per minute"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Integration stays well below these limits:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Polls every 15 minutes = 96 requests/day"}),"\n",(0,i.jsx)(n.li,{children:"User data cached for 24h = 1 request/day"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Total:"})," ~100 requests/day per home"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"response-format",children:"Response Format"}),"\n",(0,i.jsx)(n.h3,{id:"price-node-structure",children:"Price Node Structure"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "total": 0.2456,\n "startsAt": "2024-12-06T14:00:00.000+01:00",\n "level": "NORMAL"\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Fields:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"total"}),": Price including VAT and fees (currency's major unit, e.g., EUR)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"startsAt"}),": ISO 8601 timestamp with timezone"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"level"}),": Tibber's own classification (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE)"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"currency-information",children:"Currency Information"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "currency": "EUR"\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:"Supported currencies:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"EUR"})," (Euro) - displayed as ct/kWh"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"NOK"})," (Norwegian Krone) - displayed as \xf8re/kWh"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"SEK"})," (Swedish Krona) - displayed as \xf6re/kWh"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"error-handling",children:"Error Handling"}),"\n",(0,i.jsx)(n.h3,{id:"common-error-responses",children:"Common Error Responses"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Invalid Token:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "errors": [{\n "message": "Unauthorized",\n "extensions": {\n "code": "UNAUTHENTICATED"\n }\n }]\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Rate Limit Exceeded:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "errors": [{\n "message": "Too Many Requests",\n "extensions": {\n "code": "RATE_LIMIT_EXCEEDED"\n }\n }]\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Home Not Found:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "errors": [{\n "message": "Home not found",\n "extensions": {\n "code": "NOT_FOUND"\n }\n }]\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:"Integration handles these with:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Exponential backoff retry (3 attempts)"}),"\n",(0,i.jsx)(n.li,{children:"ConfigEntryAuthFailed for auth errors"}),"\n",(0,i.jsx)(n.li,{children:"ConfigEntryNotReady for temporary failures"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"data-transformation",children:"Data Transformation"}),"\n",(0,i.jsx)(n.p,{children:"Raw API data is enriched with:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Trailing 24h average"})," - Calculated from previous intervals"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Leading 24h average"})," - Calculated from future intervals"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Price difference %"})," - Deviation from average"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Custom rating"})," - Based on user thresholds (different from Tibber's ",(0,i.jsx)(n.code,{children:"level"}),")"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.code,{children:"utils/price.py"})," for enrichment logic."]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.p,{children:["\ud83d\udca1 ",(0,i.jsx)(n.strong,{children:"External Resources:"})]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://developer.tibber.com/docs/overview",children:"Tibber API Documentation"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://developer.tibber.com/explorer",children:"GraphQL Explorer"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://developer.tibber.com/settings/access-token",children:"Get API Token"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/9717.51a9e973.js b/developer/assets/js/9717.51a9e973.js new file mode 100644 index 0000000..f8aa38f --- /dev/null +++ b/developer/assets/js/9717.51a9e973.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[9717],{9717:(t,e,n)=>{n.d(e,{diagram:()=>D});var i=n(9625),s=n(1152),r=n(45),o=(n(5164),n(8698),n(5894),n(3245),n(2387),n(92),n(3226),n(7633)),a=n(797);const c={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let h;const l=new Uint8Array(16);const d=[];for(let L=0;L<256;++L)d.push((L+256).toString(16).slice(1));function g(t,e=0){return(d[t[e+0]]+d[t[e+1]]+d[t[e+2]]+d[t[e+3]]+"-"+d[t[e+4]]+d[t[e+5]]+"-"+d[t[e+6]]+d[t[e+7]]+"-"+d[t[e+8]]+d[t[e+9]]+"-"+d[t[e+10]]+d[t[e+11]]+d[t[e+12]]+d[t[e+13]]+d[t[e+14]]+d[t[e+15]]).toLowerCase()}const u=function(t,e,n){if(c.randomUUID&&!e&&!t)return c.randomUUID();const i=(t=t||{}).random??t.rng?.()??function(){if(!h){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");h=crypto.getRandomValues.bind(crypto)}return h(l)}();if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[n+t]=i[t];return e}return g(i)};var p=n(3219),y=n(8041),m=n(5263),f=function(){var t=(0,a.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],c=[1,19],h=[6,7,8],l=[1,26],d=[1,24],g=[1,25],u=[6,7,11],p=[1,6,13,15,16,19,22],y=[1,33],m=[1,34],f=[1,6,7,11,13,15,16,19,22],_={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:(0,a.K2)(function(t,e,n,i,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",r[a].id),i.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 16:i.getLogger().trace("Icon: ",r[a]),i.decorateNode({icon:r[a]});break;case 17:case 21:i.decorateNode({class:r[a]});break;case 18:i.getLogger().trace("SPACELIST");break;case 19:i.getLogger().trace("Node: ",r[a].id),i.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 20:i.decorateNode({icon:r[a]});break;case 25:i.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 26:this.$={id:r[a],descr:r[a],type:i.nodeType.DEFAULT};break;case 27:i.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:i.getType(r[a-2],r[a])}}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},t(h,[2,3]),{1:[2,2]},t(h,[2,4]),t(h,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},{6:n,9:22,12:11,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},{6:l,7:d,10:23,11:g},t(u,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:o,22:c}),t(u,[2,18]),t(u,[2,19]),t(u,[2,20]),t(u,[2,21]),t(u,[2,23]),t(u,[2,24]),t(u,[2,26],{19:[1,30]}),{20:[1,31]},{6:l,7:d,10:32,11:g},{1:[2,7],6:n,12:21,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},t(p,[2,14],{7:y,11:m}),t(f,[2,8]),t(f,[2,9]),t(f,[2,10]),t(u,[2,15]),t(u,[2,16]),t(u,[2,17]),{20:[1,35]},{21:[1,36]},t(p,[2,13],{7:y,11:m}),t(f,[2,11]),t(f,[2,12]),{21:[1,37]},t(u,[2,25]),t(u,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,c="",h=0,l=0,d=0,g=r.slice.call(arguments,1),u=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);u.setInput(t,p.yy),p.yy.lexer=u,p.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var m=u.yylloc;r.push(m);var f=u.options&&u.options.ranges;function _(){var t;return"number"!=typeof(t=i.pop()||u.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,a.K2)(_,"lex");for(var b,E,S,N,k,D,L,I,T,v={};;){if(S=n[n.length-1],this.defaultActions[S]?N=this.defaultActions[S]:(null==b&&(b=_()),N=o[S]&&o[S][b]),void 0===N||!N.length||!N[0]){var x="";for(D in T=[],o[S])this.terminals_[D]&&D>2&&T.push("'"+this.terminals_[D]+"'");x=u.showPosition?"Parse error on line "+(h+1)+":\n"+u.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(x,{text:u.match,token:this.terminals_[b]||b,line:u.yylineno,loc:m,expected:T})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+b);switch(N[0]){case 1:n.push(b),s.push(u.yytext),r.push(u.yylloc),n.push(N[1]),b=null,E?(b=E,E=null):(l=u.yyleng,c=u.yytext,h=u.yylineno,m=u.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[N[1]][1],v.$=s[s.length-L],v._$={first_line:r[r.length-(L||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(L||1)].first_column,last_column:r[r.length-1].last_column},f&&(v._$.range=[r[r.length-(L||1)].range[0],r[r.length-1].range[1]]),void 0!==(k=this.performAction.apply(v,[c,l,h,p.yy,N[1],s,r].concat(g))))return k;L&&(n=n.slice(0,-1*L*2),s=s.slice(0,-1*L),r=r.slice(0,-1*L)),n.push(this.productions_[N[1]][0]),s.push(v.$),r.push(v._$),I=o[n[n.length-2]][n[n.length-1]],n.push(I);break;case 3:return!0}}return!0},"parse")},b=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,n,i){switch(n){case 0:return t.getLogger().trace("Found comment",e.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:case 23:case 26:this.popState();break;case 5:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return t.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:t.getLogger().trace("end icon"),this.popState();break;case 10:return t.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return t.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:case 15:case 16:case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 24:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 27:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 30:case 33:case 34:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 31:case 32:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 35:case 36:return t.getLogger().trace("Long description:",e.yytext),20}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}}}();function E(){this.yy={}}return _.lexer=b,(0,a.K2)(E,"Parser"),E.prototype=_,_.Parser=E,new E}();f.parser=f;var _=f,b={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},E=class{constructor(){this.nodes=[],this.count=0,this.elements={},this.getLogger=this.getLogger.bind(this),this.nodeType=b,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{(0,a.K2)(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let e=this.nodes.length-1;e>=0;e--)if(this.nodes[e].level<t)return this.nodes[e];return null}getMindmap(){return this.nodes.length>0?this.nodes[0]:null}addNode(t,e,n,i){a.Rm.info("addNode",t,e,n,i);let s=!1;0===this.nodes.length?(this.baseLevel=t,t=0,s=!0):void 0!==this.baseLevel&&(t-=this.baseLevel,s=!1);const r=(0,o.D7)();let c=r.mindmap?.padding??o.UI.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:c*=2}const h={id:this.count++,nodeId:(0,o.jZ)(e,r),level:t,descr:(0,o.jZ)(n,r),type:i,children:[],width:r.mindmap?.maxNodeWidth??o.UI.mindmap.maxNodeWidth,padding:c,isRoot:s},l=this.getParent(t);if(l)l.children.push(h),this.nodes.push(h);else{if(!s)throw new Error(`There can be only one root. No parent could be found for ("${h.descr}")`);this.nodes.push(h)}}getType(t,e){switch(a.Rm.debug("In get type",t,e),t){case"[":return this.nodeType.RECT;case"(":return")"===e?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,e){this.elements[t]=e}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;const e=(0,o.D7)(),n=this.nodes[this.nodes.length-1];t.icon&&(n.icon=(0,o.jZ)(t.icon,e)),t.class&&(n.class=(0,o.jZ)(t.class,e))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,e){if(0===t.level?t.section=void 0:t.section=e,t.children)for(const[n,i]of t.children.entries()){const s=0===t.level?n:e;this.assignSections(i,s)}}flattenNodes(t,e){const n=["mindmap-node"];!0===t.isRoot?n.push("section-root","section--1"):void 0!==t.section&&n.push(`section-${t.section}`),t.class&&n.push(t.class);const i=n.join(" "),s=(0,a.K2)(t=>{switch(t){case b.CIRCLE:return"mindmapCircle";case b.RECT:return"rect";case b.ROUNDED_RECT:return"rounded";case b.CLOUD:return"cloud";case b.BANG:return"bang";case b.HEXAGON:return"hexagon";case b.DEFAULT:return"defaultMindmapNode";default:return"rect"}},"getShapeFromType"),r={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,isGroup:!1,shape:s(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:i,cssStyles:[],look:"default",icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(e.push(r),t.children)for(const o of t.children)this.flattenNodes(o,e)}generateEdges(t,e){if(t.children)for(const n of t.children){let i="edge";void 0!==n.section&&(i+=` section-edge-${n.section}`);i+=` edge-depth-${t.level+1}`;const s={id:`edge_${t.id}_${n.id}`,start:t.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:i,depth:t.level,section:n.section};e.push(s),this.generateEdges(n,e)}}getData(){const t=this.getMindmap(),e=(0,o.D7)(),n=e;if(void 0!==(0,o.TM)().layout||(n.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:n};a.Rm.debug("getData: mindmapRoot",t,e),this.assignSections(t);const i=[],s=[];this.flattenNodes(t,i),this.generateEdges(t,s),a.Rm.debug(`getData: processed ${i.length} nodes and ${s.length} edges`);const r=new Map;for(const o of i)r.set(o.id,{shape:o.shape,width:o.width,height:o.height,padding:o.padding});return{nodes:i,edges:s,config:n,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(r),type:"mindmap",diagramId:"mindmap-"+u()}}getLogger(){return a.Rm}},S={draw:(0,a.K2)(async(t,e,n,c)=>{a.Rm.debug("Rendering mindmap diagram\n"+t);const h=c.db,l=h.getData(),d=(0,i.A)(e,l.config.securityLevel);l.type=c.type,l.layoutAlgorithm=(0,r.q7)(l.config.layout,{fallback:"cose-bilkent"}),l.diagramId=e;h.getMindmap()&&(l.nodes.forEach(t=>{"rounded"===t.shape?(t.radius=15,t.taper=15,t.stroke="none",t.width=0,t.padding=15):"circle"===t.shape?t.padding=10:"rect"===t.shape&&(t.width=0,t.padding=10)}),await(0,r.XX)(l,d),(0,s.P)(d,l.config.mindmap?.padding??o.UI.mindmap.padding,"mindmapDiagram",l.config.mindmap?.useMaxWidth??o.UI.mindmap.useMaxWidth))},"draw")},N=(0,a.K2)(t=>{let e="";for(let n=0;n<t.THEME_COLOR_LIMIT;n++)t["lineColor"+n]=t["lineColor"+n]||t["cScaleInv"+n],(0,p.A)(t["lineColor"+n])?t["lineColor"+n]=(0,y.A)(t["lineColor"+n],20):t["lineColor"+n]=(0,m.A)(t["lineColor"+n],20);for(let n=0;n<t.THEME_COLOR_LIMIT;n++){const i=""+(17-3*n);e+=`\n .section-${n-1} rect, .section-${n-1} path, .section-${n-1} circle, .section-${n-1} polygon, .section-${n-1} path {\n fill: ${t["cScale"+n]};\n }\n .section-${n-1} text {\n fill: ${t["cScaleLabel"+n]};\n }\n .node-icon-${n-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+n]};\n }\n .section-edge-${n-1}{\n stroke: ${t["cScale"+n]};\n }\n .edge-depth-${n-1}{\n stroke-width: ${i};\n }\n .section-${n-1} line {\n stroke: ${t["cScaleInv"+n]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `}return e},"genSections"),k=(0,a.K2)(t=>`\n .edge {\n stroke-width: 3;\n }\n ${N(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .section-root span {\n color: ${t.gitBranchLabel0};\n }\n .section-2 span {\n color: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`,"getStyles"),D={get db(){return new E},renderer:S,parser:_,styles:k}}}]); \ No newline at end of file diff --git a/developer/assets/js/a7456010.6771e6a5.js b/developer/assets/js/a7456010.6771e6a5.js new file mode 100644 index 0000000..53385ee --- /dev/null +++ b/developer/assets/js/a7456010.6771e6a5.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[1235],{8552:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/developer/assets/js/a7bd4aaa.1bc0a8b7.js b/developer/assets/js/a7bd4aaa.1bc0a8b7.js new file mode 100644 index 0000000..fa5b41f --- /dev/null +++ b/developer/assets/js/a7bd4aaa.1bc0a8b7.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[7098],{1723:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(6540);var r=s(5500);function o(n,e){return`docs-${n}-${e}`}var t=s(3025),i=s(2831),c=s(1463),l=s(4848);function a(n){const{version:e}=n;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.A,{version:e.version,tag:o(e.pluginId,e.version)}),(0,l.jsx)(r.be,{children:e.noIndex&&(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function u(n){const{version:e,route:s}=n;return(0,l.jsx)(r.e3,{className:e.className,children:(0,l.jsx)(t.n,{version:e,children:(0,i.v)(s.routes)})})}function d(n){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(a,{...n}),(0,l.jsx)(u,{...n})]})}}}]); \ No newline at end of file diff --git a/developer/assets/js/a94703ab.7b33c78b.js b/developer/assets/js/a94703ab.7b33c78b.js new file mode 100644 index 0000000..4c75e40 --- /dev/null +++ b/developer/assets/js/a94703ab.7b33c78b.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[9048],{3363:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var a=n(4164),i=n(1312),o=n(1107),s=n(4848);function l({className:e}){return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",e),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(i.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(i.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(i.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},8115:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ke});var a=n(6540),i=n(4164),o=n(5500),s=n(7559),l=n(4718),r=n(609),c=n(1312),d=n(3104),u=n(5062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(4848);function h(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:o,cancelScroll:s}=(0,d.gk)();return(0,d.Mq)(({scrollY:t},a)=>{const o=a?.scrollY;o&&(i.current?i.current=!1:t>=o?(s(),n(!1)):t<e?n(!1):t+window.innerHeight<document.documentElement.scrollHeight&&n(!0))}),(0,u.$)(e=>{e.location.hash&&(i.current=!0,n(!1))}),{shown:t,scrollToTop:()=>o(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,i.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3109),x=n(6347),j=n(4581),f=n(6342),_=n(3465);function v(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const g="collapseSidebarButton_PEFL",k="collapseSidebarButtonIcon_kv0_";function A({onClick:e}){return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,i.A)("button button--secondary button--outline",g),onClick:e,children:(0,b.jsx)(v,{className:k})})}var C=n(5041),S=n(9532);const T=Symbol("EmptyContext"),N=a.createContext(T);function I({children:e}){const[t,n]=(0,a.useState)(null),i=(0,a.useMemo)(()=>({expandedItem:t,setExpandedItem:n}),[t]);return(0,b.jsx)(N.Provider,{value:i,children:e})}var y=n(1422),B=n(9169),L=n(8774),w=n(2303),E=n(6654),M=n(3186);const H="menuExternalLink_NmtK",P="linkLabel_WmDU";function G({label:e}){return(0,b.jsx)("span",{title:e,className:P,children:e})}function W({item:e,onItemClick:t,activePath:n,level:a,index:o,...r}){const{href:c,label:d,className:u,autoAddBaseUrl:m}=e,h=(0,l.w8)(e,n),p=(0,E.A)(c);return(0,b.jsx)("li",{className:(0,i.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(a),"menu__list-item",u),children:(0,b.jsxs)(L.A,{className:(0,i.A)("menu__link",!p&&H,{"menu__link--active":h}),autoAddBaseUrl:m,"aria-current":h?"page":void 0,to:c,...p&&{onClick:t?()=>t(e):void 0},...r,children:[(0,b.jsx)(G,{label:d}),!p&&(0,b.jsx)(M.A,{})]})},d)}const R="categoryLink_byQd",D="categoryLinkLabel_W154";function U({collapsed:e,categoryLabel:t,onClick:n}){return(0,b.jsx)("button",{"aria-label":e?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:t}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:t}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:n})}function F({label:e}){return(0,b.jsx)("span",{title:e,className:D,children:e})}function V(e){return 0===(0,l.Y)(e.item.items,e.activePath).length?(0,b.jsx)(Y,{...e}):(0,b.jsx)(K,{...e})}function Y({item:e,...t}){if("string"!=typeof e.href)return null;const{type:n,collapsed:a,collapsible:i,items:o,linkUnlisted:s,...l}=e,r={type:"link",...l};return(0,b.jsx)(W,{item:r,...t})}function K({item:e,onItemClick:t,activePath:n,level:o,index:r,...c}){const{items:d,label:u,collapsible:m,className:h,href:p}=e,{docs:{sidebar:{autoCollapseCategories:x}}}=(0,f.p)(),j=function(e){const t=(0,w.A)();return(0,a.useMemo)(()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0,[e,t])}(e),_=(0,l.w8)(e,n),v=(0,B.ys)(p,n),{collapsed:g,setCollapsed:k}=(0,y.u)({initialState:()=>!!m&&(!_&&e.collapsed)}),{expandedItem:A,setExpandedItem:C}=function(){const e=(0,a.useContext)(N);if(e===T)throw new S.dV("DocSidebarItemsExpandedStateProvider");return e}(),I=(e=!g)=>{C(e?null:r),k(e)};!function({isActive:e,collapsed:t,updateCollapsed:n,activePath:i}){const o=(0,S.ZC)(e),s=(0,S.ZC)(i);(0,a.useEffect)(()=>{(e&&!o||e&&o&&i!==s)&&t&&n(!1)},[e,o,t,n,i,s])}({isActive:_,collapsed:g,updateCollapsed:I,activePath:n}),(0,a.useEffect)(()=>{m&&null!=A&&A!==r&&x&&k(!0)},[m,A,r,k,x]);return(0,b.jsxs)("li",{className:(0,i.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(o),"menu__list-item",{"menu__list-item--collapsed":g},h),children:[(0,b.jsxs)("div",{className:(0,i.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":v}),children:[(0,b.jsx)(L.A,{className:(0,i.A)(R,"menu__link",{"menu__link--sublist":m,"menu__link--sublist-caret":!p&&m,"menu__link--active":_}),onClick:n=>{t?.(e),m&&(p?v?(n.preventDefault(),I()):I(!1):(n.preventDefault(),I()))},"aria-current":v?"page":void 0,role:m&&!p?"button":void 0,"aria-expanded":m&&!p?!g:void 0,href:m?j??"#":j,...c,children:(0,b.jsx)(F,{label:u})}),p&&m&&(0,b.jsx)(U,{collapsed:g,categoryLabel:u,onClick:e=>{e.preventDefault(),I()}})]}),(0,b.jsx)(y.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:g,children:(0,b.jsx)(Z,{items:d,tabIndex:g?-1:0,onItemClick:t,activePath:n,level:o+1})})]})}const z="menuHtmlItem_M9Kj";function q({item:e,level:t,index:n}){const{value:a,defaultStyle:o,className:l}=e;return(0,b.jsx)("li",{className:(0,i.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(t),o&&[z,"menu__list-item"],l),dangerouslySetInnerHTML:{__html:a}},n)}function O({item:e,...t}){switch(e.type){case"category":return(0,b.jsx)(V,{item:e,...t});case"html":return(0,b.jsx)(q,{item:e,...t});default:return(0,b.jsx)(W,{item:e,...t})}}function Q({items:e,...t}){const n=(0,l.Y)(e,t.activePath);return(0,b.jsx)(I,{children:n.map((e,n)=>(0,b.jsx)(O,{item:e,index:n,...t},n))})}const Z=(0,a.memo)(Q),J="menu_SIkG",X="menuWithAnnouncementBar_GW3s";function $({path:e,sidebar:t,className:n}){const o=function(){const{isActive:e}=(0,C.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)(({scrollY:t})=>{e&&n(0===t)},[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,i.A)("menu thin-scrollbar",J,o&&X,n),children:(0,b.jsx)("ul",{className:(0,i.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(Z,{items:t,activePath:e,level:1})})})}const ee="sidebar_njMd",te="sidebarWithHideableNavbar_wUlq",ne="sidebarHidden_VK0M",ae="sidebarLogo_isFc";function ie({path:e,sidebar:t,onCollapse:n,isHidden:a}){const{navbar:{hideOnScroll:o},docs:{sidebar:{hideable:s}}}=(0,f.p)();return(0,b.jsxs)("div",{className:(0,i.A)(ee,o&&te,a&&ne),children:[o&&(0,b.jsx)(_.A,{tabIndex:-1,className:ae}),(0,b.jsx)($,{path:e,sidebar:t}),s&&(0,b.jsx)(A,{onClick:n})]})}const oe=a.memo(ie);var se=n(5600),le=n(2069);const re=({sidebar:e,path:t})=>{const n=(0,le.M)();return(0,b.jsx)("ul",{className:(0,i.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(Z,{items:e,activePath:t,onItemClick:e=>{"category"===e.type&&e.href&&n.toggle(),"link"===e.type&&n.toggle()},level:1})})};function ce(e){return(0,b.jsx)(se.GX,{component:re,props:e})}const de=a.memo(ce);function ue(e){const t=(0,j.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(oe,{...e}),a&&(0,b.jsx)(de,{...e})]})}const me={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function be({toggleSidebar:e}){return(0,b.jsx)("div",{className:me.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:e,onClick:e,children:(0,b.jsx)(v,{className:me.expandButtonIcon})})}const he={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function pe({children:e}){const t=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:e},t?.name??"noSidebar")}function xe({sidebar:e,hiddenSidebarContainer:t,setHiddenSidebarContainer:n}){const{pathname:o}=(0,x.zy)(),[l,r]=(0,a.useState)(!1),c=(0,a.useCallback)(()=>{l&&r(!1),!l&&(0,p.O)()&&r(!0),n(e=>!e)},[n,l]);return(0,b.jsx)("aside",{className:(0,i.A)(s.G.docs.docSidebarContainer,he.docSidebarContainer,t&&he.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(he.docSidebarContainer)&&t&&r(!0)},children:(0,b.jsx)(pe,{children:(0,b.jsxs)("div",{className:(0,i.A)(he.sidebarViewport,l&&he.sidebarViewportHidden),children:[(0,b.jsx)(ue,{sidebar:e,path:o,onCollapse:c,isHidden:l}),l&&(0,b.jsx)(be,{toggleSidebar:c})]})})})}const je={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function fe({hiddenSidebarContainer:e,children:t}){const n=(0,r.t)();return(0,b.jsx)("main",{className:(0,i.A)(je.docMainContainer,(e||!n)&&je.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,i.A)("container padding-top--md padding-bottom--lg",je.docItemWrapper,e&&je.docItemWrapperEnhanced),children:t})})}const _e={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function ve({children:e}){const t=(0,r.t)(),[n,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:_e.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:_e.docRoot,children:[t&&(0,b.jsx)(xe,{sidebar:t.items,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}),(0,b.jsx)(fe,{hiddenSidebarContainer:n,children:e})]})]})}var ge=n(3363);function ke(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(ge.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(o.e3,{className:(0,i.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(ve,{children:n})})})}}}]); \ No newline at end of file diff --git a/developer/assets/js/aba21aa0.0c3044c5.js b/developer/assets/js/aba21aa0.0c3044c5.js new file mode 100644 index 0000000..7879635 --- /dev/null +++ b/developer/assets/js/aba21aa0.0c3044c5.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[5742],{7093:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/developer/assets/js/b5a1766e.41945757.js b/developer/assets/js/b5a1766e.41945757.js new file mode 100644 index 0000000..2fab410 --- /dev/null +++ b/developer/assets/js/b5a1766e.41945757.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[7806],{5908:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"timer-architecture","title":"Timer Architecture","description":"This document explains the timer/scheduler system in the Tibber Prices integration - what runs when, why, and how they coordinate.","source":"@site/docs/timer-architecture.md","sourceDirName":".","slug":"/timer-architecture","permalink":"/hass.tibber_prices/developer/timer-architecture","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/timer-architecture.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Architecture","permalink":"/hass.tibber_prices/developer/architecture"},"next":{"title":"Caching Strategy","permalink":"/hass.tibber_prices/developer/caching-strategy"}}');var s=r(4848),t=r(8453);const l={comments:!1},d="Timer Architecture",c={},o=[{value:"Overview",id:"overview",level:2},{value:"Timer #1: DataUpdateCoordinator (HA Built-in)",id:"timer-1-dataupdatecoordinator-ha-built-in",level:2},{value:"Timer #2: Quarter-Hour Refresh (Custom)",id:"timer-2-quarter-hour-refresh-custom",level:2},{value:"Timer #3: Minute Refresh (Custom)",id:"timer-3-minute-refresh-custom",level:2},{value:"Listener Pattern (Python/HA Terminology)",id:"listener-pattern-pythonha-terminology",level:2},{value:"Timer Coordination Scenarios",id:"timer-coordination-scenarios",level:2},{value:"Scenario 1: Normal Operation (No Midnight)",id:"scenario-1-normal-operation-no-midnight",level:3},{value:"Scenario 2: Midnight Turnover",id:"scenario-2-midnight-turnover",level:3},{value:"Scenario 3: Tomorrow Data Check (After 13:00)",id:"scenario-3-tomorrow-data-check-after-1300",level:3},{value:"Why We Keep HA's Timer (Timer #1)",id:"why-we-keep-has-timer-timer-1",level:2},{value:"Reason 1: Load Distribution on Tibber API",id:"reason-1-load-distribution-on-tibber-api",level:3},{value:"Reason 2: What Timer #1 Actually Checks",id:"reason-2-what-timer-1-actually-checks",level:3},{value:"Reason 3: HA Integration Best Practices",id:"reason-3-ha-integration-best-practices",level:3},{value:"What We DO Synchronize",id:"what-we-do-synchronize",level:3},{value:"Performance Characteristics",id:"performance-characteristics",level:2},{value:"Timer #1 (DataUpdateCoordinator)",id:"timer-1-dataupdatecoordinator",level:3},{value:"Timer #2 (Quarter-Hour Refresh)",id:"timer-2-quarter-hour-refresh",level:3},{value:"Timer #3 (Minute Refresh)",id:"timer-3-minute-refresh",level:3},{value:"Debugging Timer Issues",id:"debugging-timer-issues",level:2},{value:"Check Timer #1 (HA Coordinator)",id:"check-timer-1-ha-coordinator",level:3},{value:"Check Timer #2 (Quarter-Hour)",id:"check-timer-2-quarter-hour",level:3},{value:"Check Timer #3 (Minute)",id:"check-timer-3-minute",level:3},{value:"Common Issues",id:"common-issues",level:3},{value:"Related Documentation",id:"related-documentation",level:2},{value:"Summary",id:"summary",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"timer-architecture",children:"Timer Architecture"})}),"\n",(0,s.jsx)(n.p,{children:"This document explains the timer/scheduler system in the Tibber Prices integration - what runs when, why, and how they coordinate."}),"\n",(0,s.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,s.jsxs)(n.p,{children:["The integration uses ",(0,s.jsx)(n.strong,{children:"three independent timer mechanisms"})," for different purposes:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Timer"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Interval"}),(0,s.jsx)(n.th,{children:"Purpose"}),(0,s.jsx)(n.th,{children:"Trigger Method"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Timer #1"})}),(0,s.jsx)(n.td,{children:"HA built-in"}),(0,s.jsx)(n.td,{children:"15 minutes"}),(0,s.jsx)(n.td,{children:"API data updates"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"DataUpdateCoordinator"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Timer #2"})}),(0,s.jsx)(n.td,{children:"Custom"}),(0,s.jsx)(n.td,{children:":00, :15, :30, :45"}),(0,s.jsx)(n.td,{children:"Entity state refresh"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"async_track_utc_time_change()"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.strong,{children:"Timer #3"})}),(0,s.jsx)(n.td,{children:"Custom"}),(0,s.jsx)(n.td,{children:"Every minute"}),(0,s.jsx)(n.td,{children:"Countdown/progress"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"async_track_utc_time_change()"})})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Key principle:"})," Timer #1 (HA) controls ",(0,s.jsx)(n.strong,{children:"data fetching"}),", Timer #2 controls ",(0,s.jsx)(n.strong,{children:"entity updates"}),", Timer #3 controls ",(0,s.jsx)(n.strong,{children:"timing displays"}),"."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"timer-1-dataupdatecoordinator-ha-built-in",children:"Timer #1: DataUpdateCoordinator (HA Built-in)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"File:"})," ",(0,s.jsx)(n.code,{children:"coordinator/core.py"})," \u2192 ",(0,s.jsx)(n.code,{children:"TibberPricesDataUpdateCoordinator"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Type:"})," Home Assistant's built-in ",(0,s.jsx)(n.code,{children:"DataUpdateCoordinator"})," with ",(0,s.jsx)(n.code,{children:"UPDATE_INTERVAL = 15 minutes"})]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What it is:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["HA provides this timer system automatically when you inherit from ",(0,s.jsx)(n.code,{children:"DataUpdateCoordinator"})]}),"\n",(0,s.jsxs)(n.li,{children:["Triggers ",(0,s.jsx)(n.code,{children:"_async_update_data()"})," method every 15 minutes"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Not"})," synchronized to clock boundaries (each installation has different start time)"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Purpose:"})," Check if fresh API data is needed, fetch if necessary"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What it does:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'async def _async_update_data(self) -> TibberPricesData:\n # Step 1: Check midnight turnover FIRST (prevents race with Timer #2)\n if self._check_midnight_turnover_needed(dt_util.now()):\n await self._perform_midnight_data_rotation(dt_util.now())\n # Notify ALL entities after midnight turnover\n return self.data # Early return\n\n # Step 2: Check if we need tomorrow data (after 13:00)\n if self._should_update_price_data() == "tomorrow_check":\n await self._fetch_and_update_data() # Fetch from API\n return self.data\n\n # Step 3: Use cached data (fast path - most common)\n return self.data\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Load Distribution:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Each HA installation starts Timer #1 at different times \u2192 natural distribution"}),"\n",(0,s.jsx)(n.li,{children:'Tomorrow data check adds 0-30s random delay \u2192 prevents "thundering herd" on Tibber API'}),"\n",(0,s.jsx)(n.li,{children:"Result: API load spread over ~30 minutes instead of all at once"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Midnight Coordination:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Atomic check: ",(0,s.jsx)(n.code,{children:"_check_midnight_turnover_needed(now)"})," compares dates only (no side effects)"]}),"\n",(0,s.jsx)(n.li,{children:"If midnight turnover needed \u2192 performs it and returns early"}),"\n",(0,s.jsx)(n.li,{children:"Timer #2 will see turnover already done and skip gracefully"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Why we use HA's timer:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Automatic restart after HA restart"}),"\n",(0,s.jsx)(n.li,{children:"Built-in retry logic for temporary failures"}),"\n",(0,s.jsx)(n.li,{children:"Standard HA integration pattern"}),"\n",(0,s.jsx)(n.li,{children:"Handles backpressure (won't queue up if previous update still running)"}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"timer-2-quarter-hour-refresh-custom",children:"Timer #2: Quarter-Hour Refresh (Custom)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"File:"})," ",(0,s.jsx)(n.code,{children:"coordinator/listeners.py"})," \u2192 ",(0,s.jsx)(n.code,{children:"ListenerManager.schedule_quarter_hour_refresh()"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Type:"})," Custom timer using ",(0,s.jsx)(n.code,{children:"async_track_utc_time_change(minute=[0, 15, 30, 45], second=0)"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Purpose:"})," Update time-sensitive entity states at interval boundaries ",(0,s.jsx)(n.strong,{children:"without waiting for API poll"})]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Problem it solves:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Timer #1 runs every 15 minutes but NOT synchronized to clock (:03, :18, :33, :48)"}),"\n",(0,s.jsx)(n.li,{children:"Current price changes at :00, :15, :30, :45 \u2192 entities would show stale data for up to 15 minutes"}),"\n",(0,s.jsx)(n.li,{children:"Example: 14:00 new price, but Timer #1 ran at 13:58 \u2192 next update at 14:13 \u2192 users see old price until 14:13"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What it does:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"async def _handle_quarter_hour_refresh(self, now: datetime) -> None:\n # Step 1: Check midnight turnover (coordinates with Timer #1)\n if self._check_midnight_turnover_needed(now):\n # Timer #1 might have already done this \u2192 atomic check handles it\n await self._perform_midnight_data_rotation(now)\n # Notify ALL entities after midnight turnover\n return\n\n # Step 2: Normal quarter-hour refresh (most common path)\n # Only notify time-sensitive entities (current_interval_price, etc.)\n self._listener_manager.async_update_time_sensitive_listeners()\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Smart Boundary Tolerance:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Uses ",(0,s.jsx)(n.code,{children:"round_to_nearest_quarter_hour()"})," with \xb12 second tolerance"]}),"\n",(0,s.jsx)(n.li,{children:"HA may schedule timer at 14:59:58 \u2192 rounds to 15:00:00 (shows new interval)"}),"\n",(0,s.jsx)(n.li,{children:"HA restart at 14:59:30 \u2192 stays at 14:45:00 (shows current interval)"}),"\n",(0,s.jsxs)(n.li,{children:["See ",(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/architecture#3-quarter-hour-precision",children:"Architecture"})," for details"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Absolute Time Scheduling:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"async_track_utc_time_change()"})," plans for ",(0,s.jsx)(n.strong,{children:"all future boundaries"})," (15:00, 15:15, 15:30, ...)"]}),"\n",(0,s.jsx)(n.li,{children:'NOT relative delays ("in 15 minutes")'}),"\n",(0,s.jsx)(n.li,{children:"If triggered at 14:59:58 \u2192 next trigger is 15:15:00, NOT 15:00:00 (prevents double updates)"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Which entities listen:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:['All sensors that depend on "current interval" (e.g., ',(0,s.jsx)(n.code,{children:"current_interval_price"}),", ",(0,s.jsx)(n.code,{children:"next_interval_price"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:['Binary sensors that check "is now in period?" (e.g., ',(0,s.jsx)(n.code,{children:"best_price_period_active"}),")"]}),"\n",(0,s.jsx)(n.li,{children:"~50-60 entities out of 120+ total"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Why custom timer:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"HA's built-in coordinator doesn't support exact boundary timing"}),"\n",(0,s.jsxs)(n.li,{children:["We need ",(0,s.jsx)(n.strong,{children:"absolute time"})," triggers, not periodic intervals"]}),"\n",(0,s.jsx)(n.li,{children:"Allows fast entity updates without expensive data transformation"}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"timer-3-minute-refresh-custom",children:"Timer #3: Minute Refresh (Custom)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"File:"})," ",(0,s.jsx)(n.code,{children:"coordinator/listeners.py"})," \u2192 ",(0,s.jsx)(n.code,{children:"ListenerManager.schedule_minute_refresh()"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Type:"})," Custom timer using ",(0,s.jsx)(n.code,{children:"async_track_utc_time_change(second=0)"})," (every minute)"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Purpose:"})," Update countdown and progress sensors for smooth UX"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"What it does:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"async def _handle_minute_refresh(self, now: datetime) -> None:\n # Only notify minute-update entities\n # No data fetching, no transformation, no midnight handling\n self._listener_manager.async_update_minute_listeners()\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Which entities listen:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"best_price_remaining_minutes"})," - Countdown timer"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"peak_price_remaining_minutes"})," - Countdown timer"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"best_price_progress"})," - Progress bar (0-100%)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"peak_price_progress"})," - Progress bar (0-100%)"]}),"\n",(0,s.jsx)(n.li,{children:"~10 entities total"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Why custom timer:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Users want smooth countdowns (not jumping 15 minutes at a time)"}),"\n",(0,s.jsx)(n.li,{children:"Progress bars need minute-by-minute updates"}),"\n",(0,s.jsx)(n.li,{children:"Very lightweight (no data processing, just state recalculation)"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Why NOT every second:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Minute precision sufficient for countdown UX"}),"\n",(0,s.jsx)(n.li,{children:"Reduces CPU load (60\xd7 fewer updates than seconds)"}),"\n",(0,s.jsx)(n.li,{children:"Home Assistant best practice (avoid sub-minute updates)"}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"listener-pattern-pythonha-terminology",children:"Listener Pattern (Python/HA Terminology)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Your question:"})," \"Sind Timer f\xfcr dich eigentlich 'Listener'?\""]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Answer:"})," In Home Assistant terminology:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Timer"})," = The mechanism that triggers at specific times (",(0,s.jsx)(n.code,{children:"async_track_utc_time_change"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Listener"})," = A callback function that gets called when timer triggers"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Observer Pattern"})," = Entities register callbacks, coordinator notifies them"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"How it works:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:"# Entity registers a listener callback\nclass TibberPricesSensor(CoordinatorEntity):\n async def async_added_to_hass(self):\n # Register this entity's update callback\n self._remove_listener = self.coordinator.async_add_time_sensitive_listener(\n self._handle_coordinator_update\n )\n\n# Coordinator maintains list of listeners\nclass ListenerManager:\n def __init__(self):\n self._time_sensitive_listeners = [] # List of callbacks\n\n def async_add_time_sensitive_listener(self, callback):\n self._time_sensitive_listeners.append(callback)\n\n def async_update_time_sensitive_listeners(self):\n # Timer triggered \u2192 notify all listeners\n for callback in self._time_sensitive_listeners:\n callback() # Entity updates itself\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Why this pattern:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Decouples timer logic from entity logic"}),"\n",(0,s.jsx)(n.li,{children:"One timer can notify many entities efficiently"}),"\n",(0,s.jsx)(n.li,{children:"Entities can unregister when removed (cleanup)"}),"\n",(0,s.jsx)(n.li,{children:"Standard HA pattern for coordinator-based integrations"}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"timer-coordination-scenarios",children:"Timer Coordination Scenarios"}),"\n",(0,s.jsx)(n.h3,{id:"scenario-1-normal-operation-no-midnight",children:"Scenario 1: Normal Operation (No Midnight)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"14:00:00 \u2192 Timer #2 triggers\n \u2192 Update time-sensitive entities (current price changed)\n \u2192 60 entities updated (~5ms)\n\n14:03:12 \u2192 Timer #1 triggers (HA's 15-min cycle)\n \u2192 Check if tomorrow data needed (no, still cached)\n \u2192 Return cached data (fast path, ~2ms)\n\n14:15:00 \u2192 Timer #2 triggers\n \u2192 Update time-sensitive entities\n \u2192 60 entities updated (~5ms)\n\n14:16:00 \u2192 Timer #3 triggers\n \u2192 Update countdown/progress entities\n \u2192 10 entities updated (~1ms)\n"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Key observation:"})," Timer #1 and Timer #2 run ",(0,s.jsx)(n.strong,{children:"independently"}),", no conflicts."]}),"\n",(0,s.jsx)(n.h3,{id:"scenario-2-midnight-turnover",children:"Scenario 2: Midnight Turnover"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"23:45:12 \u2192 Timer #1 triggers\n \u2192 Check midnight: current_date=2025-11-17, last_check=2025-11-17\n \u2192 No turnover needed\n \u2192 Return cached data\n\n00:00:00 \u2192 Timer #2 triggers FIRST (synchronized to midnight)\n \u2192 Check midnight: current_date=2025-11-18, last_check=2025-11-17\n \u2192 Turnover needed! Perform rotation, save cache\n \u2192 _last_midnight_check = 2025-11-18\n \u2192 Notify ALL entities\n\n00:03:12 \u2192 Timer #1 triggers (its regular cycle)\n \u2192 Check midnight: current_date=2025-11-18, last_check=2025-11-18\n \u2192 Turnover already done \u2192 skip\n \u2192 Return existing data (fast path)\n"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Key observation:"})," Atomic date comparison prevents double-turnover, whoever runs first wins."]}),"\n",(0,s.jsx)(n.h3,{id:"scenario-3-tomorrow-data-check-after-1300",children:"Scenario 3: Tomorrow Data Check (After 13:00)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"13:00:00 \u2192 Timer #2 triggers\n \u2192 Normal quarter-hour refresh\n \u2192 Update time-sensitive entities\n\n13:03:12 \u2192 Timer #1 triggers\n \u2192 Check tomorrow data: missing or invalid\n \u2192 Fetch from Tibber API (~300ms)\n \u2192 Transform data (~200ms)\n \u2192 Calculate periods (~100ms)\n \u2192 Notify ALL entities (new data available)\n\n13:15:00 \u2192 Timer #2 triggers\n \u2192 Normal quarter-hour refresh (uses newly fetched data)\n \u2192 Update time-sensitive entities\n"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Key observation:"})," Timer #1 does expensive work (API + transform), Timer #2 does cheap work (entity notify)."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"why-we-keep-has-timer-timer-1",children:"Why We Keep HA's Timer (Timer #1)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Your question:"}),' "warum wir den HA timer trotzdem weiter benutzen, da er ja f\xfcr uns unkontrollierte aktualisierte \xe4nderungen triggert"']}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Answer:"})," You're correct that it's not synchronized, but that's actually ",(0,s.jsx)(n.strong,{children:"intentional"}),":"]}),"\n",(0,s.jsx)(n.h3,{id:"reason-1-load-distribution-on-tibber-api",children:"Reason 1: Load Distribution on Tibber API"}),"\n",(0,s.jsx)(n.p,{children:"If all installations used synchronized timers:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"\u274c Everyone fetches at 13:00:00 \u2192 Tibber API overload"}),"\n",(0,s.jsx)(n.li,{children:"\u274c Everyone fetches at 14:00:00 \u2192 Tibber API overload"}),"\n",(0,s.jsx)(n.li,{children:'\u274c "Thundering herd" problem'}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"With HA's unsynchronized timer:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"\u2705 Installation A: 13:03:12, 13:18:12, 13:33:12, ..."}),"\n",(0,s.jsx)(n.li,{children:"\u2705 Installation B: 13:07:45, 13:22:45, 13:37:45, ..."}),"\n",(0,s.jsx)(n.li,{children:"\u2705 Installation C: 13:11:28, 13:26:28, 13:41:28, ..."}),"\n",(0,s.jsx)(n.li,{children:"\u2705 Natural distribution over ~30 minutes"}),"\n",(0,s.jsx)(n.li,{children:"\u2705 Plus: Random 0-30s delay on tomorrow checks"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Result:"})," API load spread evenly, no spikes."]}),"\n",(0,s.jsx)(n.h3,{id:"reason-2-what-timer-1-actually-checks",children:"Reason 2: What Timer #1 Actually Checks"}),"\n",(0,s.jsx)(n.p,{children:"Timer #1 does NOT blindly update. It checks:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'def _should_update_price_data(self) -> str:\n # Check 1: Do we have tomorrow data? (only relevant after ~13:00)\n if tomorrow_missing or tomorrow_invalid:\n return "tomorrow_check" # Fetch needed\n\n # Check 2: Is cache still valid?\n if cache_valid:\n return "cached" # No fetch needed (most common!)\n\n # Check 3: Has enough time passed?\n if time_since_last_update < threshold:\n return "cached" # Too soon, skip fetch\n\n return "update_needed" # Rare case\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Most Timer #1 cycles:"})," Fast path (~2ms), no API call, just returns cached data."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"API fetch only when:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Tomorrow data missing/invalid (after 13:00)"}),"\n",(0,s.jsx)(n.li,{children:"Cache expired (midnight turnover)"}),"\n",(0,s.jsx)(n.li,{children:"Explicit user refresh"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"reason-3-ha-integration-best-practices",children:"Reason 3: HA Integration Best Practices"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\u2705 Standard HA pattern: ",(0,s.jsx)(n.code,{children:"DataUpdateCoordinator"})," is recommended by HA docs"]}),"\n",(0,s.jsx)(n.li,{children:"\u2705 Automatic retry logic for temporary API failures"}),"\n",(0,s.jsx)(n.li,{children:"\u2705 Backpressure handling (won't queue updates if previous still running)"}),"\n",(0,s.jsx)(n.li,{children:"\u2705 Developer tools integration (users can manually trigger refresh)"}),"\n",(0,s.jsx)(n.li,{children:"\u2705 Diagnostics integration (shows last update time, success/failure)"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"what-we-do-synchronize",children:"What We DO Synchronize"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\u2705 ",(0,s.jsx)(n.strong,{children:"Timer #2:"})," Entity state updates at exact boundaries (user-visible)"]}),"\n",(0,s.jsxs)(n.li,{children:["\u2705 ",(0,s.jsx)(n.strong,{children:"Timer #3:"})," Countdown/progress at exact minutes (user-visible)"]}),"\n",(0,s.jsxs)(n.li,{children:["\u274c ",(0,s.jsx)(n.strong,{children:"Timer #1:"})," API fetch timing (invisible to user, distribution wanted)"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"performance-characteristics",children:"Performance Characteristics"}),"\n",(0,s.jsx)(n.h3,{id:"timer-1-dataupdatecoordinator",children:"Timer #1 (DataUpdateCoordinator)"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Triggers:"})," Every 15 minutes (unsynchronized)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Fast path:"})," ~2ms (cache check, return existing data)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Slow path:"})," ~600ms (API fetch + transform + calculate)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Frequency:"})," ~96 times/day"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"API calls:"})," ~1-2 times/day (cached otherwise)"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"timer-2-quarter-hour-refresh",children:"Timer #2 (Quarter-Hour Refresh)"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Triggers:"})," 96 times/day (exact boundaries)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Processing:"})," ~5ms (notify 60 entities)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"No API calls:"})," Uses cached/transformed data"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"No transformation:"})," Just entity state updates"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"timer-3-minute-refresh",children:"Timer #3 (Minute Refresh)"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Triggers:"})," 1440 times/day (every minute)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Processing:"})," ~1ms (notify 10 entities)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"No API calls:"})," No data processing at all"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Lightweight:"})," Just countdown math"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Total CPU budget:"})," ~15 seconds/day for all timers combined."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"debugging-timer-issues",children:"Debugging Timer Issues"}),"\n",(0,s.jsx)(n.h3,{id:"check-timer-1-ha-coordinator",children:"Check Timer #1 (HA Coordinator)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# Enable debug logging\n_LOGGER.setLevel(logging.DEBUG)\n\n# Watch for these log messages:\n"Fetching data from API (reason: tomorrow_check)" # API call\n"Using cached data (no update needed)" # Fast path\n"Midnight turnover detected (Timer #1)" # Turnover\n'})}),"\n",(0,s.jsx)(n.h3,{id:"check-timer-2-quarter-hour",children:"Check Timer #2 (Quarter-Hour)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# Watch coordinator logs:\n"Updated 60 time-sensitive entities at quarter-hour boundary" # Normal\n"Midnight turnover detected (Timer #2)" # Turnover\n'})}),"\n",(0,s.jsx)(n.h3,{id:"check-timer-3-minute",children:"Check Timer #3 (Minute)"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-python",children:'# Watch coordinator logs:\n"Updated 10 minute-update entities" # Every minute\n'})}),"\n",(0,s.jsx)(n.h3,{id:"common-issues",children:"Common Issues"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Timer #2 not triggering:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Check: ",(0,s.jsx)(n.code,{children:"schedule_quarter_hour_refresh()"})," called in ",(0,s.jsx)(n.code,{children:"__init__"}),"?"]}),"\n",(0,s.jsxs)(n.li,{children:["Check: ",(0,s.jsx)(n.code,{children:"_quarter_hour_timer_cancel"})," properly stored?"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Double updates at midnight:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Should NOT happen (atomic coordination)"}),"\n",(0,s.jsx)(n.li,{children:"Check: Both timers use same date comparison logic?"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"API overload:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Check: Random delay working? (0-30s jitter on tomorrow check)"}),"\n",(0,s.jsx)(n.li,{children:"Check: Cache validation logic correct?"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"related-documentation",children:"Related Documentation"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/architecture",children:"Architecture"})})," - Overall system design, data flow"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/hass.tibber_prices/developer/caching-strategy",children:"Caching Strategy"})})," - Cache lifetimes, invalidation, midnight turnover"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/AGENTS.md",children:"AGENTS.md"})})," - Complete reference for AI development"]}),"\n"]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Three independent timers:"})}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Timer #1"})," (HA built-in, 15 min, unsynchronized) \u2192 Data fetching (when needed)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Timer #2"})," (Custom, :00/:15/:30/:45) \u2192 Entity state updates (always)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Timer #3"})," (Custom, every minute) \u2192 Countdown/progress (always)"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Key insights:"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Timer #1 unsynchronized = good (load distribution on API)"}),"\n",(0,s.jsx)(n.li,{children:"Timer #2 synchronized = good (user sees correct data immediately)"}),"\n",(0,s.jsx)(n.li,{children:"Timer #3 synchronized = good (smooth countdown UX)"}),"\n",(0,s.jsx)(n.li,{children:"All three coordinate gracefully (atomic midnight checks, no conflicts)"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:'"Listener" terminology:'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Timer = mechanism that triggers"}),"\n",(0,s.jsx)(n.li,{children:"Listener = callback that gets called"}),"\n",(0,s.jsx)(n.li,{children:"Observer pattern = entities register, coordinator notifies"}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/ca2d854d.270f6d36.js b/developer/assets/js/ca2d854d.270f6d36.js new file mode 100644 index 0000000..d243a3a --- /dev/null +++ b/developer/assets/js/ca2d854d.270f6d36.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[7192],{5515:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"critical-patterns","title":"Critical Behavior Patterns - Testing Guide","description":"Purpose: This documentation lists essential behavior patterns that must be tested to ensure production-quality code and prevent resource leaks.","source":"@site/docs/critical-patterns.md","sourceDirName":".","slug":"/critical-patterns","permalink":"/hass.tibber_prices/developer/critical-patterns","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/critical-patterns.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Coding Guidelines","permalink":"/hass.tibber_prices/developer/coding-guidelines"},"next":{"title":"Debugging Guide","permalink":"/hass.tibber_prices/developer/debugging"}}');var i=s(4848),t=s(8453);const l={comments:!1},c="Critical Behavior Patterns - Testing Guide",d={},a=[{value:"\ud83c\udfaf Why Are These Tests Critical?",id:"-why-are-these-tests-critical",level:2},{value:"\u2705 Test Categories",id:"-test-categories",level:2},{value:"1. Resource Cleanup (Memory Leak Prevention)",id:"1-resource-cleanup-memory-leak-prevention",level:3},{value:"1.1 Listener Cleanup \u2705",id:"11-listener-cleanup-",level:4},{value:"1.2 Timer Cleanup \u2705",id:"12-timer-cleanup-",level:4},{value:"1.3 Config Entry Cleanup \u2705",id:"13-config-entry-cleanup-",level:4},{value:"2. Cache Invalidation \u2705",id:"2-cache-invalidation-",level:3},{value:"2.1 Config Cache Invalidation",id:"21-config-cache-invalidation",level:4},{value:"3. Storage Cleanup \u2705",id:"3-storage-cleanup-",level:3},{value:"3.1 Persistent Storage Removal",id:"31-persistent-storage-removal",level:4},{value:"4. Timer Scheduling \u2705",id:"4-timer-scheduling-",level:3},{value:"5. Sensor-to-Timer Assignment \u2705",id:"5-sensor-to-timer-assignment-",level:3},{value:"\ud83d\udea8 Additional Analysis (Nice-to-Have Patterns)",id:"-additional-analysis-nice-to-have-patterns",level:2},{value:"6. Async Task Management",id:"6-async-task-management",level:3},{value:"7. API Session Cleanup",id:"7-api-session-cleanup",level:3},{value:"8. Translation Cache Memory",id:"8-translation-cache-memory",level:3},{value:"9. Coordinator Data Structure Integrity",id:"9-coordinator-data-structure-integrity",level:3},{value:"10. Service Response Memory",id:"10-service-response-memory",level:3},{value:"\ud83d\udcca Test Coverage Status",id:"-test-coverage-status",level:2},{value:"\u2705 Implemented Tests (41 total)",id:"-implemented-tests-41-total",level:3},{value:"\ud83d\udccb Analyzed but Not Implemented (Nice-to-Have)",id:"-analyzed-but-not-implemented-nice-to-have",level:3},{value:"\ud83c\udfaf Development Status",id:"-development-status",level:2},{value:"\u2705 All Critical Patterns Tested",id:"-all-critical-patterns-tested",level:3},{value:"\ud83d\udccb Nice-to-Have Tests (Optional)",id:"-nice-to-have-tests-optional",level:3},{value:"\ud83d\udd0d How to Run Tests",id:"-how-to-run-tests",level:2},{value:"\ud83d\udcda References",id:"-references",level:2}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"critical-behavior-patterns---testing-guide",children:"Critical Behavior Patterns - Testing Guide"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Purpose:"})," This documentation lists essential behavior patterns that must be tested to ensure production-quality code and prevent resource leaks."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Last Updated:"})," 2025-11-22\n",(0,i.jsx)(n.strong,{children:"Test Coverage:"})," 41 tests implemented (100% of critical patterns)"]}),"\n",(0,i.jsx)(n.h2,{id:"-why-are-these-tests-critical",children:"\ud83c\udfaf Why Are These Tests Critical?"}),"\n",(0,i.jsxs)(n.p,{children:["Home Assistant integrations run ",(0,i.jsx)(n.strong,{children:"continuously"})," in the background. Resource leaks lead to:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Memory Leaks"}),": RAM usage grows over days/weeks until HA becomes unstable"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Callback Leaks"}),": Listeners remain registered after entity removal \u2192 CPU load increases"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Timer Leaks"}),": Timers continue running after unload \u2192 unnecessary background tasks"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"File Handle Leaks"}),": Storage files remain open \u2192 system resources exhausted"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"-test-categories",children:"\u2705 Test Categories"}),"\n",(0,i.jsx)(n.h3,{id:"1-resource-cleanup-memory-leak-prevention",children:"1. Resource Cleanup (Memory Leak Prevention)"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"File:"})," ",(0,i.jsx)(n.code,{children:"tests/test_resource_cleanup.py"})]}),"\n",(0,i.jsx)(n.h4,{id:"11-listener-cleanup-",children:"1.1 Listener Cleanup \u2705"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"What is tested:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Time-sensitive listeners are correctly removed (",(0,i.jsx)(n.code,{children:"async_add_time_sensitive_listener()"}),")"]}),"\n",(0,i.jsxs)(n.li,{children:["Minute-update listeners are correctly removed (",(0,i.jsx)(n.code,{children:"async_add_minute_update_listener()"}),")"]}),"\n",(0,i.jsxs)(n.li,{children:["Lifecycle callbacks are correctly unregistered (",(0,i.jsx)(n.code,{children:"register_lifecycle_callback()"}),")"]}),"\n",(0,i.jsx)(n.li,{children:"Sensor cleanup removes ALL registered listeners"}),"\n",(0,i.jsx)(n.li,{children:"Binary sensor cleanup removes ALL registered listeners"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Why critical:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Each registered listener holds references to Entity + Coordinator"}),"\n",(0,i.jsx)(n.li,{children:"Without cleanup: Entities are not freed by GC \u2192 Memory Leak"}),"\n",(0,i.jsx)(n.li,{children:"With 80+ sensors \xd7 3 listener types = 240+ callbacks that must be cleanly removed"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Code Locations:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/listeners.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"async_add_time_sensitive_listener()"}),", ",(0,i.jsx)(n.code,{children:"async_add_minute_update_listener()"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/core.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"register_lifecycle_callback()"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sensor/core.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"async_will_remove_from_hass()"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"binary_sensor/core.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"async_will_remove_from_hass()"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"12-timer-cleanup-",children:"1.2 Timer Cleanup \u2705"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"What is tested:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Quarter-hour timer is cancelled and reference cleared"}),"\n",(0,i.jsx)(n.li,{children:"Minute timer is cancelled and reference cleared"}),"\n",(0,i.jsx)(n.li,{children:"Both timers are cancelled together"}),"\n",(0,i.jsxs)(n.li,{children:["Cleanup works even when timers are ",(0,i.jsx)(n.code,{children:"None"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Why critical:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Uncancelled timers continue running after integration unload"}),"\n",(0,i.jsxs)(n.li,{children:["HA's ",(0,i.jsx)(n.code,{children:"async_track_utc_time_change()"})," creates persistent callbacks"]}),"\n",(0,i.jsx)(n.li,{children:"Without cleanup: Timers keep firing \u2192 CPU load + unnecessary coordinator updates"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Code Locations:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/listeners.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"cancel_timers()"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/core.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"async_shutdown()"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"13-config-entry-cleanup-",children:"1.3 Config Entry Cleanup \u2705"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"What is tested:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Options update listener is registered via ",(0,i.jsx)(n.code,{children:"async_on_unload()"})]}),"\n",(0,i.jsxs)(n.li,{children:["Cleanup function is correctly passed to ",(0,i.jsx)(n.code,{children:"async_on_unload()"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Why critical:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"entry.add_update_listener()"})," registers permanent callback"]}),"\n",(0,i.jsxs)(n.li,{children:["Without ",(0,i.jsx)(n.code,{children:"async_on_unload()"}),": Listener remains active after reload \u2192 duplicate updates"]}),"\n",(0,i.jsxs)(n.li,{children:["Pattern: ",(0,i.jsx)(n.code,{children:"entry.async_on_unload(entry.add_update_listener(handler))"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Code Locations:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/core.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"__init__()"})," (listener registration)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"__init__.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"async_unload_entry()"})]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"2-cache-invalidation-",children:"2. Cache Invalidation \u2705"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"File:"})," ",(0,i.jsx)(n.code,{children:"tests/test_resource_cleanup.py"})]}),"\n",(0,i.jsx)(n.h4,{id:"21-config-cache-invalidation",children:"2.1 Config Cache Invalidation"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"What is tested:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"DataTransformer config cache is invalidated on options change"}),"\n",(0,i.jsx)(n.li,{children:"PeriodCalculator config + period cache is invalidated"}),"\n",(0,i.jsx)(n.li,{children:"Trend calculator cache is cleared on coordinator update"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Why critical:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Stale config \u2192 Sensors use old user settings"}),"\n",(0,i.jsx)(n.li,{children:"Stale period cache \u2192 Incorrect best/peak price periods"}),"\n",(0,i.jsx)(n.li,{children:"Stale trend cache \u2192 Outdated trend analysis"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Code Locations:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/data_transformation.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"invalidate_config_cache()"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/periods.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"invalidate_config_cache()"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sensor/calculators/trend.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"clear_trend_cache()"})]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"3-storage-cleanup-",children:"3. Storage Cleanup \u2705"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"File:"})," ",(0,i.jsx)(n.code,{children:"tests/test_resource_cleanup.py"})," + ",(0,i.jsx)(n.code,{children:"tests/test_coordinator_shutdown.py"})]}),"\n",(0,i.jsx)(n.h4,{id:"31-persistent-storage-removal",children:"3.1 Persistent Storage Removal"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"What is tested:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Storage file is deleted on config entry removal"}),"\n",(0,i.jsx)(n.li,{children:"Cache is saved on shutdown (no data loss)"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Why critical:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Without storage removal: Old files remain after uninstallation"}),"\n",(0,i.jsx)(n.li,{children:"Without cache save on shutdown: Data loss on HA restart"}),"\n",(0,i.jsxs)(n.li,{children:["Storage path: ",(0,i.jsx)(n.code,{children:".storage/tibber_prices.{entry_id}"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Code Locations:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"__init__.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"async_remove_entry()"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/core.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"async_shutdown()"})]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"4-timer-scheduling-",children:"4. Timer Scheduling \u2705"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"File:"})," ",(0,i.jsx)(n.code,{children:"tests/test_timer_scheduling.py"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"What is tested:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Quarter-hour timer is registered with correct parameters"}),"\n",(0,i.jsx)(n.li,{children:"Minute timer is registered with correct parameters"}),"\n",(0,i.jsx)(n.li,{children:"Timers can be re-scheduled (override old timer)"}),"\n",(0,i.jsx)(n.li,{children:"Midnight turnover detection works correctly"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Why critical:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Wrong timer parameters \u2192 Entities update at wrong times"}),"\n",(0,i.jsx)(n.li,{children:"Without timer override on re-schedule \u2192 Multiple parallel timers \u2192 Performance problem"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"5-sensor-to-timer-assignment-",children:"5. Sensor-to-Timer Assignment \u2705"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"File:"})," ",(0,i.jsx)(n.code,{children:"tests/test_sensor_timer_assignment.py"})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"What is tested:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["All ",(0,i.jsx)(n.code,{children:"TIME_SENSITIVE_ENTITY_KEYS"})," are valid entity keys"]}),"\n",(0,i.jsxs)(n.li,{children:["All ",(0,i.jsx)(n.code,{children:"MINUTE_UPDATE_ENTITY_KEYS"})," are valid entity keys"]}),"\n",(0,i.jsx)(n.li,{children:"Both lists are disjoint (no overlap)"}),"\n",(0,i.jsx)(n.li,{children:"Sensor and binary sensor platforms are checked"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Why critical:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Wrong timer assignment \u2192 Sensors update at wrong times"}),"\n",(0,i.jsx)(n.li,{children:"Overlap \u2192 Duplicate updates \u2192 Performance problem"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"-additional-analysis-nice-to-have-patterns",children:"\ud83d\udea8 Additional Analysis (Nice-to-Have Patterns)"}),"\n",(0,i.jsxs)(n.p,{children:["These patterns were analyzed and classified as ",(0,i.jsx)(n.strong,{children:"not critical"}),":"]}),"\n",(0,i.jsx)(n.h3,{id:"6-async-task-management",children:"6. Async Task Management"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Current Status:"})," Fire-and-forget pattern for short tasks"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"sensor/core.py"})," \u2192 Chart data refresh (short-lived, max 1-2 seconds)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"coordinator/core.py"})," \u2192 Cache storage (short-lived, max 100ms)"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Why no tests needed:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"No long-running tasks (all < 2 seconds)"}),"\n",(0,i.jsx)(n.li,{children:"HA's event loop handles short tasks automatically"}),"\n",(0,i.jsx)(n.li,{children:"Task exceptions are already logged"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"If needed:"})," ",(0,i.jsx)(n.code,{children:"_chart_refresh_task"})," tracking + cancel in ",(0,i.jsx)(n.code,{children:"async_will_remove_from_hass()"})]}),"\n",(0,i.jsx)(n.h3,{id:"7-api-session-cleanup",children:"7. API Session Cleanup"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Current Status:"})," \u2705 Correctly implemented"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"async_get_clientsession(hass)"})," is used (shared session)"]}),"\n",(0,i.jsx)(n.li,{children:"No new sessions are created"}),"\n",(0,i.jsx)(n.li,{children:"HA manages session lifecycle automatically"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Code:"})," ",(0,i.jsx)(n.code,{children:"api/client.py"})," + ",(0,i.jsx)(n.code,{children:"__init__.py"})]}),"\n",(0,i.jsx)(n.h3,{id:"8-translation-cache-memory",children:"8. Translation Cache Memory"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Current Status:"})," \u2705 Bounded cache"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Max ~5-10 languages \xd7 5KB = 50KB total"}),"\n",(0,i.jsx)(n.li,{children:"Module-level cache without re-loading"}),"\n",(0,i.jsx)(n.li,{children:"Practically no memory issue"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Code:"})," ",(0,i.jsx)(n.code,{children:"const.py"})," \u2192 ",(0,i.jsx)(n.code,{children:"_TRANSLATIONS_CACHE"}),", ",(0,i.jsx)(n.code,{children:"_STANDARD_TRANSLATIONS_CACHE"})]}),"\n",(0,i.jsx)(n.h3,{id:"9-coordinator-data-structure-integrity",children:"9. Coordinator Data Structure Integrity"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Current Status:"})," Manually tested via ",(0,i.jsx)(n.code,{children:"./scripts/develop"})]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Midnight turnover works correctly (observed over several days)"}),"\n",(0,i.jsxs)(n.li,{children:["Missing keys are handled via ",(0,i.jsx)(n.code,{children:".get()"})," with defaults"]}),"\n",(0,i.jsxs)(n.li,{children:["80+ sensors access ",(0,i.jsx)(n.code,{children:"coordinator.data"})," without errors"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Structure:"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:'coordinator.data = {\n "user_data": {...},\n "priceInfo": [...], # Flat list of all enriched intervals\n "currency": "EUR" # Top-level for easy access\n}\n'})}),"\n",(0,i.jsx)(n.h3,{id:"10-service-response-memory",children:"10. Service Response Memory"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Current Status:"})," HA's response lifecycle"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"HA automatically frees service responses after return"}),"\n",(0,i.jsx)(n.li,{children:"ApexCharts ~20KB response is one-time per call"}),"\n",(0,i.jsx)(n.li,{children:"No response accumulation in integration code"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Code:"})," ",(0,i.jsx)(n.code,{children:"services/apexcharts.py"})]}),"\n",(0,i.jsx)(n.h2,{id:"-test-coverage-status",children:"\ud83d\udcca Test Coverage Status"}),"\n",(0,i.jsx)(n.h3,{id:"-implemented-tests-41-total",children:"\u2705 Implemented Tests (41 total)"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Category"}),(0,i.jsx)(n.th,{children:"Status"}),(0,i.jsx)(n.th,{children:"Tests"}),(0,i.jsx)(n.th,{children:"File"}),(0,i.jsx)(n.th,{children:"Coverage"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Listener Cleanup"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"5"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"test_resource_cleanup.py"})}),(0,i.jsx)(n.td,{children:"100%"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Timer Cleanup"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"4"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"test_resource_cleanup.py"})}),(0,i.jsx)(n.td,{children:"100%"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Config Entry Cleanup"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"1"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"test_resource_cleanup.py"})}),(0,i.jsx)(n.td,{children:"100%"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Cache Invalidation"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"3"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"test_resource_cleanup.py"})}),(0,i.jsx)(n.td,{children:"100%"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Storage Cleanup"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"1"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"test_resource_cleanup.py"})}),(0,i.jsx)(n.td,{children:"100%"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Storage Persistence"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"2"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"test_coordinator_shutdown.py"})}),(0,i.jsx)(n.td,{children:"100%"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Timer Scheduling"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"8"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"test_timer_scheduling.py"})}),(0,i.jsx)(n.td,{children:"100%"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Sensor-Timer Assignment"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"17"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"test_sensor_timer_assignment.py"})}),(0,i.jsx)(n.td,{children:"100%"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"TOTAL"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"\u2705"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"41"})}),(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"100% (critical)"})})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"-analyzed-but-not-implemented-nice-to-have",children:"\ud83d\udccb Analyzed but Not Implemented (Nice-to-Have)"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Category"}),(0,i.jsx)(n.th,{children:"Status"}),(0,i.jsx)(n.th,{children:"Rationale"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Async Task Management"}),(0,i.jsx)(n.td,{children:"\ud83d\udccb"}),(0,i.jsx)(n.td,{children:"Fire-and-forget pattern used (no long-running tasks)"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"API Session Cleanup"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsxs)(n.td,{children:["Pattern correct (",(0,i.jsx)(n.code,{children:"async_get_clientsession"})," used)"]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Translation Cache"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Cache size bounded (~50KB max for 10 languages)"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Data Structure Integrity"}),(0,i.jsx)(n.td,{children:"\ud83d\udccb"}),(0,i.jsx)(n.td,{children:"Would add test time without finding real issues"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Service Response Memory"}),(0,i.jsx)(n.td,{children:"\ud83d\udccb"}),(0,i.jsx)(n.td,{children:"HA automatically frees service responses"})]})]})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Legend:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u2705 = Fully tested or pattern verified correct"}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udccb = Analyzed, low priority for testing (no known issues)"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"-development-status",children:"\ud83c\udfaf Development Status"}),"\n",(0,i.jsx)(n.h3,{id:"-all-critical-patterns-tested",children:"\u2705 All Critical Patterns Tested"}),"\n",(0,i.jsx)(n.p,{children:"All essential memory leak prevention patterns are covered by 41 tests:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u2705 Listeners are correctly removed (no callback leaks)"}),"\n",(0,i.jsx)(n.li,{children:"\u2705 Timers are cancelled (no background task leaks)"}),"\n",(0,i.jsx)(n.li,{children:"\u2705 Config entry cleanup works (no dangling listeners)"}),"\n",(0,i.jsx)(n.li,{children:"\u2705 Caches are invalidated (no stale data issues)"}),"\n",(0,i.jsx)(n.li,{children:"\u2705 Storage is saved and cleaned up (no data loss)"}),"\n",(0,i.jsx)(n.li,{children:"\u2705 Timer scheduling works correctly (no update issues)"}),"\n",(0,i.jsx)(n.li,{children:"\u2705 Sensor-timer assignment is correct (no wrong updates)"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"-nice-to-have-tests-optional",children:"\ud83d\udccb Nice-to-Have Tests (Optional)"}),"\n",(0,i.jsx)(n.p,{children:"If problems arise in the future, these tests can be added:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Async Task Management"})," - Pattern analyzed (fire-and-forget for short tasks)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Data Structure Integrity"})," - Midnight rotation manually tested"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Service Response Memory"})," - HA's response lifecycle automatic"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Conclusion:"})," The integration has production-quality test coverage for all critical resource leak patterns."]}),"\n",(0,i.jsx)(n.h2,{id:"-how-to-run-tests",children:"\ud83d\udd0d How to Run Tests"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"# Run all resource cleanup tests (14 tests)\n./scripts/test tests/test_resource_cleanup.py -v\n\n# Run all critical pattern tests (41 tests)\n./scripts/test tests/test_resource_cleanup.py tests/test_coordinator_shutdown.py \\\n tests/test_timer_scheduling.py tests/test_sensor_timer_assignment.py -v\n\n# Run all tests with coverage\n./scripts/test --cov=custom_components.tibber_prices --cov-report=html\n\n# Type checking and linting\n./scripts/check\n\n# Manual memory leak test\n# 1. Start HA: ./scripts/develop\n# 2. Monitor RAM: watch -n 1 'ps aux | grep home-assistant'\n# 3. Reload integration multiple times (HA UI: Settings \u2192 Devices \u2192 Tibber Prices \u2192 Reload)\n# 4. RAM should stabilize (not grow continuously)\n"})}),"\n",(0,i.jsx)(n.h2,{id:"-references",children:"\ud83d\udcda References"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Home Assistant Cleanup Patterns"}),": ",(0,i.jsx)(n.a,{href:"https://developers.home-assistant.io/docs/integration_setup_failures/#cleanup",children:"https://developers.home-assistant.io/docs/integration_setup_failures/#cleanup"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Async Best Practices"}),": ",(0,i.jsx)(n.a,{href:"https://developers.home-assistant.io/docs/asyncio_101/",children:"https://developers.home-assistant.io/docs/asyncio_101/"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Memory Profiling"}),": ",(0,i.jsx)(n.a,{href:"https://docs.python.org/3/library/tracemalloc.html",children:"https://docs.python.org/3/library/tracemalloc.html"})]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/common.e5ffc25b.js b/developer/assets/js/common.e5ffc25b.js new file mode 100644 index 0000000..a9f18da --- /dev/null +++ b/developer/assets/js/common.e5ffc25b.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[2076],{53:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(8675);const o=function(t){return(0,e.A)(t,4)}},805:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){return function(n){return null==n?void 0:n[t]}}},818:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(5707);const o=function(t){return t!=t};const c=function(t,n,r){for(var e=r-1,o=t.length;++e<o;)if(t[e]===n)return e;return-1};const u=function(t,n,r){return n==n?c(t,n,r):(0,e.A)(t,o,r)}},901:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(1882);const o=function(t){if("string"==typeof t||(0,e.A)(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},1152:(t,n,r)=>{r.d(n,{P:()=>c});var e=r(7633),o=r(797),c=(0,o.K2)((t,n,r,c)=>{t.attr("class",r);const{width:i,height:f,x:A,y:s}=u(t,n);(0,e.a$)(t,f,i,c);const v=a(A,s,i,f,n);t.attr("viewBox",v),o.Rm.debug(`viewBox configured: ${v} with padding: ${n}`)},"setupViewPortForSVG"),u=(0,o.K2)((t,n)=>{const r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+2*n,height:r.height+2*n,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),a=(0,o.K2)((t,n,r,e,o)=>`${t-o} ${n-o} ${r} ${e}`,"createViewBox")},1207:(t,n,r)=>{r.d(n,{A:()=>f});var e=r(6912),o=r(241),c=r(2274),u=r(2049),a=o.A?o.A.isConcatSpreadable:void 0;const i=function(t){return(0,u.A)(t)||(0,c.A)(t)||!!(a&&t&&t[a])};const f=function t(n,r,o,c,u){var a=-1,f=n.length;for(o||(o=i),u||(u=[]);++a<f;){var A=n[a];r>0&&o(A)?r>1?t(A,r-1,o,c,u):(0,e.A)(u,A):c||(u[u.length]=A)}return u}},1790:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(6240);const o=function(t,n){var r=[];return(0,e.A)(t,function(t,e,o){n(t,e,o)&&r.push(t)}),r}},1882:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(8496),o=r(3098);const c=function(t){return"symbol"==typeof t||(0,o.A)(t)&&"[object Symbol]"==(0,e.A)(t)}},2062:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(9471);const o=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const c=function(t){return this.__data__.has(t)};function u(t){var n=-1,r=null==t?0:t.length;for(this.__data__=new e.A;++n<r;)this.add(t[n])}u.prototype.add=u.prototype.push=o,u.prototype.has=c;const a=u},2302:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(){}},2559:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(1882);const o=function(t,n,r){for(var o=-1,c=t.length;++o<c;){var u=t[o],a=n(u);if(null!=a&&(void 0===i?a==a&&!(0,e.A)(a):r(a,i)))var i=a,f=u}return f}},2568:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(6240),o=r(8446);const c=function(t,n){var r=-1,c=(0,o.A)(t)?Array(t.length):[];return(0,e.A)(t,function(t,e,o){c[++r]=n(t,e,o)}),c}},2634:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=0,c=[];++r<e;){var u=t[r];n(u,r,t)&&(c[o++]=u)}return c}},2641:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length;++r<e&&!1!==n(t[r],r,t););return t}},3068:(t,n,r)=>{r.d(n,{A:()=>f});var e=r(4326),o=r(6984),c=r(6832),u=r(5615),a=Object.prototype,i=a.hasOwnProperty;const f=(0,e.A)(function(t,n){t=Object(t);var r=-1,e=n.length,f=e>2?n[2]:void 0;for(f&&(0,c.A)(n[0],n[1],f)&&(e=1);++r<e;)for(var A=n[r],s=(0,u.A)(A),v=-1,l=s.length;++v<l;){var d=s[v],b=t[d];(void 0===b||(0,o.A)(b,a[d])&&!i.call(t,d))&&(t[d]=A[d])}return t})},3153:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(){return[]}},3511:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(6912),o=r(5647),c=r(4792),u=r(3153);const a=Object.getOwnPropertySymbols?function(t){for(var n=[];t;)(0,e.A)(n,(0,c.A)(t)),t=(0,o.A)(t);return n}:u.A},3736:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length;++r<e;)if(n(t[r],r,t))return!0;return!1}},3831:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(6912),o=r(2049);const c=function(t,n,r){var c=n(t);return(0,o.A)(t)?c:(0,e.A)(c,r(t))}},3958:(t,n,r)=>{r.d(n,{A:()=>q});var e=r(1754),o=r(2062),c=r(3736),u=r(4099);const a=function(t,n,r,e,a,i){var f=1&r,A=t.length,s=n.length;if(A!=s&&!(f&&s>A))return!1;var v=i.get(t),l=i.get(n);if(v&&l)return v==n&&l==t;var d=-1,b=!0,h=2&r?new o.A:void 0;for(i.set(t,n),i.set(n,t);++d<A;){var p=t[d],y=n[d];if(e)var g=f?e(y,p,d,n,t,i):e(p,y,d,t,n,i);if(void 0!==g){if(g)continue;b=!1;break}if(h){if(!(0,c.A)(n,function(t,n){if(!(0,u.A)(h,n)&&(p===t||a(p,t,r,e,i)))return h.push(n)})){b=!1;break}}else if(p!==y&&!a(p,y,r,e,i)){b=!1;break}}return i.delete(t),i.delete(n),b};var i=r(241),f=r(3988),A=r(6984);const s=function(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r};var v=r(9959),l=i.A?i.A.prototype:void 0,d=l?l.valueOf:void 0;const b=function(t,n,r,e,o,c,u){switch(r){case"[object DataView]":if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=n.byteLength||!c(new f.A(t),new f.A(n)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,A.A)(+t,+n);case"[object Error]":return t.name==n.name&&t.message==n.message;case"[object RegExp]":case"[object String]":return t==n+"";case"[object Map]":var i=s;case"[object Set]":var l=1&e;if(i||(i=v.A),t.size!=n.size&&!l)return!1;var b=u.get(t);if(b)return b==n;e|=2,u.set(t,n);var h=a(i(t),i(n),e,o,c,u);return u.delete(t),h;case"[object Symbol]":if(d)return d.call(t)==d.call(n)}return!1};var h=r(9042),p=Object.prototype.hasOwnProperty;const y=function(t,n,r,e,o,c){var u=1&r,a=(0,h.A)(t),i=a.length;if(i!=(0,h.A)(n).length&&!u)return!1;for(var f=i;f--;){var A=a[f];if(!(u?A in n:p.call(n,A)))return!1}var s=c.get(t),v=c.get(n);if(s&&v)return s==n&&v==t;var l=!0;c.set(t,n),c.set(n,t);for(var d=u;++f<i;){var b=t[A=a[f]],y=n[A];if(e)var g=u?e(y,b,A,n,t,c):e(b,y,A,t,n,c);if(!(void 0===g?b===y||o(b,y,r,e,c):g)){l=!1;break}d||(d="constructor"==A)}if(l&&!d){var j=t.constructor,w=n.constructor;j==w||!("constructor"in t)||!("constructor"in n)||"function"==typeof j&&j instanceof j&&"function"==typeof w&&w instanceof w||(l=!1)}return c.delete(t),c.delete(n),l};var g=r(9779),j=r(2049),w=r(9912),m=r(3858),_="[object Arguments]",O="[object Array]",x="[object Object]",S=Object.prototype.hasOwnProperty;const $=function(t,n,r,o,c,u){var i=(0,j.A)(t),f=(0,j.A)(n),A=i?O:(0,g.A)(t),s=f?O:(0,g.A)(n),v=(A=A==_?x:A)==x,l=(s=s==_?x:s)==x,d=A==s;if(d&&(0,w.A)(t)){if(!(0,w.A)(n))return!1;i=!0,v=!1}if(d&&!v)return u||(u=new e.A),i||(0,m.A)(t)?a(t,n,r,o,c,u):b(t,n,A,r,o,c,u);if(!(1&r)){var h=v&&S.call(t,"__wrapped__"),p=l&&S.call(n,"__wrapped__");if(h||p){var $=h?t.value():t,E=p?n.value():n;return u||(u=new e.A),c($,E,r,o,u)}}return!!d&&(u||(u=new e.A),y(t,n,r,o,c,u))};var E=r(3098);const P=function t(n,r,e,o,c){return n===r||(null==n||null==r||!(0,E.A)(n)&&!(0,E.A)(r)?n!=n&&r!=r:$(n,r,e,o,t,c))};const B=function(t,n,r,o){var c=r.length,u=c,a=!o;if(null==t)return!u;for(t=Object(t);c--;){var i=r[c];if(a&&i[2]?i[1]!==t[i[0]]:!(i[0]in t))return!1}for(;++c<u;){var f=(i=r[c])[0],A=t[f],s=i[1];if(a&&i[2]){if(void 0===A&&!(f in t))return!1}else{var v=new e.A;if(o)var l=o(A,s,f,t,n,v);if(!(void 0===l?P(s,A,3,o,v):l))return!1}}return!0};var k=r(3149);const I=function(t){return t==t&&!(0,k.A)(t)};var C=r(7422);const D=function(t){for(var n=(0,C.A)(t),r=n.length;r--;){var e=n[r],o=t[e];n[r]=[e,o,I(o)]}return n};const L=function(t,n){return function(r){return null!=r&&(r[t]===n&&(void 0!==n||t in Object(r)))}};const M=function(t){var n=D(t);return 1==n.length&&n[0][2]?L(n[0][0],n[0][1]):function(r){return r===t||B(r,t,n)}};var U=r(6318);const F=function(t,n,r){var e=null==t?void 0:(0,U.A)(t,n);return void 0===e?r:e};var N=r(9188),V=r(6586),z=r(901);const R=function(t,n){return(0,V.A)(t)&&I(n)?L((0,z.A)(t),n):function(r){var e=F(r,t);return void 0===e&&e===n?(0,N.A)(r,t):P(n,e,3)}};var K=r(9008),G=r(805);const T=function(t){return function(n){return(0,U.A)(n,t)}};const W=function(t){return(0,V.A)(t)?(0,G.A)((0,z.A)(t)):T(t)};const q=function(t){return"function"==typeof t?t:null==t?K.A:"object"==typeof t?(0,j.A)(t)?R(t[0],t[1]):M(t):W(t)}},3973:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(3831),o=r(3511),c=r(5615);const u=function(t){return(0,e.A)(t,c.A,o.A)}},4092:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2634),o=r(1790),c=r(3958),u=r(2049);const a=function(t,n){return((0,u.A)(t)?e.A:o.A)(t,(0,c.A)(n,3))}},4098:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(1207);const o=function(t){return(null==t?0:t.length)?(0,e.A)(t,1):[]}},4099:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){return t.has(n)}},4342:(t,n,r)=>{r.d(n,{A:()=>b});var e=/\s/;const o=function(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n};var c=/^\s+/;const u=function(t){return t?t.slice(0,o(t)+1).replace(c,""):t};var a=r(3149),i=r(1882),f=/^[-+]0x[0-9a-f]+$/i,A=/^0b[01]+$/i,s=/^0o[0-7]+$/i,v=parseInt;const l=function(t){if("number"==typeof t)return t;if((0,i.A)(t))return NaN;if((0,a.A)(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=(0,a.A)(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=u(t);var r=A.test(t);return r||s.test(t)?v(t.slice(2),r?2:8):f.test(t)?NaN:+t};var d=1/0;const b=function(t){return t?(t=l(t))===d||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},4722:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(5572),o=r(3958),c=r(2568),u=r(2049);const a=function(t,n){return((0,u.A)(t)?e.A:c.A)(t,(0,o.A)(n,3))}},4792:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2634),o=r(3153),c=Object.prototype.propertyIsEnumerable,u=Object.getOwnPropertySymbols;const a=u?function(t){return null==t?[]:(t=Object(t),(0,e.A)(u(t),function(n){return c.call(t,n)}))}:o.A},5054:(t,n,r)=>{r.d(n,{A:()=>f});var e=r(7819),o=r(2274),c=r(2049),u=r(5353),a=r(5254),i=r(901);const f=function(t,n,r){for(var f=-1,A=(n=(0,e.A)(n,t)).length,s=!1;++f<A;){var v=(0,i.A)(n[f]);if(!(s=null!=t&&r(t,v)))break;t=t[v]}return s||++f!=A?s:!!(A=null==t?0:t.length)&&(0,a.A)(A)&&(0,u.A)(v,A)&&((0,c.A)(t)||(0,o.A)(t))}},5530:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(818);const o=function(t,n){return!!(null==t?0:t.length)&&(0,e.A)(t,n,0)>-1}},5572:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=Array(e);++r<e;)o[r]=n(t[r],r,t);return o}},5707:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n,r,e){for(var o=t.length,c=r+(e?1:-1);e?c--:++c<o;)if(n(t[c],c,t))return c;return-1}},6145:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(3958),o=r(8446),c=r(7422);const u=function(t){return function(n,r,u){var a=Object(n);if(!(0,o.A)(n)){var i=(0,e.A)(r,3);n=(0,c.A)(n),r=function(t){return i(a[t],t,a)}}var f=t(n,r,u);return f>-1?a[i?n[f]:f]:void 0}};var a=r(5707),i=r(8593),f=Math.max;const A=u(function(t,n,r){var o=null==t?0:t.length;if(!o)return-1;var c=null==r?0:(0,i.A)(r);return c<0&&(c=f(o+c,0)),(0,a.A)(t,(0,e.A)(n,3),c)})},6224:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){return t<n}},6240:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(9841),o=r(8446);const c=function(t,n){return function(r,e){if(null==r)return r;if(!(0,o.A)(r))return t(r,e);for(var c=r.length,u=n?c:-1,a=Object(r);(n?u--:++u<c)&&!1!==e(a[u],u,a););return r}}(e.A)},6318:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(7819),o=r(901);const c=function(t,n){for(var r=0,c=(n=(0,e.A)(n,t)).length;null!=t&&r<c;)t=t[(0,o.A)(n[r++])];return r&&r==c?t:void 0}},6452:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(2559),o=r(6224),c=r(9008);const u=function(t){return t&&t.length?(0,e.A)(t,c.A,o.A):void 0}},6586:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2049),o=r(1882),c=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;const a=function(t,n){if((0,e.A)(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!(0,o.A)(t))||(u.test(t)||!c.test(t)||null!=n&&t in Object(n))}},6666:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){var n=null==t?0:t.length;return n?t[n-1]:void 0}},6912:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=n.length,o=t.length;++r<e;)t[o+r]=n[r];return t}},7422:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(3607),o=r(1852),c=r(8446);const u=function(t){return(0,c.A)(t)?(0,e.A)(t):(0,o.A)(t)}},7809:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n,r){for(var e=-1,o=null==t?0:t.length;++e<o;)if(r(n,t[e]))return!0;return!1}},7819:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(2049),o=r(6586),c=r(6632);var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g;const i=function(t){var n=(0,c.A)(t,function(t){return 500===r.size&&r.clear(),t}),r=n.cache;return n}(function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(u,function(t,r,e,o){n.push(e?o.replace(a,"$1"):r||t)}),n});var f=r(8894);const A=function(t,n){return(0,e.A)(t)?t:(0,o.A)(t,n)?[t]:i((0,f.A)(t))}},8058:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2641),o=r(6240),c=r(9922),u=r(2049);const a=function(t,n){return((0,u.A)(t)?e.A:o.A)(t,(0,c.A)(n))}},8207:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(5572);const o=function(t,n){return(0,e.A)(n,function(n){return t[n]})};var c=r(7422);const u=function(t){return null==t?[]:o(t,(0,c.A)(t))}},8453:(t,n,r)=>{r.d(n,{R:()=>u,x:()=>a});var e=r(6540);const o={},c=e.createContext(o);function u(t){const n=e.useContext(c);return e.useMemo(function(){return"function"==typeof t?t(n):{...n,...t}},[n,t])}function a(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:u(t.components),e.createElement(c.Provider,{value:n},t.children)}},8585:(t,n,r)=>{r.d(n,{A:()=>u});var e=Object.prototype.hasOwnProperty;const o=function(t,n){return null!=t&&e.call(t,n)};var c=r(5054);const u=function(t,n){return null!=t&&(0,c.A)(t,n,o)}},8593:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(4342);const o=function(t){var n=(0,e.A)(t),r=n%1;return n==n?r?n-r:n:0}},8675:(t,n,r)=>{r.d(n,{A:()=>J});var e=r(1754),o=r(2641),c=r(2851),u=r(2031),a=r(7422);const i=function(t,n){return t&&(0,u.A)(n,(0,a.A)(n),t)};var f=r(5615);const A=function(t,n){return t&&(0,u.A)(n,(0,f.A)(n),t)};var s=r(154),v=r(9759),l=r(4792);const d=function(t,n){return(0,u.A)(t,(0,l.A)(t),n)};var b=r(3511);const h=function(t,n){return(0,u.A)(t,(0,b.A)(t),n)};var p=r(9042),y=r(3973),g=r(9779),j=Object.prototype.hasOwnProperty;const w=function(t){var n=t.length,r=new t.constructor(n);return n&&"string"==typeof t[0]&&j.call(t,"index")&&(r.index=t.index,r.input=t.input),r};var m=r(565);const _=function(t,n){var r=n?(0,m.A)(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)};var O=/\w*$/;const x=function(t){var n=new t.constructor(t.source,O.exec(t));return n.lastIndex=t.lastIndex,n};var S=r(241),$=S.A?S.A.prototype:void 0,E=$?$.valueOf:void 0;const P=function(t){return E?Object(E.call(t)):{}};var B=r(1801);const k=function(t,n,r){var e=t.constructor;switch(n){case"[object ArrayBuffer]":return(0,m.A)(t);case"[object Boolean]":case"[object Date]":return new e(+t);case"[object DataView]":return _(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,B.A)(t,r);case"[object Map]":case"[object Set]":return new e;case"[object Number]":case"[object String]":return new e(t);case"[object RegExp]":return x(t);case"[object Symbol]":return P(t)}};var I=r(8598),C=r(2049),D=r(9912),L=r(3098);const M=function(t){return(0,L.A)(t)&&"[object Map]"==(0,g.A)(t)};var U=r(2789),F=r(4841),N=F.A&&F.A.isMap;const V=N?(0,U.A)(N):M;var z=r(3149);const R=function(t){return(0,L.A)(t)&&"[object Set]"==(0,g.A)(t)};var K=F.A&&F.A.isSet;const G=K?(0,U.A)(K):R;var T="[object Arguments]",W="[object Function]",q="[object Object]",H={};H[T]=H["[object Array]"]=H["[object ArrayBuffer]"]=H["[object DataView]"]=H["[object Boolean]"]=H["[object Date]"]=H["[object Float32Array]"]=H["[object Float64Array]"]=H["[object Int8Array]"]=H["[object Int16Array]"]=H["[object Int32Array]"]=H["[object Map]"]=H["[object Number]"]=H[q]=H["[object RegExp]"]=H["[object Set]"]=H["[object String]"]=H["[object Symbol]"]=H["[object Uint8Array]"]=H["[object Uint8ClampedArray]"]=H["[object Uint16Array]"]=H["[object Uint32Array]"]=!0,H["[object Error]"]=H[W]=H["[object WeakMap]"]=!1;const J=function t(n,r,u,l,b,j){var m,_=1&r,O=2&r,x=4&r;if(u&&(m=b?u(n,l,b,j):u(n)),void 0!==m)return m;if(!(0,z.A)(n))return n;var S=(0,C.A)(n);if(S){if(m=w(n),!_)return(0,v.A)(n,m)}else{var $=(0,g.A)(n),E=$==W||"[object GeneratorFunction]"==$;if((0,D.A)(n))return(0,s.A)(n,_);if($==q||$==T||E&&!b){if(m=O||E?{}:(0,I.A)(n),!_)return O?h(n,A(m,n)):d(n,i(m,n))}else{if(!H[$])return b?n:{};m=k(n,$,_)}}j||(j=new e.A);var P=j.get(n);if(P)return P;j.set(n,m),G(n)?n.forEach(function(e){m.add(t(e,r,u,e,n,j))}):V(n)&&n.forEach(function(e,o){m.set(o,t(e,r,u,o,n,j))});var B=x?O?y.A:p.A:O?f.A:a.A,L=S?void 0:B(n);return(0,o.A)(L||n,function(e,o){L&&(e=n[o=e]),(0,c.A)(m,o,t(e,r,u,o,n,j))}),m}},8894:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(241),o=r(5572),c=r(2049),u=r(1882),a=e.A?e.A.prototype:void 0,i=a?a.toString:void 0;const f=function t(n){if("string"==typeof n)return n;if((0,c.A)(n))return(0,o.A)(n,t)+"";if((0,u.A)(n))return i?i.call(n):"";var r=n+"";return"0"==r&&1/n==-1/0?"-0":r};const A=function(t){return null==t?"":f(t)}},9042:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(3831),o=r(4792),c=r(7422);const u=function(t){return(0,e.A)(t,c.A,o.A)}},9188:(t,n,r)=>{r.d(n,{A:()=>c});const e=function(t,n){return null!=t&&n in Object(t)};var o=r(5054);const c=function(t,n){return null!=t&&(0,o.A)(t,n,e)}},9354:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(6318),o=r(2851),c=r(7819),u=r(5353),a=r(3149),i=r(901);const f=function(t,n,r,e){if(!(0,a.A)(t))return t;for(var f=-1,A=(n=(0,c.A)(n,t)).length,s=A-1,v=t;null!=v&&++f<A;){var l=(0,i.A)(n[f]),d=r;if("__proto__"===l||"constructor"===l||"prototype"===l)return t;if(f!=s){var b=v[l];void 0===(d=e?e(b,l,v):void 0)&&(d=(0,a.A)(b)?b:(0,u.A)(n[f+1])?[]:{})}(0,o.A)(v,l,d),v=v[l]}return t};const A=function(t,n,r){for(var o=-1,u=n.length,a={};++o<u;){var i=n[o],A=(0,e.A)(t,i);r(A,i)&&f(a,(0,c.A)(i,t),A)}return a}},9463:(t,n,r)=>{r.d(n,{A:()=>i});const e=function(t,n,r,e){var o=-1,c=null==t?0:t.length;for(e&&c&&(r=t[++o]);++o<c;)r=n(r,t[o],o,t);return r};var o=r(6240),c=r(3958);const u=function(t,n,r,e,o){return o(t,function(t,o,c){r=e?(e=!1,t):n(r,t,o,c)}),r};var a=r(2049);const i=function(t,n,r){var i=(0,a.A)(t)?e:u,f=arguments.length<3;return i(t,(0,c.A)(n,4),r,f,o.A)}},9592:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){return void 0===t}},9625:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(797),o=r(451),c=(0,e.K2)((t,n)=>{let r;"sandbox"===n&&(r=(0,o.Ltv)("#i"+t));return("sandbox"===n?(0,o.Ltv)(r.nodes()[0].contentDocument.body):(0,o.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement")},9703:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(8496),o=r(2049),c=r(3098);const u=function(t){return"string"==typeof t||!(0,o.A)(t)&&(0,c.A)(t)&&"[object String]"==(0,e.A)(t)}},9841:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(4574),o=r(7422);const c=function(t,n){return t&&(0,e.A)(t,n,o.A)}},9902:(t,n,r)=>{r.d(n,{A:()=>s});var e=r(2062),o=r(5530),c=r(7809),u=r(4099),a=r(9857),i=r(2302),f=r(9959);const A=a.A&&1/(0,f.A)(new a.A([,-0]))[1]==1/0?function(t){return new a.A(t)}:i.A;const s=function(t,n,r){var a=-1,i=o.A,s=t.length,v=!0,l=[],d=l;if(r)v=!1,i=c.A;else if(s>=200){var b=n?null:A(t);if(b)return(0,f.A)(b);v=!1,i=u.A,d=new e.A}else d=n?[]:l;t:for(;++a<s;){var h=t[a],p=n?n(h):h;if(h=r||0!==h?h:0,v&&p==p){for(var y=d.length;y--;)if(d[y]===p)continue t;n&&d.push(p),l.push(h)}else i(d,p,r)||(d!==l&&d.push(p),l.push(h))}return l}},9922:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(9008);const o=function(t){return"function"==typeof t?t:e.A}},9959:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=t}),r}}}]); \ No newline at end of file diff --git a/developer/assets/js/d7c6ee3c.0344cf7a.js b/developer/assets/js/d7c6ee3c.0344cf7a.js new file mode 100644 index 0000000..f010475 --- /dev/null +++ b/developer/assets/js/d7c6ee3c.0344cf7a.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[5475],{8517:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"period-calculation-theory","title":"Period Calculation Theory","description":"Overview","source":"@site/docs/period-calculation-theory.md","sourceDirName":".","slug":"/period-calculation-theory","permalink":"/hass.tibber_prices/developer/period-calculation-theory","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/period-calculation-theory.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Debugging Guide","permalink":"/hass.tibber_prices/developer/debugging"},"next":{"title":"Refactoring Guide","permalink":"/hass.tibber_prices/developer/refactoring-guide"}}');var r=i(4848),l=i(8453);const t={},a="Period Calculation Theory",c={},d=[{value:"Overview",id:"overview",level:2},{value:"Core Filtering Criteria",id:"core-filtering-criteria",level:2},{value:"1. Flex Filter (Price Distance from Reference)",id:"1-flex-filter-price-distance-from-reference",level:3},{value:"2. Min Distance Filter (Distance from Daily Average)",id:"2-min-distance-filter-distance-from-daily-average",level:3},{value:"3. Level Filter (Price Level Classification)",id:"3-level-filter-price-level-classification",level:3},{value:"The Flex \xd7 Min_Distance Conflict",id:"the-flex--min_distance-conflict",level:2},{value:"Problem Statement",id:"problem-statement",level:3},{value:"Scenario: Best Price with Flex=50%, Min_Distance=5%",id:"scenario-best-price-with-flex50-min_distance5",level:4},{value:"Mathematical Analysis",id:"mathematical-analysis",level:3},{value:"Solution: Dynamic Min_Distance Scaling",id:"solution-dynamic-min_distance-scaling",level:3},{value:"Flex Limits and Safety Caps",id:"flex-limits-and-safety-caps",level:2},{value:"Implementation Constants",id:"implementation-constants",level:3},{value:"Rationale for Asymmetric Defaults",id:"rationale-for-asymmetric-defaults",level:3},{value:"Best Price: Optimization Focus",id:"best-price-optimization-focus",level:4},{value:"Peak Price: Warning Focus",id:"peak-price-warning-focus",level:4},{value:"Mathematical Justification",id:"mathematical-justification",level:4},{value:"Design Alternatives Considered",id:"design-alternatives-considered",level:4},{value:"Flex Limits and Safety Caps",id:"flex-limits-and-safety-caps-1",level:2},{value:"1. Absolute Maximum: 50% (MAX_SAFE_FLEX)",id:"1-absolute-maximum-50-max_safe_flex",level:4},{value:"2. Outlier Filtering Maximum: 25%",id:"2-outlier-filtering-maximum-25",level:4},{value:"Recommended Ranges (User Guidance)",id:"recommended-ranges-user-guidance",level:3},{value:"With Relaxation Enabled (Recommended)",id:"with-relaxation-enabled-recommended",level:4},{value:"Without Relaxation",id:"without-relaxation",level:4},{value:"Relaxation Strategy",id:"relaxation-strategy",level:2},{value:"Purpose",id:"purpose",level:3},{value:"Multi-Phase Approach",id:"multi-phase-approach",level:3},{value:"Relaxation Increments",id:"relaxation-increments",level:3},{value:"Filter Combination Strategy",id:"filter-combination-strategy",level:3},{value:"Implementation Notes",id:"implementation-notes",level:2},{value:"Key Files and Functions",id:"key-files-and-functions",level:3},{value:"Outlier Filtering Implementation",id:"outlier-filtering-implementation",level:4},{value:"Debugging Tips",id:"debugging-tips",level:2},{value:"Common Configuration Pitfalls",id:"common-configuration-pitfalls",level:2},{value:"\u274c Anti-Pattern 1: High Flex with Relaxation",id:"-anti-pattern-1-high-flex-with-relaxation",level:3},{value:"\u274c Anti-Pattern 2: Zero Min_Distance",id:"-anti-pattern-2-zero-min_distance",level:3},{value:"\u274c Anti-Pattern 3: Conflicting Flex + Distance",id:"-anti-pattern-3-conflicting-flex--distance",level:3},{value:"Testing Scenarios",id:"testing-scenarios",level:2},{value:"Scenario 1: Normal Day (Good Variation)",id:"scenario-1-normal-day-good-variation",level:3},{value:"Scenario 2: Flat Day (Poor Variation)",id:"scenario-2-flat-day-poor-variation",level:3},{value:"Scenario 3: Extreme Day (High Volatility)",id:"scenario-3-extreme-day-high-volatility",level:3},{value:"Scenario 4: Relaxation Success",id:"scenario-4-relaxation-success",level:3},{value:"Scenario 5: Relaxation Exhausted",id:"scenario-5-relaxation-exhausted",level:3},{value:"Debugging Checklist",id:"debugging-checklist",level:3},{value:"Future Enhancements",id:"future-enhancements",level:2},{value:"Potential Improvements",id:"potential-improvements",level:3},{value:"Known Limitations",id:"known-limitations",level:3},{value:"Future Enhancements",id:"future-enhancements-1",level:2},{value:"Potential Improvements",id:"potential-improvements-1",level:3},{value:"1. Adaptive Flex Calculation (Not Yet Implemented)",id:"1-adaptive-flex-calculation-not-yet-implemented",level:4},{value:"2. Machine Learning Approach (Future Work)",id:"2-machine-learning-approach-future-work",level:4},{value:"3. Multi-Objective Optimization (Research Idea)",id:"3-multi-objective-optimization-research-idea",level:4},{value:"Known Limitations",id:"known-limitations-1",level:3},{value:"1. Fixed Increment Step",id:"1-fixed-increment-step",level:4},{value:"2. Linear Distance Scaling",id:"2-linear-distance-scaling",level:4},{value:"3. No Temporal Distribution Consideration",id:"3-no-temporal-distribution-consideration",level:4},{value:"4. Period Boundary Handling",id:"4-period-boundary-handling",level:4},{value:"References",id:"references",level:2},{value:"Changelog",id:"changelog",level:2}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"period-calculation-theory",children:"Period Calculation Theory"})}),"\n",(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsxs)(n.p,{children:["This document explains the mathematical foundations and design decisions behind the period calculation algorithm, particularly focusing on the interaction between ",(0,r.jsx)(n.strong,{children:"Flexibility (Flex)"}),", ",(0,r.jsx)(n.strong,{children:"Minimum Distance from Average"}),", and ",(0,r.jsx)(n.strong,{children:"Relaxation Strategy"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Target Audience:"})," Developers maintaining or extending the period calculation logic."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Related Files:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"coordinator/period_handlers/core.py"})," - Main calculation entry point"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"coordinator/period_handlers/level_filtering.py"})," - Flex and distance filtering"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"coordinator/period_handlers/relaxation.py"})," - Multi-phase relaxation strategy"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"coordinator/periods.py"})," - Period calculator orchestration"]}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"core-filtering-criteria",children:"Core Filtering Criteria"}),"\n",(0,r.jsxs)(n.p,{children:["Period detection uses ",(0,r.jsx)(n.strong,{children:"three independent filters"})," (all must pass):"]}),"\n",(0,r.jsx)(n.h3,{id:"1-flex-filter-price-distance-from-reference",children:"1. Flex Filter (Price Distance from Reference)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Purpose:"})," Limit how far prices can deviate from the daily min/max."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Logic:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# Best Price: Price must be within flex% ABOVE daily minimum\nin_flex = price <= (daily_min + daily_min \xd7 flex)\n\n# Peak Price: Price must be within flex% BELOW daily maximum\nin_flex = price >= (daily_max - daily_max \xd7 flex)\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example (Best Price):"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Daily Min: 10 ct/kWh"}),"\n",(0,r.jsx)(n.li,{children:"Flex: 15%"}),"\n",(0,r.jsx)(n.li,{children:"Acceptance Range: 0 - 11.5 ct/kWh (10 + 10\xd70.15)"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"2-min-distance-filter-distance-from-daily-average",children:"2. Min Distance Filter (Distance from Daily Average)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Purpose:"})," Ensure periods are ",(0,r.jsx)(n.strong,{children:"significantly"})," cheaper/more expensive than average, not just marginally better."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Logic:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# Best Price: Price must be at least min_distance% BELOW daily average\nmeets_distance = price <= (daily_avg \xd7 (1 - min_distance/100))\n\n# Peak Price: Price must be at least min_distance% ABOVE daily average\nmeets_distance = price >= (daily_avg \xd7 (1 + min_distance/100))\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example (Best Price):"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Daily Avg: 15 ct/kWh"}),"\n",(0,r.jsx)(n.li,{children:"Min Distance: 5%"}),"\n",(0,r.jsx)(n.li,{children:"Acceptance Range: 0 - 14.25 ct/kWh (15 \xd7 0.95)"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"3-level-filter-price-level-classification",children:"3. Level Filter (Price Level Classification)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Purpose:"})," Restrict periods to specific price classifications (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE)."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Logic:"})," See ",(0,r.jsx)(n.code,{children:"level_filtering.py"})," for gap tolerance details."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Volatility Thresholds - Important Separation:"})}),"\n",(0,r.jsxs)(n.p,{children:["The integration maintains ",(0,r.jsx)(n.strong,{children:"two independent sets"})," of volatility thresholds:"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Sensor Thresholds"})," (user-configurable via ",(0,r.jsx)(n.code,{children:"CONF_VOLATILITY_*_THRESHOLD"}),")"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Purpose: Display classification in ",(0,r.jsx)(n.code,{children:"sensor.tibber_home_volatility_*"})]}),"\n",(0,r.jsx)(n.li,{children:"Default: LOW < 10%, MEDIUM < 20%, HIGH \u2265 20%"}),"\n",(0,r.jsx)(n.li,{children:"User can adjust in config flow options"}),"\n",(0,r.jsx)(n.li,{children:"Affects: Sensor state/attributes only"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Period Filter Thresholds"})," (internal, fixed)"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Purpose: Level filter criteria when using ",(0,r.jsx)(n.code,{children:'level="volatility_low"'})," etc."]}),"\n",(0,r.jsxs)(n.li,{children:["Source: ",(0,r.jsx)(n.code,{children:"PRICE_LEVEL_THRESHOLDS"})," in ",(0,r.jsx)(n.code,{children:"const.py"})]}),"\n",(0,r.jsx)(n.li,{children:"Values: Same as sensor defaults (LOW < 10%, MEDIUM < 20%, HIGH \u2265 20%)"}),"\n",(0,r.jsxs)(n.li,{children:["User ",(0,r.jsx)(n.strong,{children:"cannot"})," adjust these"]}),"\n",(0,r.jsx)(n.li,{children:"Affects: Period candidate selection"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Rationale for Separation:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Sensor thresholds"}),' = Display preference ("I want to see LOW at 15% instead of 10%")']}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Period thresholds"})," = Algorithm configuration (tested defaults, complex interactions)"]}),"\n",(0,r.jsx)(n.li,{children:"Changing sensor display should not affect automation behavior"}),"\n",(0,r.jsx)(n.li,{children:"Prevents unexpected side effects when user adjusts sensor classification"}),"\n",(0,r.jsx)(n.li,{children:"Period calculation has many interacting filters (Flex, Distance, Level) - exposing all internals would be error-prone"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Implementation:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'# Sensor classification uses user config\nuser_low_threshold = config_entry.options.get(CONF_VOLATILITY_LOW_THRESHOLD, 10)\n\n# Period filter uses fixed constants\nperiod_low_threshold = PRICE_LEVEL_THRESHOLDS["volatility_low"] # Always 10%\n'})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Status:"})," Intentional design decision (Nov 2025). No plans to expose period thresholds to users."]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"the-flex--min_distance-conflict",children:"The Flex \xd7 Min_Distance Conflict"}),"\n",(0,r.jsx)(n.h3,{id:"problem-statement",children:"Problem Statement"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"These two filters can conflict when Flex is high!"})}),"\n",(0,r.jsx)(n.h4,{id:"scenario-best-price-with-flex50-min_distance5",children:"Scenario: Best Price with Flex=50%, Min_Distance=5%"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Given:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Daily Min: 10 ct/kWh"}),"\n",(0,r.jsx)(n.li,{children:"Daily Avg: 15 ct/kWh"}),"\n",(0,r.jsx)(n.li,{children:"Daily Max: 20 ct/kWh"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Flex Filter (50%):"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Max accepted = 10 + (10 \xd7 0.50) = 15 ct/kWh\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Min Distance Filter (5%):"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Max accepted = 15 \xd7 (1 - 0.05) = 14.25 ct/kWh\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Conflict:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Interval at 14.8 ct/kWh:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"\u2705 Flex: 14.8 \u2264 15 (PASS)"}),"\n",(0,r.jsx)(n.li,{children:"\u274c Distance: 14.8 > 14.25 (FAIL)"}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Result:"})," Rejected by Min_Distance even though Flex allows it!"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"The Issue:"})," At high Flex values, Min_Distance becomes the dominant filter and blocks intervals that Flex would permit. This defeats the purpose of having high Flex."]}),"\n",(0,r.jsx)(n.h3,{id:"mathematical-analysis",children:"Mathematical Analysis"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Conflict condition for Best Price:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"daily_min \xd7 (1 + flex) > daily_avg \xd7 (1 - min_distance/100)\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Typical values:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Min = 10, Avg = 15, Min_Distance = 5%"}),"\n",(0,r.jsxs)(n.li,{children:["Conflict occurs when: ",(0,r.jsx)(n.code,{children:"10 \xd7 (1 + flex) > 14.25"})]}),"\n",(0,r.jsxs)(n.li,{children:["Simplify: ",(0,r.jsx)(n.code,{children:"flex > 0.425"})," (42.5%)"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Below 42.5% Flex:"})," Both filters contribute meaningfully.\n",(0,r.jsx)(n.strong,{children:"Above 42.5% Flex:"})," Min_Distance dominates and blocks intervals."]}),"\n",(0,r.jsx)(n.h3,{id:"solution-dynamic-min_distance-scaling",children:"Solution: Dynamic Min_Distance Scaling"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Approach:"})," Reduce Min_Distance proportionally as Flex increases."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Formula:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"if flex > 0.20: # 20% threshold\n flex_excess = flex - 0.20\n scale_factor = max(0.25, 1.0 - (flex_excess \xd7 2.5))\n adjusted_min_distance = original_min_distance \xd7 scale_factor\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Scaling Table (Original Min_Distance = 5%):"})}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Flex"}),(0,r.jsx)(n.th,{children:"Scale Factor"}),(0,r.jsx)(n.th,{children:"Adjusted Min_Distance"}),(0,r.jsx)(n.th,{children:"Rationale"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"\u226420%"}),(0,r.jsx)(n.td,{children:"1.00"}),(0,r.jsx)(n.td,{children:"5.0%"}),(0,r.jsx)(n.td,{children:"Standard - both filters relevant"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"25%"}),(0,r.jsx)(n.td,{children:"0.88"}),(0,r.jsx)(n.td,{children:"4.4%"}),(0,r.jsx)(n.td,{children:"Slight reduction"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"30%"}),(0,r.jsx)(n.td,{children:"0.75"}),(0,r.jsx)(n.td,{children:"3.75%"}),(0,r.jsx)(n.td,{children:"Moderate reduction"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"40%"}),(0,r.jsx)(n.td,{children:"0.50"}),(0,r.jsx)(n.td,{children:"2.5%"}),(0,r.jsx)(n.td,{children:"Strong reduction - Flex dominates"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"50%"}),(0,r.jsx)(n.td,{children:"0.25"}),(0,r.jsx)(n.td,{children:"1.25%"}),(0,r.jsx)(n.td,{children:"Minimal distance - Flex decides"})]})]})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why stop at 25% of original?"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Min_Distance ensures periods are ",(0,r.jsx)(n.strong,{children:"significantly"})," different from average"]}),"\n",(0,r.jsx)(n.li,{children:'Even at 1.25%, prevents "flat days" (little price variation) from accepting every interval'}),"\n",(0,r.jsx)(n.li,{children:'Maintains semantic meaning: "this is a meaningful best/peak price period"'}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Implementation:"})," See ",(0,r.jsx)(n.code,{children:"level_filtering.py"})," \u2192 ",(0,r.jsx)(n.code,{children:"check_interval_criteria()"})]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Code Extract:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'# coordinator/period_handlers/level_filtering.py\n\nFLEX_SCALING_THRESHOLD = 0.20 # 20% - start adjusting min_distance\nSCALE_FACTOR_WARNING_THRESHOLD = 0.8 # Log when reduction > 20%\n\ndef check_interval_criteria(price, criteria):\n # ... flex check ...\n\n # Dynamic min_distance scaling\n adjusted_min_distance = criteria.min_distance_from_avg\n flex_abs = abs(criteria.flex)\n\n if flex_abs > FLEX_SCALING_THRESHOLD:\n flex_excess = flex_abs - 0.20 # How much above 20%\n scale_factor = max(0.25, 1.0 - (flex_excess \xd7 2.5))\n adjusted_min_distance = criteria.min_distance_from_avg \xd7 scale_factor\n\n if scale_factor < SCALE_FACTOR_WARNING_THRESHOLD:\n _LOGGER.debug(\n "High flex %.1f%% detected: Reducing min_distance %.1f%% \u2192 %.1f%%",\n flex_abs \xd7 100,\n criteria.min_distance_from_avg,\n adjusted_min_distance,\n )\n\n # Apply adjusted min_distance in distance check\n meets_min_distance = (\n price <= avg_price \xd7 (1 - adjusted_min_distance/100) # Best Price\n # OR\n price >= avg_price \xd7 (1 + adjusted_min_distance/100) # Peak Price\n )\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why Linear Scaling?"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Simple and predictable"}),"\n",(0,r.jsx)(n.li,{children:"No abrupt behavior changes"}),"\n",(0,r.jsx)(n.li,{children:"Easy to reason about for users and developers"}),"\n",(0,r.jsx)(n.li,{children:"Alternative considered: Exponential scaling (rejected as too aggressive)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why 25% Minimum?"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Below this, min_distance loses semantic meaning"}),"\n",(0,r.jsx)(n.li,{children:"Even on flat days, some quality filter needed"}),"\n",(0,r.jsx)(n.li,{children:'Prevents "every interval is a period" scenario'}),"\n",(0,r.jsx)(n.li,{children:'Maintains user expectation: "best/peak price means notably different"'}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"flex-limits-and-safety-caps",children:"Flex Limits and Safety Caps"}),"\n",(0,r.jsx)(n.h3,{id:"implementation-constants",children:"Implementation Constants"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsxs)(n.strong,{children:["Defined in ",(0,r.jsx)(n.code,{children:"coordinator/period_handlers/core.py"}),":"]})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"MAX_SAFE_FLEX = 0.50 # 50% - hard cap: above this, period detection becomes unreliable\nMAX_OUTLIER_FLEX = 0.25 # 25% - cap for outlier filtering: above this, spike detection too permissive\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsxs)(n.strong,{children:["Defined in ",(0,r.jsx)(n.code,{children:"const.py"}),":"]})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"DEFAULT_BEST_PRICE_FLEX = 15 # 15% base - optimal for relaxation mode (default enabled)\nDEFAULT_PEAK_PRICE_FLEX = -20 # 20% base (negative for peak detection)\nDEFAULT_RELAXATION_ATTEMPTS_BEST = 11 # 11 steps: 15% \u2192 48% (3% increment per step)\nDEFAULT_RELAXATION_ATTEMPTS_PEAK = 11 # 11 steps: 20% \u2192 50% (3% increment per step)\nDEFAULT_BEST_PRICE_MIN_PERIOD_LENGTH = 60 # 60 minutes\nDEFAULT_PEAK_PRICE_MIN_PERIOD_LENGTH = 30 # 30 minutes\nDEFAULT_BEST_PRICE_MIN_DISTANCE_FROM_AVG = 5 # 5% minimum distance\nDEFAULT_PEAK_PRICE_MIN_DISTANCE_FROM_AVG = 5 # 5% minimum distance\n"})}),"\n",(0,r.jsx)(n.h3,{id:"rationale-for-asymmetric-defaults",children:"Rationale for Asymmetric Defaults"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why Best Price \u2260 Peak Price?"})}),"\n",(0,r.jsx)(n.p,{children:"The different defaults reflect fundamentally different use cases:"}),"\n",(0,r.jsx)(n.h4,{id:"best-price-optimization-focus",children:"Best Price: Optimization Focus"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Goal:"})," Find practical time windows for running appliances"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Constraints:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Appliances need time to complete cycles (dishwasher: 2-3h, EV charging: 4-8h)"}),"\n",(0,r.jsx)(n.li,{children:"Short periods are impractical (not worth automation overhead)"}),"\n",(0,r.jsx)(n.li,{children:'User wants genuinely cheap times, not just "slightly below average"'}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Defaults:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"60 min minimum"})," - Ensures period is long enough for meaningful use"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"15% flex"})," - Stricter selection, focuses on truly cheap times"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Reasoning:"})," Better to find fewer, higher-quality periods than many mediocre ones"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"User behavior:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Automations trigger actions (turn on devices)"}),"\n",(0,r.jsx)(n.li,{children:"Wrong automation = wasted energy/money"}),"\n",(0,r.jsx)(n.li,{children:"Preference: Conservative (miss some savings) over aggressive (false positives)"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"peak-price-warning-focus",children:"Peak Price: Warning Focus"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Goal:"})," Alert users to expensive periods for consumption reduction"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Constraints:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Brief price spikes still matter (even 15-30 min is worth avoiding)"}),"\n",(0,r.jsx)(n.li,{children:"Early warning more valuable than perfect accuracy"}),"\n",(0,r.jsx)(n.li,{children:"User can manually decide whether to react"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Defaults:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"30 min minimum"})," - Catches shorter expensive spikes"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"20% flex"})," - More permissive, earlier detection"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Reasoning:"})," Better to warn early (even if not peak) than miss expensive periods"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"User behavior:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Notifications/alerts (informational)"}),"\n",(0,r.jsx)(n.li,{children:"Wrong alert = minor inconvenience, not cost"}),"\n",(0,r.jsx)(n.li,{children:"Preference: Sensitive (catch more) over specific (catch only extremes)"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"mathematical-justification",children:"Mathematical Justification"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Peak Price Volatility:"})}),"\n",(0,r.jsx)(n.p,{children:"Price curves tend to have:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Sharp spikes"})," during peak hours (morning/evening)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Shorter duration"})," at maximum (1-2 hours typical)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Higher variance"})," in peak times than cheap times"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example day:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Cheap period: 02:00-07:00 (5 hours at 10-12 ct) \u2190 Gradual, stable\nExpensive period: 17:00-18:30 (1.5 hours at 35-40 ct) \u2190 Sharp, brief\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Implication:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Stricter flex on peak (15%) might miss real expensive periods (too brief)"}),"\n",(0,r.jsx)(n.li,{children:"Longer min_length (60 min) might exclude legitimate spikes"}),"\n",(0,r.jsx)(n.li,{children:"Solution: More flexible thresholds for peak detection"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"design-alternatives-considered",children:"Design Alternatives Considered"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Option 1: Symmetric defaults (rejected)"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Both 60 min, both 15% flex"}),"\n",(0,r.jsx)(n.li,{children:"Problem: Misses short but expensive spikes"}),"\n",(0,r.jsx)(n.li,{children:'User feedback: "Why didn\'t I get warned about the 30-min price spike?"'}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Option 2: Same defaults, let users figure it out (rejected)"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"No guidance on best practices"}),"\n",(0,r.jsx)(n.li,{children:"Users would need to experiment to find good values"}),"\n",(0,r.jsx)(n.li,{children:"Most users stick with defaults, so defaults matter"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Option 3: Current approach (adopted)"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"All values user-configurable"})," via config flow options"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Different installation defaults"})," for Best Price vs. Peak Price"]}),"\n",(0,r.jsx)(n.li,{children:"Defaults reflect recommended practices for each use case"}),"\n",(0,r.jsx)(n.li,{children:"Users who need different behavior can adjust"}),"\n",(0,r.jsx)(n.li,{children:"Most users benefit from sensible defaults without configuration"}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"flex-limits-and-safety-caps-1",children:"Flex Limits and Safety Caps"}),"\n",(0,r.jsx)(n.h4,{id:"1-absolute-maximum-50-max_safe_flex",children:"1. Absolute Maximum: 50% (MAX_SAFE_FLEX)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Enforcement:"})," ",(0,r.jsx)(n.code,{children:"core.py"})," caps ",(0,r.jsx)(n.code,{children:"abs(flex)"})," at 0.50 (50%)"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Rationale:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Above 50%, period detection becomes unreliable"}),"\n",(0,r.jsx)(n.li,{children:"Best Price: Almost entire day qualifies (Min + 50% typically covers 60-80% of intervals)"}),"\n",(0,r.jsx)(n.li,{children:"Peak Price: Similar issue with Max - 50%"}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Result:"})," Either massive periods (entire day) or no periods (min_length not met)"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Warning Message:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Flex XX% exceeds maximum safe value! Capping at 50%.\nRecommendation: Use 15-20% with relaxation enabled, or 25-35% without relaxation.\n"})}),"\n",(0,r.jsx)(n.h4,{id:"2-outlier-filtering-maximum-25",children:"2. Outlier Filtering Maximum: 25%"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Enforcement:"})," ",(0,r.jsx)(n.code,{children:"core.py"})," caps outlier filtering flex at 0.25 (25%)"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Rationale:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'Outlier filtering uses Flex to determine "stable context" threshold'}),"\n",(0,r.jsx)(n.li,{children:'At > 25% Flex, almost any price swing is considered "stable"'}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Result:"})," Legitimate price shifts aren't smoothed, breaking period formation"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Note:"})," User's Flex still applies to period criteria (",(0,r.jsx)(n.code,{children:"in_flex"})," check), only outlier filtering is capped."]}),"\n",(0,r.jsx)(n.h3,{id:"recommended-ranges-user-guidance",children:"Recommended Ranges (User Guidance)"}),"\n",(0,r.jsx)(n.h4,{id:"with-relaxation-enabled-recommended",children:"With Relaxation Enabled (Recommended)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optimal:"})," 10-20%"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Relaxation increases Flex incrementally: 15% \u2192 18% \u2192 21% \u2192 ..."}),"\n",(0,r.jsx)(n.li,{children:"Low baseline ensures relaxation has room to work"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Warning Threshold:"})," > 25%"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'INFO log: "Base flex is on the high side"'}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"High Warning:"})," > 30%"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'WARNING log: "Base flex is very high for relaxation mode!"'}),"\n",(0,r.jsx)(n.li,{children:"Recommendation: Lower to 15-20%"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"without-relaxation",children:"Without Relaxation"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Optimal:"})," 20-35%"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"No automatic adjustment, must be sufficient from start"}),"\n",(0,r.jsx)(n.li,{children:"Higher baseline acceptable since no relaxation fallback"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Maximum Useful:"})," ~50%"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Above this, period detection degrades (see Hard Limits)"}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"relaxation-strategy",children:"Relaxation Strategy"}),"\n",(0,r.jsx)(n.h3,{id:"purpose",children:"Purpose"}),"\n",(0,r.jsxs)(n.p,{children:["Ensure ",(0,r.jsx)(n.strong,{children:"minimum periods per day"})," are found even when baseline filters are too strict."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Use Case:"})," User configures strict filters (low Flex, restrictive Level) but wants guarantee of N periods/day for automation reliability."]}),"\n",(0,r.jsx)(n.h3,{id:"multi-phase-approach",children:"Multi-Phase Approach"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Each day processed independently:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Calculate baseline periods with user's config"}),"\n",(0,r.jsx)(n.li,{children:"If insufficient periods found, enter relaxation loop"}),"\n",(0,r.jsx)(n.li,{children:"Try progressively relaxed filter combinations"}),"\n",(0,r.jsx)(n.li,{children:"Stop when target reached or all attempts exhausted"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"relaxation-increments",children:"Relaxation Increments"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Current Implementation (November 2025):"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"File:"})," ",(0,r.jsx)(n.code,{children:"coordinator/period_handlers/relaxation.py"})]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# Hard-coded 3% increment per step (reliability over configurability)\nflex_increment = 0.03 # 3% per step\nbase_flex = abs(config.flex)\n\n# Generate flex levels\nfor attempt in range(max_relaxation_attempts):\n flex_level = base_flex + (attempt \xd7 flex_increment)\n # Try flex_level with both filter combinations\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Constants:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"FLEX_WARNING_THRESHOLD_RELAXATION = 0.25 # 25% - INFO: suggest lowering to 15-20%\nFLEX_HIGH_THRESHOLD_RELAXATION = 0.30 # 30% - WARNING: very high for relaxation mode\nMAX_FLEX_HARD_LIMIT = 0.50 # 50% - absolute maximum (enforced in core.py)\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Design Decisions:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why 3% fixed increment?"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Predictable escalation path (15% \u2192 18% \u2192 21% \u2192 ...)"}),"\n",(0,r.jsx)(n.li,{children:"Independent of base flex (works consistently)"}),"\n",(0,r.jsx)(n.li,{children:"11 attempts covers full useful range (15% \u2192 48%)"}),"\n",(0,r.jsx)(n.li,{children:"Balance: Not too slow (2%), not too fast (5%)"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why hard-coded, not configurable?"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Prevents user misconfiguration"}),"\n",(0,r.jsx)(n.li,{children:"Simplifies mental model (fewer knobs to turn)"}),"\n",(0,r.jsx)(n.li,{children:"Reliable behavior across all configurations"}),"\n",(0,r.jsxs)(n.li,{children:["If needed, user adjusts ",(0,r.jsx)(n.code,{children:"max_relaxation_attempts"})," (fewer/more steps)"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why warn at 25% base flex?"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"At 25% base, first relaxation step reaches 28%"}),"\n",(0,r.jsx)(n.li,{children:"Above 30%, entering diminishing returns territory"}),"\n",(0,r.jsx)(n.li,{children:"User likely doesn't need relaxation with such high base flex"}),"\n",(0,r.jsx)(n.li,{children:"Should either: (a) lower base flex, or (b) disable relaxation"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Historical Context (Pre-November 2025):"})}),"\n",(0,r.jsx)(n.p,{children:"The algorithm previously used percentage-based increments that scaled with base flex:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"increment = base_flex \xd7 (step_pct / 100) # REMOVED\n"})}),"\n",(0,r.jsx)(n.p,{children:"This caused exponential escalation with high base flex values (e.g., 40% \u2192 50% \u2192 60% \u2192 70% in just 6 steps), making behavior unpredictable. The fixed 3% increment solves this by providing consistent, controlled escalation regardless of starting point."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Warning Messages:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'if base_flex >= FLEX_HIGH_THRESHOLD_RELAXATION: # 30%\n _LOGGER.warning(\n "Base flex %.1f%% is very high for relaxation mode! "\n "Consider lowering to 15-20%% or disabling relaxation.",\n base_flex \xd7 100,\n )\nelif base_flex >= FLEX_WARNING_THRESHOLD_RELAXATION: # 25%\n _LOGGER.info(\n "Base flex %.1f%% is on the high side. "\n "Consider 15-20%% for optimal relaxation effectiveness.",\n base_flex \xd7 100,\n )\n'})}),"\n",(0,r.jsx)(n.h3,{id:"filter-combination-strategy",children:"Filter Combination Strategy"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Per Flex level, try in order:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Original Level filter"}),"\n",(0,r.jsx)(n.li,{children:'Level filter = "any" (disabled)'}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Early Exit:"})," Stop immediately when target reached (don't try unnecessary combinations)"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example Flow (target=2 periods/day):"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Day 2025-11-19:\n1. Baseline flex=15%: Found 1 period (need 2)\n2. Flex=18% + level=cheap: Found 1 period\n3. Flex=18% + level=any: Found 2 periods \u2192 SUCCESS (stop)\n"})}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"implementation-notes",children:"Implementation Notes"}),"\n",(0,r.jsx)(n.h3,{id:"key-files-and-functions",children:"Key Files and Functions"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Period Calculation Entry Point:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# coordinator/period_handlers/core.py\ndef calculate_periods(\n all_prices: list[dict],\n config: PeriodConfig,\n time: TimeService,\n) -> dict[str, Any]\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Flex + Distance Filtering:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# coordinator/period_handlers/level_filtering.py\ndef check_interval_criteria(\n price: float,\n criteria: IntervalCriteria,\n) -> tuple[bool, bool] # (in_flex, meets_min_distance)\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Relaxation Orchestration:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# coordinator/period_handlers/relaxation.py\ndef calculate_periods_with_relaxation(...) -> tuple[dict, dict]\ndef relax_single_day(...) -> tuple[dict, dict]\n"})}),"\n",(0,r.jsx)(n.h4,{id:"outlier-filtering-implementation",children:"Outlier Filtering Implementation"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"File:"})," ",(0,r.jsx)(n.code,{children:"coordinator/period_handlers/outlier_filtering.py"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Purpose:"})," Detect and smooth isolated price spikes before period identification to prevent artificial fragmentation."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Algorithm Details:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Linear Regression Prediction:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Uses surrounding intervals to predict expected price"}),"\n",(0,r.jsx)(n.li,{children:"Window size: 3+ intervals (MIN_CONTEXT_SIZE)"}),"\n",(0,r.jsx)(n.li,{children:"Calculates trend slope and standard deviation"}),"\n",(0,r.jsxs)(n.li,{children:["Formula: ",(0,r.jsx)(n.code,{children:"predicted = mean + slope \xd7 (position - center)"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Confidence Intervals:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"95% confidence level (2 standard deviations)"}),"\n",(0,r.jsx)(n.li,{children:"Tolerance = 2.0 \xd7 std_dev (CONFIDENCE_LEVEL constant)"}),"\n",(0,r.jsxs)(n.li,{children:["Outlier if: ",(0,r.jsx)(n.code,{children:"|actual - predicted| > tolerance"})]}),"\n",(0,r.jsx)(n.li,{children:"Accounts for natural price volatility in context window"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Symmetry Check:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Rejects asymmetric outliers (threshold: 1.5 std dev)"}),"\n",(0,r.jsx)(n.li,{children:"Preserves legitimate price shifts (morning/evening peaks)"}),"\n",(0,r.jsxs)(n.li,{children:["Algorithm:","\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"residual = abs(actual - predicted)\nsymmetry_threshold = 1.5 \xd7 std_dev\n\nif residual > tolerance:\n # Check if spike is symmetric in context\n context_residuals = [abs(p - pred) for p, pred in context]\n avg_context_residual = mean(context_residuals)\n\n if residual > symmetry_threshold \xd7 avg_context_residual:\n # Asymmetric spike \u2192 smooth it\n else:\n # Symmetric (part of trend) \u2192 keep it\n"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Enhanced Zigzag Detection:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Detects spike clusters via relative volatility"}),"\n",(0,r.jsx)(n.li,{children:"Threshold: 2.0\xd7 local volatility (RELATIVE_VOLATILITY_THRESHOLD)"}),"\n",(0,r.jsx)(n.li,{children:"Single-pass algorithm (no iteration needed)"}),"\n",(0,r.jsx)(n.li,{children:"Catches patterns like: 18, 35, 19, 34, 18 (alternating spikes)"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Constants:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# coordinator/period_handlers/outlier_filtering.py\n\nCONFIDENCE_LEVEL = 2.0 # 95% confidence (2 std deviations)\nSYMMETRY_THRESHOLD = 1.5 # Asymmetry detection threshold\nRELATIVE_VOLATILITY_THRESHOLD = 2.0 # Zigzag spike detection\nMIN_CONTEXT_SIZE = 3 # Minimum intervals for regression\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Data Integrity:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Original prices stored in ",(0,r.jsx)(n.code,{children:"_original_price"})," field"]}),"\n",(0,r.jsx)(n.li,{children:"All statistics (daily min/max/avg) use original prices"}),"\n",(0,r.jsx)(n.li,{children:"Smoothing only affects period formation logic"}),"\n",(0,r.jsx)(n.li,{children:"Smart counting: Only counts smoothing that changed period outcome"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Performance:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Single pass through price data"}),"\n",(0,r.jsx)(n.li,{children:"O(n) complexity with small context window"}),"\n",(0,r.jsx)(n.li,{children:"No iterative refinement needed"}),"\n",(0,r.jsxs)(n.li,{children:["Typical processing time: ",(0,r.jsx)(n.code,{children:"<"}),"1ms for 96 intervals"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example Debug Output:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"DEBUG: [2025-11-11T14:30:00+01:00] Outlier detected: 35.2 ct\nDEBUG: Context: 18.5, 19.1, 19.3, 19.8, 20.2 ct\nDEBUG: Residual: 14.5 ct > tolerance: 4.8 ct (2\xd72.4 std dev)\nDEBUG: Trend slope: 0.3 ct/interval (gradual increase)\nDEBUG: Predicted: 20.7 ct (linear regression)\nDEBUG: Smoothed to: 20.7 ct\nDEBUG: Asymmetry ratio: 3.2 (>1.5 threshold) \u2192 confirmed outlier\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why This Approach?"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Linear regression over moving average:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Accounts for price trends (morning ramp-up, evening decline)"}),"\n",(0,r.jsx)(n.li,{children:"Moving average can't predict direction, only level"}),"\n",(0,r.jsx)(n.li,{children:"Better accuracy on non-stationary price curves"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Symmetry check over fixed threshold:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Prevents false positives on legitimate price shifts"}),"\n",(0,r.jsx)(n.li,{children:"Adapts to local volatility patterns"}),"\n",(0,r.jsx)(n.li,{children:'Preserves user expectation: "expensive during peak hours"'}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Single-pass over iterative:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Predictable behavior (no convergence issues)"}),"\n",(0,r.jsx)(n.li,{children:"Fast and deterministic"}),"\n",(0,r.jsx)(n.li,{children:"Easier to debug and reason about"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Alternative Approaches Considered:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Median filtering"})," - Rejected: Too aggressive, removes legitimate peaks"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Moving average"})," - Rejected: Can't handle trends"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"IQR (Interquartile Range)"})," - Rejected: Assumes normal distribution"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"RANSAC"})," - Rejected: Overkill for 1D data, slow"]}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"debugging-tips",children:"Debugging Tips"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Enable DEBUG logging:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"# configuration.yaml\nlogger:\n default: info\n logs:\n custom_components.tibber_prices.coordinator.period_handlers: debug\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Key log messages to watch:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:'"Filter statistics: X intervals checked"'})," - Shows how many intervals filtered by each criterion"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:'"After build_periods: X raw periods found"'})," - Periods before min_length filtering"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:'"Day X: Success with flex=Y%"'})," - Relaxation succeeded"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:'"High flex X% detected: Reducing min_distance Y% \u2192 Z%"'})," - Distance scaling active"]}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"common-configuration-pitfalls",children:"Common Configuration Pitfalls"}),"\n",(0,r.jsx)(n.h3,{id:"-anti-pattern-1-high-flex-with-relaxation",children:"\u274c Anti-Pattern 1: High Flex with Relaxation"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"best_price_flex: 40\nenable_relaxation_best: true\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Problem:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Base Flex 40% already very permissive"}),"\n",(0,r.jsx)(n.li,{children:"Relaxation increments further (43%, 46%, 49%, ...)"}),"\n",(0,r.jsx)(n.li,{children:"Quickly approaches 50% cap with diminishing returns"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solution:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"best_price_flex: 15 # Let relaxation increase it\nenable_relaxation_best: true\n"})}),"\n",(0,r.jsx)(n.h3,{id:"-anti-pattern-2-zero-min_distance",children:"\u274c Anti-Pattern 2: Zero Min_Distance"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"best_price_min_distance_from_avg: 0\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Problem:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'"Flat days" (little price variation) accept all intervals'}),"\n",(0,r.jsx)(n.li,{children:'Periods lose semantic meaning ("significantly cheap")'}),"\n",(0,r.jsx)(n.li,{children:"May create periods during barely-below-average times"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solution:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"best_price_min_distance_from_avg: 5 # Use default 5%\n"})}),"\n",(0,r.jsx)(n.h3,{id:"-anti-pattern-3-conflicting-flex--distance",children:"\u274c Anti-Pattern 3: Conflicting Flex + Distance"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"best_price_flex: 45\nbest_price_min_distance_from_avg: 10\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Problem:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Distance filter dominates, making Flex irrelevant"}),"\n",(0,r.jsx)(n.li,{children:"Dynamic scaling helps but still suboptimal"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solution:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"best_price_flex: 20\nbest_price_min_distance_from_avg: 5\n"})}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"testing-scenarios",children:"Testing Scenarios"}),"\n",(0,r.jsx)(n.h3,{id:"scenario-1-normal-day-good-variation",children:"Scenario 1: Normal Day (Good Variation)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Price Range:"})," 10 - 20 ct/kWh (100% variation)\n",(0,r.jsx)(n.strong,{children:"Average:"})," 15 ct/kWh"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Expected Behavior:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Flex 15%: Should find 2-4 clear best price periods"}),"\n",(0,r.jsx)(n.li,{children:"Flex 30%: Should find 4-8 periods (more lenient)"}),"\n",(0,r.jsx)(n.li,{children:"Min_Distance 5%: Effective throughout range"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Debug Checks:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"DEBUG: Filter statistics: 96 intervals checked\nDEBUG: Filtered by FLEX: 12/96 (12.5%) \u2190 Low percentage = good variation\nDEBUG: Filtered by MIN_DISTANCE: 8/96 (8.3%) \u2190 Both filters active\nDEBUG: After build_periods: 3 raw periods found\n"})}),"\n",(0,r.jsx)(n.h3,{id:"scenario-2-flat-day-poor-variation",children:"Scenario 2: Flat Day (Poor Variation)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Price Range:"})," 14 - 16 ct/kWh (14% variation)\n",(0,r.jsx)(n.strong,{children:"Average:"})," 15 ct/kWh"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Expected Behavior:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Flex 15%: May find 1-2 small periods (or zero if no clear winners)"}),"\n",(0,r.jsx)(n.li,{children:"Min_Distance 5%: Critical here - ensures only truly cheaper intervals qualify"}),"\n",(0,r.jsx)(n.li,{children:'Without Min_Distance: Would accept almost entire day as "best price"'}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Debug Checks:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"DEBUG: Filter statistics: 96 intervals checked\nDEBUG: Filtered by FLEX: 45/96 (46.9%) \u2190 High percentage = poor variation\nDEBUG: Filtered by MIN_DISTANCE: 52/96 (54.2%) \u2190 Distance filter dominant\nDEBUG: After build_periods: 1 raw period found\nDEBUG: Day 2025-11-11: Baseline insufficient (1 < 2), starting relaxation\n"})}),"\n",(0,r.jsx)(n.h3,{id:"scenario-3-extreme-day-high-volatility",children:"Scenario 3: Extreme Day (High Volatility)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Price Range:"})," 5 - 40 ct/kWh (700% variation)\n",(0,r.jsx)(n.strong,{children:"Average:"})," 18 ct/kWh"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Expected Behavior:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Flex 15%: Finds multiple very cheap periods (5-6 ct)"}),"\n",(0,r.jsx)(n.li,{children:"Outlier filtering: May smooth isolated spikes (30-40 ct)"}),"\n",(0,r.jsx)(n.li,{children:"Distance filter: Less impactful (clear separation between cheap/expensive)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Debug Checks:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"DEBUG: Outlier detected: 38.5 ct (threshold: 4.2 ct)\nDEBUG: Smoothed to: 20.1 ct (trend prediction)\nDEBUG: Filter statistics: 96 intervals checked\nDEBUG: Filtered by FLEX: 8/96 (8.3%) \u2190 Very selective\nDEBUG: Filtered by MIN_DISTANCE: 4/96 (4.2%) \u2190 Flex dominates\nDEBUG: After build_periods: 4 raw periods found\n"})}),"\n",(0,r.jsx)(n.h3,{id:"scenario-4-relaxation-success",children:"Scenario 4: Relaxation Success"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Initial State:"})," Baseline finds 1 period, target is 2"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Expected Flow:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"INFO: Calculating BEST PRICE periods: relaxation=ON, target=2/day, flex=15.0%\nDEBUG: Day 2025-11-11: Baseline found 1 period (need 2)\nDEBUG: Phase 1: flex 18.0% + original filters\nDEBUG: Found 1 period (insufficient)\nDEBUG: Phase 2: flex 18.0% + level=any\nDEBUG: Found 2 periods \u2192 SUCCESS\nINFO: Day 2025-11-11: Success after 1 relaxation phase (2 periods)\n"})}),"\n",(0,r.jsx)(n.h3,{id:"scenario-5-relaxation-exhausted",children:"Scenario 5: Relaxation Exhausted"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Initial State:"})," Strict filters, very flat day"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Expected Flow:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"INFO: Calculating BEST PRICE periods: relaxation=ON, target=2/day, flex=15.0%\nDEBUG: Day 2025-11-11: Baseline found 0 periods (need 2)\nDEBUG: Phase 1-11: flex 15%\u219248%, all filter combinations tried\nWARNING: Day 2025-11-11: All relaxation phases exhausted, still only 1 period found\nINFO: Period calculation completed: 1/2 days reached target\n"})}),"\n",(0,r.jsx)(n.h3,{id:"debugging-checklist",children:"Debugging Checklist"}),"\n",(0,r.jsx)(n.p,{children:"When debugging period calculation issues:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Check Filter Statistics"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Which filter blocks most intervals? (flex, distance, or level)"}),"\n",(0,r.jsx)(n.li,{children:"High flex filtering (>30%) = Need more flexibility or relaxation"}),"\n",(0,r.jsx)(n.li,{children:"High distance filtering (>50%) = Min_distance too strict or flat day"}),"\n",(0,r.jsx)(n.li,{children:"High level filtering = Level filter too restrictive"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Check Relaxation Behavior"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'Did relaxation activate? Check for "Baseline insufficient" message'}),"\n",(0,r.jsx)(n.li,{children:"Which phase succeeded? Early success (phase 1-3) = good config"}),"\n",(0,r.jsx)(n.li,{children:"Late success (phase 8-11) = Consider adjusting base config"}),"\n",(0,r.jsx)(n.li,{children:"Exhausted all phases = Unrealistic target for this day's price curve"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Check Flex Warnings"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"INFO at 25% base flex = On the high side"}),"\n",(0,r.jsx)(n.li,{children:"WARNING at 30% base flex = Too high for relaxation"}),"\n",(0,r.jsx)(n.li,{children:"If seeing these: Lower base flex to 15-20%"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Check Min_Distance Scaling"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'Debug messages show "High flex X% detected: Reducing min_distance Y% \u2192 Z%"'}),"\n",(0,r.jsxs)(n.li,{children:["If scale factor ",(0,r.jsx)(n.code,{children:"<"}),"0.8 (20% reduction): High flex is active"]}),"\n",(0,r.jsx)(n.li,{children:"If periods still not found: Filters conflict even with scaling"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Check Outlier Filtering"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'Look for "Outlier detected" messages'}),"\n",(0,r.jsxs)(n.li,{children:["Check ",(0,r.jsx)(n.code,{children:"period_interval_smoothed_count"})," attribute"]}),"\n",(0,r.jsx)(n.li,{children:"If no smoothing but periods fragmented: Not isolated spikes, but legitimate price levels"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"future-enhancements",children:"Future Enhancements"}),"\n",(0,r.jsx)(n.h3,{id:"potential-improvements",children:"Potential Improvements"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Adaptive Flex Calculation:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Auto-adjust Flex based on daily price variation"}),"\n",(0,r.jsx)(n.li,{children:"High variation days: Lower Flex needed"}),"\n",(0,r.jsx)(n.li,{children:"Low variation days: Higher Flex needed"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Machine Learning Approach:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Learn optimal Flex/Distance from user feedback"}),"\n",(0,r.jsx)(n.li,{children:"Classify days by pattern (normal/flat/volatile/bimodal)"}),"\n",(0,r.jsx)(n.li,{children:"Apply pattern-specific defaults"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Multi-Objective Optimization:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Balance period count vs. quality"}),"\n",(0,r.jsx)(n.li,{children:"Consider period duration vs. price level"}),"\n",(0,r.jsx)(n.li,{children:"Optimize for user's stated use case (EV charging vs. heat pump)"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"known-limitations",children:"Known Limitations"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fixed increment step:"})," 3% cap may be too aggressive for very low base Flex"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Linear distance scaling:"})," Could benefit from non-linear curve"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"No consideration of temporal distribution:"})," May find all periods in one part of day"]}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"future-enhancements-1",children:"Future Enhancements"}),"\n",(0,r.jsx)(n.h3,{id:"potential-improvements-1",children:"Potential Improvements"}),"\n",(0,r.jsx)(n.h4,{id:"1-adaptive-flex-calculation-not-yet-implemented",children:"1. Adaptive Flex Calculation (Not Yet Implemented)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Concept:"})," Auto-adjust Flex based on daily price variation"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Algorithm:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# Pseudo-code for adaptive flex\nvariation = (daily_max - daily_min) / daily_avg\n\nif variation < 0.15: # Flat day (< 15% variation)\n adaptive_flex = 0.30 # Need higher flex\nelif variation > 0.50: # High volatility (> 50% variation)\n adaptive_flex = 0.10 # Lower flex sufficient\nelse: # Normal day\n adaptive_flex = 0.15 # Standard flex\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Eliminates need for relaxation on most days"}),"\n",(0,r.jsx)(n.li,{children:"Self-adjusting to market conditions"}),"\n",(0,r.jsx)(n.li,{children:"Better user experience (less configuration needed)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Challenges:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Harder to predict behavior (less transparent)"}),"\n",(0,r.jsx)(n.li,{children:"May conflict with user's mental model"}),"\n",(0,r.jsx)(n.li,{children:"Needs extensive testing across different markets"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Status:"})," Considered but not implemented (prefer explicit relaxation)"]}),"\n",(0,r.jsx)(n.h4,{id:"2-machine-learning-approach-future-work",children:"2. Machine Learning Approach (Future Work)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Concept:"})," Learn optimal Flex/Distance from user feedback"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Approach:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Track which periods user actually uses (automation triggers)"}),"\n",(0,r.jsx)(n.li,{children:"Classify days by pattern (normal/flat/volatile/bimodal)"}),"\n",(0,r.jsx)(n.li,{children:"Apply pattern-specific defaults"}),"\n",(0,r.jsx)(n.li,{children:"Learn per-user preferences over time"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Personalized to user's actual behavior"}),"\n",(0,r.jsx)(n.li,{children:"Adapts to local market patterns"}),"\n",(0,r.jsx)(n.li,{children:"Could discover non-obvious patterns"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Challenges:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Requires user feedback mechanism (not implemented)"}),"\n",(0,r.jsx)(n.li,{children:"Privacy concerns (storing usage patterns)"}),"\n",(0,r.jsx)(n.li,{children:'Complexity for users to understand "why this period?"'}),"\n",(0,r.jsx)(n.li,{children:"Cold start problem (new users have no history)"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Status:"})," Theoretical only (no implementation planned)"]}),"\n",(0,r.jsx)(n.h4,{id:"3-multi-objective-optimization-research-idea",children:"3. Multi-Objective Optimization (Research Idea)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Concept:"})," Balance multiple goals simultaneously"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Goals:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Period count vs. quality (cheap vs. very cheap)"}),"\n",(0,r.jsx)(n.li,{children:"Period duration vs. price level (long mediocre vs. short excellent)"}),"\n",(0,r.jsx)(n.li,{children:"Temporal distribution (spread throughout day vs. clustered)"}),"\n",(0,r.jsx)(n.li,{children:"User's stated use case (EV charging vs. heat pump vs. dishwasher)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Algorithm:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Pareto optimization (find trade-off frontier)"}),"\n",(0,r.jsx)(n.li,{children:"User chooses point on frontier via preferences"}),"\n",(0,r.jsx)(n.li,{children:"Genetic algorithm or simulated annealing"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"More sophisticated period selection"}),"\n",(0,r.jsx)(n.li,{children:"Better match to user's actual needs"}),"\n",(0,r.jsx)(n.li,{children:"Could handle complex appliance requirements"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Challenges:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Much more complex to implement"}),"\n",(0,r.jsx)(n.li,{children:"Harder to explain to users"}),"\n",(0,r.jsx)(n.li,{children:"Computational cost (may need caching)"}),"\n",(0,r.jsx)(n.li,{children:"Configuration explosion (too many knobs)"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Status:"})," Research idea only (not planned)"]}),"\n",(0,r.jsx)(n.h3,{id:"known-limitations-1",children:"Known Limitations"}),"\n",(0,r.jsx)(n.h4,{id:"1-fixed-increment-step",children:"1. Fixed Increment Step"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Current:"})," 3% cap may be too aggressive for very low base Flex"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Base flex 5% + 3% increment = 8% (60% increase!)"}),"\n",(0,r.jsx)(n.li,{children:"Base flex 15% + 3% increment = 18% (20% increase)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Possible Solution:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Percentage-based increment: ",(0,r.jsx)(n.code,{children:"increment = max(base_flex \xd7 0.20, 0.03)"})]}),"\n",(0,r.jsx)(n.li,{children:"This gives: 5% \u2192 6% (20%), 15% \u2192 18% (20%), 40% \u2192 43% (7.5%)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why Not Implemented:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Very low base flex (",(0,r.jsx)(n.code,{children:"<"}),"10%) unusual"]}),"\n",(0,r.jsx)(n.li,{children:"Users with strict requirements likely disable relaxation"}),"\n",(0,r.jsx)(n.li,{children:"Simplicity preferred over edge case optimization"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"2-linear-distance-scaling",children:"2. Linear Distance Scaling"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Current:"})," Linear scaling may be too aggressive/conservative"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Alternative:"})," Non-linear curve"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# Example: Exponential scaling\nscale_factor = 0.25 + 0.75 \xd7 exp(-5 \xd7 (flex - 0.20))\n\n# Or: Sigmoid scaling\nscale_factor = 0.25 + 0.75 / (1 + exp(10 \xd7 (flex - 0.35)))\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why Not Implemented:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Linear is easier to reason about"}),"\n",(0,r.jsx)(n.li,{children:"No evidence that non-linear is better"}),"\n",(0,r.jsx)(n.li,{children:"Would need extensive testing"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"3-no-temporal-distribution-consideration",children:"3. No Temporal Distribution Consideration"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Issue:"})," May find all periods in one part of day"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'All 3 "best price" periods between 02:00-08:00'}),"\n",(0,r.jsx)(n.li,{children:"No periods in evening (when user might want to run appliances)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Possible Solution:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:'Add "spread" parameter (prefer distributed periods)'}),"\n",(0,r.jsx)(n.li,{children:"Weight periods by time-of-day preferences"}),"\n",(0,r.jsx)(n.li,{children:"Consider user's typical usage patterns"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why Not Implemented:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Adds complexity"}),"\n",(0,r.jsx)(n.li,{children:"Users can work around with multiple automations"}),"\n",(0,r.jsx)(n.li,{children:"Different users have different needs (no one-size-fits-all)"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"4-period-boundary-handling",children:"4. Period Boundary Handling"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Current Behavior:"})," Periods can cross midnight naturally"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Design Principle:"})," Each interval is evaluated using its ",(0,r.jsx)(n.strong,{children:"own day's"})," reference prices (daily min/max/avg)."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Implementation:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:"# In period_building.py build_periods():\nfor price_data in all_prices:\n starts_at = time.get_interval_time(price_data)\n date_key = starts_at.date()\n\n # CRITICAL: Use interval's own day, not period_start_date\n ref_date = date_key\n\n criteria = TibberPricesIntervalCriteria(\n ref_price=ref_prices[ref_date], # Interval's day\n avg_price=avg_prices[ref_date], # Interval's day\n flex=flex,\n min_distance_from_avg=min_distance_from_avg,\n reverse_sort=reverse_sort,\n )\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Why Per-Day Evaluation?"})}),"\n",(0,r.jsx)(n.p,{children:"Periods can cross midnight (e.g., 23:45 \u2192 01:00). Each day has independent reference prices calculated from its 96 intervals."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example showing the problem with period-start-day approach:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Day 1 (2025-11-21): Cheap day\n daily_min = 10 ct, daily_avg = 20 ct, flex = 15%\n Criteria: price \u2264 11.5 ct (10 + 10\xd70.15)\n\nDay 2 (2025-11-22): Expensive day\n daily_min = 20 ct, daily_avg = 30 ct, flex = 15%\n Criteria: price \u2264 23 ct (20 + 20\xd70.15)\n\nPeriod crossing midnight: 23:45 Day 1 \u2192 00:15 Day 2\n 23:45 (Day 1): 11 ct \u2192 \u2705 Passes (11 \u2264 11.5)\n 00:00 (Day 2): 21 ct \u2192 Should this pass?\n\n\u274c WRONG (using period start day):\n 00:00 evaluated against Day 1's 11.5 ct threshold\n 21 ct > 11.5 ct \u2192 Fails\n But 21ct IS cheap on Day 2 (min=20ct)!\n\n\u2705 CORRECT (using interval's own day):\n 00:00 evaluated against Day 2's 23 ct threshold\n 21 ct \u2264 23 ct \u2192 Passes\n Correctly identified as cheap relative to Day 2\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Trade-off: Periods May Break at Midnight"})}),"\n",(0,r.jsx)(n.p,{children:"When days differ significantly, period can split:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:"Day 1: Min=10ct, Avg=20ct, 23:45=11ct \u2192 \u2705 Cheap (relative to Day 1)\nDay 2: Min=25ct, Avg=35ct, 00:00=21ct \u2192 \u274c Expensive (relative to Day 2)\nResult: Period stops at 23:45, new period starts later\n"})}),"\n",(0,r.jsxs)(n.p,{children:["This is ",(0,r.jsx)(n.strong,{children:"mathematically correct"})," - 21ct is genuinely expensive on a day where minimum is 25ct."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Market Reality Explains Price Jumps:"})}),"\n",(0,r.jsx)(n.p,{children:"Day-ahead electricity markets (EPEX SPOT) set prices at 12:00 CET for all next-day hours:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Late intervals (23:45): Priced ~36h before delivery \u2192 high forecast uncertainty \u2192 risk premium"}),"\n",(0,r.jsx)(n.li,{children:"Early intervals (00:00): Priced ~12h before delivery \u2192 better forecasts \u2192 lower risk buffer"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"This explains why absolute prices jump at midnight despite minimal demand changes."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"User-Facing Solution (Nov 2025):"})}),"\n",(0,r.jsx)(n.p,{children:"Added per-period day volatility attributes to detect when classification changes are meaningful:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"day_volatility_%"}),": Percentage spread (span/avg \xd7 100)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"day_price_min"}),", ",(0,r.jsx)(n.code,{children:"day_price_max"}),", ",(0,r.jsx)(n.code,{children:"day_price_span"}),": Daily price range (ct/\xf8re)"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Automations can check volatility before acting:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"condition:\n - condition: template\n value_template: >\n {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }}\n"})}),"\n",(0,r.jsx)(n.p,{children:"Low volatility (< 15%) means classification changes are less economically significant."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Alternative Approaches Rejected:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Use period start day for all intervals"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Problem: Mathematically incorrect - lends cheap day's criteria to expensive day"}),"\n",(0,r.jsx)(n.li,{children:"Rejected: Violates relative evaluation principle"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Adjust flex/distance at midnight"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Problem: Complex, unpredictable, hides market reality"}),"\n",(0,r.jsx)(n.li,{children:"Rejected: Users should understand price context, not have it hidden"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Split at midnight always"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Problem: Artificially fragments natural periods"}),"\n",(0,r.jsx)(n.li,{children:"Rejected: Worse user experience"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Use next day's reference after midnight"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Problem: Period criteria inconsistent across duration"}),"\n",(0,r.jsx)(n.li,{children:"Rejected: Confusing and unpredictable"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Status:"})," Per-day evaluation is intentional design prioritizing mathematical correctness."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"See Also:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["User documentation: ",(0,r.jsx)(n.code,{children:"docs/user/period-calculation.md"}),' \u2192 "Midnight Price Classification Changes"']}),"\n",(0,r.jsxs)(n.li,{children:["Implementation: ",(0,r.jsx)(n.code,{children:"coordinator/period_handlers/period_building.py"})," (line ~126: ",(0,r.jsx)(n.code,{children:"ref_date = date_key"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Attributes: ",(0,r.jsx)(n.code,{children:"coordinator/period_handlers/period_statistics.py"})," (day volatility calculation)"]}),"\n"]}),"\n",(0,r.jsx)(n.hr,{}),"\n",(0,r.jsx)(n.h2,{id:"references",children:"References"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://jpawlowski.github.io/hass.tibber_prices/user/period-calculation",children:"User Documentation: Period Calculation"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/hass.tibber_prices/developer/architecture",children:"Architecture Overview"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"/hass.tibber_prices/developer/caching-strategy",children:"Caching Strategy"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/main/AGENTS.md",children:"AGENTS.md"})," - AI assistant memory (implementation patterns)"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"changelog",children:"Changelog"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"2025-11-19"}),": Initial documentation of Flex/Distance interaction and Relaxation strategy fixes"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/edefc60b.99b7c4d5.js b/developer/assets/js/edefc60b.99b7c4d5.js new file mode 100644 index 0000000..98b5e64 --- /dev/null +++ b/developer/assets/js/edefc60b.99b7c4d5.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[3624],{6496:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"performance","title":"Performance Optimization","description":"Guidelines for maintaining and improving integration performance.","source":"@site/docs/performance.md","sourceDirName":".","slug":"/performance","permalink":"/hass.tibber_prices/developer/performance","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/performance.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Refactoring Guide","permalink":"/hass.tibber_prices/developer/refactoring-guide"},"next":{"title":"Contributing Guide","permalink":"/hass.tibber_prices/developer/contributing"}}');var a=r(4848),s=r(8453);const t={},l="Performance Optimization",c={},o=[{value:"Performance Goals",id:"performance-goals",level:2},{value:"Profiling",id:"profiling",level:2},{value:"Timing Decorator",id:"timing-decorator",level:3},{value:"Memory Profiling",id:"memory-profiling",level:3},{value:"Async Profiling",id:"async-profiling",level:3},{value:"Optimization Patterns",id:"optimization-patterns",level:2},{value:"Caching",id:"caching",level:3},{value:"Lazy Loading",id:"lazy-loading",level:3},{value:"Bulk Operations",id:"bulk-operations",level:3},{value:"Async Best Practices",id:"async-best-practices",level:3},{value:"Memory Management",id:"memory-management",level:2},{value:"Avoid Memory Leaks",id:"avoid-memory-leaks",level:3},{value:"Efficient Data Structures",id:"efficient-data-structures",level:3},{value:"Coordinator Optimization",id:"coordinator-optimization",level:2},{value:"Minimize API Calls",id:"minimize-api-calls",level:3},{value:"Smart Updates",id:"smart-updates",level:3},{value:"Database Impact",id:"database-impact",level:2},{value:"State Class Selection",id:"state-class-selection",level:3},{value:"Attribute Size",id:"attribute-size",level:3},{value:"Testing Performance",id:"testing-performance",level:2},{value:"Benchmark Tests",id:"benchmark-tests",level:3},{value:"Load Testing",id:"load-testing",level:3},{value:"Monitoring in Production",id:"monitoring-in-production",level:2},{value:"Log Performance Metrics",id:"log-performance-metrics",level:3},{value:"Memory Tracking",id:"memory-tracking",level:3}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.header,{children:(0,a.jsx)(n.h1,{id:"performance-optimization",children:"Performance Optimization"})}),"\n",(0,a.jsx)(n.p,{children:"Guidelines for maintaining and improving integration performance."}),"\n",(0,a.jsx)(n.h2,{id:"performance-goals",children:"Performance Goals"}),"\n",(0,a.jsx)(n.p,{children:"Target metrics:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Coordinator update"}),": <500ms (typical: 200-300ms)"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Sensor update"}),": <10ms per sensor"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Period calculation"}),": <100ms (typical: 20-50ms)"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Memory footprint"}),": <10MB per home"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"API calls"}),": <100 per day per home"]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"profiling",children:"Profiling"}),"\n",(0,a.jsx)(n.h3,{id:"timing-decorator",children:"Timing Decorator"}),"\n",(0,a.jsx)(n.p,{children:"Use for performance-critical functions:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'import time\nimport functools\n\ndef timing(func):\n @functools.wraps(func)\n def wrapper(*args, **kwargs):\n start = time.perf_counter()\n result = func(*args, **kwargs)\n duration = time.perf_counter() - start\n _LOGGER.debug("%s took %.3fms", func.__name__, duration * 1000)\n return result\n return wrapper\n\n@timing\ndef expensive_calculation():\n # Your code here\n'})}),"\n",(0,a.jsx)(n.h3,{id:"memory-profiling",children:"Memory Profiling"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'import tracemalloc\n\ntracemalloc.start()\n# Run your code\ncurrent, peak = tracemalloc.get_traced_memory()\n_LOGGER.info("Memory: current=%.2fMB peak=%.2fMB",\n current / 1024**2, peak / 1024**2)\ntracemalloc.stop()\n'})}),"\n",(0,a.jsx)(n.h3,{id:"async-profiling",children:"Async Profiling"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-bash",children:"# Install aioprof\nuv pip install aioprof\n\n# Run with profiling\npython -m aioprof homeassistant -c config\n"})}),"\n",(0,a.jsx)(n.h2,{id:"optimization-patterns",children:"Optimization Patterns"}),"\n",(0,a.jsx)(n.h3,{id:"caching",children:"Caching"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"1. Persistent Cache"})," (API data):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:"# Already implemented in coordinator/cache.py\nstore = Store(hass, STORAGE_VERSION, STORAGE_KEY)\ndata = await store.async_load()\n"})}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"2. Translation Cache"})," (in-memory):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'# Already implemented in const.py\n_TRANSLATION_CACHE: dict[str, dict] = {}\n\ndef get_translation(path: str, language: str) -> dict:\n cache_key = f"{path}_{language}"\n if cache_key not in _TRANSLATION_CACHE:\n _TRANSLATION_CACHE[cache_key] = load_translation(path, language)\n return _TRANSLATION_CACHE[cache_key]\n'})}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"3. Config Cache"})," (invalidated on options change):"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:"class DataTransformer:\n def __init__(self):\n self._config_cache: dict | None = None\n\n def get_config(self) -> dict:\n if self._config_cache is None:\n self._config_cache = self._build_config()\n return self._config_cache\n\n def invalidate_config_cache(self):\n self._config_cache = None\n"})}),"\n",(0,a.jsx)(n.h3,{id:"lazy-loading",children:"Lazy Loading"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"Load data only when needed:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'@property\ndef extra_state_attributes(self) -> dict | None:\n """Return attributes."""\n # Calculate only when accessed\n if self.entity_description.key == "complex_sensor":\n return self._calculate_complex_attributes()\n return None\n'})}),"\n",(0,a.jsx)(n.h3,{id:"bulk-operations",children:"Bulk Operations"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"Process multiple items at once:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:"# \u274c Slow - loop with individual operations\nfor interval in intervals:\n enriched = enrich_single_interval(interval)\n results.append(enriched)\n\n# \u2705 Fast - bulk processing\nresults = enrich_intervals_bulk(intervals)\n"})}),"\n",(0,a.jsx)(n.h3,{id:"async-best-practices",children:"Async Best Practices"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"1. Concurrent API calls:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:"# \u274c Sequential (slow)\nuser_data = await fetch_user_data()\nprice_data = await fetch_price_data()\n\n# \u2705 Concurrent (fast)\nuser_data, price_data = await asyncio.gather(\n fetch_user_data(),\n fetch_price_data()\n)\n"})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"2. Don't block event loop:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:"# \u274c Blocking\nresult = heavy_computation() # Blocks for seconds\n\n# \u2705 Non-blocking\nresult = await hass.async_add_executor_job(heavy_computation)\n"})}),"\n",(0,a.jsx)(n.h2,{id:"memory-management",children:"Memory Management"}),"\n",(0,a.jsx)(n.h3,{id:"avoid-memory-leaks",children:"Avoid Memory Leaks"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"1. Clear references:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'class Coordinator:\n async def async_shutdown(self):\n """Clean up resources."""\n self._listeners.clear()\n self._data = None\n self._cache = None\n'})}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"2. Use weak references for callbacks:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:"import weakref\n\nclass Manager:\n def __init__(self):\n self._callbacks: list[weakref.ref] = []\n\n def register(self, callback):\n self._callbacks.append(weakref.ref(callback))\n"})}),"\n",(0,a.jsx)(n.h3,{id:"efficient-data-structures",children:"Efficient Data Structures"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"Use appropriate types:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:"# \u274c List for lookups (O(n))\nif timestamp in timestamp_list:\n ...\n\n# \u2705 Set for lookups (O(1))\nif timestamp in timestamp_set:\n ...\n\n# \u274c List comprehension with filter\nresults = [x for x in items if condition(x)]\n\n# \u2705 Generator for large datasets\nresults = (x for x in items if condition(x))\n"})}),"\n",(0,a.jsx)(n.h2,{id:"coordinator-optimization",children:"Coordinator Optimization"}),"\n",(0,a.jsx)(n.h3,{id:"minimize-api-calls",children:"Minimize API Calls"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"Already implemented:"})}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Cache valid until midnight"}),"\n",(0,a.jsx)(n.li,{children:"User data cached for 24h"}),"\n",(0,a.jsx)(n.li,{children:"Only poll when tomorrow data expected"}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"Monitor API usage:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'_LOGGER.debug("API call: %s (cache_age=%s)",\n endpoint, cache_age)\n'})}),"\n",(0,a.jsx)(n.h3,{id:"smart-updates",children:"Smart Updates"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"Only update when needed:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'async def _async_update_data(self) -> dict:\n """Fetch data from API."""\n if self._is_cache_valid():\n _LOGGER.debug("Using cached data")\n return self.data\n\n # Fetch new data\n return await self._fetch_data()\n'})}),"\n",(0,a.jsx)(n.h2,{id:"database-impact",children:"Database Impact"}),"\n",(0,a.jsx)(n.h3,{id:"state-class-selection",children:"State Class Selection"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"Affects long-term statistics storage:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:"# \u274c MEASUREMENT for prices (stores every change)\nstate_class=SensorStateClass.MEASUREMENT # ~35K records/year\n\n# \u2705 None for prices (no long-term stats)\nstate_class=None # Only current state\n\n# \u2705 TOTAL for counters only\nstate_class=SensorStateClass.TOTAL # For cumulative values\n"})}),"\n",(0,a.jsx)(n.h3,{id:"attribute-size",children:"Attribute Size"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.strong,{children:"Keep attributes minimal:"})}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'# \u274c Large nested structures (KB per update)\nattributes = {\n "all_intervals": [...], # 384 intervals\n "full_history": [...], # Days of data\n}\n\n# \u2705 Essential data only (bytes per update)\nattributes = {\n "timestamp": "...",\n "rating_level": "...",\n "next_interval": "...",\n}\n'})}),"\n",(0,a.jsx)(n.h2,{id:"testing-performance",children:"Testing Performance"}),"\n",(0,a.jsx)(n.h3,{id:"benchmark-tests",children:"Benchmark Tests"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'import pytest\nimport time\n\n@pytest.mark.benchmark\ndef test_period_calculation_performance(coordinator):\n """Period calculation should complete in <100ms."""\n start = time.perf_counter()\n\n periods = calculate_periods(coordinator.data)\n\n duration = time.perf_counter() - start\n assert duration < 0.1, f"Too slow: {duration:.3f}s"\n'})}),"\n",(0,a.jsx)(n.h3,{id:"load-testing",children:"Load Testing"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'@pytest.mark.integration\nasync def test_multiple_homes_performance(hass):\n """Test with 10 homes."""\n coordinators = []\n for i in range(10):\n coordinator = create_coordinator(hass, home_id=f"home_{i}")\n await coordinator.async_refresh()\n coordinators.append(coordinator)\n\n # Verify memory usage\n # Verify update times\n'})}),"\n",(0,a.jsx)(n.h2,{id:"monitoring-in-production",children:"Monitoring in Production"}),"\n",(0,a.jsx)(n.h3,{id:"log-performance-metrics",children:"Log Performance Metrics"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'@timing\nasync def _async_update_data(self) -> dict:\n """Fetch data with timing."""\n result = await self._fetch_data()\n _LOGGER.info("Update completed in %.2fs", timing_duration)\n return result\n'})}),"\n",(0,a.jsx)(n.h3,{id:"memory-tracking",children:"Memory Tracking"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-python",children:'import psutil\nimport os\n\nprocess = psutil.Process(os.getpid())\nmemory_mb = process.memory_info().rss / 1024**2\n_LOGGER.debug("Current memory usage: %.2f MB", memory_mb)\n'})}),"\n",(0,a.jsx)(n.hr,{}),"\n",(0,a.jsxs)(n.p,{children:["\ud83d\udca1 ",(0,a.jsx)(n.strong,{children:"Related:"})]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/hass.tibber_prices/developer/caching-strategy",children:"Caching Strategy"})," - Cache layers"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/hass.tibber_prices/developer/architecture",children:"Architecture"})," - System design"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/hass.tibber_prices/developer/debugging",children:"Debugging"})," - Profiling tools"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/fbe93038.1cf68ed0.js b/developer/assets/js/fbe93038.1cf68ed0.js new file mode 100644 index 0000000..c5fc658 --- /dev/null +++ b/developer/assets/js/fbe93038.1cf68ed0.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[1133],{3504:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"testing","title":"Testing","description":"Note: This guide is under construction.","source":"@site/docs/testing.md","sourceDirName":".","slug":"/testing","permalink":"/hass.tibber_prices/developer/testing","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/developer/docs/testing.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Release Notes Generation","permalink":"/hass.tibber_prices/developer/release-management"}}');var t=s(4848),l=s(8453);const r={},a="Testing",o={},d=[{value:"Integration Validation",id:"integration-validation",level:2},{value:"Running Tests",id:"running-tests",level:2},{value:"Manual Testing",id:"manual-testing",level:2},{value:"Test Guidelines",id:"test-guidelines",level:2}];function c(e){const n={blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"testing",children:"Testing"})}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," This guide is under construction."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"integration-validation",children:"Integration Validation"}),"\n",(0,t.jsx)(n.p,{children:"Before running tests or committing changes, validate the integration structure:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Run local validation (JSON syntax, Python syntax, required files)\n./scripts/release/hassfest\n"})}),"\n",(0,t.jsx)(n.p,{children:"This lightweight script checks:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\u2713 ",(0,t.jsx)(n.code,{children:"config_flow.py"})," exists"]}),"\n",(0,t.jsxs)(n.li,{children:["\u2713 ",(0,t.jsx)(n.code,{children:"manifest.json"})," is valid JSON with required fields"]}),"\n",(0,t.jsx)(n.li,{children:"\u2713 Translation files have valid JSON syntax"}),"\n",(0,t.jsx)(n.li,{children:"\u2713 All Python files compile without syntax errors"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," Full hassfest validation runs in GitHub Actions on push."]}),"\n",(0,t.jsx)(n.h2,{id:"running-tests",children:"Running Tests"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Run all tests\npytest tests/\n\n# Run specific test file\npytest tests/test_coordinator.py\n\n# Run with coverage\npytest --cov=custom_components.tibber_prices tests/\n"})}),"\n",(0,t.jsx)(n.h2,{id:"manual-testing",children:"Manual Testing"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"# Start development environment\n./scripts/develop\n"})}),"\n",(0,t.jsx)(n.p,{children:"Then test in Home Assistant UI:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Configuration flow"}),"\n",(0,t.jsx)(n.li,{children:"Sensor states and attributes"}),"\n",(0,t.jsx)(n.li,{children:"Services"}),"\n",(0,t.jsx)(n.li,{children:"Translation strings"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"test-guidelines",children:"Test Guidelines"}),"\n",(0,t.jsx)(n.p,{children:"Coming soon..."})]})}function h(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/developer/assets/js/main.5eb4cf38.js b/developer/assets/js/main.5eb4cf38.js new file mode 100644 index 0000000..52c0b64 --- /dev/null +++ b/developer/assets/js/main.5eb4cf38.js @@ -0,0 +1,2 @@ +/*! For license information please see main.5eb4cf38.js.LICENSE.txt */ +(globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[]).push([[8792],{83:()=>{!function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism)},115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!==s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!==s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!==s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!==s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},119:(e,t,n)=>{"use strict";n.r(t)},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t,...e(t.cause)];return[t]}},311:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw s.framesToPop=1,s}}},440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;const r=n(1635);var a=n(2983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(2566);var i=n(253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},545:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>W});var r=n(6540),a=n(5556),o=n.n(a),i=n(115),l=n.n(i),s=n(311),u=n.n(s),c=n(2833),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map(function(e){return g[e]}),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},S=Object.keys(k).reduce(function(e,t){return e[k[t]]=t,e},{}),x=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=x(e,g.TITLE),n=x(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var r=x(e,"defaultTitle");return t||r||void 0},_=function(e){return x(e,"onChangeClientState")||function(){}},A=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return f({},e,t)},{})},C=function(e,t){return t.filter(function(e){return void 0!==e[g.BASE]}).map(function(e){return e[g.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t},[])},T=function(e,t,n){var r={};return n.filter(function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var a={};n.filter(function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)}).reverse().forEach(function(t){return e.push(t)});for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e},[]).reverse()},N=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},O=function(e,t){return Array.isArray(e)?e.reduce(function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e},{priority:[],default:[]}):{default:e}},j=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},L=[g.NOSCRIPT,g.SCRIPT,g.STYLE],R=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[k[n]||n]=e[n],t},t)},F=function(e,t){return t.map(function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach(function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),r.createElement(e,o)})},M=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=D(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+R(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+R(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var a=Object.keys(r).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,t){var a=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+a:a},""),o=r.innerHTML||r.cssText||"",i=-1===L.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")},"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=O(e.metaTags,v),o=O(t,y),i=O(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return M(g.META,a.priority,r)+" "+M(g.LINK,o.priority,r)+" "+M(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=h.priorityMethods,c=h.linkTags,d=h.metaTags,f=h.scriptTags}return{priority:p,base:M(g.BASE,t,r),bodyAttributes:M("bodyAttributes",n,r),htmlAttributes:M("htmlAttributes",a,r),link:M(g.LINK,c,r),meta:M(g.META,d,r),noscript:M(g.NOSCRIPT,o,r),script:M(g.SCRIPT,f,r),style:M(g.STYLE,i,r),title:M(g.TITLE,{title:s,titleAttributes:u},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,W=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);W.canUseDOM=V,W.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var G=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach(function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some(function(e,t){return n=t,r.isEqualNode(e)})?o.splice(n,1):i.push(r)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return r.appendChild(e)}),{oldTags:o,newTags:i}},q=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Y=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;q(g.BODY,e.bodyAttributes),q(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),q(g.TITLE,t)}(c,d);var f={baseTag:G(g.BASE,n),linkTags:G(g.LINK,a),metaTags:G(g.META,o),noscriptTags:G(g.NOSCRIPT,i),scriptTags:G(g.SCRIPT,s),styleTags:G(g.STYLE,u)},p={},h={};Object.keys(f).forEach(function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(h[e]=f[e].oldTags)}),t&&t(),l(e,p,h)},K=null,Q=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map(function(e){var t=f({},e.props);return delete t.context,t}),{baseTag:C(["href"],e),bodyAttributes:A("bodyAttributes",e),defer:x(e,"defer"),encode:x(e,"encodeSpecialCharacters"),htmlAttributes:A("htmlAttributes",e),linkTags:T(g.LINK,["rel","href"],e),metaTags:T(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:T(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:T(g.SCRIPT,["src","innerHTML"],e),styleTags:T(g.STYLE,["cssText"],e),title:E(e),titleAttributes:A("titleAttributes",e),prioritizeSeoTags:N(e,"prioritizeSeoTags")});W.canUseDOM?(t=o,K&&cancelAnimationFrame(K),t.defer?K=requestAnimationFrame(function(){Y(t,function(){K=null})}):(Y(t),K=null)):z&&(a=z(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Q.propTypes={context:H.isRequired},Q.displayName="HelmetDispatcher";var X=["children"],Z=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(j(this.props,"helmetData"),j(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach(function(t){var r;n=f({},n,((r={})[t]=e[t],r))}),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,function(e){if(e&&e.props){var r=e.props,o=r.children,i=m(r,X),l=Object.keys(i).reduce(function(e,t){return e[S[t]||t]=i[t],e},{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,Z),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(Q,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,function(e){return r.createElement(Q,f({},a,{context:e}))})},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},609:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(6540),a=n(9532),o=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s({children:e,name:t,items:n}){const a=(0,r.useMemo)(()=>t&&n?{name:t,items:n}:null,[t,n]);return(0,o.jsx)(l.Provider,{value:a,children:e})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u});n(6540);const r=JSON.parse('{"N":"localStorage","M":""}'),a=r.N;function o({key:e,oldValue:t,newValue:n,storage:r}){if(t===n)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,e,t,n,window.location.href,r),window.dispatchEvent(a)}function i(e=a){if("undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const a=i(t?.persistence);return null===a?s:{get:()=>{try{return a.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},689:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=a,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach(function(t){var n=e.filter(function(e){return e.contains(t)}).length>0;-1!==e.indexOf(t)||n||e.push(t)}),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var a=e.contentWindow;if(r=a.document,!a||!r)throw new Error("iframe inaccessible")}catch(o){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,a=!1,o=null,i=function i(){if(!a){a=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),o=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,function(){return!0},function(e){r++,n.waitForIframes(e.querySelector("html"),function(){--r||t()})},function(e){e||t()})}},{key:"forEachIframe",value:function(t,n,r){var a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var u=function(){--l<=0&&o(s)};l||u(),i.forEach(function(t){e.matches(t,a.exclude)?u():a.onIframeReady(t,function(e){n(t)&&(s++,r(e)),u()},u)})}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var a=!1,o=!1;return r.forEach(function(e,t){e.val===n&&(a=t,o=e.handled)}),this.compareNodeIframe(e,t,n)?(!1!==a||o?!1===a||o||(r[a].handled=!0):r.push({val:n,handled:!0}),!0):(!1===a&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var a=this;e.forEach(function(e){e.handled||a.getIframeContents(e.val,function(e){a.createInstanceOnIframe(e).forEachNode(t,n,r)})})}},{key:"iterateThroughNodes",value:function(e,t,n,r,a){for(var o=this,i=this.createIterator(t,e,r),l=[],s=[],u=void 0,c=void 0,d=function(){var e=o.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,function(e){return o.checkIframeFilter(u,c,e,l)},function(t){o.createInstanceOnIframe(t).forEachNode(e,function(e){return s.push(e)},r)}),s.push(u);s.forEach(function(e){n(e)}),this.iframes&&this.handleOpenIframes(l,e,n,r),a()}},{key:"forEachNode",value:function(e,t,n){var r=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),i=o.length;i||a(),o.forEach(function(o){var l=function(){r.iterateThroughNodes(e,o,t,n,function(){--i<=0&&a()})};r.iframes?r.waitForIframes(o,l):l()})}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var a=!1;return n.every(function(t){return!r.call(e,t)||(a=!0,!1)}),a}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var a in t)if(t.hasOwnProperty(a)){var o=t[a],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,function(e){return"\\"===e.charAt(0)?"?":"\x01"})).replace(/(?:\\)*\*/g,function(e){return"\\"===e.charAt(0)?"*":"\x02"})}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"})}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach(function(a){n.every(function(n){if(-1!==n.indexOf(a)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0})}),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,a="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,i="";switch(o.forEach(function(e){i+="|"+t.escapeStr(e)}),a){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach(function(e){t.opt.separateWordSearch?e.split(" ").forEach(function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)}):e.trim()&&-1===n.indexOf(e)&&n.push(e)}),{keywords:n.sort(function(e,t){return t.length-e.length}),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort(function(e,t){return e.start-t.start}).forEach(function(e){var a=t.callNoMatchOnInvalidRanges(e,r),o=a.start,i=a.end;a.valid&&(e.start=o,e.length=i-o,n.push(e),r=i)}),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,a=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?a=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:a}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,a=!0,o=n.length,i=t-o,l=parseInt(e.start,10)-i;return(r=(l=l>o?o:l)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),l<0||r-l<0||l>o||r>o?(a=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:a}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})},function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){e({value:n,nodes:r})})}},{key:"matchesExclude",value:function(e){return a.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",a=e.splitText(t),o=a.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=a.textContent,a.parentNode.replaceChild(i,a),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,a){var o=this;e.nodes.every(function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),f=e.value.substr(c+i.start);if(i.node=o.wrapRangeInTextNode(i.node,u,c),e.value=d+f,e.nodes.forEach(function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=c),e.nodes[n].end-=c)}),n-=c,a(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0})}},{key:"wrapMatches",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes(function(t){t.nodes.forEach(function(t){t=t.node;for(var a=void 0;null!==(a=e.exec(t.textContent))&&""!==a[i];)if(n(a[i],t)){var l=a.index;if(0!==i)for(var s=1;s<i;s++)l+=a[s].length;t=o.wrapRangeInTextNode(t,l,l+a[i].length),r(t.previousSibling),e.lastIndex=0}}),a()})}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes(function(t){for(var l=void 0;null!==(l=e.exec(t.value))&&""!==l[i];){var s=l.index;if(0!==i)for(var u=1;u<i;u++)s+=l[u].length;var c=s+l[i].length;o.wrapRangeInMappedTextNode(t,s,c,function(e){return n(l[i],e)},function(t,n){e.lastIndex=n,r(t)})}a()})}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var a=this;this.getTextNodes(function(o){var i=o.value.length;e.forEach(function(e,r){var l=a.checkWhitespaceRanges(e,i,o.value),s=l.start,u=l.end;l.valid&&a.wrapRangeInMappedTextNode(o,s,u,function(n){return t(n,e,o.value.substring(s,u),r)},function(t){n(t,e)})}),r()})}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,a="wrapMatches",o=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,function(e,t){return n.opt.filter(t,e,r)},o,function(){0===r&&n.opt.noMatch(e),n.opt.done(r)})}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,a="wrapMatches",o=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=o.keywords,l=o.length,s=this.opt.caseSensitive?"":"i",u=function e(t){var o=new RegExp(n.createRegExp(t),"gm"+s),u=0;n.log('Searching with expression "'+o+'"'),n[a](o,1,function(e,a){return n.opt.filter(a,t,r,u)},function(e){u++,r++,n.opt.each(e)},function(){0===u&&n.opt.noMatch(t),i[l-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])})};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),0===l?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,function(e,t,r,a){return n.opt.filter(e,t,r,a)},function(e,t){r++,n.opt.each(e,t)},function(){n.opt.done(r)})):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,function(e){t.unwrapMatches(e)},function(e){var r=a.matches(e,n),o=t.matchesExclude(e);return!r||o?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new a(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),o}();function i(e){var t=this,n=new o(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},961:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(6221)},1043:(e,t,n)=>{"use strict";n.r(t)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(4164),a=n(1312),o=n(3535),i=n(8774),l=n(3427),s=n(4848);function u({as:e,id:t,...n}){const u=(0,l.A)(),c=(0,o.v)(t);if("h1"===e||!t)return(0,s.jsx)(e,{...n,id:void 0});u.collectAnchor(t);const d=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof n.children?n.children:t});return(0,s.jsxs)(e,{...n,className:(0,r.A)("anchor",c,n.className),id:t,children:[n.children,(0,s.jsx)(i.A,{className:"hash-link",to:`#${t}`,"aria-label":d,title:d,translate:"no",children:"\u200b"})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(6540),a=n(4164),o=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function u({className:e,children:t}){const n=(0,o.A)(),{colorMode:u}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(n?"dark"===u?["dark"]:["light"]:["light","dark"]).map(n=>{const o=t({theme:n,className:(0,a.A)(e,l.themedComponent,l[`themedComponent--${n}`])});return(0,s.jsx)(r.Fragment,{children:o},n)})})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:({theme:e,className:n})=>(0,s.jsx)("img",{src:t[e],alt:r,className:n,...a})})}},1247:(e,t,n)=>{"use strict";var r=n(9982),a=n(6540),o=n(961);function i(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function l(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function s(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function u(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function c(e){if(31===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function d(e){if(s(e)!==e)throw Error(i(188))}function f(e){var t=e.tag;if(5===t||26===t||27===t||6===t)return e;for(e=e.child;null!==e;){if(null!==(t=f(e)))return t;e=e.sibling}return null}var p=Object.assign,h=Symbol.for("react.element"),m=Symbol.for("react.transitional.element"),g=Symbol.for("react.portal"),y=Symbol.for("react.fragment"),b=Symbol.for("react.strict_mode"),v=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),k=Symbol.for("react.context"),S=Symbol.for("react.forward_ref"),x=Symbol.for("react.suspense"),E=Symbol.for("react.suspense_list"),_=Symbol.for("react.memo"),A=Symbol.for("react.lazy");Symbol.for("react.scope");var C=Symbol.for("react.activity");Symbol.for("react.legacy_hidden"),Symbol.for("react.tracing_marker");var T=Symbol.for("react.memo_cache_sentinel");Symbol.for("react.view_transition");var N=Symbol.iterator;function P(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=N&&e[N]||e["@@iterator"])?e:null}var O=Symbol.for("react.client.reference");function j(e){if(null==e)return null;if("function"==typeof e)return e.$$typeof===O?null:e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case y:return"Fragment";case v:return"Profiler";case b:return"StrictMode";case x:return"Suspense";case E:return"SuspenseList";case C:return"Activity"}if("object"==typeof e)switch(e.$$typeof){case g:return"Portal";case k:return e.displayName||"Context";case w:return(e._context.displayName||"Context")+".Consumer";case S:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case _:return null!==(t=e.displayName||null)?t:j(e.type)||"Memo";case A:t=e._payload,e=e._init;try{return j(e(t))}catch(n){}}return null}var L=Array.isArray,R=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,I=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,D={pending:!1,data:null,method:null,action:null},F=[],M=-1;function z(e){return{current:e}}function B(e){0>M||(e.current=F[M],F[M]=null,M--)}function $(e,t){M++,F[M]=e.current,e.current=t}var U,H,V=z(null),W=z(null),G=z(null),q=z(null);function Y(e,t){switch($(G,t),$(W,e),$(V,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?yd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=bd(t=yd(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}B(V),$(V,e)}function K(){B(V),B(W),B(G)}function Q(e){null!==e.memoizedState&&$(q,e);var t=V.current,n=bd(t,e.type);t!==n&&($(W,e),$(V,n))}function X(e){W.current===e&&(B(V),B(W)),q.current===e&&(B(q),df._currentValue=D)}function Z(e){if(void 0===U)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);U=t&&t[1]||"",H=-1<n.stack.indexOf("\n at")?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return"\n"+U+e+H}var J=!1;function ee(e,t){if(!e||J)return"";J=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(n,[])}catch(a){var r=a}Reflect.construct(e,[],n)}else{try{n.call()}catch(o){r=o}e.call(n.prototype)}}else{try{throw Error()}catch(i){r=i}(n=e())&&"function"==typeof n.catch&&n.catch(function(){})}}catch(l){if(l&&r&&"string"==typeof l.stack)return[l.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var a=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,"name");a&&a.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var o=r.DetermineComponentFrameRoot(),i=o[0],l=o[1];if(i&&l){var s=i.split("\n"),u=l.split("\n");for(a=r=0;r<s.length&&!s[r].includes("DetermineComponentFrameRoot");)r++;for(;a<u.length&&!u[a].includes("DetermineComponentFrameRoot");)a++;if(r===s.length||a===u.length)for(r=s.length-1,a=u.length-1;1<=r&&0<=a&&s[r]!==u[a];)a--;for(;1<=r&&0<=a;r--,a--)if(s[r]!==u[a]){if(1!==r||1!==a)do{if(r--,0>--a||s[r]!==u[a]){var c="\n"+s[r].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}}while(1<=r&&0<=a);break}}}finally{J=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Z(n):""}function te(e,t){switch(e.tag){case 26:case 27:case 5:return Z(e.type);case 16:return Z("Lazy");case 13:return e.child!==t&&null!==t?Z("Suspense Fallback"):Z("Suspense");case 19:return Z("SuspenseList");case 0:case 15:return ee(e.type,!1);case 11:return ee(e.type.render,!1);case 1:return ee(e.type,!0);case 31:return Z("Activity");default:return""}}function ne(e){try{var t="",n=null;do{t+=te(e,n),n=e,e=e.return}while(e);return t}catch(r){return"\nError generating stack: "+r.message+"\n"+r.stack}}var re=Object.prototype.hasOwnProperty,ae=r.unstable_scheduleCallback,oe=r.unstable_cancelCallback,ie=r.unstable_shouldYield,le=r.unstable_requestPaint,se=r.unstable_now,ue=r.unstable_getCurrentPriorityLevel,ce=r.unstable_ImmediatePriority,de=r.unstable_UserBlockingPriority,fe=r.unstable_NormalPriority,pe=r.unstable_LowPriority,he=r.unstable_IdlePriority,me=r.log,ge=r.unstable_setDisableYieldValue,ye=null,be=null;function ve(e){if("function"==typeof me&&ge(e),be&&"function"==typeof be.setStrictMode)try{be.setStrictMode(ye,e)}catch(t){}}var we=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(ke(e)/Se|0)|0},ke=Math.log,Se=Math.LN2;var xe=256,Ee=262144,_e=4194304;function Ae(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ce(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var a=0,o=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var l=134217727&r;return 0!==l?0!==(r=l&~o)?a=Ae(r):0!==(i&=l)?a=Ae(i):n||0!==(n=l&~e)&&(a=Ae(n)):0!==(l=r&~o)?a=Ae(l):0!==i?a=Ae(i):n||0!==(n=r&~e)&&(a=Ae(n)),0===a?0:0!==t&&t!==a&&0===(t&o)&&((o=a&-a)>=(n=t&-t)||32===o&&4194048&n)?t:a}function Te(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function Ne(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function Pe(){var e=_e;return!(62914560&(_e<<=1))&&(_e=4194304),e}function Oe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function je(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Le(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-we(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|261930&n}function Re(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-we(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}function Ie(e,t){var n=t&-t;return 0!==((n=42&n?1:De(n))&(e.suspendedLanes|t))?0:n}function De(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Fe(e){return 2<(e&=-e)?8<e?134217727&e?32:268435456:8:2}function Me(){var e=I.p;return 0!==e?e:void 0===(e=window.event)?32:Cf(e.type)}function ze(e,t){var n=I.p;try{return I.p=e,t()}finally{I.p=n}}var Be=Math.random().toString(36).slice(2),$e="__reactFiber$"+Be,Ue="__reactProps$"+Be,He="__reactContainer$"+Be,Ve="__reactEvents$"+Be,We="__reactListeners$"+Be,Ge="__reactHandles$"+Be,qe="__reactResources$"+Be,Ye="__reactMarker$"+Be;function Ke(e){delete e[$e],delete e[Ue],delete e[Ve],delete e[We],delete e[Ge]}function Qe(e){var t=e[$e];if(t)return t;for(var n=e.parentNode;n;){if(t=n[He]||n[$e]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Dd(e);null!==e;){if(n=e[$e])return n;e=Dd(e)}return t}n=(e=n).parentNode}return null}function Xe(e){if(e=e[$e]||e[He]){var t=e.tag;if(5===t||6===t||13===t||31===t||26===t||27===t||3===t)return e}return null}function Ze(e){var t=e.tag;if(5===t||26===t||27===t||6===t)return e.stateNode;throw Error(i(33))}function Je(e){var t=e[qe];return t||(t=e[qe]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function et(e){e[Ye]=!0}var tt=new Set,nt={};function rt(e,t){at(e,t),at(e+"Capture",t)}function at(e,t){for(nt[e]=t,e=0;e<t.length;e++)tt.add(t[e])}var ot=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),it={},lt={};function st(e,t,n){if(a=t,re.call(lt,a)||!re.call(it,a)&&(ot.test(a)?lt[a]=!0:(it[a]=!0,0)))if(null===n)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":return void e.removeAttribute(t);case"boolean":var r=t.toLowerCase().slice(0,5);if("data-"!==r&&"aria-"!==r)return void e.removeAttribute(t)}e.setAttribute(t,""+n)}var a}function ut(e,t,n){if(null===n)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":return void e.removeAttribute(t)}e.setAttribute(t,""+n)}}function ct(e,t,n,r){if(null===r)e.removeAttribute(n);else{switch(typeof r){case"undefined":case"function":case"symbol":case"boolean":return void e.removeAttribute(n)}e.setAttributeNS(t,n,""+r)}}function dt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function ft(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function pt(e){if(!e._valueTracker){var t=ft(e)?"checked":"value";e._valueTracker=function(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&void 0!==r&&"function"==typeof r.get&&"function"==typeof r.set){var a=r.get,o=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){n=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e,t,""+e[t])}}function ht(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ft(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function mt(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var gt=/[\n"\\]/g;function yt(e){return e.replace(gt,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function bt(e,t,n,r,a,o,i,l){e.name="",null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.type=i:e.removeAttribute("type"),null!=t?"number"===i?(0===t&&""===e.value||e.value!=t)&&(e.value=""+dt(t)):e.value!==""+dt(t)&&(e.value=""+dt(t)):"submit"!==i&&"reset"!==i||e.removeAttribute("value"),null!=t?wt(e,i,dt(t)):null!=n?wt(e,i,dt(n)):null!=r&&e.removeAttribute("value"),null==a&&null!=o&&(e.defaultChecked=!!o),null!=a&&(e.checked=a&&"function"!=typeof a&&"symbol"!=typeof a),null!=l&&"function"!=typeof l&&"symbol"!=typeof l&&"boolean"!=typeof l?e.name=""+dt(l):e.removeAttribute("name")}function vt(e,t,n,r,a,o,i,l){if(null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.type=o),null!=t||null!=n){if(("submit"===o||"reset"===o)&&null==t)return void pt(e);n=null!=n?""+dt(n):"",t=null!=t?""+dt(t):n,l||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:a)&&"symbol"!=typeof r&&!!r,e.checked=l?e.checked:!!r,e.defaultChecked=!!r,null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i&&(e.name=i),pt(e)}function wt(e,t,n){"number"===t&&mt(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function kt(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+dt(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function St(e,t,n){null==t||((t=""+dt(t))!==e.value&&(e.value=t),null!=n)?e.defaultValue=null!=n?""+dt(n):"":e.defaultValue!==t&&(e.defaultValue=t)}function xt(e,t,n,r){if(null==t){if(null!=r){if(null!=n)throw Error(i(92));if(L(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}null==n&&(n=""),t=n}n=dt(t),e.defaultValue=n,(r=e.textContent)===n&&""!==r&&null!==r&&(e.value=r),pt(e)}function Et(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var _t=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function At(e,t,n){var r=0===t.indexOf("--");null==n||"boolean"==typeof n||""===n?r?e.setProperty(t,""):"float"===t?e.cssFloat="":e[t]="":r?e.setProperty(t,n):"number"!=typeof n||0===n||_t.has(t)?"float"===t?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function Ct(e,t,n){if(null!=t&&"object"!=typeof t)throw Error(i(62));if(e=e.style,null!=n){for(var r in n)!n.hasOwnProperty(r)||null!=t&&t.hasOwnProperty(r)||(0===r.indexOf("--")?e.setProperty(r,""):"float"===r?e.cssFloat="":e[r]="");for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&At(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&At(e,o,t[o])}function Tt(e){if(-1===e.indexOf("-"))return!1;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}}var Nt=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Pt=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Ot(e){return Pt.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function jt(){}var Lt=null;function Rt(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var It=null,Dt=null;function Ft(e){var t=Xe(e);if(t&&(e=t.stateNode)){var n=e[Ue]||null;e:switch(e=t.stateNode,t.type){case"input":if(bt(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+yt(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[Ue]||null;if(!a)throw Error(i(90));bt(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)(r=n[t]).form===e.form&&ht(r)}break e;case"textarea":St(e,n.value,n.defaultValue);break e;case"select":null!=(t=n.value)&&kt(e,!!n.multiple,t,!1)}}}var Mt=!1;function zt(e,t,n){if(Mt)return e(t,n);Mt=!0;try{return e(t)}finally{if(Mt=!1,(null!==It||null!==Dt)&&(Ju(),It&&(t=It,e=Dt,Dt=It=null,Ft(t),e)))for(t=0;t<e.length;t++)Ft(e[t])}}function Bt(e,t){var n=e.stateNode;if(null===n)return null;var r=n[Ue]||null;if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var $t=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),Ut=!1;if($t)try{var Ht={};Object.defineProperty(Ht,"passive",{get:function(){Ut=!0}}),window.addEventListener("test",Ht,Ht),window.removeEventListener("test",Ht,Ht)}catch(Zf){Ut=!1}var Vt=null,Wt=null,Gt=null;function qt(){if(Gt)return Gt;var e,t,n=Wt,r=n.length,a="value"in Vt?Vt.value:Vt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Gt=a.slice(e,1<t?1-t:void 0)}function Yt(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function Kt(){return!0}function Qt(){return!1}function Xt(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?Kt:Qt,this.isPropagationStopped=Qt,this}return p(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Kt)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Kt)},persist:function(){},isPersistent:Kt}),t}var Zt,Jt,en,tn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},nn=Xt(tn),rn=p({},tn,{view:0,detail:0}),an=Xt(rn),on=p({},rn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:yn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==en&&(en&&"mousemove"===e.type?(Zt=e.screenX-en.screenX,Jt=e.screenY-en.screenY):Jt=Zt=0,en=e),Zt)},movementY:function(e){return"movementY"in e?e.movementY:Jt}}),ln=Xt(on),sn=Xt(p({},on,{dataTransfer:0})),un=Xt(p({},rn,{relatedTarget:0})),cn=Xt(p({},tn,{animationName:0,elapsedTime:0,pseudoElement:0})),dn=Xt(p({},tn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}})),fn=Xt(p({},tn,{data:0})),pn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},hn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},mn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function gn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=mn[e])&&!!t[e]}function yn(){return gn}var bn=Xt(p({},rn,{key:function(e){if(e.key){var t=pn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=Yt(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?hn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:yn,charCode:function(e){return"keypress"===e.type?Yt(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?Yt(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}})),vn=Xt(p({},on,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),wn=Xt(p({},rn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:yn})),kn=Xt(p({},tn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Sn=Xt(p({},on,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),xn=Xt(p({},tn,{newState:0,oldState:0})),En=[9,13,27,32],_n=$t&&"CompositionEvent"in window,An=null;$t&&"documentMode"in document&&(An=document.documentMode);var Cn=$t&&"TextEvent"in window&&!An,Tn=$t&&(!_n||An&&8<An&&11>=An),Nn=String.fromCharCode(32),Pn=!1;function On(e,t){switch(e){case"keyup":return-1!==En.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function jn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Ln=!1;var Rn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function In(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Rn[e.type]:"textarea"===t}function Dn(e,t,n,r){It?Dt?Dt.push(r):Dt=[r]:It=r,0<(t=rd(t,"onChange")).length&&(n=new nn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Fn=null,Mn=null;function zn(e){Kc(e,0)}function Bn(e){if(ht(Ze(e)))return e}function $n(e,t){if("change"===e)return t}var Un=!1;if($t){var Hn;if($t){var Vn="oninput"in document;if(!Vn){var Wn=document.createElement("div");Wn.setAttribute("oninput","return;"),Vn="function"==typeof Wn.oninput}Hn=Vn}else Hn=!1;Un=Hn&&(!document.documentMode||9<document.documentMode)}function Gn(){Fn&&(Fn.detachEvent("onpropertychange",qn),Mn=Fn=null)}function qn(e){if("value"===e.propertyName&&Bn(Mn)){var t=[];Dn(t,Mn,e,Rt(e)),zt(zn,t)}}function Yn(e,t,n){"focusin"===e?(Gn(),Mn=n,(Fn=t).attachEvent("onpropertychange",qn)):"focusout"===e&&Gn()}function Kn(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Bn(Mn)}function Qn(e,t){if("click"===e)return Bn(t)}function Xn(e,t){if("input"===e||"change"===e)return Bn(t)}var Zn="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function Jn(e,t){if(Zn(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!re.call(t,a)||!Zn(e[a],t[a]))return!1}return!0}function er(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function tr(e,t){var n,r=er(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=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=er(r)}}function nr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?nr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function rr(e){for(var t=mt((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=mt((e=t.contentWindow).document)}return t}function ar(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var or=$t&&"documentMode"in document&&11>=document.documentMode,ir=null,lr=null,sr=null,ur=!1;function cr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;ur||null==ir||ir!==mt(r)||("selectionStart"in(r=ir)&&ar(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},sr&&Jn(sr,r)||(sr=r,0<(r=rd(lr,"onSelect")).length&&(t=new nn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=ir)))}function dr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var fr={animationend:dr("Animation","AnimationEnd"),animationiteration:dr("Animation","AnimationIteration"),animationstart:dr("Animation","AnimationStart"),transitionrun:dr("Transition","TransitionRun"),transitionstart:dr("Transition","TransitionStart"),transitioncancel:dr("Transition","TransitionCancel"),transitionend:dr("Transition","TransitionEnd")},pr={},hr={};function mr(e){if(pr[e])return pr[e];if(!fr[e])return e;var t,n=fr[e];for(t in n)if(n.hasOwnProperty(t)&&t in hr)return pr[e]=n[t];return e}$t&&(hr=document.createElement("div").style,"AnimationEvent"in window||(delete fr.animationend.animation,delete fr.animationiteration.animation,delete fr.animationstart.animation),"TransitionEvent"in window||delete fr.transitionend.transition);var gr=mr("animationend"),yr=mr("animationiteration"),br=mr("animationstart"),vr=mr("transitionrun"),wr=mr("transitionstart"),kr=mr("transitioncancel"),Sr=mr("transitionend"),xr=new Map,Er="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function _r(e,t){xr.set(e,t),rt(t,[e])}Er.push("scrollEnd");var Ar="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},Cr=[],Tr=0,Nr=0;function Pr(){for(var e=Tr,t=Nr=Tr=0;t<e;){var n=Cr[t];Cr[t++]=null;var r=Cr[t];Cr[t++]=null;var a=Cr[t];Cr[t++]=null;var o=Cr[t];if(Cr[t++]=null,null!==r&&null!==a){var i=r.pending;null===i?a.next=a:(a.next=i.next,i.next=a),r.pending=a}0!==o&&Rr(n,a,o)}}function Or(e,t,n,r){Cr[Tr++]=e,Cr[Tr++]=t,Cr[Tr++]=n,Cr[Tr++]=r,Nr|=r,e.lanes|=r,null!==(e=e.alternate)&&(e.lanes|=r)}function jr(e,t,n,r){return Or(e,t,n,r),Ir(e)}function Lr(e,t){return Or(e,null,null,t),Ir(e)}function Rr(e,t,n){e.lanes|=n;var r=e.alternate;null!==r&&(r.lanes|=n);for(var a=!1,o=e.return;null!==o;)o.childLanes|=n,null!==(r=o.alternate)&&(r.childLanes|=n),22===o.tag&&(null===(e=o.stateNode)||1&e._visibility||(a=!0)),e=o,o=o.return;return 3===e.tag?(o=e.stateNode,a&&null!==t&&(a=31-we(n),null===(r=(e=o.hiddenUpdates)[a])?e[a]=[t]:r.push(t),t.lane=536870912|n),o):null}function Ir(e){if(50<Vu)throw Vu=0,Wu=null,Error(i(185));for(var t=e.return;null!==t;)t=(e=t).return;return 3===e.tag?e.stateNode:null}var Dr={};function Fr(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mr(e,t,n,r){return new Fr(e,t,n,r)}function zr(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Br(e,t){var n=e.alternate;return null===n?((n=Mr(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=65011712&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function $r(e,t){e.flags&=65011714;var n=e.alternate;return null===n?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Ur(e,t,n,r,a,o){var l=0;if(r=e,"function"==typeof e)zr(e)&&(l=1);else if("string"==typeof e)l=function(e,t,n){if(1===n||null!=t.itemProp)return!1;switch(e){case"meta":case"title":return!0;case"style":if("string"!=typeof t.precedence||"string"!=typeof t.href||""===t.href)break;return!0;case"link":if("string"!=typeof t.rel||"string"!=typeof t.href||""===t.href||t.onLoad||t.onError)break;return"stylesheet"!==t.rel||(e=t.disabled,"string"==typeof t.precedence&&null==e);case"script":if(t.async&&"function"!=typeof t.async&&"symbol"!=typeof t.async&&!t.onLoad&&!t.onError&&t.src&&"string"==typeof t.src)return!0}return!1}(e,n,V.current)?26:"html"===e||"head"===e||"body"===e?27:5;else e:switch(e){case C:return(e=Mr(31,n,t,a)).elementType=C,e.lanes=o,e;case y:return Hr(n.children,a,o,t);case b:l=8,a|=24;break;case v:return(e=Mr(12,n,t,2|a)).elementType=v,e.lanes=o,e;case x:return(e=Mr(13,n,t,a)).elementType=x,e.lanes=o,e;case E:return(e=Mr(19,n,t,a)).elementType=E,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case k:l=10;break e;case w:l=9;break e;case S:l=11;break e;case _:l=14;break e;case A:l=16,r=null;break e}l=29,n=Error(i(130,null===e?"null":typeof e,"")),r=null}return(t=Mr(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Hr(e,t,n,r){return(e=Mr(7,e,r,t)).lanes=n,e}function Vr(e,t,n){return(e=Mr(6,e,null,t)).lanes=n,e}function Wr(e){var t=Mr(18,null,null,0);return t.stateNode=e,t}function Gr(e,t,n){return(t=Mr(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var qr=new WeakMap;function Yr(e,t){if("object"==typeof e&&null!==e){var n=qr.get(e);return void 0!==n?n:(t={value:e,source:t,stack:ne(t)},qr.set(e,t),t)}return{value:e,source:t,stack:ne(t)}}var Kr=[],Qr=0,Xr=null,Zr=0,Jr=[],ea=0,ta=null,na=1,ra="";function aa(e,t){Kr[Qr++]=Zr,Kr[Qr++]=Xr,Xr=e,Zr=t}function oa(e,t,n){Jr[ea++]=na,Jr[ea++]=ra,Jr[ea++]=ta,ta=e;var r=na;e=ra;var a=32-we(r)-1;r&=~(1<<a),n+=1;var o=32-we(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,na=1<<32-we(t)+a|n<<a|r,ra=o+e}else na=1<<o|n<<a|r,ra=e}function ia(e){null!==e.return&&(aa(e,1),oa(e,1,0))}function la(e){for(;e===Xr;)Xr=Kr[--Qr],Kr[Qr]=null,Zr=Kr[--Qr],Kr[Qr]=null;for(;e===ta;)ta=Jr[--ea],Jr[ea]=null,ra=Jr[--ea],Jr[ea]=null,na=Jr[--ea],Jr[ea]=null}function sa(e,t){Jr[ea++]=na,Jr[ea++]=ra,Jr[ea++]=ta,na=t.id,ra=t.overflow,ta=e}var ua=null,ca=null,da=!1,fa=null,pa=!1,ha=Error(i(519));function ma(e){throw ka(Yr(Error(i(418,1<arguments.length&&void 0!==arguments[1]&&arguments[1]?"text":"HTML","")),e)),ha}function ga(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[$e]=e,t[Ue]=r,n){case"dialog":Qc("cancel",t),Qc("close",t);break;case"iframe":case"object":case"embed":Qc("load",t);break;case"video":case"audio":for(n=0;n<qc.length;n++)Qc(qc[n],t);break;case"source":Qc("error",t);break;case"img":case"image":case"link":Qc("error",t),Qc("load",t);break;case"details":Qc("toggle",t);break;case"input":Qc("invalid",t),vt(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case"select":Qc("invalid",t);break;case"textarea":Qc("invalid",t),xt(t,r.value,r.defaultValue,r.children)}"string"!=typeof(n=r.children)&&"number"!=typeof n&&"bigint"!=typeof n||t.textContent===""+n||!0===r.suppressHydrationWarning||ud(t.textContent,n)?(null!=r.popover&&(Qc("beforetoggle",t),Qc("toggle",t)),null!=r.onScroll&&Qc("scroll",t),null!=r.onScrollEnd&&Qc("scrollend",t),null!=r.onClick&&(t.onclick=jt),t=!0):t=!1,t||ma(e,!0)}function ya(e){for(ua=e.return;ua;)switch(ua.tag){case 5:case 31:case 13:return void(pa=!1);case 27:case 3:return void(pa=!0);default:ua=ua.return}}function ba(e){if(e!==ua)return!1;if(!da)return ya(e),da=!0,!1;var t,n=e.tag;if((t=3!==n&&27!==n)&&((t=5===n)&&(t=!("form"!==(t=e.type)&&"button"!==t)||vd(e.type,e.memoizedProps)),t=!t),t&&ca&&ma(e),ya(e),13===n){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));ca=Id(e)}else if(31===n){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));ca=Id(e)}else 27===n?(n=ca,Ad(e.type)?(e=Rd,Rd=null,ca=e):ca=n):ca=ua?Ld(e.stateNode.nextSibling):null;return!0}function va(){ca=ua=null,da=!1}function wa(){var e=fa;return null!==e&&(null===Pu?Pu=e:Pu.push.apply(Pu,e),fa=null),e}function ka(e){null===fa?fa=[e]:fa.push(e)}var Sa=z(null),xa=null,Ea=null;function _a(e,t,n){$(Sa,t._currentValue),t._currentValue=n}function Aa(e){e._currentValue=Sa.current,B(Sa)}function Ca(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Ta(e,t,n,r){var a=e.child;for(null!==a&&(a.return=e);null!==a;){var o=a.dependencies;if(null!==o){var l=a.child;o=o.firstContext;e:for(;null!==o;){var s=o;o=a;for(var u=0;u<t.length;u++)if(s.context===t[u]){o.lanes|=n,null!==(s=o.alternate)&&(s.lanes|=n),Ca(o.return,n,e),r||(l=null);break e}o=s.next}}else if(18===a.tag){if(null===(l=a.return))throw Error(i(341));l.lanes|=n,null!==(o=l.alternate)&&(o.lanes|=n),Ca(l,n,e),l=null}else l=a.child;if(null!==l)l.return=a;else for(l=a;null!==l;){if(l===e){l=null;break}if(null!==(a=l.sibling)){a.return=l.return,l=a;break}l=l.return}a=l}}function Na(e,t,n,r){e=null;for(var a=t,o=!1;null!==a;){if(!o)if(524288&a.flags)o=!0;else if(262144&a.flags)break;if(10===a.tag){var l=a.alternate;if(null===l)throw Error(i(387));if(null!==(l=l.memoizedProps)){var s=a.type;Zn(a.pendingProps.value,l.value)||(null!==e?e.push(s):e=[s])}}else if(a===q.current){if(null===(l=a.alternate))throw Error(i(387));l.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(null!==e?e.push(df):e=[df])}a=a.return}null!==e&&Ta(t,e,n,r),t.flags|=262144}function Pa(e){for(e=e.firstContext;null!==e;){if(!Zn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Oa(e){xa=e,Ea=null,null!==(e=e.dependencies)&&(e.firstContext=null)}function ja(e){return Ra(xa,e)}function La(e,t){return null===xa&&Oa(e),Ra(e,t)}function Ra(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},null===Ea){if(null===e)throw Error(i(308));Ea=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Ea=Ea.next=t;return n}var Ia="undefined"!=typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},Da=r.unstable_scheduleCallback,Fa=r.unstable_NormalPriority,Ma={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function za(){return{controller:new Ia,data:new Map,refCount:0}}function Ba(e){e.refCount--,0===e.refCount&&Da(Fa,function(){e.controller.abort()})}var $a=null,Ua=0,Ha=0,Va=null;function Wa(){if(0===--Ua&&null!==$a){null!==Va&&(Va.status="fulfilled");var e=$a;$a=null,Ha=0,Va=null;for(var t=0;t<e.length;t++)(0,e[t])()}}var Ga=R.S;R.S=function(e,t){Lu=se(),"object"==typeof t&&null!==t&&"function"==typeof t.then&&function(e,t){if(null===$a){var n=$a=[];Ua=0,Ha=Uc(),Va={status:"pending",value:void 0,then:function(e){n.push(e)}}}Ua++,t.then(Wa,Wa)}(0,t),null!==Ga&&Ga(e,t)};var qa=z(null);function Ya(){var e=qa.current;return null!==e?e:hu.pooledCache}function Ka(e,t){$(qa,null===t?qa.current:t.pool)}function Qa(){var e=Ya();return null===e?null:{parent:Ma._currentValue,pool:e}}var Xa=Error(i(460)),Za=Error(i(474)),Ja=Error(i(542)),eo={then:function(){}};function to(e){return"fulfilled"===(e=e.status)||"rejected"===e}function no(e,t,n){switch(void 0===(n=e[n])?e.push(t):n!==t&&(t.then(jt,jt),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw io(e=t.reason),e;default:if("string"==typeof t.status)t.then(jt,jt);else{if(null!==(e=hu)&&100<e.shellSuspendCounter)throw Error(i(482));(e=t).status="pending",e.then(function(e){if("pending"===t.status){var n=t;n.status="fulfilled",n.value=e}},function(e){if("pending"===t.status){var n=t;n.status="rejected",n.reason=e}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw io(e=t.reason),e}throw ao=t,Xa}}function ro(e){try{return(0,e._init)(e._payload)}catch(t){if(null!==t&&"object"==typeof t&&"function"==typeof t.then)throw ao=t,Xa;throw t}}var ao=null;function oo(){if(null===ao)throw Error(i(459));var e=ao;return ao=null,e}function io(e){if(e===Xa||e===Ja)throw Error(i(483))}var lo=null,so=0;function uo(e){var t=so;return so+=1,null===lo&&(lo=[]),no(lo,e,t)}function co(e,t){t=t.props.ref,e.ref=void 0!==t?t:null}function fo(e,t){if(t.$$typeof===h)throw Error(i(525));throw e=Object.prototype.toString.call(t),Error(i(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function po(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;null!==e;)null!==e.key?t.set(e.key,e):t.set(e.index,e),e=e.sibling;return t}function a(e,t){return(e=Br(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=67108866,n):r:(t.flags|=67108866,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=67108866),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Vr(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){var o=n.type;return o===y?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===A&&ro(o)===t.type)?(co(t=a(t,n.props),n),t.return=e,t):(co(t=Ur(n.type,n.key,n.props,null,e.mode,r),n),t.return=e,t)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Gr(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Hr(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t||"bigint"==typeof t)return(t=Vr(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case m:return co(n=Ur(t.type,t.key,t.props,null,e.mode,n),t),n.return=e,n;case g:return(t=Gr(t,e.mode,n)).return=e,t;case A:return f(e,t=ro(t),n)}if(L(t)||P(t))return(t=Hr(t,e.mode,n,null)).return=e,t;if("function"==typeof t.then)return f(e,uo(t),n);if(t.$$typeof===k)return f(e,La(e,t),n);fo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n||"bigint"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case m:return n.key===a?u(e,t,n,r):null;case g:return n.key===a?c(e,t,n,r):null;case A:return p(e,t,n=ro(n),r)}if(L(n)||P(n))return null!==a?null:d(e,t,n,r,null);if("function"==typeof n.then)return p(e,t,uo(n),r);if(n.$$typeof===k)return p(e,t,La(e,n),r);fo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r||"bigint"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case m:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case g:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case A:return h(e,t,n,r=ro(r),a)}if(L(r)||P(r))return d(t,e=e.get(n)||null,r,a,null);if("function"==typeof r.then)return h(e,t,n,uo(r),a);if(r.$$typeof===k)return h(e,t,n,La(t,r),a);fo(t,r)}return null}function b(s,u,c,d){if("object"==typeof c&&null!==c&&c.type===y&&null===c.key&&(c=c.props.children),"object"==typeof c&&null!==c){switch(c.$$typeof){case m:e:{for(var v=c.key;null!==u;){if(u.key===v){if((v=c.type)===y){if(7===u.tag){n(s,u.sibling),(d=a(u,c.props.children)).return=s,s=d;break e}}else if(u.elementType===v||"object"==typeof v&&null!==v&&v.$$typeof===A&&ro(v)===u.type){n(s,u.sibling),co(d=a(u,c.props),c),d.return=s,s=d;break e}n(s,u);break}t(s,u),u=u.sibling}c.type===y?((d=Hr(c.props.children,s.mode,d,c.key)).return=s,s=d):(co(d=Ur(c.type,c.key,c.props,null,s.mode,d),c),d.return=s,s=d)}return l(s);case g:e:{for(v=c.key;null!==u;){if(u.key===v){if(4===u.tag&&u.stateNode.containerInfo===c.containerInfo&&u.stateNode.implementation===c.implementation){n(s,u.sibling),(d=a(u,c.children||[])).return=s,s=d;break e}n(s,u);break}t(s,u),u=u.sibling}(d=Gr(c,s.mode,d)).return=s,s=d}return l(s);case A:return b(s,u,c=ro(c),d)}if(L(c))return function(a,i,l,s){for(var u=null,c=null,d=i,m=i=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var y=p(a,d,l[m],s);if(null===y){null===d&&(d=g);break}e&&d&&null===y.alternate&&t(a,d),i=o(y,i,m),null===c?u=y:c.sibling=y,c=y,d=g}if(m===l.length)return n(a,d),da&&aa(a,m),u;if(null===d){for(;m<l.length;m++)null!==(d=f(a,l[m],s))&&(i=o(d,i,m),null===c?u=d:c.sibling=d,c=d);return da&&aa(a,m),u}for(d=r(d);m<l.length;m++)null!==(g=h(d,a,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),i=o(g,i,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach(function(e){return t(a,e)}),da&&aa(a,m),u}(s,u,c,d);if(P(c)){if("function"!=typeof(v=P(c)))throw Error(i(150));return function(a,l,s,u){if(null==s)throw Error(i(151));for(var c=null,d=null,m=l,g=l=0,y=null,b=s.next();null!==m&&!b.done;g++,b=s.next()){m.index>g?(y=m,m=null):y=m.sibling;var v=p(a,m,b.value,u);if(null===v){null===m&&(m=y);break}e&&m&&null===v.alternate&&t(a,m),l=o(v,l,g),null===d?c=v:d.sibling=v,d=v,m=y}if(b.done)return n(a,m),da&&aa(a,g),c;if(null===m){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return da&&aa(a,g),c}for(m=r(m);!b.done;g++,b=s.next())null!==(b=h(m,a,g,b.value,u))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&m.forEach(function(e){return t(a,e)}),da&&aa(a,g),c}(s,u,c=v.call(c),d)}if("function"==typeof c.then)return b(s,u,uo(c),d);if(c.$$typeof===k)return b(s,u,La(s,c),d);fo(s,c)}return"string"==typeof c&&""!==c||"number"==typeof c||"bigint"==typeof c?(c=""+c,null!==u&&6===u.tag?(n(s,u.sibling),(d=a(u,c)).return=s,s=d):(n(s,u),(d=Vr(c,s.mode,d)).return=s,s=d),l(s)):n(s,u)}return function(e,t,n,r){try{so=0;var a=b(e,t,n,r);return lo=null,a}catch(i){if(i===Xa||i===Ja)throw i;var o=Mr(29,i,null,e.mode);return o.lanes=r,o.return=e,o}}}var ho=po(!0),mo=po(!1),go=!1;function yo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function bo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function vo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function wo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&pu){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,t=Ir(e),Rr(e,null,n),t}return Or(e,r,t,n),Ir(e)}function ko(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194048&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Re(e,n)}}function So(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var xo=!1;function Eo(){if(xo){if(null!==Va)throw Va}}function _o(e,t,n,r){xo=!1;var a=e.updateQueue;go=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?o=u:i.next=u,i=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,c=u=s=null,l=o;;){var f=-536870913&l.lane,h=f!==l.lane;if(h?(gu&f)===f:(r&f)===f){0!==f&&f===Ha&&(xo=!0),null!==c&&(c=c.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var m=e,g=l;f=t;var y=n;switch(g.tag){case 1:if("function"==typeof(m=g.payload)){d=m.call(y,d,f);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(f="function"==typeof(m=g.payload)?m.call(y,d,f):m))break e;d=p({},d,f);break e;case 2:go=!0}}null!==(f=l.callback)&&(e.flags|=64,h&&(e.flags|=8192),null===(h=a.callbacks)?a.callbacks=[f]:h.push(f))}else h={lane:f,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=h,s=d):c=c.next=h,i|=f;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(h=l).next,h.next=null,a.lastBaseUpdate=h,a.shared.pending=null}}null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null===o&&(a.shared.lanes=0),Eu|=i,e.lanes=i,e.memoizedState=d}}function Ao(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function Co(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;e<n.length;e++)Ao(n[e],t)}var To=z(null),No=z(0);function Po(e,t){$(No,e=Su),$(To,t),Su=e|t.baseLanes}function Oo(){$(No,Su),$(To,To.current)}function jo(){Su=No.current,B(To),B(No)}var Lo=z(null),Ro=null;function Io(e){var t=e.alternate;$(Bo,1&Bo.current),$(Lo,e),null===Ro&&(null===t||null!==To.current||null!==t.memoizedState)&&(Ro=e)}function Do(e){$(Bo,Bo.current),$(Lo,e),null===Ro&&(Ro=e)}function Fo(e){22===e.tag?($(Bo,Bo.current),$(Lo,e),null===Ro&&(Ro=e)):Mo()}function Mo(){$(Bo,Bo.current),$(Lo,Lo.current)}function zo(e){B(Lo),Ro===e&&(Ro=null),B(Bo)}var Bo=z(0);function $o(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||Od(n)||jd(n)))return t}else if(19!==t.tag||"forwards"!==t.memoizedProps.revealOrder&&"backwards"!==t.memoizedProps.revealOrder&&"unstable_legacy-backwards"!==t.memoizedProps.revealOrder&&"together"!==t.memoizedProps.revealOrder){if(null!==t.child){t.child.return=t,t=t.child;continue}}else if(128&t.flags)return t;if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Uo=0,Ho=null,Vo=null,Wo=null,Go=!1,qo=!1,Yo=!1,Ko=0,Qo=0,Xo=null,Zo=0;function Jo(){throw Error(i(321))}function ei(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Zn(e[n],t[n]))return!1;return!0}function ti(e,t,n,r,a,o){return Uo=o,Ho=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,R.H=null===e||null===e.memoizedState?gl:yl,Yo=!1,o=n(r,a),Yo=!1,qo&&(o=ri(t,n,r,a)),ni(e),o}function ni(e){R.H=ml;var t=null!==Vo&&null!==Vo.next;if(Uo=0,Wo=Vo=Ho=null,Go=!1,Qo=0,Xo=null,t)throw Error(i(300));null===e||Ll||null!==(e=e.dependencies)&&Pa(e)&&(Ll=!0)}function ri(e,t,n,r){Ho=e;var a=0;do{if(qo&&(Xo=null),Qo=0,qo=!1,25<=a)throw Error(i(301));if(a+=1,Wo=Vo=null,null!=e.updateQueue){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,null!=o.memoCache&&(o.memoCache.index=0)}R.H=bl,o=t(n,r)}while(qo);return o}function ai(){var e=R.H,t=e.useState()[0];return t="function"==typeof t.then?ci(t):t,e=e.useState()[0],(null!==Vo?Vo.memoizedState:null)!==e&&(Ho.flags|=1024),t}function oi(){var e=0!==Ko;return Ko=0,e}function ii(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function li(e){if(Go){for(e=e.memoizedState;null!==e;){var t=e.queue;null!==t&&(t.pending=null),e=e.next}Go=!1}Uo=0,Wo=Vo=Ho=null,qo=!1,Qo=Ko=0,Xo=null}function si(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Wo?Ho.memoizedState=Wo=e:Wo=Wo.next=e,Wo}function ui(){if(null===Vo){var e=Ho.alternate;e=null!==e?e.memoizedState:null}else e=Vo.next;var t=null===Wo?Ho.memoizedState:Wo.next;if(null!==t)Wo=t,Vo=e;else{if(null===e){if(null===Ho.alternate)throw Error(i(467));throw Error(i(310))}e={memoizedState:(Vo=e).memoizedState,baseState:Vo.baseState,baseQueue:Vo.baseQueue,queue:Vo.queue,next:null},null===Wo?Ho.memoizedState=Wo=e:Wo=Wo.next=e}return Wo}function ci(e){var t=Qo;return Qo+=1,null===Xo&&(Xo=[]),e=no(Xo,e,t),t=Ho,null===(null===Wo?t.memoizedState:Wo.next)&&(t=t.alternate,R.H=null===t||null===t.memoizedState?gl:yl),e}function di(e){if(null!==e&&"object"==typeof e){if("function"==typeof e.then)return ci(e);if(e.$$typeof===k)return ja(e)}throw Error(i(438,String(e)))}function fi(e){var t=null,n=Ho.updateQueue;if(null!==n&&(t=n.memoCache),null==t){var r=Ho.alternate;null!==r&&(null!==(r=r.updateQueue)&&(null!=(r=r.memoCache)&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(null==t&&(t={data:[],index:0}),null===n&&(n={lastEffect:null,events:null,stores:null,memoCache:null},Ho.updateQueue=n),n.memoCache=t,void 0===(n=t.data[t.index]))for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=T;return t.index++,n}function pi(e,t){return"function"==typeof t?t(e):t}function hi(e){return mi(ui(),Vo,e)}function mi(e,t,n){var r=e.queue;if(null===r)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,null===a)e.memoizedState=o;else{var s=l=null,u=null,c=t=a.next,d=!1;do{var f=-536870913&c.lane;if(f!==c.lane?(gu&f)===f:(Uo&f)===f){var p=c.revertLane;if(0===p)null!==u&&(u=u.next={lane:0,revertLane:0,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),f===Ha&&(d=!0);else{if((Uo&p)===p){c=c.next,p===Ha&&(d=!0);continue}f={lane:0,revertLane:c.revertLane,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},null===u?(s=u=f,l=o):u=u.next=f,Ho.lanes|=p,Eu|=p}f=c.action,Yo&&n(o,f),o=c.hasEagerState?c.eagerState:n(o,f)}else p={lane:f,revertLane:c.revertLane,gesture:c.gesture,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},null===u?(s=u=p,l=o):u=u.next=p,Ho.lanes|=f,Eu|=f;c=c.next}while(null!==c&&c!==t);if(null===u?l=o:u.next=s,!Zn(o,e.memoizedState)&&(Ll=!0,d&&null!==(n=Va)))throw n;e.memoizedState=o,e.baseState=l,e.baseQueue=u,r.lastRenderedState=o}return null===a&&(r.lanes=0),[e.memoizedState,r.dispatch]}function gi(e){var t=ui(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);Zn(o,t.memoizedState)||(Ll=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function yi(e,t,n){var r=Ho,a=ui(),o=da;if(o){if(void 0===n)throw Error(i(407));n=n()}else n=t();var l=!Zn((Vo||a).memoizedState,n);if(l&&(a.memoizedState=n,Ll=!0),a=a.queue,Ui(wi.bind(null,r,a,e),[e]),a.getSnapshot!==t||l||null!==Wo&&1&Wo.memoizedState.tag){if(r.flags|=2048,Fi(9,{destroy:void 0},vi.bind(null,r,a,n,t),null),null===hu)throw Error(i(349));o||127&Uo||bi(r,t,n)}return n}function bi(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=Ho.updateQueue)?(t={lastEffect:null,events:null,stores:null,memoCache:null},Ho.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function vi(e,t,n,r){t.value=n,t.getSnapshot=r,ki(t)&&Si(e)}function wi(e,t,n){return n(function(){ki(t)&&Si(e)})}function ki(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Zn(e,n)}catch(r){return!0}}function Si(e){var t=Lr(e,2);null!==t&&Yu(t,e,2)}function xi(e){var t=si();if("function"==typeof e){var n=e;if(e=n(),Yo){ve(!0);try{n()}finally{ve(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:pi,lastRenderedState:e},t}function Ei(e,t,n,r){return e.baseState=n,mi(e,Vo,"function"==typeof r?r:pi)}function _i(e,t,n,r,a){if(fl(e))throw Error(i(485));if(null!==(e=t.action)){var o={payload:a,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};null!==R.T?n(!0):o.isTransition=!1,r(o),null===(n=t.pending)?(o.next=t.pending=o,Ai(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Ai(e,t){var n=t.action,r=t.payload,a=e.state;if(t.isTransition){var o=R.T,i={};R.T=i;try{var l=n(a,r),s=R.S;null!==s&&s(i,l),Ci(e,t,l)}catch(u){Ni(e,t,u)}finally{null!==o&&null!==i.types&&(o.types=i.types),R.T=o}}else try{Ci(e,t,o=n(a,r))}catch(c){Ni(e,t,c)}}function Ci(e,t,n){null!==n&&"object"==typeof n&&"function"==typeof n.then?n.then(function(n){Ti(e,t,n)},function(n){return Ni(e,t,n)}):Ti(e,t,n)}function Ti(e,t,n){t.status="fulfilled",t.value=n,Pi(t),e.state=n,null!==(t=e.pending)&&((n=t.next)===t?e.pending=null:(n=n.next,t.next=n,Ai(e,n)))}function Ni(e,t,n){var r=e.pending;if(e.pending=null,null!==r){r=r.next;do{t.status="rejected",t.reason=n,Pi(t),t=t.next}while(t!==r)}e.action=null}function Pi(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Oi(e,t){return t}function ji(e,t){if(da){var n=hu.formState;if(null!==n){e:{var r=Ho;if(da){if(ca){t:{for(var a=ca,o=pa;8!==a.nodeType;){if(!o){a=null;break t}if(null===(a=Ld(a.nextSibling))){a=null;break t}}a="F!"===(o=a.data)||"F"===o?a:null}if(a){ca=Ld(a.nextSibling),r="F!"===a.data;break e}}ma(r)}r=!1}r&&(t=n[0])}}return(n=si()).memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Oi,lastRenderedState:t},n.queue=r,n=ul.bind(null,Ho,r),r.dispatch=n,r=xi(!1),o=dl.bind(null,Ho,!1,r.queue),a={state:t,dispatch:null,action:e,pending:null},(r=si()).queue=a,n=_i.bind(null,Ho,a,o,n),a.dispatch=n,r.memoizedState=e,[t,n,!1]}function Li(e){return Ri(ui(),Vo,e)}function Ri(e,t,n){if(t=mi(e,t,Oi)[0],e=hi(pi)[0],"object"==typeof t&&null!==t&&"function"==typeof t.then)try{var r=ci(t)}catch(i){if(i===Xa)throw Ja;throw i}else r=t;var a=(t=ui()).queue,o=a.dispatch;return n!==t.memoizedState&&(Ho.flags|=2048,Fi(9,{destroy:void 0},Ii.bind(null,a,n),null)),[r,o,e]}function Ii(e,t){e.action=t}function Di(e){var t=ui(),n=Vo;if(null!==n)return Ri(t,n,e);ui(),t=t.memoizedState;var r=(n=ui()).queue.dispatch;return n.memoizedState=e,[t,r,!1]}function Fi(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},null===(t=Ho.updateQueue)&&(t={lastEffect:null,events:null,stores:null,memoCache:null},Ho.updateQueue=t),null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Mi(){return ui().memoizedState}function zi(e,t,n,r){var a=si();Ho.flags|=e,a.memoizedState=Fi(1|t,{destroy:void 0},n,void 0===r?null:r)}function Bi(e,t,n,r){var a=ui();r=void 0===r?null:r;var o=a.memoizedState.inst;null!==Vo&&null!==r&&ei(r,Vo.memoizedState.deps)?a.memoizedState=Fi(t,o,n,r):(Ho.flags|=e,a.memoizedState=Fi(1|t,o,n,r))}function $i(e,t){zi(8390656,8,e,t)}function Ui(e,t){Bi(2048,8,e,t)}function Hi(e){var t=ui().memoizedState;return function(e){Ho.flags|=4;var t=Ho.updateQueue;if(null===t)t={lastEffect:null,events:null,stores:null,memoCache:null},Ho.updateQueue=t,t.events=[e];else{var n=t.events;null===n?t.events=[e]:n.push(e)}}({ref:t,nextImpl:e}),function(){if(2&pu)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function Vi(e,t){return Bi(4,2,e,t)}function Wi(e,t){return Bi(4,4,e,t)}function Gi(e,t){if("function"==typeof t){e=e();var n=t(e);return function(){"function"==typeof n?n():t(null)}}if(null!=t)return e=e(),t.current=e,function(){t.current=null}}function qi(e,t,n){n=null!=n?n.concat([e]):null,Bi(4,4,Gi.bind(null,t,e),n)}function Yi(){}function Ki(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;return null!==t&&ei(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Qi(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;if(null!==t&&ei(t,r[1]))return r[0];if(r=e(),Yo){ve(!0);try{e()}finally{ve(!1)}}return n.memoizedState=[r,t],r}function Xi(e,t,n){return void 0===n||1073741824&Uo&&!(261930&gu)?e.memoizedState=t:(e.memoizedState=n,e=qu(),Ho.lanes|=e,Eu|=e,n)}function Zi(e,t,n,r){return Zn(n,t)?n:null!==To.current?(e=Xi(e,n,r),Zn(e,t)||(Ll=!0),e):42&Uo&&(!(1073741824&Uo)||261930&gu)?(e=qu(),Ho.lanes|=e,Eu|=e,t):(Ll=!0,e.memoizedState=n)}function Ji(e,t,n,r,a){var o=I.p;I.p=0!==o&&8>o?o:8;var i,l,s,u=R.T,c={};R.T=c,dl(e,!1,t,n);try{var d=a(),f=R.S;if(null!==f&&f(c,d),null!==d&&"object"==typeof d&&"function"==typeof d.then)cl(e,t,(i=r,l=[],s={status:"pending",value:null,reason:null,then:function(e){l.push(e)}},d.then(function(){s.status="fulfilled",s.value=i;for(var e=0;e<l.length;e++)(0,l[e])(i)},function(e){for(s.status="rejected",s.reason=e,e=0;e<l.length;e++)(0,l[e])(void 0)}),s),Gu());else cl(e,t,r,Gu())}catch(p){cl(e,t,{then:function(){},status:"rejected",reason:p},Gu())}finally{I.p=o,null!==u&&null!==c.types&&(u.types=c.types),R.T=u}}function el(){}function tl(e,t,n,r){if(5!==e.tag)throw Error(i(476));var a=nl(e).queue;Ji(e,a,t,D,null===n?el:function(){return rl(e),n(r)})}function nl(e){var t=e.memoizedState;if(null!==t)return t;var n={};return(t={memoizedState:D,baseState:D,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pi,lastRenderedState:D},next:null}).next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pi,lastRenderedState:n},next:null},e.memoizedState=t,null!==(e=e.alternate)&&(e.memoizedState=t),t}function rl(e){var t=nl(e);null===t.next&&(t=e.alternate.memoizedState),cl(e,t.next.queue,{},Gu())}function al(){return ja(df)}function ol(){return ui().memoizedState}function il(){return ui().memoizedState}function ll(e){for(var t=e.return;null!==t;){switch(t.tag){case 24:case 3:var n=Gu(),r=wo(t,e=vo(n),n);return null!==r&&(Yu(r,t,n),ko(r,t,n)),t={cache:za()},void(e.payload=t)}t=t.return}}function sl(e,t,n){var r=Gu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},fl(e)?pl(t,n):null!==(n=jr(e,t,n,r))&&(Yu(n,e,r),hl(n,t,r))}function ul(e,t,n){cl(e,t,n,Gu())}function cl(e,t,n,r){var a={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(fl(e))pl(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,Zn(l,i))return Or(e,t,a,0),null===hu&&Pr(),!1}catch(s){}if(null!==(n=jr(e,t,a,r)))return Yu(n,e,r),hl(n,t,r),!0}return!1}function dl(e,t,n,r){if(r={lane:2,revertLane:Uc(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},fl(e)){if(t)throw Error(i(479))}else null!==(t=jr(e,n,r,2))&&Yu(t,e,2)}function fl(e){var t=e.alternate;return e===Ho||null!==t&&t===Ho}function pl(e,t){qo=Go=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function hl(e,t,n){if(4194048&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Re(e,n)}}var ml={readContext:ja,use:di,useCallback:Jo,useContext:Jo,useEffect:Jo,useImperativeHandle:Jo,useLayoutEffect:Jo,useInsertionEffect:Jo,useMemo:Jo,useReducer:Jo,useRef:Jo,useState:Jo,useDebugValue:Jo,useDeferredValue:Jo,useTransition:Jo,useSyncExternalStore:Jo,useId:Jo,useHostTransitionStatus:Jo,useFormState:Jo,useActionState:Jo,useOptimistic:Jo,useMemoCache:Jo,useCacheRefresh:Jo};ml.useEffectEvent=Jo;var gl={readContext:ja,use:di,useCallback:function(e,t){return si().memoizedState=[e,void 0===t?null:t],e},useContext:ja,useEffect:$i,useImperativeHandle:function(e,t,n){n=null!=n?n.concat([e]):null,zi(4194308,4,Gi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return zi(4194308,4,e,t)},useInsertionEffect:function(e,t){zi(4,2,e,t)},useMemo:function(e,t){var n=si();t=void 0===t?null:t;var r=e();if(Yo){ve(!0);try{e()}finally{ve(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=si();if(void 0!==n){var a=n(t);if(Yo){ve(!0);try{n(t)}finally{ve(!1)}}}else a=t;return r.memoizedState=r.baseState=a,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:a},r.queue=e,e=e.dispatch=sl.bind(null,Ho,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},si().memoizedState=e},useState:function(e){var t=(e=xi(e)).queue,n=ul.bind(null,Ho,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Yi,useDeferredValue:function(e,t){return Xi(si(),e,t)},useTransition:function(){var e=xi(!1);return e=Ji.bind(null,Ho,e.queue,!0,!1),si().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=Ho,a=si();if(da){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===hu)throw Error(i(349));127&gu||bi(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,$i(wi.bind(null,r,o,e),[e]),r.flags|=2048,Fi(9,{destroy:void 0},vi.bind(null,r,o,n,t),null),n},useId:function(){var e=si(),t=hu.identifierPrefix;if(da){var n=ra;t="_"+t+"R_"+(n=(na&~(1<<32-we(na)-1)).toString(32)+n),0<(n=Ko++)&&(t+="H"+n.toString(32)),t+="_"}else t="_"+t+"r_"+(n=Zo++).toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:al,useFormState:ji,useActionState:ji,useOptimistic:function(e){var t=si();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=dl.bind(null,Ho,!0,n),n.dispatch=t,[e,t]},useMemoCache:fi,useCacheRefresh:function(){return si().memoizedState=ll.bind(null,Ho)},useEffectEvent:function(e){var t=si(),n={impl:e};return t.memoizedState=n,function(){if(2&pu)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},yl={readContext:ja,use:di,useCallback:Ki,useContext:ja,useEffect:Ui,useImperativeHandle:qi,useInsertionEffect:Vi,useLayoutEffect:Wi,useMemo:Qi,useReducer:hi,useRef:Mi,useState:function(){return hi(pi)},useDebugValue:Yi,useDeferredValue:function(e,t){return Zi(ui(),Vo.memoizedState,e,t)},useTransition:function(){var e=hi(pi)[0],t=ui().memoizedState;return["boolean"==typeof e?e:ci(e),t]},useSyncExternalStore:yi,useId:ol,useHostTransitionStatus:al,useFormState:Li,useActionState:Li,useOptimistic:function(e,t){return Ei(ui(),0,e,t)},useMemoCache:fi,useCacheRefresh:il};yl.useEffectEvent=Hi;var bl={readContext:ja,use:di,useCallback:Ki,useContext:ja,useEffect:Ui,useImperativeHandle:qi,useInsertionEffect:Vi,useLayoutEffect:Wi,useMemo:Qi,useReducer:gi,useRef:Mi,useState:function(){return gi(pi)},useDebugValue:Yi,useDeferredValue:function(e,t){var n=ui();return null===Vo?Xi(n,e,t):Zi(n,Vo.memoizedState,e,t)},useTransition:function(){var e=gi(pi)[0],t=ui().memoizedState;return["boolean"==typeof e?e:ci(e),t]},useSyncExternalStore:yi,useId:ol,useHostTransitionStatus:al,useFormState:Di,useActionState:Di,useOptimistic:function(e,t){var n=ui();return null!==Vo?Ei(n,0,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:fi,useCacheRefresh:il};function vl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:p({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}bl.useEffectEvent=Hi;var wl={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=Gu(),a=vo(r);a.payload=t,null!=n&&(a.callback=n),null!==(t=wo(e,a,r))&&(Yu(t,e,r),ko(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=Gu(),a=vo(r);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=wo(e,a,r))&&(Yu(t,e,r),ko(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Gu(),r=vo(n);r.tag=2,null!=t&&(r.callback=t),null!==(t=wo(e,r,n))&&(Yu(t,e,n),ko(t,e,n))}};function kl(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!Jn(n,r)||!Jn(a,o))}function Sl(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&wl.enqueueReplaceState(t,t.state,null)}function xl(e,t){var n=t;if("ref"in t)for(var r in n={},t)"ref"!==r&&(n[r]=t[r]);if(e=e.defaultProps)for(var a in n===t&&(n=p({},n)),e)void 0===n[a]&&(n[a]=e[a]);return n}function El(e){Ar(e)}function _l(e){console.error(e)}function Al(e){Ar(e)}function Cl(e,t){try{(0,e.onUncaughtError)(t.value,{componentStack:t.stack})}catch(n){setTimeout(function(){throw n})}}function Tl(e,t,n){try{(0,e.onCaughtError)(n.value,{componentStack:n.stack,errorBoundary:1===t.tag?t.stateNode:null})}catch(r){setTimeout(function(){throw r})}}function Nl(e,t,n){return(n=vo(n)).tag=3,n.payload={element:null},n.callback=function(){Cl(e,t)},n}function Pl(e){return(e=vo(e)).tag=3,e}function Ol(e,t,n,r){var a=n.type.getDerivedStateFromError;if("function"==typeof a){var o=r.value;e.payload=function(){return a(o)},e.callback=function(){Tl(t,n,r)}}var i=n.stateNode;null!==i&&"function"==typeof i.componentDidCatch&&(e.callback=function(){Tl(t,n,r),"function"!=typeof a&&(null===Du?Du=new Set([this]):Du.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var jl=Error(i(461)),Ll=!1;function Rl(e,t,n,r){t.child=null===e?mo(t,null,n,r):ho(t,e.child,n,r)}function Il(e,t,n,r,a){n=n.render;var o=t.ref;if("ref"in r){var i={};for(var l in r)"ref"!==l&&(i[l]=r[l])}else i=r;return Oa(t),r=ti(e,t,n,i,o,a),l=oi(),null===e||Ll?(da&&l&&ia(t),t.flags|=1,Rl(e,t,r,a),t.child):(ii(e,t,a),as(e,t,a))}function Dl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||zr(o)||void 0!==o.defaultProps||null!==n.compare?((e=Ur(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Fl(e,t,o,r,a))}if(o=e.child,!os(e,a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:Jn)(i,r)&&e.ref===t.ref)return as(e,t,a)}return t.flags|=1,(e=Br(o,r)).ref=t.ref,e.return=t,t.child=e}function Fl(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(Jn(o,r)&&e.ref===t.ref){if(Ll=!1,t.pendingProps=r=o,!os(e,a))return t.lanes=e.lanes,as(e,t,a);131072&e.flags&&(Ll=!0)}}return Vl(e,t,n,r,a)}function Ml(e,t,n,r){var a=r.children,o=null!==e?e.memoizedState:null;if(null===e&&null===t.stateNode&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),"hidden"===r.mode){if(128&t.flags){if(o=null!==o?o.baseLanes|n:n,null!==e){for(r=t.child=e.child,a=0;null!==r;)a=a|r.lanes|r.childLanes,r=r.sibling;r=a&~o}else r=0,t.child=null;return Bl(e,t,o,n,r)}if(!(536870912&n))return r=t.lanes=536870912,Bl(e,t,null!==o?o.baseLanes|n:n,n,r);t.memoizedState={baseLanes:0,cachePool:null},null!==e&&Ka(0,null!==o?o.cachePool:null),null!==o?Po(t,o):Oo(),Fo(t)}else null!==o?(Ka(0,o.cachePool),Po(t,o),Mo(),t.memoizedState=null):(null!==e&&Ka(0,null),Oo(),Mo());return Rl(e,t,a,n),t.child}function zl(e,t){return null!==e&&22===e.tag||null!==t.stateNode||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Bl(e,t,n,r,a){var o=Ya();return o=null===o?null:{parent:Ma._currentValue,pool:o},t.memoizedState={baseLanes:n,cachePool:o},null!==e&&Ka(0,null),Oo(),Fo(t),null!==e&&Na(e,t,r,!0),t.childLanes=a,null}function $l(e,t){return(t=Jl({mode:t.mode,children:t.children},e.mode)).ref=e.ref,e.child=t,t.return=e,t}function Ul(e,t,n){return ho(t,e.child,null,n),(e=$l(t,t.pendingProps)).flags|=2,zo(t),t.memoizedState=null,e}function Hl(e,t){var n=t.ref;if(null===n)null!==e&&null!==e.ref&&(t.flags|=4194816);else{if("function"!=typeof n&&"object"!=typeof n)throw Error(i(284));null!==e&&e.ref===n||(t.flags|=4194816)}}function Vl(e,t,n,r,a){return Oa(t),n=ti(e,t,n,r,void 0,a),r=oi(),null===e||Ll?(da&&r&&ia(t),t.flags|=1,Rl(e,t,n,a),t.child):(ii(e,t,a),as(e,t,a))}function Wl(e,t,n,r,a,o){return Oa(t),t.updateQueue=null,n=ri(t,r,n,a),ni(e),r=oi(),null===e||Ll?(da&&r&&ia(t),t.flags|=1,Rl(e,t,n,o),t.child):(ii(e,t,o),as(e,t,o))}function Gl(e,t,n,r,a){if(Oa(t),null===t.stateNode){var o=Dr,i=n.contextType;"object"==typeof i&&null!==i&&(o=ja(i)),o=new n(r,o),t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,o.updater=wl,t.stateNode=o,o._reactInternals=t,(o=t.stateNode).props=r,o.state=t.memoizedState,o.refs={},yo(t),i=n.contextType,o.context="object"==typeof i&&null!==i?ja(i):Dr,o.state=t.memoizedState,"function"==typeof(i=n.getDerivedStateFromProps)&&(vl(t,n,i,r),o.state=t.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(i=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),i!==o.state&&wl.enqueueReplaceState(o,o.state,null),_o(t,r,o,a),Eo(),o.state=t.memoizedState),"function"==typeof o.componentDidMount&&(t.flags|=4194308),r=!0}else if(null===e){o=t.stateNode;var l=t.memoizedProps,s=xl(n,l);o.props=s;var u=o.context,c=n.contextType;i=Dr,"object"==typeof c&&null!==c&&(i=ja(c));var d=n.getDerivedStateFromProps;c="function"==typeof d||"function"==typeof o.getSnapshotBeforeUpdate,l=t.pendingProps!==l,c||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(l||u!==i)&&Sl(t,o,r,i),go=!1;var f=t.memoizedState;o.state=f,_o(t,r,o,a),Eo(),u=t.memoizedState,l||f!==u||go?("function"==typeof d&&(vl(t,n,d,r),u=t.memoizedState),(s=go||kl(t,n,s,r,f,u,i))?(c||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(t.flags|=4194308)):("function"==typeof o.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=u),o.props=r,o.state=u,o.context=i,r=s):("function"==typeof o.componentDidMount&&(t.flags|=4194308),r=!1)}else{o=t.stateNode,bo(e,t),c=xl(n,i=t.memoizedProps),o.props=c,d=t.pendingProps,f=o.context,u=n.contextType,s=Dr,"object"==typeof u&&null!==u&&(s=ja(u)),(u="function"==typeof(l=n.getDerivedStateFromProps)||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(i!==d||f!==s)&&Sl(t,o,r,s),go=!1,f=t.memoizedState,o.state=f,_o(t,r,o,a),Eo();var p=t.memoizedState;i!==d||f!==p||go||null!==e&&null!==e.dependencies&&Pa(e.dependencies)?("function"==typeof l&&(vl(t,n,l,r),p=t.memoizedState),(c=go||kl(t,n,c,r,f,p,s)||null!==e&&null!==e.dependencies&&Pa(e.dependencies))?(u||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(r,p,s),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,p,s)),"function"==typeof o.componentDidUpdate&&(t.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof o.componentDidUpdate||i===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||i===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),o.props=r,o.state=p,o.context=s,r=c):("function"!=typeof o.componentDidUpdate||i===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||i===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return o=r,Hl(e,t),r=!!(128&t.flags),o||r?(o=t.stateNode,n=r&&"function"!=typeof n.getDerivedStateFromError?null:o.render(),t.flags|=1,null!==e&&r?(t.child=ho(t,e.child,null,a),t.child=ho(t,null,n,a)):Rl(e,t,n,a),t.memoizedState=o.state,e=t.child):e=as(e,t,a),e}function ql(e,t,n,r){return va(),t.flags|=256,Rl(e,t,n,r),t.child}var Yl={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Kl(e){return{baseLanes:e,cachePool:Qa()}}function Ql(e,t,n){return e=null!==e?e.childLanes&~n:0,t&&(e|=Cu),e}function Xl(e,t,n){var r,a=t.pendingProps,o=!1,l=!!(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&!!(2&Bo.current)),r&&(o=!0,t.flags&=-129),r=!!(32&t.flags),t.flags&=-33,null===e){if(da){if(o?Io(t):Mo(),(e=ca)?null!==(e=null!==(e=Pd(e,pa))&&"&"!==e.data?e:null)&&(t.memoizedState={dehydrated:e,treeContext:null!==ta?{id:na,overflow:ra}:null,retryLane:536870912,hydrationErrors:null},(n=Wr(e)).return=t,t.child=n,ua=t,ca=null):e=null,null===e)throw ma(t);return jd(e)?t.lanes=32:t.lanes=536870912,null}var s=a.children;return a=a.fallback,o?(Mo(),s=Jl({mode:"hidden",children:s},o=t.mode),a=Hr(a,o,n,null),s.return=t,a.return=t,s.sibling=a,t.child=s,(a=t.child).memoizedState=Kl(n),a.childLanes=Ql(e,r,n),t.memoizedState=Yl,zl(null,a)):(Io(t),Zl(t,s))}var u=e.memoizedState;if(null!==u&&null!==(s=u.dehydrated)){if(l)256&t.flags?(Io(t),t.flags&=-257,t=es(e,t,n)):null!==t.memoizedState?(Mo(),t.child=e.child,t.flags|=128,t=null):(Mo(),s=a.fallback,o=t.mode,a=Jl({mode:"visible",children:a.children},o),(s=Hr(s,o,n,null)).flags|=2,a.return=t,s.return=t,a.sibling=s,t.child=a,ho(t,e.child,null,n),(a=t.child).memoizedState=Kl(n),a.childLanes=Ql(e,r,n),t.memoizedState=Yl,t=zl(null,a));else if(Io(t),jd(s)){if(r=s.nextSibling&&s.nextSibling.dataset)var c=r.dgst;r=c,(a=Error(i(419))).stack="",a.digest=r,ka({value:a,source:null,stack:null}),t=es(e,t,n)}else if(Ll||Na(e,t,n,!1),r=0!==(n&e.childLanes),Ll||r){if(null!==(r=hu)&&(0!==(a=Ie(r,n))&&a!==u.retryLane))throw u.retryLane=a,Lr(e,a),Yu(r,e,a),jl;Od(s)||ic(),t=es(e,t,n)}else Od(s)?(t.flags|=192,t.child=e.child,t=null):(e=u.treeContext,ca=Ld(s.nextSibling),ua=t,da=!0,fa=null,pa=!1,null!==e&&sa(t,e),(t=Zl(t,a.children)).flags|=4096);return t}return o?(Mo(),s=a.fallback,o=t.mode,c=(u=e.child).sibling,(a=Br(u,{mode:"hidden",children:a.children})).subtreeFlags=65011712&u.subtreeFlags,null!==c?s=Br(c,s):(s=Hr(s,o,n,null)).flags|=2,s.return=t,a.return=t,a.sibling=s,t.child=a,zl(null,a),a=t.child,null===(s=e.child.memoizedState)?s=Kl(n):(null!==(o=s.cachePool)?(u=Ma._currentValue,o=o.parent!==u?{parent:u,pool:u}:o):o=Qa(),s={baseLanes:s.baseLanes|n,cachePool:o}),a.memoizedState=s,a.childLanes=Ql(e,r,n),t.memoizedState=Yl,zl(e.child,a)):(Io(t),e=(n=e.child).sibling,(n=Br(n,{mode:"visible",children:a.children})).return=t,n.sibling=null,null!==e&&(null===(r=t.deletions)?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Zl(e,t){return(t=Jl({mode:"visible",children:t},e.mode)).return=e,e.child=t}function Jl(e,t){return(e=Mr(22,e,null,t)).lanes=0,e}function es(e,t,n){return ho(t,e.child,null,n),(e=Zl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function ts(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Ca(e.return,t,n)}function ns(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,treeForkCount:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.treeForkCount=o)}function rs(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;r=r.children;var i=Bo.current,l=!!(2&i);if(l?(i=1&i|2,t.flags|=128):i&=1,$(Bo,i),Rl(e,t,r,n),r=da?Zr:0,!l&&null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ts(e,n,t);else if(19===e.tag)ts(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===$o(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),ns(t,!1,a,n,o,r);break;case"backwards":case"unstable_legacy-backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===$o(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}ns(t,!0,n,null,o,r);break;case"together":ns(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function as(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Eu|=t.lanes,0===(n&t.childLanes)){if(null===e)return null;if(Na(e,t,n,!1),0===(n&t.childLanes))return null}if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Br(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Br(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function os(e,t){return 0!==(e.lanes&t)||!(null===(e=e.dependencies)||!Pa(e))}function is(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps)Ll=!0;else{if(!(os(e,n)||128&t.flags))return Ll=!1,function(e,t,n){switch(t.tag){case 3:Y(t,t.stateNode.containerInfo),_a(0,Ma,e.memoizedState.cache),va();break;case 27:case 5:Q(t);break;case 4:Y(t,t.stateNode.containerInfo);break;case 10:_a(0,t.type,t.memoizedProps.value);break;case 31:if(null!==t.memoizedState)return t.flags|=128,Do(t),null;break;case 13:var r=t.memoizedState;if(null!==r)return null!==r.dehydrated?(Io(t),t.flags|=128,null):0!==(n&t.child.childLanes)?Xl(e,t,n):(Io(t),null!==(e=as(e,t,n))?e.sibling:null);Io(t);break;case 19:var a=!!(128&e.flags);if((r=0!==(n&t.childLanes))||(Na(e,t,n,!1),r=0!==(n&t.childLanes)),a){if(r)return rs(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),$(Bo,Bo.current),r)break;return null;case 22:return t.lanes=0,Ml(e,t,n,t.pendingProps);case 24:_a(0,Ma,e.memoizedState.cache)}return as(e,t,n)}(e,t,n);Ll=!!(131072&e.flags)}else Ll=!1,da&&1048576&t.flags&&oa(t,Zr,t.index);switch(t.lanes=0,t.tag){case 16:e:{var r=t.pendingProps;if(e=ro(t.elementType),t.type=e,"function"!=typeof e){if(null!=e){var a=e.$$typeof;if(a===S){t.tag=11,t=Il(null,t,e,r,n);break e}if(a===_){t.tag=14,t=Dl(null,t,e,r,n);break e}}throw t=j(e)||e,Error(i(306,t,""))}zr(e)?(r=xl(e,r),t.tag=1,t=Gl(null,t,e,r,n)):(t.tag=0,t=Vl(null,t,e,r,n))}return t;case 0:return Vl(e,t,t.type,t.pendingProps,n);case 1:return Gl(e,t,r=t.type,a=xl(r,t.pendingProps),n);case 3:e:{if(Y(t,t.stateNode.containerInfo),null===e)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,bo(e,t),_o(t,r,null,n);var l=t.memoizedState;if(r=l.cache,_a(0,Ma,r),r!==o.cache&&Ta(t,[Ma],n,!0),Eo(),r=l.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:l.cache},t.updateQueue.baseState=o,t.memoizedState=o,256&t.flags){t=ql(e,t,r,n);break e}if(r!==a){ka(a=Yr(Error(i(424)),t)),t=ql(e,t,r,n);break e}if(9===(e=t.stateNode.containerInfo).nodeType)e=e.body;else e="HTML"===e.nodeName?e.ownerDocument.body:e;for(ca=Ld(e.firstChild),ua=t,da=!0,fa=null,pa=!0,n=mo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(va(),r===a){t=as(e,t,n);break e}Rl(e,t,r,n)}t=t.child}return t;case 26:return Hl(e,t),null===e?(n=Wd(t.type,null,t.pendingProps,null))?t.memoizedState=n:da||(n=t.type,e=t.pendingProps,(r=gd(G.current).createElement(n))[$e]=t,r[Ue]=e,fd(r,n,e),et(r),t.stateNode=r):t.memoizedState=Wd(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Q(t),null===e&&da&&(r=t.stateNode=Fd(t.type,t.pendingProps,G.current),ua=t,pa=!0,a=ca,Ad(t.type)?(Rd=a,ca=Ld(r.firstChild)):ca=a),Rl(e,t,t.pendingProps.children,n),Hl(e,t),null===e&&(t.flags|=4194304),t.child;case 5:return null===e&&da&&((a=r=ca)&&(null!==(r=function(e,t,n,r){for(;1===e.nodeType;){var a=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[Ye])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(o=e.getAttribute("rel"))&&e.hasAttribute("data-precedence"))break;if(o!==a.rel||e.getAttribute("href")!==(null==a.href||""===a.href?null:a.href)||e.getAttribute("crossorigin")!==(null==a.crossOrigin?null:a.crossOrigin)||e.getAttribute("title")!==(null==a.title?null:a.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((o=e.getAttribute("src"))!==(null==a.src?null:a.src)||e.getAttribute("type")!==(null==a.type?null:a.type)||e.getAttribute("crossorigin")!==(null==a.crossOrigin?null:a.crossOrigin))&&o&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==t||"hidden"!==e.type)return e;var o=null==a.name?null:""+a.name;if("hidden"===a.type&&e.getAttribute("name")===o)return e}if(null===(e=Ld(e.nextSibling)))break}return null}(r,t.type,t.pendingProps,pa))?(t.stateNode=r,ua=t,ca=Ld(r.firstChild),pa=!1,a=!0):a=!1),a||ma(t)),Q(t),a=t.type,o=t.pendingProps,l=null!==e?e.memoizedProps:null,r=o.children,vd(a,o)?r=null:null!==l&&vd(a,l)&&(t.flags|=32),null!==t.memoizedState&&(a=ti(e,t,ai,null,null,n),df._currentValue=a),Hl(e,t),Rl(e,t,r,n),t.child;case 6:return null===e&&da&&((e=n=ca)&&(null!==(n=function(e,t,n){if(""===t)return null;for(;3!==e.nodeType;){if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!n)return null;if(null===(e=Ld(e.nextSibling)))return null}return e}(n,t.pendingProps,pa))?(t.stateNode=n,ua=t,ca=null,e=!0):e=!1),e||ma(t)),null;case 13:return Xl(e,t,n);case 4:return Y(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ho(t,null,r,n):Rl(e,t,r,n),t.child;case 11:return Il(e,t,t.type,t.pendingProps,n);case 7:return Rl(e,t,t.pendingProps,n),t.child;case 8:case 12:return Rl(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,_a(0,t.type,r.value),Rl(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,Oa(t),r=r(a=ja(a)),t.flags|=1,Rl(e,t,r,n),t.child;case 14:return Dl(e,t,t.type,t.pendingProps,n);case 15:return Fl(e,t,t.type,t.pendingProps,n);case 19:return rs(e,t,n);case 31:return function(e,t,n){var r=t.pendingProps,a=!!(128&t.flags);if(t.flags&=-129,null===e){if(da){if("hidden"===r.mode)return e=$l(t,r),t.lanes=536870912,zl(null,e);if(Do(t),(e=ca)?null!==(e=null!==(e=Pd(e,pa))&&"&"===e.data?e:null)&&(t.memoizedState={dehydrated:e,treeContext:null!==ta?{id:na,overflow:ra}:null,retryLane:536870912,hydrationErrors:null},(n=Wr(e)).return=t,t.child=n,ua=t,ca=null):e=null,null===e)throw ma(t);return t.lanes=536870912,null}return $l(t,r)}var o=e.memoizedState;if(null!==o){var l=o.dehydrated;if(Do(t),a)if(256&t.flags)t.flags&=-257,t=Ul(e,t,n);else{if(null===t.memoizedState)throw Error(i(558));t.child=e.child,t.flags|=128,t=null}else if(Ll||Na(e,t,n,!1),a=0!==(n&e.childLanes),Ll||a){if(null!==(r=hu)&&0!==(l=Ie(r,n))&&l!==o.retryLane)throw o.retryLane=l,Lr(e,l),Yu(r,e,l),jl;ic(),t=Ul(e,t,n)}else e=o.treeContext,ca=Ld(l.nextSibling),ua=t,da=!0,fa=null,pa=!1,null!==e&&sa(t,e),(t=$l(t,r)).flags|=4096;return t}return(e=Br(e.child,{mode:r.mode,children:r.children})).ref=t.ref,t.child=e,e.return=t,e}(e,t,n);case 22:return Ml(e,t,n,t.pendingProps);case 24:return Oa(t),r=ja(Ma),null===e?(null===(a=Ya())&&(a=hu,o=za(),a.pooledCache=o,o.refCount++,null!==o&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},yo(t),_a(0,Ma,a)):(0!==(e.lanes&n)&&(bo(e,t),_o(t,null,null,n),Eo()),a=e.memoizedState,o=t.memoizedState,a.parent!==r?(a={parent:r,cache:r},t.memoizedState=a,0===t.lanes&&(t.memoizedState=t.updateQueue.baseState=a),_a(0,Ma,r)):(r=o.cache,_a(0,Ma,r),r!==a.cache&&Ta(t,[Ma],n,!0))),Rl(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function ls(e){e.flags|=4}function ss(e,t,n,r,a){if((t=!!(32&e.mode))&&(t=!1),t){if(e.flags|=16777216,(335544128&a)===a)if(e.stateNode.complete)e.flags|=8192;else{if(!rc())throw ao=eo,Za;e.flags|=8192}}else e.flags&=-16777217}function us(e,t){if("stylesheet"!==t.type||4&t.state.loading)e.flags&=-16777217;else if(e.flags|=16777216,!af(t)){if(!rc())throw ao=eo,Za;e.flags|=8192}}function cs(e,t){null!==t&&(e.flags|=4),16384&e.flags&&(t=22!==e.tag?Pe():536870912,e.lanes|=t,Tu|=t)}function ds(e,t){if(!da)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function fs(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=65011712&a.subtreeFlags,r|=65011712&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function ps(e,t,n){var r=t.pendingProps;switch(la(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 1:return fs(t),null;case 3:return n=t.stateNode,r=null,null!==e&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Aa(Ma),K(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||(ba(t)?ls(t):null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,wa())),fs(t),null;case 26:var a=t.type,o=t.memoizedState;return null===e?(ls(t),null!==o?(fs(t),us(t,o)):(fs(t),ss(t,a,0,0,n))):o?o!==e.memoizedState?(ls(t),fs(t),us(t,o)):(fs(t),t.flags&=-16777217):((e=e.memoizedProps)!==r&&ls(t),fs(t),ss(t,a,0,0,n)),null;case 27:if(X(t),n=G.current,a=t.type,null!==e&&null!=t.stateNode)e.memoizedProps!==r&&ls(t);else{if(!r){if(null===t.stateNode)throw Error(i(166));return fs(t),null}e=V.current,ba(t)?ga(t):(e=Fd(a,r,n),t.stateNode=e,ls(t))}return fs(t),null;case 5:if(X(t),a=t.type,null!==e&&null!=t.stateNode)e.memoizedProps!==r&&ls(t);else{if(!r){if(null===t.stateNode)throw Error(i(166));return fs(t),null}if(o=V.current,ba(t))ga(t);else{var l=gd(G.current);switch(o){case 1:o=l.createElementNS("http://www.w3.org/2000/svg",a);break;case 2:o=l.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;default:switch(a){case"svg":o=l.createElementNS("http://www.w3.org/2000/svg",a);break;case"math":o=l.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;case"script":(o=l.createElement("div")).innerHTML="<script><\/script>",o=o.removeChild(o.firstChild);break;case"select":o="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o="string"==typeof r.is?l.createElement(a,{is:r.is}):l.createElement(a)}}o[$e]=t,o[Ue]=r;e:for(l=t.child;null!==l;){if(5===l.tag||6===l.tag)o.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===t)break e;for(;null===l.sibling;){if(null===l.return||l.return===t)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}t.stateNode=o;e:switch(fd(o,a,r),a){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&ls(t)}}return fs(t),ss(t,t.type,null===e||e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&ls(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=G.current,ba(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(a=ua))switch(a.tag){case 27:case 5:r=a.memoizedProps}e[$e]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ud(e.nodeValue,n)))||ma(t,!0)}else(e=gd(e).createTextNode(r))[$e]=t,t.stateNode=e}return fs(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=ba(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[$e]=t}else va(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),e=!1}else n=wa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?(zo(t),t):(zo(t),null);if(128&t.flags)throw Error(i(558))}return fs(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(a=ba(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(i(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(i(317));a[$e]=t}else va(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),a=!1}else a=wa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return 256&t.flags?(zo(t),t):(zo(t),null)}return zo(t),128&t.flags?(t.lanes=n,t):(n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(a=null,null!==(r=t.child).alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(a=r.alternate.memoizedState.cachePool.pool),o=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),cs(t,t.updateQueue),fs(t),null);case 4:return K(),null===e&&Jc(t.stateNode.containerInfo),fs(t),null;case 10:return Aa(t.type),fs(t),null;case 19:if(B(Bo),null===(r=t.memoizedState))return fs(t),null;if(a=!!(128&t.flags),null===(o=r.rendering))if(a)ds(r,!1);else{if(0!==xu||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(o=$o(e))){for(t.flags|=128,ds(r,!1),e=o.updateQueue,t.updateQueue=e,cs(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)$r(n,e),n=n.sibling;return $(Bo,1&Bo.current|2),da&&aa(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&se()>Ru&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=$o(o))){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,cs(t,e),ds(r,!0),null===r.tail&&"hidden"===r.tailMode&&!o.alternate&&!da)return fs(t),null}else 2*se()-r.renderingStartTime>Ru&&536870912!==n&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(null!==(e=r.last)?e.sibling=o:t.child=o,r.last=o)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=se(),e.sibling=null,n=Bo.current,$(Bo,a?1&n|2:1&n),da&&aa(t,r.treeForkCount),e):(fs(t),null);case 22:case 23:return zo(t),jo(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?!!(536870912&n)&&!(128&t.flags)&&(fs(t),6&t.subtreeFlags&&(t.flags|=8192)):fs(t),null!==(n=t.updateQueue)&&cs(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&B(qa),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Aa(Ma),fs(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}function hs(e,t){switch(la(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Aa(Ma),K(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return X(t),null;case 31:if(null!==t.memoizedState){if(zo(t),null===t.alternate)throw Error(i(340));va()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(zo(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));va()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return B(Bo),null;case 4:return K(),null;case 10:return Aa(t.type),null;case 22:case 23:return zo(t),jo(),null!==e&&B(qa),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return Aa(Ma),null;default:return null}}function ms(e,t){switch(la(t),t.tag){case 3:Aa(Ma),K();break;case 26:case 27:case 5:X(t);break;case 4:K();break;case 31:null!==t.memoizedState&&zo(t);break;case 13:zo(t);break;case 19:B(Bo);break;case 10:Aa(t.type);break;case 22:case 23:zo(t),jo(),null!==e&&B(qa);break;case 24:Aa(Ma)}}function gs(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var a=r.next;n=a;do{if((n.tag&e)===e){r=void 0;var o=n.create,i=n.inst;r=o(),i.destroy=r}n=n.next}while(n!==a)}}catch(l){xc(t,t.return,l)}}function ys(e,t,n){try{var r=t.updateQueue,a=null!==r?r.lastEffect:null;if(null!==a){var o=a.next;r=o;do{if((r.tag&e)===e){var i=r.inst,l=i.destroy;if(void 0!==l){i.destroy=void 0,a=t;var s=n,u=l;try{u()}catch(c){xc(a,s,c)}}}r=r.next}while(r!==o)}}catch(c){xc(t,t.return,c)}}function bs(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{Co(t,n)}catch(r){xc(e,e.return,r)}}}function vs(e,t,n){n.props=xl(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){xc(e,t,r)}}function ws(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(a){xc(e,t,a)}}function ks(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(a){xc(e,t,a)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(o){xc(e,t,o)}else n.current=null}function Ss(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(a){xc(e,e.return,a)}}function xs(e,t,n){try{var r=e.stateNode;!function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var a=null,o=null,l=null,s=null,u=null,c=null,d=null;for(h in n){var f=n[h];if(n.hasOwnProperty(h)&&null!=f)switch(h){case"checked":case"value":break;case"defaultValue":u=f;default:r.hasOwnProperty(h)||cd(e,t,h,null,r,f)}}for(var p in r){var h=r[p];if(f=n[p],r.hasOwnProperty(p)&&(null!=h||null!=f))switch(p){case"type":o=h;break;case"name":a=h;break;case"checked":c=h;break;case"defaultChecked":d=h;break;case"value":l=h;break;case"defaultValue":s=h;break;case"children":case"dangerouslySetInnerHTML":if(null!=h)throw Error(i(137,t));break;default:h!==f&&cd(e,t,p,h,r,f)}}return void bt(e,l,s,u,c,d,o,a);case"select":for(o in h=l=s=p=null,n)if(u=n[o],n.hasOwnProperty(o)&&null!=u)switch(o){case"value":break;case"multiple":h=u;default:r.hasOwnProperty(o)||cd(e,t,o,null,r,u)}for(a in r)if(o=r[a],u=n[a],r.hasOwnProperty(a)&&(null!=o||null!=u))switch(a){case"value":p=o;break;case"defaultValue":s=o;break;case"multiple":l=o;default:o!==u&&cd(e,t,a,o,r,u)}return t=s,n=l,r=h,void(null!=p?kt(e,!!n,p,!1):!!r!=!!n&&(null!=t?kt(e,!!n,t,!0):kt(e,!!n,n?[]:"",!1)));case"textarea":for(s in h=p=null,n)if(a=n[s],n.hasOwnProperty(s)&&null!=a&&!r.hasOwnProperty(s))switch(s){case"value":case"children":break;default:cd(e,t,s,null,r,a)}for(l in r)if(a=r[l],o=n[l],r.hasOwnProperty(l)&&(null!=a||null!=o))switch(l){case"value":p=a;break;case"defaultValue":h=a;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=a)throw Error(i(91));break;default:a!==o&&cd(e,t,l,a,r,o)}return void St(e,p,h);case"option":for(var m in n)if(p=n[m],n.hasOwnProperty(m)&&null!=p&&!r.hasOwnProperty(m))if("selected"===m)e.selected=!1;else cd(e,t,m,null,r,p);for(u in r)if(p=r[u],h=n[u],r.hasOwnProperty(u)&&p!==h&&(null!=p||null!=h))if("selected"===u)e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p;else cd(e,t,u,p,r,h);return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)p=n[g],n.hasOwnProperty(g)&&null!=p&&!r.hasOwnProperty(g)&&cd(e,t,g,null,r,p);for(c in r)if(p=r[c],h=n[c],r.hasOwnProperty(c)&&p!==h&&(null!=p||null!=h))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(i(137,t));break;default:cd(e,t,c,p,r,h)}return;default:if(Tt(t)){for(var y in n)p=n[y],n.hasOwnProperty(y)&&void 0!==p&&!r.hasOwnProperty(y)&&dd(e,t,y,void 0,r,p);for(d in r)p=r[d],h=n[d],!r.hasOwnProperty(d)||p===h||void 0===p&&void 0===h||dd(e,t,d,p,r,h);return}}for(var b in n)p=n[b],n.hasOwnProperty(b)&&null!=p&&!r.hasOwnProperty(b)&&cd(e,t,b,null,r,p);for(f in r)p=r[f],h=n[f],!r.hasOwnProperty(f)||p===h||null==p&&null==h||cd(e,t,f,p,r,h)}(r,e.type,n,t),r[Ue]=t}catch(a){xc(e,e.return,a)}}function Es(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&Ad(e.type)||4===e.tag}function _s(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Es(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&Ad(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function As(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=jt));else if(4!==r&&(27===r&&Ad(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(As(e,t,n),e=e.sibling;null!==e;)As(e,t,n),e=e.sibling}function Cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&Ad(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(Cs(e,t,n),e=e.sibling;null!==e;)Cs(e,t,n),e=e.sibling}function Ts(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,a=t.attributes;a.length;)t.removeAttributeNode(a[0]);fd(t,r,n),t[$e]=e,t[Ue]=n}catch(o){xc(e,e.return,o)}}var Ns=!1,Ps=!1,Os=!1,js="function"==typeof WeakSet?WeakSet:Set,Ls=null;function Rs(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Ys(e,n),4&r&&gs(5,n);break;case 1:if(Ys(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(i){xc(n,n.return,i)}else{var a=xl(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(a,t,e.__reactInternalSnapshotBeforeUpdate)}catch(l){xc(n,n.return,l)}}64&r&&bs(n),512&r&&ws(n,n.return);break;case 3:if(Ys(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{Co(e,t)}catch(i){xc(n,n.return,i)}}break;case 27:null===t&&4&r&&Ts(n);case 26:case 5:Ys(e,n),null===t&&4&r&&Ss(n),512&r&&ws(n,n.return);break;case 12:Ys(e,n);break;case 31:Ys(e,n),4&r&&Bs(e,n);break;case 13:Ys(e,n),4&r&&$s(e,n),64&r&&(null!==(e=n.memoizedState)&&(null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$~"===e.data)e._reactRetry=t;else if("$?"!==e.data||"loading"!==n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=Cc.bind(null,n))));break;case 22:if(!(r=null!==n.memoizedState||Ns)){t=null!==t&&null!==t.memoizedState||Ps,a=Ns;var o=Ps;Ns=r,(Ps=t)&&!o?Qs(e,n,!!(8772&n.subtreeFlags)):Ys(e,n),Ns=a,Ps=o}break;case 30:break;default:Ys(e,n)}}function Is(e){var t=e.alternate;null!==t&&(e.alternate=null,Is(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&Ke(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Ds=null,Fs=!1;function Ms(e,t,n){for(n=n.child;null!==n;)zs(e,t,n),n=n.sibling}function zs(e,t,n){if(be&&"function"==typeof be.onCommitFiberUnmount)try{be.onCommitFiberUnmount(ye,n)}catch(o){}switch(n.tag){case 26:Ps||ks(n,t),Ms(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:Ps||ks(n,t);var r=Ds,a=Fs;Ad(n.type)&&(Ds=n.stateNode,Fs=!1),Ms(e,t,n),Md(n.stateNode),Ds=r,Fs=a;break;case 5:Ps||ks(n,t);case 6:if(r=Ds,a=Fs,Ds=null,Ms(e,t,n),Fs=a,null!==(Ds=r))if(Fs)try{(9===Ds.nodeType?Ds.body:"HTML"===Ds.nodeName?Ds.ownerDocument.body:Ds).removeChild(n.stateNode)}catch(i){xc(n,t,i)}else try{Ds.removeChild(n.stateNode)}catch(i){xc(n,t,i)}break;case 18:null!==Ds&&(Fs?(Cd(9===(e=Ds).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),Wf(e)):Cd(Ds,n.stateNode));break;case 4:r=Ds,a=Fs,Ds=n.stateNode.containerInfo,Fs=!0,Ms(e,t,n),Ds=r,Fs=a;break;case 0:case 11:case 14:case 15:ys(2,n,t),Ps||ys(4,n,t),Ms(e,t,n);break;case 1:Ps||(ks(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount&&vs(n,t,r)),Ms(e,t,n);break;case 21:Ms(e,t,n);break;case 22:Ps=(r=Ps)||null!==n.memoizedState,Ms(e,t,n),Ps=r;break;default:Ms(e,t,n)}}function Bs(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&null!==(e=e.memoizedState))){e=e.dehydrated;try{Wf(e)}catch(n){xc(t,t.return,n)}}}function $s(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&(null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))))try{Wf(e)}catch(n){xc(t,t.return,n)}}function Us(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new js),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new js),t;default:throw Error(i(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Tc.bind(null,e,t);t.then(r,r)}})}function Hs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r],o=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 27:if(Ad(s.type)){Ds=s.stateNode,Fs=!1;break e}break;case 5:Ds=s.stateNode,Fs=!1;break e;case 3:case 4:Ds=s.stateNode.containerInfo,Fs=!0;break e}s=s.return}if(null===Ds)throw Error(i(160));zs(o,l,a),Ds=null,Fs=!1,null!==(o=a.alternate)&&(o.return=null),a.return=null}if(13886&t.subtreeFlags)for(t=t.child;null!==t;)Ws(t,e),t=t.sibling}var Vs=null;function Ws(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Hs(t,e),Gs(e),4&r&&(ys(3,e,e.return),gs(3,e),ys(5,e,e.return));break;case 1:Hs(t,e),Gs(e),512&r&&(Ps||null===n||ks(n,n.return)),64&r&&Ns&&(null!==(e=e.updateQueue)&&(null!==(r=e.callbacks)&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=null===n?r:n.concat(r))));break;case 26:var a=Vs;if(Hs(t,e),Gs(e),512&r&&(Ps||null===n||ks(n,n.return)),4&r){var o=null!==n?n.memoizedState:null;if(r=e.memoizedState,null===n)if(null===r)if(null===e.stateNode){e:{r=e.type,n=e.memoizedProps,a=a.ownerDocument||a;t:switch(r){case"title":(!(o=a.getElementsByTagName("title")[0])||o[Ye]||o[$e]||"http://www.w3.org/2000/svg"===o.namespaceURI||o.hasAttribute("itemprop"))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector("head > title"))),fd(o,r,n),o[$e]=e,et(o),r=o;break e;case"link":var l=nf("link","href",a).get(r+(n.href||""));if(l)for(var s=0;s<l.length;s++)if((o=l[s]).getAttribute("href")===(null==n.href||""===n.href?null:n.href)&&o.getAttribute("rel")===(null==n.rel?null:n.rel)&&o.getAttribute("title")===(null==n.title?null:n.title)&&o.getAttribute("crossorigin")===(null==n.crossOrigin?null:n.crossOrigin)){l.splice(s,1);break t}fd(o=a.createElement(r),r,n),a.head.appendChild(o);break;case"meta":if(l=nf("meta","content",a).get(r+(n.content||"")))for(s=0;s<l.length;s++)if((o=l[s]).getAttribute("content")===(null==n.content?null:""+n.content)&&o.getAttribute("name")===(null==n.name?null:n.name)&&o.getAttribute("property")===(null==n.property?null:n.property)&&o.getAttribute("http-equiv")===(null==n.httpEquiv?null:n.httpEquiv)&&o.getAttribute("charset")===(null==n.charSet?null:n.charSet)){l.splice(s,1);break t}fd(o=a.createElement(r),r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[$e]=e,et(o),r=o}e.stateNode=r}else rf(a,e.type,e.stateNode);else e.stateNode=Xd(a,r,e.memoizedProps);else o!==r?(null===o?null!==n.stateNode&&(n=n.stateNode).parentNode.removeChild(n):o.count--,null===r?rf(a,e.type,e.stateNode):Xd(a,r,e.memoizedProps)):null===r&&null!==e.stateNode&&xs(e,e.memoizedProps,n.memoizedProps)}break;case 27:Hs(t,e),Gs(e),512&r&&(Ps||null===n||ks(n,n.return)),null!==n&&4&r&&xs(e,e.memoizedProps,n.memoizedProps);break;case 5:if(Hs(t,e),Gs(e),512&r&&(Ps||null===n||ks(n,n.return)),32&e.flags){a=e.stateNode;try{Et(a,"")}catch(m){xc(e,e.return,m)}}4&r&&null!=e.stateNode&&xs(e,a=e.memoizedProps,null!==n?n.memoizedProps:a),1024&r&&(Os=!0);break;case 6:if(Hs(t,e),Gs(e),4&r){if(null===e.stateNode)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(m){xc(e,e.return,m)}}break;case 3:if(tf=null,a=Vs,Vs=$d(t.containerInfo),Hs(t,e),Vs=a,Gs(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Wf(t.containerInfo)}catch(m){xc(e,e.return,m)}Os&&(Os=!1,qs(e));break;case 4:r=Vs,Vs=$d(e.stateNode.containerInfo),Hs(t,e),Gs(e),Vs=r;break;case 12:default:Hs(t,e),Gs(e);break;case 31:case 19:Hs(t,e),Gs(e),4&r&&(null!==(r=e.updateQueue)&&(e.updateQueue=null,Us(e,r)));break;case 13:Hs(t,e),Gs(e),8192&e.child.flags&&null!==e.memoizedState!=(null!==n&&null!==n.memoizedState)&&(ju=se()),4&r&&(null!==(r=e.updateQueue)&&(e.updateQueue=null,Us(e,r)));break;case 22:a=null!==e.memoizedState;var u=null!==n&&null!==n.memoizedState,c=Ns,d=Ps;if(Ns=c||a,Ps=d||u,Hs(t,e),Ps=d,Ns=c,Gs(e),8192&r)e:for(t=e.stateNode,t._visibility=a?-2&t._visibility:1|t._visibility,a&&(null===n||u||Ns||Ps||Ks(e)),n=null,t=e;;){if(5===t.tag||26===t.tag){if(null===n){u=n=t;try{if(o=u.stateNode,a)"function"==typeof(l=o.style).setProperty?l.setProperty("display","none","important"):l.display="none";else{s=u.stateNode;var f=u.memoizedProps.style,p=null!=f&&f.hasOwnProperty("display")?f.display:null;s.style.display=null==p||"boolean"==typeof p?"":(""+p).trim()}}catch(m){xc(u,u.return,m)}}}else if(6===t.tag){if(null===n){u=t;try{u.stateNode.nodeValue=a?"":u.memoizedProps}catch(m){xc(u,u.return,m)}}}else if(18===t.tag){if(null===n){u=t;try{var h=u.stateNode;a?Td(h,!0):Td(u.stateNode,!1)}catch(m){xc(u,u.return,m)}}}else if((22!==t.tag&&23!==t.tag||null===t.memoizedState||t===e)&&null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;null===t.sibling;){if(null===t.return||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}4&r&&(null!==(r=e.updateQueue)&&(null!==(n=r.retryQueue)&&(r.retryQueue=null,Us(e,n))));case 30:case 21:}}function Gs(e){var t=e.flags;if(2&t){try{for(var n,r=e.return;null!==r;){if(Es(r)){n=r;break}r=r.return}if(null==n)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;Cs(e,_s(e),a);break;case 5:var o=n.stateNode;32&n.flags&&(Et(o,""),n.flags&=-33),Cs(e,_s(e),o);break;case 3:case 4:var l=n.stateNode.containerInfo;As(e,_s(e),l);break;default:throw Error(i(161))}}catch(s){xc(e,e.return,s)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function qs(e){if(1024&e.subtreeFlags)for(e=e.child;null!==e;){var t=e;qs(t),5===t.tag&&1024&t.flags&&t.stateNode.reset(),e=e.sibling}}function Ys(e,t){if(8772&t.subtreeFlags)for(t=t.child;null!==t;)Rs(e,t.alternate,t),t=t.sibling}function Ks(e){for(e=e.child;null!==e;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ys(4,t,t.return),Ks(t);break;case 1:ks(t,t.return);var n=t.stateNode;"function"==typeof n.componentWillUnmount&&vs(t,t.return,n),Ks(t);break;case 27:Md(t.stateNode);case 26:case 5:ks(t,t.return),Ks(t);break;case 22:null===t.memoizedState&&Ks(t);break;default:Ks(t)}e=e.sibling}}function Qs(e,t,n){for(n=n&&!!(8772&t.subtreeFlags),t=t.child;null!==t;){var r=t.alternate,a=e,o=t,i=o.flags;switch(o.tag){case 0:case 11:case 15:Qs(a,o,n),gs(4,o);break;case 1:if(Qs(a,o,n),"function"==typeof(a=(r=o).stateNode).componentDidMount)try{a.componentDidMount()}catch(u){xc(r,r.return,u)}if(null!==(a=(r=o).updateQueue)){var l=r.stateNode;try{var s=a.shared.hiddenCallbacks;if(null!==s)for(a.shared.hiddenCallbacks=null,a=0;a<s.length;a++)Ao(s[a],l)}catch(u){xc(r,r.return,u)}}n&&64&i&&bs(o),ws(o,o.return);break;case 27:Ts(o);case 26:case 5:Qs(a,o,n),n&&null===r&&4&i&&Ss(o),ws(o,o.return);break;case 12:Qs(a,o,n);break;case 31:Qs(a,o,n),n&&4&i&&Bs(a,o);break;case 13:Qs(a,o,n),n&&4&i&&$s(a,o);break;case 22:null===o.memoizedState&&Qs(a,o,n),ws(o,o.return);break;case 30:break;default:Qs(a,o,n)}t=t.sibling}}function Xs(e,t){var n=null;null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),e=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(e=t.memoizedState.cachePool.pool),e!==n&&(null!=e&&e.refCount++,null!=n&&Ba(n))}function Zs(e,t){e=null,null!==t.alternate&&(e=t.alternate.memoizedState.cache),(t=t.memoizedState.cache)!==e&&(t.refCount++,null!=e&&Ba(e))}function Js(e,t,n,r){if(10256&t.subtreeFlags)for(t=t.child;null!==t;)eu(e,t,n,r),t=t.sibling}function eu(e,t,n,r){var a=t.flags;switch(t.tag){case 0:case 11:case 15:Js(e,t,n,r),2048&a&&gs(9,t);break;case 1:case 31:case 13:default:Js(e,t,n,r);break;case 3:Js(e,t,n,r),2048&a&&(e=null,null!==t.alternate&&(e=t.alternate.memoizedState.cache),(t=t.memoizedState.cache)!==e&&(t.refCount++,null!=e&&Ba(e)));break;case 12:if(2048&a){Js(e,t,n,r),e=t.stateNode;try{var o=t.memoizedProps,i=o.id,l=o.onPostCommit;"function"==typeof l&&l(i,null===t.alternate?"mount":"update",e.passiveEffectDuration,-0)}catch(s){xc(t,t.return,s)}}else Js(e,t,n,r);break;case 23:break;case 22:o=t.stateNode,i=t.alternate,null!==t.memoizedState?2&o._visibility?Js(e,t,n,r):nu(e,t):2&o._visibility?Js(e,t,n,r):(o._visibility|=2,tu(e,t,n,r,!!(10256&t.subtreeFlags)||!1)),2048&a&&Xs(i,t);break;case 24:Js(e,t,n,r),2048&a&&Zs(t.alternate,t)}}function tu(e,t,n,r,a){for(a=a&&(!!(10256&t.subtreeFlags)||!1),t=t.child;null!==t;){var o=e,i=t,l=n,s=r,u=i.flags;switch(i.tag){case 0:case 11:case 15:tu(o,i,l,s,a),gs(8,i);break;case 23:break;case 22:var c=i.stateNode;null!==i.memoizedState?2&c._visibility?tu(o,i,l,s,a):nu(o,i):(c._visibility|=2,tu(o,i,l,s,a)),a&&2048&u&&Xs(i.alternate,i);break;case 24:tu(o,i,l,s,a),a&&2048&u&&Zs(i.alternate,i);break;default:tu(o,i,l,s,a)}t=t.sibling}}function nu(e,t){if(10256&t.subtreeFlags)for(t=t.child;null!==t;){var n=e,r=t,a=r.flags;switch(r.tag){case 22:nu(n,r),2048&a&&Xs(r.alternate,r);break;case 24:nu(n,r),2048&a&&Zs(r.alternate,r);break;default:nu(n,r)}t=t.sibling}}var ru=8192;function au(e,t,n){if(e.subtreeFlags&ru)for(e=e.child;null!==e;)ou(e,t,n),e=e.sibling}function ou(e,t,n){switch(e.tag){case 26:au(e,t,n),e.flags&ru&&null!==e.memoizedState&&function(e,t,n,r){if(!("stylesheet"!==n.type||"string"==typeof r.media&&!1===matchMedia(r.media).matches||4&n.state.loading)){if(null===n.instance){var a=Gd(r.href),o=t.querySelector(qd(a));if(o)return null!==(t=o._p)&&"object"==typeof t&&"function"==typeof t.then&&(e.count++,e=lf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=o,void et(o);o=t.ownerDocument||t,r=Yd(r),(a=zd.get(a))&&Jd(r,a),et(o=o.createElement("link"));var i=o;i._p=new Promise(function(e,t){i.onload=e,i.onerror=t}),fd(o,"link",r),n.instance=o}null===e.stylesheets&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(3&n.state.loading)&&(e.count++,n=lf.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}(n,Vs,e.memoizedState,e.memoizedProps);break;case 5:default:au(e,t,n);break;case 3:case 4:var r=Vs;Vs=$d(e.stateNode.containerInfo),au(e,t,n),Vs=r;break;case 22:null===e.memoizedState&&(null!==(r=e.alternate)&&null!==r.memoizedState?(r=ru,ru=16777216,au(e,t,n),ru=r):au(e,t,n))}}function iu(e){var t=e.alternate;if(null!==t&&null!==(e=t.child)){t.child=null;do{t=e.sibling,e.sibling=null,e=t}while(null!==e)}}function lu(e){var t=e.deletions;if(16&e.flags){if(null!==t)for(var n=0;n<t.length;n++){var r=t[n];Ls=r,cu(r,e)}iu(e)}if(10256&e.subtreeFlags)for(e=e.child;null!==e;)su(e),e=e.sibling}function su(e){switch(e.tag){case 0:case 11:case 15:lu(e),2048&e.flags&&ys(9,e,e.return);break;case 3:case 12:default:lu(e);break;case 22:var t=e.stateNode;null!==e.memoizedState&&2&t._visibility&&(null===e.return||13!==e.return.tag)?(t._visibility&=-3,uu(e)):lu(e)}}function uu(e){var t=e.deletions;if(16&e.flags){if(null!==t)for(var n=0;n<t.length;n++){var r=t[n];Ls=r,cu(r,e)}iu(e)}for(e=e.child;null!==e;){switch((t=e).tag){case 0:case 11:case 15:ys(8,t,t.return),uu(t);break;case 22:2&(n=t.stateNode)._visibility&&(n._visibility&=-3,uu(t));break;default:uu(t)}e=e.sibling}}function cu(e,t){for(;null!==Ls;){var n=Ls;switch(n.tag){case 0:case 11:case 15:ys(8,n,t);break;case 23:case 22:if(null!==n.memoizedState&&null!==n.memoizedState.cachePool){var r=n.memoizedState.cachePool.pool;null!=r&&r.refCount++}break;case 24:Ba(n.memoizedState.cache)}if(null!==(r=n.child))r.return=n,Ls=r;else e:for(n=e;null!==Ls;){var a=(r=Ls).sibling,o=r.return;if(Is(r),r===n){Ls=null;break e}if(null!==a){a.return=o,Ls=a;break e}Ls=o}}}var du={getCacheForType:function(e){var t=ja(Ma),n=t.data.get(e);return void 0===n&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return ja(Ma).controller.signal}},fu="function"==typeof WeakMap?WeakMap:Map,pu=0,hu=null,mu=null,gu=0,yu=0,bu=null,vu=!1,wu=!1,ku=!1,Su=0,xu=0,Eu=0,_u=0,Au=0,Cu=0,Tu=0,Nu=null,Pu=null,Ou=!1,ju=0,Lu=0,Ru=1/0,Iu=null,Du=null,Fu=0,Mu=null,zu=null,Bu=0,$u=0,Uu=null,Hu=null,Vu=0,Wu=null;function Gu(){return 2&pu&&0!==gu?gu&-gu:null!==R.T?Uc():Me()}function qu(){if(0===Cu)if(536870912&gu&&!da)Cu=536870912;else{var e=Ee;!(3932160&(Ee<<=1))&&(Ee=262144),Cu=e}return null!==(e=Lo.current)&&(e.flags|=32),Cu}function Yu(e,t,n){(e!==hu||2!==yu&&9!==yu)&&null===e.cancelPendingCommit||(tc(e,0),Zu(e,gu,Cu,!1)),je(e,n),2&pu&&e===hu||(e===hu&&(!(2&pu)&&(_u|=n),4===xu&&Zu(e,gu,Cu,!1)),Ic(e))}function Ku(e,t,n){if(6&pu)throw Error(i(327));for(var r=!n&&!(127&t)&&0===(t&e.expiredLanes)||Te(e,t),a=r?function(e,t){var n=pu;pu|=2;var r=ac(),a=oc();hu!==e||gu!==t?(Iu=null,Ru=se()+500,tc(e,t)):wu=Te(e,t);e:for(;;)try{if(0!==yu&&null!==mu){t=mu;var o=bu;t:switch(yu){case 1:yu=0,bu=null,fc(e,t,o,1);break;case 2:case 9:if(to(o)){yu=0,bu=null,dc(t);break}t=function(){2!==yu&&9!==yu||hu!==e||(yu=7),Ic(e)},o.then(t,t);break e;case 3:yu=7;break e;case 4:yu=5;break e;case 7:to(o)?(yu=0,bu=null,dc(t)):(yu=0,bu=null,fc(e,t,o,7));break;case 5:var l=null;switch(mu.tag){case 26:l=mu.memoizedState;case 5:case 27:var s=mu;if(l?af(l):s.stateNode.complete){yu=0,bu=null;var u=s.sibling;if(null!==u)mu=u;else{var c=s.return;null!==c?(mu=c,pc(c)):mu=null}break t}}yu=0,bu=null,fc(e,t,o,5);break;case 6:yu=0,bu=null,fc(e,t,o,6);break;case 8:ec(),xu=6;break e;default:throw Error(i(462))}}uc();break}catch(d){nc(e,d)}return Ea=xa=null,R.H=r,R.A=a,pu=n,null!==mu?0:(hu=null,gu=0,Pr(),xu)}(e,t):lc(e,t,!0),o=r;;){if(0===a){wu&&!r&&Zu(e,t,0,!1);break}if(n=e.current.alternate,!o||Xu(n)){if(2===a){if(o=t,e.errorRecoveryDisabledLanes&o)var l=0;else l=0!==(l=-536870913&e.pendingLanes)?l:536870912&l?536870912:0;if(0!==l){t=l;e:{var s=e;a=Nu;var u=s.current.memoizedState.isDehydrated;if(u&&(tc(s,l).flags|=256),2!==(l=lc(s,l,!1))){if(ku&&!u){s.errorRecoveryDisabledLanes|=o,_u|=o,a=4;break e}o=Pu,Pu=a,null!==o&&(null===Pu?Pu=o:Pu.push.apply(Pu,o))}a=l}if(o=!1,2!==a)continue}}if(1===a){tc(e,0),Zu(e,t,0,!0);break}e:{switch(r=e,o=a){case 0:case 1:throw Error(i(345));case 4:if((4194048&t)!==t)break;case 6:Zu(r,t,Cu,!vu);break e;case 2:Pu=null;break;case 3:case 5:break;default:throw Error(i(329))}if((62914560&t)===t&&10<(a=ju+300-se())){if(Zu(r,t,Cu,!vu),0!==Ce(r,0,!0))break e;Bu=t,r.timeoutHandle=kd(Qu.bind(null,r,n,Pu,Iu,Ou,t,Cu,_u,Tu,vu,o,"Throttled",-0,0),a)}else Qu(r,n,Pu,Iu,Ou,t,Cu,_u,Tu,vu,o,null,-0,0)}break}a=lc(e,t,!1),o=!1}Ic(e)}function Qu(e,t,n,r,a,o,i,l,s,u,c,d,f,p){if(e.timeoutHandle=-1,8192&(d=t.subtreeFlags)||!(16785408&~d)){ou(t,o,d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:jt});var h=(62914560&o)===o?ju-se():(4194048&o)===o?Lu-se():0;if(null!==(h=function(e,t){return e.stylesheets&&0===e.count&&uf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&uf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&0===of&&(of=62500*function(){if("function"==typeof performance.getEntriesByType){for(var e=0,t=0,n=performance.getEntriesByType("resource"),r=0;r<n.length;r++){var a=n[r],o=a.transferSize,i=a.initiatorType,l=a.duration;if(o&&l&&pd(i)){for(i=0,l=a.responseEnd,r+=1;r<n.length;r++){var s=n[r],u=s.startTime;if(u>l)break;var c=s.transferSize,d=s.initiatorType;c&&pd(d)&&(i+=c*((s=s.responseEnd)<l?1:(l-u)/(s-u)))}if(--r,t+=8*(o+i)/(a.duration/1e3),10<++e)break}}if(0<e)return t/e/1e6}return navigator.connection&&"number"==typeof(e=navigator.connection.downlink)?e:5}());var a=setTimeout(function(){if(e.waitingForImages=!1,0===e.count&&(e.stylesheets&&uf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>of?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(a)}}:null}(d,h)))return Bu=o,e.cancelPendingCommit=h(mc.bind(null,e,t,o,n,r,a,i,l,s,c,d,null,f,p)),void Zu(e,o,i,!u)}mc(e,t,o,n,r,a,i,l,s)}function Xu(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&(null!==(n=t.updateQueue)&&null!==(n=n.stores)))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!Zn(o(),a))return!1}catch(i){return!1}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Zu(e,t,n,r){t&=~Au,t&=~_u,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var a=t;0<a;){var o=31-we(a),i=1<<o;r[o]=-1,a&=~i}0!==n&&Le(e,n,t)}function Ju(){return!!(6&pu)||(Dc(0,!1),!1)}function ec(){if(null!==mu){if(0===yu)var e=mu.return;else Ea=xa=null,li(e=mu),lo=null,so=0,e=mu;for(;null!==e;)ms(e.alternate,e),e=e.return;mu=null}}function tc(e,t){var n=e.timeoutHandle;-1!==n&&(e.timeoutHandle=-1,Sd(n)),null!==(n=e.cancelPendingCommit)&&(e.cancelPendingCommit=null,n()),Bu=0,ec(),hu=e,mu=n=Br(e.current,null),gu=t,yu=0,bu=null,vu=!1,wu=Te(e,t),ku=!1,Tu=Cu=Au=_u=Eu=xu=0,Pu=Nu=null,Ou=!1,8&t&&(t|=32&t);var r=e.entangledLanes;if(0!==r)for(e=e.entanglements,r&=t;0<r;){var a=31-we(r),o=1<<a;t|=e[a],r&=~o}return Su=t,Pr(),n}function nc(e,t){Ho=null,R.H=ml,t===Xa||t===Ja?(t=oo(),yu=3):t===Za?(t=oo(),yu=4):yu=t===jl?8:null!==t&&"object"==typeof t&&"function"==typeof t.then?6:1,bu=t,null===mu&&(xu=1,Cl(e,Yr(t,e.current)))}function rc(){var e=Lo.current;return null===e||((4194048&gu)===gu?null===Ro:!!((62914560&gu)===gu||536870912&gu)&&e===Ro)}function ac(){var e=R.H;return R.H=ml,null===e?ml:e}function oc(){var e=R.A;return R.A=du,e}function ic(){xu=4,vu||(4194048&gu)!==gu&&null!==Lo.current||(wu=!0),!(134217727&Eu)&&!(134217727&_u)||null===hu||Zu(hu,gu,Cu,!1)}function lc(e,t,n){var r=pu;pu|=2;var a=ac(),o=oc();hu===e&&gu===t||(Iu=null,tc(e,t)),t=!1;var i=xu;e:for(;;)try{if(0!==yu&&null!==mu){var l=mu,s=bu;switch(yu){case 8:ec(),i=6;break e;case 3:case 2:case 9:case 6:null===Lo.current&&(t=!0);var u=yu;if(yu=0,bu=null,fc(e,l,s,u),n&&wu){i=0;break e}break;default:u=yu,yu=0,bu=null,fc(e,l,s,u)}}sc(),i=xu;break}catch(c){nc(e,c)}return t&&e.shellSuspendCounter++,Ea=xa=null,pu=r,R.H=a,R.A=o,null===mu&&(hu=null,gu=0,Pr()),i}function sc(){for(;null!==mu;)cc(mu)}function uc(){for(;null!==mu&&!ie();)cc(mu)}function cc(e){var t=is(e.alternate,e,Su);e.memoizedProps=e.pendingProps,null===t?pc(e):mu=t}function dc(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Wl(n,t,t.pendingProps,t.type,void 0,gu);break;case 11:t=Wl(n,t,t.pendingProps,t.type.render,t.ref,gu);break;case 5:li(t);default:ms(n,t),t=is(n,t=mu=$r(t,Su),Su)}e.memoizedProps=e.pendingProps,null===t?pc(e):mu=t}function fc(e,t,n,r){Ea=xa=null,li(t),lo=null,so=0;var a=t.return;try{if(function(e,t,n,r,a){if(n.flags|=32768,null!==r&&"object"==typeof r&&"function"==typeof r.then){if(null!==(t=n.alternate)&&Na(t,n,a,!0),null!==(n=Lo.current)){switch(n.tag){case 31:case 13:return null===Ro?ic():null===n.alternate&&0===xu&&(xu=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===eo?n.flags|=16384:(null===(t=n.updateQueue)?n.updateQueue=new Set([r]):t.add(r),Ec(e,r,a)),!1;case 22:return n.flags|=65536,r===eo?n.flags|=16384:(null===(t=n.updateQueue)?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):null===(n=t.retryQueue)?t.retryQueue=new Set([r]):n.add(r),Ec(e,r,a)),!1}throw Error(i(435,n.tag))}return Ec(e,r,a),ic(),!1}if(da)return null!==(t=Lo.current)?(!(65536&t.flags)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==ha&&ka(Yr(e=Error(i(422),{cause:r}),n))):(r!==ha&&ka(Yr(t=Error(i(423),{cause:r}),n)),(e=e.current.alternate).flags|=65536,a&=-a,e.lanes|=a,r=Yr(r,n),So(e,a=Nl(e.stateNode,r,a)),4!==xu&&(xu=2)),!1;var o=Error(i(520),{cause:r});if(o=Yr(o,n),null===Nu?Nu=[o]:Nu.push(o),4!==xu&&(xu=2),null===t)return!0;r=Yr(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,So(n,e=Nl(n.stateNode,r,e)),!1;case 1:if(t=n.type,o=n.stateNode,!(128&n.flags||"function"!=typeof t.getDerivedStateFromError&&(null===o||"function"!=typeof o.componentDidCatch||null!==Du&&Du.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,Ol(a=Pl(a),e,n,r),So(n,a),!1}n=n.return}while(null!==n);return!1}(e,a,t,n,gu))return xu=1,Cl(e,Yr(n,e.current)),void(mu=null)}catch(o){if(null!==a)throw mu=a,o;return xu=1,Cl(e,Yr(n,e.current)),void(mu=null)}32768&t.flags?(da||1===r?e=!0:wu||536870912&gu?e=!1:(vu=e=!0,(2===r||9===r||3===r||6===r)&&(null!==(r=Lo.current)&&13===r.tag&&(r.flags|=16384))),hc(t,e)):pc(t)}function pc(e){var t=e;do{if(32768&t.flags)return void hc(t,vu);e=t.return;var n=ps(t.alternate,t,Su);if(null!==n)return void(mu=n);if(null!==(t=t.sibling))return void(mu=t);mu=t=e}while(null!==t);0===xu&&(xu=5)}function hc(e,t){do{var n=hs(e.alternate,e);if(null!==n)return n.flags&=32767,void(mu=n);if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling))return void(mu=e);mu=e=n}while(null!==e);xu=6,mu=null}function mc(e,t,n,r,a,o,l,s,u){e.cancelPendingCommit=null;do{wc()}while(0!==Fu);if(6&pu)throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,function(e,t,n,r,a,o){var i=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var l=e.entanglements,s=e.expirationTimes,u=e.hiddenUpdates;for(n=i&~n;0<n;){var c=31-we(n),d=1<<c;l[c]=0,s[c]=-1;var f=u[c];if(null!==f)for(u[c]=null,c=0;c<f.length;c++){var p=f[c];null!==p&&(p.lane&=-536870913)}n&=~d}0!==r&&Le(e,r,0),0!==o&&0===a&&0!==e.tag&&(e.suspendedLanes|=o&~(i&~t))}(e,n,o|=Nr,l,s,u),e===hu&&(mu=hu=null,gu=0),zu=t,Mu=e,Bu=n,$u=o,Uu=a,Hu=r,10256&t.subtreeFlags||10256&t.flags?(e.callbackNode=null,e.callbackPriority=0,ae(fe,function(){return kc(),null})):(e.callbackNode=null,e.callbackPriority=0),r=!!(13878&t.flags),13878&t.subtreeFlags||r){r=R.T,R.T=null,a=I.p,I.p=2,l=pu,pu|=4;try{!function(e,t){if(e=e.containerInfo,hd=wf,ar(e=rr(e))){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch(g){n=null;break e}var l=0,s=-1,u=-1,c=0,d=0,f=e,p=null;t:for(;;){for(var h;f!==n||0!==a&&3!==f.nodeType||(s=l+a),f!==o||0!==r&&3!==f.nodeType||(u=l+r),3===f.nodeType&&(l+=f.nodeValue.length),null!==(h=f.firstChild);)p=f,f=h;for(;;){if(f===e)break t;if(p===n&&++c===a&&(s=l),p===o&&++d===r&&(u=l),null!==(h=f.nextSibling))break;p=(f=p).parentNode}f=h}n=-1===s||-1===u?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(md={focusedElem:e,selectionRange:n},wf=!1,Ls=t;null!==Ls;)if(e=(t=Ls).child,1028&t.subtreeFlags&&null!==e)e.return=t,Ls=e;else for(;null!==Ls;){switch(o=(t=Ls).alternate,e=t.flags,t.tag){case 0:if(4&e&&null!==(e=null!==(e=t.updateQueue)?e.events:null))for(n=0;n<e.length;n++)(a=e[n]).ref.impl=a.nextImpl;break;case 11:case 15:case 5:case 26:case 27:case 6:case 4:case 17:break;case 1:if(1024&e&&null!==o){e=void 0,n=t,a=o.memoizedProps,o=o.memoizedState,r=n.stateNode;try{var m=xl(n.type,a);e=r.getSnapshotBeforeUpdate(m,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(y){xc(n,n.return,y)}}break;case 3:if(1024&e)if(9===(n=(e=t.stateNode.containerInfo).nodeType))Nd(e);else if(1===n)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Nd(e);break;default:e.textContent=""}break;default:if(1024&e)throw Error(i(163))}if(null!==(e=t.sibling)){e.return=t.return,Ls=e;break}Ls=t.return}}(e,t)}finally{pu=l,I.p=a,R.T=r}}Fu=1,gc(),yc(),bc()}}function gc(){if(1===Fu){Fu=0;var e=Mu,t=zu,n=!!(13878&t.flags);if(13878&t.subtreeFlags||n){n=R.T,R.T=null;var r=I.p;I.p=2;var a=pu;pu|=4;try{Ws(t,e);var o=md,i=rr(e.containerInfo),l=o.focusedElem,s=o.selectionRange;if(i!==l&&l&&l.ownerDocument&&nr(l.ownerDocument.documentElement,l)){if(null!==s&&ar(l)){var u=s.start,c=s.end;if(void 0===c&&(c=u),"selectionStart"in l)l.selectionStart=u,l.selectionEnd=Math.min(c,l.value.length);else{var d=l.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),h=l.textContent.length,m=Math.min(s.start,h),g=void 0===s.end?m:Math.min(s.end,h);!p.extend&&m>g&&(i=g,g=m,m=i);var y=tr(l,m),b=tr(l,g);if(y&&b&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==b.node||p.focusOffset!==b.offset)){var v=d.createRange();v.setStart(y.node,y.offset),p.removeAllRanges(),m>g?(p.addRange(v),p.extend(b.node,b.offset)):(v.setEnd(b.node,b.offset),p.addRange(v))}}}}for(d=[],p=l;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof l.focus&&l.focus(),l=0;l<d.length;l++){var w=d[l];w.element.scrollLeft=w.left,w.element.scrollTop=w.top}}wf=!!hd,md=hd=null}finally{pu=a,I.p=r,R.T=n}}e.current=t,Fu=2}}function yc(){if(2===Fu){Fu=0;var e=Mu,t=zu,n=!!(8772&t.flags);if(8772&t.subtreeFlags||n){n=R.T,R.T=null;var r=I.p;I.p=2;var a=pu;pu|=4;try{Rs(e,t.alternate,t)}finally{pu=a,I.p=r,R.T=n}}Fu=3}}function bc(){if(4===Fu||3===Fu){Fu=0,le();var e=Mu,t=zu,n=Bu,r=Hu;10256&t.subtreeFlags||10256&t.flags?Fu=5:(Fu=0,zu=Mu=null,vc(e,e.pendingLanes));var a=e.pendingLanes;if(0===a&&(Du=null),Fe(n),t=t.stateNode,be&&"function"==typeof be.onCommitFiberRoot)try{be.onCommitFiberRoot(ye,t,void 0,!(128&~t.current.flags))}catch(s){}if(null!==r){t=R.T,a=I.p,I.p=2,R.T=null;try{for(var o=e.onRecoverableError,i=0;i<r.length;i++){var l=r[i];o(l.value,{componentStack:l.stack})}}finally{R.T=t,I.p=a}}3&Bu&&wc(),Ic(e),a=e.pendingLanes,261930&n&&42&a?e===Wu?Vu++:(Vu=0,Wu=e):Vu=0,Dc(0,!1)}}function vc(e,t){0===(e.pooledCacheLanes&=t)&&(null!=(t=e.pooledCache)&&(e.pooledCache=null,Ba(t)))}function wc(){return gc(),yc(),bc(),kc()}function kc(){if(5!==Fu)return!1;var e=Mu,t=$u;$u=0;var n=Fe(Bu),r=R.T,a=I.p;try{I.p=32>n?32:n,R.T=null,n=Uu,Uu=null;var o=Mu,l=Bu;if(Fu=0,zu=Mu=null,Bu=0,6&pu)throw Error(i(331));var s=pu;if(pu|=4,su(o.current),eu(o,o.current,l,n),pu=s,Dc(0,!1),be&&"function"==typeof be.onPostCommitFiberRoot)try{be.onPostCommitFiberRoot(ye,o)}catch(u){}return!0}finally{I.p=a,R.T=r,vc(e,t)}}function Sc(e,t,n){t=Yr(n,t),null!==(e=wo(e,t=Nl(e.stateNode,t,2),2))&&(je(e,2),Ic(e))}function xc(e,t,n){if(3===e.tag)Sc(e,e,n);else for(;null!==t;){if(3===t.tag){Sc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Du||!Du.has(r))){e=Yr(n,e),null!==(r=wo(t,n=Pl(2),2))&&(Ol(n,r,t,e),je(r,2),Ic(r));break}}t=t.return}}function Ec(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new fu;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(ku=!0,a.add(n),e=_c.bind(null,e,t,n),t.then(e,e))}function _c(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,hu===e&&(gu&n)===n&&(4===xu||3===xu&&(62914560&gu)===gu&&300>se()-ju?!(2&pu)&&tc(e,0):Au|=n,Tu===gu&&(Tu=0)),Ic(e)}function Ac(e,t){0===t&&(t=Pe()),null!==(e=Lr(e,t))&&(je(e,t),Ic(e))}function Cc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Ac(e,n)}function Tc(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),Ac(e,n)}var Nc=null,Pc=null,Oc=!1,jc=!1,Lc=!1,Rc=0;function Ic(e){e!==Pc&&null===e.next&&(null===Pc?Nc=Pc=e:Pc=Pc.next=e),jc=!0,Oc||(Oc=!0,Ed(function(){6&pu?ae(ce,Fc):Mc()}))}function Dc(e,t){if(!Lc&&jc){Lc=!0;do{for(var n=!1,r=Nc;null!==r;){if(!t)if(0!==e){var a=r.pendingLanes;if(0===a)var o=0;else{var i=r.suspendedLanes,l=r.pingedLanes;o=(1<<31-we(42|e)+1)-1,o=201326741&(o&=a&~(i&~l))?201326741&o|1:o?2|o:0}0!==o&&(n=!0,$c(r,o))}else o=gu,!(3&(o=Ce(r,r===hu?o:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||Te(r,o)||(n=!0,$c(r,o));r=r.next}}while(n);Lc=!1}}function Fc(){Mc()}function Mc(){jc=Oc=!1;var e=0;0!==Rc&&function(){var e=window.event;if(e&&"popstate"===e.type)return e!==wd&&(wd=e,!0);return wd=null,!1}()&&(e=Rc);for(var t=se(),n=null,r=Nc;null!==r;){var a=r.next,o=zc(r,t);0===o?(r.next=null,null===n?Nc=a:n.next=a,null===a&&(Pc=n)):(n=r,(0!==e||3&o)&&(jc=!0)),r=a}0!==Fu&&5!==Fu||Dc(e,!1),0!==Rc&&(Rc=0)}function zc(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=-62914561&e.pendingLanes;0<o;){var i=31-we(o),l=1<<i,s=a[i];-1===s?0!==(l&n)&&0===(l&r)||(a[i]=Ne(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}if(n=gu,n=Ce(e,e===(t=hu)?n:0,null!==e.cancelPendingCommit||-1!==e.timeoutHandle),r=e.callbackNode,0===n||e===t&&(2===yu||9===yu)||null!==e.cancelPendingCommit)return null!==r&&null!==r&&oe(r),e.callbackNode=null,e.callbackPriority=0;if(!(3&n)||Te(e,n)){if((t=n&-n)===e.callbackPriority)return t;switch(null!==r&&oe(r),Fe(n)){case 2:case 8:n=de;break;case 32:default:n=fe;break;case 268435456:n=he}return r=Bc.bind(null,e),n=ae(n,r),e.callbackPriority=t,e.callbackNode=n,t}return null!==r&&null!==r&&oe(r),e.callbackPriority=2,e.callbackNode=null,2}function Bc(e,t){if(0!==Fu&&5!==Fu)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(wc()&&e.callbackNode!==n)return null;var r=gu;return 0===(r=Ce(e,e===hu?r:0,null!==e.cancelPendingCommit||-1!==e.timeoutHandle))?null:(Ku(e,r,t),zc(e,se()),null!=e.callbackNode&&e.callbackNode===n?Bc.bind(null,e):null)}function $c(e,t){if(wc())return null;Ku(e,t,!0)}function Uc(){if(0===Rc){var e=Ha;0===e&&(e=xe,!(261888&(xe<<=1))&&(xe=256)),Rc=e}return Rc}function Hc(e){return null==e||"symbol"==typeof e||"boolean"==typeof e?null:"function"==typeof e?e:Ot(""+e)}function Vc(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}for(var Wc=0;Wc<Er.length;Wc++){var Gc=Er[Wc];_r(Gc.toLowerCase(),"on"+(Gc[0].toUpperCase()+Gc.slice(1)))}_r(gr,"onAnimationEnd"),_r(yr,"onAnimationIteration"),_r(br,"onAnimationStart"),_r("dblclick","onDoubleClick"),_r("focusin","onFocus"),_r("focusout","onBlur"),_r(vr,"onTransitionRun"),_r(wr,"onTransitionStart"),_r(kr,"onTransitionCancel"),_r(Sr,"onTransitionEnd"),at("onMouseEnter",["mouseout","mouseover"]),at("onMouseLeave",["mouseout","mouseover"]),at("onPointerEnter",["pointerout","pointerover"]),at("onPointerLeave",["pointerout","pointerover"]),rt("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),rt("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),rt("onBeforeInput",["compositionend","keypress","textInput","paste"]),rt("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),rt("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),rt("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var qc="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Yc=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(qc));function Kc(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;o=l,a.currentTarget=u;try{o(a)}catch(c){Ar(c)}a.currentTarget=null,o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;o=l,a.currentTarget=u;try{o(a)}catch(c){Ar(c)}a.currentTarget=null,o=s}}}}function Qc(e,t){var n=t[Ve];void 0===n&&(n=t[Ve]=new Set);var r=e+"__bubble";n.has(r)||(ed(t,e,2,!1),n.add(r))}function Xc(e,t,n){var r=0;t&&(r|=4),ed(n,e,r,t)}var Zc="_reactListening"+Math.random().toString(36).slice(2);function Jc(e){if(!e[Zc]){e[Zc]=!0,tt.forEach(function(t){"selectionchange"!==t&&(Yc.has(t)||Xc(t,!1,e),Xc(t,!0,e))});var t=9===e.nodeType?e:e.ownerDocument;null===t||t[Zc]||(t[Zc]=!0,Xc("selectionchange",!1,t))}}function ed(e,t,n,r){switch(Cf(t)){case 2:var a=kf;break;case 8:a=Sf;break;default:a=xf}n=a.bind(null,t,n,e),a=void 0,!Ut||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function td(e,t,n,r,a){var o=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a)break;if(4===i)for(i=r.return;null!==i;){var u=i.tag;if((3===u||4===u)&&i.stateNode.containerInfo===a)return;i=i.return}for(;null!==l;){if(null===(i=Qe(l)))return;if(5===(u=i.tag)||6===u||26===u||27===u){r=o=i;continue e}l=l.parentNode}}r=r.return}zt(function(){var r=o,a=Rt(n),i=[];e:{var l=xr.get(e);if(void 0!==l){var u=nn,c=e;switch(e){case"keypress":if(0===Yt(n))break e;case"keydown":case"keyup":u=bn;break;case"focusin":c="focus",u=un;break;case"focusout":c="blur",u=un;break;case"beforeblur":case"afterblur":u=un;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":u=ln;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":u=sn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":u=wn;break;case gr:case yr:case br:u=cn;break;case Sr:u=kn;break;case"scroll":case"scrollend":u=an;break;case"wheel":u=Sn;break;case"copy":case"cut":case"paste":u=dn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":u=vn;break;case"toggle":case"beforetoggle":u=xn}var d=!!(4&t),f=!d&&("scroll"===e||"scrollend"===e),p=d?null!==l?l+"Capture":null:l;d=[];for(var h,m=r;null!==m;){var g=m;if(h=g.stateNode,5!==(g=g.tag)&&26!==g&&27!==g||null===h||null===p||null!=(g=Bt(m,p))&&d.push(nd(m,g,h)),f)break;m=m.return}0<d.length&&(l=new u(l,c,null,n,a),i.push({event:l,listeners:d}))}}if(!(7&t)){if(u="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===Lt||!(c=n.relatedTarget||n.fromElement)||!Qe(c)&&!c[He])&&(u||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,u?(u=r,null!==(c=(c=n.relatedTarget||n.toElement)?Qe(c):null)&&(f=s(c),d=c.tag,c!==f||5!==d&&27!==d&&6!==d)&&(c=null)):(u=null,c=r),u!==c)){if(d=ln,g="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(d=vn,g="onPointerLeave",p="onPointerEnter",m="pointer"),f=null==u?l:Ze(u),h=null==c?l:Ze(c),(l=new d(g,m+"leave",u,n,a)).target=f,l.relatedTarget=h,g=null,Qe(a)===r&&((d=new d(p,m+"enter",c,n,a)).target=h,d.relatedTarget=f,g=d),f=g,u&&c)e:{for(d=ad,m=c,h=0,g=p=u;g;g=d(g))h++;g=0;for(var y=m;y;y=d(y))g++;for(;0<h-g;)p=d(p),h--;for(;0<g-h;)m=d(m),g--;for(;h--;){if(p===m||null!==m&&p===m.alternate){d=p;break e}p=d(p),m=d(m)}d=null}else d=null;null!==u&&od(i,l,u,d,!1),null!==c&&null!==f&&od(i,f,c,d,!0)}if("select"===(u=(l=r?Ze(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===u&&"file"===l.type)var b=$n;else if(In(l))if(Un)b=Xn;else{b=Kn;var v=Yn}else!(u=l.nodeName)||"input"!==u.toLowerCase()||"checkbox"!==l.type&&"radio"!==l.type?r&&Tt(r.elementType)&&(b=$n):b=Qn;switch(b&&(b=b(e,r))?Dn(i,b,n,a):(v&&v(e,l,r),"focusout"===e&&r&&"number"===l.type&&null!=r.memoizedProps.value&&wt(l,"number",l.value)),v=r?Ze(r):window,e){case"focusin":(In(v)||"true"===v.contentEditable)&&(ir=v,lr=r,sr=null);break;case"focusout":sr=lr=ir=null;break;case"mousedown":ur=!0;break;case"contextmenu":case"mouseup":case"dragend":ur=!1,cr(i,n,a);break;case"selectionchange":if(or)break;case"keydown":case"keyup":cr(i,n,a)}var w;if(_n)e:{switch(e){case"compositionstart":var k="onCompositionStart";break e;case"compositionend":k="onCompositionEnd";break e;case"compositionupdate":k="onCompositionUpdate";break e}k=void 0}else Ln?On(e,n)&&(k="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(k="onCompositionStart");k&&(Tn&&"ko"!==n.locale&&(Ln||"onCompositionStart"!==k?"onCompositionEnd"===k&&Ln&&(w=qt()):(Wt="value"in(Vt=a)?Vt.value:Vt.textContent,Ln=!0)),0<(v=rd(r,k)).length&&(k=new fn(k,e,null,n,a),i.push({event:k,listeners:v}),w?k.data=w:null!==(w=jn(n))&&(k.data=w))),(w=Cn?function(e,t){switch(e){case"compositionend":return jn(t);case"keypress":return 32!==t.which?null:(Pn=!0,Nn);case"textInput":return(e=t.data)===Nn&&Pn?null:e;default:return null}}(e,n):function(e,t){if(Ln)return"compositionend"===e||!_n&&On(e,t)?(e=qt(),Gt=Wt=Vt=null,Ln=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Tn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(k=rd(r,"onBeforeInput")).length&&(v=new fn("onBeforeInput","beforeinput",null,n,a),i.push({event:v,listeners:k}),v.data=w)),function(e,t,n,r,a){if("submit"===t&&n&&n.stateNode===a){var o=Hc((a[Ue]||null).action),i=r.submitter;i&&null!==(t=(t=i[Ue]||null)?Hc(t.formAction):i.getAttribute("formAction"))&&(o=t,i=null);var l=new nn("action","action",null,r,a);e.push({event:l,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(0!==Rc){var e=i?Vc(a,i):new FormData(a);tl(n,{pending:!0,data:e,method:a.method,action:o},null,e)}}else"function"==typeof o&&(l.preventDefault(),e=i?Vc(a,i):new FormData(a),tl(n,{pending:!0,data:e,method:a.method,action:o},o,e))},currentTarget:a}]})}}(i,e,r,n,a)}Kc(i,t)})}function nd(e,t,n){return{instance:e,listener:t,currentTarget:n}}function rd(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;if(5!==(a=a.tag)&&26!==a&&27!==a||null===o||(null!=(a=Bt(e,n))&&r.unshift(nd(e,a,o)),null!=(a=Bt(e,t))&&r.push(nd(e,a,o))),3===e.tag)return r;e=e.return}return[]}function ad(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag&&27!==e.tag);return e||null}function od(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(l=l.tag,null!==s&&s===r)break;5!==l&&26!==l&&27!==l||null===u||(s=u,a?null!=(u=Bt(n,o))&&i.unshift(nd(n,u,s)):a||null!=(u=Bt(n,o))&&i.push(nd(n,u,s))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var id=/\r\n?/g,ld=/\u0000|\uFFFD/g;function sd(e){return("string"==typeof e?e:""+e).replace(id,"\n").replace(ld,"")}function ud(e,t){return t=sd(t),sd(e)===t}function cd(e,t,n,r,a,o){switch(n){case"children":"string"==typeof r?"body"===t||"textarea"===t&&""===r||Et(e,r):("number"==typeof r||"bigint"==typeof r)&&"body"!==t&&Et(e,""+r);break;case"className":ut(e,"class",r);break;case"tabIndex":ut(e,"tabindex",r);break;case"dir":case"role":case"viewBox":case"width":case"height":ut(e,n,r);break;case"style":Ct(e,r,o);break;case"data":if("object"!==t){ut(e,"data",r);break}case"src":case"href":if(""===r&&("a"!==t||"href"!==n)){e.removeAttribute(n);break}if(null==r||"function"==typeof r||"symbol"==typeof r||"boolean"==typeof r){e.removeAttribute(n);break}r=Ot(""+r),e.setAttribute(n,r);break;case"action":case"formAction":if("function"==typeof r){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}if("function"==typeof o&&("formAction"===n?("input"!==t&&cd(e,t,"name",a.name,a,null),cd(e,t,"formEncType",a.formEncType,a,null),cd(e,t,"formMethod",a.formMethod,a,null),cd(e,t,"formTarget",a.formTarget,a,null)):(cd(e,t,"encType",a.encType,a,null),cd(e,t,"method",a.method,a,null),cd(e,t,"target",a.target,a,null))),null==r||"symbol"==typeof r||"boolean"==typeof r){e.removeAttribute(n);break}r=Ot(""+r),e.setAttribute(n,r);break;case"onClick":null!=r&&(e.onclick=jt);break;case"onScroll":null!=r&&Qc("scroll",e);break;case"onScrollEnd":null!=r&&Qc("scrollend",e);break;case"dangerouslySetInnerHTML":if(null!=r){if("object"!=typeof r||!("__html"in r))throw Error(i(61));if(null!=(n=r.__html)){if(null!=a.children)throw Error(i(60));e.innerHTML=n}}break;case"multiple":e.multiple=r&&"function"!=typeof r&&"symbol"!=typeof r;break;case"muted":e.muted=r&&"function"!=typeof r&&"symbol"!=typeof r;break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":case"autoFocus":break;case"xlinkHref":if(null==r||"function"==typeof r||"boolean"==typeof r||"symbol"==typeof r){e.removeAttribute("xlink:href");break}n=Ot(""+r),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":null!=r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,""+r):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":!0===r?e.setAttribute(n,""):!1!==r&&null!=r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,r):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":null!=r&&"function"!=typeof r&&"symbol"!=typeof r&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case"rowSpan":case"start":null==r||"function"==typeof r||"symbol"==typeof r||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case"popover":Qc("beforetoggle",e),Qc("toggle",e),st(e,"popover",r);break;case"xlinkActuate":ct(e,"http://www.w3.org/1999/xlink","xlink:actuate",r);break;case"xlinkArcrole":ct(e,"http://www.w3.org/1999/xlink","xlink:arcrole",r);break;case"xlinkRole":ct(e,"http://www.w3.org/1999/xlink","xlink:role",r);break;case"xlinkShow":ct(e,"http://www.w3.org/1999/xlink","xlink:show",r);break;case"xlinkTitle":ct(e,"http://www.w3.org/1999/xlink","xlink:title",r);break;case"xlinkType":ct(e,"http://www.w3.org/1999/xlink","xlink:type",r);break;case"xmlBase":ct(e,"http://www.w3.org/XML/1998/namespace","xml:base",r);break;case"xmlLang":ct(e,"http://www.w3.org/XML/1998/namespace","xml:lang",r);break;case"xmlSpace":ct(e,"http://www.w3.org/XML/1998/namespace","xml:space",r);break;case"is":st(e,"is",r);break;case"innerText":case"textContent":break;default:(!(2<n.length)||"o"!==n[0]&&"O"!==n[0]||"n"!==n[1]&&"N"!==n[1])&&st(e,n=Nt.get(n)||n,r)}}function dd(e,t,n,r,a,o){switch(n){case"style":Ct(e,r,o);break;case"dangerouslySetInnerHTML":if(null!=r){if("object"!=typeof r||!("__html"in r))throw Error(i(61));if(null!=(n=r.__html)){if(null!=a.children)throw Error(i(60));e.innerHTML=n}}break;case"children":"string"==typeof r?Et(e,r):("number"==typeof r||"bigint"==typeof r)&&Et(e,""+r);break;case"onScroll":null!=r&&Qc("scroll",e);break;case"onScrollEnd":null!=r&&Qc("scrollend",e);break;case"onClick":null!=r&&(e.onclick=jt);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":case"innerText":case"textContent":break;default:nt.hasOwnProperty(n)||("o"!==n[0]||"n"!==n[1]||(a=n.endsWith("Capture"),t=n.slice(2,a?n.length-7:void 0),"function"==typeof(o=null!=(o=e[Ue]||null)?o[n]:null)&&e.removeEventListener(t,o,a),"function"!=typeof r)?n in e?e[n]=r:!0===r?e.setAttribute(n,""):st(e,n,r):("function"!=typeof o&&null!==o&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a)))}}function fd(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Qc("error",e),Qc("load",e);var r,a=!1,o=!1;for(r in n)if(n.hasOwnProperty(r)){var l=n[r];if(null!=l)switch(r){case"src":a=!0;break;case"srcSet":o=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(i(137,t));default:cd(e,t,r,l,n,null)}}return o&&cd(e,t,"srcSet",n.srcSet,n,null),void(a&&cd(e,t,"src",n.src,n,null));case"input":Qc("invalid",e);var s=r=l=o=null,u=null,c=null;for(a in n)if(n.hasOwnProperty(a)){var d=n[a];if(null!=d)switch(a){case"name":o=d;break;case"type":l=d;break;case"checked":u=d;break;case"defaultChecked":c=d;break;case"value":r=d;break;case"defaultValue":s=d;break;case"children":case"dangerouslySetInnerHTML":if(null!=d)throw Error(i(137,t));break;default:cd(e,t,a,d,n,null)}}return void vt(e,r,s,u,c,l,o,!1);case"select":for(o in Qc("invalid",e),a=l=r=null,n)if(n.hasOwnProperty(o)&&null!=(s=n[o]))switch(o){case"value":r=s;break;case"defaultValue":l=s;break;case"multiple":a=s;default:cd(e,t,o,s,n,null)}return t=r,n=l,e.multiple=!!a,void(null!=t?kt(e,!!a,t,!1):null!=n&&kt(e,!!a,n,!0));case"textarea":for(l in Qc("invalid",e),r=o=a=null,n)if(n.hasOwnProperty(l)&&null!=(s=n[l]))switch(l){case"value":a=s;break;case"defaultValue":o=s;break;case"children":r=s;break;case"dangerouslySetInnerHTML":if(null!=s)throw Error(i(91));break;default:cd(e,t,l,s,n,null)}return void xt(e,a,o,r);case"option":for(u in n)if(n.hasOwnProperty(u)&&null!=(a=n[u]))if("selected"===u)e.selected=a&&"function"!=typeof a&&"symbol"!=typeof a;else cd(e,t,u,a,n,null);return;case"dialog":Qc("beforetoggle",e),Qc("toggle",e),Qc("cancel",e),Qc("close",e);break;case"iframe":case"object":Qc("load",e);break;case"video":case"audio":for(a=0;a<qc.length;a++)Qc(qc[a],e);break;case"image":Qc("error",e),Qc("load",e);break;case"details":Qc("toggle",e);break;case"embed":case"source":case"link":Qc("error",e),Qc("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(c in n)if(n.hasOwnProperty(c)&&null!=(a=n[c]))switch(c){case"children":case"dangerouslySetInnerHTML":throw Error(i(137,t));default:cd(e,t,c,a,n,null)}return;default:if(Tt(t)){for(d in n)n.hasOwnProperty(d)&&(void 0!==(a=n[d])&&dd(e,t,d,a,n,void 0));return}}for(s in n)n.hasOwnProperty(s)&&(null!=(a=n[s])&&cd(e,t,s,a,n,null))}function pd(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}var hd=null,md=null;function gd(e){return 9===e.nodeType?e:e.ownerDocument}function yd(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function bd(e,t){if(0===e)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return 1===e&&"foreignObject"===t?0:e}function vd(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"bigint"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var wd=null;var kd="function"==typeof setTimeout?setTimeout:void 0,Sd="function"==typeof clearTimeout?clearTimeout:void 0,xd="function"==typeof Promise?Promise:void 0,Ed="function"==typeof queueMicrotask?queueMicrotask:void 0!==xd?function(e){return xd.resolve(null).then(e).catch(_d)}:kd;function _d(e){setTimeout(function(){throw e})}function Ad(e){return"head"===e}function Cd(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)||"/&"===n){if(0===r)return e.removeChild(a),void Wf(t);r--}else if("$"===n||"$?"===n||"$~"===n||"$!"===n||"&"===n)r++;else if("html"===n)Md(e.ownerDocument.documentElement);else if("head"===n){Md(n=e.ownerDocument.head);for(var o=n.firstChild;o;){var i=o.nextSibling,l=o.nodeName;o[Ye]||"SCRIPT"===l||"STYLE"===l||"LINK"===l&&"stylesheet"===o.rel.toLowerCase()||n.removeChild(o),o=i}}else"body"===n&&Md(e.ownerDocument.body);n=a}while(n);Wf(t)}function Td(e,t){var n=e;e=0;do{var r=n.nextSibling;if(1===n.nodeType?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",""===n.getAttribute("style")&&n.removeAttribute("style")):3===n.nodeType&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),r&&8===r.nodeType)if("/$"===(n=r.data)){if(0===e)break;e--}else"$"!==n&&"$?"!==n&&"$~"!==n&&"$!"!==n||e++;n=r}while(n)}function Nd(e){var t=e.firstChild;for(t&&10===t.nodeType&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":Nd(n),Ke(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if("stylesheet"===n.rel.toLowerCase())continue}e.removeChild(n)}}function Pd(e,t){for(;8!==e.nodeType;){if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!t)return null;if(null===(e=Ld(e.nextSibling)))return null}return e}function Od(e){return"$?"===e.data||"$~"===e.data}function jd(e){return"$!"===e.data||"$?"===e.data&&"loading"!==e.ownerDocument.readyState}function Ld(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t||"$~"===t||"&"===t||"F!"===t||"F"===t)break;if("/$"===t||"/&"===t)return null}}return e}var Rd=null;function Id(e){e=e.nextSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n||"/&"===n){if(0===t)return Ld(e.nextSibling);t--}else"$"!==n&&"$!"!==n&&"$?"!==n&&"$~"!==n&&"&"!==n||t++}e=e.nextSibling}return null}function Dd(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n||"$~"===n||"&"===n){if(0===t)return e;t--}else"/$"!==n&&"/&"!==n||t++}e=e.previousSibling}return null}function Fd(e,t,n){switch(t=gd(n),e){case"html":if(!(e=t.documentElement))throw Error(i(452));return e;case"head":if(!(e=t.head))throw Error(i(453));return e;case"body":if(!(e=t.body))throw Error(i(454));return e;default:throw Error(i(451))}}function Md(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);Ke(e)}var zd=new Map,Bd=new Set;function $d(e){return"function"==typeof e.getRootNode?e.getRootNode():9===e.nodeType?e:e.ownerDocument}var Ud=I.d;I.d={f:function(){var e=Ud.f(),t=Ju();return e||t},r:function(e){var t=Xe(e);null!==t&&5===t.tag&&"form"===t.type?rl(t):Ud.r(e)},D:function(e){Ud.D(e),Vd("dns-prefetch",e,null)},C:function(e,t){Ud.C(e,t),Vd("preconnect",e,t)},L:function(e,t,n){Ud.L(e,t,n);var r=Hd;if(r&&e&&t){var a='link[rel="preload"][as="'+yt(t)+'"]';"image"===t&&n&&n.imageSrcSet?(a+='[imagesrcset="'+yt(n.imageSrcSet)+'"]',"string"==typeof n.imageSizes&&(a+='[imagesizes="'+yt(n.imageSizes)+'"]')):a+='[href="'+yt(e)+'"]';var o=a;switch(t){case"style":o=Gd(e);break;case"script":o=Kd(e)}zd.has(o)||(e=p({rel:"preload",href:"image"===t&&n&&n.imageSrcSet?void 0:e,as:t},n),zd.set(o,e),null!==r.querySelector(a)||"style"===t&&r.querySelector(qd(o))||"script"===t&&r.querySelector(Qd(o))||(fd(t=r.createElement("link"),"link",e),et(t),r.head.appendChild(t)))}},m:function(e,t){Ud.m(e,t);var n=Hd;if(n&&e){var r=t&&"string"==typeof t.as?t.as:"script",a='link[rel="modulepreload"][as="'+yt(r)+'"][href="'+yt(e)+'"]',o=a;switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Kd(e)}if(!zd.has(o)&&(e=p({rel:"modulepreload",href:e},t),zd.set(o,e),null===n.querySelector(a))){switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(Qd(o)))return}fd(r=n.createElement("link"),"link",e),et(r),n.head.appendChild(r)}}},X:function(e,t){Ud.X(e,t);var n=Hd;if(n&&e){var r=Je(n).hoistableScripts,a=Kd(e),o=r.get(a);o||((o=n.querySelector(Qd(a)))||(e=p({src:e,async:!0},t),(t=zd.get(a))&&ef(e,t),et(o=n.createElement("script")),fd(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},r.set(a,o))}},S:function(e,t,n){Ud.S(e,t,n);var r=Hd;if(r&&e){var a=Je(r).hoistableStyles,o=Gd(e);t=t||"default";var i=a.get(o);if(!i){var l={loading:0,preload:null};if(i=r.querySelector(qd(o)))l.loading=5;else{e=p({rel:"stylesheet",href:e,"data-precedence":t},n),(n=zd.get(o))&&Jd(e,n);var s=i=r.createElement("link");et(s),fd(s,"link",e),s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),s.addEventListener("load",function(){l.loading|=1}),s.addEventListener("error",function(){l.loading|=2}),l.loading|=4,Zd(i,t,r)}i={type:"stylesheet",instance:i,count:1,state:l},a.set(o,i)}}},M:function(e,t){Ud.M(e,t);var n=Hd;if(n&&e){var r=Je(n).hoistableScripts,a=Kd(e),o=r.get(a);o||((o=n.querySelector(Qd(a)))||(e=p({src:e,async:!0,type:"module"},t),(t=zd.get(a))&&ef(e,t),et(o=n.createElement("script")),fd(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},r.set(a,o))}}};var Hd="undefined"==typeof document?null:document;function Vd(e,t,n){var r=Hd;if(r&&"string"==typeof t&&t){var a=yt(t);a='link[rel="'+e+'"][href="'+a+'"]',"string"==typeof n&&(a+='[crossorigin="'+n+'"]'),Bd.has(a)||(Bd.add(a),e={rel:e,crossOrigin:n,href:t},null===r.querySelector(a)&&(fd(t=r.createElement("link"),"link",e),et(t),r.head.appendChild(t)))}}function Wd(e,t,n,r){var a,o,l,s,u=(u=G.current)?$d(u):null;if(!u)throw Error(i(446));switch(e){case"meta":case"title":return null;case"style":return"string"==typeof n.precedence&&"string"==typeof n.href?(t=Gd(n.href),(r=(n=Je(u).hoistableStyles).get(t))||(r={type:"style",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if("stylesheet"===n.rel&&"string"==typeof n.href&&"string"==typeof n.precedence){e=Gd(n.href);var c=Je(u).hoistableStyles,d=c.get(e);if(d||(u=u.ownerDocument||u,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,d),(c=u.querySelector(qd(e)))&&!c._p&&(d.instance=c,d.state.loading=5),zd.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},zd.set(e,n),c||(a=u,o=e,l=n,s=d.state,a.querySelector('link[rel="preload"][as="style"]['+o+"]")?s.loading=1:(o=a.createElement("link"),s.preload=o,o.addEventListener("load",function(){return s.loading|=1}),o.addEventListener("error",function(){return s.loading|=2}),fd(o,"link",l),et(o),a.head.appendChild(o))))),t&&null===r)throw Error(i(528,""));return d}if(t&&null!==r)throw Error(i(529,""));return null;case"script":return t=n.async,"string"==typeof(n=n.src)&&t&&"function"!=typeof t&&"symbol"!=typeof t?(t=Kd(n),(r=(n=Je(u).hoistableScripts).get(t))||(r={type:"script",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Gd(e){return'href="'+yt(e)+'"'}function qd(e){return'link[rel="stylesheet"]['+e+"]"}function Yd(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function Kd(e){return'[src="'+yt(e)+'"]'}function Qd(e){return"script[async]"+e}function Xd(e,t,n){if(t.count++,null===t.instance)switch(t.type){case"style":var r=e.querySelector('style[data-href~="'+yt(n.href)+'"]');if(r)return t.instance=r,et(r),r;var a=p({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return et(r=(e.ownerDocument||e).createElement("style")),fd(r,"style",a),Zd(r,n.precedence,e),t.instance=r;case"stylesheet":a=Gd(n.href);var o=e.querySelector(qd(a));if(o)return t.state.loading|=4,t.instance=o,et(o),o;r=Yd(n),(a=zd.get(a))&&Jd(r,a),et(o=(e.ownerDocument||e).createElement("link"));var l=o;return l._p=new Promise(function(e,t){l.onload=e,l.onerror=t}),fd(o,"link",r),t.state.loading|=4,Zd(o,n.precedence,e),t.instance=o;case"script":return o=Kd(n.src),(a=e.querySelector(Qd(o)))?(t.instance=a,et(a),a):(r=n,(a=zd.get(o))&&ef(r=p({},n),a),et(a=(e=e.ownerDocument||e).createElement("script")),fd(a,"link",r),e.head.appendChild(a),t.instance=a);case"void":return null;default:throw Error(i(443,t.type))}else"stylesheet"===t.type&&!(4&t.state.loading)&&(r=t.instance,t.state.loading|=4,Zd(r,n.precedence,e));return t.instance}function Zd(e,t,n){for(var r=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),a=r.length?r[r.length-1]:null,o=a,i=0;i<r.length;i++){var l=r[i];if(l.dataset.precedence===t)o=l;else if(o!==a)break}o?o.parentNode.insertBefore(e,o.nextSibling):(t=9===n.nodeType?n.head:n).insertBefore(e,t.firstChild)}function Jd(e,t){null==e.crossOrigin&&(e.crossOrigin=t.crossOrigin),null==e.referrerPolicy&&(e.referrerPolicy=t.referrerPolicy),null==e.title&&(e.title=t.title)}function ef(e,t){null==e.crossOrigin&&(e.crossOrigin=t.crossOrigin),null==e.referrerPolicy&&(e.referrerPolicy=t.referrerPolicy),null==e.integrity&&(e.integrity=t.integrity)}var tf=null;function nf(e,t,n){if(null===tf){var r=new Map,a=tf=new Map;a.set(n,r)}else(r=(a=tf).get(n))||(r=new Map,a.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),a=0;a<n.length;a++){var o=n[a];if(!(o[Ye]||o[$e]||"link"===e&&"stylesheet"===o.getAttribute("rel"))&&"http://www.w3.org/2000/svg"!==o.namespaceURI){var i=o.getAttribute(t)||"";i=e+i;var l=r.get(i);l?l.push(o):r.set(i,[o])}}return r}function rf(e,t,n){(e=e.ownerDocument||e).head.insertBefore(n,"title"===t?e.querySelector("head > title"):null)}function af(e){return!!("stylesheet"!==e.type||3&e.state.loading)}var of=0;function lf(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages))if(this.stylesheets)uf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var sf=null;function uf(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sf=new Map,t.forEach(cf,e),sf=null,lf.call(e))}function cf(e,t){if(!(4&t.state.loading)){var n=sf.get(e);if(n)var r=n.get(null);else{n=new Map,sf.set(e,n);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o<a.length;o++){var i=a[o];"LINK"!==i.nodeName&&"not all"===i.getAttribute("media")||(n.set(i.dataset.precedence,i),r=i)}r&&n.set(null,r)}i=(a=t.instance).getAttribute("data-precedence"),(o=n.get(i)||r)===r&&n.set(null,a),n.set(i,a),this.count++,r=lf.bind(this),a.addEventListener("load",r),a.addEventListener("error",r),o?o.parentNode.insertBefore(a,o.nextSibling):(e=9===e.nodeType?e.head:e).insertBefore(a,e.firstChild),t.state.loading|=4}}var df={$$typeof:k,Provider:null,Consumer:null,_currentValue:D,_currentValue2:D,_threadCount:0};function ff(e,t,n,r,a,o,i,l,s){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Oe(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Oe(0),this.hiddenUpdates=Oe(null),this.identifierPrefix=r,this.onUncaughtError=a,this.onCaughtError=o,this.onRecoverableError=i,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=s,this.incompleteTransitions=new Map}function pf(e,t,n,r,a,o,i,l,s,u,c,d){return e=new ff(e,t,n,i,s,u,c,d,l),t=1,!0===o&&(t|=24),o=Mr(3,null,null,t),e.current=o,o.stateNode=e,(t=za()).refCount++,e.pooledCache=t,t.refCount++,o.memoizedState={element:r,isDehydrated:n,cache:t},yo(o),e}function hf(e){return e?e=Dr:Dr}function mf(e,t,n,r,a,o){a=hf(a),null===r.context?r.context=a:r.pendingContext=a,(r=vo(t)).payload={element:n},null!==(o=void 0===o?null:o)&&(r.callback=o),null!==(n=wo(e,r,t))&&(Yu(n,0,t),ko(n,e,t))}function gf(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function yf(e,t){gf(e,t),(e=e.alternate)&&gf(e,t)}function bf(e){if(13===e.tag||31===e.tag){var t=Lr(e,67108864);null!==t&&Yu(t,0,67108864),yf(e,67108864)}}function vf(e){if(13===e.tag||31===e.tag){var t=Gu(),n=Lr(e,t=De(t));null!==n&&Yu(n,0,t),yf(e,t)}}var wf=!0;function kf(e,t,n,r){var a=R.T;R.T=null;var o=I.p;try{I.p=2,xf(e,t,n,r)}finally{I.p=o,R.T=a}}function Sf(e,t,n,r){var a=R.T;R.T=null;var o=I.p;try{I.p=8,xf(e,t,n,r)}finally{I.p=o,R.T=a}}function xf(e,t,n,r){if(wf){var a=Ef(r);if(null===a)td(e,t,r,_f,n),Df(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Nf=Ff(Nf,e,t,n,r,a),!0;case"dragenter":return Pf=Ff(Pf,e,t,n,r,a),!0;case"mouseover":return Of=Ff(Of,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return jf.set(o,Ff(jf.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,Lf.set(o,Ff(Lf.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(Df(e,r),4&t&&-1<If.indexOf(e)){for(;null!==a;){var o=Xe(a);if(null!==o)switch(o.tag){case 3:if((o=o.stateNode).current.memoizedState.isDehydrated){var i=Ae(o.pendingLanes);if(0!==i){var l=o;for(l.pendingLanes|=2,l.entangledLanes|=2;i;){var s=1<<31-we(i);l.entanglements[1]|=s,i&=~s}Ic(o),!(6&pu)&&(Ru=se()+500,Dc(0,!1))}}break;case 31:case 13:null!==(l=Lr(o,2))&&Yu(l,0,2),Ju(),yf(o,2)}if(null===(o=Ef(r))&&td(e,t,r,_f,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else td(e,t,r,null,n)}}function Ef(e){return Af(e=Rt(e))}var _f=null;function Af(e){if(_f=null,null!==(e=Qe(e))){var t=s(e);if(null===t)e=null;else{var n=t.tag;if(13===n){if(null!==(e=u(t)))return e;e=null}else if(31===n){if(null!==(e=c(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return _f=e,null}function Cf(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(ue()){case ce:return 2;case de:return 8;case fe:case pe:return 32;case he:return 268435456;default:return 32}default:return 32}}var Tf=!1,Nf=null,Pf=null,Of=null,jf=new Map,Lf=new Map,Rf=[],If="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Df(e,t){switch(e){case"focusin":case"focusout":Nf=null;break;case"dragenter":case"dragleave":Pf=null;break;case"mouseover":case"mouseout":Of=null;break;case"pointerover":case"pointerout":jf.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Lf.delete(t.pointerId)}}function Ff(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&(null!==(t=Xe(t))&&bf(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Mf(e){var t=Qe(e.target);if(null!==t){var n=s(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=u(n)))return e.blockedOn=t,void ze(e.priority,function(){vf(n)})}else if(31===t){if(null!==(t=c(n)))return e.blockedOn=t,void ze(e.priority,function(){vf(n)})}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function zf(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Ef(e.nativeEvent);if(null!==n)return null!==(t=Xe(n))&&bf(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);Lt=r,n.target.dispatchEvent(r),Lt=null,t.shift()}return!0}function Bf(e,t,n){zf(e)&&n.delete(t)}function $f(){Tf=!1,null!==Nf&&zf(Nf)&&(Nf=null),null!==Pf&&zf(Pf)&&(Pf=null),null!==Of&&zf(Of)&&(Of=null),jf.forEach(Bf),Lf.forEach(Bf)}function Uf(e,t){e.blockedOn===t&&(e.blockedOn=null,Tf||(Tf=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,$f)))}var Hf=null;function Vf(e){Hf!==e&&(Hf=e,r.unstable_scheduleCallback(r.unstable_NormalPriority,function(){Hf===e&&(Hf=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],a=e[t+2];if("function"!=typeof r){if(null===Af(r||n))continue;break}var o=Xe(n);null!==o&&(e.splice(t,3),t-=3,tl(o,{pending:!0,data:a,method:n.method,action:r},r,a))}}))}function Wf(e){function t(t){return Uf(t,e)}null!==Nf&&Uf(Nf,e),null!==Pf&&Uf(Pf,e),null!==Of&&Uf(Of,e),jf.forEach(t),Lf.forEach(t);for(var n=0;n<Rf.length;n++){var r=Rf[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Rf.length&&null===(n=Rf[0]).blockedOn;)Mf(n),null===n.blockedOn&&Rf.shift();if(null!=(n=(e.ownerDocument||e).$$reactFormReplay))for(r=0;r<n.length;r+=3){var a=n[r],o=n[r+1],i=a[Ue]||null;if("function"==typeof o)i||Vf(n);else if(i){var l=null;if(o&&o.hasAttribute("formAction")){if(a=o,i=o[Ue]||null)l=i.formAction;else if(null!==Af(a))continue}else l=i.action;"function"==typeof l?n[r+1]=l:(n.splice(r,3),r-=3),Vf(n)}}}function Gf(){function e(e){e.canIntercept&&"react-transition"===e.info&&e.intercept({handler:function(){return new Promise(function(e){return a=e})},focusReset:"manual",scroll:"manual"})}function t(){null!==a&&(a(),a=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&null!=e.url&&navigation.navigate(e.url,{state:e.getState(),info:"react-transition",history:"replace"})}}if("object"==typeof navigation){var r=!1,a=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),null!==a&&(a(),a=null)}}}function qf(e){this._internalRoot=e}function Yf(e){this._internalRoot=e}Yf.prototype.render=qf.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(i(409));mf(t.current,Gu(),e,t,null,null)},Yf.prototype.unmount=qf.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;mf(e.current,2,null,e,null,null),Ju(),t[He]=null}},Yf.prototype.unstable_scheduleHydration=function(e){if(e){var t=Me();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Rf.length&&0!==t&&t<Rf[n].priority;n++);Rf.splice(n,0,e),0===n&&Mf(e)}};var Kf=a.version;if("19.2.1"!==Kf)throw Error(i(527,Kf,"19.2.1"));I.findDOMNode=function(e){var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw e=Object.keys(e).join(","),Error(i(268,e))}return e=function(e){var t=e.alternate;if(!t){if(null===(t=s(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return d(a),e;if(o===r)return d(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,u=a.child;u;){if(u===n){l=!0,n=a,r=o;break}if(u===r){l=!0,r=a,n=o;break}u=u.sibling}if(!l){for(u=o.child;u;){if(u===n){l=!0,n=o,r=a;break}if(u===r){l=!0,r=o,n=a;break}u=u.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(t),e=null===(e=null!==e?f(e):null)?null:e.stateNode};var Qf={bundleType:0,version:"19.2.1",rendererPackageName:"react-dom",currentDispatcherRef:R,reconcilerVersion:"19.2.1"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var Xf=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Xf.isDisabled&&Xf.supportsFiber)try{ye=Xf.inject(Qf),be=Xf}catch(Jf){}}t.createRoot=function(e,t){if(!l(e))throw Error(i(299));var n=!1,r="",a=El,o=_l,s=Al;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onUncaughtError&&(a=t.onUncaughtError),void 0!==t.onCaughtError&&(o=t.onCaughtError),void 0!==t.onRecoverableError&&(s=t.onRecoverableError)),t=pf(e,1,!1,null,0,n,r,null,a,o,s,Gf),e[He]=t.current,Jc(e),new qf(t)},t.hydrateRoot=function(e,t,n){if(!l(e))throw Error(i(299));var r=!1,a="",o=El,s=_l,u=Al,c=null;return null!=n&&(!0===n.unstable_strictMode&&(r=!0),void 0!==n.identifierPrefix&&(a=n.identifierPrefix),void 0!==n.onUncaughtError&&(o=n.onUncaughtError),void 0!==n.onCaughtError&&(s=n.onCaughtError),void 0!==n.onRecoverableError&&(u=n.onRecoverableError),void 0!==n.formState&&(c=n.formState)),(t=pf(e,1,!0,t,0,r,a,c,o,s,u,Gf)).context=hf(null),n=t.current,(a=vo(r=De(r=Gu()))).callback=null,wo(n,a,r),n=r,t.current.lanes=n,je(t,n),Ic(t),e[He]=t.current,Jc(e),new Yf(t)},t.version="19.2.1"},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(6540),a=n(4848);function o(e,t){const n=e.split(/(\{\w+\})/).map((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e});return n.some(e=>(0,r.isValidElement)(e))?n.map((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e).filter(e=>""!==e):n.join("")}var i=n(2654);function l({id:e,message:t}){if(void 0===e&&void 0===t)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[e??t]??t??e}function s({message:e,id:t},n){return o(l({message:e,id:t}),n)}function u({children:e,id:t,values:n}){if(e&&"string"!=typeof e)throw console.warn("Illegal <Translate> children",e),new Error("The Docusaurus <Translate> component only accept simple string values");const r=l({message:e,id:t});return(0,a.jsx)(a.Fragment,{children:o(r,n)})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>m,u:()=>s});var r=n(6540),a=n(205),o=n(3109),i=n(4848);const l="ease-in-out";function s({initialState:e}){const[t,n]=(0,r.useState)(e??!1),a=(0,r.useCallback)(()=>{n(e=>!e)},[]);return{collapsed:t,setCollapsed:n,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?u:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f({collapsibleRef:e,collapsed:t,animation:n}){const a=(0,r.useRef)(!1);(0,r.useEffect)(()=>{const r=e.current;function i(){const e=r.scrollHeight,t=n?.duration??function(e){if((0,o.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(e);return{transition:`height ${t}ms ${n?.easing??l}`,height:`${e}px`}}function s(){const e=i();r.style.transition=e.transition,r.style.height=e.height}if(!a.current)return d(r,t),void(a.current=!0);return r.style.willChange="height",function(){const e=requestAnimationFrame(()=>{t?(s(),requestAnimationFrame(()=>{r.style.height=u.height,r.style.overflow=u.overflow})):(r.style.display="block",requestAnimationFrame(()=>{s()}))});return()=>cancelAnimationFrame(e)}()},[e,t,n])}function p({as:e="div",collapsed:t,children:n,animation:a,onCollapseTransitionEnd:o,className:l}){const s=(0,r.useRef)(null);return f({collapsibleRef:s,collapsed:t,animation:a}),(0,i.jsx)(e,{ref:s,onTransitionEnd:e=>{"height"===e.propertyName&&(d(s.current,t),o?.(t))},className:l,children:n})}function h({collapsed:e,...t}){const[n,o]=(0,r.useState)(!e),[l,s]=(0,r.useState)(e);return(0,a.A)(()=>{e||o(!0)},[e]),(0,a.A)(()=>{n&&s(e)},[n,e]),n?(0,i.jsx)(p,{...t,collapsed:l}):null}function m({lazy:e,...t}){const n=e?h:p;return(0,i.jsx)(n,{...t})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o({locale:e,version:t,tag:n}){const o=e;return(0,a.jsxs)(r.A,{children:[e&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:e}),t&&(0,a.jsx)("meta",{name:"docusaurus_version",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:language",content:o}),t&&(0,a.jsx)("meta",{name:"docsearch:version",content:t}),n&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:n})]})}},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>A,yJ:()=>p,sC:()=>T,AO:()=>f});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach(function(e){return e.apply(void 0,n)})}}}var m=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var y="popstate",b="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),m||(0,l.A)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,S=void 0===k?g:k,x=i.keyLength,E=void 0===x?6:x,_=e.basename?d(s(e.basename)):"";function A(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=c(o,_)),p(o,r,n)}function C(){return Math.random().toString(36).substr(2,E)}var T=h();function N(e){(0,r.A)($,e),$.length=n.length,T.notifyListeners($.location,$.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||L(A(e.state))}function O(){L(A(v()))}var j=!1;function L(e){if(j)j=!1,N();else{T.confirmTransitionTo(e,"POP",S,function(t){t?N({action:"POP",location:e}):function(e){var t=$.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(j=!0,F(a))}(e)})}}var R=A(v()),I=[R.key];function D(e){return _+f(e)}function F(e){n.go(e)}var M=0;function z(e){1===(M+=e)&&1===e?(window.addEventListener(y,P),o&&window.addEventListener(b,O)):0===M&&(window.removeEventListener(y,P),o&&window.removeEventListener(b,O))}var B=!1;var $={length:n.length,action:"POP",location:R,createHref:D,push:function(e,t){var r="PUSH",o=p(e,t,C(),$.location);T.confirmTransitionTo(o,r,S,function(e){if(e){var t=D(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=I.indexOf($.location.key),u=I.slice(0,s+1);u.push(o.key),I=u,N({action:r,location:o})}else window.location.href=t}})},replace:function(e,t){var r="REPLACE",o=p(e,t,C(),$.location);T.confirmTransitionTo(o,r,S,function(e){if(e){var t=D(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=I.indexOf($.location.key);-1!==s&&(I[s]=o.key),N({action:r,location:o})}else window.location.replace(t)}})},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=T.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var k="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function x(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(x(window.location.href)+"#"+e)}function A(e){void 0===e&&(e={}),m||(0,l.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,y=e.basename?d(s(e.basename)):"",b=S[u],v=b.encodePath,w=b.decodePath;function A(){var e=w(E());return y&&(e=c(e,y)),p(e)}var C=h();function T(e){(0,r.A)(B,e),B.length=t.length,C.notifyListeners(B.location,B.action)}var N=!1,P=null;function O(){var e,t,n=E(),r=v(n);if(n!==r)_(r);else{var a=A(),i=B.location;if(!N&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===f(a))return;P=null,function(e){if(N)N=!1,T();else{var t="POP";C.confirmTransitionTo(e,t,o,function(n){n?T({action:t,location:e}):function(e){var t=B.location,n=I.lastIndexOf(f(t));-1===n&&(n=0);var r=I.lastIndexOf(f(e));-1===r&&(r=0);var a=n-r;a&&(N=!0,D(a))}(e)})}}(a)}}var j=E(),L=v(j);j!==L&&_(L);var R=A(),I=[f(R)];function D(e){t.go(e)}var F=0;function M(e){1===(F+=e)&&1===e?window.addEventListener(k,O):0===F&&window.removeEventListener(k,O)}var z=!1;var B={length:t.length,action:"POP",location:R,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=x(window.location.href)),n+"#"+v(y+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,B.location);C.confirmTransitionTo(r,n,o,function(e){if(e){var t=f(r),a=v(y+t);if(E()!==a){P=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(f(B.location)),i=I.slice(0,o+1);i.push(t),I=i,T({action:n,location:r})}else T()}})},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,B.location);C.confirmTransitionTo(r,n,o,function(e){if(e){var t=f(r),a=v(y+t);E()!==a&&(P=t,_(a));var o=I.indexOf(f(B.location));-1!==o&&(I[o]=t),T({action:n,location:r})}})},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=C.setPrompt(e);return z||(M(1),z=!0),function(){return z&&(z=!1,M(-1)),t()}},listen:function(e){var t=C.appendListener(e);return M(1),function(){M(-1),t()}}};return B}function C(e,t,n){return Math.min(Math.max(e,t),n)}function T(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=h();function d(e){(0,r.A)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function m(){return Math.random().toString(36).substr(2,u)}var g=C(l,0,o.length-1),y=o.map(function(e){return p(e,void 0,"string"==typeof e?m():e.key||m())}),b=f;function v(e){var t=C(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,function(e){e?d({action:"POP",location:r,index:t}):d()})}var w={length:y.length,action:"POP",location:y[g],index:g,entries:y,createHref:b,push:function(e,t){var r="PUSH",a=p(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}})},replace:function(e,t){var r="REPLACE",a=p(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))})},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},1561:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},1635:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>I,__assign:()=>o,__asyncDelegator:()=>_,__asyncGenerator:()=>E,__asyncValues:()=>A,__await:()=>x,__awaiter:()=>h,__classPrivateFieldGet:()=>j,__classPrivateFieldIn:()=>R,__classPrivateFieldSet:()=>L,__createBinding:()=>g,__decorate:()=>l,__disposeResources:()=>F,__esDecorate:()=>u,__exportStar:()=>y,__extends:()=>a,__generator:()=>m,__importDefault:()=>O,__importStar:()=>P,__makeTemplateObject:()=>C,__metadata:()=>p,__param:()=>s,__propKey:()=>d,__read:()=>v,__rest:()=>i,__rewriteRelativeImportExtension:()=>M,__runInitializers:()=>c,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>S,__spreadArrays:()=>k,__values:()=>b,default:()=>z});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function l(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",c=!t&&e?r.static?e:e.prototype:null,d=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var h={};for(var m in r)h[m]="access"===m?{}:r[m];for(var m in r.access)h.access[m]=r.access[m];h.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var g=(0,n[p])("accessor"===s?{get:d.get,set:d.set}:d[u],h);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(l=i(g.get))&&(d.get=l),(l=i(g.set))&&(d.set=l),(l=i(g.init))&&a.unshift(l)}else(l=i(g))&&("field"===s?a.unshift(l):d[u]=l)}c&&Object.defineProperty(c,r.name,d),f=!0}function c(e,t,n){for(var r=arguments.length>2,a=0;a<t.length;a++)n=r?t[a].call(e,n):t[a].call(e);return r?n:void 0}function d(e){return"symbol"==typeof e?e:"".concat(e)}function f(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function p(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{s(r.next(e))}catch(t){o(t)}}function l(e){try{s(r.throw(e))}catch(t){o(t)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,l)}s((r=r.apply(e,t||[])).next())})}function m(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=l(0),i.throw=l(1),i.return=l(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return o.label++,{value:l[1],done:!1};case 5:o.label++,r=l[1],l=[0];continue;case 7:l=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){o=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){o.label=l[1];break}if(6===l[0]&&o.label<a[1]){o.label=a[1],a=l;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(l);break}a[2]&&o.ops.pop(),o.trys.pop();continue}l=t.call(e,o)}catch(s){l=[6,s],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}var g=Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function y(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||g(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(v(arguments[t]));return e}function k(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,l=o.length;i<l;i++,a++)r[a]=o[i];return r}function S(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}function x(e){return this instanceof x?(this.v=e,this):new x(e)}function E(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,a=n.apply(e,t||[]),o=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),i("next"),i("throw"),i("return",function(e){return function(t){return Promise.resolve(t).then(e,u)}}),r[Symbol.asyncIterator]=function(){return this},r;function i(e,t){a[e]&&(r[e]=function(t){return new Promise(function(n,r){o.push([e,t,n,r])>1||l(e,t)})},t&&(r[e]=t(r[e])))}function l(e,t){try{(n=a[e](t)).value instanceof x?Promise.resolve(n.value.v).then(s,u):c(o[0][2],n)}catch(r){c(o[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",function(e){throw e}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:x(e[r](t)),done:!1}:a?a(t):t}:a}}function A(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,a){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,a,(t=e[n](t)).done,t.value)})}}}function C(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var T=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},N=function(e){return N=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},N(e)};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=N(e),r=0;r<n.length;r++)"default"!==n[r]&&g(t,e,n[r]);return T(t,e),t}function O(e){return e&&e.__esModule?e:{default:e}}function j(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function L(e,t,n,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(e,n):a?a.value=n:t.set(e,n),n}function R(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function I(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var r,a;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=t[Symbol.asyncDispose]}if(void 0===r){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=t[Symbol.dispose],n&&(a=r)}if("function"!=typeof r)throw new TypeError("Object not disposable.");a&&(r=function(){try{a.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t}var D="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var r=new Error(n);return r.name="SuppressedError",r.error=e,r.suppressed=t,r};function F(e){function t(t){e.error=e.hasError?new D(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}var n,r=0;return function a(){for(;n=e.stack.pop();)try{if(!n.async&&1===r)return r=0,e.stack.push(n),Promise.resolve().then(a);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return r|=2,Promise.resolve(o).then(a,function(e){return t(e),a()})}else r|=1}catch(i){t(i)}if(1===r)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}()}function M(e,t){return"string"==typeof e&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,a,o){return n?t?".jsx":".js":!r||a&&o?r+a+"."+o.toLowerCase()+"js":e}):e}const z={__extends:a,__assign:o,__rest:i,__decorate:l,__param:s,__esDecorate:u,__runInitializers:c,__propKey:d,__setFunctionName:f,__metadata:p,__awaiter:h,__generator:m,__createBinding:g,__exportStar:y,__values:b,__read:v,__spread:w,__spreadArrays:k,__spreadArray:S,__await:x,__asyncGenerator:E,__asyncDelegator:_,__asyncValues:A,__makeTemplateObject:C,__importStar:P,__importDefault:O,__classPrivateFieldGet:j,__classPrivateFieldSet:L,__classPrivateFieldIn:R,__addDisposableResource:I,__disposeResources:F,__rewriteRelativeImportExtension:M}},1765:(e,t,n)=>{"use strict";n.d(t,{My:()=>C,f4:()=>ne});var r,a,o,i,l,s,u,c=n(6540),d=n(4164),f=Object.create,p=Object.defineProperty,h=Object.defineProperties,m=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,S=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,x=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&S(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&S(e,n,t[n]);return e},E=(e,t)=>h(e,g(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},A=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach(function(t,r){a[r]=e(t,n)}),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,function(t,n){n===u&&t!=e&&(this[t]=i)}),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",o),!o.grammar)throw new Error('The language "'+o.language+'" has no grammar.');return o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var h=0;h<p.length;++h){if(d&&d.cause==f+","+h)return;var m=p[h],g=m.inside,y=!!m.lookbehind,b=!!m.greedy,v=m.alias;if(b&&!m.pattern.global){var w=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,w+"g")}for(var k=m.pattern||m,S=l.next,x=c;S!==t.tail&&!(d&&x>=d.reach);x+=S.value.length,S=S.next){var E=S.value;if(t.length>e.length)return;if(!(E instanceof a)){var _,A=1;if(b){if(!(_=o(k,x,e,y))||_.index>=e.length)break;var C=_.index,T=_.index+_[0].length,N=x;for(N+=S.value.length;C>=N;)N+=(S=S.next).value.length;if(x=N-=S.value.length,S.value instanceof a)continue;for(var P=S;P!==t.tail&&(N<T||"string"==typeof P.value);P=P.next)A++,N+=P.value.length;A--,E=e.slice(x,N),_.index-=x}else if(!(_=o(k,0,E,y)))continue;C=_.index;var O=_[0],j=E.slice(0,C),L=E.slice(C+O.length),R=x+E.length;d&&R>d.reach&&(d.reach=R);var I=S.prev;if(j&&(I=s(t,I,j),x+=j.length),u(t,I,A),S=s(t,I,new a(f,g?r.tokenize(O,g):O,v,O)),L&&s(t,S,L),A>1){var D={cause:f+","+h,reach:R};i(e,t,n,S.prev,x,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach(function(t){a+=e(t,n)}),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),C=((e,t,n)=>(n=null!=e?f(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||p(e,a,{get:()=>t[a],enumerable:!(r=m(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:p(n,"default",{value:e,enumerable:!0}),e)))(A());C.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},C.languages.markup.tag.inside["attr-value"].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside["internal-subset"].inside=C.languages.markup,C.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend("markup",{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,o=C,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),u={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":u}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":u}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},C.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend("clike",{"class-name":[C.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:C.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:C.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),C.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),C.languages.markup&&(C.languages.markup.tag.addInlined("script","javascript"),C.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),C.languages.js=C.languages.javascript,C.languages.actionscript=C.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript["class-name"].alias="function",delete C.languages.actionscript.parameter,delete C.languages.actionscript["literal-property"],C.languages.markup&&C.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(C),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach(function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l<s;l++)i[l]instanceof RegExp&&(i[l]={pattern:i[l]}),r(i[l]);else r(i)}})}}),t.addSupport(["java","javascript","php"],t)}(C),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(C),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(C),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return r}),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a,o=t[n];"code"!==o.type?e(o.content):(a=o.content[1],o=o.content[3],a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content&&(a=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),a="language-"+(a=(/[a-z][\w-]*/i.exec(a)||[""])[0].toLowerCase()),o.alias?"string"==typeof o.alias?o.alias=[o.alias,a]:o.alias.push(a):o.alias=[a]))}}(e.tokens)}),e.hooks.add("wrap",function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r];if(o=/language-(.+)/.exec(o)){n=o[1];break}}var u,c=e.languages[n];c?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n)):l[t]||e}),c,n):n&&"none"!==n&&e.plugins.autoloader&&(u="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=u,e.plugins.autoloader.loadLanguages(n,function(){var t=document.getElementById(u);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}),RegExp(e.languages.markup.tag.pattern.source,"gi")),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:C.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},C.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var t=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),0<a.length)){var l=f(/^\{$/,/^\}$/);if(-1!==l)for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&0<=a.indexOf(u.content)&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return}return 1}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}}),C.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),u=0,c={},d=(s=l(s.map(function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n}).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var o=0;o<n.length;o++){if(u>=d.length)return;var i,s,f,p,h,m,g,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(g=(m="string"==typeof y?y:y.content).indexOf(i))&&(++u,s=m.substring(0,g),h=c[i],f=void 0,(p={})["interpolation-punctuation"]=a,3===(p=e.tokenize(h,p)).length&&((f=[1,1]).push.apply(f,l(p[1],e.languages.javascript,"javascript")),p.splice.apply(p,f)),f=new e.Token("interpolation",p,r.alias,h),p=m.substring(g+i.length),h=[],s&&h.push(s),h.push(f),p&&(t(m=[p]),h.push.apply(h,m)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(h)),o+=h.length-1):y.content=h)):(g=y.content,Array.isArray(g)?t(g):t([g]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",function(t){t.language in u&&function t(n){for(var r=0,a=n.length;r<a;r++){var o,i,l,u=n[r];"string"!=typeof u&&(o=u.content,Array.isArray(o)?"template-string"===u.type?(u=o[1],3===o.length&&"string"!=typeof u&&"embedded-code"===u.type&&(i=c(u),u=u.alias,u=Array.isArray(u)?u[0]:u,l=e.languages[u])&&(o[1]=s(i,l,u))):t(o):"string"!=typeof o&&t([o]))}}(t.tokens)})}(C),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(C),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,function(){return n})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(C),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(C),C.languages.n4js=C.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),C.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),C.languages.n4jsd=C.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source}),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];a=(o="RegExp"===e.util.type(o)?e.languages.javascript[a]={pattern:o}:o).inside||{};(o.inside=a)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(C),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,function(){return n}).replace(/<BRACES>/g,function(){return r}).replace(/<SPREAD>/g,function(){return a}),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;"string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===l(a.content[0].content[1])&&n.pop():"/>"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&0<n.length&&0===n[n.length-1].openedBraces&&(o=l(a),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(o+=l(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(o=l(t[r-1])+o,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",o,null,o)),a.content&&"string"!=typeof a.content&&i(a.content)}}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)})}(C),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(C),C.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},C.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(C),C.languages.c=C.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},C.languages.c.string],char:C.languages.c.char,comment:C.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:C.languages.c}}}}),C.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete C.languages.c.boolean,C.languages.objectivec=C.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete C.languages.objectivec["class-name"],C.languages.objc=C.languages.objectivec,C.languages.reason=C.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),C.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete C.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,function(){return t});t=t.replace(/<self>/g,function(){return/[^\s\S]/.source}),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(C),C.languages.go=C.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),C.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(C),C.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},C.languages.python["string-interpolation"].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},C.languages.webmanifest=C.languages.json;((e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>N,duotoneLight:()=>P,github:()=>O,gruvboxMaterialDark:()=>Y,gruvboxMaterialLight:()=>K,jettwaveDark:()=>V,jettwaveLight:()=>W,nightOwl:()=>j,nightOwlLight:()=>L,oceanicNext:()=>D,okaidia:()=>F,oneDark:()=>G,oneLight:()=>q,palenight:()=>M,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>H});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},N={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},P={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},O={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},j={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},L={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},R="#c5a5c5",I="#8dc891",D={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:R}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:R}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},F={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},M={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},H={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},V={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},G={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},q={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Y={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},K={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},Q=/\r\n|\r|\n/,X=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Z=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},J=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)<a[i];){let e,u=t[i];const c=n[i][o];if("string"==typeof c?(u=i>0?u:["plain"],e=c):(u=Z(u,c.type),c.alias&&(u=Z(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(Q),f=d.length;l.push({types:u,content:d[0]});for(let t=1;t<f;t++)X(l),s.push(l=[]),l.push({types:u,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),a.pop()}return X(l),s},ee=(e,t)=>{const{plain:n}=e,r=e.styles.reduce((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach(t=>{const n=x(x({},e[t]),a);e[t]=n}),e},{});return r.root=n,r.plain=E(x({},n),{backgroundColor:void 0}),r},te=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=ee(r,o),l=(e=>(0,c.useCallback)(t=>{var n=t,{className:r,style:a,line:o}=n,i=_(n,["className","style","line"]);const l=E(x({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=x(x({},l.style||{}),a)),l},[e]))(i),s=(e=>{const t=(0,c.useCallback)(({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map(t=>e[t]))},[e]);return(0,c.useCallback)(e=>{var n=e,{token:r,className:a,style:o}=n,i=_(n,["token","className","style"]);const l=E(x({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=x(x({},l.style||{}),o)),l},[t])})(i),u=(({prism:e,code:t,grammar:n,language:r})=>(0,c.useMemo)(()=>{if(null==n)return J([t]);const a={code:t,grammar:n,language:r,tokens:[]};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(t,n),e.hooks.run("after-tokenize",a),J(a.tokens)},[t,n,r,e]))({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:u,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ne=e=>(0,c.createElement)(te,E(x({},e),{prism:e.prism||C,theme:e.theme||U,code:e.code,language:e.language}))},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>h,e:()=>p});var r=n(6540),a=n(5600),o=n(4581),i=n(7485),l=n(6342),s=n(9532),u=n(4848);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,l.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1),u=(0,r.useCallback)(()=>{s(e=>!e)},[]);return(0,r.useEffect)(()=>{"desktop"===t&&s(!1)},[t]),(0,r.useMemo)(()=>({disabled:e,shouldRender:n,toggle:u,shown:i}),[e,n,u,i])}function f({handler:e}){return(0,i.$Z)(e),null}function p({children:e}){const t=d();return(0,u.jsxs)(u.Fragment,{children:[t.shown&&(0,u.jsx)(f,{handler:()=>(t.toggle(),!1)}),(0,u.jsx)(c.Provider,{value:t,children:e})]})}function h(){const e=r.useContext(c);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),a=n(6347),o=n(440);function i(){const{siteConfig:{baseUrl:e,trailingSlash:t},i18n:{localeConfigs:n}}=(0,r.A)(),{pathname:i}=(0,a.zy)(),l=(0,o.Ks)(i,{trailingSlash:t,baseUrl:e}).replace(e,"");return{createUrl:function({locale:e,fullyQualified:t}){const r=function(e){const t=n[e];if(!t)throw new Error(`Unexpected Docusaurus bug, no locale config found for locale=${e}`);return t}(e);return`${`${t?r.url:""}`}${r.baseUrl}${l}`}}}},2181:(e,t,n)=>{"use strict";n.d(t,{bq:()=>c,MN:()=>u,a2:()=>s,k2:()=>d});var r=n(6540),a=n(1312),o=n(440);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var l=n(4848);function s(e){return(0,l.jsx)("button",{type:"button",...e,children:(0,l.jsx)(a.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function u({error:e,tryAgain:t}){return(0,l.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,l.jsx)("p",{children:e.message}),(0,l.jsx)(s,{onClick:t})]})}function c({error:e}){const t=(0,o.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,l.jsx)("p",{className:i.errorBoundaryError,children:t})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},2342:()=>{Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python},2514:()=>{Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},2654:e=>{"use strict";e.exports={}},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},2799:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case m:case s:return e;default:return t}}case a:return t}}}function S(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return S(e)||k(e)===c},t.isConcurrentMode=S,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===m},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},2831:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,v:()=>l});var r=n(6347),a=n(8168),o=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some(function(e){var a=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a}),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.dO,n,e.map(function(e,n){return o.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.A)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.A)({},n,t,{route:e}))}})})):null}},2833:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},2892:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>a})},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,u=n,u?a(s):o(s));var s,u;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;const r=n(2566);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}},3001:(e,t,n)=>{"use strict";n.r(t)},3025:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l({children:e,version:t}){return(0,o.jsx)(i.Provider,{value:t,children:e})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848);const o=r.createContext(null);function i({children:e,value:t}){const n=r.useContext(o),i=(0,r.useMemo)(()=>function({parent:e,value:t}){if(!e){if(!t)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in t))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return t}const n={...e.data,...t?.data};return{plugin:e.plugin,data:n}}({parent:n,value:t}),[n,t]);return(0,a.jsx)(o.Provider,{value:i,children:e})}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,gk:()=>p});var r=n(6540),a=n(8193),o=n(2303),i=(n(205),n(9532)),l=n(4848);const s=r.createContext(void 0);function u({children:e}){const t=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)(()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}}),[])}();return(0,l.jsx)(s.Provider,{value:t,children:e})}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t=[]){const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)(()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)},[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});n(6540);var r=n(1312);const a={iconExternalLink:"iconExternalLink_nPIU"};var o=n(4848);const i="#theme-svg-external-link";function l({width:e=13.5,height:t=13.5}){return(0,o.jsx)("svg",{width:e,height:t,"aria-label":(0,r.T)({id:"theme.IconExternalLink.ariaLabel",message:"(opens in new tab)",description:"The ARIA label for the external link icon"}),className:a.iconExternalLink,children:(0,o.jsx)("use",{href:i})})}},3259:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(6540),s=[],u=[];var c=l.createContext(null);function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then(function(e){return n.loading=!1,n.loaded=e,e}).catch(function(e){throw n.loading=!1,n.error=e,e}),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach(function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then(function(e){t.loaded[r]=e}).catch(function(e){t.error=e})})}catch(r){t.error=r}return t.promise=Promise.all(n).then(function(e){return t.loading=!1,e}).catch(function(e){throw t.loading=!1,e}),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return s.push(g),"function"==typeof h.webpack&&u.push(function(){if((0,h.webpack)().every(function(e){return void 0!==e&&void 0!==n.m[e]}))return g()}),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()}),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context&&Array.isArray(h.modules)&&h.modules.forEach(function(t){e.context.report(t)}),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout(function(){t({pastDelay:!0})},h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout(function(){t({timedOut:!0})},h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then(function(){return n(),null}).catch(function(e){return n(),null})}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextType",c),f}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return l.createElement(c.Provider,{value:{report:this.props.report}},l.Children.only(this.props.children))},t}(l.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then(function(){if(e.length)return y(e)})}m.Capture=g,m.preloadAll=function(){return new Promise(function(e,t){y(s).then(e,t)})},m.preloadReady=function(){return new Promise(function(e,t){y(u).then(e,e)})},e.exports=m},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(8774),a=n(6025),o=n(4586),i=n(6342),l=n(1122),s=n(4848);function u({logo:e,alt:t,imageClassName:n}){const r={light:(0,a.Ay)(e.src),dark:(0,a.Ay)(e.srcDark||e.src)},o=(0,s.jsx)(l.A,{className:e.className,sources:r,height:e.height,width:e.width,alt:t,style:e.style});return n?(0,s.jsx)("div",{className:n,children:o}):o}function c(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:c,titleClassName:d,...f}=e,p=(0,a.Ay)(l?.href||"/"),h=n?"":t,m=l?.alt??h;return(0,s.jsxs)(r.A,{to:p,...f,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:m,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},3535:(e,t,n)=>{"use strict";n.d(t,{v:()=>o});var r=n(6342);const a={anchorTargetStickyNavbar:"anchorTargetStickyNavbar_Vzrq",anchorTargetHideOnScrollNavbar:"anchorTargetHideOnScrollNavbar_vjPI"};function o(e){const{navbar:{hideOnScroll:t}}=(0,r.p)();if(void 0!==e)return t?a.anchorTargetHideOnScrollNavbar:a.anchorTargetStickyNavbar}},3886:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>g,g1:()=>b});var r=n(6540),a=n(8295),o=n(7065),i=n(6342),l=n(679),s=n(9532),u=n(4848);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,l.Wf)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,l.Wf)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,l.Wf)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map(e=>[e,{preferredVersionName:null}]));const p=r.createContext(null);function h(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)(()=>Object.keys(e),[e]),[o,l]=(0,r.useState)(()=>f(n));(0,r.useEffect)(()=>{l(function({pluginIds:e,versionPersistence:t,allDocsData:n}){function r(e){const r=d.read(e,t);return n[e].versions.some(e=>e.name===r)?{preferredVersionName:r}:(d.clear(e,t),{preferredVersionName:null})}return Object.fromEntries(e.map(e=>[e,r(e)]))}({allDocsData:e,versionPersistence:t,pluginIds:n}))},[e,t,n]);return[o,(0,r.useMemo)(()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l(t=>({...t,[e]:{preferredVersionName:n}}))}}),[t])]}function m({children:e}){const t=h();return(0,u.jsx)(p.Provider,{value:t,children:e})}function g({children:e}){return(0,u.jsx)(m,{children:e})}function y(){const e=(0,r.useContext)(p);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function b(e=o.W){const t=(0,a.ht)(e),[n,i]=y(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find(e=>e.name===l)??null,savePreferredVersionName:(0,r.useCallback)(t=>{i.savePreferredVersion(e,t)},[i,e])}}},4042:(e,t,n)=>{"use strict";n.d(t,{A:()=>Nt});var r=n(6540),a=n(4164),o=n(7489),i=n(5500),l=n(6347),s=n(1312),u=n(5062),c=n(4848);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)(e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)},[]);return(0,u.$)(({location:n})=>{e.current&&!n.hash&&"PUSH"===t&&f(e.current)}),{containerRef:e,onClick:n}}const h=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:r}=p();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(m,{className:b.skipToContent})}var w=n(6342),k=n(5041);function S({width:e=21,height:t=21,color:n="currentColor",strokeWidth:r=1.2,className:a,...o}){return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:e,height:t,...o,children:(0,c.jsx)("g",{stroke:n,strokeWidth:r,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const x={closeButton:"closeButton_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",x.closeButton,e.className),children:(0,c.jsx)(S,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function A(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.A)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const C={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:i}=e;return(0,c.jsxs)("div",{className:(0,a.A)(g.G.announcementBar.container,C.announcementBar),style:{backgroundColor:r,color:o},role:"banner",children:[i&&(0,c.jsx)("div",{className:C.announcementBarPlaceholder}),(0,c.jsx)(A,{className:C.announcementBarContent}),i&&(0,c.jsx)(E,{onClick:n,className:C.announcementBarClose})]})}var N=n(2069),P=n(3104);var O=n(9532),j=n(5600);const L=r.createContext(null);function R({children:e}){const t=function(){const e=(0,N.M)(),t=(0,j.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,O.ZC)(o);return(0,r.useEffect)(()=>{o&&!i&&a(!0)},[o,i]),(0,r.useEffect)(()=>{o?e.shown||a(!0):a(!1)},[e.shown,o]),(0,r.useMemo)(()=>[n,a],[n])}();return(0,c.jsx)(L.Provider,{value:t,children:e})}function I(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(L);if(!e)throw new O.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)(()=>n(!1),[n]),o=(0,j.YL)();return(0,r.useMemo)(()=>({shown:t,hide:a,content:I(o)}),[a,o,t])}function F(e){return parseInt(r.version.split(".")[0],10)<19?{inert:e?"":void 0}:{inert:e}}function M({children:e,inert:t}){return(0,c.jsx)("div",{className:(0,a.A)(g.G.layout.navbar.mobileSidebar.panel,"navbar-sidebar__item menu"),...F(t),children:e})}function z({header:e,primaryMenu:t,secondaryMenu:n}){const{shown:r}=D();return(0,c.jsxs)("div",{className:(0,a.A)(g.G.layout.navbar.mobileSidebar.container,"navbar-sidebar"),children:[e,(0,c.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":r}),children:[(0,c.jsx)(M,{inert:r,children:t}),(0,c.jsx)(M,{inert:!r,children:n})]})]})}var B=n(5293),$=n(2303);function U(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function H(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}function V(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"})})}const W="toggle_vylO",G="toggleButton_gllP",q="toggleIcon_g3eP",Y="systemToggleIcon_QzmC",K="lightToggleIcon_pyhR",Q="darkToggleIcon_wfgR",X="toggleButtonDisabled_aARS";function Z(e){switch(e){case null:return(0,s.T)({message:"system mode",id:"theme.colorToggle.ariaLabel.mode.system",description:"The name for the system color mode"});case"light":return(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"});case"dark":return(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"});default:throw new Error(`unexpected color mode ${e}`)}}function J(e){return(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the color mode toggle"},{mode:Z(e)})}function ee(){return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(U,{"aria-hidden":!0,className:(0,a.A)(q,K)}),(0,c.jsx)(H,{"aria-hidden":!0,className:(0,a.A)(q,Q)}),(0,c.jsx)(V,{"aria-hidden":!0,className:(0,a.A)(q,Y)})]})}function te({className:e,buttonClassName:t,respectPrefersColorScheme:n,value:r,onChange:o}){const i=(0,$.A)();return(0,c.jsx)("div",{className:(0,a.A)(W,e),children:(0,c.jsx)("button",{className:(0,a.A)("clean-btn",G,!i&&X,t),type:"button",onClick:()=>o(function(e,t){if(!t)return"dark"===e?"light":"dark";switch(e){case null:return"light";case"light":return"dark";case"dark":return null;default:throw new Error(`unexpected color mode ${e}`)}}(r,n)),disabled:!i,title:Z(r),"aria-label":J(r),children:(0,c.jsx)(ee,{})})})}const ne=r.memo(te),re={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function ae({className:e}){const t=(0,w.p)().navbar.style,{disableSwitch:n,respectPrefersColorScheme:r}=(0,w.p)().colorMode,{colorModeChoice:a,setColorMode:o}=(0,B.G)();return n?null:(0,c.jsx)(ne,{className:e,buttonClassName:"dark"===t?re.darkNavbarColorModeToggle:void 0,respectPrefersColorScheme:r,value:a,onChange:o})}var oe=n(3465);function ie(){return(0,c.jsx)(oe.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function le(){const e=(0,N.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(S,{color:"var(--ifm-color-emphasis-600)"})})}function se(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(ie,{}),(0,c.jsx)(ae,{className:"margin-right--md"}),(0,c.jsx)(le,{})]})}var ue=n(8774),ce=n(6025),de=n(6654);function fe(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var pe=n(3186);function he({activeBasePath:e,activeBaseRegex:t,to:n,href:r,label:a,html:o,isDropdownLink:i,prependBaseUrlToHref:l,...s}){const u=(0,ce.Ay)(n),d=(0,ce.Ay)(e),f=(0,ce.Ay)(r,{forcePrependBaseUrl:!0}),p=a&&r&&!(0,de.A)(r),h=o?{dangerouslySetInnerHTML:{__html:o}}:{children:(0,c.jsxs)(c.Fragment,{children:[a,p&&(0,c.jsx)(pe.A,{...i&&{width:12,height:12}})]})};return r?(0,c.jsx)(ue.A,{href:l?f:r,...s,...h}):(0,c.jsx)(ue.A,{to:u,isNavLink:!0,...(e||t)&&{isActive:(e,n)=>t?fe(t,n.pathname):n.pathname.startsWith(d)},...s,...h})}function me({className:e,isDropdownItem:t,...n}){return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(he,{className:(0,a.A)("menu__link",e),...n})})}function ge({className:e,isDropdownItem:t=!1,...n}){const r=(0,c.jsx)(he,{className:(0,a.A)(t?"dropdown__link":"navbar__item navbar__link",e),isDropdownLink:t,...n});return t?(0,c.jsx)("li",{children:r}):r}function ye({mobile:e=!1,position:t,...n}){const r=e?me:ge;return(0,c.jsx)(r,{...n,activeClassName:n.activeClassName??(e?"menu__link--active":"navbar__link--active")})}var be=n(1422),ve=n(9169),we=n(4586);const ke="dropdownNavbarItemMobile_J0Sd";function Se(e,t){return e.some(e=>function(e,t){return!!(0,ve.ys)(e.to,t)||!!fe(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t))}function xe({collapsed:e,onClick:t}){return(0,c.jsx)("button",{"aria-label":e?(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.expandAriaLabel",message:"Expand the dropdown",description:"The ARIA label of the button to expand the mobile dropdown navbar item"}):(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel",message:"Collapse the dropdown",description:"The ARIA label of the button to collapse the mobile dropdown navbar item"}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:t})}function Ee({items:e,className:t,position:n,onClick:o,...i}){const s=function(){const{siteConfig:{baseUrl:e}}=(0,we.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),u=(0,ve.ys)(i.to,s),d=Se(e,s),{collapsed:f,toggleCollapsed:p}=function({active:e}){const{collapsed:t,toggleCollapsed:n,setCollapsed:a}=(0,be.u)({initialState:()=>!e});return(0,r.useEffect)(()=>{e&&a(!1)},[e,a]),{collapsed:t,toggleCollapsed:n}}({active:u||d}),h=i.to?void 0:"#";return(0,c.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":f}),children:[(0,c.jsxs)("div",{className:(0,a.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":u}),children:[(0,c.jsx)(he,{role:"button",className:(0,a.A)(ke,"menu__link menu__link--sublist",t),href:h,...i,onClick:e=>{"#"===h&&e.preventDefault(),p()},children:i.children??i.label}),(0,c.jsx)(xe,{collapsed:f,onClick:e=>{e.preventDefault(),p()}})]}),(0,c.jsx)(be.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:f,children:e.map((e,t)=>(0,r.createElement)(We,{mobile:!0,isDropdownItem:!0,onClick:o,activeClassName:"menu__link--active",...e,key:t}))})]})}function _e({items:e,position:t,className:n,onClick:o,...i}){const l=(0,r.useRef)(null),[s,u]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}},[l]),(0,c.jsxs)("div",{ref:l,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===t,"dropdown--show":s}),children:[(0,c.jsx)(he,{"aria-haspopup":"true","aria-expanded":s,role:"button",href:i.to?void 0:"#",className:(0,a.A)("navbar__link",n),...i,onClick:i.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),u(!s))},children:i.children??i.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:e.map((e,t)=>(0,r.createElement)(We,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t}))})]})}function Ae({mobile:e=!1,...t}){const n=e?Ee:_e;return(0,c.jsx)(n,{...t})}var Ce=n(2131),Te=n(7485);function Ne({width:e=20,height:t=20,...n}){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:e,height:t,"aria-hidden":!0,...n,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const Pe="iconLanguage_nlXk";function Oe(){const{siteConfig:e,i18n:{localeConfigs:t}}=(0,we.A)(),n=(0,Ce.o)(),r=(0,Te.Hl)(e=>e.location.search),a=(0,Te.Hl)(e=>e.location.hash),o=e=>{const n=t[e];if(!n)throw new Error(`Docusaurus bug, no locale config found for locale=${e}`);return n};return{getURL:(t,i)=>{const l=(0,Te.jy)([r,i.queryString],"append");return`${(t=>o(t).url===e.url?`pathname://${n.createUrl({locale:t,fullyQualified:!1})}`:n.createUrl({locale:t,fullyQualified:!0}))(t)}${l}${a}`},getLabel:e=>o(e).label,getLang:e=>o(e).htmlLang}}var je=n(6588),Le=n(689),Re=n.n(Le);function Ie(){const e=(0,l.zy)(),t=(0,l.W6)(),{siteConfig:{baseUrl:n}}=(0,we.A)(),[a,o]=(0,r.useState)({wordToHighlight:"",isTitleSuggestion:!1,titleText:""});return(0,r.useEffect)(()=>{if(!e.state?.highlightState||0===e.state.highlightState.wordToHighlight.length)return;o(e.state.highlightState);const{highlightState:n,...r}=e.state;t.replace({...e,state:r})},[e.state?.highlightState,t,e]),(0,r.useEffect)(()=>{if(0===a.wordToHighlight.length)return;const e=document.getElementsByTagName("article")[0]??document.getElementsByTagName("main")[0];if(!e)return;const t=new(Re())(e),n={ignoreJoiners:!0};return t.mark(a.wordToHighlight,n),()=>t.unmark(n)},[a,n]),null}const De=e=>{const t=(0,r.useRef)(!1),o=(0,r.useRef)(null),[i,s]=(0,r.useState)(!1),u=(0,l.W6)(),{siteConfig:d={}}=(0,we.A)(),f=(d.plugins||[]).find(e=>Array.isArray(e)&&"string"==typeof e[0]&&e[0].includes("docusaurus-lunr-search")),p=(0,$.A)(),{baseUrl:h}=d,m=f&&f[1]?.assetUrl||h,g=(0,je.P_)("docusaurus-lunr-search"),y=()=>{t.current||(Promise.all([fetch(`${m}${g.fileNames.searchDoc}`).then(e=>e.json()),fetch(`${m}${g.fileNames.lunrIndex}`).then(e=>e.json()),Promise.all([n.e(8591),n.e(8577)]).then(n.bind(n,5765)),Promise.all([n.e(1869),n.e(9278)]).then(n.bind(n,9278))]).then(([e,t,{default:n}])=>{const{searchDocs:r,options:a}=e;r&&0!==r.length&&(((e,t,n,r)=>{new n({searchDocs:e,searchIndex:t,baseUrl:h,inputSelector:"#search_input_react",handleSelected:(e,t,n)=>{const a=n.url||"/";document.createElement("a").href=a,e.setVal(""),t.target.blur();let o="";if(r.highlightResult)try{const e=(n.text||n.subcategory||n.title).match(new RegExp("<span.+span>\\w*","g"));if(e&&e.length>0){const t=document.createElement("div");t.innerHTML=e[0],o=t.textContent}}catch(i){console.log(i)}u.push(a,{highlightState:{wordToHighlight:o}})},maxHits:r.maxHits})})(r,t,n,a),s(!0))}),t.current=!0)},b=(0,r.useCallback)(t=>{o.current.contains(t.target)||o.current.focus(),e.handleSearchBarToggle&&e.handleSearchBarToggle(!e.isSearchBarExpanded)},[e.isSearchBarExpanded]);let v;return p&&(y(),v=window.navigator.platform.startsWith("Mac")?"Search \u2318+K":"Search Ctrl+K"),(0,r.useEffect)(()=>{e.autoFocus&&i&&o.current.focus()},[i]),(0,c.jsxs)("div",{className:"navbar__search",children:[(0,c.jsx)("span",{"aria-label":"expand searchbar",role:"button",className:(0,a.A)("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:b,onKeyDown:b,tabIndex:0}),(0,c.jsx)("input",{id:"search_input_react",type:"search",placeholder:i?v:"Loading...","aria-label":"Search",className:(0,a.A)("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:y,onMouseOver:y,onFocus:b,onBlur:b,ref:o,disabled:!i}),(0,c.jsx)(Ie,{})]},"search-box")},Fe={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Me({children:e,className:t}){return(0,c.jsx)("div",{className:(0,a.A)(t,Fe.navbarSearchContainer),children:e})}var ze=n(8295),Be=n(4718);var $e=n(3886);function Ue({docsPluginId:e,configs:t}){return function(e,t){if(t){const n=new Map(e.map(e=>[e.name,e])),r=(t,r)=>{const a=n.get(t);if(!a)throw new Error(`No docs version exist for name '${t}', please verify your 'docsVersionDropdown' navbar item versions config.\nAvailable version names:\n- ${e.map(e=>`${e.name}`).join("\n- ")}`);return{version:a,label:r?.label??a.label}};return Array.isArray(t)?t.map(e=>r(e,void 0)):Object.entries(t).map(([e,t])=>r(e,t))}return e.map(e=>({version:e,label:e.label}))}((0,ze.jh)(e),t)}function He(e,t){return t.alternateDocVersions[e.name]??function(e){return e.docs.find(t=>t.id===e.mainDocId)}(e)}const Ve={default:ye,localeDropdown:function({mobile:e,dropdownItemsBefore:t,dropdownItemsAfter:n,queryString:r,...a}){const o=Oe(),{i18n:{currentLocale:i,locales:l}}=(0,we.A)(),u=[...t,...l.map(t=>({label:o.getLabel(t),lang:o.getLang(t),to:o.getURL(t,{queryString:r}),target:"_self",autoAddBaseUrl:!1,className:t===i?e?"menu__link--active":"dropdown__link--active":""})),...n],d=e?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):o.getLabel(i);return(0,c.jsx)(Ae,{...a,mobile:e,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ne,{className:Pe}),d]}),items:u})},search:function({mobile:e,className:t}){return e?null:(0,c.jsx)(Me,{className:t,children:(0,c.jsx)(De,{})})},dropdown:Ae,html:function({value:e,className:t,mobile:n=!1,isDropdownItem:r=!1}){const o=r?"li":"div";return(0,c.jsx)(o,{className:(0,a.A)({navbar__item:!n&&!r,"menu__list-item":n},t),dangerouslySetInnerHTML:{__html:e}})},doc:function({docId:e,label:t,docsPluginId:n,...r}){const{activeDoc:a}=(0,ze.zK)(n),o=(0,Be.QB)(e,n),i=a?.path===o?.path;return null===o||o.unlisted&&!i?null:(0,c.jsx)(ye,{exact:!0,...r,isActive:()=>i||!!a?.sidebar&&a.sidebar===o.sidebar,label:t??o.id,to:o.path})},docSidebar:function({sidebarId:e,label:t,docsPluginId:n,...r}){const{activeDoc:a}=(0,ze.zK)(n),o=(0,Be.fW)(e,n).link;if(!o)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${e}" doesn't have anything to be linked to.`);return(0,c.jsx)(ye,{exact:!0,...r,isActive:()=>a?.sidebar===e,label:t??o.label,to:o.path})},docsVersion:function({label:e,to:t,docsPluginId:n,...r}){const a=(0,Be.Vd)(n)[0],o=e??a.label,i=t??(e=>e.docs.find(t=>t.id===e.mainDocId))(a).path;return(0,c.jsx)(ye,{...r,label:o,to:i})},docsVersionDropdown:function({mobile:e,docsPluginId:t,dropdownActiveClassDisabled:n,dropdownItemsBefore:r,dropdownItemsAfter:a,versions:o,...i}){const l=(0,Te.Hl)(e=>e.location.search),u=(0,Te.Hl)(e=>e.location.hash),d=(0,ze.zK)(t),{savePreferredVersionName:f}=(0,$e.g1)(t),p=Ue({docsPluginId:t,configs:o}),h=function({docsPluginId:e,versionItems:t}){return(0,Be.Vd)(e).map(e=>t.find(t=>t.version===e)).filter(e=>void 0!==e)[0]??t[0]}({docsPluginId:t,versionItems:p}),m=[...r,...p.map(function({version:e,label:t}){return{label:t,to:`${He(e,d).path}${l}${u}`,isActive:()=>e===d.activeVersion,onClick:()=>f(e.name)}}),...a],g=e&&m.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,y=e&&m.length>1?void 0:He(h.version,d).path;return m.length<=1?(0,c.jsx)(ye,{...i,mobile:e,label:g,to:y,isActive:n?()=>!1:void 0}):(0,c.jsx)(Ae,{...i,mobile:e,label:g,to:y,items:m,isActive:n?()=>!1:void 0})}};function We({type:e,...t}){const n=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(e,t),r=Ve[n];if(!r)throw new Error(`No NavbarItem component found for type "${e}".`);return(0,c.jsx)(r,{...t})}function Ge(){const e=(0,N.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map((t,n)=>(0,r.createElement)(We,{mobile:!0,...t,onClick:()=>e.toggle(),key:n}))})}function qe(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ye(){const e=0===(0,w.p)().navbar.items.length,t=D();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(qe,{onClick:()=>t.hide()}),t.content]})}function Ke(){const e=(0,N.M)();return function(e=!0){(0,r.useEffect)(()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"}),[e])}(e.shown),e.shouldRender?(0,c.jsx)(z,{header:(0,c.jsx)(se,{}),primaryMenu:(0,c.jsx)(Ge,{}),secondaryMenu:(0,c.jsx)(Ye,{})}):null}const Qe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Xe(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function Ze({children:e}){const{navbar:{hideOnScroll:t,style:n}}=(0,w.p)(),o=(0,N.M)(),{navbarRef:i,isNavbarVisible:l}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)(e=>{null!==e&&(o.current=e.getBoundingClientRect().height)},[]);return(0,P.Mq)(({scrollY:t},r)=>{if(!e)return;if(t<o.current)return void n(!0);if(a.current)return void(a.current=!1);const i=r?.scrollY,l=document.documentElement.scrollHeight-o.current,s=window.innerHeight;i&&t>=i?n(!1):t+s<l&&n(!0)}),(0,u.$)(t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)}),{navbarRef:i,isNavbarVisible:t}}(t);return(0,c.jsxs)("nav",{ref:i,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.A)(g.G.layout.navbar.container,"navbar","navbar--fixed-top",t&&[Qe.navbarHideable,!l&&Qe.navbarHidden],{"navbar--dark":"dark"===n,"navbar--primary":"primary"===n,"navbar-sidebar--show":o.shown}),children:[e,(0,c.jsx)(Xe,{onClick:o.toggle}),(0,c.jsx)(Ke,{})]})}var Je=n(2181);const et="right";function tt({width:e=30,height:t=30,className:n,...r}){return(0,c.jsx)("svg",{className:n,width:e,height:t,viewBox:"0 0 30 30","aria-hidden":"true",...r,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function nt(){const{toggle:e,shown:t}=(0,N.M)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(tt,{})})}const rt={colorModeToggle:"colorModeToggle_DEke"};function at({items:e}){return(0,c.jsx)(c.Fragment,{children:e.map((e,t)=>(0,c.jsx)(Je.k2,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(We,{...e})},t))})}function ot({left:e,right:t}){return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:(0,a.A)(g.G.layout.navbar.containerLeft,"navbar__items"),children:e}),(0,c.jsx)("div",{className:(0,a.A)(g.G.layout.navbar.containerRight,"navbar__items navbar__items--right"),children:t})]})}function it(){const e=(0,N.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??et)}return[e.filter(t),e.filter(e=>!t(e))]}(t),a=t.find(e=>"search"===e.type);return(0,c.jsx)(ot,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(nt,{}),(0,c.jsx)(ie,{}),(0,c.jsx)(at,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(at,{items:r}),(0,c.jsx)(ae,{className:rt.colorModeToggle}),!a&&(0,c.jsx)(Me,{children:(0,c.jsx)(De,{})})]})})}function lt(){return(0,c.jsx)(Ze,{children:(0,c.jsx)(it,{})})}function st({item:e}){const{to:t,href:n,label:r,prependBaseUrlToHref:o,className:i,...l}=e,s=(0,ce.Ay)(t),u=(0,ce.Ay)(n,{forcePrependBaseUrl:!0});return(0,c.jsxs)(ue.A,{className:(0,a.A)("footer__link-item",i),...n?{href:o?u:n}:{to:s},...l,children:[r,n&&!(0,de.A)(n)&&(0,c.jsx)(pe.A,{})]})}function ut({item:e}){return e.html?(0,c.jsx)("li",{className:(0,a.A)("footer__item",e.className),dangerouslySetInnerHTML:{__html:e.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(st,{item:e})},e.href??e.to)}function ct({column:e}){return(0,c.jsxs)("div",{className:(0,a.A)(g.G.layout.footer.column,"col footer__col",e.className),children:[(0,c.jsx)("div",{className:"footer__title",children:e.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:e.items.map((e,t)=>(0,c.jsx)(ut,{item:e},t))})]})}function dt({columns:e}){return(0,c.jsx)("div",{className:"row footer__links",children:e.map((e,t)=>(0,c.jsx)(ct,{column:e},t))})}function ft(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function pt({item:e}){return e.html?(0,c.jsx)("span",{className:(0,a.A)("footer__link-item",e.className),dangerouslySetInnerHTML:{__html:e.html}}):(0,c.jsx)(st,{item:e})}function ht({links:e}){return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:e.map((t,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(pt,{item:t}),e.length!==n+1&&(0,c.jsx)(ft,{})]},n))})})}function mt({links:e}){return function(e){return"title"in e[0]}(e)?(0,c.jsx)(dt,{columns:e}):(0,c.jsx)(ht,{links:e})}var gt=n(1122);const yt="footerLogoLink_BH7S";function bt({logo:e}){const{withBaseUrl:t}=(0,ce.hH)(),n={light:t(e.src),dark:t(e.srcDark??e.src)};return(0,c.jsx)(gt.A,{className:(0,a.A)("footer__logo",e.className),alt:e.alt,sources:n,width:e.width,height:e.height,style:e.style})}function vt({logo:e}){return e.href?(0,c.jsx)(ue.A,{href:e.href,className:yt,target:e.target,children:(0,c.jsx)(bt,{logo:e})}):(0,c.jsx)(bt,{logo:e})}function wt({copyright:e}){return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:e}})}function kt({style:e,links:t,logo:n,copyright:r}){return(0,c.jsx)("footer",{className:(0,a.A)(g.G.layout.footer.container,"footer",{"footer--dark":"dark"===e}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[t,(n||r)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[n&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:n}),r]})]})})}function St(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(kt,{style:a,links:n&&n.length>0&&(0,c.jsx)(mt,{links:n}),logo:r&&(0,c.jsx)(vt,{logo:r}),copyright:t&&(0,c.jsx)(wt,{copyright:t})})}const xt=r.memo(St),Et=(0,O.fM)([B.a,k.o,P.Tv,$e.VQ,i.Jx,function({children:e}){return(0,c.jsx)(j.y_,{children:(0,c.jsx)(N.e,{children:(0,c.jsx)(R,{children:e})})})}]);function _t({children:e}){return(0,c.jsx)(Et,{children:e})}var At=n(1107);function Ct({error:e,tryAgain:t}){return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(At.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(Je.a2,{onClick:t,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Je.bq,{error:e})})]})})})}const Tt={mainWrapper:"mainWrapper_z2l0"};function Nt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,c.jsxs)(_t,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(lt,{}),(0,c.jsx)("div",{id:d,className:(0,a.A)(g.G.layout.main.container,g.G.wrapper.main,Tt.mainWrapper,r),children:(0,c.jsx)(o.A,{fallback:e=>(0,c.jsx)(Ct,{...e}),children:t})}),!n&&(0,c.jsx)(xt,{})]})}},4054:e=>{"use strict";e.exports=JSON.parse('{"/hass.tibber_prices/developer/markdown-page-83d":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"393be207"},"/hass.tibber_prices/developer/-fec":{"__comp":"1df93b7f","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"},"/hass.tibber_prices/developer/-fa8":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/hass.tibber_prices/developer/-491":{"__comp":"a7bd4aaa","__props":"0746f739"},"/hass.tibber_prices/developer/-7ff":{"__comp":"a94703ab"},"/hass.tibber_prices/developer/api-reference-65b":{"__comp":"17896441","content":"964ae018"},"/hass.tibber_prices/developer/architecture-264":{"__comp":"17896441","content":"5281b7a2"},"/hass.tibber_prices/developer/caching-strategy-69e":{"__comp":"17896441","content":"929d68ea"},"/hass.tibber_prices/developer/coding-guidelines-d02":{"__comp":"17896441","content":"1c78bc2a"},"/hass.tibber_prices/developer/contributing-0d4":{"__comp":"17896441","content":"4d54d076"},"/hass.tibber_prices/developer/critical-patterns-764":{"__comp":"17896441","content":"ca2d854d"},"/hass.tibber_prices/developer/debugging-06c":{"__comp":"17896441","content":"2bccb399"},"/hass.tibber_prices/developer/intro-1e7":{"__comp":"17896441","content":"0e384e19"},"/hass.tibber_prices/developer/performance-fd3":{"__comp":"17896441","content":"edefc60b"},"/hass.tibber_prices/developer/period-calculation-theory-16e":{"__comp":"17896441","content":"d7c6ee3c"},"/hass.tibber_prices/developer/refactoring-guide-064":{"__comp":"17896441","content":"0fd2f299"},"/hass.tibber_prices/developer/release-management-0b7":{"__comp":"17896441","content":"1b064146"},"/hass.tibber_prices/developer/setup-76e":{"__comp":"17896441","content":"3847b3ea"},"/hass.tibber_prices/developer/testing-009":{"__comp":"17896441","content":"fbe93038"},"/hass.tibber_prices/developer/timer-architecture-33e":{"__comp":"17896441","content":"b5a1766e"}}')},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540);const a="navigation-with-keyboard";function o(){(0,r.useEffect)(()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}},[])}},4146:(e,t,n)=>{"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<i.length;++g){var y=i[g];if(!(o[y]||r&&r[y]||m&&m[y]||l&&l[y])){var b=f(n,y);try{u(t,y,b)}catch(v){}}}}return t}},4164:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.d(t,{A:()=>a});const a=function(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},4363:(e,t,n)=>{"use strict";e.exports=n(2799)},4477:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],u=l+1,c=e[u];if(0>o(s,n))u<a&&0>o(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(u<a&&0>o(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,f=null,p=3,h=!1,m=!1,g=!1,y=!1,b="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,w="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function S(e){if(g=!1,k(e),!m)if(null!==r(u))m=!0,E||(E=!0,x());else{var t=r(c);null!==t&&j(S,t.startTime-e)}}var x,E=!1,_=-1,A=5,C=-1;function T(){return!!y||!(t.unstable_now()-C<A)}function N(){if(y=!1,E){var e=t.unstable_now();C=e;var n=!0;try{e:{m=!1,g&&(g=!1,v(_),_=-1),h=!0;var o=p;try{t:{for(k(e),f=r(u);null!==f&&!(f.expirationTime>e&&T());){var i=f.callback;if("function"==typeof i){f.callback=null,p=f.priorityLevel;var l=i(f.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof l){f.callback=l,k(e),n=!0;break t}f===r(u)&&a(u),k(e)}else a(u);f=r(u)}if(null!==f)n=!0;else{var s=r(c);null!==s&&j(S,s.startTime-e),n=!1}}break e}finally{f=null,p=o,h=!1}n=void 0}}finally{n?x():E=!1}}}if("function"==typeof w)x=function(){w(N)};else if("undefined"!=typeof MessageChannel){var P=new MessageChannel,O=P.port2;P.port1.onmessage=N,x=function(){O.postMessage(null)}}else x=function(){b(N,0)};function j(e,n){_=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):A=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_requestPaint=function(){y=!0},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?i+o:i:o=i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(c,e),null===r(u)&&e===r(c)&&(g?(v(_),_=-1):g=!0,j(S,o-i))):(e.sortIndex=l,n(u,e),m||h||(m=!0,E||(E=!0,x()))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},4563:(e,t,n)=>{"use strict";n.d(t,{AL:()=>c,s$:()=>d});var r=n(6540),a=n(4586),o=n(6803),i=n(9532),l=n(4848);const s=({title:e,siteTitle:t,titleDelimiter:n})=>{const r=e?.trim();return r&&r!==t?`${r} ${n} ${t}`:t},u=(0,r.createContext)(null);function c({formatter:e,children:t}){return(0,l.jsx)(u.Provider,{value:e,children:t})}function d(){const e=function(){const e=(0,r.useContext)(u);if(null===e)throw new i.dV("TitleFormatterProvider");return e}(),{siteConfig:t}=(0,a.A)(),{title:n,titleDelimiter:l}=t,{plugin:c}=(0,o.A)();return{format:t=>e({title:t,siteTitle:n,titleDelimiter:l,plugin:c,defaultFormatter:s})}}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),a=n(8193);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l({desktopBreakpoint:e=i}={}){const[t,n]=(0,r.useState)(()=>"ssr");return(0,r.useEffect)(()=>{function t(){n(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(e))}return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},4625:(e,t,n)=>{"use strict";n.d(t,{I9:()=>d,Kd:()=>c,N_:()=>y,k2:()=>w});var r=n(6347),a=n(2892),o=n(6540),i=n(1513),l=n(8168),s=n(8587),u=n(1561),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.zR)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.TM)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var f=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.yJ)(e,null,null,t):e},h=function(e){return e},m=o.forwardRef;void 0===m&&(m=h);var g=m(function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.A)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.A)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=h!==m&&t||n,o.createElement("a",c)});var y=m(function(e,t){var n=e.component,a=void 0===n?g:n,c=e.replace,d=e.to,y=e.innerRef,b=(0,s.A)(e,["component","replace","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,function(e){e||(0,u.A)(!1);var n=e.history,r=p(f(d,e.location),e.location),s=r?n.createHref(r):"",g=(0,l.A)({},b,{href:s,navigate:function(){var t=f(d,e.location),r=(0,i.AO)(e.location)===(0,i.AO)(p(t));(c||r?n.replace:n.push)(t)}});return h!==m?g.ref=t||y:g.innerRef=y,o.createElement(a,g)})}),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var w=v(function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,d=e.activeStyle,h=e.className,m=e.exact,g=e.isActive,w=e.location,k=e.sensitive,S=e.strict,x=e.style,E=e.to,_=e.innerRef,A=(0,s.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,function(e){e||(0,u.A)(!1);var n=w||e.location,i=p(f(E,n),n),s=i.pathname,C=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),T=C?(0,r.B6)(n.pathname,{path:C,exact:m,sensitive:k,strict:S}):null,N=!!(g?g(T,n):T),P="function"==typeof h?h(N):h,O="function"==typeof x?x(N):x;N&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(function(e){return e}).join(" ")}(P,c),O=(0,l.A)({},O,d));var j=(0,l.A)({"aria-current":N&&a||null,className:P,style:O,to:i},A);return b!==v?j.ref=t||_:j.innerRef=_,o.createElement(y,j)})})},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},4718:(e,t,n)=>{"use strict";n.d(t,{Nr:()=>f,w8:()=>m,B5:()=>x,Vd:()=>w,QB:()=>S,fW:()=>k,OF:()=>v,Y:()=>y});var r=n(6540),a=n(6347),o=n(2831),i=n(8295),l=n(9169);function s(e){return Array.from(new Set(e))}var u=n(3886),c=n(3025),d=n(609);function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const p=(e,t)=>void 0!==e&&(0,l.ys)(e,t),h=(e,t)=>e.some(e=>m(e,t));function m(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||h(e.items,t))}function g(e,t){switch(e.type){case"category":return m(e,t)||void 0!==e.href&&!e.linkUnlisted||e.items.some(e=>g(e,t));case"link":return!e.unlisted||m(e,t);default:return!0}}function y(e,t){return(0,r.useMemo)(()=>e.filter(e=>g(e,t)),[e,t])}function b({sidebarItems:e,pathname:t,onlyCategories:n=!1}){const r=[];return function e(a){for(const o of a)if("category"===o.type&&((0,l.ys)(o.href,t)||e(o.items))||"link"===o.type&&(0,l.ys)(o.href,t)){return n&&"category"!==o.type||r.unshift(o),!0}return!1}(e),r}function v(){const e=(0,d.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?b({sidebarItems:e.items,pathname:t}):null}function w(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,u.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)(()=>s([t,n,a].filter(Boolean)),[t,n,a])}function k(e,t){const n=w(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.sidebars?Object.entries(e.sidebars):[]),r=t.find(t=>t[0]===e);if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map(e=>e.name).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map(e=>e[0]).join("\n- ")}`);return r[1]},[e,n])}function S(e,t){const n=w(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.docs),r=t.find(t=>t.id===e);if(!r){if(n.flatMap(e=>e.draftIds).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map(e=>e.name).join(", ")}".\nAvailable doc ids are:\n- ${s(t.map(e=>e.id)).join("\n- ")}`)}return r},[e,n])}function x({route:e}){const t=(0,a.zy)(),n=(0,c.r)(),r=e.routes,i=r.find(e=>(0,a.B6)(t.pathname,e));if(!i)return null;const l=i.sidebar,s=l?n.docsSidebars[l]:void 0;return{docElement:(0,o.v)(r),sidebarName:l,sidebarItems:s}}},4784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Tibber Prices - Developer Guide",tagline:"Developer documentation for the Tibber Prices custom integration",favicon:"img/logo.svg",future:{v4:{removeLegacyPostBuildHeadAttribute:!0,useCssCascadeLayers:!0},experimental_faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1,rspackPersistentCache:!1,ssgWorkerThreads:!1},experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},url:"https://jpawlowski.github.io",baseUrl:"/hass.tibber_prices/developer/",organizationName:"jpawlowski",projectName:"hass.tibber_prices",deploymentBranch:"gh-pages",trailingSlash:!1,onBrokenLinks:"warn",markdown:{mermaid:!0,hooks:{onBrokenMarkdownLinks:"warn",onBrokenMarkdownImages:"throw"},format:"mdx",emoji:!0,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}},themes:["@docusaurus/theme-mermaid"],plugins:["docusaurus-lunr-search"],i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},headTags:[{tagName:"link",attributes:{rel:"preconnect",href:"https://fonts.googleapis.com"}},{tagName:"link",attributes:{rel:"preconnect",href:"https://fonts.gstatic.com",crossorigin:"anonymous"}},{tagName:"link",attributes:{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap"}}],presets:[["classic",{docs:{routeBasePath:"/",sidebarPath:"./sidebars.ts",showLastUpdateTime:!0,versions:{current:{label:"Next \ud83d\udea7",banner:"unreleased",badge:!0}}},blog:!1,theme:{customCss:"./src/css/custom.css"}}]],themeConfig:{mermaid:{theme:{light:"base",dark:"dark"},options:{themeVariables:{primaryColor:"#e6f7ff",primaryTextColor:"#1a1a1a",primaryBorderColor:"#00b9e7",lineColor:"#00b9e7",secondaryColor:"#e6fff5",secondaryTextColor:"#1a1a1a",secondaryBorderColor:"#00ffa3",tertiaryColor:"#fff9e6",tertiaryTextColor:"#1a1a1a",tertiaryBorderColor:"#ffb800",noteBkgColor:"#e6f7ff",noteTextColor:"#1a1a1a",noteBorderColor:"#00b9e7",mainBkg:"#ffffff",nodeBorder:"#00b9e7",clusterBkg:"#f0f9ff",clusterBorder:"#00b9e7",fontFamily:"Inter, system-ui, -apple-system, sans-serif",fontSize:"14px"}}},image:"img/social-card.png",colorMode:{respectPrefersColorScheme:!0,defaultMode:"light",disableSwitch:!1},docs:{sidebar:{hideable:!0,autoCollapseCategories:!0},versionPersistence:"localStorage"},navbar:{title:"Tibber Prices HA",logo:{alt:"Tibber Prices Integration Logo",src:"img/logo.svg"},items:[{to:"/intro",label:"Developer Guide",position:"left"},{href:"https://jpawlowski.github.io/hass.tibber_prices/user/",label:"User Docs",position:"left"},{type:"docsVersionDropdown",position:"right",dropdownActiveClassDisabled:!0,dropdownItemsBefore:[],dropdownItemsAfter:[]},{href:"https://github.com/jpawlowski/hass.tibber_prices",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Documentation",items:[{label:"User Guide",href:"https://jpawlowski.github.io/hass.tibber_prices/user/"},{label:"Developer Guide",to:"/intro"}]},{title:"Community",items:[{label:"GitHub Issues",href:"https://github.com/jpawlowski/hass.tibber_prices/issues"},{label:"Home Assistant Community",href:"https://community.home-assistant.io/"}]},{title:"More",items:[{label:"GitHub",href:"https://github.com/jpawlowski/hass.tibber_prices"},{label:"Release Notes",href:"https://github.com/jpawlowski/hass.tibber_prices/releases"}]}],copyright:"Not affiliated with Tibber AS. Community-maintained custom integration. Built with Docusaurus."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:["bash","yaml","json","python"],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},blog:{sidebar:{groupByYear:!0}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},scripts:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},4848:(e,t,n)=>{"use strict";e.exports=n(9698)},5041:(e,t,n)=>{"use strict";n.d(t,{M:()=>m,o:()=>h});var r=n(6540),a=n(2303),o=n(679),i=n(9532),l=n(6342),s=n(4848);const u=(0,o.Wf)("docusaurus.announcement.dismiss"),c=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===u.get(),f=e=>u.set(String(e)),p=r.createContext(null);function h({children:e}){const t=function(){const{announcementBar:e}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)(()=>!!t&&d());(0,r.useEffect)(()=>{o(d())},[]);const i=(0,r.useCallback)(()=>{f(!0),o(!0)},[]);return(0,r.useEffect)(()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&f(!1),!r&&d()||o(!1)},[e]),(0,r.useMemo)(()=>({isActive:!!e&&!n,close:i}),[e,n,i])}();return(0,s.jsx)(p.Provider,{value:t,children:e})}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(9532);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)(()=>{n&&t!==n&&i({location:t,previousLocation:n})},[i,t,n])}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,{...e})}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>k,a:()=>w});var r=n(6540),a=n(2303),o=n(9532),i=n(679),l=n(6342),s=n(4848);function u(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function c(e){return function(e,t){const n=window.matchMedia(e);return n.addEventListener("change",t),()=>n.removeEventListener("change",t)}("(prefers-color-scheme: dark)",()=>e(u()))}const d=r.createContext(void 0),f=(0,i.Wf)("theme"),p="system",h=e=>"dark"===e?"dark":"light",m=e=>null===e||e===p?null:h(e),g={get:()=>h(document.documentElement.getAttribute("data-theme")),set:e=>{document.documentElement.setAttribute("data-theme",h(e))}},y={get:()=>m(document.documentElement.getAttribute("data-theme-choice")),set:e=>{document.documentElement.setAttribute("data-theme-choice",m(e)??p)}},b=e=>{null===e?f.del():f.set(h(e))};function v(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),{colorMode:o,setColorModeState:i,colorModeChoice:s,setColorModeChoiceState:d}=function(){const{colorMode:{defaultMode:e}}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)(t?g.get():e),[i,s]=(0,r.useState)(t?y.get():null);return(0,r.useEffect)(()=>{o(g.get()),s(y.get())},[]),{colorMode:n,setColorModeState:o,colorModeChoice:i,setColorModeChoiceState:s}}();(0,r.useEffect)(()=>{t&&f.del()},[t]);const p=(0,r.useCallback)((t,r={})=>{const{persist:a=!0}=r;if(null===t){const t=n?u():e;g.set(t),i(t),y.set(null),d(null)}else g.set(t),y.set(t),i(t),d(t);a&&b(t)},[i,d,n,e]);return(0,r.useEffect)(()=>f.listen(e=>{p(m(e.newValue))}),[p]),(0,r.useEffect)(()=>{if(null===s&&n)return c(e=>{i(e),g.set(e)})},[n,s,i]),(0,r.useMemo)(()=>({colorMode:o,colorModeChoice:s,setColorMode:p,get isDarkTheme(){return"dark"===o},setLightTheme(){p("light")},setDarkTheme(){p("dark")}}),[o,s,p])}function w({children:e}){const t=v();return(0,s.jsx)(d.Provider,{value:t,children:e})}function k(){const e=(0,r.useContext)(d);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5302:(e,t,n)=>{var r=n(4634);e.exports=m,e.exports.parse=o,e.exports.compile=function(e,t){return u(o(e,t),t)},e.exports.tokensToFunction=u,e.exports.tokensToRegExp=h;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,l=0,s="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var c=n[0],f=n[1],p=n.index;if(s+=e.slice(l,p),l=p+c.length,f)s+=f[1];else{var h=e[l],m=n[2],g=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=m&&null!=h&&h!==m,S="+"===v||"*"===v,x="?"===v||"*"===v,E=m||u,_=y||b,A=m||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:g||o++,prefix:m||"",delimiter:E,optional:x,repeat:S,partial:k,asterisk:!!w,pattern:_?d(_):w?".*":i(E,A)})}}return l<e.length&&(s+=e.substr(l)),s&&r.push(s),r}function i(e,t){return!t||t.indexOf(e)>-1?"[^"+c(e)+"]+?":c(t)+"|(?:(?!"+c(t)+")[^"+c(e)+"])+?"}function l(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function u(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",p(t)));return function(t,a){for(var o="",i=t||{},u=(a||{}).pretty?l:encodeURIComponent,c=0;c<e.length;c++){var d=e[c];if("string"!=typeof d){var f,p=i[d.name];if(null==p){if(d.optional){d.partial&&(o+=d.prefix);continue}throw new TypeError('Expected "'+d.name+'" to be defined')}if(r(p)){if(!d.repeat)throw new TypeError('Expected "'+d.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(d.optional)continue;throw new TypeError('Expected "'+d.name+'" to not be empty')}for(var h=0;h<p.length;h++){if(f=u(p[h]),!n[c].test(f))throw new TypeError('Expected all "'+d.name+'" to match "'+d.pattern+'", but received `'+JSON.stringify(f)+"`");o+=(0===h?d.prefix:d.delimiter)+f}}else{if(f=d.asterisk?s(p):u(p),!n[c].test(f))throw new TypeError('Expected "'+d.name+'" to match "'+d.pattern+'", but received "'+f+'"');o+=d.prefix+f}}else o+=d}return o}}function c(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function d(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function f(e,t){return e.keys=t,e}function p(e){return e&&e.sensitive?"":"i"}function h(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var s=e[l];if("string"==typeof s)i+=c(s);else{var u=c(s.prefix),d="(?:"+s.pattern+")";t.push(s),s.repeat&&(d+="(?:"+u+d+")*"),i+=d=s.optional?s.partial?u+"("+d+")?":"(?:"+u+"("+d+"))?":u+"("+d+")"}}var h=c(n.delimiter||"/"),m=i.slice(-h.length)===h;return a||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&m?"":"(?="+h+"|$)",f(new RegExp("^"+i,p(n)),t)}function m(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return f(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(m(e[a],t,n).source);return f(new RegExp("(?:"+r.join("|")+")",p(n)),t)}(e,t,n):function(e,t,n){return h(o(e,n),t,n)}(e,t,n)}},5338:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(1247)},5500:(e,t,n)=>{"use strict";n.d(t,{Jx:()=>y,be:()=>h,e3:()=>g});var r=n(6540),a=n(4164),o=n(5260),i=n(6803),l=n(6025),s=n(4563),u=n(4848);function c({title:e}){const t=(0,s.s$)().format(e);return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("title",{children:t}),(0,u.jsx)("meta",{property:"og:title",content:t})]})}function d({description:e}){return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("meta",{name:"description",content:e}),(0,u.jsx)("meta",{property:"og:description",content:e})]})}function f({image:e}){const{withBaseUrl:t}=(0,l.hH)(),n=t(e,{absolute:!0});return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("meta",{property:"og:image",content:n}),(0,u.jsx)("meta",{name:"twitter:image",content:n})]})}function p({keywords:e}){return(0,u.jsx)(o.A,{children:(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(e)?e.join(","):e})})}function h({title:e,description:t,keywords:n,image:r,children:a}){return(0,u.jsxs)(u.Fragment,{children:[e&&(0,u.jsx)(c,{title:e}),t&&(0,u.jsx)(d,{description:t}),n&&(0,u.jsx)(p,{keywords:n}),r&&(0,u.jsx)(f,{image:r}),a&&(0,u.jsx)(o.A,{children:a})]})}const m=r.createContext(void 0);function g({className:e,children:t}){const n=r.useContext(m),i=(0,a.A)(n,e);return(0,u.jsxs)(m.Provider,{value:i,children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("html",{className:i})}),t]})}function y({children:e}){const t=(0,i.A)(),n=`plugin-${t.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const r=`plugin-id-${t.plugin.id}`;return(0,u.jsx)(g,{className:(0,a.A)(n,r),children:e})}},5556:(e,t,n)=>{e.exports=n(2694)()},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l({children:e}){const t=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:t,children:e})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u({component:e,props:t}){const n=(0,r.useContext)(i);if(!n)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,o]=n,l=(0,a.Be)(t);return(0,r.useEffect)(()=>{o({component:e,props:l})},[o,e,l]),(0,r.useEffect)(()=>()=>o({component:null,props:null}),[o]),null}},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l(function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout(function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},6025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)((e,r)=>function({siteUrl:e,baseUrl:t,url:n,options:{forcePrependBaseUrl:r=!1,absolute:a=!1}={},router:i}){if(!n||n.startsWith("#")||(0,o.z)(n))return n;if("hash"===i)return n.startsWith("/")?`.${n}`:`./${n}`;if(r)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return a?e+l:l}({siteUrl:n,baseUrl:t,url:e,options:r,router:i}),[n,t,i]);return{withBaseUrl:l}}function l(e,t={}){const{withBaseUrl:n}=i();return n(e,t)}},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i({children:e}){const[t,n]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{n(!0)},[]),(0,a.jsx)(o.Provider,{value:t,children:e})}},6134:(e,t,n)=>{"use strict";var r=n(1765),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t,o=globalThis.Prism;globalThis.Prism=e,r.forEach(e=>{"php"===e&&n(9700),n(7522)(`./prism-${e}`)}),delete globalThis.Prism,void 0!==o&&(globalThis.Prism=e)}(r.My)},6221:(e,t,n)=>{"use strict";var r=n(6540);function a(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(){}var i={d:{f:o,r:function(){throw Error(a(522))},D:o,C:o,L:o,m:o,X:o,S:o,M:o},p:0,findDOMNode:null},l=Symbol.for("react.portal");var s=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(e,t){return"font"===e?"":"string"==typeof t?"use-credentials"===t?t:"":void 0}t.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!t||1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType)throw Error(a(299));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:l,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.flushSync=function(e){var t=s.T,n=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=n,i.d.f()}},t.preconnect=function(e,t){"string"==typeof e&&(t?t="string"==typeof(t=t.crossOrigin)?"use-credentials"===t?t:"":void 0:t=null,i.d.C(e,t))},t.prefetchDNS=function(e){"string"==typeof e&&i.d.D(e)},t.preinit=function(e,t){if("string"==typeof e&&t&&"string"==typeof t.as){var n=t.as,r=u(n,t.crossOrigin),a="string"==typeof t.integrity?t.integrity:void 0,o="string"==typeof t.fetchPriority?t.fetchPriority:void 0;"style"===n?i.d.S(e,"string"==typeof t.precedence?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):"script"===n&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:"string"==typeof t.nonce?t.nonce:void 0})}},t.preinitModule=function(e,t){if("string"==typeof e)if("object"==typeof t&&null!==t){if(null==t.as||"script"===t.as){var n=u(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0})}}else null==t&&i.d.M(e)},t.preload=function(e,t){if("string"==typeof e&&"object"==typeof t&&null!==t&&"string"==typeof t.as){var n=t.as,r=u(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,type:"string"==typeof t.type?t.type:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0,referrerPolicy:"string"==typeof t.referrerPolicy?t.referrerPolicy:void 0,imageSrcSet:"string"==typeof t.imageSrcSet?t.imageSrcSet:void 0,imageSizes:"string"==typeof t.imageSizes?t.imageSizes:void 0,media:"string"==typeof t.media?t.media:void 0})}},t.preloadModule=function(e,t){if("string"==typeof e)if(t){var n=u(t.as,t.crossOrigin);i.d.m(e,{as:"string"==typeof t.as&&"script"!==t.as?t.as:void 0,crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0})}else i.d.m(e)},t.requestFormReset=function(e){i.d.r(e)},t.unstable_batchedUpdates=function(e,t){return e(t)},t.useFormState=function(e,t,n){return s.H.useFormState(e,t,n)},t.useFormStatus=function(){return s.H.useHostTransitionStatus()},t.version="19.2.1"},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate({location:e,previousLocation:t}){if(t&&e.pathname!==t.pathname){const e=window.setTimeout(()=>{a().start()},200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},6347:(e,t,n)=>{"use strict";n.d(t,{B6:()=>x,Ix:()=>v,W6:()=>j,XZ:()=>b,dO:()=>P,qh:()=>E,zy:()=>L});var r=n(2892),a=n(6540),o=n(5556),i=n.n(o),l=n(1513),s=n(1561),u=n(8168),c=n(5302),d=n.n(c),f=(n(4363),n(8587)),p=(n(4146),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:{};var m=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter(function(t){return t!==e})},get:function(){return n},set:function(e,t){n=e,r.forEach(function(e){return e(n,t)})}}),t}(0,r.A)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!==((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=m();return t.displayName=e,t},y=g("Router-History"),b=g("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen(function(e){n._pendingLocation=e})),n}(0,r.A)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen(function(t){e._isMounted&&e.setState({location:t})})),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,S=0;function x(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce(function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return S<k&&(r[e]=o,S++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce(function(e,t,n){return e[t.name]=f[n],e},{})}},null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,function(t){t||(0,s.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?x(n.pathname,e.props):t.match,o=(0,u.A)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)})},t}(a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function A(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.A)({},t,{pathname:t.pathname.substr(n.length)})}function C(e){return"string"==typeof e?e:(0,l.AO)(e)}function T(e){return function(){(0,s.A)(!1)}}function N(){}a.Component;var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,function(t){t||(0,s.A)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?x(o.pathname,(0,u.A)({},e.props,{path:i})):t.match}}),r?a.cloneElement(n,{location:o,computedMatch:r}):null})},t}(a.Component);var O=a.useContext;function j(){return O(y)}function L(){return O(b).location}},6540:(e,t,n)=>{"use strict";e.exports=n(9869)},6588:(e,t,n)=>{"use strict";n.d(t,{P_:()=>i,kh:()=>o});var r=n(4586),a=n(7065);function o(e,t={}){const n=function(){const{globalData:e}=(0,r.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t=a.W,n={}){const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6803:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(3102);function o(){const e=r.useContext(a.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach(([n,o])=>{const i=a?`${a}.${n}`:n;r(o)?e(o,i):t[i]=o})}(e),t}},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>f});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/hass.tibber_prices/developer/","versions":[{"name":"current","label":"Next \ud83d\udea7","isLast":true,"path":"/hass.tibber_prices/developer/","mainDocId":"intro","docs":[{"id":"api-reference","path":"/hass.tibber_prices/developer/api-reference","sidebar":"tutorialSidebar"},{"id":"architecture","path":"/hass.tibber_prices/developer/architecture","sidebar":"tutorialSidebar"},{"id":"caching-strategy","path":"/hass.tibber_prices/developer/caching-strategy","sidebar":"tutorialSidebar"},{"id":"coding-guidelines","path":"/hass.tibber_prices/developer/coding-guidelines","sidebar":"tutorialSidebar"},{"id":"contributing","path":"/hass.tibber_prices/developer/contributing","sidebar":"tutorialSidebar"},{"id":"critical-patterns","path":"/hass.tibber_prices/developer/critical-patterns","sidebar":"tutorialSidebar"},{"id":"debugging","path":"/hass.tibber_prices/developer/debugging","sidebar":"tutorialSidebar"},{"id":"intro","path":"/hass.tibber_prices/developer/intro","sidebar":"tutorialSidebar"},{"id":"performance","path":"/hass.tibber_prices/developer/performance","sidebar":"tutorialSidebar"},{"id":"period-calculation-theory","path":"/hass.tibber_prices/developer/period-calculation-theory","sidebar":"tutorialSidebar"},{"id":"refactoring-guide","path":"/hass.tibber_prices/developer/refactoring-guide","sidebar":"tutorialSidebar"},{"id":"release-management","path":"/hass.tibber_prices/developer/release-management","sidebar":"tutorialSidebar"},{"id":"setup","path":"/hass.tibber_prices/developer/setup","sidebar":"tutorialSidebar"},{"id":"testing","path":"/hass.tibber_prices/developer/testing","sidebar":"tutorialSidebar"},{"id":"timer-architecture","path":"/hass.tibber_prices/developer/timer-architecture","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/hass.tibber_prices/developer/intro","label":"intro"}}}}],"breadcrumbs":true}},"docusaurus-lunr-search":{"default":{"fileNames":{"searchDoc":"search-doc-1764985317891.json","lunrIndex":"lunr-index-1764985317891.json"}}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en","translate":false,"url":"https://jpawlowski.github.io","baseUrl":"/hass.tibber_prices/developer/"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.9.2","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-css-cascade-layers":{"type":"package","name":"@docusaurus/plugin-css-cascade-layers","version":"3.9.2"},"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.9.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.9.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.9.2"},"docusaurus-plugin-svgr":{"type":"package","name":"@docusaurus/plugin-svgr","version":"3.9.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.9.2"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"3.6.0"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.9.2"}}}');var u=n(4848);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function f({children:e}){return(0,u.jsx)(d.Provider,{value:c,children:e})}},7022:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism)},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},7485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,Hl:()=>l,jy:()=>s});var r=n(6540),a=n(6347),o=n(9532);function i(e){!function(e){const t=(0,a.W6)(),n=(0,o._q)(e);(0,r.useEffect)(()=>t.block((e,t)=>n(e,t)),[t,n])}((t,n)=>{if("POP"===n)return e(t,n)})}function l(e){const t=(0,a.W6)();return(0,r.useSyncExternalStore)(t.listen,()=>e(t),()=>e({...t,location:{...t.location,search:"",hash:"",state:void 0}}))}function s(e,t){const n=function(e,t){const n=new URLSearchParams;for(const r of e)for(const[e,a]of r.entries())"append"===t?n.append(e,a):n.set(e,a);return n}(e.map(e=>new URLSearchParams(e??"")),t),r=n.toString();return r?`?${r}`:r}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var r=n(6540),a=n(8193),o=n(5260),i=n(440),l=n(4042),s=n(3102),u=n(4848);function c({error:e,tryAgain:t}){return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:t,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(d,{error:e})]})}function d({error:e}){const t=(0,i.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:t})}function f({children:e}){return(0,u.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:e})}function p({error:e,tryAgain:t}){return(0,u.jsx)(f,{children:(0,u.jsxs)(m,{fallback:()=>(0,u.jsx)(c,{error:e,tryAgain:t}),children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(l.A,{children:(0,u.jsx)(c,{error:e,tryAgain:t})})]})})}const h=e=>(0,u.jsx)(p,{...e});class m extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??h)(e)}return e??null}}},7522:(e,t,n)=>{var r={"./prism-bash":7022,"./prism-json":2514,"./prism-python":2342,"./prism-yaml":83};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=7522},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:e=>`theme-admonition-${e}`},announcementBar:{container:"theme-announcement-bar"},tabs:{container:"theme-tabs-container"},layout:{navbar:{container:"theme-layout-navbar",containerLeft:"theme-layout-navbar-left",containerRight:"theme-layout-navbar-right",mobileSidebar:{container:"theme-layout-navbar-sidebar",panel:"theme-layout-navbar-sidebar-panel"}},main:{container:"theme-layout-main"},footer:{container:"theme-layout-footer",column:"theme-layout-footer-column"}},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},8168:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},8295:(e,t,n)=>{"use strict";n.d(t,{zK:()=>p,vT:()=>c,Gy:()=>s,HW:()=>h,ht:()=>u,r7:()=>f,jh:()=>d});var r=n(6347),a=n(6588);const o=e=>e.versions.find(e=>e.isLast);function i(e,t){const n=function(e,t){return[...e.versions].sort((e,t)=>e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0).find(e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1}))}(e,t),a=n?.docs.find(e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1}));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach(e=>{e.docs.forEach(r=>{r.id===t&&(n[e.name]=r)})}),n}(a.id):{}}}const l={},s=()=>(0,a.kh)("docusaurus-plugin-content-docs")??l,u=e=>{try{return(0,a.P_)("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function c(e={}){const t=s(),{pathname:n}=(0,r.zy)();return function(e,t,n={}){const a=Object.entries(e).sort((e,t)=>t[1].path.localeCompare(e[1].path)).find(([,e])=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map(e=>e.path).join(", ")}`);return o}(t,n,e)}function d(e){return u(e).versions}function f(e){const t=u(e);return o(t)}function p(e){const t=u(e),{pathname:n}=(0,r.zy)();return i(t,n)}function h(e){const t=u(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"0746f739":[()=>n.e(435).then(n.t.bind(n,3936,19)),"@generated/docusaurus-plugin-content-docs/default/p/hass-tibber-prices-developer-2b2.json",3936],"0e384e19":[()=>Promise.all([n.e(2076),n.e(3976)]).then(n.bind(n,2053)),"@site/docs/intro.md",2053],"0fd2f299":[()=>Promise.all([n.e(2076),n.e(8657)]).then(n.bind(n,7386)),"@site/docs/refactoring-guide.md",7386],17896441:[()=>Promise.all([n.e(1869),n.e(2076),n.e(8525),n.e(8401)]).then(n.bind(n,8093)),"@theme/DocItem",8093],"1b064146":[()=>Promise.all([n.e(2076),n.e(8079)]).then(n.bind(n,3448)),"@site/docs/release-management.md",3448],"1c78bc2a":[()=>Promise.all([n.e(2076),n.e(3904)]).then(n.bind(n,5343)),"@site/docs/coding-guidelines.md",5343],"1df93b7f":[()=>Promise.all([n.e(1869),n.e(4583)]).then(n.bind(n,8198)),"@site/src/pages/index.tsx",8198],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(2076),n.e(8525),n.e(6061)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"2bccb399":[()=>Promise.all([n.e(2076),n.e(5154)]).then(n.bind(n,4421)),"@site/docs/debugging.md",4421],"3847b3ea":[()=>Promise.all([n.e(2076),n.e(6214)]).then(n.bind(n,3341)),"@site/docs/setup.md",3341],"393be207":[()=>Promise.all([n.e(2076),n.e(4134)]).then(n.bind(n,1943)),"@site/src/pages/markdown-page.md",1943],"4d54d076":[()=>Promise.all([n.e(2076),n.e(1459)]).then(n.bind(n,2199)),"@site/docs/contributing.md",2199],"5281b7a2":[()=>Promise.all([n.e(2076),n.e(2443)]).then(n.bind(n,936)),"@site/docs/architecture.md",936],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"929d68ea":[()=>Promise.all([n.e(2076),n.e(2397)]).then(n.bind(n,842)),"@site/docs/caching-strategy.md",842],"964ae018":[()=>Promise.all([n.e(2076),n.e(7443)]).then(n.bind(n,3588)),"@site/docs/api-reference.md",3588],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,1723)),"@theme/DocVersionRoot",1723],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,8115)),"@theme/DocRoot",8115],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],b5a1766e:[()=>Promise.all([n.e(2076),n.e(7806)]).then(n.bind(n,5908)),"@site/docs/timer-architecture.md",5908],ca2d854d:[()=>Promise.all([n.e(2076),n.e(7192)]).then(n.bind(n,5515)),"@site/docs/critical-patterns.md",5515],d7c6ee3c:[()=>Promise.all([n.e(2076),n.e(5475)]).then(n.bind(n,8517)),"@site/docs/period-calculation-theory.md",8517],edefc60b:[()=>Promise.all([n.e(2076),n.e(3624)]).then(n.bind(n,6496)),"@site/docs/performance.md",6496],fbe93038:[()=>Promise.all([n.e(2076),n.e(1133)]).then(n.bind(n,3504)),"@site/docs/testing.md",3504]};var l=n(4848);function s({error:e,retry:t,pastDelay:n}){return e?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(e)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:t,children:"Retry"})})]}):n?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(6921),c=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},f=[],p=[],h=(0,u.A)(r);return Object.entries(h).forEach(([e,t])=>{const n=i[t];n&&(d[e]=n[0],f.push(n[1]),p.push(n[2]))}),a().Map({loading:s,loader:d,modules:f,webpack:()=>p,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach(([t,n])=>{const r=n.default;if(!r)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof r&&"function"!=typeof r||Object.keys(n).filter(e=>"default"!==e).forEach(e=>{r[e]=n[e]});let o=a;const i=t.split(".");i.slice(0,-1).forEach(e=>{o=o[e]}),o[i[i.length-1]]=r});const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const f=[{path:"/hass.tibber_prices/developer/markdown-page",component:d("/hass.tibber_prices/developer/markdown-page","83d"),exact:!0},{path:"/hass.tibber_prices/developer/",component:d("/hass.tibber_prices/developer/","fec"),exact:!0},{path:"/hass.tibber_prices/developer/",component:d("/hass.tibber_prices/developer/","fa8"),routes:[{path:"/hass.tibber_prices/developer/",component:d("/hass.tibber_prices/developer/","491"),routes:[{path:"/hass.tibber_prices/developer/",component:d("/hass.tibber_prices/developer/","7ff"),routes:[{path:"/hass.tibber_prices/developer/api-reference",component:d("/hass.tibber_prices/developer/api-reference","65b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/architecture",component:d("/hass.tibber_prices/developer/architecture","264"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/caching-strategy",component:d("/hass.tibber_prices/developer/caching-strategy","69e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/coding-guidelines",component:d("/hass.tibber_prices/developer/coding-guidelines","d02"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/contributing",component:d("/hass.tibber_prices/developer/contributing","0d4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/critical-patterns",component:d("/hass.tibber_prices/developer/critical-patterns","764"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/debugging",component:d("/hass.tibber_prices/developer/debugging","06c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/intro",component:d("/hass.tibber_prices/developer/intro","1e7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/performance",component:d("/hass.tibber_prices/developer/performance","fd3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/period-calculation-theory",component:d("/hass.tibber_prices/developer/period-calculation-theory","16e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/refactoring-guide",component:d("/hass.tibber_prices/developer/refactoring-guide","064"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/release-management",component:d("/hass.tibber_prices/developer/release-management","0b7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/setup",component:d("/hass.tibber_prices/developer/setup","76e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/testing",component:d("/hass.tibber_prices/developer/testing","009"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/developer/timer-architecture",component:d("/hass.tibber_prices/developer/timer-architecture","33e"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"*",component:d("*")}]},8587:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},8600:(e,t,n)=>{"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),l=n(4784),s=n(8193);const u=[n(3001),n(119),n(6134),n(6294),n(1043)];var c=n(8328),d=n(6347),f=n(2831),p=n(4848);function h({children:e}){return(0,p.jsx)(p.Fragment,{children:e})}var m=n(4563);const g=e=>e.defaultFormatter(e);function y({children:e}){return(0,p.jsx)(m.AL,{formatter:g,children:e})}function b({children:e}){return(0,p.jsx)(y,{children:e})}var v=n(5260),w=n(4586),k=n(6025),S=n(6342),x=n(5500),E=n(2131),_=n(4090);var A=n(440),C=n(1463);function T(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,w.A)(),r=(0,E.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(v.A,{children:[Object.entries(n).map(([e,{htmlLang:t}])=>(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:e,fullyQualified:!0}),hrefLang:t},e)),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter(e=>a!==e.htmlLang).map(e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`))]})}function N({permalink:e}){const{siteConfig:{url:t}}=(0,w.A)(),n=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,w.A)(),{pathname:r}=(0,d.zy)();return e+(0,A.Ks)((0,k.Ay)(r),{trailingSlash:n,baseUrl:t})}(),r=e?`${t}${e}`:n;return(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:r}),(0,p.jsx)("link",{rel:"canonical",href:r})]})}function P(){const{i18n:{currentLocale:e}}=(0,w.A)(),{metadata:t,image:n}=(0,S.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:_.w})]}),n&&(0,p.jsx)(x.be,{image:n}),(0,p.jsx)(N,{}),(0,p.jsx)(T,{}),(0,p.jsx)(C.A,{tag:"default",locale:e}),(0,p.jsx)(v.A,{children:t.map((e,t)=>(0,p.jsx)("meta",{...e},t))})]})}const O=new Map;var j=n(6125),L=n(6988),R=n(205);function I(e,...t){const n=u.map(n=>{const r=n.default?.[e]??n[e];return r?.(...t)});return()=>n.forEach(e=>e?.())}const D=function({children:e,location:t,previousLocation:n}){return(0,R.A)(()=>{n!==t&&(!function({location:e,previousLocation:t}){if(!t)return;const n=e.pathname===t.pathname,r=e.hash===t.hash,a=e.search===t.search;if(n&&r&&!a)return;const{hash:o}=e;if(o){const e=decodeURIComponent(o.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:t,previousLocation:n}),I("onRouteDidUpdate",{previousLocation:n,location:t}))},[n,t]),e};function F(e){const t=Array.from(new Set([e,decodeURI(e)])).map(e=>(0,f.u)(c.A,e)).flat();return Promise.all(t.map(e=>e.route.component.preload?.()))}class M extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?I("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=I("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),F(n.pathname).then(()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})}).catch(e=>{console.warn(e),window.location.reload()}),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(D,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(d.qh,{location:t,render:()=>e})})}}const z=M,B="__docusaurus-base-url-issue-banner-suggestion-container";function $(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '__docusaurus-base-url-issue-banner-container';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${B}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${B}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function U(){const{siteConfig:{baseUrl:e}}=(0,w.A)();return(0,p.jsx)(p.Fragment,{children:!s.A.canUseDOM&&(0,p.jsx)(v.A,{children:(0,p.jsx)("script",{children:$(e)})})})}function H(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,w.A)(),{pathname:n}=(0,d.zy)();return t&&n===e?(0,p.jsx)(U,{}):null}function V(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:a}}=(0,w.A)(),o=(0,k.Ay)(e),{htmlLang:i,direction:l}=a[r];return(0,p.jsxs)(v.A,{children:[(0,p.jsx)("html",{lang:i,dir:l}),(0,p.jsx)("title",{children:t}),(0,p.jsx)("meta",{property:"og:title",content:t}),(0,p.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,p.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,p.jsx)("link",{rel:"icon",href:o})]})}var W=n(7489),G=n(2303);function q(){const e=(0,G.A)();return(0,p.jsx)(v.A,{children:(0,p.jsx)("html",{"data-has-hydrated":e})})}const Y=(0,f.v)(c.A);function K(){const e=function(e){if(O.has(e.pathname))return{...e,pathname:O.get(e.pathname)};if((0,f.u)(c.A,e.pathname).some(({route:e})=>!0===e.exact))return O.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return O.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,p.jsx)(z,{location:e,children:Y})}function Q(){return(0,p.jsx)(W.A,{children:(0,p.jsx)(L.l,{children:(0,p.jsxs)(j.x,{children:[(0,p.jsx)(h,{children:(0,p.jsxs)(b,{children:[(0,p.jsx)(V,{}),(0,p.jsx)(P,{}),(0,p.jsx)(H,{}),(0,p.jsx)(K,{})]})}),(0,p.jsx)(q,{})]})})})}var X=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)})}:function(e){return new Promise((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)})};var J=n(6921);const ee=new Set,te=new Set,ne=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,re={prefetch:e=>{if(!(e=>!ne()&&!te.has(e)&&!ee.has(e))(e))return!1;ee.add(e);const t=(0,f.u)(c.A,e).flatMap(e=>{return t=e.route.path,Object.entries(X).filter(([e])=>e.replace(/-[^-]+$/,"")===t).flatMap(([,e])=>Object.values((0,J.A)(e)));var t});return Promise.all(t.map(e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch(()=>{}):Promise.resolve()}))},preload:e=>!!(e=>!ne()&&!te.has(e))(e)&&(te.add(e),F(e))},ae=Object.freeze(re);function oe({children:e}){return"hash"===l.default.future.experimental_router?(0,p.jsx)(i.I9,{children:e}):(0,p.jsx)(i.Kd,{children:e})}const ie=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=ae;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(o.vd,{children:(0,p.jsx)(oe,{children:(0,p.jsx)(Q,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(ie)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};F(window.location.pathname).then(()=>{(0,r.startTransition)(i)})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(6540),a=n(4625),o=n(440),i=n(4586),l=n(6654),s=n(8193),u=n(3427),c=n(6025),d=n(4848);function f({isNavLink:e,to:t,href:n,activeClassName:f,isActive:p,"data-noBrokenLinkCheck":h,autoAddBaseUrl:m=!0,...g},y){const{siteConfig:b}=(0,i.A)(),{trailingSlash:v,baseUrl:w}=b,k=b.future.experimental_router,{withBaseUrl:S}=(0,c.hH)(),x=(0,u.A)(),E=(0,r.useRef)(null);(0,r.useImperativeHandle)(y,()=>E.current);const _=t||n;const A=(0,l.A)(_),C=_?.replace("pathname://","");let T=void 0!==C?(N=C,m&&(e=>e.startsWith("/"))(N)?S(N):N):void 0;var N;"hash"===k&&T?.startsWith("./")&&(T=T?.slice(1)),T&&A&&(T=(0,o.Ks)(T,{trailingSlash:v,baseUrl:w}));const P=(0,r.useRef)(!1),O=e?a.k2:a.N_,j=s.A.canUseIntersectionObserver,L=(0,r.useRef)(),R=()=>{P.current||null==T||(window.docusaurus.preload(T),P.current=!0)};(0,r.useEffect)(()=>(!j&&A&&s.A.canUseDOM&&null!=T&&window.docusaurus.prefetch(T),()=>{j&&L.current&&L.current.disconnect()}),[L,T,j,A]);const I=T?.startsWith("#")??!1,D=!g.target||"_self"===g.target,F=!T||!A||!D||I&&"hash"!==k;h||!I&&F||x.collectLink(T),g.id&&x.collectAnchor(g.id);const M={};return F?(0,d.jsx)("a",{ref:E,href:T,..._&&!A&&{target:"_blank",rel:"noopener noreferrer"},...g,...M}):(0,d.jsx)(O,{...g,onMouseEnter:R,onTouchStart:R,innerRef:e=>{E.current=e,j&&e&&A&&(L.current=new window.IntersectionObserver(t=>{t.forEach(t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(L.current.unobserve(e),L.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))})}),L.current.observe(e))},to:T,...e&&{isActive:p,activeClassName:f},...M})}const p=r.forwardRef(f)},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)(()=>function({baseUrl:e,routes:t}){function n(t){return t.path===e&&!0===t.exact}function r(t){return t.path===e&&!t.exact}return function e(t){if(0===t.length)return;return t.find(n)||e(t.filter(r).flatMap(e=>e.routes??[]))}(t)}({routes:a.A,baseUrl:e}),[e])}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>u,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>c});var r=n(6540),a=n(205),o=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)(()=>{t.current=e},[e]),(0,r.useCallback)((...e)=>t.current(...e),[])}function l(e){const t=(0,r.useRef)();return(0,a.A)(()=>{t.current=e}),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort((e,t)=>e[0].localeCompare(t[0])),(0,r.useMemo)(()=>e,t.flat())}function c(e){return({children:t})=>(0,o.jsx)(o.Fragment,{children:e.reduceRight((e,t)=>(0,o.jsx)(t,{children:e}),t)})}},9698:(e,t)=>{"use strict";var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function a(e,t,r){var a=null;if(void 0!==r&&(a=""+r),void 0!==t.key&&(a=""+t.key),"key"in t)for(var o in r={},t)"key"!==o&&(r[o]=t[o]);else r=t;return t=r.ref,{$$typeof:n,type:e,key:a,ref:void 0!==t?t:null,props:r}}t.Fragment=r,t.jsx=a,t.jsxs=a},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=f.substring(h+p.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},9869:(e,t)=>{"use strict";var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),h=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,y={};function b(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||m}function v(){}function w(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||m}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=b.prototype;var k=w.prototype=new v;k.constructor=w,g(k,b.prototype),k.isPureReactComponent=!0;var S=Array.isArray;function x(){}var E={H:null,A:null,T:null,S:null},_=Object.prototype.hasOwnProperty;function A(e,t,r){var a=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==a?a:null,props:r}}function C(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var T=/\/+/g;function N(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function P(e,t,a,o,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s,u,c=!1;if(null===e)c=!0;else switch(l){case"bigint":case"string":case"number":c=!0;break;case"object":switch(e.$$typeof){case n:case r:c=!0;break;case f:return P((c=e._init)(e._payload),t,a,o,i)}}if(c)return i=i(e),c=""===o?"."+N(e,0):o,S(i)?(a="",null!=c&&(a=c.replace(T,"$&/")+"/"),P(i,t,a,"",function(e){return e})):null!=i&&(C(i)&&(s=i,u=a+(null==i.key||e&&e.key===i.key?"":(""+i.key).replace(T,"$&/")+"/")+c,i=A(s.type,u,s.props)),t.push(i)),1;c=0;var d,p=""===o?".":o+":";if(S(e))for(var m=0;m<e.length;m++)c+=P(o=e[m],t,a,l=p+N(o,m),i);else if("function"==typeof(m=null===(d=e)||"object"!=typeof d?null:"function"==typeof(d=h&&d[h]||d["@@iterator"])?d:null))for(e=m.call(e),m=0;!(o=e.next()).done;)c+=P(o=o.value,t,a,l=p+N(o,m++),i);else if("object"===l){if("function"==typeof e.then)return P(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(x,x):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(e),t,a,o,i);throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return c}function O(e,t,n){if(null==e)return e;var r=[],a=0;return P(e,r,"","",function(e){return t.call(n,e,a++)}),r}function j(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var L="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},R={map:O,forEach:function(e,t,n){O(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return O(e,function(){t++}),t},toArray:function(e){return O(e,function(e){return e})||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};t.Activity=p,t.Children=R,t.Component=b,t.Fragment=a,t.Profiler=i,t.PureComponent=w,t.StrictMode=o,t.Suspense=c,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=E,t.__COMPILER_RUNTIME={__proto__:null,c:function(e){return E.H.useMemoCache(e)}},t.cache=function(e){return function(){return e.apply(null,arguments)}},t.cacheSignal=function(){return null},t.cloneElement=function(e,t,n){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var r=g({},e.props),a=e.key;if(null!=t)for(o in void 0!==t.key&&(a=""+t.key),t)!_.call(t,o)||"key"===o||"__self"===o||"__source"===o||"ref"===o&&void 0===t.ref||(r[o]=t[o]);var o=arguments.length-2;if(1===o)r.children=n;else if(1<o){for(var i=Array(o),l=0;l<o;l++)i[l]=arguments[l+2];r.children=i}return A(e.type,a,r)},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:l,_context:e},e},t.createElement=function(e,t,n){var r,a={},o=null;if(null!=t)for(r in void 0!==t.key&&(o=""+t.key),t)_.call(t,r)&&"key"!==r&&"__self"!==r&&"__source"!==r&&(a[r]=t[r]);var i=arguments.length-2;if(1===i)a.children=n;else if(1<i){for(var l=Array(i),s=0;s<i;s++)l[s]=arguments[s+2];a.children=l}if(e&&e.defaultProps)for(r in i=e.defaultProps)void 0===a[r]&&(a[r]=i[r]);return A(e,o,a)},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:f,_payload:{_status:-1,_result:e},_init:j}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=E.T,n={};E.T=n;try{var r=e(),a=E.S;null!==a&&a(n,r),"object"==typeof r&&null!==r&&"function"==typeof r.then&&r.then(x,L)}catch(o){L(o)}finally{null!==t&&null!==n.types&&(t.types=n.types),E.T=t}},t.unstable_useCacheRefresh=function(){return E.H.useCacheRefresh()},t.use=function(e){return E.H.use(e)},t.useActionState=function(e,t,n){return E.H.useActionState(e,t,n)},t.useCallback=function(e,t){return E.H.useCallback(e,t)},t.useContext=function(e){return E.H.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e,t){return E.H.useDeferredValue(e,t)},t.useEffect=function(e,t){return E.H.useEffect(e,t)},t.useEffectEvent=function(e){return E.H.useEffectEvent(e)},t.useId=function(){return E.H.useId()},t.useImperativeHandle=function(e,t,n){return E.H.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return E.H.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return E.H.useLayoutEffect(e,t)},t.useMemo=function(e,t){return E.H.useMemo(e,t)},t.useOptimistic=function(e,t){return E.H.useOptimistic(e,t)},t.useReducer=function(e,t,n){return E.H.useReducer(e,t,n)},t.useRef=function(e){return E.H.useRef(e)},t.useState=function(e){return E.H.useState(e)},t.useSyncExternalStore=function(e,t,n){return E.H.useSyncExternalStore(e,t,n)},t.useTransition=function(){return E.H.useTransition()},t.version="19.2.1"},9982:(e,t,n)=>{"use strict";e.exports=n(4477)}},e=>{e.O(0,[1869],()=>{return t=8600,e(e.s=t);var t});e.O()}]); \ No newline at end of file diff --git a/developer/assets/js/main.5eb4cf38.js.LICENSE.txt b/developer/assets/js/main.5eb4cf38.js.LICENSE.txt new file mode 100644 index 0000000..540cbdb --- /dev/null +++ b/developer/assets/js/main.5eb4cf38.js.LICENSE.txt @@ -0,0 +1,68 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/*!*************************************************** +* mark.js v8.11.1 +* https://markjs.io/ +* Copyright (c) 2014–2018, Julian KΓΌhnel +* Released under the MIT license https://git.io/vwTVl +*****************************************************/ + +/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/developer/assets/js/runtime~main.09b7b31a.js b/developer/assets/js/runtime~main.09b7b31a.js new file mode 100644 index 0000000..464230c --- /dev/null +++ b/developer/assets/js/runtime~main.09b7b31a.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,r,t,d,f={},b={};function o(e){var a=b[e];if(void 0!==a)return a.exports;var r=b[e]={exports:{}};return f[e].call(r.exports,r,r.exports,o),r.exports}o.m=f,e=[],o.O=(a,r,t,d)=>{if(!r){var f=1/0;for(i=0;i<e.length;i++){for(var[r,t,d]=e[i],b=!0,c=0;c<r.length;c++)(!1&d||f>=d)&&Object.keys(o.O).every(e=>o.O[e](r[c]))?r.splice(c--,1):(b=!1,d<f&&(f=d));if(b){e.splice(i--,1);var n=t();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[r,t,d]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var d=Object.create(null);o.r(d);var f={};a=a||[null,r({}),r([]),r(r)];for(var b=2&t&&e;("object"==typeof b||"function"==typeof b)&&!~a.indexOf(b);b=r(b))Object.getOwnPropertyNames(b).forEach(a=>f[a]=()=>e[a]);return f.default=()=>e,o.d(d,f),d},o.d=(e,a)=>{for(var r in a)o.o(a,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((a,r)=>(o.f[r](e,a),a),[])),o.u=e=>"assets/js/"+({435:"0746f739",1133:"fbe93038",1235:"a7456010",1459:"4d54d076",2076:"common",2397:"929d68ea",2443:"5281b7a2",3624:"edefc60b",3904:"1c78bc2a",3976:"0e384e19",4134:"393be207",4583:"1df93b7f",5154:"2bccb399",5475:"d7c6ee3c",5742:"aba21aa0",6061:"1f391b9e",6214:"3847b3ea",7098:"a7bd4aaa",7192:"ca2d854d",7443:"964ae018",7806:"b5a1766e",8079:"1b064146",8401:"17896441",8657:"0fd2f299",9048:"a94703ab",9647:"5e95c892"}[e]||e)+"."+{165:"f05a8ee8",291:"a0163533",435:"f03136e7",617:"f69cac95",1e3:"592a735f",1133:"1cf68ed0",1203:"f0df0218",1235:"6771e6a5",1459:"b15b6e7d",1741:"a9c16459",1746:"bdafce68",2076:"e5ffc25b",2130:"b9982209",2237:"9a2c6bc5",2279:"b7d7fcca",2291:"67b7a3dd",2325:"deeb2169",2334:"31d26c70",2397:"6281dad7",2443:"6312009d",2492:"97b8a589",2821:"e892811b",3490:"f0da84b9",3624:"99b7c4d5",3815:"50c91756",3904:"67a286df",3976:"267cd716",4134:"ad9eb182",4250:"ea88333c",4583:"2b91fd45",4616:"6afa4c55",4802:"7fea7845",4981:"04eee060",5154:"2379b4a5",5475:"0344cf7a",5480:"63163f11",5742:"0c3044c5",5901:"32ecf05f",5955:"4e2cabc8",5996:"464bd964",6061:"f1cc40fe",6214:"7722d03e",6241:"6315e1bc",6319:"16b4da75",6366:"f0b54494",6567:"44269c43",6992:"6538a426",7098:"1bc0a8b7",7192:"270f6d36",7443:"49be7f51",7465:"e46df99c",7592:"881d8ed3",7806:"41945757",7873:"3af72c28",7928:"f2a3c68e",8079:"f00c088d",8142:"749f55ea",8249:"3ddf6e4d",8401:"3f1392ea",8525:"e2d71772",8577:"9d14d67e",8591:"c8685fea",8657:"823d64a2",8731:"7ab96767",8756:"26be73b3",9032:"88b22b5b",9048:"7b33c78b",9278:"8263111e",9412:"d260116d",9510:"b0ddb86b",9647:"b6e0cd5a",9717:"51a9e973"}[e]+".js",o.miniCssF=e=>{},o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},d="docs-split-developer:",o.l=(e,a,r,f)=>{if(t[e])t[e].push(a);else{var b,c;if(void 0!==r)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==d+r){b=l;break}}b||(c=!0,(b=document.createElement("script")).charset="utf-8",o.nc&&b.setAttribute("nonce",o.nc),b.setAttribute("data-webpack",d+r),b.src=e),t[e]=[a];var s=(a,r)=>{b.onerror=b.onload=null,clearTimeout(u);var d=t[e];if(delete t[e],b.parentNode&&b.parentNode.removeChild(b),d&&d.forEach(e=>e(r)),a)return a(r)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=s.bind(null,b.onerror),b.onload=s.bind(null,b.onload),c&&document.head.appendChild(b)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/hass.tibber_prices/developer/",o.gca=function(e){return e={17896441:"8401","0746f739":"435",fbe93038:"1133",a7456010:"1235","4d54d076":"1459",common:"2076","929d68ea":"2397","5281b7a2":"2443",edefc60b:"3624","1c78bc2a":"3904","0e384e19":"3976","393be207":"4134","1df93b7f":"4583","2bccb399":"5154",d7c6ee3c:"5475",aba21aa0:"5742","1f391b9e":"6061","3847b3ea":"6214",a7bd4aaa:"7098",ca2d854d:"7192","964ae018":"7443",b5a1766e:"7806","1b064146":"8079","0fd2f299":"8657",a94703ab:"9048","5e95c892":"9647"}[e]||e,o.p+o.u(e)},(()=>{var e={5354:0,1869:0};o.f.j=(a,r)=>{var t=o.o(e,a)?e[a]:void 0;if(0!==t)if(t)r.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var d=new Promise((r,d)=>t=e[a]=[r,d]);r.push(t[2]=d);var f=o.p+o.u(a),b=new Error;o.l(f,r=>{if(o.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var d=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;b.message="Loading chunk "+a+" failed.\n("+d+": "+f+")",b.name="ChunkLoadError",b.type=d,b.request=f,t[1](b)}},"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,r)=>{var t,d,[f,b,c]=r,n=0;if(f.some(a=>0!==e[a])){for(t in b)o.o(b,t)&&(o.m[t]=b[t]);if(c)var i=c(o)}for(a&&a(r);n<f.length;n++)d=f[n],o.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return o.O(i)},r=globalThis.webpackChunkdocs_split_developer=globalThis.webpackChunkdocs_split_developer||[];r.forEach(a.bind(null,0)),r.push=a.bind(null,r.push.bind(r))})()})(); \ No newline at end of file diff --git a/developer/caching-strategy.html b/developer/caching-strategy.html new file mode 100644 index 0000000..27ddc6d --- /dev/null +++ b/developer/caching-strategy.html @@ -0,0 +1,261 @@ +<!doctype html> +<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-caching-strategy" data-has-hydrated="false"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v3.9.2"> +<title data-rh="true">Caching Strategy | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Caching Strategy

    +

    This document explains all caching mechanisms in the Tibber Prices integration, their purpose, invalidation logic, and lifetime.

    +

    For timer coordination and scheduling details, see Timer Architecture.

    +

    Overview​

    +

    The integration uses 4 distinct caching layers with different purposes and lifetimes:

    +
      +
    1. Persistent API Data Cache (HA Storage) - Hours to days
    2. +
    3. Translation Cache (Memory) - Forever (until HA restart)
    4. +
    5. Config Dictionary Cache (Memory) - Until config changes
    6. +
    7. Period Calculation Cache (Memory) - Until price data or config changes
    8. +
    +

    1. Persistent API Data Cache​

    +

    Location: coordinator/cache.py β†’ HA Storage (.storage/tibber_prices.<entry_id>)

    +

    Purpose: Reduce API calls to Tibber by caching user data and price data between HA restarts.

    +

    What is cached:

    +
      +
    • Price data (price_data): Day before yesterday/yesterday/today/tomorrow price intervals with enriched fields (384 intervals total)
    • +
    • User data (user_data): Homes, subscriptions, features from Tibber GraphQL viewer query
    • +
    • Timestamps: Last update times for validation
    • +
    +

    Lifetime:

    +
      +
    • Price data: Until midnight turnover (cleared daily at 00:00 local time)
    • +
    • User data: 24 hours (refreshed daily)
    • +
    • Survives: HA restarts via persistent Storage
    • +
    +

    Invalidation triggers:

    +
      +
    1. +

      Midnight turnover (Timer #2 in coordinator):

      +
      # coordinator/day_transitions.py
      def _handle_midnight_turnover() -> None:
      self._cached_price_data = None # Force fresh fetch for new day
      self._last_price_update = None
      await self.store_cache()
      +
    2. +
    3. +

      Cache validation on load:

      +
      # coordinator/cache.py
      def is_cache_valid(cache_data: CacheData) -> bool:
      # Checks if price data is from a previous day
      if today_date < local_now.date(): # Yesterday's data
      return False
      +
    4. +
    5. +

      Tomorrow data check (after 13:00):

      +
      # coordinator/data_fetching.py
      if tomorrow_missing or tomorrow_invalid:
      return "tomorrow_check" # Update needed
      +
    6. +
    +

    Why this cache matters: Reduces API load on Tibber (~192 intervals per fetch), speeds up HA restarts, enables offline operation until cache expires.

    +
    +

    2. Translation Cache​

    +

    Location: const.py β†’ _TRANSLATIONS_CACHE and _STANDARD_TRANSLATIONS_CACHE (in-memory dicts)

    +

    Purpose: Avoid repeated file I/O when accessing entity descriptions, UI strings, etc.

    +

    What is cached:

    +
      +
    • Standard translations (/translations/*.json): Config flow, selector options, entity names
    • +
    • Custom translations (/custom_translations/*.json): Entity descriptions, usage tips, long descriptions
    • +
    +

    Lifetime:

    +
      +
    • Forever (until HA restart)
    • +
    • No invalidation during runtime
    • +
    +

    When populated:

    +
      +
    • At integration setup: async_load_translations(hass, "en") in __init__.py
    • +
    • Lazy loading: If translation missing, attempts file load once
    • +
    +

    Access pattern:

    +
    # Non-blocking synchronous access from cached data
    description = get_translation("binary_sensor.best_price_period.description", "en")
    +

    Why this cache matters: Entity attributes are accessed on every state update (~15 times per hour per entity). File I/O would block the event loop. Cache enables synchronous, non-blocking attribute generation.

    +
    +

    3. Config Dictionary Cache​

    +

    Location: coordinator/data_transformation.py and coordinator/periods.py (per-instance fields)

    +

    Purpose: Avoid ~30-40 options.get() calls on every coordinator update (every 15 minutes).

    +

    What is cached:

    +

    DataTransformer Config Cache​

    +
    {
    "thresholds": {"low": 15, "high": 35},
    "volatility_thresholds": {"moderate": 15.0, "high": 25.0, "very_high": 40.0},
    # ... 20+ more config fields
    }
    +

    PeriodCalculator Config Cache​

    +
    {
    "best": {"flex": 0.15, "min_distance_from_avg": 5.0, "min_period_length": 60},
    "peak": {"flex": 0.15, "min_distance_from_avg": 5.0, "min_period_length": 60}
    }
    +

    Lifetime:

    +
      +
    • Until invalidate_config_cache() is called
    • +
    • Built once on first use per coordinator update cycle
    • +
    +

    Invalidation trigger:

    +
      +
    • Options change (user reconfigures integration): +
      # coordinator/core.py
      async def _handle_options_update(...) -> None:
      self._data_transformer.invalidate_config_cache()
      self._period_calculator.invalidate_config_cache()
      await self.async_request_refresh()
      +
    • +
    +

    Performance impact:

    +
      +
    • Before: ~30 dict lookups + type conversions per update = ~50ΞΌs
    • +
    • After: 1 cache check = ~1ΞΌs
    • +
    • Savings: ~98% (50ΞΌs β†’ 1ΞΌs per update)
    • +
    +

    Why this cache matters: Config is read multiple times per update (transformation + period calculation + validation). Caching eliminates redundant lookups without changing behavior.

    +
    +

    4. Period Calculation Cache​

    +

    Location: coordinator/periods.py β†’ PeriodCalculator._cached_periods

    +

    Purpose: Avoid expensive period calculations (~100-500ms) when price data and config haven't changed.

    +

    What is cached:

    +
    {
    "best_price": {
    "periods": [...], # Calculated period objects
    "intervals": [...], # All intervals in periods
    "metadata": {...} # Config snapshot
    },
    "best_price_relaxation": {"relaxation_active": bool, ...},
    "peak_price": {...},
    "peak_price_relaxation": {...}
    }
    +

    Cache key: Hash of relevant inputs

    +
    hash_data = (
    today_signature, # (startsAt, rating_level) for each interval
    tuple(best_config.items()), # Best price config
    tuple(peak_config.items()), # Peak price config
    best_level_filter, # Level filter overrides
    peak_level_filter
    )
    +

    Lifetime:

    +
      +
    • Until price data changes (today's intervals modified)
    • +
    • Until config changes (flex, thresholds, filters)
    • +
    • Recalculated at midnight (new today data)
    • +
    +

    Invalidation triggers:

    +
      +
    1. +

      Config change (explicit):

      +
      def invalidate_config_cache() -> None:
      self._cached_periods = None
      self._last_periods_hash = None
      +
    2. +
    3. +

      Price data change (automatic via hash mismatch):

      +
      current_hash = self._compute_periods_hash(price_info)
      if self._last_periods_hash != current_hash:
      # Cache miss - recalculate
      +
    4. +
    +

    Cache hit rate:

    +
      +
    • High: During normal operation (coordinator updates every 15min, price data unchanged)
    • +
    • Low: After midnight (new today data) or when tomorrow data arrives (~13:00-14:00)
    • +
    +

    Performance impact:

    +
      +
    • Period calculation: ~100-500ms (depends on interval count, relaxation attempts)
    • +
    • Cache hit: <1ms (hash comparison + dict lookup)
    • +
    • Savings: ~70% of calculation time (most updates hit cache)
    • +
    +

    Why this cache matters: Period calculation is CPU-intensive (filtering, gap tolerance, relaxation). Caching avoids recalculating unchanged periods 3-4 times per hour.

    +
    +

    5. Transformation Cache (Price Enrichment Only)​

    +

    Location: coordinator/data_transformation.py β†’ _cached_transformed_data

    +

    Status: βœ… Clean separation - enrichment only, no redundancy

    +

    What is cached:

    +
    {
    "timestamp": ...,
    "homes": {...},
    "priceInfo": {...}, # Enriched price data (trailing_avg_24h, difference, rating_level)
    # NO periods - periods are exclusively managed by PeriodCalculator
    }
    +

    Purpose: Avoid re-enriching price data when config unchanged between midnight checks.

    +

    Current behavior:

    +
      +
    • Caches only enriched price data (price + statistics)
    • +
    • Does NOT cache periods (handled by Period Calculation Cache)
    • +
    • Invalidated when: +
        +
      • Config changes (thresholds affect enrichment)
      • +
      • Midnight turnover detected
      • +
      • New update cycle begins
      • +
      +
    • +
    +

    Architecture:

    +
      +
    • DataTransformer: Handles price enrichment only
    • +
    • PeriodCalculator: Handles period calculation only (with hash-based cache)
    • +
    • Coordinator: Assembles final data on-demand from both caches
    • +
    +

    Memory savings: Eliminating redundant period storage saves ~10KB per coordinator (14% reduction).

    +
    +

    Cache Invalidation Flow​

    +

    User Changes Options (Config Flow)​

    +
    User saves options
    ↓
    config_entry.add_update_listener() triggers
    ↓
    coordinator._handle_options_update()
    ↓
    β”œβ”€> DataTransformer.invalidate_config_cache()
    β”‚ └─> _config_cache = None
    β”‚ _config_cache_valid = False
    β”‚ _cached_transformed_data = None
    β”‚
    └─> PeriodCalculator.invalidate_config_cache()
    └─> _config_cache = None
    _config_cache_valid = False
    _cached_periods = None
    _last_periods_hash = None
    ↓
    coordinator.async_request_refresh()
    ↓
    Fresh data fetch with new config
    +

    Midnight Turnover (Day Transition)​

    +
    Timer #2 fires at 00:00
    ↓
    coordinator._handle_midnight_turnover()
    ↓
    β”œβ”€> Clear persistent cache
    β”‚ └─> _cached_price_data = None
    β”‚ _last_price_update = None
    β”‚
    └─> Clear transformation cache
    └─> _cached_transformed_data = None
    _last_transformation_config = None
    ↓
    Period cache auto-invalidates (hash mismatch on new "today")
    ↓
    Fresh API fetch for new day
    +

    Tomorrow Data Arrives (~13:00)​

    +
    Coordinator update cycle
    ↓
    should_update_price_data() checks tomorrow
    ↓
    Tomorrow data missing/invalid
    ↓
    API fetch with new tomorrow data
    ↓
    Price data hash changes (new intervals)
    ↓
    Period cache auto-invalidates (hash mismatch)
    ↓
    Periods recalculated with tomorrow included
    +
    +

    Cache Coordination​

    +

    All caches work together:

    +
    Persistent Storage (HA restart)
    ↓
    API Data Cache (price_data, user_data)
    ↓
    β”œβ”€> Enrichment (add rating_level, difference, etc.)
    β”‚ ↓
    β”‚ Transformation Cache (_cached_transformed_data)
    β”‚
    └─> Period Calculation
    ↓
    Period Cache (_cached_periods)
    ↓
    Config Cache (avoid re-reading options)
    ↓
    Translation Cache (entity descriptions)
    +

    No cache invalidation cascades:

    +
      +
    • Config cache invalidation is explicit (on options update)
    • +
    • Period cache invalidation is automatic (via hash mismatch)
    • +
    • Transformation cache invalidation is automatic (on midnight/config change)
    • +
    • Translation cache is never invalidated (read-only after load)
    • +
    +

    Thread safety:

    +
      +
    • All caches are accessed from MainThread only (Home Assistant event loop)
    • +
    • No locking needed (single-threaded execution model)
    • +
    +
    +

    Performance Characteristics​

    +

    Typical Operation (No Changes)​

    +
    Coordinator Update (every 15 min)
    β”œβ”€> API fetch: SKIP (cache valid)
    β”œβ”€> Config dict build: ~1ΞΌs (cached)
    β”œβ”€> Period calculation: ~1ms (cached, hash match)
    β”œβ”€> Transformation: ~10ms (enrichment only, periods cached)
    └─> Entity updates: ~5ms (translation cache hit)

    Total: ~16ms (down from ~600ms without caching)
    +

    After Midnight Turnover​

    +
    Coordinator Update (00:00)
    β”œβ”€> API fetch: ~500ms (cache cleared, fetch new day)
    β”œβ”€> Config dict build: ~50ΞΌs (rebuild, no cache)
    β”œβ”€> Period calculation: ~200ms (cache miss, recalculate)
    β”œβ”€> Transformation: ~50ms (re-enrich, rebuild)
    └─> Entity updates: ~5ms (translation cache still valid)

    Total: ~755ms (expected once per day)
    +

    After Config Change​

    +
    Options Update
    β”œβ”€> Cache invalidation: `<`1ms
    β”œβ”€> Coordinator refresh: ~600ms
    β”‚ β”œβ”€> API fetch: SKIP (data unchanged)
    β”‚ β”œβ”€> Config rebuild: ~50ΞΌs
    β”‚ β”œβ”€> Period recalculation: ~200ms (new thresholds)
    β”‚ β”œβ”€> Re-enrichment: ~50ms
    β”‚ └─> Entity updates: ~5ms
    └─> Total: ~600ms (expected on manual reconfiguration)
    +
    +

    Summary Table​

    +
    Cache TypeLifetimeSizeInvalidationPurpose
    API DataHours to 1 day~50KBMidnight, validationReduce API calls
    TranslationsForever (until HA restart)~5KBNeverAvoid file I/O
    Config DictsUntil options change<1KBExplicit (options update)Avoid dict lookups
    Period CalculationUntil data/config change~10KBAuto (hash mismatch)Avoid CPU-intensive calculation
    TransformationUntil midnight/config change~50KBAuto (midnight/config)Avoid re-enrichment
    +

    Total memory overhead: ~116KB per coordinator instance (main + subentries)

    +

    Benefits:

    +
      +
    • 97% reduction in API calls (from every 15min to once per day)
    • +
    • 70% reduction in period calculation time (cache hits during normal operation)
    • +
    • 98% reduction in config access time (30+ lookups β†’ 1 cache check)
    • +
    • Zero file I/O during runtime (translations cached at startup)
    • +
    +

    Trade-offs:

    +
      +
    • Memory usage: ~116KB per home (negligible for modern systems)
    • +
    • Code complexity: 5 cache invalidation points (well-tested, documented)
    • +
    • Debugging: Must understand cache lifetime when investigating stale data issues
    • +
    +
    +

    Debugging Cache Issues​

    +

    Symptom: Stale data after config change​

    +

    Check:

    +
      +
    1. Is _handle_options_update() called? (should see "Options updated" log)
    2. +
    3. Are invalidate_config_cache() methods executed?
    4. +
    5. Does async_request_refresh() trigger?
    6. +
    +

    Fix: Ensure config_entry.add_update_listener() is registered in coordinator init.

    +

    Symptom: Period calculation not updating​

    +

    Check:

    +
      +
    1. Verify hash changes when data changes: _compute_periods_hash()
    2. +
    3. Check _last_periods_hash vs current_hash
    4. +
    5. Look for "Using cached period calculation" vs "Calculating periods" logs
    6. +
    +

    Fix: Hash function may not include all relevant data. Review _compute_periods_hash() inputs.

    +

    Symptom: Yesterday's prices shown as today​

    +

    Check:

    +
      +
    1. is_cache_valid() logic in coordinator/cache.py
    2. +
    3. Midnight turnover execution (Timer #2)
    4. +
    5. Cache clear confirmation in logs
    6. +
    +

    Fix: Timer may not be firing. Check _schedule_midnight_turnover() registration.

    +

    Symptom: Missing translations​

    +

    Check:

    +
      +
    1. async_load_translations() called at startup?
    2. +
    3. Translation files exist in /translations/ and /custom_translations/?
    4. +
    5. Cache population: _TRANSLATIONS_CACHE keys
    6. +
    +

    Fix: Re-install integration or restart HA to reload translation files.

    +
    + +
    + + \ No newline at end of file diff --git a/developer/coding-guidelines.html b/developer/coding-guidelines.html new file mode 100644 index 0000000..f0b96cd --- /dev/null +++ b/developer/coding-guidelines.html @@ -0,0 +1,76 @@ + + + + + +Coding Guidelines | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Coding Guidelines

    +
    +

    Note: For complete coding standards, see AGENTS.md.

    +
    +

    Code Style​

    +
      +
    • Formatter/Linter: Ruff (replaces Black, Flake8, isort)
    • +
    • Max line length: 120 characters
    • +
    • Max complexity: 25 (McCabe)
    • +
    • Target: Python 3.13
    • +
    +

    Run before committing:

    +
    ./scripts/lint        # Auto-fix issues
    ./scripts/release/hassfest # Validate integration structure
    +

    Naming Conventions​

    +

    Class Names​

    +

    All public classes MUST use the integration name as prefix.

    +

    This is a Home Assistant standard to avoid naming conflicts between integrations.

    +
    # βœ… CORRECT
    class TibberPricesApiClient:
    class TibberPricesDataUpdateCoordinator:
    class TibberPricesSensor:

    # ❌ WRONG - Missing prefix
    class ApiClient:
    class DataFetcher:
    class TimeService:
    +

    When prefix is required:

    +
      +
    • Public classes used across multiple modules
    • +
    • All exception classes
    • +
    • All coordinator and entity classes
    • +
    • Data classes (dataclasses, NamedTuples) used as public APIs
    • +
    +

    When prefix can be omitted:

    +
      +
    • Private helper classes within a single module (prefix with _ underscore)
    • +
    • Type aliases and callbacks (e.g., TimeServiceCallback)
    • +
    • Small internal NamedTuples for function returns
    • +
    +

    Private Classes:

    +

    If a helper class is ONLY used within a single module file, prefix it with underscore:

    +
    # βœ… Private class - used only in this file
    class _InternalHelper:
    """Helper used only within this module."""
    pass

    # ❌ Wrong - no prefix but used across modules
    class DataFetcher: # Should be TibberPricesDataFetcher
    pass
    +

    Note: Currently (Nov 2025), this project has NO private classes - all classes are used across module boundaries.

    +

    Current Technical Debt:

    +

    Many existing classes lack the TibberPrices prefix. Before refactoring:

    +
      +
    1. Document the plan in /planning/class-naming-refactoring.md
    2. +
    3. Use multi_replace_string_in_file for bulk renames
    4. +
    5. Test thoroughly after each module
    6. +
    +

    See AGENTS.md for complete list of classes needing rename.

    +

    Import Order​

    +
      +
    1. Python stdlib (specific types only)
    2. +
    3. Third-party (homeassistant.*, aiohttp)
    4. +
    5. Local (.api, .const)
    6. +
    +

    Critical Patterns​

    +

    Time Handling​

    +

    Always use dt_util from homeassistant.util:

    +
    from homeassistant.util import dt as dt_util

    price_time = dt_util.parse_datetime(starts_at)
    price_time = dt_util.as_local(price_time) # Convert to HA timezone
    now = dt_util.now()
    +

    Translation Loading​

    +
    # In __init__.py async_setup_entry:
    await async_load_translations(hass, "en")
    await async_load_standard_translations(hass, "en")
    +

    Price Data Enrichment​

    +

    Always enrich raw API data:

    +
    from .price_utils import enrich_price_info_with_differences

    enriched = enrich_price_info_with_differences(
    price_info_data,
    thresholds,
    )
    +

    See AGENTS.md for complete guidelines.

    + + \ No newline at end of file diff --git a/developer/contributing.html b/developer/contributing.html new file mode 100644 index 0000000..76d6880 --- /dev/null +++ b/developer/contributing.html @@ -0,0 +1,151 @@ + + + + + +Contributing Guide | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Contributing Guide

    +

    Welcome! This guide helps you contribute to the Tibber Prices integration.

    +

    Getting Started​

    +

    Prerequisites​

    +
      +
    • Git
    • +
    • VS Code with Remote Containers extension
    • +
    • Docker Desktop
    • +
    +

    Fork and Clone​

    +
      +
    1. Fork the repository on GitHub
    2. +
    3. Clone your fork: +
      git clone https://github.com/YOUR_USERNAME/hass.tibber_prices.git
      cd hass.tibber_prices
      +
    4. +
    5. Open in VS Code
    6. +
    7. Click "Reopen in Container" when prompted
    8. +
    +

    The DevContainer will set up everything automatically.

    +

    Development Workflow​

    +

    1. Create a Branch​

    +
    git checkout -b feature/your-feature-name
    # or
    git checkout -b fix/issue-123-description
    +

    Branch naming:

    +
      +
    • feature/ - New features
    • +
    • fix/ - Bug fixes
    • +
    • docs/ - Documentation only
    • +
    • refactor/ - Code restructuring
    • +
    • test/ - Test improvements
    • +
    +

    2. Make Changes​

    +

    Edit code, following Coding Guidelines.

    +

    Run checks frequently:

    +
    ./scripts/type-check  # Pyright type checking
    ./scripts/lint # Ruff linting (auto-fix)
    ./scripts/test # Run tests
    +

    3. Test Locally​

    +
    ./scripts/develop     # Start HA with integration loaded
    +

    Access at http://localhost:8123

    +

    4. Write Tests​

    +

    Add tests in /tests/ for new features:

    +
    @pytest.mark.unit
    async def test_your_feature(hass, coordinator):
    """Test your new feature."""
    # Arrange
    coordinator.data = {...}

    # Act
    result = your_function(coordinator.data)

    # Assert
    assert result == expected_value
    +

    Run your test:

    +
    ./scripts/test tests/test_your_feature.py -v
    +

    5. Commit Changes​

    +

    Follow Conventional Commits:

    +
    git add .
    git commit -m "feat(sensors): add volatility trend sensor

    Add new sensor showing 3-hour volatility trend direction.
    Includes attributes with historical volatility data.

    Impact: Users can predict when prices will stabilize or continue fluctuating."
    +

    Commit types:

    +
      +
    • feat: - New feature
    • +
    • fix: - Bug fix
    • +
    • docs: - Documentation
    • +
    • refactor: - Code restructuring
    • +
    • test: - Test changes
    • +
    • chore: - Maintenance
    • +
    +

    Add scope when relevant:

    +
      +
    • feat(sensors): - Sensor platform
    • +
    • fix(coordinator): - Data coordinator
    • +
    • docs(user): - User documentation
    • +
    +

    6. Push and Create PR​

    +
    git push origin your-branch-name
    +

    Then open Pull Request on GitHub.

    +

    Pull Request Guidelines​

    +

    PR Template​

    +

    Title: Short, descriptive (50 chars max)

    +

    Description should include:

    +
    ## What
    Brief description of changes

    ## Why
    Problem being solved or feature rationale

    ## How
    Implementation approach

    ## Testing
    - [ ] Manual testing in Home Assistant
    - [ ] Unit tests added/updated
    - [ ] Type checking passes
    - [ ] Linting passes

    ## Breaking Changes
    (If any - describe migration path)

    ## Related Issues
    Closes #123
    +

    PR Checklist​

    +

    Before submitting:

    +
      +
    • Code follows Coding Guidelines
    • +
    • All tests pass (./scripts/test)
    • +
    • Type checking passes (./scripts/type-check)
    • +
    • Linting passes (./scripts/lint-check)
    • +
    • Documentation updated (if needed)
    • +
    • AGENTS.md updated (if patterns changed)
    • +
    • Commit messages follow Conventional Commits
    • +
    +

    Review Process​

    +
      +
    1. Automated checks run (CI/CD)
    2. +
    3. Maintainer review (usually within 3 days)
    4. +
    5. Address feedback if requested
    6. +
    7. Approval β†’ Maintainer merges
    8. +
    +

    Code Review Tips​

    +

    What Reviewers Look For​

    +

    βœ… Good:

    +
      +
    • Clear, self-explanatory code
    • +
    • Appropriate comments for complex logic
    • +
    • Tests covering edge cases
    • +
    • Type hints on all functions
    • +
    • Follows existing patterns
    • +
    +

    ❌ Avoid:

    +
      +
    • Large PRs (>500 lines) - split into smaller ones
    • +
    • Mixing unrelated changes
    • +
    • Missing tests for new features
    • +
    • Breaking changes without migration path
    • +
    • Copy-pasted code (refactor into shared functions)
    • +
    +

    Responding to Feedback​

    +
      +
    • Don't take it personally - we're improving code together
    • +
    • Ask questions if feedback unclear
    • +
    • Push additional commits to address comments
    • +
    • Mark conversations as resolved when fixed
    • +
    +

    Finding Issues to Work On​

    +

    Good first issues are labeled:

    +
      +
    • good first issue - Beginner-friendly
    • +
    • help wanted - Maintainers welcome contributions
    • +
    • documentation - Docs improvements
    • +
    +

    Comment on issue before starting work to avoid duplicates.

    +

    Communication​

    +
      +
    • GitHub Issues - Bug reports, feature requests
    • +
    • Pull Requests - Code discussion
    • +
    • Discussions - General questions, ideas
    • +
    +

    Be respectful, constructive, and patient. We're all volunteers! πŸ™

    +
    +

    πŸ’‘ Related:

    +
    + + \ No newline at end of file diff --git a/developer/critical-patterns.html b/developer/critical-patterns.html new file mode 100644 index 0000000..4c77483 --- /dev/null +++ b/developer/critical-patterns.html @@ -0,0 +1,244 @@ + + + + + +Critical Behavior Patterns - Testing Guide | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Critical Behavior Patterns - Testing Guide

    +

    Purpose: This documentation lists essential behavior patterns that must be tested to ensure production-quality code and prevent resource leaks.

    +

    Last Updated: 2025-11-22 +Test Coverage: 41 tests implemented (100% of critical patterns)

    +

    🎯 Why Are These Tests Critical?​

    +

    Home Assistant integrations run continuously in the background. Resource leaks lead to:

    +
      +
    • Memory Leaks: RAM usage grows over days/weeks until HA becomes unstable
    • +
    • Callback Leaks: Listeners remain registered after entity removal β†’ CPU load increases
    • +
    • Timer Leaks: Timers continue running after unload β†’ unnecessary background tasks
    • +
    • File Handle Leaks: Storage files remain open β†’ system resources exhausted
    • +
    +

    βœ… Test Categories​

    +

    1. Resource Cleanup (Memory Leak Prevention)​

    +

    File: tests/test_resource_cleanup.py

    +

    1.1 Listener Cleanup βœ…β€‹

    +

    What is tested:

    +
      +
    • Time-sensitive listeners are correctly removed (async_add_time_sensitive_listener())
    • +
    • Minute-update listeners are correctly removed (async_add_minute_update_listener())
    • +
    • Lifecycle callbacks are correctly unregistered (register_lifecycle_callback())
    • +
    • Sensor cleanup removes ALL registered listeners
    • +
    • Binary sensor cleanup removes ALL registered listeners
    • +
    +

    Why critical:

    +
      +
    • Each registered listener holds references to Entity + Coordinator
    • +
    • Without cleanup: Entities are not freed by GC β†’ Memory Leak
    • +
    • With 80+ sensors Γ— 3 listener types = 240+ callbacks that must be cleanly removed
    • +
    +

    Code Locations:

    +
      +
    • coordinator/listeners.py β†’ async_add_time_sensitive_listener(), async_add_minute_update_listener()
    • +
    • coordinator/core.py β†’ register_lifecycle_callback()
    • +
    • sensor/core.py β†’ async_will_remove_from_hass()
    • +
    • binary_sensor/core.py β†’ async_will_remove_from_hass()
    • +
    +

    1.2 Timer Cleanup βœ…β€‹

    +

    What is tested:

    +
      +
    • Quarter-hour timer is cancelled and reference cleared
    • +
    • Minute timer is cancelled and reference cleared
    • +
    • Both timers are cancelled together
    • +
    • Cleanup works even when timers are None
    • +
    +

    Why critical:

    +
      +
    • Uncancelled timers continue running after integration unload
    • +
    • HA's async_track_utc_time_change() creates persistent callbacks
    • +
    • Without cleanup: Timers keep firing β†’ CPU load + unnecessary coordinator updates
    • +
    +

    Code Locations:

    +
      +
    • coordinator/listeners.py β†’ cancel_timers()
    • +
    • coordinator/core.py β†’ async_shutdown()
    • +
    +

    1.3 Config Entry Cleanup βœ…β€‹

    +

    What is tested:

    +
      +
    • Options update listener is registered via async_on_unload()
    • +
    • Cleanup function is correctly passed to async_on_unload()
    • +
    +

    Why critical:

    +
      +
    • entry.add_update_listener() registers permanent callback
    • +
    • Without async_on_unload(): Listener remains active after reload β†’ duplicate updates
    • +
    • Pattern: entry.async_on_unload(entry.add_update_listener(handler))
    • +
    +

    Code Locations:

    +
      +
    • coordinator/core.py β†’ __init__() (listener registration)
    • +
    • __init__.py β†’ async_unload_entry()
    • +
    +

    2. Cache Invalidation βœ…β€‹

    +

    File: tests/test_resource_cleanup.py

    +

    2.1 Config Cache Invalidation​

    +

    What is tested:

    +
      +
    • DataTransformer config cache is invalidated on options change
    • +
    • PeriodCalculator config + period cache is invalidated
    • +
    • Trend calculator cache is cleared on coordinator update
    • +
    +

    Why critical:

    +
      +
    • Stale config β†’ Sensors use old user settings
    • +
    • Stale period cache β†’ Incorrect best/peak price periods
    • +
    • Stale trend cache β†’ Outdated trend analysis
    • +
    +

    Code Locations:

    +
      +
    • coordinator/data_transformation.py β†’ invalidate_config_cache()
    • +
    • coordinator/periods.py β†’ invalidate_config_cache()
    • +
    • sensor/calculators/trend.py β†’ clear_trend_cache()
    • +
    +

    3. Storage Cleanup βœ…β€‹

    +

    File: tests/test_resource_cleanup.py + tests/test_coordinator_shutdown.py

    +

    3.1 Persistent Storage Removal​

    +

    What is tested:

    +
      +
    • Storage file is deleted on config entry removal
    • +
    • Cache is saved on shutdown (no data loss)
    • +
    +

    Why critical:

    +
      +
    • Without storage removal: Old files remain after uninstallation
    • +
    • Without cache save on shutdown: Data loss on HA restart
    • +
    • Storage path: .storage/tibber_prices.{entry_id}
    • +
    +

    Code Locations:

    +
      +
    • __init__.py β†’ async_remove_entry()
    • +
    • coordinator/core.py β†’ async_shutdown()
    • +
    +

    4. Timer Scheduling βœ…β€‹

    +

    File: tests/test_timer_scheduling.py

    +

    What is tested:

    +
      +
    • Quarter-hour timer is registered with correct parameters
    • +
    • Minute timer is registered with correct parameters
    • +
    • Timers can be re-scheduled (override old timer)
    • +
    • Midnight turnover detection works correctly
    • +
    +

    Why critical:

    +
      +
    • Wrong timer parameters β†’ Entities update at wrong times
    • +
    • Without timer override on re-schedule β†’ Multiple parallel timers β†’ Performance problem
    • +
    +

    5. Sensor-to-Timer Assignment βœ…β€‹

    +

    File: tests/test_sensor_timer_assignment.py

    +

    What is tested:

    +
      +
    • All TIME_SENSITIVE_ENTITY_KEYS are valid entity keys
    • +
    • All MINUTE_UPDATE_ENTITY_KEYS are valid entity keys
    • +
    • Both lists are disjoint (no overlap)
    • +
    • Sensor and binary sensor platforms are checked
    • +
    +

    Why critical:

    +
      +
    • Wrong timer assignment β†’ Sensors update at wrong times
    • +
    • Overlap β†’ Duplicate updates β†’ Performance problem
    • +
    +

    🚨 Additional Analysis (Nice-to-Have Patterns)​

    +

    These patterns were analyzed and classified as not critical:

    +

    6. Async Task Management​

    +

    Current Status: Fire-and-forget pattern for short tasks

    +
      +
    • sensor/core.py β†’ Chart data refresh (short-lived, max 1-2 seconds)
    • +
    • coordinator/core.py β†’ Cache storage (short-lived, max 100ms)
    • +
    +

    Why no tests needed:

    +
      +
    • No long-running tasks (all < 2 seconds)
    • +
    • HA's event loop handles short tasks automatically
    • +
    • Task exceptions are already logged
    • +
    +

    If needed: _chart_refresh_task tracking + cancel in async_will_remove_from_hass()

    +

    7. API Session Cleanup​

    +

    Current Status: βœ… Correctly implemented

    +
      +
    • async_get_clientsession(hass) is used (shared session)
    • +
    • No new sessions are created
    • +
    • HA manages session lifecycle automatically
    • +
    +

    Code: api/client.py + __init__.py

    +

    8. Translation Cache Memory​

    +

    Current Status: βœ… Bounded cache

    +
      +
    • Max ~5-10 languages Γ— 5KB = 50KB total
    • +
    • Module-level cache without re-loading
    • +
    • Practically no memory issue
    • +
    +

    Code: const.py β†’ _TRANSLATIONS_CACHE, _STANDARD_TRANSLATIONS_CACHE

    +

    9. Coordinator Data Structure Integrity​

    +

    Current Status: Manually tested via ./scripts/develop

    +
      +
    • Midnight turnover works correctly (observed over several days)
    • +
    • Missing keys are handled via .get() with defaults
    • +
    • 80+ sensors access coordinator.data without errors
    • +
    +

    Structure:

    +
    coordinator.data = {
    "user_data": {...},
    "priceInfo": [...], # Flat list of all enriched intervals
    "currency": "EUR" # Top-level for easy access
    }
    +

    10. Service Response Memory​

    +

    Current Status: HA's response lifecycle

    +
      +
    • HA automatically frees service responses after return
    • +
    • ApexCharts ~20KB response is one-time per call
    • +
    • No response accumulation in integration code
    • +
    +

    Code: services/apexcharts.py

    +

    πŸ“Š Test Coverage Status​

    +

    βœ… Implemented Tests (41 total)​

    +
    CategoryStatusTestsFileCoverage
    Listener Cleanupβœ…5test_resource_cleanup.py100%
    Timer Cleanupβœ…4test_resource_cleanup.py100%
    Config Entry Cleanupβœ…1test_resource_cleanup.py100%
    Cache Invalidationβœ…3test_resource_cleanup.py100%
    Storage Cleanupβœ…1test_resource_cleanup.py100%
    Storage Persistenceβœ…2test_coordinator_shutdown.py100%
    Timer Schedulingβœ…8test_timer_scheduling.py100%
    Sensor-Timer Assignmentβœ…17test_sensor_timer_assignment.py100%
    TOTALβœ…41100% (critical)
    +

    πŸ“‹ Analyzed but Not Implemented (Nice-to-Have)​

    +
    CategoryStatusRationale
    Async Task ManagementπŸ“‹Fire-and-forget pattern used (no long-running tasks)
    API Session Cleanupβœ…Pattern correct (async_get_clientsession used)
    Translation Cacheβœ…Cache size bounded (~50KB max for 10 languages)
    Data Structure IntegrityπŸ“‹Would add test time without finding real issues
    Service Response MemoryπŸ“‹HA automatically frees service responses
    +

    Legend:

    +
      +
    • βœ… = Fully tested or pattern verified correct
    • +
    • πŸ“‹ = Analyzed, low priority for testing (no known issues)
    • +
    +

    🎯 Development Status​

    +

    βœ… All Critical Patterns Tested​

    +

    All essential memory leak prevention patterns are covered by 41 tests:

    +
      +
    • βœ… Listeners are correctly removed (no callback leaks)
    • +
    • βœ… Timers are cancelled (no background task leaks)
    • +
    • βœ… Config entry cleanup works (no dangling listeners)
    • +
    • βœ… Caches are invalidated (no stale data issues)
    • +
    • βœ… Storage is saved and cleaned up (no data loss)
    • +
    • βœ… Timer scheduling works correctly (no update issues)
    • +
    • βœ… Sensor-timer assignment is correct (no wrong updates)
    • +
    +

    πŸ“‹ Nice-to-Have Tests (Optional)​

    +

    If problems arise in the future, these tests can be added:

    +
      +
    1. Async Task Management - Pattern analyzed (fire-and-forget for short tasks)
    2. +
    3. Data Structure Integrity - Midnight rotation manually tested
    4. +
    5. Service Response Memory - HA's response lifecycle automatic
    6. +
    +

    Conclusion: The integration has production-quality test coverage for all critical resource leak patterns.

    +

    πŸ” How to Run Tests​

    +
    # Run all resource cleanup tests (14 tests)
    ./scripts/test tests/test_resource_cleanup.py -v

    # Run all critical pattern tests (41 tests)
    ./scripts/test tests/test_resource_cleanup.py tests/test_coordinator_shutdown.py \
    tests/test_timer_scheduling.py tests/test_sensor_timer_assignment.py -v

    # Run all tests with coverage
    ./scripts/test --cov=custom_components.tibber_prices --cov-report=html

    # Type checking and linting
    ./scripts/check

    # Manual memory leak test
    # 1. Start HA: ./scripts/develop
    # 2. Monitor RAM: watch -n 1 'ps aux | grep home-assistant'
    # 3. Reload integration multiple times (HA UI: Settings β†’ Devices β†’ Tibber Prices β†’ Reload)
    # 4. RAM should stabilize (not grow continuously)
    +

    πŸ“š References​

    +
    + + \ No newline at end of file diff --git a/developer/debugging.html b/developer/debugging.html new file mode 100644 index 0000000..42b5ef2 --- /dev/null +++ b/developer/debugging.html @@ -0,0 +1,100 @@ + + + + + +Debugging Guide | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Debugging Guide

    +

    Tips and techniques for debugging the Tibber Prices integration during development.

    +

    Logging​

    +

    Enable Debug Logging​

    +

    Add to configuration.yaml:

    +
    logger:
    default: info
    logs:
    custom_components.tibber_prices: debug
    +

    Restart Home Assistant to apply.

    +

    Key Log Messages​

    +

    Coordinator Updates:

    +
    [custom_components.tibber_prices.coordinator] Successfully fetched price data
    [custom_components.tibber_prices.coordinator] Cache valid, using cached data
    [custom_components.tibber_prices.coordinator] Midnight turnover detected, clearing cache
    +

    Period Calculation:

    +
    [custom_components.tibber_prices.coordinator.periods] Calculating BEST PRICE periods: flex=15.0%
    [custom_components.tibber_prices.coordinator.periods] Day 2024-12-06: Found 2 periods
    [custom_components.tibber_prices.coordinator.periods] Period 1: 02:00-05:00 (12 intervals)
    +

    API Errors:

    +
    [custom_components.tibber_prices.api] API request failed: Unauthorized
    [custom_components.tibber_prices.api] Retrying (attempt 2/3) after 2.0s
    +

    VS Code Debugging​

    +

    Launch Configuration​

    +

    .vscode/launch.json:

    +
    {
    "version": "0.2.0",
    "configurations": [
    {
    "name": "Home Assistant",
    "type": "debugpy",
    "request": "launch",
    "module": "homeassistant",
    "args": ["-c", "config", "--debug"],
    "justMyCode": false,
    "env": {
    "PYTHONPATH": "${workspaceFolder}/.venv/lib/python3.13/site-packages"
    }
    }
    ]
    }
    +

    Set Breakpoints​

    +

    Coordinator update:

    +
    # coordinator/core.py
    async def _async_update_data(self) -> dict:
    """Fetch data from API."""
    breakpoint() # Or set VS Code breakpoint
    +

    Period calculation:

    +
    # coordinator/period_handlers/core.py
    def calculate_periods(...) -> list[dict]:
    """Calculate best/peak price periods."""
    breakpoint()
    +

    pytest Debugging​

    +

    Run Single Test with Output​

    +
    .venv/bin/python -m pytest tests/test_period_calculation.py::test_midnight_crossing -v -s
    +

    Flags:

    +
      +
    • -v - Verbose output
    • +
    • -s - Show print statements
    • +
    • -k pattern - Run tests matching pattern
    • +
    +

    Debug Test in VS Code​

    +

    Set breakpoint in test file, use "Debug Test" CodeLens.

    +

    Useful Test Patterns​

    +

    Print coordinator data:

    +
    def test_something(coordinator):
    print(f"Coordinator data: {coordinator.data}")
    print(f"Price info count: {len(coordinator.data['priceInfo'])}")
    +

    Inspect period attributes:

    +
    def test_periods(hass, coordinator):
    periods = coordinator.data.get('best_price_periods', [])
    for period in periods:
    print(f"Period: {period['start']} to {period['end']}")
    print(f" Intervals: {len(period['intervals'])}")
    +

    Common Issues​

    +

    Integration Not Loading​

    +

    Check:

    +
    grep "tibber_prices" config/home-assistant.log
    +

    Common causes:

    +
      +
    • Syntax error in Python code β†’ Check logs for traceback
    • +
    • Missing dependency β†’ Run uv sync
    • +
    • Wrong file permissions β†’ chmod +x scripts/*
    • +
    +

    Sensors Not Updating​

    +

    Check coordinator state:

    +
    # In Developer Tools > Template
    {{ states.sensor.tibber_home_current_interval_price.last_updated }}
    +

    Debug in code:

    +
    # Add logging in sensor/core.py
    _LOGGER.debug("Updating sensor %s: old=%s new=%s",
    self.entity_id, self._attr_native_value, new_value)
    +

    Period Calculation Wrong​

    +

    Enable detailed period logs:

    +
    # coordinator/period_handlers/period_building.py
    _LOGGER.debug("Candidate intervals: %s",
    [(i['startsAt'], i['total']) for i in candidates])
    +

    Check filter statistics:

    +
    [period_building] Flex filter blocked: 45 intervals
    [period_building] Min distance blocked: 12 intervals
    [period_building] Level filter blocked: 8 intervals
    +

    Performance Profiling​

    +

    Time Execution​

    +
    import time

    start = time.perf_counter()
    result = expensive_function()
    duration = time.perf_counter() - start
    _LOGGER.debug("Function took %.3fs", duration)
    +

    Memory Usage​

    +
    import tracemalloc

    tracemalloc.start()
    # ... your code ...
    current, peak = tracemalloc.get_traced_memory()
    _LOGGER.debug("Memory: current=%d peak=%d", current, peak)
    tracemalloc.stop()
    +

    Profile with cProfile​

    +
    python -m cProfile -o profile.stats -m homeassistant -c config
    python -m pstats profile.stats
    # Then: sort cumtime, stats 20
    +

    Live Debugging in Running HA​

    +

    Remote Debugging with debugpy​

    +

    Add to coordinator code:

    +
    import debugpy
    debugpy.listen(5678)
    _LOGGER.info("Waiting for debugger attach on port 5678")
    debugpy.wait_for_client()
    +

    Connect from VS Code with remote attach configuration.

    +

    IPython REPL​

    +

    Install in container:

    +
    uv pip install ipython
    +

    Add breakpoint:

    +
    from IPython import embed
    embed() # Drops into interactive shell
    +
    +

    πŸ’‘ Related:

    +
    + + \ No newline at end of file diff --git a/developer/img/charts/rolling-window-autozoom.jpg b/developer/img/charts/rolling-window-autozoom.jpg new file mode 100644 index 0000000..6cb2345 Binary files /dev/null and b/developer/img/charts/rolling-window-autozoom.jpg differ diff --git a/developer/img/charts/rolling-window.jpg b/developer/img/charts/rolling-window.jpg new file mode 100644 index 0000000..a113a34 Binary files /dev/null and b/developer/img/charts/rolling-window.jpg differ diff --git a/developer/img/charts/today.jpg b/developer/img/charts/today.jpg new file mode 100644 index 0000000..8674bb4 Binary files /dev/null and b/developer/img/charts/today.jpg differ diff --git a/developer/img/docusaurus-social-card.jpg b/developer/img/docusaurus-social-card.jpg new file mode 100644 index 0000000..ffcb448 Binary files /dev/null and b/developer/img/docusaurus-social-card.jpg differ diff --git a/developer/img/docusaurus.png b/developer/img/docusaurus.png new file mode 100644 index 0000000..f458149 Binary files /dev/null and b/developer/img/docusaurus.png differ diff --git a/developer/img/entities-overview.jpg b/developer/img/entities-overview.jpg new file mode 100644 index 0000000..5238104 Binary files /dev/null and b/developer/img/entities-overview.jpg differ diff --git a/developer/img/header-dark.svg b/developer/img/header-dark.svg new file mode 100644 index 0000000..5c06e1c --- /dev/null +++ b/developer/img/header-dark.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + Tibber Prices + + Custom Integration + + + + + + for + + + + + + + + + Tibber + diff --git a/developer/img/header.svg b/developer/img/header.svg new file mode 100644 index 0000000..1ed0fba --- /dev/null +++ b/developer/img/header.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + Tibber Prices + + Custom Integration + + + + + + for + + + + + + + + + Tibber + diff --git a/developer/img/logo.png b/developer/img/logo.png new file mode 100644 index 0000000..728ec31 Binary files /dev/null and b/developer/img/logo.png differ diff --git a/developer/img/logo.svg b/developer/img/logo.svg new file mode 100644 index 0000000..ed55f1d --- /dev/null +++ b/developer/img/logo.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + € + diff --git a/developer/img/undraw_docusaurus_mountain.svg b/developer/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000..af961c4 --- /dev/null +++ b/developer/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/img/undraw_docusaurus_react.svg b/developer/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000..94b5cf0 --- /dev/null +++ b/developer/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/img/undraw_docusaurus_tree.svg b/developer/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000..d9161d3 --- /dev/null +++ b/developer/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/developer/index.html b/developer/index.html new file mode 100644 index 0000000..14b2953 --- /dev/null +++ b/developer/index.html @@ -0,0 +1,18 @@ + + + + + +Tibber Prices - Developer Guide + + + + + + + + + +
    Tibber Prices for Tibber

    Tibber Prices - Developer Guide

    Developer documentation for the Tibber Prices custom integration

    πŸ—οΈ Clean Architecture

    Modular design with separation of concerns. Calculator pattern for business logic, coordinator-based data flow, and comprehensive caching strategies.

    πŸ§ͺ Test Coverage

    Comprehensive test suite with unit, integration, and E2E tests. Resource leak detection, lifecycle validation, and performance benchmarks.

    πŸ“š Full Documentation

    Complete API reference, architecture diagrams, coding guidelines, and debugging guides. Everything you need to contribute effectively.

    πŸ”§ DevContainer Ready

    Pre-configured development environment with all dependencies. VS Code integration, linting, type checking, and debugging tools included.

    ⚑ Performance Focused

    Multi-layer caching, optimized algorithms, and efficient data structures. Coordinator updates in <500ms, sensor updates in <10ms.

    🀝 Community Driven

    Open source project with active development. Conventional commits, semantic versioning, and automated release management.

    + + \ No newline at end of file diff --git a/developer/intro.html b/developer/intro.html new file mode 100644 index 0000000..50e38bb --- /dev/null +++ b/developer/intro.html @@ -0,0 +1,138 @@ + + + + + +Developer Documentation | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Developer Documentation

    +

    This section contains documentation for contributors and maintainers of the Tibber Prices custom integration.

    +
    Community Project

    This is an independent, community-maintained custom integration for Home Assistant. It is not an official Tibber product and is not affiliated with Tibber AS.

    +

    πŸ“š Developer Guides​

    + +

    πŸ€– AI Documentation​

    +

    The main AI/Copilot documentation is in AGENTS.md. This file serves as long-term memory for AI assistants and contains:

    +
      +
    • Detailed architectural patterns
    • +
    • Code quality rules and conventions
    • +
    • Development workflow guidance
    • +
    • Common pitfalls and anti-patterns
    • +
    • Project-specific patterns and utilities
    • +
    +

    Important: When proposing changes to patterns or conventions, always update AGENTS.md to keep AI guidance consistent.

    +

    AI-Assisted Development​

    +

    This integration is developed with extensive AI assistance (GitHub Copilot, Claude, and other AI tools). The AI handles:

    +
      +
    • Pattern Recognition: Understanding and applying Home Assistant best practices
    • +
    • Code Generation: Implementing features with proper type hints, error handling, and documentation
    • +
    • Refactoring: Maintaining consistency across the codebase during structural changes
    • +
    • Translation Management: Keeping 5 language files synchronized
    • +
    • Documentation: Generating and maintaining comprehensive documentation
    • +
    +

    Quality Assurance:

    +
      +
    • Automated linting with Ruff (120-char line length, max complexity 25)
    • +
    • Home Assistant's type checking and validation
    • +
    • Real-world testing in development environment
    • +
    • Code review by maintainer before merging
    • +
    +

    Benefits:

    +
      +
    • Rapid feature development while maintaining quality
    • +
    • Consistent code patterns across all modules
    • +
    • Comprehensive documentation maintained alongside code
    • +
    • Quick bug fixes with proper understanding of context
    • +
    +

    Limitations:

    +
      +
    • AI may occasionally miss edge cases or subtle bugs
    • +
    • Some complex Home Assistant patterns may need human review
    • +
    • Translation quality depends on AI's understanding of target language
    • +
    • User feedback is crucial for discovering real-world issues
    • +
    +

    If you're working with AI tools on this project, the AGENTS.md file provides the context and patterns that ensure consistency.

    +

    πŸš€ Quick Start for Contributors​

    +
      +
    1. Fork and clone the repository
    2. +
    3. Open in DevContainer (VS Code: "Reopen in Container")
    4. +
    5. Run setup: ./scripts/setup/setup (happens automatically via postCreateCommand)
    6. +
    7. Start development environment: ./scripts/develop
    8. +
    9. Make your changes following the Coding Guidelines
    10. +
    11. Run linting: ./scripts/lint
    12. +
    13. Validate integration: ./scripts/release/hassfest
    14. +
    15. Test your changes in the running Home Assistant instance
    16. +
    17. Commit using Conventional Commits format
    18. +
    19. Open a Pull Request with clear description
    20. +
    +

    πŸ› οΈ Development Tools​

    +

    The project includes several helper scripts in ./scripts/:

    +
      +
    • bootstrap - Initial setup of dependencies
    • +
    • develop - Start Home Assistant in debug mode (auto-cleans .egg-info)
    • +
    • clean - Remove build artifacts and caches
    • +
    • lint - Auto-fix code issues with ruff
    • +
    • lint-check - Check code without modifications (CI mode)
    • +
    • hassfest - Validate integration structure (JSON, Python syntax, required files)
    • +
    • setup - Install development tools (git-cliff, @github/copilot)
    • +
    • prepare-release - Prepare a new release (bump version, create tag)
    • +
    • generate-release-notes - Generate release notes from commits
    • +
    +

    πŸ“¦ Project Structure​

    +
    custom_components/tibber_prices/
    β”œβ”€β”€ __init__.py # Integration setup
    β”œβ”€β”€ coordinator.py # Data update coordinator with caching
    β”œβ”€β”€ api.py # Tibber GraphQL API client
    β”œβ”€β”€ price_utils.py # Price enrichment functions
    β”œβ”€β”€ average_utils.py # Average calculation utilities
    β”œβ”€β”€ sensor/ # Sensor platform (package)
    β”‚ β”œβ”€β”€ __init__.py # Platform setup
    β”‚ β”œβ”€β”€ core.py # TibberPricesSensor class
    β”‚ β”œβ”€β”€ definitions.py # Entity descriptions
    β”‚ β”œβ”€β”€ helpers.py # Pure helper functions
    β”‚ └── attributes.py # Attribute builders
    β”œβ”€β”€ binary_sensor.py # Binary sensor platform
    β”œβ”€β”€ entity_utils/ # Shared entity helpers
    β”‚ β”œβ”€β”€ icons.py # Icon mapping logic
    β”‚ β”œβ”€β”€ colors.py # Color mapping logic
    β”‚ └── attributes.py # Common attribute builders
    β”œβ”€β”€ services.py # Custom services
    β”œβ”€β”€ config_flow.py # UI configuration flow
    β”œβ”€β”€ const.py # Constants and helpers
    β”œβ”€β”€ translations/ # Standard HA translations
    └── custom_translations/ # Extended translations (descriptions)
    +

    πŸ” Key Concepts​

    +

    DataUpdateCoordinator Pattern:

    +
      +
    • Centralized data fetching and caching
    • +
    • Automatic entity updates on data changes
    • +
    • Persistent storage via Store
    • +
    • Quarter-hour boundary refresh scheduling
    • +
    +

    Price Data Enrichment:

    +
      +
    • Raw API data is enriched with statistical analysis
    • +
    • Trailing/leading 24h averages calculated per interval
    • +
    • Price differences and ratings added
    • +
    • All via pure functions in price_utils.py
    • +
    +

    Translation System:

    +
      +
    • Dual system: /translations/ (HA schema) + /custom_translations/ (extended)
    • +
    • Both must stay in sync across all languages (de, en, nb, nl, sv)
    • +
    • Async loading at integration setup
    • +
    +

    πŸ§ͺ Testing​

    +
    # Validate integration structure
    ./scripts/release/hassfest

    # Run all tests
    pytest tests/

    # Run specific test file
    pytest tests/test_coordinator.py

    # Run with coverage
    pytest --cov=custom_components.tibber_prices tests/
    +

    πŸ“ Documentation Standards​

    +
      +
    • User-facing docs go in docs/user/
    • +
    • Developer docs go in docs/development/
    • +
    • AI guidance goes in AGENTS.md
    • +
    • Use clear examples and code snippets
    • +
    • Keep docs up-to-date with code changes
    • +
    +

    🀝 Contributing​

    +

    See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and pull request process.

    +

    πŸ“„ License​

    +

    This project is licensed under the Apache License 2.0.

    +
    +

    Note: This documentation is for developers. End users should refer to the User Documentation.

    + + \ No newline at end of file diff --git a/developer/lunr-index-1764985317891.json b/developer/lunr-index-1764985317891.json new file mode 100644 index 0000000..56d3ae7 --- /dev/null +++ b/developer/lunr-index-1764985317891.json @@ -0,0 +1 @@ +{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,418.536,1,799.862]],["content/0",[]],["keywords/0",[]],["title/1",[0,418.536,2,1030.533]],["content/1",[3,12.24,4,10.287,5,12.24,6,12.24,7,12.24,8,12.24,9,7.351,10,11.062,11,10.287,12,12.24,13,7.543,14,8.529,15,12.24,16,7.984,17,11.062,18,5.01,19,6.855,20,5.996,21,8.529,22,1.341,23,6.855,24,6.21,25,5.996,26,9.707,27,6.326,28,4.698,29,6.101]],["keywords/1",[]],["title/2",[30,926.119,31,799.862]],["content/2",[]],["keywords/2",[]],["title/3",[30,926.119,32,825.556]],["content/3",[19,2.926,22,1.408,28,3.277,30,8.178,32,13.295,33,10.828,34,5.438,35,16.289,36,2.559,37,2.604,38,3.309,39,3.137,40,3.407,41,3.517,42,3.517,43,5.224,44,4.721,45,4.721,46,5.748,47,3.517,48,5.224,49,8.538,50,4.721,51,3.309,52,3.309,53,5.224,54,4.721,55,5.224,56,1.844,57,2.138,58,5.224,59,5.224,60,8.538,61,1.844,62,5.224,63,12.505,64,4.782,65,9.1,66,6.18,67,9.978,68,5.224,69,5.224,70,5.224,71,3.781,72,3.781,73,5.224,74,4.39,75,2.991,76,2.864,77,3.277,78,5.224,79,5.224,80,5.224,81,5.224,82,5.004,83,5.224,84,2.806,85,4.497,86,3.781,87,2.991,88,3.781,89,3.407,90,4.721,91,5.224,92,3.517,93,3.309,94,5.224,95,5.224,96,2.516,97,2.361,98,2.083,99,5.224,100,5.224,101,5.224,102,4.39,103,5.224,104,5.224,105,2.752,106,2.65,107,3.407,108,2.752,109,3.781,110,2.167,111,4.721]],["keywords/3",[]],["title/4",[112,672.328,113,1108.262]],["content/4",[16,10.041,61,5.436,114,15.394,115,9.245,116,8.44,117,15.394,118,15.394,119,12.937,120,15.394,121,15.394]],["keywords/4",[]],["title/5",[122,672.328,123,459.259]],["content/5",[]],["keywords/5",[]],["title/6",[124,459.259,125,633.736]],["content/6",[22,1.64,34,4.44,112,7.292,126,8.675,127,16.949,128,16.949,129,13.3,130,16.949,131,13.3,132,13.3,133,13.3,134,5.518,135,12.02,136,10.045,137,13.3]],["keywords/6",[]],["title/7",[138,633.736,139,590.633]],["content/7",[22,1.304,140,11.795,141,15.618,142,11.857,143,14.115,144,16.918,145,15.618]],["keywords/7",[]],["title/8",[146,353.305,147,317.926,148,536.951]],["content/8",[1,9.01,22,1.45,61,4.877,106,7.008,107,9.01,108,7.275,112,7.573,126,9.01,147,4.15,148,8.808,149,9.299,150,13.813,151,17.359,152,13.813,153,7.909]],["keywords/8",[]],["title/9",[154,972.476,155,776.741]],["content/9",[]],["keywords/9",[]],["title/10",[156,1030.533,157,581.006]],["content/10",[]],["keywords/10",[]],["title/11",[158,1317.373]],["content/11",[0,5.573,159,16.329,160,12.95,161,11.819,162,16.329,163,16.329]],["keywords/11",[]],["title/12",[164,1030.533,165,972.476]],["content/12",[164,14.357,165,10.68,166,12.171,167,13.467,168,6.712,169,13.467,170,12.171,171,12.171,172,10.68,173,7.234,174,13.467,175,12.171,176,11.317,177,12.171,178,9.384,179,8.784,180,8.53,181,13.467,182,6.712]],["keywords/12",[]],["title/13",[183,590.633,184,658.735]],["content/13",[]],["keywords/13",[]],["title/14",[185,321.195,186,493.439,187,889.361]],["content/14",[0,4.275,22,1.046,30,12.315,97,5.662,168,8.127,187,10.526,188,16.306,189,12.315,190,12.525,191,9.557,192,12.525,193,11.32,194,7.934,195,5.496,196,12.525,197,8.728,198,12.525,199,12.525,200,11.32,201,3.474,202,9.065]],["keywords/14",[]],["title/15",[203,331.334,204,765.946,205,391.598]],["content/15",[0,5.651,1,8.365,4,10.777,18,6.777,21,8.936,22,1.531,23,7.182,24,6.507,116,7.031,201,3.557,206,11.59,207,9.282,208,6.055,209,12.824,210,11.59,211,12.824,212,8.123,213,10.17]],["keywords/15",[]],["title/16",[201,293.546,214,361.201,215,605.987]],["content/16",[22,1.324,28,6.083,134,6.575,139,7.633,157,7.509,216,11.043,217,11.043,218,14.323]],["keywords/16",[]],["title/17",[201,293.546,219,546.922,220,799.251]],["content/17",[18,4.69,22,1.699,56,4.046,191,6.715,195,6.746,201,4.813,213,9.086,221,6.282,222,11.458,223,6.417,224,5.711,225,11.458,226,10.355,227,11.458,228,11.458,229,10.355,230,10.355,231,8.61,232,11.458,233,13.894,234,11.458,235,11.458,236,9.629]],["keywords/17",[]],["title/18",[20,518.392,205,391.598,237,493.439]],["content/18",[0,3.114,20,7.527,22,0.762,31,5.952,97,4.125,116,5.003,146,3.046,147,3.942,168,6.54,195,5.758,197,6.358,200,8.246,201,2.531,207,6.604,214,3.114,221,9.213,238,6.891,239,9.125,240,10.345,241,9.911,242,7.281,243,5.623,244,4.395,245,7.668,246,5.78,247,5.952,248,8.246,249,6.604,250,5.758,251,6.891,252,8.246,253,7.236,254,9.125,255,9.125,256,9.125,257,9.125,258,8.246,259,9.125,260,8.246,261,6.891,262,6.891,263,9.125,264,9.125,265,9.125]],["keywords/18",[]],["title/19",[186,433.988,266,673.662,267,558.999,268,702.954]],["content/19",[30,11.795,168,7.784,172,12.386,187,13.125,267,9.38,269,9.625,270,12.386,271,10.883,272,8.39]],["keywords/19",[]],["title/20",[1,690.289,270,839.258,271,737.417]],["content/20",[]],["keywords/20",[]],["title/21",[268,926.119,273,825.556]],["content/21",[22,1.765,25,4.627,36,4.627,37,4.707,82,7.883,116,5.178,191,5.536,193,8.536,194,9.923,201,4.345,205,4.977,208,3.119,212,5.983,246,5.983,274,9.445,275,7.133,276,5.983,277,8.536,278,6.581,279,8.536,280,5.074,281,8.536,282,7.937,283,7.49,284,4.627,285,5.29,286,5.074,287,8.536,288,9.445,289,6.836,290,8.536,291,7.49,292,5.983,293,6.359,294,9.445]],["keywords/21",[]],["title/22",[268,926.119,295,1030.533]],["content/22",[0,5.402,1,7.806,19,6.703,20,7.752,21,8.339,31,7.806,82,10.392,97,5.41,107,7.806,110,4.965,116,6.562,123,4.482,201,3.32,205,4.428,207,11.454,208,5.856,210,10.816,212,7.581,213,9.491,296,11.968,297,5.007,298,8.339]],["keywords/22",[]],["title/23",[299,825.556,300,702.177]],["content/23",[18,5.96,22,1.216,65,12.236,208,4.808,214,4.97,299,9.803,301,9.803,302,14.561,303,14.561,304,14.561,305,10.538,306,14.561,307,10.538,308,13.159]],["keywords/23",[]],["title/24",[0,361.201,299,712.464,309,839.258]],["content/24",[]],["keywords/24",[]],["title/25",[299,825.556,310,1108.262]],["content/25",[0,3.713,9,6.533,13,6.704,22,1.24,39,6.533,75,6.229,93,6.891,96,5.24,123,4.074,195,4.774,201,3.017,205,4.025,268,8.216,291,8.627,311,6.891,312,5.73,313,9.831,314,10.878,315,10.878,316,9.831,317,10.878,318,8.627,319,9.142,320,10.878,321,9.831,322,10.878,323,8.627,324,8.627,325,7.873,326,10.878,327,10.878,328,10.878,329,10.878,330,10.878,331,5.519,332,10.878,333,10.878,334,8.216]],["keywords/25",[]],["title/26",[305,887.528,335,1226.268]],["content/26",[0,4.776,20,6.854,24,7.099,202,10.127,305,10.127,336,10.567,337,12.646,338,12.646,339,12.646,340,13.992,341,10.567,342,13.992,343,12.646,344,12.646,345,13.992,346,12.646,347,13.992]],["keywords/26",[]],["title/27",[25,518.392,348,670.336,349,518.392]],["content/27",[19,7.358,25,9.085,39,7.89,157,6.225,202,9.508,307,9.508,311,10.652,316,11.873,349,6.435,350,11.321,351,13.138,352,13.138,353,13.138,354,9.922,355,13.138,356,13.138,357,9.922,358,9.922]],["keywords/27",[]],["title/28",[359,1457.646]],["content/28",[0,3.996,1,7.636,2,9.839,22,1.303,25,5.735,155,7.416,178,8.158,191,6.861,197,8.158,220,8.842,271,8.158,272,6.289,293,7.882,339,10.581,341,8.842,349,5.735,360,11.707,361,11.707,362,11.707,363,7.031,364,10.581,365,11.707,366,11.707,367,11.707,368,11.707,369,7.031,370,11.707,371,11.707,372,11.707,373,6.861,374,6.05]],["keywords/28",[]],["title/29",[375,898.32]],["content/29",[]],["keywords/29",[]],["title/30",[147,279.621,376,1118.629,377,545.505]],["content/30",[]],["keywords/30",[]],["title/31",[194,776.741,377,718.685]],["content/31",[22,1.427,27,4.26,28,1.921,56,5.119,57,3.374,76,5.763,82,4.831,89,3.265,108,2.636,134,2.076,139,2.411,140,3.78,146,4.84,147,4.355,148,6.837,149,3.37,180,3.17,186,2.334,195,2.196,208,2.722,217,3.488,242,3.906,244,2.411,297,3.325,350,3.37,369,3.006,378,5.005,379,3.622,380,5.005,381,5.08,382,6.856,383,2.411,384,2.076,385,2.587,386,2.495,387,5.763,388,5.005,389,4.206,390,5.222,391,4.907,392,5.005,393,8.244,394,3.622,395,3.622,396,2.803,397,3.78,398,5.005,399,3.78,400,5.005,401,3.085,402,5.005,403,4.52,404,5.005,405,2.371,406,4.206,407,4.523,408,3.125,409,3.37,410,3.969,411,5.005,412,4.72,413,5.005,414,3.265,415,2.587,416,4.523,417,3.622,418,3.397,419,5.005,420,5.005,421,7.719,422,4.523,423,3.78,424,5.005,425,3.488,426,3.622,427,5.005,428,3.78,429,5.005,430,3.78,431,3.37,432,4.523,433,5.005,434,4.523,435,5.005,436,2.933,437,4.523,438,2.587,439,5.005,440,4.951,441,3.17,442,4.206,443,5.005]],["keywords/31",[]],["title/32",[375,755.726,391,343.49]],["content/32",[]],["keywords/32",[]],["title/33",[444,1155.968]],["content/33",[22,0.719,28,3.306,34,2.875,56,4.444,134,3.573,138,4.451,146,2.875,182,6.272,205,4.657,237,4.016,250,3.779,391,5.257,401,5.308,403,4.722,405,4.081,409,5.798,418,2.784,421,5.456,445,5.173,446,10.576,447,5.048,448,4.627,449,5.456,450,5.798,451,8.613,452,7.238,453,10.45,454,4.148,455,6.83,456,6.002,457,7.238,458,7.238,459,5.293,460,6.505,461,8.613,462,6.505,463,7.784,464,4.824,465,6.83,466,6.505,467,7.238,468,8.613,469,5.048,470,7.784,471,7.784,472,4.219,473,6.83,474,5.618,475,6.002,476,7.238]],["keywords/33",[]],["title/34",[56,432.979,391,343.49]],["content/34",[105,7.567,106,7.289,391,5.413,405,6.807,445,8.628,477,7.717,478,12.984,479,12.984,480,11.393,481,12.073,482,7.877,483,8.046,484,8.42]],["keywords/34",[]],["title/35",[441,776.741,485,926.119]],["content/35",[]],["keywords/35",[]],["title/36",[485,926.119,486,1108.262]],["content/36",[56,3.091,57,3.583,77,3.36,89,5.709,124,3.278,125,4.524,146,5.502,147,2.63,148,4.441,242,7.111,297,2.769,373,5.13,381,5.394,382,9.79,389,7.356,391,2.452,395,6.335,396,4.902,397,6.611,403,4.799,408,4.828,412,5.012,414,8.306,415,4.524,418,4.851,426,9.216,462,6.611,466,6.611,485,6.611,487,8.753,488,7.911,489,6.611,490,4.902,491,5.13,492,7.911,493,7.356,494,6.335,495,5.394,496,6.335,497,5.394,498,4.216,499,6.942,500,5.394,501,6.611,502,8.753,503,8.753,504,5.893,505,7.356,506,8.753,507,8.753,508,8.753]],["keywords/36",[]],["title/37",[123,348.592,242,441.002,375,573.62,408,352.869]],["content/37",[9,3.551,13,3.644,22,0.788,32,3.981,34,1.974,56,3.332,57,2.42,64,3.312,66,4.28,67,4.28,75,3.386,77,2.27,86,4.28,87,3.386,96,2.848,105,3.115,123,3.534,125,3.056,146,3.151,173,3.177,221,5.174,237,2.757,240,3.981,241,4.466,242,5.58,247,6.156,379,4.28,382,3.857,408,6.669,409,3.981,410,4.689,418,1.911,426,4.28,438,3.056,485,4.466,490,5.285,509,4.466,510,6.576,511,4.689,512,5.913,513,4.466,514,9.437,515,3.857,516,5.913,517,8.529,518,5.913,519,5.344,520,6.576,521,9.437,522,5.344,523,5.913,524,3,525,5.913,526,8.529,527,5.344,528,5.913,529,5.344,530,4.969,531,5.344,532,5.913,533,5.913,534,5.913,535,5.913,536,5.344,537,5.344,538,5.913,539,5.344,540,4.28,541,4.466,542,5.913,543,5.913,544,5.344,545,5.913,546,4.332,547,5.913,548,5.344,549,5.913,550,5.344,551,2.673,552,4.969,553,5.913,554,5.913,555,5.913,556,4.689,557,5.913,558,5.913,559,5.913,560,5.344,561,3.981,562,5.913,563,3.981,564,4.466,565,5.913,566,5.913,567,5.913,568,5.344,569,5.913,570,4.969]],["keywords/37",[]],["title/38",[64,686.771,540,887.528]],["content/38",[57,5.01,77,4.698,138,8.301,139,5.896,148,6.21,334,9.244,391,3.429,408,6.09,409,8.241,410,9.707,414,7.984,415,6.326,456,8.529,490,6.855,497,9.899,539,11.062,540,13.777,571,12.24,572,10.287,573,12.24,574,11.062,575,12.24]],["keywords/38",[]],["title/39",[123,459.259,477,658.735]],["content/39",[]],["keywords/39",[]],["title/40",[138,481.026,185,282.496,576,841.206,577,607.121]],["content/40",[28,4.982,38,8.221,57,5.313,64,7.269,75,7.432,134,5.384,138,8.623,139,6.251,194,8.221,369,7.795,387,7.116,391,3.636,578,11.73,579,12.979,580,11.73,581,11.73,582,11.73,583,10.293,584,7.999,585,12.979,586,12.979,587,12.979]],["keywords/40",[]],["title/41",[146,310.737,147,279.621,148,472.257,203,291.414]],["content/41",[22,1.739,61,3.195,146,3.021,148,4.591,153,5.181,269,5.576,387,4.961,396,5.067,409,6.091,416,8.177,436,5.303,464,5.067,497,5.576,546,4.153,572,10.961,588,8.177,589,9.048,590,11.788,591,13.043,592,8.038,593,13.043,594,11.788,595,13.043,596,11.788,597,13.822,598,9.048,599,9.048,600,12.853,601,11.788,602,9.048,603,9.048,604,9.048,605,7.175,606,8.177]],["keywords/41",[]],["title/42",[214,317.682,244,448.309,436,545.505,607,841.206]],["content/42",[22,0.951,34,2.513,56,2.658,61,4.02,85,5.997,89,8.957,98,3.001,124,2.819,125,3.89,134,5.697,146,2.513,147,2.261,195,3.303,203,2.357,231,4.216,242,3.567,243,7.017,297,4.345,331,3.819,383,3.626,384,4.723,385,5.884,386,6.844,387,4.127,401,4.639,437,6.803,494,5.448,495,8.463,496,5.448,546,5.226,608,9.029,609,7.528,610,7.528,611,6.803,612,3.89,613,5.448,614,6.803,615,7.528,616,7.528,617,6.803,618,5.685,619,7.528,620,5.97,621,6.803,622,7.528,623,10.29,624,6.803,625,10.29,626,7.528,627,6.803,628,5.685,629,6.803,630,5.97,631,2.658,632,5.068,633,5.97,634,5.685,635,4.639,636,5.97,637,9.029,638,6.803,639,6.326]],["keywords/42",[]],["title/43",[123,311.108,219,429.302,242,393.582,379,601.224,408,314.925]],["content/43",[0,2.282,22,0.868,56,2.36,57,4.255,66,4.839,72,4.839,74,5.618,86,4.839,87,3.828,96,3.22,105,5.475,116,6.993,123,2.504,125,3.455,173,3.591,221,5.699,237,3.117,242,4.925,244,3.22,247,4.361,358,5.049,391,1.873,408,6.255,410,5.302,432,6.042,441,4.235,477,3.591,485,5.049,490,5.822,499,8.244,500,4.12,510,7.243,511,5.302,513,5.049,517,6.042,519,6.042,522,6.042,524,3.392,526,6.042,527,6.042,530,5.618,544,6.042,546,4.772,548,9.395,550,6.042,551,3.022,561,4.501,568,6.042,570,5.618,583,5.302,640,6.042,641,7.851,642,6.685,643,6.685,644,6.685,645,6.685,646,6.685,647,6.685,648,6.685,649,6.042,650,6.042,651,6.685,652,4.235,653,5.302,654,5.049,655,6.042,656,6.685,657,6.685,658,10.395,659,6.685,660,5.302,661,6.685,662,6.685,663,3.918,664,6.685,665,6.042,666,6.685,667,6.685,668,4.839,669,6.685,670,6.685,671,6.685]],["keywords/43",[]],["title/44",[448,658.735,672,1030.533]],["content/44",[]],["keywords/44",[]],["title/45",[61,373.666,438,546.922,563,712.464]],["content/45",[61,6.281,185,4.36,203,4.498,331,7.289,384,5.96,391,5.413,673,9.371,674,17.79,675,14.366,676,14.366,677,12.984]],["keywords/45",[]],["title/46",[447,718.685,678,854.47]],["content/46",[29,6.101,56,4.322,67,8.859,112,6.711,139,5.896,208,4.042,276,7.753,384,5.078,391,4.499,418,5.191,425,8.529,447,9.414,449,7.753,459,5.148,462,9.244,679,12.24,680,10.287,681,11.062,682,8.15,683,10.287,684,12.24,685,8.241,686,6.855,687,11.062]],["keywords/46",[]],["title/47",[584,755.726,688,562.878]],["content/47",[22,1.404,56,5.938,185,3.987,203,4.113,369,7.89,391,3.68,465,10.419,471,11.873,472,8.237,473,10.419,474,8.569,476,11.041,563,8.845,689,13.138,690,13.138,691,13.138,692,10.419,693,10.419,694,9.154]],["keywords/47",[]],["title/48",[97,554.322,293,825.556]],["content/48",[56,4.226,108,6.304,155,10.025,183,7.623,184,6.429,201,3.32,214,4.085,373,7.014,374,6.185,375,7.376,391,3.352,405,5.67,445,7.188,482,6.562,483,6.703,484,7.014,495,7.376,577,7.806,631,5.588,695,10.816,696,11.968,697,9.039,698,11.968,699,11.968,700,11.968,701,6.853,702,6.853]],["keywords/48",[]],["title/49",[391,343.49,484,718.685]],["content/49",[]],["keywords/49",[]],["title/50",[444,1155.968]],["content/50",[28,4.262,34,3.707,61,3.92,134,6.244,146,3.707,147,4.522,205,4.108,219,5.738,244,5.348,390,7.033,391,5.359,408,4.209,412,6.358,446,9.331,450,7.475,453,10.255,459,6.33,688,7.838,703,11.103,704,5.964,705,6.668,706,11.103,707,9.331,708,11.103,709,10.034,710,11.103]],["keywords/50",[]],["title/51",[61,293.306,147,249.554,185,252.12,390,526.176,391,232.685]],["content/51",[19,2.856,22,1.436,27,4.327,36,2.498,41,3.433,56,1.801,61,2.956,76,4.59,110,2.116,124,1.91,134,5.113,139,4.032,142,3.23,146,4.544,147,5.02,148,2.588,180,3.23,191,2.989,195,2.238,203,1.597,208,2.765,215,2.92,224,4.173,244,2.456,250,2.238,297,2.649,312,2.686,383,4.032,386,2.542,387,2.796,390,3.23,391,3.813,396,5.964,397,3.852,399,3.852,401,6.563,405,2.416,438,2.636,449,3.23,450,3.433,452,7.036,453,5.028,454,4.032,472,2.498,546,4.888,551,4.814,631,1.801,652,3.23,685,3.433,704,2.74,705,5.028,711,5.1,712,6.059,713,4.045,714,5.1,715,3.852,716,4.286,717,5.1,718,4.286,719,5.1,720,4.286,721,5.1,722,3.852,723,4.794,724,4.045,725,5.1,726,4.609,727,2.92,728,5.1,729,5.1,730,5.1,731,3.621,732,6.396,733,5.1,734,4.609,735,5.1,736,5.1,737,5.1,738,5.1,739,4.286,740,4.045,741,5.1,742,3.143,743,5.1,744,4.609,745,3.852,746,3.063,747,3.691,748,5.1,749,4.609,750,4.609,751,4.286,752,3.691,753,5.1,754,5.1,755,3.143,756,5.1,757,4.609]],["keywords/51",[]],["title/52",[138,546.922,203,331.334,391,296.436]],["content/52",[22,1.091,28,2.665,38,4.399,39,4.171,47,4.675,57,6.492,77,5.014,123,2.601,124,2.601,134,2.881,138,6.752,139,5.156,143,6.276,144,9.675,147,2.086,194,9.3,217,10.23,244,3.345,247,6.983,297,2.197,309,5.507,363,4.171,369,4.171,377,4.07,384,2.881,391,4.113,405,3.29,449,4.399,450,4.675,453,4.171,456,4.839,459,2.921,472,5.244,524,3.523,578,6.276,581,6.276,582,6.276,584,4.28,654,5.245,663,4.07,688,3.188,704,3.73,707,5.836,752,5.026,755,4.28,758,5.836,759,6.276,760,6.944,761,9.675,762,5.026,763,6.276,764,6.944,765,3.807,766,4.675,767,6.944,768,4.399,769,6.276,770,6.276,771,6.944,772,5.507,773,4.675,774,7.748,775,9.456,776,7.207,777,6.944,778,5.507,779,5.507]],["keywords/52",[]],["title/53",[214,317.682,391,260.72,459,391.456,709,841.206]],["content/53",[39,8.403,56,4.94,297,4.427,384,5.805,385,7.231,391,3.919,438,7.231,449,8.863,462,10.567,466,10.567,472,6.854,473,11.096,612,7.231,704,7.516,715,10.567,780,9.75,781,13.992]],["keywords/53",[]],["title/54",[391,296.436,459,445.081,782,839.258]],["content/54",[22,1.648,384,5.587,459,5.664,686,7.542,715,10.17,783,13.467,784,13.467,785,17.083,786,10.17,787,13.467,788,13.467,789,13.467,790,13.467,791,13.467,792,13.467,793,9.384]],["keywords/54",[]],["title/55",[391,296.436,459,445.081,794,956.442]],["content/55",[19,4.019,22,1.56,27,3.709,28,2.754,34,2.396,52,4.545,56,2.534,116,3.934,124,2.688,142,4.545,185,2.178,205,4.063,208,2.37,223,4.019,224,3.577,249,5.194,250,3.149,297,4.726,331,3.641,346,6.485,350,4.831,386,3.577,391,3.735,403,3.934,405,3.4,408,2.721,418,2.319,430,5.42,448,3.855,450,4.831,453,4.31,459,3.018,472,7.317,483,4.019,612,3.709,663,4.206,677,6.485,692,5.691,731,3.104,732,4.31,752,5.194,765,3.934,773,4.831,795,7.176,796,10.979,797,9.922,798,10.979,799,9.922,800,10.979,801,6.766,802,7.176,803,6.031,804,7.176,805,5,806,6.485,807,5.691,808,6.485,809,7.176,810,7.176,811,7.176,812,9.226,813,7.176,814,7.176,815,6.031,816,6.485,817,6.485]],["keywords/55",[]],["title/56",[219,481.026,391,260.72,408,352.869,418,300.809]],["content/56",[22,1.673,39,4.336,47,2.875,56,1.508,105,2.249,124,2.704,146,4.468,147,4.282,153,2.445,182,2.128,195,3.168,205,4.563,214,1.457,219,2.207,224,2.128,244,2.057,249,3.09,262,3.225,297,2.284,386,2.128,387,2.341,391,3.993,405,2.023,408,4.675,414,2.785,415,2.207,418,4.326,421,5.941,425,5.031,448,2.294,449,2.705,450,2.875,453,2.564,454,3.477,459,5.629,460,3.225,462,3.225,472,2.092,477,2.294,496,3.09,498,3.477,546,5.063,663,2.502,678,2.975,680,3.588,685,2.875,704,2.294,731,1.847,732,5.633,739,3.588,746,2.564,747,3.09,752,3.09,768,2.705,803,3.588,818,4.27,819,2.875,820,5.225,821,6.525,822,4.27,823,4.27,824,4.27,825,3.588,826,4.27,827,4.27,828,4.27,829,4.27,830,4.27,831,4.27,832,4.27,833,3.859,834,4.27,835,4.27,836,3.859,837,3.588,838,4.27,839,2.166,840,4.27,841,2.785,842,4.27,843,3.123,844,3.859,845,4.27,846,4.27,847,4.27,848,1.771,849,4.27,850,6.525,851,4.27,852,7.22,853,3.386,854,7.22,855,4.27,856,7.883,857,2.502,858,2.564,859,3.859,860,4.27,861,3.859,862,3.859,863,3.225,864,3.225,865,4.27,866,3.859,867,3.588,868,4.27,869,3.859,870,3.859,871,3.588]],["keywords/56",[]],["title/57",[146,277.324,148,421.476,237,387.321,391,232.685,403,455.444]],["content/57",[22,1.569,39,4.091,41,4.586,56,2.405,85,3.588,125,6.671,146,5.248,147,4.366,148,7.976,153,3.901,205,2.521,208,2.25,297,2.155,373,3.993,375,4.198,391,4.071,408,3.999,412,3.901,418,5.373,421,4.315,449,4.315,454,3.281,459,4.436,464,3.815,465,5.402,466,5.145,472,3.337,481,5.725,483,3.815,509,5.145,510,4.747,563,4.586,688,3.127,692,5.402,693,5.402,694,7.35,704,3.66,705,4.091,723,3.901,782,5.402,794,6.157,805,4.747,817,9.533,837,5.725,871,5.725,872,5.402,873,3.815,874,6.157,875,6.812,876,6.157,877,6.812,878,6.812,879,4.586,880,6.812,881,6.812,882,4.931,883,6.812,884,6.812,885,6.812,886,6.812,887,6.812,888,6.812,889,6.157,890,4.586]],["keywords/57",[]],["title/58",[377,620.233,391,296.436,405,501.415]],["content/58",[]],["keywords/58",[]],["title/59",[205,307.382,250,364.519,377,486.847,459,349.363,765,455.444]],["content/59",[22,1.8,147,2.995,195,4.375,250,4.375,383,4.802,386,4.969,399,7.53,459,4.193,694,6.948,731,7.564,732,11.058,745,10.555,765,5.467,872,7.907,891,9.011,892,9.971,893,9.971,894,13.975,895,13.975,896,9.971,897,9.011,898,9.011,899,9.971]],["keywords/59",[]],["title/60",[454,448.309,551,420.748,723,532.975,900,930.776]],["content/60",[22,1.741,23,5.636,61,3.553,195,6.173,203,3.151,312,7.409,383,4.847,390,6.375,391,4.542,399,7.601,403,5.518,405,4.768,418,3.252,421,6.375,551,4.549,631,3.553,724,7.981,731,7.595,732,10.545,853,7.981,872,7.981,901,7.284,902,10.064,903,10.064,904,10.064,905,10.064,906,10.064]],["keywords/60",[]],["title/61",[147,279.621,746,558.999,747,673.662,861,841.206]],["content/61",[22,1.653,23,6.283,56,3.961,61,3.961,146,3.745,147,5.157,195,6.651,205,4.151,208,3.705,246,7.106,297,3.55,383,5.404,391,3.142,405,5.315,418,4.898,421,9.601,425,7.817,546,5.15,746,11.041,805,7.817,853,8.897,907,11.219,908,10.139]],["keywords/61",[]],["title/62",[56,432.979,391,343.49]],["content/62",[22,1.572,36,3.612,37,3.675,39,4.428,57,3.018,61,2.603,66,5.336,110,3.059,134,3.059,138,3.81,139,3.551,147,2.215,148,3.741,182,5.586,194,4.67,217,5.137,221,4.042,349,3.612,387,4.042,390,4.67,391,5.541,401,4.544,403,4.042,405,7.719,408,2.795,412,4.222,418,3.622,421,4.67,430,8.464,457,6.196,459,4.714,460,5.568,467,6.196,479,6.663,654,5.568,705,4.428,713,5.847,718,6.196,731,4.848,765,6.145,778,5.847,837,6.196,872,5.847,879,4.964,897,6.663,909,7.373,910,7.373,911,7.373,912,7.373,913,11.208,914,5.336,915,7.373,916,7.373,917,7.373,918,5.568,919,6.663]],["keywords/62",[]],["title/63",[448,658.735,672,1030.533]],["content/63",[]],["keywords/63",[]],["title/64",[205,391.598,685,712.464,920,765.946]],["content/64",[27,5.456,56,3.728,57,4.322,61,3.728,138,5.456,148,5.357,297,4.601,331,5.357,383,5.085,384,4.38,391,5.443,403,5.789,408,4.003,418,4.7,421,6.688,423,7.974,459,4.44,469,6.188,663,6.188,731,8.131,816,9.542,856,8.873,921,6.688,922,7.357,923,8.873,924,8.873,925,10.558,926,7.974,927,10.558,928,10.558,929,8.873]],["keywords/64",[]],["title/65",[454,590.633,723,702.177]],["content/65",[27,5.25,47,6.839,56,3.587,57,4.158,61,3.587,138,5.25,148,5.154,195,4.458,297,4.48,312,5.351,383,6.82,391,4.938,403,5.57,408,3.851,418,3.283,425,7.079,459,4.273,469,5.954,472,4.976,480,11.229,551,6.401,663,5.954,724,8.056,731,8.019,773,6.839,815,8.537,821,9.181,879,6.839,923,8.537,926,7.672,930,8.537,931,9.181,932,5.954,933,10.159,934,6.435]],["keywords/65",[]],["title/66",[205,453.758,459,515.73]],["content/66",[22,1.554,56,3.621,57,4.198,61,3.621,147,3.081,148,5.204,153,5.873,195,4.5,286,5.509,297,4.51,383,4.94,391,2.873,405,4.859,418,3.314,425,7.146,459,4.313,469,6.011,480,8.133,727,5.873,731,8.711,765,5.623,806,9.269,815,8.619,871,8.619,879,6.904,922,7.146,926,7.746,929,11.978,930,8.619,931,9.269,934,6.496,935,10.256]],["keywords/66",[]],["title/67",[936,1030.533,937,1108.262]],["content/67",[13,3.472,22,0.758,23,5.085,25,2.76,27,2.912,36,2.76,39,7.853,56,1.989,61,3.206,77,3.485,116,3.089,124,3.4,134,2.338,138,4.692,147,2.727,148,2.859,185,2.755,201,1.563,205,4.219,217,3.926,237,2.627,244,2.714,297,1.783,391,4.292,394,4.078,401,3.472,403,3.089,405,4.302,408,4.323,418,2.934,421,3.569,438,4.692,450,6.112,453,7.853,454,2.714,455,7.2,457,4.735,458,4.735,459,3.818,460,4.255,463,5.092,465,4.468,467,7.63,469,3.302,470,5.092,472,5.585,473,4.468,474,3.675,476,4.735,551,2.547,561,3.793,563,7.676,584,3.472,612,2.912,663,5.321,678,3.926,688,4.167,707,4.735,712,4.078,761,8.205,765,4.978,768,5.751,769,5.092,773,3.793,812,7.63,853,4.468,856,4.735,858,3.384,859,5.092,869,5.092,879,3.793,938,4.255,939,5.634,940,5.634,941,9.079,942,5.634,943,5.634,944,5.634,945,5.634,946,5.092,947,4.735,948,5.634,949,5.634,950,5.092,951,5.634,952,4.255,953,5.092,954,5.634,955,4.468,956,5.634]],["keywords/67",[]],["title/68",[25,518.392,391,296.436,957,493.439]],["content/68",[]],["keywords/68",[]],["title/69",[147,249.554,205,307.382,394,601.224,459,349.363,958,658.769]],["content/69",[24,7.008,56,4.877,106,7.008,208,4.561,386,6.884,438,7.138,641,10.432,803,11.608,808,12.483,891,12.483,959,13.813,960,13.813,961,13.813,962,13.813,963,13.813,964,9.299,965,9.997,966,13.813]],["keywords/69",[]],["title/70",[297,294.49,408,352.869,418,300.809,958,738.141]],["content/70",[24,6.282,75,7.09,147,4.862,173,8.694,205,5.988,208,4.089,246,7.843,262,9.351,299,8.335,391,3.468,418,4.001,421,10.251,682,6.282,833,11.19,898,11.19,967,8.627,968,12.381,969,12.381,970,11.19,971,12.381,972,12.381,973,12.381,974,12.381]],["keywords/70",[]],["title/71",[146,277.324,744,750.752,850,750.752,958,658.769,975,830.691]],["content/71",[24,7.099,208,5.779,312,7.37,490,7.836,631,6.179,682,7.099,723,8.012,901,10.127,918,10.567,976,13.992,977,13.992,978,13.992,979,12.646,980,13.992,981,13.992]],["keywords/71",[]],["title/72",[47,712.464,138,546.922,958,839.258]],["content/72",[24,6.833,28,5.169,77,6.557,93,8.53,134,5.587,138,8.829,208,4.447,401,8.299,438,6.96,477,7.234,758,11.317,770,12.171,879,9.066,982,13.467,983,13.467,984,13.467,985,8.784,986,11.317]],["keywords/72",[]],["title/73",[97,554.322,293,825.556]],["content/73",[108,7.467,147,4.259,183,6.828,375,8.737,454,6.828,495,8.737,577,11.509,631,6.23,701,8.118,702,8.118,987,14.177,988,12.812,989,9.878,990,14.177]],["keywords/73",[]],["title/74",[122,455.444,123,311.108,155,526.176,201,230.417,483,465.228]],["content/74",[]],["keywords/74",[]],["title/75",[22,88.379,122,580.226,201,293.546]],["content/75",[18,5.683,22,1.341,28,3.792,36,4.839,37,4.924,57,4.044,77,3.792,125,5.105,134,4.098,139,4.758,172,7.834,253,11.011,453,5.933,577,6.444,584,6.088,631,3.488,678,6.884,688,4.535,705,5.933,965,7.15,991,12.549,992,10.049,993,13.281,994,9.879,995,8.928,996,8.928,997,6.444,998,9.879,999,7.834,1000,9.879,1001,6.884,1002,11.669,1003,6.651,1004,9.879,1005,9.879,1006,8.302,1007,9.879,1008,7.834]],["keywords/75",[]],["title/76",[22,88.379,201,293.546,1009,799.251]],["content/76",[]],["keywords/76",[]],["title/77",[185,227.642,635,462.236,688,344.282,992,542.852,993,542.852,1010,489.231]],["content/77",[0,3.53,18,2.002,22,1.612,28,1.877,56,1.727,57,3.311,71,5.854,75,2.801,77,1.877,82,2.867,105,2.576,116,2.682,122,5.67,124,1.832,139,2.356,186,2.281,201,2.869,214,1.669,242,3.832,244,2.356,253,3.879,297,3.272,349,2.396,358,3.694,387,2.682,390,3.098,436,2.867,449,6.551,459,2.057,475,3.408,499,3.879,504,3.293,631,5.357,678,3.408,688,2.245,701,5.922,732,2.938,765,2.682,807,3.879,901,3.54,965,9.632,986,4.111,1001,11.466,1002,4.111,1003,8.959,1006,4.111,1010,9.897,1011,3.879,1012,4.891,1013,3.54,1014,8.089,1015,4.891,1016,4.891,1017,4.421,1018,4.891,1019,4.891,1020,4.891,1021,4.891,1022,4.891,1023,4.891,1024,4.891,1025,4.891,1026,4.891,1027,6.797,1028,4.891,1029,4.891,1030,4.891,1031,4.891,1032,4.421,1033,4.891,1034,8.202,1035,4.891,1036,4.891,1037,4.891,1038,3.408,1039,4.891,1040,4.891,1041,4.111,1042,4.891,1043,3.408,1044,4.891,1045,4.421,1046,4.891,1047,4.891,1048,8.089,1049,4.891,1050,4.891,1051,4.891,1052,4.891,1053,4.891,1054,4.891,1055,4.891,1056,4.891]],["keywords/77",[]],["title/78",[22,77.73,203,291.414,391,260.72,405,441.002]],["content/78",[0,3.224,22,1.611,34,3.153,56,3.335,77,3.625,122,5.178,146,3.153,201,2.62,241,10.158,242,4.475,250,4.145,297,2.988,312,4.975,391,5.253,394,6.836,405,6.373,408,3.581,418,4.347,426,6.836,449,5.983,459,7.179,466,7.133,556,7.49,765,5.178,782,7.49,1011,7.49,1057,9.445,1058,9.445,1059,9.445,1060,6.836,1061,9.445,1062,8.536,1063,9.445,1064,8.536,1065,9.445,1066,9.445,1067,9.445]],["keywords/78",[]],["title/79",[22,77.73,214,317.682,705,558.999,1010,607.121]],["content/79",[0,3.568,22,1.382,77,6.352,122,5.732,134,4.337,140,7.896,147,4.339,201,2.9,292,6.623,331,5.305,390,6.623,391,2.929,449,6.623,459,4.397,475,7.285,694,10.065,705,9.939,1002,8.786,1003,9.724,1011,8.291,1045,9.449,1060,7.567,1068,9.449,1069,10.455,1070,9.449,1071,10.455,1072,14.445,1073,13.054,1074,10.455,1075,10.455,1076,10.455,1077,10.455]],["keywords/79",[]],["title/80",[22,77.73,219,481.026,495,573.62,631,328.645]],["content/80",[22,1.389,42,9.79,46,9.79,52,6.688,57,4.322,77,4.052,122,5.789,201,2.929,244,5.085,280,5.672,297,3.34,349,5.172,436,6.188,448,5.672,495,8.962,631,6.638,723,6.046,844,13.143,879,9.79,965,10.525,1014,7.108,1060,7.641,1078,9.542,1079,10.558,1080,10.558,1081,10.558,1082,5.456,1083,8.873,1084,10.558,1085,10.558]],["keywords/80",[]],["title/81",[22,69.372,237,387.321,242,393.582,631,293.306,1086,658.769]],["content/81",[22,1.457,27,8.002,46,10.425,57,6.338,77,4.445,109,8.382,122,6.35,201,3.212,208,3.824,242,7.337,280,6.221,297,4.899,358,8.747,379,8.382,448,6.221,501,8.747,631,4.089,1086,9.184,1087,10.467,1088,11.581,1089,11.581,1090,11.581,1091,11.581,1092,11.581,1093,11.581,1094,11.581]],["keywords/81",[]],["title/82",[22,69.372,123,311.108,343,750.752,556,658.769,1095,698.098]],["content/82",[122,9.233,123,6.307,1096,13.356,1097,16.841]],["keywords/82",[]],["title/83",[223,521.281,266,673.662,373,545.505,1098,702.954]],["content/83",[18,4.081,22,1.347,54,9.011,85,5.252,110,5.798,123,3.734,125,5.153,147,2.995,185,3.026,201,2.766,203,4.375,275,13.207,278,9.738,391,2.793,513,7.53,531,9.011,630,7.907,682,5.059,705,5.988,727,5.709,742,6.145,766,6.712,778,7.907,779,7.907,873,5.584,901,7.216,1032,9.011,1034,7.907,1098,12.186,1099,7.53,1100,11.745,1101,9.971,1102,9.011,1103,9.971,1104,9.971,1105,6.504,1106,9.971]],["keywords/83",[]],["title/84",[61,328.645,1010,607.121,1107,930.776,1108,738.141]],["content/84",[0,4.596,22,1.427,34,4.496,85,7.093,140,10.17,182,6.712,195,5.909,284,6.597,334,10.17,373,7.892,515,8.784,873,7.542,1014,9.066,1108,13.548,1109,13.467,1110,13.467,1111,13.467,1112,13.467]],["keywords/84",[]],["title/85",[138,481.026,391,260.72,520,648.57,688,427.243]],["content/85",[0,4.275,22,1.604,25,6.136,85,6.597,237,5.84,278,8.728,331,6.355,391,4.568,415,6.473,455,9.933,456,8.728,458,10.526,688,5.749,758,10.526,759,11.32,873,7.015,879,8.432,1113,11.32,1114,6.729,1115,9.46,1116,12.525,1117,12.525]],["keywords/85",[]],["title/86",[28,318.838,29,414.023,56,293.306,147,249.554,1118,830.691]],["content/86",[22,1.654,29,5.161,85,5.454,109,7.494,125,5.351,148,5.254,201,2.872,216,7.215,217,9.998,229,12.967,242,4.906,286,5.562,331,5.254,349,5.072,387,7.867,415,5.351,454,4.987,477,5.562,491,6.069,546,4.753,723,5.929,873,5.799,876,9.358,997,6.754,1014,6.971,1119,8.212,1120,9.358,1121,10.355,1122,10.355,1123,10.355,1124,7.494,1125,9.358,1126,9.358,1127,10.355,1128,9.358]],["keywords/86",[]],["title/87",[382,607.121,441,589.571,688,427.243,1114,500.001]],["content/87",[0,5.695,28,4.982,85,6.836,124,4.861,134,5.384,182,6.469,382,8.466,441,12.33,472,6.358,515,8.466,873,7.269,1129,9.044,1130,10.293,1131,12.979,1132,12.979,1133,9.394,1134,12.979,1135,11.73,1136,12.979]],["keywords/87",[]],["title/88",[22,77.73,201,258.179,873,521.281,1137,702.954]],["content/88",[]],["keywords/88",[]],["title/89",[22,69.372,201,230.417,284,406.908,469,486.847,1138,658.769]],["content/89",[22,1.659,77,3.473,122,4.961,185,3.959,201,2.51,203,2.833,214,3.088,219,4.676,237,4.219,242,4.287,390,5.731,391,2.534,405,4.287,459,3.805,469,5.303,475,6.305,495,5.576,520,6.305,631,5.4,705,7.833,820,14.378,873,5.067,1009,6.833,1010,10.918,1086,7.175,1138,7.175,1139,9.048,1140,17.744,1141,9.048,1142,9.048,1143,8.177,1144,9.048]],["keywords/89",[]],["title/90",[22,77.73,284,455.934,1095,782.207,1096,738.141]],["content/90",[18,3.497,22,1.603,25,6.129,28,3.28,29,4.259,34,4.177,42,8.423,61,3.017,123,5.544,124,3.2,134,3.545,138,4.416,147,2.567,182,4.259,201,4.106,221,4.685,278,5.954,331,4.335,348,5.412,373,5.008,382,8.161,391,3.505,441,7.925,455,6.776,688,3.922,766,5.752,873,4.785,901,6.184,938,6.453,967,5.954,1009,6.453,1010,5.573,1096,6.776,1098,9.449,1099,6.453,1108,6.776,1113,7.722,1114,4.59,1115,6.453,1130,6.776,1145,8.545,1146,8.545,1147,6.453,1148,8.545,1149,7.722,1150,5.954,1151,7.722,1152,7.181]],["keywords/90",[]],["title/91",[22,88.379,183,509.723,873,592.691]],["content/91",[]],["keywords/91",[]],["title/92",[22,77.73,122,510.318,123,348.592,201,258.179]],["content/92",[22,0.833,25,6.846,42,6.712,46,6.712,71,7.216,123,3.734,147,4.198,180,6.316,201,2.766,242,4.724,297,4.422,318,7.907,349,6.846,391,2.793,394,7.216,405,4.724,459,4.193,475,6.948,495,6.145,509,7.53,631,5.697,635,6.145,688,4.577,694,6.948,705,5.988,991,9.011,993,11.678,1001,9.738,1003,6.712,1010,6.504,1014,9.408,1034,7.907,1073,9.011,1086,7.907,1098,7.53,1138,7.907,1153,9.011,1154,9.971]],["keywords/92",[]],["title/93",[22,77.73,201,258.179,765,510.318,1095,782.207]],["content/93",[28,5.818,29,5.592,122,6.151,123,5.677,182,5.592,201,4.204,223,6.283,275,8.473,280,6.027,286,6.027,373,6.575,441,9.601,454,5.404,515,7.318,600,9.428,632,7.553,688,5.15,901,8.12,992,8.12,993,8.12,1096,8.897,1098,8.473,1099,8.473,1129,7.817,1137,8.473,1155,11.219,1156,11.219,1157,10.139,1158,11.219,1159,11.219,1160,10.139,1161,7.817]],["keywords/93",[]],["title/94",[18,433.175,22,88.379,201,293.546]],["content/94",[18,5.645,22,1.698,28,2.91,36,3.713,37,3.778,52,4.802,116,4.156,122,4.156,123,2.839,124,2.839,134,4.749,146,2.531,157,3.592,179,4.945,185,3.474,201,4.81,203,2.373,208,2.503,212,4.802,213,10.936,214,2.587,216,5.282,219,3.918,236,9.619,252,6.851,253,6.012,286,4.072,396,4.246,688,3.48,693,6.012,762,5.487,986,9.619,992,5.487,993,5.487,995,10.345,996,6.851,1010,4.945,1011,9.077,1068,6.851,1078,6.851,1087,6.851,1137,5.725,1138,6.012,1162,6.371,1163,7.581,1164,7.581,1165,7.581,1166,6.371,1167,5.487,1168,6.851,1169,7.581,1170,7.581,1171,6.851,1172,6.851]],["keywords/94",[]],["title/95",[22,102.407,701,702.177]],["content/95",[36,7.331,37,7.459,123,5.605,839,7.593,1010,9.762,1173,18.243,1174,14.966,1175,10.832,1176,14.966,1177,10.075,1178,14.966]],["keywords/95",[]],["title/96",[61,432.979,701,702.177]],["content/96",[]],["keywords/96",[]],["title/97",[397,926.119,505,1030.533]],["content/97",[1179,16.085,1180,16.085,1181,16.085,1182,16.085,1183,12.756,1184,16.085,1185,16.085]],["keywords/97",[]],["title/98",[34,409.386,395,887.528]],["content/98",[]],["keywords/98",[]],["title/99",[147,317.926,250,464.389,395,765.946]],["content/99",[22,1.815,36,7.172,85,5.616,135,9.636,244,5.136,344,9.636,383,5.136,391,2.987,395,7.717,560,9.636,720,8.961,726,9.636,1186,9.636,1187,9.636,1188,10.663,1189,10.663,1190,10.663,1191,10.663,1192,10.663,1193,9.636,1194,9.636,1195,8.961,1196,10.663,1197,10.663,1198,10.663]],["keywords/99",[]],["title/100",[146,353.305,147,317.926,395,765.946]],["content/100",[22,1.775,36,4.795,124,3.666,126,6.385,146,3.268,147,2.941,215,5.605,219,5.059,350,6.59,383,4.715,391,2.742,396,5.482,415,5.059,436,5.737,453,5.879,454,4.715,469,5.737,546,4.493,551,4.425,588,8.847,716,11.594,720,8.226,836,8.847,1083,8.226,1187,8.847,1193,8.847,1194,8.847,1199,9.789,1200,9.789,1201,13.796,1202,9.789,1203,9.789,1204,8.847,1205,9.789,1206,9.789]],["keywords/100",[]],["title/101",[414,799.862,1207,755.726]],["content/101",[22,1.257,28,4.262,36,5.439,61,3.92,147,3.336,185,3.37,244,5.348,271,10.488,384,4.606,385,7.778,391,3.11,396,6.218,409,7.475,414,7.242,472,8.967,608,8.805,628,8.385,673,7.242,820,10.893,953,10.034,1207,10.523,1208,10.034,1209,11.103,1210,11.103,1211,7.737,1212,11.103,1213,11.103,1214,11.103]],["keywords/101",[]],["title/102",[440,736.464,441,776.741]],["content/102",[]],["keywords/102",[]],["title/103",[29,527.456,146,353.305,1204,956.442]],["content/103",[22,1.303,72,8.473,146,3.908,246,7.416,287,10.581,469,6.861,590,10.581,594,10.581,596,10.581,597,10.581,715,8.842,819,7.882,858,7.031,1215,11.707,1216,11.707,1217,9.284,1218,11.707,1219,11.707,1220,11.707,1221,11.707,1222,8.842,1223,11.707,1224,11.707,1225,11.707,1226,10.581,1227,11.707,1228,10.581,1229,9.284,1230,10.581,1231,8.158,1232,10.581]],["keywords/103",[]],["title/104",[1186,1108.262,1195,1030.533]],["content/104",[22,1.45,1125,12.483,1126,12.483,1195,11.608,1233,11.608,1234,13.813,1235,13.813,1236,15.954,1237,13.813,1238,13.813,1239,13.813,1240,13.813,1241,13.813,1242,13.813,1243,13.813]],["keywords/104",[]],["title/105",[125,633.736,491,718.685]],["content/105",[]],["keywords/105",[]],["title/106",[441,670.336,491,620.233,1244,652.2]],["content/106",[22,1.797,28,3.532,36,4.508,92,6.195,125,4.756,214,3.141,405,4.36,414,6.003,489,6.95,1183,7.298,1207,5.671,1245,15.44,1246,15.44,1247,9.203,1248,15.44,1249,15.44,1250,9.203,1251,9.203,1252,9.203,1253,9.203,1254,9.203,1255,5.671,1256,8.317,1257,8.317,1258,9.203,1259,7.298,1260,9.203,1261,9.203,1262,9.203,1263,9.203,1264,7.298,1265,8.317]],["keywords/106",[]],["title/107",[147,368.392,403,672.328]],["content/107",[22,1.24,61,5.966,106,5.519,147,3.268,148,7.531,149,7.324,153,6.229,250,4.774,396,6.092,408,5.627,409,9.993,412,8.499,414,7.096,415,5.622,464,6.092,490,6.092,497,9.148,572,9.142,601,9.831,632,7.324,740,8.627,992,7.873,1183,8.627,1228,9.831,1266,10.878,1267,10.878,1268,9.142,1269,10.878,1270,10.878,1271,10.878,1272,10.878]],["keywords/107",[]],["title/108",[155,776.741,957,571.765]],["content/108",[]],["keywords/108",[]],["title/109",[682,739.58]],["content/109",[]],["keywords/109",[]],["title/110",[682,536.951,755,652.2,957,493.439]],["content/110",[36,7.331,37,7.459,221,8.205,401,9.223,682,7.593,957,6.978,1273,13.526,1274,13.526,1275,10.075,1276,10.075,1277,14.966,1278,11.869]],["keywords/110",[]],["title/111",[298,737.417,477,568.496,682,536.951]],["content/111",[27,4.881,34,3.153,56,3.335,61,4.749,146,4.491,147,4.041,185,2.867,203,2.957,271,6.581,297,2.988,312,4.975,383,4.549,391,4.388,408,5.099,418,5.517,454,4.549,489,7.133,491,5.536,546,4.335,551,4.27,723,5.408,772,7.49,839,4.792,1082,4.881,1208,8.536,1217,10.667,1255,5.821,1279,15.665,1280,8.536,1281,15.665,1282,7.937,1283,9.445,1284,7.937,1285,9.445,1286,13.451,1287,8.536,1288,9.445,1289,9.445,1290,7.937]],["keywords/111",[]],["title/112",[0,361.201,173,568.496,957,493.439]],["content/112",[]],["keywords/112",[]],["title/113",[1291,1226.268,1292,686.771]],["content/113",[22,1.731,745,8.747,1256,10.467,1293,11.581,1294,9.733,1295,11.581,1296,11.581,1297,11.581,1298,11.581,1299,11.581,1300,11.581,1301,11.581,1302,11.581,1303,11.581,1304,11.581,1305,11.581,1306,13.994,1307,11.581,1308,11.581,1309,11.581,1310,11.581,1311,11.581,1312,11.581,1313,11.581,1314,11.581]],["keywords/113",[]],["title/114",[179,799.862,1315,972.476]],["content/114",[0,4.04,22,1.473,56,4.179,146,3.951,147,3.556,173,6.358,179,7.72,223,6.629,224,7.83,297,3.745,408,4.487,418,3.825,426,8.567,663,6.937,731,6.795,807,9.387,1315,13.985,1316,9.387,1317,9.947,1318,10.697,1319,9.387,1320,10.697,1321,10.697,1322,11.836,1323,11.836]],["keywords/114",[]],["title/115",[957,571.765,1324,926.119]],["content/115",[]],["keywords/115",[]],["title/116",[18,380.984,66,673.662,201,258.179,1325,738.141]],["content/116",[18,5.512,123,6.398,201,3.735,236,14.357,238,10.17,243,8.299,423,10.17,1324,10.17,1325,10.68,1326,13.467,1327,13.467,1328,14.357,1329,13.467,1330,13.467,1331,12.171,1332,11.317,1333,13.467]],["keywords/116",[]],["title/117",[0,317.682,173,500.001,201,258.179,957,433.988]],["content/117",[34,5.291,77,6.083,179,10.337,201,4.396,1315,12.568,1334,15.848,1335,15.848,1336,15.848]],["keywords/117",[]],["title/118",[34,353.305,123,396.345,201,293.546]],["content/118",[22,1.322,56,5.588,147,4.754,224,7.888,247,7.806,418,6.098,546,5.493,864,9.039,1276,8.057,1331,10.816,1337,11.968,1338,11.968,1339,11.968,1340,11.968,1341,11.968,1342,11.968,1343,11.968,1344,11.968,1345,11.968,1346,11.968,1347,11.968,1348,11.968,1349,11.968]],["keywords/118",[]],["title/119",[25,600.679,1244,755.726]],["content/119",[]],["keywords/119",[]],["title/120",[28,470.669,139,590.633]],["content/120",[0,4.275,16,8.17,18,5.127,22,1.514,77,4.808,208,5.385,491,7.341,682,6.355,863,9.46,1171,11.32,1244,7.719,1350,12.525,1351,12.525,1352,12.525,1353,10.526,1354,10.526,1355,12.525,1356,10.526,1357,12.525,1358,10.526,1359,12.525,1360,9.46,1361,6.867]],["keywords/120",[]],["title/121",[242,581.006,297,387.981]],["content/121",[0,4.325,22,1.611,56,4.475,183,6.104,208,4.185,221,6.948,242,6.005,273,8.532,513,9.571,524,6.43,682,6.43,731,5.482,957,5.909,1328,10.65,1362,8.532,1363,12.673,1364,12.673,1365,12.673,1366,12.673,1367,12.673,1368,12.673,1369,12.673]],["keywords/121",[]],["title/122",[46,712.464,408,401.208,418,342.017]],["content/122",[22,0.967,208,3.824,415,5.985,418,3.743,482,6.35,500,7.137,520,8.07,546,8.548,613,8.382,682,5.876,755,7.137,775,12.626,843,7.545,848,4.805,921,7.336,1217,9.184,1370,10.467,1371,11.581,1372,11.581,1373,11.581,1374,11.581,1375,10.467,1376,17.444,1377,6.221]],["keywords/122",[]],["title/123",[448,658.735,1177,825.556]],["content/123",[]],["keywords/123",[]],["title/124",[124,459.259,918,926.119]],["content/124",[22,1.604,112,7.773,124,5.309,157,8.36,231,7.94,1378,14.828,1379,14.177,1380,12.77,1381,14.177,1382,12.812,1383,14.177]],["keywords/124",[]],["title/125",[584,755.726,688,562.878]],["content/125",[0,4.776,22,1.671,85,9.218,112,7.672,841,11.415,1384,12.646,1385,12.646,1386,12.646,1387,13.992,1388,13.992,1389,13.992,1390,12.646]],["keywords/125",[]],["title/126",[1177,825.556,1391,1108.262]],["content/126",[16,11.323,22,1.154,119,11.608,238,14.337,459,5.809,653,10.954,686,7.736,1391,12.483,1392,13.813,1393,17.359,1394,10.432,1395,13.813,1396,13.813,1397,13.813]],["keywords/126",[]],["title/127",[18,380.984,134,386.142,957,433.988,1100,782.207]],["content/127",[]],["keywords/127",[]],["title/128",[160,839.258,957,493.439,1398,956.442]],["content/128",[0,5.925,56,4.877,112,7.573,160,10.954,173,7.42,221,7.573,1292,7.736,1398,12.483,1399,13.813,1400,13.813,1401,13.813,1402,17.359,1403,13.813,1404,13.813,1405,13.813,1406,13.813]],["keywords/128",[]],["title/129",[1407,1108.262,1408,1226.268]],["content/129",[0,4.178,18,5.01,22,1.341,29,6.101,112,6.711,155,10.174,161,8.859,183,5.896,201,3.395,220,9.244,221,6.711,293,8.241,985,10.477,1315,9.707,1356,10.287,1407,14.517,1409,11.062,1410,16.063,1411,12.24,1412,9.244,1413,12.24,1414,12.24,1415,12.24]],["keywords/129",[]],["title/130",[97,554.322,183,590.633]],["content/130",[]],["keywords/130",[]],["title/131",[22,88.379,155,670.336,183,509.723]],["content/131",[0,3.281,1,6.271,2,8.079,18,3.935,29,4.792,56,3.395,96,4.631,98,3.833,123,3.601,155,8.628,178,6.699,184,5.164,195,4.219,201,3.778,212,6.09,214,3.281,220,7.261,369,8.181,373,5.635,374,4.969,375,5.925,391,2.693,405,4.555,408,3.645,445,5.774,446,8.079,484,5.635,495,5.925,498,4.631,577,6.271,631,3.395,695,8.689,697,7.261,839,4.878,918,7.261,1222,7.261,1412,7.261,1416,9.614,1417,9.614,1418,8.689,1419,7.261,1420,8.689,1421,7.261,1422,9.614,1423,9.614,1424,9.614,1425,5.635,1426,9.614,1427,9.614]],["keywords/131",[]],["title/132",[22,88.379,97,478.386,702,605.987]],["content/132",[31,7.168,37,5.477,77,4.218,97,4.968,107,9.749,112,6.025,115,6.6,123,5.598,126,7.168,161,7.954,184,5.903,205,4.066,297,3.477,375,6.773,474,7.168,482,6.025,540,7.954,688,5.044,702,8.559,766,7.398,1043,7.658,1161,7.658,1428,10.989,1429,9.235,1430,9.235,1431,10.989,1432,9.932,1433,10.989,1434,10.989,1435,9.235,1436,8.715,1437,10.989,1438,9.932,1439,8.3,1440,9.235]],["keywords/132",[]],["title/133",[37,527.456,183,509.723,702,605.987]],["content/133",[0,1.975,4,4.862,9,3.475,10,5.229,11,4.862,13,5.716,19,3.24,24,2.936,25,2.834,28,2.221,29,2.884,36,4.543,37,5.785,47,3.895,77,3.56,88,4.188,97,4.192,107,3.774,110,2.4,116,5.085,123,4.972,125,4.793,183,5.591,191,5.436,197,4.032,201,1.605,208,1.911,212,3.665,237,2.698,258,5.229,272,3.108,277,5.229,278,4.032,284,2.834,299,3.895,301,3.895,305,4.188,307,10.517,308,5.229,319,4.862,321,5.229,349,2.834,363,5.57,373,3.391,428,4.37,491,3.391,561,3.895,702,8.321,768,3.665,839,2.936,863,4.37,955,9.205,964,3.895,1043,4.032,1115,4.37,1147,4.37,1161,6.463,1207,3.566,1278,4.589,1362,6.244,1440,7.794,1441,4.862,1442,4.589,1443,5.229,1444,5.786,1445,5.786,1446,8.382,1447,5.786,1448,5.786,1449,5.786,1450,4.37,1451,5.786,1452,5.786,1453,5.229,1454,5.786,1455,8.382,1456,5.786,1457,5.786,1458,5.786,1459,5.786,1460,5.786,1461,5.786,1462,6.713,1463,5.786,1464,3.895,1465,5.786,1466,5.786,1467,5.229,1468,5.786,1469,5.786,1470,3.895,1471,5.786,1472,5.786,1473,4.862,1474,4.862]],["keywords/133",[]],["title/134",[22,77.73,157,441.002,1475,702.954,1476,930.776]],["content/134",[0,5.101,18,4.498,20,5.383,28,4.218,31,7.168,34,3.669,36,5.383,37,5.477,164,9.235,165,8.715,173,5.903,175,9.932,178,7.658,182,5.477,183,5.293,194,6.961,205,5.531,207,7.954,212,6.961,270,8.715,271,7.658,312,5.788,369,6.6,387,6.025,697,8.3,1477,10.989,1478,10.989,1479,9.932,1480,7.954,1481,10.989,1482,10.989,1483,10.989,1484,10.989,1485,10.989,1486,10.989,1487,10.989]],["keywords/134",[]],["title/135",[22,88.379,183,509.723,1362,712.464]],["content/135",[0,4.346,16,5.709,20,4.288,23,7.132,24,4.441,25,4.288,27,4.524,28,3.36,29,4.363,36,4.288,37,4.363,51,5.544,64,4.902,84,6.841,88,6.335,157,4.147,168,4.363,183,4.216,186,4.081,195,3.841,208,4.205,246,5.544,331,4.441,363,5.257,369,5.257,374,8.518,442,7.356,509,6.611,923,7.356,957,4.081,985,5.709,1003,5.893,1120,7.911,1354,7.356,1361,6.982,1362,5.893,1425,5.13,1488,8.753,1489,6.942,1490,8.753,1491,6.611,1492,8.753,1493,8.753,1494,8.753,1495,8.753,1496,8.753,1497,8.753,1498,6.942,1499,8.753,1500,8.753,1501,6.611,1502,8.753,1503,6.942,1504,5.544,1505,8.753]],["keywords/135",[]],["title/136",[22,88.379,29,527.456,88,765.946]],["content/136",[22,1.836,28,2.174,32,3.813,38,3.588,45,5.119,56,2,57,3.732,61,2,64,6.408,75,5.221,134,2.35,138,5.914,140,6.886,146,1.891,147,1.702,148,2.874,194,5.775,242,5.421,247,5.947,297,1.792,334,4.278,369,5.476,377,3.32,379,8.282,381,3.491,382,3.695,389,4.76,391,1.587,396,3.172,397,4.278,406,4.76,407,5.119,408,2.147,456,3.947,488,5.119,490,5.106,492,5.119,497,3.491,501,4.278,530,7.662,540,4.099,541,4.278,564,4.278,574,5.119,583,4.492,665,8.24,762,4.099,1244,3.491,1292,3.172,1506,5.664,1507,5.664,1508,5.119,1509,4.76,1510,9.117,1511,5.664,1512,5.664,1513,5.664,1514,5.664,1515,5.664,1516,5.664,1517,5.119,1518,4.278,1519,5.119]],["keywords/136",[]],["title/137",[22,88.379,477,568.496,1520,956.442]],["content/137",[22,0.756,28,3.473,57,3.703,61,3.195,75,5.181,89,5.902,123,3.389,134,3.754,138,6.741,139,4.358,146,3.021,147,5.029,148,6.618,149,6.091,244,4.358,297,2.863,369,5.434,383,4.358,387,7.151,406,7.604,408,3.43,409,6.091,412,5.181,414,5.902,472,4.432,495,5.576,497,5.576,500,5.576,529,8.177,576,8.177,577,8.508,580,8.177,628,6.833,705,5.434,727,5.181,1115,6.833,1509,7.604,1519,8.177,1521,6.548,1522,9.048,1523,9.048,1524,9.048,1525,9.048,1526,9.048,1527,9.048,1528,9.048,1529,8.177,1530,9.048,1531,9.048,1532,9.048,1533,9.048,1534,9.048]],["keywords/137",[]],["title/138",[22,102.407,201,340.142]],["content/138",[18,7.548,22,1.626,26,10.293,27,6.708,28,4.982,29,6.469,77,4.982,115,7.795,201,5.399,1137,9.802,1162,10.907,1324,13.928,1535,11.73]],["keywords/138",[]],["title/139",[22,88.379,38,670.336,97,478.386]],["content/139",[0,5.831,180,8.53,205,4.983,250,5.909,312,7.093,357,14.171,1439,10.17,1536,12.171,1537,13.548,1538,13.467,1539,13.467,1540,13.467,1541,13.467,1542,8.088,1543,13.467,1544,10.68]],["keywords/139",[]],["title/140",[22,102.407,154,972.476]],["content/140",[0,5.254,1,10.041,106,7.811,154,12.208,270,12.208,271,10.727,300,8.815,482,8.44,1545,15.394,1546,15.394]],["keywords/140",[]],["title/141",[22,102.407,1547,1108.262]],["content/141",[84,7.822,88,10.538,97,8.109,183,7.013,250,7.872,376,12.236,701,8.338,1290,12.236,1547,16.212,1548,14.561,1549,14.561]],["keywords/141",[]],["title/142",[96,590.633,155,776.741]],["content/142",[]],["keywords/142",[]],["title/143",[96,590.633,98,488.916]],["content/143",[0,2.784,9,4.898,13,5.026,22,1.203,24,4.138,51,5.166,52,5.166,61,2.88,67,8.75,77,6.115,92,5.491,96,3.928,98,6.784,110,5.016,111,7.371,186,3.803,191,7.086,195,3.579,197,5.683,205,7.01,261,6.159,291,6.468,312,4.296,324,6.468,325,5.903,440,7.261,459,3.43,482,4.472,541,9.131,561,5.491,839,4.138,882,8.75,1222,6.159,1550,6.854,1551,8.156,1552,8.156,1553,7.371,1554,6.159,1555,8.156,1556,8.156,1557,10.16,1558,8.156,1559,6.468,1560,7.371,1561,6.854,1562,8.156,1563,8.156,1564,8.156,1565,8.156]],["keywords/143",[]],["title/144",[98,488.916,300,702.177]],["content/144",[]],["keywords/144",[]],["title/145",[97,420.748,98,371.103,185,282.496,186,433.988]],["content/145",[22,1.046,77,4.808,84,6.729,96,6.033,98,6.501,168,9.036,186,5.84,191,7.341,331,6.355,1130,9.933,1542,7.522,1566,12.931,1567,12.315,1568,12.315,1569,12.525,1570,11.32,1571,9.46,1572,11.32,1573,11.32,1574,10.526]],["keywords/145",[]],["title/146",[34,310.737,98,371.103,203,291.414,273,626.623]],["content/146",[22,1.672,24,3.741,25,3.612,29,3.675,41,4.964,46,4.964,51,4.67,67,5.336,77,4.302,85,3.883,96,3.551,97,3.333,98,5.406,106,3.741,108,3.883,110,3.059,186,3.438,201,3.109,202,5.336,246,4.67,273,4.964,280,3.961,285,4.129,291,5.847,297,2.333,415,3.81,441,4.67,482,4.042,484,6.569,515,4.809,617,6.663,635,4.544,722,5.568,857,4.321,863,5.568,873,4.129,952,5.568,1034,5.847,1332,6.196,1438,6.663,1537,5.847,1575,7.373,1576,5.336,1577,11.208,1578,11.208,1579,11.208,1580,6.663,1581,7.373,1582,4.67,1583,6.424,1584,7.373,1585,7.373,1586,7.373,1587,6.196,1588,5.568,1589,7.373,1590,5.568,1591,4.321,1592,4.67,1593,6.663,1594,7.373,1595,4.321,1596,6.663,1597,7.373]],["keywords/146",[]],["title/147",[214,361.201,1568,799.251,1572,956.442]],["content/147",[20,6.68,37,6.797,52,8.638,98,6.866,110,5.658,168,6.797,180,8.638,331,6.919,453,8.19,509,10.299,702,7.809,1425,7.993,1567,10.299,1598,12.325,1599,13.637,1600,13.637,1601,13.637,1602,13.637]],["keywords/147",[]],["title/148",[219,546.922,284,518.392,1583,501.415]],["content/148",[25,6.766,98,6.921,105,7.275,207,9.997,336,10.432,773,9.299,873,7.736,1576,9.997,1583,8.995,1603,13.813,1604,12.483,1605,13.813,1606,13.813,1607,13.813,1608,11.608]],["keywords/148",[]],["title/149",[108,645.898,237,571.765]],["content/149",[0,2.893,20,4.152,22,0.708,96,8.327,98,4.96,123,3.175,168,7.344,189,6.402,191,9.514,215,4.854,221,4.648,238,6.402,285,4.748,431,5.707,640,7.661,649,7.661,650,7.661,701,4.854,704,4.554,722,6.402,765,8.079,932,4.968,1043,5.907,1394,6.402,1429,7.124,1567,6.402,1570,13.317,1571,12.26,1591,7.29,1609,12.439,1610,8.477,1611,8.477,1612,11.242,1613,7.124,1614,8.477,1615,8.477,1616,8.477,1617,8.477,1618,8.477,1619,8.477,1620,7.124,1621,7.124,1622,8.477,1623,8.477,1624,7.661,1625,12.439]],["keywords/149",[]],["title/150",[1147,799.251,1455,956.442,1542,635.576]],["content/150",[0,2.702,9,4.754,16,5.163,19,4.433,29,3.945,39,4.754,67,8.558,77,5.432,84,4.252,86,5.729,87,4.533,96,3.813,97,3.578,98,4.714,105,4.169,108,4.169,136,5.978,186,3.691,237,3.691,242,5.602,266,5.729,284,3.877,285,4.433,300,4.533,312,4.169,325,8.558,336,5.978,477,4.252,510,5.516,511,6.277,515,5.163,541,10.689,701,4.533,755,4.878,768,5.014,1135,7.154,1264,6.277,1542,4.754,1571,5.978,1583,7.439,1590,5.978,1591,4.639,1613,6.652,1626,7.154,1627,7.916,1628,5.978,1629,7.916,1630,6.277,1631,7.916,1632,7.916,1633,7.916,1634,7.916,1635,7.916,1636,7.916,1637,7.916,1638,7.154,1639,7.916,1640,6.652,1641,7.916,1642,7.916,1643,7.916,1644,7.916,1645,7.154,1646,7.916,1647,5.978]],["keywords/150",[]],["title/151",[284,518.392,1583,690.13]],["content/151",[]],["keywords/151",[]],["title/152",[752,887.528,1583,581.006]],["content/152",[22,1.011,96,5.829,105,6.375,124,4.533,139,5.829,197,8.433,201,3.357,204,8.759,205,4.478,289,8.759,311,7.666,337,10.938,524,6.141,712,8.759,722,9.14,755,7.459,793,8.433,1133,8.759,1576,8.759,1583,5.734,1590,9.14,1648,10.938,1649,8.759,1650,10.938,1651,10.938,1652,12.103,1653,10.938,1654,10.938,1655,10.938]],["keywords/152",[]],["title/153",[29,611.181,1583,581.006]],["content/153",[77,5.105,105,7.005,124,6.348,201,3.689,281,12.02,312,7.005,515,8.675,967,9.268,1580,12.02,1583,6.302,1591,7.795,1592,8.424,1595,7.795,1656,10.045,1657,13.3,1658,13.3,1659,13.3,1660,13.3,1661,13.3,1662,12.02]],["keywords/153",[]],["title/154",[97,478.386,1542,635.576,1583,501.415]],["content/154",[21,5.954,22,1.563,57,3.497,64,4.785,75,9.931,77,3.28,82,5.008,112,6.86,124,3.2,134,3.545,157,4.048,185,2.593,186,5.834,203,2.675,208,2.822,214,5.052,219,4.416,221,4.685,297,2.703,313,7.722,349,4.185,385,4.416,513,6.453,515,5.573,524,4.335,537,11.308,540,9.056,564,6.453,613,6.184,1014,5.752,1108,6.776,1280,7.722,1450,6.453,1508,11.308,1509,12.44,1554,11.18,1583,4.048,1591,5.008,1592,5.412,1595,5.008,1656,6.453,1663,7.722,1664,7.722,1665,8.545,1666,8.545]],["keywords/154",[]],["title/155",[201,340.142,484,718.685]],["content/155",[]],["keywords/155",[]],["title/156",[105,645.898,1583,581.006]],["content/156",[21,6.581,22,1.72,28,3.625,36,4.627,37,4.707,57,5.506,75,5.408,82,5.536,139,4.549,146,3.153,147,2.837,157,4.475,179,6.161,185,2.867,201,3.731,203,2.957,208,5.173,212,5.983,214,3.224,216,6.581,219,4.881,295,7.937,297,4.256,331,4.792,382,6.161,396,5.29,491,7.883,524,4.792,682,4.792,946,8.536,967,6.581,1014,6.359,1167,6.836,1172,8.536,1588,7.133,1667,6.161,1668,8.536,1669,9.445]],["keywords/156",[]],["title/157",[201,258.179,889,841.206,1450,702.954,1583,441.002]],["content/157",[57,4.592,61,3.961,108,5.909,124,4.202,125,5.798,134,4.654,201,3.112,205,4.151,242,5.315,244,5.404,297,3.55,377,8.883,381,6.914,382,9.887,391,4.246,401,6.914,405,5.315,436,6.575,464,6.283,491,6.575,501,8.473,727,6.424,765,6.151,967,7.817,1292,6.283,1583,5.315,1670,11.219,1671,11.219,1672,11.219,1673,11.219,1674,11.219,1675,11.219,1676,11.219]],["keywords/157",[]],["title/158",[1244,755.726,1435,1030.533]],["content/158",[]],["keywords/158",[]],["title/159",[22,69.372,98,331.199,205,307.382,323,658.769,922,578.83]],["content/159",[98,6.452,124,4.637,157,5.866,231,6.934,280,6.651,285,6.934,349,6.065,385,6.399,612,6.399,1560,11.19,1582,7.843,1608,10.405,1677,11.19,1678,12.381,1679,12.381,1680,12.381,1681,12.381,1682,12.381,1683,9.819,1684,11.19,1685,12.381,1686,12.381,1687,11.19,1688,8.961,1689,12.381,1690,12.381]],["keywords/159",[]],["title/160",[22,77.73,284,455.934,773,626.623,1583,441.002]],["content/160",[9,7.795,20,6.358,77,4.982,105,6.836,201,4.628,205,4.803,231,7.269,280,6.972,289,9.394,957,6.052,1114,6.972,1582,8.221,1583,8.738,1591,7.607,1628,9.802,1664,11.73,1691,11.73,1692,12.979,1693,12.979,1694,12.979]],["keywords/160",[]],["title/161",[22,77.73,97,420.748,297,294.49,1099,702.954]],["content/161",[0,4.539,29,6.629,96,8.163,97,6.012,98,5.303,107,8.675,231,7.449,246,8.424,280,7.145,357,10.045,376,11.177,701,7.616,932,7.795,1060,9.626,1064,12.02,1582,8.424,1695,13.3,1696,12.02,1697,13.3,1698,13.3]],["keywords/161",[]],["title/162",[22,77.73,98,371.103,1566,738.141,1567,702.954]],["content/162",[34,4.231,98,6.551,126,8.266,168,6.316,186,5.909,231,7.098,280,6.808,349,6.208,357,12.409,1554,9.571,1568,9.571,1573,11.454,1574,10.65,1576,9.172,1582,8.027,1598,11.454,1649,9.172,1691,11.454,1699,12.673,1700,12.673,1701,12.673,1702,12.673,1703,9.172]],["keywords/162",[]],["title/163",[28,406.193,183,509.723,702,605.987]],["content/163",[31,5.486,34,2.808,88,6.087,90,7.601,96,5.957,98,4.931,106,4.267,107,11.24,108,4.43,115,5.051,123,4.632,155,5.328,183,4.051,272,4.518,297,2.661,300,4.816,334,6.352,412,4.816,430,6.352,504,5.662,510,5.861,628,6.352,688,3.861,702,10.666,766,5.662,768,5.328,1175,6.087,1222,6.352,1233,7.068,1429,7.068,1430,7.068,1439,6.352,1442,6.67,1443,7.601,1450,6.352,1462,6.087,1467,13.257,1529,7.601,1591,4.929,1613,7.068,1630,6.67,1704,8.411,1705,8.411,1706,8.411,1707,8.411,1708,8.411,1709,8.411,1710,8.411,1711,8.411,1712,7.601,1713,7.601,1714,8.411,1715,8.411]],["keywords/163",[]],["title/164",[992,887.528,1362,825.556]],["content/164",[]],["keywords/164",[]],["title/165",[98,488.916,1566,972.476]],["content/165",[96,7.31,98,7.894,168,7.564,482,8.321,504,10.218,1567,11.462,1716,15.177,1717,15.177,1718,15.177]],["keywords/165",[]],["title/166",[98,488.916,1542,736.464]],["content/166",[9,10.42,13,7.061,22,1.663,96,8.357,98,6.918,108,6.035,219,7.945,242,5.429,325,8.293,377,6.715,857,6.715,1571,14.004,1719,10.355,1720,11.458,1721,11.458,1722,11.458,1723,11.458,1724,11.458,1725,11.458]],["keywords/166",[]],["title/167",[64,686.771,1361,672.328]],["content/167",[0,4.839,21,12.294,22,1.604,23,7.94,24,7.193,25,6.944,134,5.881,157,6.717,201,3.932,208,4.682,216,9.878,967,9.878,1161,9.878]],["keywords/167",[]],["title/168",[1726,1457.646]],["content/168",[]],["keywords/168",[]],["title/169",[0,255.996,98,299.043,157,355.37,173,402.912,186,349.717,1727,566.456]],["content/169",[22,1.169,98,6.977,110,5.805,186,6.524,205,5.178,214,4.776,290,12.646,341,10.567,1432,12.646,1474,11.759,1728,13.992,1729,13.992,1730,11.759,1731,11.759,1732,11.759,1733,13.992]],["keywords/169",[]],["title/170",[98,421.94,482,580.226,1727,799.251]],["content/170",[0,3.713,9,10.147,77,4.175,98,4.337,109,7.873,124,4.074,201,4.117,311,6.891,312,5.73,331,5.519,415,5.622,472,5.329,482,8.138,484,6.375,618,8.216,882,7.873,918,8.216,1222,8.216,1361,5.964,1583,8.005,1626,9.831,1734,9.142,1735,10.878,1736,10.878,1737,10.878,1738,10.878,1739,10.878,1740,10.878,1741,9.831,1742,10.878,1743,10.878,1744,10.878,1745,10.878]],["keywords/170",[]],["title/171",[98,331.199,205,307.382,284,406.908,768,526.176,1727,627.366]],["content/171",[22,1.473,96,5.701,97,7.972,98,7.031,110,4.91,205,4.38,221,6.489,285,6.629,297,5.58,632,7.968,1100,9.947,1473,9.947,1583,5.608,1587,9.947,1588,8.939,1688,8.567,1746,11.836,1747,11.836,1748,11.836,1749,11.836,1750,11.836,1751,11.836,1752,10.697]],["keywords/171",[]],["title/172",[96,448.309,207,673.662,300,532.975,1727,702.954]],["content/172",[9,9.793,34,4.182,77,4.808,98,6.501,205,6.709,220,9.46,261,9.46,285,7.015,300,7.172,312,6.597,324,9.933,1550,10.526,1557,10.526,1559,9.933,1561,10.526,1687,11.32,1753,12.525,1754,12.525,1755,12.525,1756,11.32,1757,12.525,1758,10.526]],["keywords/172",[]],["title/173",[96,448.309,1591,545.505,1727,702.954,1759,930.776]],["content/173",[0,4.04,22,0.988,57,4.845,75,6.778,82,6.937,93,7.497,96,5.701,97,5.35,98,4.719,134,4.91,157,5.608,191,6.937,208,5.188,212,7.497,297,3.745,331,6.005,349,5.798,491,6.937,920,8.567,1592,7.497,1703,8.567,1731,9.947,1760,11.836,1761,11.836,1762,10.697,1763,9.947,1764,11.836,1765,11.836,1766,11.836,1767,11.836]],["keywords/173",[]],["title/174",[936,1224.978]],["content/174",[9,5.434,46,6.091,77,5.006,96,6.282,97,4.09,98,7.37,105,4.766,107,5.902,108,4.766,168,4.509,201,2.51,204,6.548,261,6.833,284,4.432,289,6.548,311,5.731,324,7.175,325,6.548,430,6.833,477,4.86,482,4.961,504,6.091,515,5.902,635,5.576,637,7.175,1070,8.177,1130,7.175,1147,6.833,1537,7.175,1550,7.604,1557,7.604,1566,7.175,1568,6.833,1571,6.833,1583,4.287,1590,6.833,1595,5.303,1596,8.177,1638,8.177,1654,8.177,1719,8.177,1763,7.604,1768,9.048,1769,9.048,1770,9.048,1771,9.048,1772,9.048,1773,9.048,1774,9.048,1775,9.048,1776,9.048,1777,9.048]],["keywords/174",[]],["title/175",[84,568.496,363,635.576,374,546.922]],["content/175",[]],["keywords/175",[]],["title/176",[22,69.372,157,393.582,374,429.302,1475,627.366,1503,658.769]],["content/176",[20,7.024,22,1.67,23,3.721,34,2.218,64,3.721,84,3.569,168,6.332,182,6.332,184,6.825,185,2.016,186,7.245,195,2.915,203,2.08,205,2.458,206,6.005,214,2.268,243,4.095,267,8.612,269,4.095,272,5.557,286,3.569,297,2.102,299,4.473,363,3.99,374,8.031,474,4.334,1082,5.346,1099,5.018,1294,5.583,1361,3.643,1425,8.404,1503,5.269,1504,9.083,1588,5.018,1778,4.63,1779,6.005,1780,5.583,1781,9.35,1782,10.378,1783,8.204,1784,8.204,1785,7.703,1786,7.813,1787,6.005,1788,4.809,1789,5.583,1790,5.269,1791,5.269,1792,6.005,1793,6.644]],["keywords/176",[]],["title/177",[22,88.379,374,546.922,765,580.226]],["content/177",[]],["keywords/177",[]],["title/178",[185,252.12,272,446.236,762,601.224,1794,698.098,1795,830.691]],["content/178",[20,5.735,34,5.207,84,6.289,110,4.857,195,5.137,245,9.839,268,8.842,349,5.735,363,7.031,374,9.064,1009,8.842,1475,8.842,1537,9.284,1668,10.581,1796,11.707,1797,8.158,1798,11.707,1799,11.707,1800,11.707,1801,11.707,1802,11.707,1803,11.707,1804,11.707,1805,11.707,1806,11.707,1807,11.707,1808,11.707,1809,11.707,1810,11.707]],["keywords/178",[]],["title/179",[203,291.414,215,532.975,1361,510.318,1811,930.776]],["content/179",[0,1.469,18,1.762,20,2.108,22,1.352,31,2.807,34,3.701,41,2.898,84,8.077,106,2.184,115,4.365,126,2.807,161,5.261,168,7.803,173,2.312,176,3.617,178,6.574,182,6.174,215,2.464,272,3.905,273,6.352,286,5.068,349,2.108,363,5.666,379,3.115,387,3.985,464,4.071,480,5.764,501,3.25,536,8.527,668,3.115,702,6.348,734,3.89,765,2.36,839,3.688,985,9.333,1082,2.224,1151,3.89,1361,2.36,1362,2.898,1442,5.764,1462,3.115,1479,3.89,1498,3.413,1501,13.159,1612,3.89,1730,3.617,1785,5.068,1788,5.261,1797,2.999,1812,13.589,1813,11.196,1814,4.304,1815,9.435,1816,6.569,1817,4.304,1818,6.108,1819,4.304,1820,4.304,1821,7.269,1822,3.89,1823,4.304,1824,5.489,1825,4.304,1826,3.25,1827,6.569,1828,4.304,1829,4.304,1830,4.304,1831,2.652,1832,6.569,1833,4.304,1834,4.304,1835,3.89,1836,4.304,1837,4.304,1838,9.435,1839,4.304,1840,3.89,1841,4.304,1842,4.304,1843,4.304,1844,4.304,1845,4.304,1846,4.304,1847,4.304,1848,4.304,1849,4.304,1850,4.304,1851,4.304,1852,4.304,1853,4.304,1854,4.304,1855,4.304,1856,4.304,1857,4.304,1858,4.304]],["keywords/179",[]],["title/180",[214,361.201,301,712.464,1788,765.946]],["content/180",[22,1.492,34,4.408,84,7.093,168,8.408,182,7.696,184,4.944,185,2.793,186,6.156,195,4.038,203,2.881,214,3.141,267,9.273,269,5.671,272,7.093,363,5.527,374,8.718,386,6.581,654,6.95,702,5.27,1082,4.756,1425,5.393,1498,7.298,1501,9.971,1785,9.595,1813,8.317,1816,13.955,1824,6.95,1859,9.203,1860,9.203,1861,6.95,1862,7.298]],["keywords/180",[]],["title/181",[22,88.379,440,635.576,1325,839.258]],["content/181",[20,9.081,22,1.726,24,5.154,96,4.893,97,4.592,191,5.954,194,11.743,195,4.458,197,7.079,201,2.818,260,9.181,261,14.002,272,5.457,641,7.672,1009,7.672,1588,7.672,1863,10.159,1864,9.181,1865,9.181,1866,10.159,1867,10.159,1868,10.159,1869,10.159,1870,10.159,1871,10.159]],["keywords/181",[]],["title/182",[22,102.407,34,409.386]],["content/182",[19,5.384,23,5.384,34,3.21,51,6.09,84,5.164,110,5.651,182,7.884,184,5.164,201,2.667,215,5.505,267,5.774,272,5.164,286,7.317,300,5.505,350,6.472,374,8.893,641,7.261,858,5.774,914,6.958,932,5.635,1128,8.689,1149,8.689,1207,5.925,1361,9.959,1464,6.472,1475,7.261,1504,6.09,1779,8.689,1785,9.244,1788,6.958,1794,8.079,1872,9.614,1873,9.614,1874,9.614,1875,8.689,1876,8.689,1877,9.614,1878,9.614]],["keywords/182",[]],["title/183",[22,77.73,108,490.257,184,500.001,374,481.026]],["content/183",[]],["keywords/183",[]],["title/184",[34,277.324,64,465.228,184,446.236,1361,455.444,1778,578.83]],["content/184",[20,6.35,22,1.656,84,4.82,106,4.552,168,7.587,182,4.472,184,4.82,185,3.935,186,7.097,203,2.809,205,3.32,214,3.062,243,5.529,267,9.142,269,5.529,299,6.04,363,5.388,374,7.867,474,5.852,653,7.115,682,4.552,1133,6.494,1361,4.919,1480,6.494,1503,7.115,1504,5.683,1595,8.921,1703,6.494,1780,7.54,1781,8.109,1782,6.494,1785,8.177,1786,9.791,1787,8.109,1788,6.494,1879,8.972,1880,8.972]],["keywords/184",[]],["title/185",[23,382.886,184,367.256,189,516.327,286,367.256,914,494.811,1785,367.256,1875,617.874]],["content/185",[20,6.275,22,1.618,23,4.942,106,4.478,168,6.385,182,4.398,184,8.888,185,2.678,186,7.715,195,3.873,203,2.763,205,4.74,214,3.012,267,7.693,272,4.741,286,4.741,374,7.793,639,7.416,1082,4.561,1294,7.416,1425,7.508,1480,6.387,1504,8.114,1595,8.838,1782,6.387,1783,6.999,1784,6.999,1785,9.438,1786,6.665,1790,6.999,1791,6.999,1792,7.976,1861,6.665,1881,8.825,1882,8.825]],["keywords/185",[]],["title/186",[184,402.912,286,402.912,1060,542.852,1394,566.456,1785,402.912,1883,750.04]],["content/186",[20,4.976,22,1.361,93,6.435,168,8.123,184,8.755,185,3.083,186,8.22,203,3.181,267,8.504,269,6.261,286,5.457,374,7.318,474,6.626,922,7.079,1105,6.626,1425,8.298,1480,7.353,1504,8.969,1595,8.298,1783,8.056,1784,8.056,1785,9.959,1786,10.694,1790,8.056,1791,8.056,1884,10.159,1885,10.159]],["keywords/186",[]],["title/187",[22,88.379,77,406.193,1292,592.691]],["content/187",[22,1.011,64,6.778,168,6.032,182,7.946,186,5.643,272,6.501,273,8.148,374,6.255,762,8.759,843,5.235,1361,6.635,1425,9.344,1501,9.14,1504,10.099,1780,10.171,1782,8.759,1785,8.565,1794,10.171,1886,12.103,1887,12.103,1888,12.103,1889,12.103,1890,12.103,1891,12.103,1892,10.171]],["keywords/187",[]],["title/188",[22,88.379,191,620.233,914,765.946]],["content/188",[]],["keywords/188",[]],["title/189",[27,546.922,185,321.195,1425,620.233]],["content/189",[23,8.622,27,7.956,64,8.622,184,8.27,440,9.245,890,10.364,1361,8.44,1425,9.022,1785,8.27,1893,15.394]],["keywords/189",[]],["title/190",[203,331.334,358,799.251,1785,568.496]],["content/190",[19,8.046,22,1.2,64,8.046,93,11.268,184,7.717,186,6.698,208,5.875,215,8.226,1361,7.877,1785,10.381,1894,14.366]],["keywords/190",[]],["title/191",[214,361.201,685,712.464,1895,765.946]],["content/191",[20,7.65,22,1.304,64,8.747,186,7.282,215,8.943,267,9.38,1361,8.563,1785,8.39,1896,13.125]],["keywords/191",[]],["title/192",[219,481.026,843,402.592,1425,545.505,1504,589.571]],["content/192",[20,7.763,84,8.513,182,7.899,374,8.19,1425,9.288,1504,10.039,1789,13.319,1897,15.848]],["keywords/192",[]],["title/193",[237,493.439,1590,799.251,1741,956.442]],["content/193",[64,9.145,205,6.042,243,10.064,1361,8.953,1898,16.329,1899,16.329]],["keywords/193",[]],["title/194",[22,102.407,1900,1226.268]],["content/194",[18,3.125,20,6.784,22,1.382,23,4.276,24,3.874,93,4.836,110,3.167,160,6.054,168,8.245,184,6.182,185,2.317,186,3.56,195,3.35,203,2.39,208,2.521,214,2.606,215,4.372,267,8.318,269,7.092,272,4.101,423,5.766,440,4.585,474,4.98,491,4.474,1105,7.506,1244,4.705,1353,6.416,1425,8.117,1480,5.526,1504,4.836,1554,5.766,1621,6.416,1683,6.054,1782,5.526,1783,6.054,1784,6.054,1785,10.21,1786,10.46,1790,6.054,1791,6.054,1861,5.766,1876,6.9,1901,7.635,1902,7.635,1903,7.635,1904,7.635,1905,7.635,1906,7.635,1907,11.508,1908,11.508,1909,7.635,1910,7.635]],["keywords/194",[]],["title/195",[22,88.379,51,670.336,440,635.576]],["content/195",[34,4.281,37,6.392,38,8.123,51,10.488,110,5.32,115,9.944,246,8.123,272,8.894,374,6.628,381,7.903,440,9.944,1785,6.889,1864,11.59,1865,11.59,1911,12.824,1912,12.824,1913,12.824,1914,12.824,1915,12.824,1916,12.824]],["keywords/195",[]],["title/196",[22,102.407,309,972.476]],["content/196",[18,3.673,19,5.025,20,7.456,31,5.852,34,2.995,84,4.82,110,3.722,136,6.776,168,4.472,173,4.82,182,4.472,186,4.183,191,5.258,194,9.642,195,3.937,201,2.489,205,3.32,215,5.138,221,7.108,231,5.025,249,11.017,250,5.689,267,5.388,272,4.82,273,6.04,286,4.82,374,6.7,386,4.472,428,6.776,440,5.388,482,4.919,687,8.109,702,5.138,793,6.252,839,4.552,1360,6.776,1442,7.115,1446,8.109,1501,6.776,1688,6.494,1713,8.109,1785,4.82,1788,6.494,1812,8.109,1818,7.54,1862,7.115,1917,8.972,1918,7.54,1919,8.972,1920,8.972,1921,8.972]],["keywords/196",[]],["title/197",[447,718.685,448,658.735]],["content/197",[]],["keywords/197",[]],["title/198",[448,658.735,1656,926.119]],["content/198",[36,6.065,56,4.372,297,5.12,408,4.694,438,6.399,472,9.365,551,5.597,686,6.934,920,11.713,1470,8.335,1561,10.405,1922,11.19,1923,12.381,1924,12.381,1925,12.381,1926,12.381,1927,12.381,1928,12.381,1929,12.381,1930,12.381,1931,12.381,1932,12.381]],["keywords/198",[]],["title/199",[1177,981.326]],["content/199",[]],["keywords/199",[]],["title/200",[124,459.259,1933,1226.268]],["content/200",[0,3.603,22,1.57,34,3.525,75,6.046,76,7.973,112,7.973,122,5.789,124,5.446,157,6.89,224,8.291,231,8.144,448,5.672,1378,12.221,1380,10.525,1382,9.542,1934,10.558,1935,10.558,1936,10.558,1937,10.558,1938,14.542,1939,10.558,1940,10.558,1941,10.558,1942,10.558,1943,10.558,1944,10.558,1945,10.558,1946,9.542]],["keywords/200",[]],["title/201",[688,562.878,1177,825.556]],["content/201",[0,4.596,18,5.512,22,1.648,85,8.998,112,7.383,841,11.143,1384,12.171,1385,12.171,1386,12.171,1390,12.171,1947,13.467,1948,13.467,1949,13.467,1950,15.439]],["keywords/201",[]],["title/202",[223,686.771,1177,825.556]],["content/202",[16,9.247,18,5.803,22,1.473,119,11.914,238,10.707,459,5.962,985,11.509,1177,9.544,1356,11.914,1394,10.707,1409,12.812,1951,19.21]],["keywords/202",[]],["title/203",[123,459.259,447,718.685]],["content/203",[]],["keywords/203",[]],["title/204",[391,408.301]],["content/204",[22,1.665,32,5.14,61,2.696,76,6.309,138,3.946,142,4.836,147,3.457,185,2.317,203,2.39,205,2.825,214,2.606,224,7.685,284,5.637,390,4.836,391,3.879,405,3.617,417,5.526,452,6.416,456,5.32,459,3.211,663,9.036,688,3.504,731,4.977,732,9.26,765,4.186,782,6.054,1105,7.506,1115,8.691,1952,7.635,1953,7.635,1954,7.635,1955,7.635,1956,11.508,1957,6.9,1958,7.635,1959,10.4,1960,11.508,1961,7.635,1962,11.508,1963,7.635,1964,6.416,1965,16.543,1966,7.635,1967,7.635,1968,7.635]],["keywords/204",[]],["title/205",[139,590.633,681,1108.262]],["content/205",[22,1.549,76,9.22,110,5.45,139,6.328,147,3.947,217,9.154,224,6.548,408,4.981,663,7.7,731,5.682,732,10.099,1969,13.138,1970,13.138,1971,13.138,1972,13.138,1973,13.138,1974,13.138,1975,13.138]],["keywords/205",[]],["title/206",[102,1030.533,685,825.556]],["content/206",[22,1.716,52,8.123,102,10.777,148,6.507,231,7.182,300,9.481,546,7.6,685,8.634,773,8.634,779,10.17,1831,7.903,1976,11.59,1977,9.685,1978,12.824,1979,12.824,1980,12.824,1981,12.824]],["keywords/206",[]],["title/207",[223,592.691,839,536.951,1175,765.946]],["content/207",[22,1.786,61,3.456,142,10.987,185,2.971,203,3.065,231,7.726,336,7.393,438,5.059,620,7.763,713,10.941,718,11.594,774,7.085,775,12.554,778,7.763,779,7.763,1831,6.033,1977,7.393,1982,13.796,1983,9.789,1984,13.796,1985,13.796,1986,9.789,1987,9.789,1988,9.789]],["keywords/207",[]],["title/208",[373,718.685,688,562.878]],["content/208",[]],["keywords/208",[]],["title/209",[39,635.576,688,485.77,993,765.946]],["content/209",[22,1.529,32,10.133,34,3.707,56,3.92,71,10.893,112,6.087,180,7.033,185,3.37,203,3.476,223,6.218,224,8.51,312,5.848,373,6.507,701,8.618,732,9.039,1964,9.331,1989,11.103,1990,11.103,1991,11.103,1992,11.103,1993,11.103,1994,11.103,1995,11.103,1996,11.103,1997,11.103,1998,11.103,1999,11.103,2000,11.103]],["keywords/209",[]],["title/210",[29,527.456,147,317.926,2001,1058.283]],["content/210",[22,1.774,34,3.56,109,10.597,116,5.846,179,6.955,231,8.2,323,8.456,363,6.404,812,12.304,843,4.612,1226,13.232,1360,13.594,1450,8.053,1976,13.232,2002,10.663,2003,10.663,2004,10.663,2005,10.663,2006,10.663,2007,14.641,2008,10.663]],["keywords/210",[]],["title/211",[56,432.979,447,718.685]],["content/211",[]],["keywords/211",[]],["title/212",[61,373.666,438,546.922,668,765.946]],["content/212",[27,6.79,61,4.639,147,5.052,284,6.435,391,4.71,438,6.79,453,7.89,505,11.041,584,8.096,608,10.419,746,7.89,934,8.322,1105,8.569,1166,11.041,1328,11.041,2009,13.138,2010,13.138,2011,13.138,2012,13.138,2013,13.138]],["keywords/212",[]],["title/213",[297,387.981,2014,1108.262]],["content/213",[22,1.084,76,9.148,110,5.384,142,8.221,147,5.013,195,5.695,223,7.269,224,6.469,297,4.106,383,6.251,391,3.636,663,7.607,731,5.614,1316,10.293,1317,10.907,1318,11.73,2015,12.979,2016,12.979,2017,12.979,2018,11.73,2019,11.73]],["keywords/213",[]],["title/214",[249,887.528,2020,1226.268]],["content/214",[]],["keywords/214",[]],["title/215",[32,712.464,524,536.951,1826,799.251]],["content/215",[22,1.749,85,6.035,146,5.132,205,4.24,417,8.293,431,7.714,469,6.715,500,7.061,524,5.813,653,9.086,705,6.881,732,6.881,766,10.35,882,8.293,1430,12.92,1593,10.355,2021,11.458,2022,11.458,2023,11.458,2024,11.458,2025,11.458,2026,11.458,2027,11.458]],["keywords/215",[]],["title/216",[247,799.862,938,926.119]],["content/216",[22,1.795,29,5.262,147,4.369,247,10.85,297,4.601,323,8.373,472,7.123,546,4.846,551,4.773,606,9.542,668,7.641,716,8.873,874,9.542,1043,7.357,1153,9.542,2028,10.558,2029,10.558,2030,10.558,2031,10.558,2032,10.558,2033,16.635,2034,10.558]],["keywords/216",[]],["title/217",[201,340.142,448,658.735]],["content/217",[]],["keywords/217",[]],["title/218",[201,340.142,2035,1226.268]],["content/218",[22,1.497,108,6.447,112,8.807,124,4.584,157,7.611,224,6.101,233,11.062,408,4.64,418,3.956,742,7.543,1324,9.244,1378,13.499,1380,11.626,1977,9.244,2036,12.24,2037,12.24,2038,12.24,2039,12.24,2040,12.24,2041,12.24,2042,12.24,2043,12.24]],["keywords/218",[]],["title/219",[139,590.633,201,340.142]],["content/219",[22,1.663,56,5.758,124,4.691,142,7.934,223,7.015,224,6.243,226,11.32,297,3.963,584,7.719,688,5.749,967,11.362,1114,6.729,2044,12.525,2045,12.525,2046,12.525,2047,12.525,2048,12.525,2049,12.525,2050,12.525,2051,12.525]],["keywords/219",[]],["title/220",[1160,1108.262,1166,1030.533]],["content/220",[]],["keywords/220",[]],["title/221",[448,568.496,682,536.951,1922,956.442]],["content/221",[22,1.139,76,7.477,108,7.183,124,5.107,142,8.638,147,4.097,223,7.638,224,6.797,231,9.644,663,7.993,731,5.899,1316,10.815,1317,11.461,2019,12.325,2052,13.637,2053,13.637,2054,13.637,2055,13.637]],["keywords/221",[]],["title/222",[630,972.476,688,562.878]],["content/222",[22,1.59,112,8.807,293,8.241,300,7.009,391,4.499,484,7.174,577,7.984,584,7.543,688,5.619,1177,8.241,1362,8.241,1950,11.062,2056,12.24,2057,12.24,2058,12.24,2059,16.063,2060,12.24,2061,12.24,2062,12.24,2063,12.24,2064,12.24,2065,12.24]],["keywords/222",[]],["title/223",[201,404.321]],["content/223",[]],["keywords/223",[]],["title/224",[27,633.736,28,470.669]],["content/224",[16,9.057,18,6.572,19,5.533,20,4.839,22,1.16,26,7.834,27,9.483,28,3.792,29,4.924,51,8.795,77,6.162,84,5.307,93,6.257,138,5.105,201,2.74,205,3.656,208,3.262,215,5.657,267,5.933,272,5.307,331,5.012,442,13.492,491,5.79,715,7.461,1354,14.636,1361,5.416,1517,8.928,1758,8.302,1782,7.15,1861,7.461,2066,8.928,2067,9.879,2068,9.879]],["keywords/224",[]],["title/225",[18,501.934,201,340.142]],["content/225",[18,7.771,22,1.585,77,5.302,115,8.295,201,5.524,1137,10.432,1162,11.608,1324,14.337,1535,12.483]],["keywords/225",[]],["title/226",[201,340.142,286,658.735]],["content/226",[22,1.216,36,7.132,37,7.257,157,6.899,183,7.013,201,4.039,216,10.146,524,7.388,697,10.997,762,10.538,763,13.159,1292,8.155,2069,14.561,2070,14.561]],["keywords/226",[]],["title/227",[1,799.862,201,340.142]],["content/227",[2071,17.386,2072,15.712]],["keywords/227",[]],["title/228",[183,590.633,369,736.464]],["content/228",[]],["keywords/228",[]],["title/229",[158,1317.373]],["content/229",[0,5.18,61,5.359,161,10.985,173,8.153,396,8.5,985,9.9,1183,12.036,2073,13.717,2074,15.177,2075,15.177,2076,13.717]],["keywords/229",[]],["title/230",[369,736.464,1475,926.119]],["content/230",[0,6.119,22,1.694,161,8.859,165,12.738,166,11.062,168,6.101,170,11.062,171,11.062,172,9.707,173,8.629,176,10.287,177,11.062,178,8.529,286,6.575,1840,11.062,2077,12.24,2078,16.063,2079,12.24]],["keywords/230",[]],["title/231",[183,590.633,697,926.119]],["content/231",[16,11.055,17,12.02,37,6.629,178,9.268,183,6.406,246,8.424,272,7.145,373,7.795,541,10.045,950,12.02,1818,11.177,1831,8.197,1832,12.02,1835,12.02,2080,13.3,2081,13.3,2082,13.3,2083,13.3,2084,13.3,2085,13.3]],["keywords/231",[]],["title/232",[18,501.934,28,470.669]],["content/232",[22,1.304,36,7.65,37,7.784,157,7.4,216,10.883,218,14.115,957,7.282,1491,11.795,2086,15.618]],["keywords/232",[]],["title/233",[204,887.528,205,453.758]],["content/233",[0,4.539,21,11.81,22,1.558,26,10.547,27,6.873,28,5.105,29,6.629,31,8.675,106,6.748,107,8.675,123,4.981,208,5.597,212,8.424,440,7.988,482,7.292,1491,10.045,1498,10.547]],["keywords/233",[]],["title/234",[408,401.208,418,342.017,1418,956.442]],["content/234",[]],["keywords/234",[]],["title/235",[444,1155.968]],["content/235",[41,6.839,77,3.899,97,4.592,183,4.893,293,6.839,307,7.353,408,6.684,418,5.267,474,6.626,475,7.079,484,5.954,490,5.689,493,8.537,497,6.261,498,6.82,583,8.056,848,5.874,989,7.079,1319,8.056,1377,7.606,1412,7.672,1419,7.672,1420,9.181,1470,6.839,1583,4.813,1630,8.056,1667,6.626,1712,9.181,2087,8.537,2088,8.537,2089,10.159,2090,7.672,2091,10.159,2092,8.537,2093,10.159,2094,10.159,2095,8.056,2096,10.159]],["keywords/235",[]],["title/236",[486,956.442,843,457.743,1592,670.336]],["content/236",[34,5.37,82,9.427,418,5.198,445,9.66,843,6.957,1082,8.313,2097,13.518]],["keywords/236",[]],["title/237",[146,250.399,185,227.642,701,429.483,843,324.418,848,311.162,1377,402.912]],["content/237",[22,1.632,65,11.028,146,6.525,490,5.11,652,10.644,704,4.902,731,3.947,742,5.623,839,6.658,841,5.952,848,6.971,921,5.78,1114,7.049,1207,5.623,1211,6.358,1268,7.668,1542,5.48,1667,5.952,2098,9.125,2099,9.125,2100,6.604,2101,11.028,2102,10.407,2103,6.891,2104,11.86,2105,9.125,2106,9.125,2107,5.952,2108,6.143,2109,8.246,2110,6.604,2111,8.246]],["keywords/237",[]],["title/238",[203,214.046,497,421.33,652,433.046,843,295.708,921,433.046,1377,568.195]],["content/238",[22,1.629,146,6.36,185,3.959,384,5.411,418,2.924,490,5.067,497,9.425,605,7.175,652,9.688,704,4.86,731,3.913,742,5.576,819,6.091,839,6.618,841,5.902,964,6.091,1211,6.305,1377,4.86,1542,5.434,1688,6.548,2100,6.548,2107,5.902,2108,6.091,2110,6.548,2112,7.604,2113,9.048,2114,9.048,2115,7.833,2116,13.043,2117,10.344,2118,11.788,2119,9.048,2120,9.048,2121,8.177,2122,9.048]],["keywords/238",[]],["title/239",[146,250.399,214,255.996,415,586.804,843,324.418,1229,594.81]],["content/239",[13,2.974,22,1.367,24,4.058,28,1.852,34,3.42,74,6.722,86,3.492,87,2.763,92,3.249,98,1.924,106,4.058,112,2.646,115,2.898,126,3.147,146,1.611,153,8.636,179,3.147,201,1.338,240,5.385,242,7.146,250,5.229,283,3.827,284,2.364,301,3.249,307,3.492,354,3.644,377,2.828,384,2.002,387,2.646,408,1.829,415,4.134,418,4.269,445,2.898,459,3.364,482,2.646,490,2.702,491,2.828,496,3.492,510,5.573,686,4.479,704,5.503,742,7.344,819,3.249,843,5.154,848,2.002,857,4.688,858,2.898,870,4.361,873,2.702,882,3.492,989,3.362,1114,6.401,1150,7.138,1229,8.124,1230,4.361,1231,3.362,1232,4.361,1236,8.609,1275,5.385,1292,4.479,1375,4.361,1377,2.592,1412,3.644,1518,3.644,1553,7.229,1592,3.056,1826,3.644,2088,4.055,2090,3.644,2123,4.055,2124,4.361,2125,4.361,2126,4.825,2127,4.825,2128,4.825,2129,6.896,2130,4.825,2131,4.825,2132,4.825,2133,4.825,2134,4.825,2135,4.825,2136,4.055,2137,4.825,2138,4.825,2139,4.055,2140,4.361,2141,4.361,2142,4.825,2143,4.825,2144,4.825,2145,4.825,2146,4.055,2147,4.361,2148,4.825,2149,7.998,2150,4.825,2151,4.825,2152,4.825,2153,4.825,2154,4.825,2155,4.055]],["keywords/239",[]],["title/240",[22,77.73,40,607.121,848,386.142,2115,558.999]],["content/240",[]],["keywords/240",[]],["title/241",[280,658.735,1332,1030.533]],["content/241",[22,1.569,25,3.587,40,7.273,82,4.292,146,2.445,185,2.222,237,3.414,276,4.638,278,9.408,384,6.262,431,4.93,546,5.118,605,5.807,652,4.638,686,4.101,704,3.934,731,3.167,775,5.3,839,3.715,843,6.529,848,7.381,857,7.913,921,7.062,999,5.807,1038,5.102,1114,7.253,1377,5.989,1650,6.618,2110,10.924,2115,6.696,2121,10.077,2125,6.618,2156,4.513,2157,7.323,2158,7.323,2159,7.323,2160,11.15,2161,8.421,2162,5.3,2163,7.323,2164,13.502,2165,7.323,2166,5.53,2167,7.323,2168,5.3,2169,7.323,2170,7.323,2171,7.323]],["keywords/241",[]],["title/242",[556,972.476,1419,926.119]],["content/242",[22,1.662,40,6.385,146,3.268,154,7.763,185,4.849,384,4.061,431,6.59,546,4.493,605,7.763,731,6.91,775,7.085,839,4.967,843,4.234,848,7.587,890,6.59,920,7.085,921,6.201,1114,7.411,1211,6.821,2102,7.763,2115,8.285,2117,7.763,2118,8.847,2168,7.085,2172,8.847,2173,9.789,2174,9.789,2175,9.789,2176,9.789,2177,15.976,2178,9.789]],["keywords/242",[]],["title/243",[1582,589.571,2115,558.999,2179,841.206,2180,626.623]],["content/243",[0,1.188,14,5.607,22,1.696,38,2.205,106,1.767,146,4.295,153,1.994,157,1.65,185,1.839,208,2.001,224,1.735,237,1.623,250,2.659,262,2.63,269,3.735,276,2.205,284,1.706,285,1.95,412,1.994,418,1.125,426,2.52,483,1.95,546,1.598,551,1.574,563,6.479,612,1.799,635,2.146,668,2.52,682,1.767,686,5.39,712,4.386,731,4.162,742,3.735,780,2.426,799,3.147,820,2.52,839,1.767,841,2.271,843,2.621,848,5.655,890,2.344,934,2.205,937,3.147,964,2.344,1082,1.799,1124,2.52,1161,2.426,1211,2.426,1259,2.761,1278,2.761,1377,3.255,1592,2.205,1663,3.147,1667,2.271,1677,3.147,1730,2.926,1896,2.926,2100,2.52,2112,2.926,2115,8.583,2124,3.147,2129,5.417,2161,2.63,2162,2.52,2166,2.63,2168,2.52,2179,3.147,2180,7.342,2181,3.482,2182,2.63,2183,3.482,2184,8.697,2185,9.623,2186,9.856,2187,6.06,2188,6.06,2189,8.046,2190,9.623,2191,3.482,2192,3.147,2193,3.482,2194,3.482,2195,3.482,2196,3.482,2197,3.482,2198,3.147,2199,3.482,2200,3.482,2201,3.482,2202,2.63,2203,6.06,2204,2.926,2205,3.482,2206,3.147,2207,3.147,2208,3.147,2209,2.344,2210,3.482,2211,5.477,2212,4.806,2213,2.926,2214,6.06,2215,3.147,2216,3.147,2217,6.06,2218,6.06,2219,3.482,2220,3.482,2221,8.046,2222,9.623,2223,3.482,2224,3.147,2225,3.482,2226,3.147,2227,5.477,2228,3.482,2229,3.147,2230,6.06,2231,6.06,2232,2.761,2233,3.482,2234,3.482,2235,3.482,2236,2.426,2237,3.482,2238,2.52,2239,2.63,2240,3.147,2241,3.482,2242,3.482,2243,3.482,2244,3.482,2245,3.482,2246,3.482,2247,3.482]],["keywords/243",[]],["title/244",[848,386.142,914,673.662,1207,573.62,2248,648.57]],["content/244",[]],["keywords/244",[]],["title/245",[284,600.679,1518,926.119]],["content/245",[14,4.688,22,1.753,214,3.565,237,6.731,276,6.616,384,5.312,385,5.398,418,2.174,447,3.943,456,4.688,464,5.85,472,5.117,498,3.24,592,8.896,612,5.398,686,7.171,755,4.146,801,6.437,841,4.388,843,2.91,999,5.335,1082,6.618,1275,4.529,1319,5.335,1358,5.653,1377,5.611,1491,5.081,1595,8.46,1604,9.44,1628,5.081,1667,6.813,2100,7.56,2162,4.869,2202,5.081,2248,7.279,2249,6.08,2250,6.727,2251,6.727,2252,5.081,2253,4.869,2254,6.727,2255,6.727,2256,6.727,2257,6.727,2258,6.727,2259,7.279,2260,6.727,2261,6.727,2262,6.727,2263,6.727,2264,6.727]],["keywords/245",[]],["title/246",[283,839.258,1275,712.464,2265,956.442]],["content/246",[18,1.177,22,0.805,34,1.71,47,5.656,85,1.515,92,1.936,105,1.515,108,1.515,110,2.872,115,1.727,124,3.609,146,4.353,153,1.647,173,1.545,185,1.555,203,2.168,214,0.982,219,1.487,237,1.341,240,1.936,244,4.047,250,5.081,275,2.172,279,4.629,285,1.611,286,1.545,301,4.661,305,2.082,311,1.822,331,1.459,348,4.386,377,1.686,384,2.872,386,1.434,387,1.577,412,3.965,418,3.994,431,1.936,447,1.686,459,1.21,483,3.878,551,1.3,561,1.936,563,1.936,612,3.578,694,2.004,745,2.172,752,3.707,765,3.796,766,1.936,768,1.822,780,2.004,786,2.172,793,5.854,801,4.267,805,2.004,819,7.191,839,4.263,841,8.506,848,2.872,890,3.448,921,6.766,932,1.686,964,1.936,985,1.876,989,2.004,997,3.341,1013,2.082,1038,3.569,1082,1.487,1114,1.545,1133,2.082,1147,2.172,1161,2.004,1175,3.707,1211,2.004,1217,2.281,1231,5.854,1275,8.779,1284,2.417,1292,2.869,1358,2.417,1380,2.082,1419,2.172,1439,2.172,1464,1.936,1542,1.727,1620,2.417,1621,2.417,1630,2.281,1648,6.258,1649,2.082,1653,4.629,1655,4.629,1656,3.868,1667,3.341,1684,2.6,1688,3.707,1734,2.417,1778,2.004,1789,2.417,1826,2.172,1861,2.172,1892,2.417,1896,2.417,2092,2.417,2103,2.172,2136,2.417,2166,3.868,2213,2.417,2238,2.082,2239,2.172,2253,3.707,2266,5.122,2267,2.876,2268,2.6,2269,4.304,2270,5.122,2271,2.6,2272,2.876,2273,2.417,2274,2.417,2275,2.876,2276,2.876,2277,2.876,2278,2.6,2279,2.876,2280,2.876,2281,2.876,2282,5.122,2283,2.6,2284,2.876,2285,2.417,2286,2.417,2287,2.6,2288,2.876,2289,2.876,2290,2.876,2291,2.876,2292,2.6,2293,6.081,2294,5.122,2295,2.876,2296,2.876,2297,2.876,2298,2.876,2299,2.876,2300,2.876,2301,2.876,2302,2.876,2303,2.876,2304,2.876,2305,2.876,2306,2.876,2307,2.876,2308,2.876,2309,2.876,2310,2.876,2311,2.6,2312,2.876,2313,2.281,2314,2.876,2315,5.122,2316,2.876,2317,2.876,2318,2.876,2319,2.876,2320,4.062,2321,2.6,2322,2.876,2323,2.876,2324,2.876,2325,2.6,2326,2.876,2327,2.876,2328,2.417,2329,2.281,2330,2.876,2331,2.417,2332,2.6,2333,2.876,2334,2.876,2335,2.876,2336,2.876,2337,2.876,2338,2.417,2339,2.876,2340,2.876,2341,2.876,2342,2.876,2343,2.876,2344,2.876,2345,2.876,2346,2.876]],["keywords/246",[]],["title/247",[848,386.142,914,673.662,1207,573.62,2248,648.57]],["content/247",[14,9.701,22,0.526,25,3.083,34,3.31,84,3.381,146,4.648,185,1.91,203,1.971,208,2.078,276,9.593,278,4.386,283,7.864,289,4.555,298,4.386,318,4.991,331,3.193,384,2.611,418,4.895,431,4.237,440,3.78,494,4.555,498,4.776,499,4.991,551,4.482,564,7.489,686,3.525,731,2.722,755,3.879,786,4.753,801,3.879,843,6.022,848,6.283,920,4.555,921,3.987,932,3.689,999,4.991,1082,3.253,1278,4.991,1592,3.987,1645,5.688,1732,8.333,1778,4.386,2100,4.555,2101,5.289,2103,9.266,2162,4.555,2202,4.753,2238,4.555,2248,9.701,2249,5.688,2252,10.514,2293,4.555,2328,5.289,2329,4.991,2347,8.962,2348,6.294,2349,6.294,2350,6.294,2351,6.294,2352,6.294,2353,6.294,2354,6.294,2355,6.294,2356,6.294,2357,6.294,2358,6.294,2359,6.294,2360,6.294,2361,6.294,2362,6.294,2363,6.294,2364,5.688,2365,6.294,2366,4.555,2367,4.753]],["keywords/247",[]],["title/248",[250,408.438,1439,702.954,1778,648.57,2107,607.121]],["content/248",[14,5.77,22,1.214,34,2.765,106,4.202,153,4.742,182,4.127,276,5.246,331,4.202,349,4.057,384,5.073,418,2.676,447,7.166,498,8.631,612,4.28,682,6.204,686,8.141,731,5.289,755,5.104,786,6.254,848,6.03,857,8.519,964,5.575,1082,4.28,1114,4.449,1150,5.77,1207,5.104,1276,5.575,1628,6.254,1778,5.77,1822,7.484,2100,5.994,2103,6.254,2129,5.575,2161,6.254,2182,6.254,2259,5.77,2293,10.521,2368,5.77,2369,6.959,2370,8.52,2371,8.281,2372,11.051,2373,8.281,2374,5.575,2375,8.281,2376,5.994,2377,6.959,2378,8.281,2379,8.281]],["keywords/248",[]],["title/249",[484,718.685,498,590.633]],["content/249",[]],["keywords/249",[]],["title/250",[704,783.028]],["content/250",[34,4.231,250,5.561,301,8.532,415,6.549,418,4.096,472,6.208,551,5.729,843,7.107,848,5.258,964,8.532,1038,8.831,1150,8.831,1168,11.454,1255,7.81,1292,7.098,1464,8.532,1667,8.266,1862,10.05,2123,10.65,2370,8.831,2380,13.03,2381,12.673,2382,11.454]],["keywords/250",[]],["title/251",[285,592.691,1583,501.415,2095,839.258]],["content/251",[105,6.836,300,7.432,408,4.92,418,5.393,422,11.73,445,7.795,498,8.037,551,5.867,772,10.293,843,5.614,1008,10.293,1255,7.999,1470,8.738,1576,9.394,2367,9.802,2370,9.044,2383,10.907,2384,11.73,2385,12.979,2386,12.979,2387,10.293]],["keywords/251",[]],["title/252",[498,590.633,2259,854.47]],["content/252",[0,2.023,14,6.588,22,1.648,24,3.007,34,1.979,72,2.456,76,1.861,77,1.303,85,1.788,87,3.394,110,2.459,157,1.608,189,2.563,203,1.063,204,2.456,214,3.227,237,1.582,248,3.067,250,2.601,251,2.563,266,2.456,276,3.754,282,2.852,284,1.662,292,2.15,298,2.365,318,2.691,349,1.662,350,2.285,363,2.038,384,4.452,415,1.754,428,2.563,431,2.285,445,2.038,447,1.989,464,7.538,472,2.903,483,3.319,494,2.456,498,5.681,564,2.563,612,4.077,635,2.092,680,2.852,686,4.418,731,2.563,772,6.256,780,2.365,801,2.092,820,5.71,843,1.468,848,5.584,857,6.29,890,2.285,919,3.067,952,2.563,989,2.365,997,2.214,1003,2.285,1259,2.691,1276,2.285,1292,3.319,1306,5.356,1353,2.852,1440,2.852,1462,2.456,1491,4.476,1518,2.563,1595,6.29,1628,4.476,1683,2.691,1758,2.852,1824,4.476,1831,2.092,1862,2.691,1977,2.563,2088,2.852,2090,2.563,2103,2.563,2107,2.214,2129,2.285,2146,2.852,2162,2.456,2180,2.285,2202,2.563,2227,5.356,2259,7.478,2285,2.852,2293,5.71,2347,3.067,2368,2.365,2369,2.852,2372,5.356,2374,3.99,2376,5.71,2384,3.067,2387,2.691,2388,5.927,2389,3.067,2390,5.927,2391,3.394,2392,12.692,2393,3.394,2394,3.394,2395,5.927,2396,2.852,2397,2.563,2398,5.927,2399,3.394,2400,5.927,2401,3.067,2402,3.394,2403,7.889,2404,3.394,2405,3.394,2406,3.394,2407,3.067,2408,3.067,2409,3.394,2410,3.394,2411,3.394,2412,3.394,2413,3.394,2414,3.067,2415,3.394,2416,3.394,2417,3.394,2418,3.394,2419,3.394,2420,2.691,2421,3.394,2422,3.067,2423,3.067,2424,3.394,2425,3.394,2426,5.927,2427,3.394,2428,3.067,2429,3.394,2430,3.394]],["keywords/252",[]],["title/253",[484,620.233,843,457.743,2397,799.251]],["content/253",[22,1.42,87,5.361,110,3.884,113,8.462,185,4.732,203,4.881,214,3.196,269,5.77,336,7.071,377,5.487,415,6.908,418,5.038,472,4.586,551,4.232,592,5.77,843,4.05,848,3.884,1006,7.868,1255,9.608,1470,6.303,1542,5.623,1591,5.487,1649,6.776,1824,7.071,2204,11.234,2370,6.524,2382,8.462,2387,7.425,2396,11.234,2397,7.071,2431,9.363,2432,9.363,2433,9.363,2434,9.363,2435,9.363,2436,7.868,2437,9.363,2438,13.367,2439,9.363,2440,8.462]],["keywords/253",[]],["title/254",[84,658.735,284,600.679]],["content/254",[]],["keywords/254",[]],["title/255",[75,605.987,77,406.193,477,568.496]],["content/255",[13,1.41,19,1.282,22,1.525,24,1.161,28,0.878,34,1.392,38,2.641,50,2.068,66,3.017,77,0.878,82,3.365,87,1.311,123,0.857,124,1.561,125,1.183,146,3.855,147,1.252,153,4.051,180,1.45,203,1.305,205,0.847,208,1.896,214,1.423,215,2.387,224,3.526,240,3.865,241,5.343,245,1.923,250,1.004,251,8.202,269,2.569,284,1.121,285,2.335,300,1.311,387,1.255,408,0.868,415,1.183,417,1.656,418,2.286,440,1.375,448,1.229,459,0.963,475,1.595,482,1.255,483,1.282,493,1.923,496,3.017,497,3.538,498,1.102,500,1.41,546,3.774,552,1.923,592,1.41,633,1.815,635,2.569,652,1.45,660,1.815,663,2.443,673,1.493,704,1.229,731,4.697,739,1.923,745,1.729,768,1.45,774,1.656,786,1.729,841,1.493,843,2.483,848,0.949,858,1.375,864,3.148,866,2.068,882,1.656,934,2.641,938,1.729,952,1.729,957,5.384,979,2.068,997,3.745,1003,1.541,1038,1.595,1043,1.595,1082,4.763,1268,1.923,1290,5.946,1319,1.815,1320,2.068,1321,2.068,1325,1.815,1377,1.229,1462,5.95,1518,1.729,1542,1.375,1554,1.729,1559,1.815,1568,4.336,1592,1.45,1608,1.923,1624,2.068,1647,1.729,1667,1.493,1731,3.503,1756,2.068,1762,6.394,1957,2.068,1977,1.729,2073,2.068,2076,2.068,2090,3.148,2101,1.923,2107,1.493,2166,6.209,2182,1.729,2212,1.815,2215,2.068,2216,2.068,2229,2.068,2232,4.553,2236,1.595,2238,1.656,2239,1.729,2252,5.343,2253,6.671,2265,3.768,2268,2.068,2292,3.768,2313,1.815,2320,7.309,2321,2.068,2325,5.189,2329,4.553,2331,3.503,2332,3.768,2364,2.068,2366,5.121,2368,2.905,2389,2.068,2436,1.923,2441,2.068,2442,2.289,2443,2.289,2444,2.289,2445,2.289,2446,2.289,2447,4.169,2448,2.289,2449,4.169,2450,2.289,2451,2.068,2452,1.923,2453,2.289,2454,2.289,2455,2.289,2456,5.741,2457,2.289,2458,2.289,2459,5.741,2460,4.169,2461,2.289,2462,4.169,2463,4.169,2464,2.289,2465,2.289,2466,1.815,2467,4.169,2468,5.741,2469,2.289,2470,2.289,2471,2.289,2472,7.075,2473,2.289,2474,5.741,2475,2.289,2476,2.289,2477,4.169,2478,4.169,2479,2.289,2480,1.923,2481,1.923,2482,4.169,2483,2.289,2484,2.289,2485,2.289,2486,2.289,2487,2.289,2488,4.169,2489,2.289,2490,2.289,2491,2.289,2492,2.289,2493,2.289,2494,2.289,2495,2.289,2496,2.289,2497,2.289,2498,2.289,2499,2.289,2500,2.289,2501,2.289,2502,2.289,2503,2.289,2504,2.289,2505,2.289,2506,2.289,2507,2.289,2508,2.289,2509,2.289,2510,2.289,2511,4.169,2512,2.289,2513,2.289,2514,2.289,2515,2.289,2516,2.289,2517,2.289,2518,2.289,2519,2.289,2520,2.289,2521,2.289,2522,2.289,2523,2.289,2524,2.289,2525,2.289,2526,2.289,2527,2.289,2528,2.289,2529,2.289,2530,2.289,2531,2.289,2532,2.289,2533,2.289,2534,2.289,2535,2.289]],["keywords/255",[]],["title/256",[309,972.476,957,571.765]],["content/256",[19,5.433,22,1.145,92,6.531,105,5.11,149,6.531,243,5.978,298,6.759,418,4.43,477,5.211,498,4.672,500,5.978,504,6.531,546,6.292,682,8.066,712,7.021,755,5.978,843,4.196,848,4.024,957,6.392,1082,5.013,1167,7.021,1257,8.767,1273,8.767,1274,8.767,1275,6.531,1276,6.531,1360,13.048,1377,5.211,1591,5.685,1918,8.152,2115,5.826,2180,6.531,2328,8.152,2536,9.701,2537,9.701,2538,9.701,2539,9.701,2540,7.326,2541,9.701,2542,9.701,2543,9.701,2544,9.701]],["keywords/256",[]],["title/257",[1244,652.2,1292,592.691,1435,889.361]],["content/257",[]],["keywords/257",[]],["title/258",[22,57.094,123,256.044,185,207.496,498,329.288,848,283.625,857,400.679,1436,542.171]],["content/258",[22,0.988,76,6.489,276,7.497,280,6.358,285,6.629,384,4.91,464,6.629,498,5.701,780,10.947,848,4.91,1105,7.72,1292,6.629,1582,7.497,2182,8.939,2248,8.247,2259,8.247,2374,7.968,2414,10.697,2545,14.199,2546,15.711,2547,15.711,2548,11.836,2549,11.836,2550,10.697,2551,11.836,2552,11.836,2553,11.836]],["keywords/258",[]],["title/259",[22,62.637,123,280.903,203,234.828,1436,594.81,2115,450.454,2554,677.863]],["content/259",[22,0.999,34,3.995,124,4.482,146,3.995,186,5.58,237,7.379,280,6.429,418,3.868,497,7.376,768,7.581,1211,8.339,1275,8.057,1292,6.703,1582,7.581,2108,8.057,2161,9.039,2206,10.816,2207,10.816,2208,10.816,2209,8.057,2211,10.816,2212,9.491,2240,10.816,2555,14.303,2556,11.968,2557,11.968,2558,11.968,2559,11.968]],["keywords/259",[]],["title/260",[22,82.672,40,409.681,123,235.227,214,214.37,848,260.566,1377,337.397,1436,498.092]],["content/260",[204,9.626,237,6.201,280,7.145,613,9.626,686,7.449,843,5.753,848,5.518,932,7.795,1114,7.145,1292,7.449,1377,7.145,1582,8.424,1752,12.02,2168,9.626,2180,8.954,2545,15.318,2555,15.318,2560,13.3,2561,13.3]],["keywords/260",[]],["title/261",[201,340.142,2156,755.726]],["content/261",[]],["keywords/261",[]],["title/262",[185,227.642,311,475.09,551,339.048,858,450.454,2156,462.236,2209,504.947]],["content/262",[22,1.242,146,4.201,149,5.798,203,2.697,208,4.156,214,2.94,219,6.504,237,4.016,311,5.456,312,4.537,348,7.972,384,5.221,418,4.067,483,4.824,500,5.308,504,5.798,520,6.002,546,3.953,612,4.451,673,5.618,683,7.238,686,4.824,793,6.002,820,6.234,839,4.37,843,7.075,848,5.221,890,5.798,934,5.456,957,8.113,1114,4.627,1150,6.002,1255,5.308,2107,8.209,2110,9.109,2115,5.173,2147,7.784,2209,5.798,2420,6.83,2540,6.505,2562,7.238,2563,8.613,2564,8.613,2565,8.613,2566,8.613,2567,7.784,2568,7.784]],["keywords/262",[]],["title/263",[203,234.828,551,339.048,1124,542.852,2156,462.236,2209,504.947,2569,677.863]],["content/263",[22,1.157,87,4.372,122,4.186,146,2.549,149,5.14,157,3.617,185,4.203,203,3.603,208,3.8,237,3.56,312,4.021,348,4.836,384,4.774,418,3.719,483,4.276,498,3.677,500,4.705,546,5.282,551,5.202,592,7.092,673,4.98,693,9.126,742,4.705,843,6.669,848,4.774,857,4.474,934,4.836,957,8.108,964,5.14,1255,4.705,1377,4.101,1559,6.054,1732,6.416,1946,6.9,2107,4.98,2110,8.329,2115,6.911,2161,5.766,2168,5.526,2209,5.14,2283,6.9,2370,5.32,2383,6.416,2420,6.054,2540,5.766,2554,6.9,2562,6.416,2569,6.9,2570,7.635,2571,7.635,2572,7.635,2573,7.635,2574,6.9,2575,6.9,2576,7.635,2577,7.635,2578,7.635,2579,7.635]],["keywords/263",[]],["title/264",[214,255.996,240,504.947,551,339.048,857,439.58,2156,462.236,2311,677.863]],["content/264",[22,0.971,41,5.214,52,4.906,146,2.585,149,5.214,153,4.435,208,3.841,219,4.002,237,5.424,241,5.849,249,5.605,251,5.849,266,5.605,312,4.079,348,4.906,384,3.213,418,3.759,483,4.337,500,4.773,510,5.396,546,3.555,612,4.002,660,6.142,673,5.052,780,8.105,843,7.2,848,5.795,934,4.906,957,8.455,1082,4.002,1231,5.396,1255,4.773,1826,5.849,2107,5.052,2110,8.419,2115,4.651,2168,5.605,2252,5.849,2253,5.605,2320,11.078,2366,8.419,2368,5.396,2374,7.831,2540,5.849,2562,6.508,2567,6.999,2568,6.999,2580,7.745,2581,7.745,2582,7.745,2583,6.508,2584,7.745,2585,7.745,2586,11.632,2587,7.745,2588,7.745]],["keywords/264",[]],["title/265",[219,481.026,498,448.309,1591,545.505,2156,573.62]],["content/265",[22,1.236,87,7.164,110,3.545,146,2.853,185,5.264,203,5.43,269,5.266,348,5.412,377,5.008,408,3.239,418,5.856,498,4.115,524,4.335,551,5.656,592,10.042,839,4.335,843,3.696,848,5.191,934,5.412,957,8.087,1255,9.123,1276,8.423,1282,7.181,1470,5.752,1489,6.776,1583,7.014,1591,7.333,2370,8.718,2383,7.181,2440,7.722,2589,7.722,2590,7.722,2591,12.512]],["keywords/265",[]],["title/266",[237,433.988,498,448.309,1008,738.141,2156,573.62]],["content/266",[87,7.56,108,4.847,110,3.818,146,3.072,185,4.007,203,2.881,377,5.393,408,5.005,418,5.452,498,4.432,524,4.669,551,7.626,592,11.008,839,4.669,843,5.711,848,3.818,932,5.393,934,5.829,957,6.156,1008,7.298,1124,6.661,1255,8.137,1276,8.889,1282,7.734,1470,6.195,1489,7.298,1583,6.256,2108,6.195,2293,6.661,2370,6.412,2374,6.195,2380,7.298,2387,7.298,2396,7.734,2397,6.95,2589,8.317,2590,8.317,2592,9.203,2593,9.203]],["keywords/266",[]],["title/267",[295,1030.533,957,571.765]],["content/267",[14,3.768,22,1.425,25,2.649,40,3.527,106,2.744,110,2.243,146,2.932,185,1.641,208,4.966,214,1.846,243,3.333,298,3.768,310,4.887,311,3.425,384,2.243,408,2.05,415,5.731,418,3.584,464,7.149,483,3.029,498,4.23,500,3.333,504,3.641,520,3.768,546,2.482,563,3.641,592,3.333,612,2.795,660,4.289,686,4.918,712,3.914,775,3.914,793,3.768,843,7.14,848,6.848,857,6.499,932,3.169,957,4.095,1038,3.768,1082,2.795,1124,3.914,1255,3.333,1276,3.641,1360,4.084,1377,4.718,1470,3.641,1583,6.048,1591,5.147,1649,3.914,1918,4.545,2092,4.545,2115,6.66,2123,4.545,2129,3.641,2180,7.465,2192,4.887,2226,4.887,2238,3.914,2252,4.084,2253,3.914,2293,3.914,2313,4.289,2329,4.289,2366,3.914,2376,3.914,2380,4.289,2452,4.545,2594,5.408,2595,5.408,2596,5.408,2597,5.408,2598,5.408,2599,5.408,2600,5.408,2601,5.408,2602,5.408,2603,5.408,2604,5.408,2605,5.408,2606,4.887,2607,5.408,2608,5.408,2609,5.408,2610,5.408,2611,5.408,2612,5.408,2613,5.408,2614,5.408,2615,5.408,2616,5.408]],["keywords/267",[]],["title/268",[632,825.556,2481,1030.533]],["content/268",[]],["keywords/268",[]],["title/269",[202,887.528,2617,1108.262]],["content/269",[23,5.198,34,3.099,110,3.851,115,5.575,123,4.975,146,4.435,173,8.334,250,4.073,285,5.198,408,3.519,418,4.293,447,7.786,464,5.198,524,4.71,551,7.013,652,5.879,825,7.8,848,7.026,864,7.01,1275,6.249,1380,6.718,1421,7.01,1464,6.249,1640,11.164,2095,7.361,2129,6.249,2209,8.944,2273,7.8,2274,7.8,2286,7.8,2367,7.01,2376,6.718,2618,8.389,2619,9.282,2620,9.282,2621,8.389,2622,9.282,2623,8.389,2624,8.389,2625,9.282,2626,9.282,2627,8.389,2628,8.389]],["keywords/269",[]],["title/270",[1152,1030.533,1207,755.726]],["content/270",[24,6.507,214,4.377,348,8.123,418,4.145,464,7.182,551,5.797,561,8.634,774,9.282,1133,9.282,1150,8.936,1377,6.889,1595,7.516,2180,8.634,2232,10.17,2239,9.685,2248,8.936,2259,8.936,2374,8.634,2480,10.777,2629,12.824,2630,12.824,2631,11.59,2632,11.59,2633,8.634]],["keywords/270",[]],["title/271",[632,825.556,2481,1030.533]],["content/271",[]],["keywords/271",[]],["title/272",[202,887.528,2617,1108.262]],["content/272",[0,1.166,13,3.673,22,1.312,23,1.913,34,1.99,38,2.163,40,2.228,51,3.775,52,2.163,92,2.299,98,2.376,110,3.939,115,2.051,123,2.969,124,1.279,125,1.765,146,1.99,157,1.618,173,6.841,185,1.037,195,1.499,201,0.947,203,1.069,214,1.166,215,1.956,240,2.299,250,5.588,251,2.579,275,2.579,276,2.163,280,1.835,284,3.883,285,3.338,301,2.299,305,4.313,338,3.087,348,2.163,349,1.673,364,5.386,384,1.417,387,1.873,408,1.295,412,1.956,415,1.765,417,2.472,418,2.562,423,2.579,447,4.646,460,2.579,464,1.913,472,1.673,483,1.913,498,2.87,511,2.709,524,1.733,551,4.293,561,5.337,570,2.87,584,2.105,630,2.709,632,2.299,652,2.163,683,2.87,692,2.709,731,2.578,742,3.673,766,2.299,774,2.472,793,4.153,797,5.386,825,2.87,848,4.911,857,2.002,858,2.051,864,2.579,873,4.44,947,2.87,952,2.579,955,2.709,997,2.228,1124,2.472,1161,2.38,1231,2.38,1292,1.913,1380,2.472,1421,2.579,1441,2.87,1464,2.299,1473,2.87,1520,7.165,1574,2.87,1620,2.87,1640,5.008,1647,5.987,1656,4.501,2087,2.87,2090,5.987,2095,2.709,2102,2.709,2104,3.087,2117,2.709,2129,4.012,2139,5.008,2162,2.472,2209,7.969,2224,3.087,2238,2.472,2269,2.87,2271,3.087,2273,2.87,2274,2.87,2286,2.87,2287,3.087,2338,2.87,2367,5.987,2374,2.299,2376,2.472,2377,2.87,2401,3.087,2407,3.087,2408,3.087,2428,3.087,2583,5.008,2618,5.386,2621,3.087,2623,3.087,2624,3.087,2627,3.087,2628,3.087,2633,2.299,2634,3.415,2635,7.928,2636,3.415,2637,3.415,2638,7.165,2639,3.415,2640,7.928,2641,3.415,2642,3.415,2643,3.415,2644,3.415,2645,3.415,2646,3.415,2647,3.415,2648,3.415,2649,2.709,2650,3.415,2651,3.415,2652,3.415,2653,3.415,2654,5.959,2655,3.415,2656,3.415,2657,3.415,2658,2.709,2659,3.415,2660,3.415,2661,3.415,2662,3.415,2663,3.415,2664,3.415,2665,3.415,2666,3.415,2667,3.415,2668,3.415,2669,3.415,2670,3.415,2671,3.415,2672,3.415,2673,3.415]],["keywords/272",[]],["title/273",[1152,1030.533,1207,755.726]],["content/273",[9,0.928,13,0.952,18,0.633,19,2.293,22,1.598,24,0.784,25,0.757,34,2.326,41,1.04,42,2.756,46,1.04,51,0.979,52,0.979,72,1.118,82,2.4,85,2.157,86,1.118,87,2.344,89,1.008,97,0.699,105,1.527,106,0.784,110,1.203,122,0.847,123,0.579,124,0.579,125,0.799,126,1.008,146,3.583,153,1.66,157,2.444,179,1.008,185,2.35,195,0.678,201,0.429,203,2.645,205,1.515,208,0.51,214,2.085,219,0.799,221,1.589,230,1.397,231,0.865,237,1.909,240,3.472,243,0.952,244,0.744,247,1.008,250,3.057,266,1.118,273,1.04,280,3.282,284,2.526,285,1.624,289,1.118,301,1.04,319,1.299,325,2.098,348,0.979,349,0.757,354,1.167,384,2.89,408,1.099,412,1.66,418,4.124,434,6.297,445,0.928,447,0.906,454,4.07,464,2.889,472,2.006,481,1.299,483,0.865,494,1.118,520,1.077,546,2.805,551,7.461,552,1.299,584,0.952,592,3.179,600,1.299,612,0.799,633,4.09,637,2.299,652,1.836,668,1.118,673,1.008,686,3.902,701,2.344,713,1.226,724,4.09,731,1.771,742,0.952,774,2.098,780,1.077,801,0.952,819,3.472,848,3.505,857,0.906,873,0.865,920,1.118,938,1.167,947,1.299,955,1.226,989,2.02,997,1.008,1014,1.04,1038,1.077,1062,1.397,1082,0.799,1083,1.299,1114,1.557,1133,2.098,1150,2.853,1229,3.247,1231,4.257,1259,1.226,1284,1.299,1287,1.397,1370,1.397,1377,0.83,1419,3.092,1421,1.167,1441,1.299,1462,1.118,1464,1.04,1536,1.397,1542,3.098,1582,2.593,1587,2.436,1592,3.87,1595,0.906,1667,1.008,1688,1.118,1696,1.397,1763,1.299,1824,1.167,2087,2.436,2102,2.299,2107,1.008,2109,4.661,2111,1.397,2112,1.299,2117,2.299,2129,1.04,2139,2.436,2155,1.299,2166,1.167,2172,2.62,2180,3.472,2182,1.167,2184,2.62,2186,2.62,2198,2.62,2202,2.189,2204,1.299,2212,1.226,2213,1.299,2232,4.845,2236,1.077,2239,1.167,2248,1.077,2259,4.257,2269,1.299,2278,1.397,2313,1.226,2320,9.224,2331,2.436,2338,1.299,2367,1.167,2368,2.02,2369,4.334,2374,1.952,2376,1.118,2380,1.226,2420,2.299,2422,2.62,2441,1.397,2451,1.397,2452,1.299,2466,2.299,2480,1.299,2540,1.167,2550,1.397,2574,1.397,2575,1.397,2583,1.299,2606,3.7,2631,1.397,2632,1.397,2633,1.952,2638,3.7,2658,1.226,2674,1.545,2675,2.899,2676,1.545,2677,1.545,2678,1.545,2679,1.545,2680,1.545,2681,1.545,2682,1.545,2683,1.545,2684,1.545,2685,1.545,2686,1.545,2687,1.545,2688,1.545,2689,1.545,2690,1.545,2691,1.545,2692,1.545,2693,1.545,2694,1.545,2695,1.545,2696,1.545,2697,1.545,2698,1.545,2699,4.094,2700,2.62,2701,1.545,2702,1.545,2703,1.545,2704,2.899,2705,1.545,2706,5.158,2707,1.545,2708,2.899,2709,1.545,2710,1.545,2711,1.545,2712,1.545,2713,1.545,2714,1.545,2715,6.11,2716,1.545,2717,1.545,2718,4.094,2719,1.545,2720,1.545,2721,2.899,2722,1.545,2723,2.899,2724,1.545,2725,1.545,2726,1.545,2727,1.545,2728,1.545,2729,1.545,2730,1.545,2731,1.545,2732,1.545,2733,1.545,2734,1.545,2735,1.545,2736,2.62,2737,1.545,2738,1.545,2739,1.545,2740,1.545,2741,1.545,2742,1.545,2743,1.545,2744,1.545,2745,2.899,2746,2.899,2747,1.545,2748,1.545,2749,1.545,2750,1.545,2751,1.545,2752,2.899,2753,1.545,2754,1.545,2755,1.545,2756,1.545,2757,1.545,2758,1.545,2759,1.545,2760,1.545,2761,1.545,2762,1.545,2763,1.545,2764,1.545,2765,1.545,2766,1.545,2767,1.545,2768,1.545,2769,1.545,2770,1.545,2771,1.545,2772,1.545,2773,1.545,2774,1.545,2775,1.545,2776,1.299,2777,1.545,2778,1.545,2779,1.545,2780,1.545]],["keywords/273",[]],["title/274",[701,834.667]],["content/274",[37,7.564,97,6.861,123,5.684,250,6.66,284,7.434,418,4.905,688,6.967,702,8.691,2781,15.177,2782,15.177,2783,15.177]],["keywords/274",[]],["title/275",[2784,1457.646]],["content/275",[24,7.811,87,8.815,97,6.959,484,9.022,498,7.415,592,9.487,1412,11.626,1421,11.626,1489,12.208,2436,12.937]],["keywords/275",[]],["title/276",[375,755.726,631,432.979]],["content/276",[]],["keywords/276",[]],["title/277",[444,1155.968]],["content/277",[28,3.502,34,3.046,57,5.371,61,3.222,116,5.003,124,3.417,134,5.444,147,3.942,185,3.983,203,4.108,214,4.479,297,4.152,381,8.087,383,4.395,384,5.444,385,6.782,386,4.548,412,5.225,445,5.48,477,4.902,524,4.63,546,4.188,612,4.716,613,6.604,631,6.744,704,7.049,727,5.225,1041,11.028,1236,7.668,1521,6.604,1797,6.358,2097,7.668,2423,13.888,2649,7.236,2700,8.246,2785,9.125,2786,8.246,2787,7.236]],["keywords/277",[]],["title/278",[134,344.62,185,252.12,631,293.306,1521,601.224,1797,578.83]],["content/278",[18,1.858,22,1.45,28,1.743,34,2.538,36,2.224,44,4.103,56,1.603,57,1.858,61,3.463,76,7.002,77,1.743,89,2.961,105,4.004,106,2.304,110,4.069,116,2.489,124,2.847,134,4.759,139,3.662,142,4.816,147,3.446,157,3.602,180,2.876,182,3.789,185,2.307,203,3.071,208,4.217,214,1.55,221,2.489,223,2.543,224,2.263,292,2.876,297,1.436,350,3.057,383,3.662,384,3.154,385,3.929,391,1.272,396,2.543,399,3.429,401,2.798,412,4.353,428,3.429,448,2.439,454,5.525,489,3.429,490,2.543,577,2.961,612,3.929,631,4.05,634,3.429,635,4.685,641,3.429,655,4.103,704,2.439,723,6.569,731,1.964,740,3.601,746,2.727,747,3.286,751,3.815,773,3.057,776,3.057,807,3.601,922,3.164,932,2.661,985,4.959,997,2.961,1105,2.961,1129,3.164,1244,2.798,1264,3.601,1316,3.601,1453,4.103,1521,3.286,1544,3.601,1595,5.748,1649,3.286,1703,3.286,1797,3.164,1831,2.798,1895,3.286,2018,8.864,2108,3.057,2141,4.103,2146,3.815,2466,3.601,2633,3.057,2658,3.601,2788,4.54,2789,4.54,2790,4.54,2791,4.54,2792,4.103,2793,4.54,2794,4.54,2795,4.54,2796,4.54,2797,4.54,2798,2.961,2799,4.54,2800,4.54,2801,4.54,2802,3.815,2803,4.103,2804,4.103,2805,4.54,2806,4.54,2807,4.54,2808,4.54,2809,4.54,2810,4.103,2811,4.54,2812,4.54,2813,4.54,2814,4.103,2815,4.103,2816,4.103]],["keywords/278",[]],["title/279",[203,234.828,244,361.258,381,462.236,436,439.58,631,264.83,727,429.483]],["content/279",[11,3.264,18,1.59,22,1.408,34,2.224,56,2.352,57,5.571,61,1.371,72,4.821,76,2.13,77,1.491,85,2.046,89,6.761,98,1.549,106,1.971,110,1.611,116,2.13,124,3.882,125,2.007,136,5.03,142,2.46,146,2.919,147,2.001,180,2.46,185,3.54,195,2.923,203,2.085,205,1.437,208,2.888,223,2.175,224,1.936,242,3.156,243,5.389,244,1.871,250,1.704,280,2.087,282,3.264,292,2.46,297,3.28,331,3.38,375,2.394,381,4.105,384,4.838,385,2.007,386,4.358,394,2.811,401,2.394,403,2.13,418,1.255,436,2.276,453,2.333,454,3.208,469,2.276,482,2.13,494,4.821,495,4.105,496,2.811,524,1.971,546,1.783,608,3.08,611,3.51,612,3.442,613,4.821,614,3.51,618,2.933,620,3.08,623,6.02,624,3.51,625,6.02,627,3.51,628,2.933,629,3.51,631,4.805,632,2.615,633,3.08,634,2.933,635,2.394,636,3.08,637,5.282,638,3.51,639,3.264,654,2.933,704,2.087,723,3.814,727,2.224,731,1.68,732,2.333,776,2.615,801,2.394,819,2.615,858,2.333,862,3.51,863,2.933,1001,2.707,1013,4.821,1027,3.264,1041,3.264,1060,2.811,1105,2.534,1129,2.707,1233,3.264,1244,2.394,1595,3.904,1683,3.08,1703,2.811,1797,2.707,1831,2.394,1892,3.264,1895,2.811,2014,3.51,2140,3.51,2368,2.707,2786,3.51,2792,3.51,2798,4.345,2817,3.884,2818,3.884,2819,3.884,2820,3.884,2821,3.884,2822,3.884,2823,3.884,2824,6.661,2825,3.884,2826,3.51,2827,3.884,2828,3.884,2829,6.661,2830,3.884,2831,3.884,2832,3.884,2833,3.884,2834,3.884,2835,3.884,2836,3.884,2837,3.884,2838,3.884,2839,3.884,2840,3.884,2841,3.884,2842,3.884,2843,3.884,2844,3.884,2845,3.884,2846,3.884]],["keywords/279",[]],["title/280",[214,283.523,381,511.939,385,429.302,631,293.306,727,475.665]],["content/280",[22,1.104,34,2.364,37,3.529,39,4.253,57,5.413,77,2.718,110,2.938,116,3.883,125,3.66,136,5.348,139,3.411,147,3.265,223,3.966,224,3.529,242,3.355,250,3.107,297,4.693,300,4.055,354,5.348,381,6.698,383,3.411,384,2.938,385,9.087,403,3.883,425,4.934,454,3.411,469,4.15,524,3.593,607,6.4,620,5.616,631,3.837,678,4.934,704,3.804,731,3.063,732,4.253,801,4.364,839,3.593,1001,4.934,1027,5.951,1175,5.125,1576,9.572,2066,6.4,2108,7.317,2285,5.951,2366,7.866,2377,5.951,2736,6.4,2798,4.619,2826,6.4,2847,7.082,2848,7.082,2849,13.447,2850,7.082,2851,7.082,2852,7.082,2853,7.082,2854,7.082,2855,7.082,2856,13.225,2857,7.082,2858,7.082,2859,7.082,2860,7.082,2861,7.082,2862,7.082,2863,7.082]],["keywords/280",[]],["title/281",[123,348.592,1001,648.57,2864,930.776,2865,782.207]],["content/281",[22,1.645,28,2.489,32,6.833,36,3.176,37,3.232,56,4.416,57,6.288,71,12.755,75,3.713,92,4.365,109,7.346,115,3.894,123,4.684,124,2.428,134,2.69,156,5.449,223,3.631,224,7.053,297,3.211,307,4.693,341,4.897,349,3.176,386,5.059,438,3.351,464,3.631,490,3.631,631,5.752,965,9.052,1001,8.715,1003,4.365,1017,5.86,1964,5.449,2649,5.142,2798,8.158,2865,5.449,2866,6.484,2867,5.86,2868,6.484,2869,6.484,2870,6.484,2871,5.86,2872,6.484,2873,6.484,2874,6.484,2875,6.484,2876,6.484,2877,6.484,2878,6.484,2879,6.484,2880,6.484,2881,10.15,2882,6.484,2883,6.484,2884,6.484,2885,6.484,2886,6.484,2887,6.484,2888,6.484,2889,6.484]],["keywords/281",[]],["title/282",[56,373.666,631,373.666,2156,652.2]],["content/282",[]],["keywords/282",[]],["title/283",[185,252.12,454,400.103,685,559.243,858,498.891,2156,511.939]],["content/283",[18,3.17,22,1.67,40,5.052,57,7.156,76,4.246,85,4.079,110,3.213,124,4.356,146,2.585,147,3.494,185,3.53,203,4.374,205,2.866,208,2.557,214,2.643,292,4.906,297,5.531,384,3.213,386,7.74,391,3.258,445,4.651,477,4.16,631,6.173,746,4.651,801,7.169,805,5.396,921,4.906,924,6.508,926,8.785,932,4.539,1013,8.419,1114,4.16,1119,6.142,1129,5.396,1831,4.773,2787,6.142,2890,6.999,2891,7.745,2892,6.508,2893,7.745,2894,7.745]],["keywords/283",[]],["title/284",[203,291.414,454,448.309,723,532.975,2156,573.62]],["content/284",[18,2.861,22,1.687,57,2.861,76,5.899,87,4.002,93,4.427,110,4.464,147,3.232,185,3.265,203,2.188,208,4.332,292,4.427,350,7.243,386,6.538,391,3.014,448,3.755,454,7.096,477,3.755,592,10.786,631,4.632,635,4.307,636,5.543,694,4.87,723,8.436,776,4.706,805,4.87,867,5.874,922,4.87,1105,4.559,1119,5.543,1143,11.855,1157,6.317,1544,5.543,1703,5.059,1831,4.307,1895,5.059,2368,10.265,2798,4.559,2895,6.989,2896,13.118,2897,13.118,2898,6.989,2899,6.989,2900,6.989,2901,6.989,2902,6.989,2903,6.989]],["keywords/284",[]],["title/285",[147,225.325,208,247.682,214,255.996,746,450.454,747,542.852,2156,462.236]],["content/285",[22,1.689,34,2.585,47,5.214,57,6.357,61,4.107,124,4.356,147,4.665,185,3.53,195,3.398,203,4.374,208,2.557,244,5.603,297,3.68,349,5.698,383,5.603,386,6.963,396,4.337,403,6.378,405,3.669,408,2.936,418,2.503,436,6.817,477,4.16,631,5.877,727,6.661,746,4.651,819,5.214,858,6.986,930,6.508,1013,8.419,1102,6.999,1119,6.142,1231,5.396,1827,6.999,2798,7.587,2904,6.999,2905,6.999,2906,7.745,2907,7.745,2908,7.745]],["keywords/285",[]],["title/286",[185,252.12,631,432.714,1043,578.83,1129,578.83]],["content/286",[42,8.432,134,5.196,341,9.46,631,4.423,776,8.432,1474,10.526,1647,9.46,2155,10.526,2867,11.32,2871,11.32,2909,12.525,2910,12.525,2911,12.525,2912,12.525,2913,12.525,2914,12.525,2915,12.525,2916,12.525,2917,12.525,2918,12.525,2919,12.525,2920,12.525,2921,12.525,2922,12.525,2923,12.525,2924,12.525]],["keywords/286",[]],["title/287",[61,264.83,139,361.258,185,227.642,396,420.06,2236,522.632,2633,504.947]],["content/287",[22,1.583,34,2.971,61,5.349,139,4.286,189,6.72,208,2.938,231,4.983,280,4.78,383,6.207,385,4.598,396,7.217,612,6.66,631,4.55,634,6.72,746,5.344,776,5.99,985,10.834,997,5.804,1129,6.2,1394,6.72,2108,5.99,2253,6.44,2466,7.056,2633,5.99,2658,7.056,2802,7.478,2803,8.042,2804,8.042,2890,8.042,2904,8.042,2905,8.042,2925,12.887,2926,11.647,2927,8.042,2928,8.898,2929,8.898,2930,8.898,2931,8.898,2932,8.898,2933,8.898,2934,8.898,2935,8.898,2936,8.898,2937,8.898]],["keywords/287",[]],["title/288",[185,227.642,203,234.828,208,247.682,631,264.83,1647,566.456,2236,522.632]],["content/288",[22,1.518,27,4.031,61,4.129,76,9.155,82,4.572,110,4.852,124,2.922,147,4.215,153,4.467,185,4.258,203,2.442,208,5.147,214,2.662,224,3.888,250,3.423,262,5.891,292,4.941,297,2.468,383,7.507,391,3.276,438,4.031,454,3.757,631,4.129,727,4.467,731,3.374,742,4.807,746,7.024,747,5.646,749,7.05,750,7.05,751,6.556,757,7.05,805,5.436,908,7.05,922,5.436,932,4.572,1244,4.807,1464,5.252,1734,6.556,1831,4.807,1959,7.05,2072,7.05,2892,6.556,2938,7.801,2939,7.801,2940,7.801,2941,11.695,2942,7.801,2943,7.801,2944,7.801,2945,7.801,2946,7.801]],["keywords/288",[]],["title/289",[28,287.882,134,311.162,214,255.996,839,380.555,1175,542.852,2236,522.632]],["content/289",[18,4.592,22,0.937,28,5.818,38,7.106,61,3.961,123,4.202,124,4.202,125,5.798,134,6.288,182,5.592,183,5.404,243,6.914,250,4.923,286,6.027,297,4.796,357,8.473,386,5.592,489,8.473,490,6.283,722,8.473,727,6.424,740,8.897,932,6.575,1264,8.897,1265,10.139,1362,7.553,1521,8.12,1778,7.817,2814,10.139,2815,10.139,2816,10.139,2947,11.219,2948,11.219]],["keywords/289",[]],["title/290",[776,981.326]],["content/290",[22,1.046,57,5.127,61,4.423,89,8.17,124,4.691,185,3.802,203,3.922,214,4.275,250,7.956,297,3.963,354,9.46,383,6.033,385,6.473,524,6.355,618,12.315,631,6.402,1651,14.737,2633,8.432,2787,9.933,2949,12.525]],["keywords/290",[]],["title/291",[448,658.735,672,1030.533]],["content/291",[]],["keywords/291",[]],["title/292",[185,321.195,631,373.666,1521,765.946]],["content/292",[22,1.352,61,4.372,76,6.788,93,7.843,185,3.758,203,3.876,208,4.089,292,10.251,383,5.963,384,5.136,385,6.399,386,6.171,391,4.533,403,6.788,438,6.399,673,8.076,929,10.405,2892,10.405,2950,12.381,2951,12.381,2952,12.381,2953,12.381,2954,10.405,2955,12.381]],["keywords/292",[]],["title/293",[203,260.078,244,400.103,436,486.847,631,293.306,727,475.665]],["content/293",[34,4.611,57,5.654,61,4.877,297,4.37,386,6.884,403,7.573,438,7.138,524,7.008,618,10.432,673,9.01,801,8.512,926,10.432,2798,9.01,2954,11.608,2956,13.813,2957,12.483,2958,13.813,2959,13.813]],["keywords/293",[]],["title/294",[214,317.682,385,481.026,631,328.645,727,532.975]],["content/294",[61,4.639,147,3.947,300,7.523,384,5.45,386,6.548,438,6.79,469,7.7,631,4.639,678,9.154,924,11.041,1114,7.057,1662,11.873,2397,9.922,2798,8.569,2849,11.041,2954,11.041,2957,11.873,2960,13.138,2961,13.138,2962,13.138,2963,13.138,2964,13.138]],["keywords/294",[]],["title/295",[25,518.392,631,373.666,957,493.439]],["content/295",[]],["keywords/295",[]],["title/296",[56,293.306,134,344.62,185,252.12,208,274.315,631,293.306]],["content/296",[22,1.627,61,5.507,147,4.686,292,7.416,297,3.704,298,8.158,391,3.279,438,6.05,631,4.134,682,7.913,723,8.931,755,7.215,957,5.459,970,10.581,1082,6.05,1167,8.473,1831,7.215,2236,8.158,2776,9.839,2965,11.707,2966,11.707,2967,11.707,2968,11.707,2969,11.707]],["keywords/296",[]],["title/297",[203,260.078,208,274.315,244,400.103,436,486.847,631,293.306]],["content/297",[22,1.558,56,4.696,57,5.444,124,4.981,244,6.406,436,7.795,631,4.696,682,6.748,723,9.705,801,8.197,858,7.988,1013,9.626,1082,6.873,1167,9.626,2776,11.177,2970,12.02,2971,13.3,2972,13.3]],["keywords/297",[]],["title/298",[208,307.365,214,317.682,385,481.026,631,328.645]],["content/298",[22,1.537,56,5.359,297,4.802,385,9.508,682,7.701,1114,8.153,1167,10.985,2970,13.717,2973,15.177]],["keywords/298",[]],["title/299",[25,600.679,1244,755.726]],["content/299",[27,5.679,34,3.669,42,7.398,61,3.88,203,3.441,208,4.936,297,3.477,349,5.383,386,5.477,391,3.078,417,7.954,438,5.679,454,5.293,490,8.371,612,5.679,621,9.932,631,5.277,634,8.3,636,8.715,746,6.6,867,9.235,890,7.398,1480,7.954,1544,8.715,1895,7.954,2108,7.398,2136,9.235,2802,9.235,2926,9.932,2974,10.989,2975,10.989,2976,10.989,2977,10.989,2978,10.989,2979,10.989]],["keywords/299",[]],["title/300",[97,554.322,293,825.556]],["content/300",[108,7.467,147,4.259,183,6.828,375,8.737,391,3.971,405,6.717,450,9.544,454,6.828,484,8.309,577,9.247,701,8.118,702,8.118,988,12.812,989,9.878,2980,14.177,2981,14.177]],["keywords/300",[]],["title/301",[936,1224.978]],["content/301",[22,1.6,40,5.125,42,5.29,56,4.152,57,4.813,71,5.687,106,3.987,123,2.943,126,5.125,134,3.26,139,3.785,147,3.533,156,6.603,185,3.569,203,3.682,208,2.595,214,4.014,250,3.448,297,2.486,311,8.926,381,7.247,383,3.785,384,3.26,385,4.061,445,4.719,454,3.785,477,4.221,478,7.102,524,3.987,631,5.523,776,7.917,921,4.977,965,5.687,1797,5.475,1895,5.687,2097,9.882,2366,5.687,2633,5.29,2649,6.231,2787,6.231,2798,5.125,2810,7.102,2849,6.603,2865,6.603,2927,10.628,2982,7.858,2983,7.858,2984,7.858,2985,7.858,2986,7.858,2987,7.858,2988,7.858,2989,7.858,2990,7.858]],["keywords/301",[]]],"invertedIndex":[["",{"_index":22,"title":{"75":{"position":[[0,2]]},"76":{"position":[[0,1]]},"78":{"position":[[22,2]]},"79":{"position":[[19,2]]},"80":{"position":[[20,2]]},"81":{"position":[[30,2]]},"82":{"position":[[0,2]]},"88":{"position":[[0,2]]},"89":{"position":[[0,1]]},"90":{"position":[[0,2]]},"91":{"position":[[0,2]]},"92":{"position":[[0,1]]},"93":{"position":[[0,2]]},"94":{"position":[[0,2]]},"95":{"position":[[0,2]]},"131":{"position":[[0,2]]},"132":{"position":[[0,2]]},"134":{"position":[[0,2]]},"135":{"position":[[0,3]]},"136":{"position":[[0,2]]},"137":{"position":[[0,2]]},"138":{"position":[[0,2]]},"139":{"position":[[0,2]]},"140":{"position":[[0,2]]},"141":{"position":[[0,2]]},"159":{"position":[[0,1]]},"160":{"position":[[0,1]]},"161":{"position":[[0,1]]},"162":{"position":[[0,1]]},"176":{"position":[[0,2]]},"177":{"position":[[0,2]]},"181":{"position":[[0,2]]},"182":{"position":[[0,2]]},"183":{"position":[[0,2]]},"187":{"position":[[0,2]]},"188":{"position":[[0,3]]},"194":{"position":[[0,2]]},"195":{"position":[[0,2]]},"196":{"position":[[0,2]]},"240":{"position":[[9,1]]},"258":{"position":[[0,1]]},"259":{"position":[[0,1]]},"260":{"position":[[0,1],[35,1]]}},"content":{"1":{"position":[[173,1],[218,1]]},"3":{"position":[[145,1],[147,1],[253,1],[255,1],[832,1],[834,1],[976,1],[978,1],[1041,1]]},"6":{"position":[[102,1],[149,1],[180,1],[209,1]]},"7":{"position":[[1,1]]},"8":{"position":[[99,1],[166,1]]},"14":{"position":[[43,1]]},"15":{"position":[[87,1],[126,1],[167,1]]},"16":{"position":[[19,1]]},"17":{"position":[[166,1],[193,1],[195,5],[201,1],[214,1],[248,1],[271,2]]},"18":{"position":[[39,1]]},"21":{"position":[[72,2],[109,2],[158,2],[189,2],[202,1],[204,1],[241,1],[243,1],[272,1],[274,1],[299,1],[301,1],[318,2],[373,2]]},"23":{"position":[[108,1]]},"25":{"position":[[1,1],[155,1]]},"28":{"position":[[181,2],[187,2]]},"31":{"position":[[288,1],[323,1],[536,1],[575,1],[603,1],[689,2],[896,1],[926,1],[965,1],[1088,1]]},"33":{"position":[[552,1]]},"37":{"position":[[441,1],[1114,1]]},"41":{"position":[[71,1],[98,1],[226,1],[228,1],[264,1],[431,1],[433,1],[492,1],[494,1],[503,1],[573,1],[575,1],[620,1]]},"42":{"position":[[390,1],[463,1]]},"43":{"position":[[1146,1],[1163,1]]},"47":{"position":[[70,1],[85,1]]},"51":{"position":[[32,1],[694,1],[795,1],[802,1],[858,1],[916,1],[993,1],[1076,1],[1143,1],[1249,1]]},"52":{"position":[[20,1],[638,1],[701,1]]},"54":{"position":[[1,1],[190,1],[192,3],[219,1]]},"55":{"position":[[1,1],[240,1],[421,1],[675,1],[705,1],[733,1],[759,1],[859,1],[880,1]]},"56":{"position":[[34,1],[190,1],[216,1],[239,6],[246,1],[297,6],[304,1],[353,5],[359,1],[377,2],[453,5],[483,6],[525,5],[531,1],[581,1],[583,1],[602,1],[675,1],[723,1],[762,1],[805,1],[1077,1],[1108,1],[1177,1],[1245,2],[1262,1],[1612,1]]},"57":{"position":[[46,1],[82,1],[152,1],[177,4],[201,6],[231,6],[238,1],[305,1],[372,1],[521,1]]},"59":{"position":[[20,1],[66,1],[105,1],[156,1],[179,1],[186,1],[208,1],[216,1],[243,1],[250,1],[323,1],[350,1],[374,1],[400,1],[407,1],[445,1]]},"60":{"position":[[25,1],[67,1],[99,1],[127,1],[134,1],[155,1],[162,1],[230,1],[265,1],[272,1],[345,1]]},"61":{"position":[[26,1],[71,1],[103,1],[138,1],[180,1],[228,1]]},"62":{"position":[[60,1],[101,1],[158,1],[160,1],[162,1],[212,1],[240,1],[273,1],[315,1]]},"66":{"position":[[88,1],[130,1],[161,1],[216,1],[246,1]]},"67":{"position":[[525,1],[738,1]]},"75":{"position":[[226,1],[296,1],[371,1]]},"77":{"position":[[60,2],[495,1],[554,1],[584,1],[603,1],[692,1],[785,1],[831,1],[884,1],[935,2],[1305,1],[1316,1],[1393,1],[1430,1],[1475,2],[1749,1],[1873,1],[1921,1]]},"78":{"position":[[173,1],[287,1],[337,1],[390,1],[469,1],[519,1],[574,1]]},"79":{"position":[[38,1],[426,1],[468,1]]},"80":{"position":[[292,1],[362,1],[389,1]]},"81":{"position":[[288,1],[327,1],[347,1]]},"83":{"position":[[73,1],[144,1],[375,1]]},"84":{"position":[[17,1],[187,1]]},"85":{"position":[[17,1],[54,1],[60,1],[153,1]]},"86":{"position":[[248,1],[250,1],[275,6],[305,6],[312,1],[388,1],[416,1]]},"89":{"position":[[53,1],[101,1],[156,1],[209,1],[259,1],[313,1],[368,1],[426,1],[474,1]]},"90":{"position":[[48,2],[124,1],[191,1],[266,2],[341,2],[395,1],[397,1],[442,1]]},"92":{"position":[[73,1]]},"94":{"position":[[1,1],[94,1],[219,1],[293,1],[394,1],[438,1],[464,1],[497,1],[534,1],[557,1],[613,1],[623,1],[639,1],[649,1]]},"99":{"position":[[47,1],[56,1],[64,1],[89,1],[124,1],[155,1],[167,1],[177,1],[188,1],[190,1],[192,1],[212,1],[242,1],[244,1],[246,1],[248,1]]},"100":{"position":[[53,1],[62,1],[82,1],[104,1],[116,1],[164,1],[172,1],[195,1],[197,1],[199,1],[201,1],[203,1],[205,1],[207,1]]},"101":{"position":[[176,1],[218,1]]},"103":{"position":[[1,1],[133,1]]},"104":{"position":[[1,1],[41,1]]},"106":{"position":[[17,1],[39,2],[113,1],[161,1],[163,2],[166,1],[192,1],[214,2],[293,1],[345,1],[347,2],[350,1],[371,1],[393,2],[469,1],[511,1],[513,2],[516,1]]},"107":{"position":[[161,1],[305,2]]},"113":{"position":[[23,1],[93,1],[95,1],[395,1],[487,1],[489,1],[491,1],[493,1]]},"114":{"position":[[22,1],[161,1],[212,1]]},"118":{"position":[[266,1],[311,3]]},"120":{"position":[[112,1],[157,1],[193,1]]},"121":{"position":[[27,1],[62,2],[127,2],[148,1]]},"122":{"position":[[31,1]]},"124":{"position":[[19,1],[48,1],[80,1]]},"125":{"position":[[40,1],[42,3],[56,3],[74,1]]},"126":{"position":[[95,1]]},"129":{"position":[[100,1],[135,2]]},"136":{"position":[[34,3],[50,1],[70,3],[89,1],[128,3],[139,1],[167,3],[186,1],[215,3],[236,1],[268,3],[280,1],[308,1],[310,3],[326,1],[343,1],[345,3],[357,1],[384,1],[386,3],[405,1],[427,1],[429,3],[444,1],[468,1],[470,3],[488,1],[509,3],[530,1],[555,3],[573,1],[597,1],[599,3],[612,1],[633,1],[635,3],[649,1],[671,1],[673,3],[691,1],[719,3],[735,1],[753,3],[772,1],[796,3],[809,1],[833,3],[851,1],[878,3],[903,1]]},"137":{"position":[[445,1]]},"138":{"position":[[1,1],[61,1],[91,1],[149,1]]},"143":{"position":[[79,2],[308,2],[502,2]]},"145":{"position":[[77,1]]},"146":{"position":[[42,1],[89,2],[101,1],[103,2],[118,1],[120,1],[132,1],[134,1],[199,2],[289,2],[390,2],[538,2],[628,2]]},"149":{"position":[[596,1]]},"152":{"position":[[37,1]]},"154":{"position":[[1,3],[125,1],[176,2],[426,1],[455,1],[489,1],[516,1]]},"156":{"position":[[29,1],[70,1],[115,1],[150,1],[173,1],[191,1],[216,1],[232,1],[262,1],[287,1],[323,1]]},"166":{"position":[[45,1],[109,2],[132,1],[189,2],[211,1],[266,2]]},"167":{"position":[[22,1],[62,1],[100,1]]},"169":{"position":[[62,2]]},"171":{"position":[[97,1],[154,1],[203,1]]},"173":{"position":[[79,1]]},"176":{"position":[[52,1],[130,1],[143,1],[185,1],[254,1],[277,1],[310,1],[370,1],[396,1],[420,1],[480,1],[547,1],[643,1],[758,1],[838,1]]},"179":{"position":[[108,1],[176,1],[256,1],[356,1],[449,1],[547,1],[1506,1],[1553,1],[1584,1],[1632,1]]},"180":{"position":[[127,1],[218,1],[241,1],[265,1],[309,1]]},"181":{"position":[[70,2],[73,2],[142,2],[145,2],[211,2],[214,2],[284,2],[287,2],[373,2],[376,2]]},"184":{"position":[[1,1],[72,1],[131,1],[185,1],[277,1],[287,1],[324,1],[364,1],[382,1]]},"185":{"position":[[1,1],[83,1],[132,1],[223,1],[260,1],[310,1],[433,1],[490,1]]},"186":{"position":[[1,1],[139,1],[212,1]]},"187":{"position":[[57,1]]},"190":{"position":[[43,1]]},"191":{"position":[[30,1]]},"194":{"position":[[40,1],[70,1],[250,1],[323,1],[418,1]]},"200":{"position":[[148,1],[177,1],[210,1],[306,1],[380,1]]},"201":{"position":[[40,1],[70,1],[173,1],[189,1]]},"202":{"position":[[1,1],[42,1]]},"204":{"position":[[34,1],[86,1],[135,1],[199,1],[269,1],[271,2],[342,1],[445,1],[637,1],[644,1],[734,1],[837,1]]},"205":{"position":[[84,1],[147,1],[209,2]]},"206":{"position":[[34,1],[36,1],[113,1],[173,1],[175,1],[208,1]]},"207":{"position":[[27,1],[29,1],[59,1],[96,1],[123,1],[125,1],[167,1],[229,1],[261,1],[263,1],[281,1],[303,1],[324,1],[326,1],[348,1]]},"209":{"position":[[165,1],[184,1],[317,1],[319,2]]},"210":{"position":[[25,1],[27,1],[85,3],[89,1],[91,1],[147,3],[151,1],[153,1],[194,1],[231,1],[233,1],[272,1]]},"213":{"position":[[220,1]]},"215":{"position":[[40,1],[42,1],[130,1],[150,1],[152,1],[208,1],[229,1],[231,1],[292,1]]},"216":{"position":[[27,1],[29,1],[82,1],[84,1],[113,6],[120,1],[162,6],[169,1],[184,1],[186,1],[188,1],[240,1],[242,1],[371,1]]},"218":{"position":[[199,1],[229,1],[276,1]]},"219":{"position":[[144,1],[146,2],[181,1],[306,1],[328,1]]},"221":{"position":[[123,1]]},"222":{"position":[[33,1],[73,1],[101,1],[183,2]]},"224":{"position":[[82,1],[212,1]]},"225":{"position":[[1,1],[31,1],[89,1]]},"226":{"position":[[1,1]]},"230":{"position":[[1,1],[109,1],[132,1],[134,1],[181,1],[209,1]]},"232":{"position":[[1,1]]},"233":{"position":[[1,1],[39,1],[83,1]]},"237":{"position":[[76,1],[145,1],[170,1],[182,1],[190,1],[259,1],[296,1],[396,1]]},"238":{"position":[[117,1],[203,1],[228,1],[254,1],[340,1],[365,1],[370,1],[491,1]]},"239":{"position":[[478,1],[792,1],[904,1],[996,1],[1330,1],[1390,1],[1452,1],[1510,1],[1563,1]]},"241":{"position":[[209,1],[214,1],[220,1],[228,1],[282,1],[287,1],[300,1],[353,1],[366,1]]},"242":{"position":[[47,1],[52,1],[75,1],[123,1],[133,1],[152,1],[181,1],[186,1]]},"243":{"position":[[95,1],[123,1],[150,1],[181,1],[211,1],[235,1],[289,1],[878,1],[922,1],[994,1],[1001,1],[1069,1],[1075,1],[1151,1],[1153,3],[1168,3],[1172,1],[1225,1],[1267,1],[1341,1],[1359,1],[1393,1],[1424,1],[1454,1],[1487,1],[1632,1],[1657,1],[1719,1],[1721,1],[1788,1],[1790,1],[1814,1],[1848,1],[1861,1],[1888,1],[1893,1],[1922,1],[1935,1]]},"245":{"position":[[64,1],[71,1],[154,1],[161,1],[287,1],[292,1],[375,1],[381,1],[455,1],[460,1],[476,1],[539,1],[544,1],[560,1],[627,1],[632,1],[682,1],[687,1],[741,1],[745,1],[808,1],[812,1]]},"246":{"position":[[16,1],[714,1],[1330,1],[1719,1],[1791,1]]},"247":{"position":[[198,1]]},"248":{"position":[[103,1],[109,1],[115,1]]},"252":{"position":[[91,1],[176,1],[183,1],[207,1],[226,1],[307,1],[319,1],[330,1],[348,1],[443,1],[450,1],[522,1],[529,1],[596,1],[603,1],[728,1],[734,1],[740,1],[833,1],[1487,1],[1499,1],[1511,1],[1518,1],[1603,1],[1609,1],[1615,1],[1853,1],[2017,1],[2024,1],[2082,1],[2231,1],[2238,1]]},"253":{"position":[[66,1],[295,1],[337,1],[366,1]]},"255":{"position":[[34,1],[160,1],[190,1],[213,1],[333,1],[359,1],[420,1],[1000,1],[1007,1],[1015,1],[1113,1],[1119,1],[1404,1],[1449,1],[1455,1],[1493,1],[1552,1],[1614,1],[1676,1],[1700,1],[1719,1],[1737,1],[1765,1],[2031,1],[2099,1],[2105,1],[2160,1],[2166,1],[2228,1],[2234,1],[2276,1],[2280,1],[3086,1]]},"256":{"position":[[24,1],[480,1]]},"258":{"position":[[249,1]]},"259":{"position":[[296,1]]},"262":{"position":[[329,1],[346,1],[408,1]]},"263":{"position":[[408,1],[426,1],[490,1]]},"264":{"position":[[467,1],[529,1]]},"265":{"position":[[231,1],[314,1],[349,1]]},"267":{"position":[[160,1],[231,1],[289,1],[471,1],[510,1],[563,1],[653,1],[696,1],[865,1]]},"272":{"position":[[124,1],[166,1],[192,1],[228,1],[274,1],[281,1],[326,1],[379,1],[386,1],[416,1],[443,1],[450,1]]},"273":{"position":[[112,1],[127,1],[161,1],[176,1],[256,1],[272,1],[300,1],[316,1],[333,1],[631,1],[675,1],[682,1],[689,1],[698,1],[715,1],[750,1],[757,1],[764,1],[769,1],[778,1],[1655,1],[1736,1],[1782,1],[1801,1],[1868,1],[1888,1],[1952,1],[2001,1],[2101,1],[2170,1],[2358,1],[2377,1],[2391,1],[2413,1],[2427,1],[2482,1],[2501,1],[2515,1],[2537,1],[2549,1],[2598,1],[2633,1],[2635,1],[2648,1],[2677,1],[2697,1],[2800,1],[2847,1],[2939,1],[2947,1],[3137,1],[3139,1],[3205,1],[3207,1],[3571,1],[3599,1],[3666,1],[3685,1],[3968,1],[4151,2],[4232,1],[4251,2],[5090,1],[5225,1]]},"278":{"position":[[27,1],[139,1],[527,1],[711,1],[774,1],[789,1],[880,2],[947,1],[981,1],[1128,1],[1194,1],[1451,1]]},"279":{"position":[[32,1],[414,1],[519,1],[542,1],[664,1],[772,1],[812,1],[886,1],[939,1],[996,1],[1252,1],[1316,1],[1577,1]]},"280":{"position":[[32,1],[299,1],[336,1]]},"281":{"position":[[118,1],[204,1],[279,1],[352,1],[473,1],[536,1],[622,1],[624,1],[740,1],[742,2],[745,1],[917,1],[935,1],[1017,1]]},"283":{"position":[[10,1],[30,1],[87,1],[125,1],[165,1],[216,1],[264,1],[284,1],[317,1],[355,1],[375,1],[412,1]]},"284":{"position":[[10,1],[30,1],[95,1],[116,1],[146,1],[199,1],[264,1],[312,1],[335,1],[348,1],[379,1],[419,1],[484,1],[508,1],[515,1]]},"285":{"position":[[10,1],[30,1],[60,1],[102,1],[122,1],[164,1],[197,1],[223,1],[252,1],[304,1],[324,1],[380,1],[466,1]]},"287":{"position":[[49,1],[80,1],[132,1],[225,1],[273,4],[324,4],[375,4]]},"288":{"position":[[94,1],[235,1],[250,1],[325,1],[358,1],[461,1],[517,1]]},"289":{"position":[[1,1]]},"290":{"position":[[1,1]]},"292":{"position":[[124,1],[136,1]]},"296":{"position":[[1,1],[56,1],[148,1],[208,1],[270,1]]},"297":{"position":[[1,1],[99,1],[158,1]]},"298":{"position":[[1,1],[73,1]]},"301":{"position":[[75,1],[139,1],[202,1],[272,1],[327,1],[392,1],[533,1],[567,1],[611,1]]}},"keywords":{}}],["0",{"_index":2108,"title":{},"content":{"237":{"position":[[376,1]]},"238":{"position":[[470,1]]},"259":{"position":[[51,1]]},"266":{"position":[[179,1]]},"278":{"position":[[1175,1]]},"280":{"position":[[604,2],[647,2]]},"287":{"position":[[432,1]]},"299":{"position":[[296,2]]}},"keywords":{}}],["0.03",{"_index":2391,"title":{},"content":{"252":{"position":[[178,4]]}},"keywords":{}}],["0.03)thi",{"_index":2677,"title":{},"content":{"273":{"position":[[280,9]]}},"keywords":{}}],["0.05",{"_index":2163,"title":{},"content":{"241":{"position":[[294,5]]}},"keywords":{}}],["0.1",{"_index":2041,"title":{},"content":{"218":{"position":[[327,4]]}},"keywords":{}}],["0.10",{"_index":2636,"title":{},"content":{"272":{"position":[[381,4]]}},"keywords":{}}],["0.15",{"_index":797,"title":{},"content":{"55":{"position":[[40,5],[159,5]]},"272":{"position":[[222,5],[445,4]]}},"keywords":{}}],["0.20",{"_index":2184,"title":{},"content":{"243":{"position":[[89,5],[132,4],[996,4],[1354,4]]},"273":{"position":[[274,5],[708,6]]}},"keywords":{}}],["0.2312",{"_index":599,"title":{},"content":{"41":{"position":[[423,7]]}},"keywords":{}}],["0.2456",{"_index":1215,"title":{},"content":{"103":{"position":[[22,7]]}},"keywords":{}}],["0.25",{"_index":2202,"title":{},"content":{"243":{"position":[[511,4]]},"245":{"position":[[156,4]]},"247":{"position":[[604,4]]},"252":{"position":[[445,4]]},"273":{"position":[[677,4],[752,4]]}},"keywords":{}}],["0.2534",{"_index":595,"title":{},"content":{"41":{"position":[[180,7],[346,7]]}},"keywords":{}}],["0.3",{"_index":2509,"title":{},"content":{"255":{"position":[[2929,3]]}},"keywords":{}}],["0.3.0",{"_index":1781,"title":{},"content":{"176":{"position":[[124,5],[179,5]]},"184":{"position":[[66,5]]}},"keywords":{}}],["0.3.0"",{"_index":1784,"title":{},"content":{"176":{"position":[[242,11],[737,11]]},"185":{"position":[[202,11]]},"186":{"position":[[127,11]]},"194":{"position":[[406,11]]}},"keywords":{}}],["0.30",{"_index":2401,"title":{},"content":{"252":{"position":[[524,4]]},"272":{"position":[[276,4]]}},"keywords":{}}],["0.35",{"_index":2687,"title":{},"content":{"273":{"position":[[788,7]]}},"keywords":{}}],["0.425",{"_index":2176,"title":{},"content":{"242":{"position":[[224,5]]}},"keywords":{}}],["0.50",{"_index":2162,"title":{},"content":{"241":{"position":[[222,5]]},"243":{"position":[[463,4]]},"245":{"position":[[66,4]]},"247":{"position":[[83,4]]},"252":{"position":[[598,4]]},"272":{"position":[[320,5]]}},"keywords":{}}],["0.75",{"_index":2198,"title":{},"content":{"243":{"position":[[429,4]]},"273":{"position":[[684,4],[759,4]]}},"keywords":{}}],["0.8",{"_index":2219,"title":{},"content":{"243":{"position":[[1071,3]]}},"keywords":{}}],["0.88",{"_index":2195,"title":{},"content":{"243":{"position":[[398,4]]}},"keywords":{}}],["0.95",{"_index":2122,"title":{},"content":{"238":{"position":[[493,5]]}},"keywords":{}}],["00",{"_index":2786,"title":{},"content":{"277":{"position":[[211,4]]},"279":{"position":[[395,4]]}},"keywords":{}}],["00/15/30/45",{"_index":437,"title":{},"content":{"31":{"position":[[1218,13]]},"42":{"position":[[75,11]]}},"keywords":{}}],["00/:15/:30/:45",{"_index":2983,"title":{},"content":{"301":{"position":[[122,16]]}},"keywords":{}}],["00:00",{"_index":724,"title":{},"content":{"51":{"position":[[525,5]]},"60":{"position":[[19,5]]},"65":{"position":[[20,7]]},"273":{"position":[[2656,5],[2731,5],[2885,5],[3629,8]]}},"keywords":{}}],["00:00:00",{"_index":2898,"title":{},"content":{"284":{"position":[[137,8]]}},"keywords":{}}],["00:00=21ct",{"_index":2732,"title":{},"content":{"273":{"position":[[3194,10]]}},"keywords":{}}],["00:03:12",{"_index":2900,"title":{},"content":{"284":{"position":[[370,8]]}},"keywords":{}}],["00:15",{"_index":2720,"title":{},"content":{"273":{"position":[[2600,5]]}},"keywords":{}}],["01:00",{"_index":2716,"title":{},"content":{"273":{"position":[[2172,7]]}},"keywords":{}}],["02:00",{"_index":1284,"title":{},"content":{"111":{"position":[[537,5]]},"246":{"position":[[1685,5]]},"273":{"position":[[1066,5]]}},"keywords":{}}],["03",{"_index":2818,"title":{},"content":{"279":{"position":[[350,5]]}},"keywords":{}}],["03t14:00:00+01:00"",{"_index":593,"title":{},"content":{"41":{"position":[[136,24],[302,24]]}},"keywords":{}}],["05:00",{"_index":1285,"title":{},"content":{"111":{"position":[[543,5]]}},"keywords":{}}],["06",{"_index":1283,"title":{},"content":{"111":{"position":[[453,3]]}},"keywords":{}}],["06t14:00:00.000+01:00"",{"_index":1218,"title":{},"content":{"103":{"position":[[66,28]]}},"keywords":{}}],["07:00",{"_index":2319,"title":{},"content":{"246":{"position":[[1691,5]]}},"keywords":{}}],["08:00no",{"_index":2691,"title":{},"content":{"273":{"position":[[1072,7]]}},"keywords":{}}],["1",{"_index":185,"title":{"14":{"position":[[0,2]]},"40":{"position":[[0,2]]},"51":{"position":[[0,2]]},"77":{"position":[[0,2]]},"145":{"position":[[0,2]]},"178":{"position":[[0,2]]},"189":{"position":[[0,2]]},"237":{"position":[[0,2]]},"258":{"position":[[15,2]]},"262":{"position":[[9,2]]},"278":{"position":[[6,3]]},"283":{"position":[[9,2]]},"286":{"position":[[30,4]]},"287":{"position":[[7,2]]},"288":{"position":[[21,2]]},"292":{"position":[[6,2]]},"296":{"position":[[12,2]]}},"content":{"45":{"position":[[63,2]]},"47":{"position":[[63,1]]},"55":{"position":[[719,1]]},"67":{"position":[[64,1],[740,1]]},"83":{"position":[[112,1]]},"89":{"position":[[158,1],[261,1]]},"94":{"position":[[466,2],[524,1]]},"101":{"position":[[220,1]]},"111":{"position":[[534,2]]},"154":{"position":[[239,2]]},"156":{"position":[[31,2]]},"176":{"position":[[54,2]]},"180":{"position":[[243,2]]},"184":{"position":[[8,2],[106,1]]},"185":{"position":[[8,2]]},"186":{"position":[[8,2]]},"194":{"position":[[252,2]]},"204":{"position":[[1,2]]},"207":{"position":[[1,2]]},"209":{"position":[[1,2]]},"238":{"position":[[230,2],[367,2]]},"241":{"position":[[289,2]]},"242":{"position":[[49,2],[77,2],[183,2]]},"243":{"position":[[1816,2],[1890,2]]},"246":{"position":[[1590,2],[2048,2]]},"247":{"position":[[1,2]]},"253":{"position":[[237,2],[265,1],[316,1]]},"263":{"position":[[103,1],[545,1],[609,2]]},"265":{"position":[[31,1],[186,1],[217,2],[263,1],[395,1]]},"266":{"position":[[211,1],[330,1]]},"267":{"position":[[466,1]]},"272":{"position":[[1,2]]},"273":{"position":[[1,2],[766,2],[2322,1],[2596,1],[2623,3],[3103,2],[3164,2]]},"277":{"position":[[130,2],[381,2]]},"278":{"position":[[534,2],[1106,2]]},"279":{"position":[[295,2],[503,2],[671,2],[722,3],[780,2]]},"283":{"position":[[133,2],[466,2]]},"284":{"position":[[18,2],[387,2]]},"285":{"position":[[110,2],[438,2]]},"288":{"position":[[7,2],[102,2],[542,2]]},"290":{"position":[[138,3]]},"292":{"position":[[183,2]]},"301":{"position":[[34,2],[254,2]]}},"keywords":{}}],["1'",{"_index":2722,"title":{},"content":{"273":{"position":[[2759,3]]}},"keywords":{}}],["1)"",{"_index":2969,"title":{},"content":{"296":{"position":[[260,9]]}},"keywords":{}}],["1,209",{"_index":523,"title":{},"content":{"37":{"position":[[337,5]]}},"keywords":{}}],["1,838",{"_index":518,"title":{},"content":{"37":{"position":[[258,5]]}},"keywords":{}}],["1.0",{"_index":2188,"title":{},"content":{"243":{"position":[[162,3],[1405,3]]}},"keywords":{}}],["1.00",{"_index":2194,"title":{},"content":{"243":{"position":[[351,4]]}},"keywords":{}}],["1.1",{"_index":1012,"title":{},"content":{"77":{"position":[[39,3]]}},"keywords":{}}],["1.2",{"_index":1033,"title":{},"content":{"77":{"position":[[917,3]]}},"keywords":{}}],["1.25",{"_index":2203,"title":{},"content":{"243":{"position":[[516,5],[662,6]]}},"keywords":{}}],["1.3",{"_index":1046,"title":{},"content":{"77":{"position":[[1450,3]]}},"keywords":{}}],["1.5",{"_index":2325,"title":{},"content":{"246":{"position":[[1767,4]]},"255":{"position":[[1315,3],[1451,3],[2162,3]]}},"keywords":{}}],["1/2",{"_index":2593,"title":{},"content":{"266":{"position":[[381,3]]}},"keywords":{}}],["10",{"_index":1114,"title":{"87":{"position":[[0,3]]}},"content":{"85":{"position":[[41,2]]},"90":{"position":[[227,2]]},"160":{"position":[[75,3]]},"219":{"position":[[103,2]]},"237":{"position":[[340,2],[392,3]]},"239":{"position":[[451,4],[765,4],[1448,3],[1572,3]]},"241":{"position":[[125,2],[211,2],[216,3]]},"242":{"position":[[125,3],[178,2]]},"246":{"position":[[1709,2]]},"248":{"position":[[50,2]]},"260":{"position":[[71,2]]},"262":{"position":[[14,2]]},"273":{"position":[[2360,2],[2423,3]]},"283":{"position":[[414,2]]},"294":{"position":[[65,2]]},"298":{"position":[[41,2]]}},"keywords":{}}],["10%")period",{"_index":2142,"title":{},"content":{"239":{"position":[[968,16]]}},"keywords":{}}],["100",{"_index":820,"title":{},"content":{"56":{"position":[[115,5],[1517,4]]},"89":{"position":[[82,4],[130,4],[185,4],[238,4],[288,4],[346,4],[397,4],[463,4],[479,4]]},"101":{"position":[[84,3],[240,4]]},"243":{"position":[[1659,4]]},"252":{"position":[[1513,4],[2019,4],[2233,4]]},"262":{"position":[[29,5]]}},"keywords":{}}],["100%)peak_price_progress",{"_index":2857,"title":{},"content":{"280":{"position":[[607,24]]}},"keywords":{}}],["100%)~10",{"_index":2858,"title":{},"content":{"280":{"position":[[650,8]]}},"keywords":{}}],["100)day_price_min",{"_index":2754,"title":{},"content":{"273":{"position":[[3970,18]]}},"keywords":{}}],["1000",{"_index":1943,"title":{},"content":{"200":{"position":[[308,5]]}},"keywords":{}}],["100m",{"_index":1102,"title":{},"content":{"83":{"position":[[178,6]]},"285":{"position":[[243,8]]}},"keywords":{}}],["1013",{"_index":1721,"title":{},"content":{"166":{"position":[[120,5]]}},"keywords":{}}],["1024**2",{"_index":1950,"title":{},"content":{"201":{"position":[[175,8],[191,8]]},"222":{"position":[[103,7]]}},"keywords":{}}],["10kb",{"_index":465,"title":{},"content":{"33":{"position":[[387,4]]},"47":{"position":[[136,5]]},"57":{"position":[[963,5]]},"67":{"position":[[311,5]]}},"keywords":{}}],["10m",{"_index":925,"title":{},"content":{"64":{"position":[[188,5]]}},"keywords":{}}],["10Γ—0.15",{"_index":2111,"title":{},"content":{"237":{"position":[[398,8]]},"273":{"position":[[2429,8]]}},"keywords":{}}],["11",{"_index":592,"title":{},"content":{"41":{"position":[[133,2],[299,2]]},"245":{"position":[[457,2],[462,2],[541,2],[546,2]]},"253":{"position":[[230,2]]},"255":{"position":[[2749,2]]},"263":{"position":[[580,2],[583,3]]},"265":{"position":[[164,2],[167,3],[374,2],[377,3]]},"266":{"position":[[157,2],[160,3],[213,3],[279,2],[282,3]]},"267":{"position":[[506,3]]},"273":{"position":[[2330,2],[2450,2],[2627,2],[2644,3]]},"275":{"position":[[6,2]]},"284":{"position":[[66,2],[89,2],[235,2],[258,2],[342,2],[455,2],[478,2]]}},"keywords":{}}],["11.5",{"_index":2109,"title":{},"content":{"237":{"position":[[380,4]]},"273":{"position":[[2415,4],[2650,5],[2763,4],[2792,4]]}},"keywords":{}}],["116kb",{"_index":941,"title":{},"content":{"67":{"position":[[487,6],[844,6]]}},"keywords":{}}],["11t14:30:00+01:00",{"_index":2499,"title":{},"content":{"255":{"position":[[2752,18]]}},"keywords":{}}],["12",{"_index":1217,"title":{},"content":{"103":{"position":[[63,2]]},"111":{"position":[[450,2],[549,3]]},"122":{"position":[[302,2]]},"246":{"position":[[1712,2]]}},"keywords":{}}],["12.5",{"_index":2566,"title":{},"content":{"262":{"position":[[321,7]]}},"keywords":{}}],["12/96",{"_index":2565,"title":{},"content":{"262":{"position":[[315,5]]}},"keywords":{}}],["120",{"_index":11,"title":{},"content":{"1":{"position":[[72,3]]},"133":{"position":[[558,4]]},"279":{"position":[[1887,4]]}},"keywords":{}}],["123",{"_index":193,"title":{},"content":{"14":{"position":[[74,3]]},"21":{"position":[[398,4]]}},"keywords":{}}],["126",{"_index":2778,"title":{},"content":{"273":{"position":[[5210,5]]}},"keywords":{}}],["126kb",{"_index":471,"title":{},"content":{"33":{"position":[[508,6]]},"47":{"position":[[27,6]]}},"keywords":{}}],["12:00",{"_index":2741,"title":{},"content":{"273":{"position":[[3484,5]]}},"keywords":{}}],["12h",{"_index":2749,"title":{},"content":{"273":{"position":[[3645,4]]}},"keywords":{}}],["13:00",{"_index":747,"title":{"61":{"position":[[22,9]]},"285":{"position":[[39,7]]}},"content":{"51":{"position":[[1135,7]]},"56":{"position":[[1460,7]]},"278":{"position":[[837,6]]},"288":{"position":[[152,7]]}},"keywords":{}}],["13:00)cach",{"_index":2945,"title":{},"content":{"288":{"position":[[670,11]]}},"keywords":{}}],["13:00:00",{"_index":2904,"title":{},"content":{"285":{"position":[[1,8]]},"287":{"position":[[71,8]]}},"keywords":{}}],["13:03:12",{"_index":2905,"title":{},"content":{"285":{"position":[[93,8]]},"287":{"position":[[243,9]]}},"keywords":{}}],["13:07:45",{"_index":2930,"title":{},"content":{"287":{"position":[[294,9]]}},"keywords":{}}],["13:11:28",{"_index":2933,"title":{},"content":{"287":{"position":[[345,9]]}},"keywords":{}}],["13:15:00",{"_index":2907,"title":{},"content":{"285":{"position":[[295,8]]}},"keywords":{}}],["13:18:12",{"_index":2928,"title":{},"content":{"287":{"position":[[253,9]]}},"keywords":{}}],["13:22:45",{"_index":2931,"title":{},"content":{"287":{"position":[[304,9]]}},"keywords":{}}],["13:26:28",{"_index":2934,"title":{},"content":{"287":{"position":[[355,9]]}},"keywords":{}}],["13:33:12",{"_index":2929,"title":{},"content":{"287":{"position":[[263,9]]}},"keywords":{}}],["13:37:45",{"_index":2932,"title":{},"content":{"287":{"position":[[314,9]]}},"keywords":{}}],["13:41:28",{"_index":2935,"title":{},"content":{"287":{"position":[[365,9]]}},"keywords":{}}],["13:58",{"_index":2823,"title":{},"content":{"279":{"position":[[513,5]]}},"keywords":{}}],["14",{"_index":693,"title":{},"content":{"47":{"position":[[122,3]]},"57":{"position":[[985,4]]},"94":{"position":[[34,3]]},"263":{"position":[[14,2],[29,4]]}},"keywords":{}}],["14.25",{"_index":2121,"title":{},"content":{"238":{"position":[[474,5]]},"241":{"position":[[302,5],[399,5]]}},"keywords":{}}],["14.25simplifi",{"_index":2175,"title":{},"content":{"242":{"position":[[199,14]]}},"keywords":{}}],["14.5",{"_index":2506,"title":{},"content":{"255":{"position":[[2862,4]]}},"keywords":{}}],["14.8",{"_index":2164,"title":{},"content":{"241":{"position":[[340,4],[361,4],[389,4]]}},"keywords":{}}],["144",{"_index":534,"title":{},"content":{"37":{"position":[[496,3]]}},"keywords":{}}],["1440",{"_index":2960,"title":{},"content":{"294":{"position":[[11,4]]}},"keywords":{}}],["1446",{"_index":1725,"title":{},"content":{"166":{"position":[[277,5]]}},"keywords":{}}],["14:00",{"_index":862,"title":{},"content":{"56":{"position":[[1468,6]]},"279":{"position":[[476,5]]}},"keywords":{}}],["14:00:00",{"_index":2890,"title":{},"content":{"283":{"position":[[1,8]]},"287":{"position":[[123,8]]}},"keywords":{}}],["14:03:12",{"_index":2891,"title":{},"content":{"283":{"position":[[116,8]]}},"keywords":{}}],["14:13",{"_index":2824,"title":{},"content":{"279":{"position":[[536,5],[570,5]]}},"keywords":{}}],["14:15:00",{"_index":2893,"title":{},"content":{"283":{"position":[[255,8]]}},"keywords":{}}],["14:16:00",{"_index":2894,"title":{},"content":{"283":{"position":[[346,8]]}},"keywords":{}}],["14:45:00",{"_index":629,"title":{},"content":{"42":{"position":[[474,8]]},"279":{"position":[[1327,8]]}},"keywords":{}}],["14:59:30",{"_index":627,"title":{},"content":{"42":{"position":[[454,8]]},"279":{"position":[[1307,8]]}},"keywords":{}}],["14:59:58",{"_index":623,"title":{},"content":{"42":{"position":[[381,8],[638,9]]},"279":{"position":[[1243,8],[1568,8]]}},"keywords":{}}],["15",{"_index":384,"title":{},"content":{"31":{"position":[[160,2]]},"42":{"position":[[20,2],[195,3]]},"45":{"position":[[42,2]]},"46":{"position":[[172,4]]},"52":{"position":[[871,4]]},"53":{"position":[[173,2]]},"54":{"position":[[45,3]]},"64":{"position":[[27,2]]},"101":{"position":[[165,2]]},"238":{"position":[[427,2],[487,3]]},"239":{"position":[[953,3]]},"241":{"position":[[145,2],[230,2],[284,2],[368,2]]},"242":{"position":[[135,3]]},"245":{"position":[[289,2],[294,3],[472,3]]},"246":{"position":[[961,2],[1844,5],[2100,3]]},"247":{"position":[[452,2]]},"248":{"position":[[99,3],[369,2]]},"252":{"position":[[484,2],[723,4],[828,4],[1967,2],[2168,2]]},"258":{"position":[[246,2]]},"262":{"position":[[54,2],[90,4]]},"263":{"position":[[53,2],[89,4]]},"264":{"position":[[89,4]]},"267":{"position":[[757,2]]},"272":{"position":[[245,3]]},"273":{"position":[[157,3],[312,3],[2393,3],[2517,3],[4248,2],[4277,4]]},"277":{"position":[[145,2],[216,4]]},"278":{"position":[[141,2],[296,2]]},"279":{"position":[[147,3],[309,2],[400,4],[457,2],[1535,2]]},"280":{"position":[[736,2]]},"283":{"position":[[151,2]]},"292":{"position":[[17,2]]},"294":{"position":[[168,3]]},"301":{"position":[[51,2]]}},"keywords":{}}],["15%accept",{"_index":2106,"title":{},"content":{"237":{"position":[[355,13]]}},"keywords":{}}],["15%β†’48",{"_index":2592,"title":{},"content":{"266":{"position":[[222,8]]}},"keywords":{}}],["15.0",{"_index":789,"title":{},"content":{"54":{"position":[[130,5]]}},"keywords":{}}],["15:00",{"_index":2835,"title":{},"content":{"279":{"position":[[1479,7]]}},"keywords":{}}],["15:00:00",{"_index":625,"title":{},"content":{"42":{"position":[[402,8],[678,9]]},"279":{"position":[[1264,8],[1609,8]]}},"keywords":{}}],["15:15",{"_index":2836,"title":{},"content":{"279":{"position":[[1487,6]]}},"keywords":{}}],["15:15:00",{"_index":638,"title":{},"content":{"42":{"position":[[664,9]]},"279":{"position":[[1595,9]]}},"keywords":{}}],["15:30",{"_index":2837,"title":{},"content":{"279":{"position":[[1494,6]]}},"keywords":{}}],["15min",{"_index":859,"title":{},"content":{"56":{"position":[[1365,6]]},"67":{"position":[[590,5]]}},"keywords":{}}],["16",{"_index":2570,"title":{},"content":{"263":{"position":[[19,2]]}},"keywords":{}}],["16m",{"_index":927,"title":{},"content":{"64":{"position":[[287,5]]}},"keywords":{}}],["17",{"_index":1143,"title":{},"content":{"89":{"position":[[428,2]]},"284":{"position":[[69,3],[92,2],[261,2]]}},"keywords":{}}],["17:00",{"_index":2323,"title":{},"content":{"246":{"position":[[1755,5]]}},"keywords":{}}],["18",{"_index":2368,"title":{},"content":{"248":{"position":[[105,3]]},"252":{"position":[[730,3]]},"255":{"position":[[1978,3],[1994,2]]},"264":{"position":[[53,2]]},"273":{"position":[[178,3],[318,3]]},"279":{"position":[[356,4]]},"284":{"position":[[238,3],[345,2],[458,3],[481,2]]}},"keywords":{}}],["18.0",{"_index":2591,"title":{},"content":{"265":{"position":[[225,5],[308,5]]}},"keywords":{}}],["18.5",{"_index":2501,"title":{},"content":{"255":{"position":[[2813,5]]}},"keywords":{}}],["188",{"_index":538,"title":{},"content":{"37":{"position":[[562,3]]}},"keywords":{}}],["18:30",{"_index":2324,"title":{},"content":{"246":{"position":[[1761,5]]}},"keywords":{}}],["19",{"_index":2436,"title":{},"content":{"253":{"position":[[233,3]]},"255":{"position":[[1986,3]]},"275":{"position":[[9,3]]}},"keywords":{}}],["19.1",{"_index":2502,"title":{},"content":{"255":{"position":[[2819,5]]}},"keywords":{}}],["19.3",{"_index":2503,"title":{},"content":{"255":{"position":[[2825,5]]}},"keywords":{}}],["19.8",{"_index":2504,"title":{},"content":{"255":{"position":[[2831,5]]}},"keywords":{}}],["192",{"_index":753,"title":{},"content":{"51":{"position":[[1318,5]]}},"keywords":{}}],["1d",{"_index":2535,"title":{},"content":{"255":{"position":[[3891,2]]}},"keywords":{}}],["1f",{"_index":2227,"title":{},"content":{"243":{"position":[[1586,6],[1625,6]]},"252":{"position":[[1892,6],[2118,6]]}},"keywords":{}}],["1f%%"",{"_index":2228,"title":{},"content":{"243":{"position":[[1634,13]]}},"keywords":{}}],["1kb",{"_index":461,"title":{},"content":{"33":{"position":[[311,3]]}},"keywords":{}}],["1m",{"_index":924,"title":{},"content":{"64":{"position":[[139,4]]},"283":{"position":[[434,6]]},"294":{"position":[[52,4]]}},"keywords":{}}],["1ΞΌ",{"_index":816,"title":{},"content":{"55":{"position":[[761,3]]},"64":{"position":[[98,4]]}},"keywords":{}}],["1ΞΌssave",{"_index":814,"title":{},"content":{"55":{"position":[[735,12]]}},"keywords":{}}],["2",{"_index":203,"title":{"15":{"position":[[0,2]]},"41":{"position":[[0,2]]},"52":{"position":[[0,2]]},"78":{"position":[[0,2]]},"146":{"position":[[0,2]]},"179":{"position":[[0,2]]},"190":{"position":[[0,2]]},"238":{"position":[[0,2]]},"259":{"position":[[15,2]]},"263":{"position":[[9,2]]},"279":{"position":[[6,3]]},"284":{"position":[[9,2]]},"288":{"position":[[7,2]]},"293":{"position":[[6,2]]},"297":{"position":[[12,2]]}},"content":{"42":{"position":[[303,3]]},"45":{"position":[[66,1]]},"47":{"position":[[72,1]]},"51":{"position":[[674,2]]},"60":{"position":[[7,2]]},"83":{"position":[[114,1],[240,1]]},"89":{"position":[[315,1]]},"94":{"position":[[499,2]]},"111":{"position":[[463,1]]},"154":{"position":[[267,2]]},"156":{"position":[[72,2]]},"176":{"position":[[312,2]]},"180":{"position":[[267,2]]},"184":{"position":[[79,2]]},"185":{"position":[[139,2]]},"186":{"position":[[146,2]]},"194":{"position":[[325,2]]},"204":{"position":[[164,2]]},"207":{"position":[[233,2]]},"209":{"position":[[193,2]]},"246":{"position":[[256,1],[1593,1],[2239,2]]},"247":{"position":[[516,2]]},"252":{"position":[[861,5]]},"253":{"position":[[280,2],[283,2],[356,1]]},"255":{"position":[[1080,2],[2122,2]]},"262":{"position":[[107,1]]},"263":{"position":[[105,1],[617,3]]},"265":{"position":[[51,1],[201,2],[300,2],[339,1],[414,2]]},"266":{"position":[[195,2]]},"272":{"position":[[823,2]]},"273":{"position":[[511,2],[2442,1],[2610,1],[2667,3],[2833,1],[3002,1],[3171,2],[3236,2]]},"277":{"position":[[201,2],[419,2]]},"278":{"position":[[593,3],[796,2],[1488,2]]},"279":{"position":[[946,2],[1199,2]]},"283":{"position":[[18,2],[272,2],[479,2]]},"284":{"position":[[154,2]]},"285":{"position":[[18,2],[312,2],[486,2]]},"288":{"position":[[258,2]]},"290":{"position":[[9,3]]},"292":{"position":[[186,1]]},"299":{"position":[[7,2]]},"301":{"position":[[110,2],[311,2]]}},"keywords":{}}],["2'",{"_index":2725,"title":{},"content":{"273":{"position":[[2913,3]]}},"keywords":{}}],["2)"",{"_index":2972,"title":{},"content":{"297":{"position":[[148,9]]}},"keywords":{}}],["2)cach",{"_index":978,"title":{},"content":{"71":{"position":[[90,8]]}},"keywords":{}}],["2,170",{"_index":565,"title":{},"content":{"37":{"position":[[1107,6]]}},"keywords":{}}],["2,574",{"_index":1627,"title":{},"content":{"150":{"position":[[91,5]]}},"keywords":{}}],["2.0",{"_index":1290,"title":{},"content":{"111":{"position":[[717,4]]},"141":{"position":[[51,4]]},"255":{"position":[[1115,3],[1859,4],[2101,3],[2230,3]]}},"keywords":{}}],["2.1",{"_index":1057,"title":{},"content":{"78":{"position":[[39,3]]}},"keywords":{}}],["2.5",{"_index":2189,"title":{},"content":{"243":{"position":[[183,5],[468,4],[1426,5]]}},"keywords":{}}],["2/3",{"_index":1289,"title":{},"content":{"111":{"position":[[706,4]]}},"keywords":{}}],["20",{"_index":686,"title":{},"content":{"46":{"position":[[238,4]]},"54":{"position":[[196,3]]},"126":{"position":[[123,2]]},"198":{"position":[[142,2]]},"239":{"position":[[468,4],[782,4]]},"241":{"position":[[165,2]]},"243":{"position":[[97,3],[1003,3],[1101,3],[1376,3]]},"245":{"position":[[378,2],[383,3],[556,3]]},"247":{"position":[[455,3]]},"248":{"position":[[53,3],[372,3],[407,2]]},"252":{"position":[[487,3],[1970,4],[2171,4]]},"260":{"position":[[207,2]]},"262":{"position":[[19,2]]},"267":{"position":[[760,3],[899,4]]},"273":{"position":[[182,4],[305,6],[322,6],[2379,2],[2484,2],[2545,3]]}},"keywords":{}}],["20%)user",{"_index":2137,"title":{},"content":{"239":{"position":[[794,8]]}},"keywords":{}}],["20%user",{"_index":2128,"title":{},"content":{"239":{"position":[[480,7]]}},"keywords":{}}],["20.1",{"_index":2587,"title":{},"content":{"264":{"position":[[356,4]]}},"keywords":{}}],["20.2",{"_index":2505,"title":{},"content":{"255":{"position":[[2837,4]]}},"keywords":{}}],["20.7",{"_index":2511,"title":{},"content":{"255":{"position":[[2982,4],[3030,4]]}},"keywords":{}}],["200",{"_index":1924,"title":{},"content":{"198":{"position":[[58,3]]}},"keywords":{}}],["2000",{"_index":1693,"title":{},"content":{"160":{"position":[[94,5]]}},"keywords":{}}],["200m",{"_index":930,"title":{},"content":{"65":{"position":[[163,6]]},"66":{"position":[[192,6]]},"285":{"position":[[214,8]]}},"keywords":{}}],["2024",{"_index":1208,"title":{},"content":{"101":{"position":[[31,6]]},"111":{"position":[[445,4]]}},"keywords":{}}],["2025",{"_index":87,"title":{},"content":{"3":{"position":[[1105,6]]},"37":{"position":[[94,6]]},"43":{"position":[[57,6]]},"150":{"position":[[38,5]]},"239":{"position":[[1619,6]]},"252":{"position":[[34,6],[1382,6]]},"253":{"position":[[225,4]]},"255":{"position":[[2743,5]]},"263":{"position":[[575,4]]},"265":{"position":[[159,4],[369,4]]},"266":{"position":[[152,4],[274,4]]},"273":{"position":[[2324,5],[2444,5],[3816,6]]},"275":{"position":[[1,4]]},"284":{"position":[[337,4]]}},"keywords":{}}],["20kb",{"_index":1132,"title":{},"content":{"87":{"position":[[106,5]]}},"keywords":{}}],["20Γ—0.15",{"_index":2719,"title":{},"content":{"273":{"position":[[2551,8]]}},"keywords":{}}],["21",{"_index":2369,"title":{},"content":{"248":{"position":[[111,3]]},"252":{"position":[[736,3]]},"273":{"position":[[2333,4],[2671,2],[2781,2],[2933,2]]}},"keywords":{}}],["21ct",{"_index":2723,"title":{},"content":{"273":{"position":[[2812,4],[3329,4]]}},"keywords":{}}],["22",{"_index":2717,"title":{},"content":{"273":{"position":[[2453,4]]}},"keywords":{}}],["23",{"_index":2718,"title":{},"content":{"273":{"position":[[2539,2],[2917,2],[2941,2]]}},"keywords":{}}],["23:45",{"_index":2715,"title":{},"content":{"273":{"position":[[2164,5],[2586,5],[2612,5],[3263,6],[3534,8]]}},"keywords":{}}],["23:45:12",{"_index":2895,"title":{},"content":{"284":{"position":[[1,8]]}},"keywords":{}}],["23:45=11ct",{"_index":2729,"title":{},"content":{"273":{"position":[[3126,10]]}},"keywords":{}}],["24",{"_index":726,"title":{},"content":{"51":{"position":[[553,2]]},"99":{"position":[[264,2]]}},"keywords":{}}],["240",{"_index":1025,"title":{},"content":{"77":{"position":[[605,4]]}},"keywords":{}}],["24h",{"_index":409,"title":{},"content":{"31":{"position":[[632,3]]},"33":{"position":[[151,3]]},"37":{"position":[[894,3]]},"38":{"position":[[146,3]]},"41":{"position":[[442,3]]},"101":{"position":[[214,3]]},"107":{"position":[[42,3],[98,3]]},"137":{"position":[[271,3]]}},"keywords":{}}],["24honli",{"_index":2010,"title":{},"content":{"212":{"position":[[70,7]]}},"keywords":{}}],["25",{"_index":14,"title":{},"content":{"1":{"position":[[102,2]]},"243":{"position":[[394,3],[567,3],[2131,3]]},"245":{"position":[[163,3]]},"247":{"position":[[487,2],[546,4],[609,5],[713,3]]},"248":{"position":[[194,3]]},"252":{"position":[[452,3],[1116,3],[1134,3],[2084,3]]},"267":{"position":[[639,3]]}},"keywords":{}}],["25)home",{"_index":1452,"title":{},"content":{"133":{"position":[[596,7]]}},"keywords":{}}],["25.0",{"_index":790,"title":{},"content":{"54":{"position":[[154,5]]}},"keywords":{}}],["25ct",{"_index":2734,"title":{},"content":{"273":{"position":[[3383,5]]}},"keywords":{}}],["276",{"_index":528,"title":{},"content":{"37":{"position":[[418,3]]}},"keywords":{}}],["28%abov",{"_index":2413,"title":{},"content":{"252":{"position":[[1174,8]]}},"keywords":{}}],["2f",{"_index":2062,"title":{},"content":{"222":{"position":[[153,4]]}},"keywords":{}}],["2fs"",{"_index":2054,"title":{},"content":{"221":{"position":[[189,12]]}},"keywords":{}}],["2m",{"_index":2892,"title":{},"content":{"283":{"position":[[249,5]]},"288":{"position":[[563,7]]},"292":{"position":[[55,4]]}},"keywords":{}}],["2Γ—2.4",{"_index":2508,"title":{},"content":{"255":{"position":[[2893,6]]}},"keywords":{}}],["3",{"_index":214,"title":{"16":{"position":[[0,2]]},"42":{"position":[[0,2]]},"53":{"position":[[0,2]]},"79":{"position":[[0,2]]},"147":{"position":[[0,2]]},"180":{"position":[[0,2]]},"191":{"position":[[0,2]]},"239":{"position":[[0,2]]},"260":{"position":[[15,2]]},"264":{"position":[[9,2]]},"280":{"position":[[6,3]]},"285":{"position":[[9,2]]},"289":{"position":[[7,2]]},"294":{"position":[[6,2]]},"298":{"position":[[12,2]]}},"content":{"18":{"position":[[127,1]]},"23":{"position":[[63,1]]},"48":{"position":[[61,2]]},"56":{"position":[[1833,1]]},"77":{"position":[[586,1]]},"89":{"position":[[211,1]]},"94":{"position":[[559,2]]},"106":{"position":[[579,2]]},"131":{"position":[[274,2]]},"154":{"position":[[11,2],[48,2],[310,2]]},"156":{"position":[[152,2]]},"169":{"position":[[122,1]]},"176":{"position":[[372,2]]},"180":{"position":[[311,2]]},"184":{"position":[[138,2]]},"185":{"position":[[230,2]]},"194":{"position":[[420,2]]},"204":{"position":[[519,2]]},"245":{"position":[[482,3],[566,3]]},"246":{"position":[[2431,2]]},"252":{"position":[[104,2],[185,2],[675,2],[1680,2]]},"253":{"position":[[325,2]]},"255":{"position":[[905,2],[2278,1]]},"262":{"position":[[458,1]]},"267":{"position":[[468,2]]},"270":{"position":[[23,2]]},"272":{"position":[[1506,2]]},"273":{"position":[[36,2],[114,2],[163,2],[919,2],[1025,1]]},"277":{"position":[[287,2],[453,2]]},"278":{"position":[[988,2]]},"283":{"position":[[363,2]]},"288":{"position":[[366,2]]},"290":{"position":[[76,3]]},"301":{"position":[[176,2],[376,2]]}},"keywords":{}}],["3.1",{"_index":1069,"title":{},"content":{"79":{"position":[[76,3]]}},"keywords":{}}],["3.13",{"_index":17,"title":{},"content":{"1":{"position":[[128,4]]},"231":{"position":[[36,4]]}},"keywords":{}}],["3.2",{"_index":2513,"title":{},"content":{"255":{"position":[[3062,3]]}},"keywords":{}}],["3.75",{"_index":2199,"title":{},"content":{"243":{"position":[[434,5]]}},"keywords":{}}],["30",{"_index":612,"title":{},"content":{"42":{"position":[[199,3]]},"53":{"position":[[111,3]]},"55":{"position":[[658,3]]},"67":{"position":[[725,4]]},"159":{"position":[[178,2]]},"243":{"position":[[425,3]]},"245":{"position":[[684,2],[689,2]]},"246":{"position":[[964,2],[1092,2],[2205,2]]},"248":{"position":[[271,3]]},"252":{"position":[[531,3],[1183,4],[1855,3]]},"262":{"position":[[140,4]]},"264":{"position":[[182,3]]},"267":{"position":[[682,3]]},"273":{"position":[[2503,2]]},"277":{"position":[[221,4]]},"278":{"position":[[1177,3],[1275,3]]},"279":{"position":[[151,3],[405,4]]},"287":{"position":[[406,3],[434,3]]},"299":{"position":[[299,3]]}},"keywords":{}}],["300m",{"_index":2906,"title":{},"content":{"285":{"position":[[188,8]]}},"keywords":{}}],["300ms)sensor",{"_index":1925,"title":{},"content":{"198":{"position":[[62,12]]}},"keywords":{}}],["33",{"_index":2819,"title":{},"content":{"279":{"position":[[361,4]]}},"keywords":{}}],["34",{"_index":2487,"title":{},"content":{"255":{"position":[[1990,3]]}},"keywords":{}}],["35",{"_index":786,"title":{},"content":{"54":{"position":[[67,4]]},"246":{"position":[[1781,2]]},"247":{"position":[[490,3]]},"248":{"position":[[410,3]]},"255":{"position":[[1982,3]]}},"keywords":{}}],["35.2",{"_index":2500,"title":{},"content":{"255":{"position":[[2789,4]]}},"keywords":{}}],["35k",{"_index":2022,"title":{},"content":{"215":{"position":[[132,4]]}},"keywords":{}}],["36h",{"_index":2744,"title":{},"content":{"273":{"position":[[3550,4]]}},"keywords":{}}],["378kb",{"_index":690,"title":{},"content":{"47":{"position":[[87,6]]}},"keywords":{}}],["38.5",{"_index":2585,"title":{},"content":{"264":{"position":[[308,4]]}},"keywords":{}}],["384",{"_index":716,"title":{},"content":{"51":{"position":[[307,4]]},"100":{"position":[[159,4],[294,3]]},"216":{"position":[[122,3]]}},"keywords":{}}],["3fms"",{"_index":1941,"title":{},"content":{"200":{"position":[[268,13]]}},"keywords":{}}],["3fs"",{"_index":1383,"title":{},"content":{"124":{"position":[[144,12]]}},"keywords":{}}],["3h",{"_index":2272,"title":{},"content":{"246":{"position":[[258,3]]}},"keywords":{}}],["4",{"_index":219,"title":{"17":{"position":[[0,2]]},"43":{"position":[[0,2]]},"56":{"position":[[0,2]]},"80":{"position":[[0,2]]},"148":{"position":[[0,2]]},"192":{"position":[[0,2]]},"265":{"position":[[9,2]]}},"content":{"50":{"position":[[22,1]]},"56":{"position":[[1835,1]]},"89":{"position":[[103,1]]},"94":{"position":[[651,2]]},"100":{"position":[[308,2]]},"154":{"position":[[342,2]]},"156":{"position":[[264,2]]},"166":{"position":[[134,1],[213,1]]},"246":{"position":[[275,1]]},"262":{"position":[[109,1],[157,1]]},"264":{"position":[[574,1]]},"273":{"position":[[1448,2]]}},"keywords":{}}],["4.2",{"_index":2586,"title":{},"content":{"264":{"position":[[328,3],[522,6]]}},"keywords":{}}],["4.4",{"_index":2196,"title":{},"content":{"243":{"position":[[403,4]]}},"keywords":{}}],["4.8",{"_index":2507,"title":{},"content":{"255":{"position":[[2886,3]]}},"keywords":{}}],["4/96",{"_index":2588,"title":{},"content":{"264":{"position":[[517,4]]}},"keywords":{}}],["40",{"_index":780,"title":{},"content":{"53":{"position":[[115,2]]},"243":{"position":[[459,3]]},"246":{"position":[[1784,2]]},"252":{"position":[[1599,3]]},"258":{"position":[[34,2],[88,3]]},"264":{"position":[[18,2],[186,2]]},"273":{"position":[[329,3]]}},"keywords":{}}],["40.0",{"_index":792,"title":{},"content":{"54":{"position":[[183,6]]}},"keywords":{}}],["41",{"_index":1138,"title":{"89":{"position":[[20,3]]}},"content":{"89":{"position":[[476,2]]},"92":{"position":[[62,2]]},"94":{"position":[[127,3]]}},"keywords":{}}],["42.5",{"_index":2177,"title":{},"content":{"242":{"position":[[230,7],[245,5],[300,5]]}},"keywords":{}}],["43",{"_index":2550,"title":{},"content":{"258":{"position":[[145,5]]},"273":{"position":[[335,3]]}},"keywords":{}}],["45",{"_index":613,"title":{},"content":{"42":{"position":[[203,4]]},"122":{"position":[[249,2]]},"154":{"position":[[391,2]]},"260":{"position":[[34,2]]},"277":{"position":[[226,3]]},"279":{"position":[[155,4],[410,3]]}},"keywords":{}}],["45/96",{"_index":2576,"title":{},"content":{"263":{"position":[[394,5]]}},"keywords":{}}],["46",{"_index":2551,"title":{},"content":{"258":{"position":[[151,4]]}},"keywords":{}}],["46.9",{"_index":2577,"title":{},"content":{"263":{"position":[[400,7]]}},"keywords":{}}],["48",{"_index":2258,"title":{},"content":{"245":{"position":[[478,3]]}},"keywords":{}}],["48%)balanc",{"_index":2405,"title":{},"content":{"252":{"position":[[835,12]]}},"keywords":{}}],["48)current",{"_index":2820,"title":{},"content":{"279":{"position":[[366,11]]}},"keywords":{}}],["49",{"_index":2552,"title":{},"content":{"258":{"position":[[156,4]]}},"keywords":{}}],["5",{"_index":237,"title":{"18":{"position":[[0,2]]},"57":{"position":[[0,2]]},"81":{"position":[[0,2]]},"149":{"position":[[0,2]]},"193":{"position":[[0,2]]},"266":{"position":[[9,2]]}},"content":{"33":{"position":[[22,1]]},"37":{"position":[[784,1]]},"43":{"position":[[215,1]]},"67":{"position":[[908,1]]},"85":{"position":[[38,2]]},"89":{"position":[[55,1]]},"133":{"position":[[410,1]]},"150":{"position":[[151,1]]},"241":{"position":[[262,5]]},"243":{"position":[[291,4]]},"245":{"position":[[743,1],[747,2],[810,1],[814,2]]},"246":{"position":[[1697,2]]},"252":{"position":[[880,4]]},"259":{"position":[[294,1],[310,2]]},"260":{"position":[[244,1]]},"262":{"position":[[196,3]]},"263":{"position":[[163,3]]},"264":{"position":[[14,1],[128,2]]},"273":{"position":[[109,2],[297,2],[696,1]]}},"keywords":{}}],["5%accept",{"_index":2120,"title":{},"content":{"238":{"position":[[450,12]]}},"keywords":{}}],["5%conflict",{"_index":2173,"title":{},"content":{"242":{"position":[[154,10]]}},"keywords":{}}],["5.0",{"_index":799,"title":{},"content":{"55":{"position":[[81,4],[200,4]]},"243":{"position":[[356,4]]}},"keywords":{}}],["50",{"_index":276,"title":{},"content":{"21":{"position":[[27,3]]},"46":{"position":[[59,4]]},"241":{"position":[[188,6]]},"243":{"position":[[507,3]]},"245":{"position":[[73,3],[562,3]]},"247":{"position":[[22,3],[88,5],[113,4],[200,3],[427,4]]},"248":{"position":[[542,4]]},"252":{"position":[[605,3],[1605,3]]},"258":{"position":[[184,3]]},"272":{"position":[[350,3]]}},"keywords":{}}],["50%result",{"_index":2353,"title":{},"content":{"247":{"position":[[278,10]]}},"keywords":{}}],["5000",{"_index":1209,"title":{},"content":{"101":{"position":[[39,4]]}},"keywords":{}}],["500m",{"_index":821,"title":{},"content":{"56":{"position":[[121,6],[1522,5]]},"65":{"position":[[46,6]]}},"keywords":{}}],["50kb",{"_index":455,"title":{},"content":{"33":{"position":[[196,4]]},"67":{"position":[[70,5],[414,5]]},"85":{"position":[[62,4]]},"90":{"position":[[212,6]]}},"keywords":{}}],["50m",{"_index":931,"title":{},"content":{"65":{"position":[[219,5]]},"66":{"position":[[240,5]]}},"keywords":{}}],["50ms)memori",{"_index":1929,"title":{},"content":{"198":{"position":[[145,11]]}},"keywords":{}}],["50ΞΌ",{"_index":815,"title":{},"content":{"55":{"position":[[753,5]]},"65":{"position":[[110,5]]},"66":{"position":[[155,5]]}},"keywords":{}}],["50ΞΌsafter",{"_index":813,"title":{},"content":{"55":{"position":[[707,11]]}},"keywords":{}}],["52/96",{"_index":2578,"title":{},"content":{"263":{"position":[[476,5]]}},"keywords":{}}],["54.2",{"_index":2579,"title":{},"content":{"263":{"position":[[482,7]]}},"keywords":{}}],["5678"",{"_index":1404,"title":{},"content":{"128":{"position":[[118,11]]}},"keywords":{}}],["58",{"_index":562,"title":{},"content":{"37":{"position":[[1082,3]]}},"keywords":{}}],["5kb",{"_index":458,"title":{},"content":{"33":{"position":[[251,3]]},"67":{"position":[[154,4]]},"85":{"position":[[56,3]]}},"keywords":{}}],["5m",{"_index":926,"title":{},"content":{"64":{"position":[[251,4]]},"65":{"position":[[269,4]]},"66":{"position":[[271,4]]},"283":{"position":[[109,6],[339,6]]},"293":{"position":[[54,4]]}},"keywords":{}}],["6",{"_index":266,"title":{"19":{"position":[[0,2]]},"83":{"position":[[0,2]]}},"content":{"150":{"position":[[309,1]]},"252":{"position":[[1629,1]]},"264":{"position":[[131,1]]},"273":{"position":[[302,2]]}},"keywords":{}}],["60",{"_index":801,"title":{},"content":{"55":{"position":[[117,4],[236,3]]},"245":{"position":[[629,2],[634,2]]},"246":{"position":[[431,2],[1913,3],[2087,2]]},"247":{"position":[[221,2]]},"252":{"position":[[1611,3]]},"273":{"position":[[132,4]]},"279":{"position":[[1868,2]]},"280":{"position":[[949,4]]},"283":{"position":[[89,2],[319,2]]},"293":{"position":[[67,2]]},"297":{"position":[[41,2]]}},"keywords":{}}],["600m",{"_index":929,"title":{},"content":{"64":{"position":[[304,6]]},"66":{"position":[[81,6],[290,6]]},"292":{"position":[[106,6]]}},"keywords":{}}],["60kb",{"_index":468,"title":{},"content":{"33":{"position":[[480,4]]}},"keywords":{}}],["644",{"_index":1723,"title":{},"content":{"166":{"position":[[200,4]]}},"keywords":{}}],["7",{"_index":1107,"title":{"84":{"position":[[0,2]]}},"content":{},"keywords":{}}],["7.5",{"_index":2679,"title":{},"content":{"273":{"position":[[339,6]]}},"keywords":{}}],["70",{"_index":680,"title":{},"content":{"46":{"position":[[119,4]]},"56":{"position":[[1635,4]]},"252":{"position":[[1617,3]]}},"keywords":{}}],["700",{"_index":2580,"title":{},"content":{"264":{"position":[[28,5]]}},"keywords":{}}],["755m",{"_index":933,"title":{},"content":{"65":{"position":[[313,6]]}},"keywords":{}}],["8",{"_index":520,"title":{"85":{"position":[[0,2]]}},"content":{"37":{"position":[[279,2],[362,2]]},"89":{"position":[[370,1]]},"122":{"position":[[355,1]]},"262":{"position":[[159,1]]},"267":{"position":[[504,1]]},"273":{"position":[[129,2]]}},"keywords":{}}],["8.3",{"_index":2568,"title":{},"content":{"262":{"position":[[401,6]]},"264":{"position":[[460,6]]}},"keywords":{}}],["8/96",{"_index":2567,"title":{},"content":{"262":{"position":[[396,4]]},"264":{"position":[[455,4]]}},"keywords":{}}],["80",{"_index":499,"title":{},"content":{"36":{"position":[[429,3]]},"43":{"position":[[436,3],[1050,3]]},"77":{"position":[[572,3]]},"247":{"position":[[224,3]]}},"keywords":{}}],["8601",{"_index":1225,"title":{},"content":{"103":{"position":[[230,4]]}},"keywords":{}}],["8h)short",{"_index":2275,"title":{},"content":{"246":{"position":[[277,8]]}},"keywords":{}}],["9",{"_index":1118,"title":{"86":{"position":[[0,2]]}},"content":{},"keywords":{}}],["9.6",{"_index":603,"title":{},"content":{"41":{"position":[[487,4]]}},"keywords":{}}],["909",{"_index":514,"title":{},"content":{"37":{"position":[[166,3],[1116,3]]}},"keywords":{}}],["95",{"_index":2460,"title":{},"content":{"255":{"position":[[1059,3],[2107,3]]}},"keywords":{}}],["96",{"_index":673,"title":{},"content":{"45":{"position":[[18,2]]},"101":{"position":[[178,2]]},"255":{"position":[[2699,2]]},"262":{"position":[[269,2]]},"263":{"position":[[348,2]]},"264":{"position":[[409,2]]},"273":{"position":[[2242,2]]},"292":{"position":[[159,3]]},"293":{"position":[[11,2]]}},"keywords":{}}],["97",{"_index":942,"title":{},"content":{"67":{"position":[[551,3]]}},"keywords":{}}],["98",{"_index":677,"title":{},"content":{"45":{"position":[[118,4]]},"55":{"position":[[748,4]]}},"keywords":{}}],["_",{"_index":68,"title":{},"content":{"3":{"position":[[610,1]]}},"keywords":{}}],["__init__",{"_index":1054,"title":{},"content":{"77":{"position":[[1875,10]]}},"keywords":{}}],["__init__(self",{"_index":1964,"title":{},"content":{"204":{"position":[[596,15]]},"209":{"position":[[266,15]]},"281":{"position":[[693,15]]}},"keywords":{}}],["__init__.pi",{"_index":140,"title":{},"content":{"7":{"position":[[6,11]]},"31":{"position":[[7,13]]},"79":{"position":[[414,11]]},"84":{"position":[[189,11]]},"136":{"position":[[38,11],[314,11]]}},"keywords":{}}],["__init__.pylazi",{"_index":771,"title":{},"content":{"52":{"position":[[547,15]]}},"keywords":{}}],["__init__?check",{"_index":2975,"title":{},"content":{"299":{"position":[[75,15]]}},"keywords":{}}],["_async_update_data",{"_index":2790,"title":{},"content":{"278":{"position":[[262,20]]}},"keywords":{}}],["_async_update_data(self",{"_index":1316,"title":{},"content":{"114":{"position":[[54,24]]},"213":{"position":[[37,24]]},"221":{"position":[[19,24]]},"278":{"position":[[478,24]]}},"keywords":{}}],["_cached_period",{"_index":897,"title":{},"content":{"59":{"position":[[358,15]]},"62":{"position":[[255,17]]}},"keywords":{}}],["_cached_price_data",{"_index":903,"title":{},"content":{"60":{"position":[[108,18]]}},"keywords":{}}],["_cached_transformed_data",{"_index":872,"title":{},"content":{"57":{"position":[[48,24]]},"59":{"position":[[218,24]]},"60":{"position":[[205,24]]},"62":{"position":[[185,26]]}},"keywords":{}}],["_chart_refresh_task",{"_index":1106,"title":{},"content":{"83":{"position":[[346,19]]}},"keywords":{}}],["_check_midnight_turnover_needed(now",{"_index":2806,"title":{},"content":{"278":{"position":[[1349,36]]}},"keywords":{}}],["_compute_periods_hash",{"_index":974,"title":{},"content":{"70":{"position":[[266,23]]}},"keywords":{}}],["_compute_periods_hash()check",{"_index":968,"title":{},"content":{"70":{"position":[[48,28]]}},"keywords":{}}],["_config_cach",{"_index":894,"title":{},"content":{"59":{"position":[[165,13],[309,13]]}},"keywords":{}}],["_config_cache_valid",{"_index":895,"title":{},"content":{"59":{"position":[[188,19],[330,19]]}},"keywords":{}}],["_get_interval_value(offset",{"_index":643,"title":{},"content":{"43":{"position":[[108,27]]}},"keywords":{}}],["_handle_midnight_turnov",{"_index":730,"title":{},"content":{"51":{"position":[[731,27]]}},"keywords":{}}],["_handle_minute_refresh(self",{"_index":2851,"title":{},"content":{"280":{"position":[[243,28]]}},"keywords":{}}],["_handle_options_upd",{"_index":808,"title":{},"content":{"55":{"position":[[453,27]]},"69":{"position":[[12,24]]}},"keywords":{}}],["_handle_quarter_hour_refresh(self",{"_index":2825,"title":{},"content":{"279":{"position":[[602,34]]}},"keywords":{}}],["_impl.pi",{"_index":1641,"title":{},"content":{"150":{"position":[[487,8]]}},"keywords":{}}],["_internalhelp",{"_index":79,"title":{},"content":{"3":{"position":[[881,16]]}},"keywords":{}}],["_last_midnight_check",{"_index":2899,"title":{},"content":{"284":{"position":[[314,20]]}},"keywords":{}}],["_last_periods_hash",{"_index":898,"title":{},"content":{"59":{"position":[[381,18]]},"70":{"position":[[77,18]]}},"keywords":{}}],["_last_price_upd",{"_index":904,"title":{},"content":{"60":{"position":[[136,18]]}},"keywords":{}}],["_last_transformation_config",{"_index":905,"title":{},"content":{"60":{"position":[[237,27]]}},"keywords":{}}],["_logger.debug",{"_index":2225,"title":{},"content":{"243":{"position":[[1555,14]]}},"keywords":{}}],["_logger.debug("%",{"_index":1940,"title":{},"content":{"200":{"position":[[240,22]]}},"keywords":{}}],["_logger.debug("api",{"_index":2011,"title":{},"content":{"212":{"position":[[132,23]]}},"keywords":{}}],["_logger.debug("candid",{"_index":1371,"title":{},"content":{"122":{"position":[[80,29]]}},"keywords":{}}],["_logger.debug("curr",{"_index":2061,"title":{},"content":{"222":{"position":[[111,27]]}},"keywords":{}}],["_logger.debug("funct",{"_index":1381,"title":{},"content":{"124":{"position":[[110,28]]}},"keywords":{}}],["_logger.debug("memori",{"_index":1387,"title":{},"content":{"125":{"position":[[108,27]]}},"keywords":{}}],["_logger.debug("upd",{"_index":1364,"title":{},"content":{"121":{"position":[[180,28]]}},"keywords":{}}],["_logger.debug("us",{"_index":2016,"title":{},"content":{"213":{"position":[[158,25]]}},"keywords":{}}],["_logger.info",{"_index":2429,"title":{},"content":{"252":{"position":[[2088,13]]}},"keywords":{}}],["_logger.info("memori",{"_index":1947,"title":{},"content":{"201":{"position":[[104,26]]}},"keywords":{}}],["_logger.info("upd",{"_index":2053,"title":{},"content":{"221":{"position":[[150,25]]}},"keywords":{}}],["_logger.info("wait",{"_index":1400,"title":{},"content":{"128":{"position":[[63,26]]}},"keywords":{}}],["_logger.setlevel(logging.debug",{"_index":2965,"title":{},"content":{"296":{"position":[[24,31]]}},"keywords":{}}],["_logger.warn",{"_index":2425,"title":{},"content":{"252":{"position":[[1859,16]]}},"keywords":{}}],["_original_pric",{"_index":2491,"title":{},"content":{"255":{"position":[[2360,15]]}},"keywords":{}}],["_quarter_hour_timer_cancel",{"_index":2976,"title":{},"content":{"299":{"position":[[91,26]]}},"keywords":{}}],["_schedule_midnight_turnov",{"_index":980,"title":{},"content":{"71":{"position":[[163,29]]}},"keywords":{}}],["_should_update_price_data(self",{"_index":2939,"title":{},"content":{"288":{"position":[[51,31]]}},"keywords":{}}],["_standard_translations_cach",{"_index":759,"title":{},"content":{"52":{"position":[[46,28]]},"85":{"position":[[176,28]]}},"keywords":{}}],["_translation_cach",{"_index":1956,"title":{},"content":{"204":{"position":[[233,19],[395,19]]}},"keywords":{}}],["_translation_cache[cache_key",{"_index":1962,"title":{},"content":{"204":{"position":[[415,29],[487,29]]}},"keywords":{}}],["_translations_cach",{"_index":758,"title":{},"content":{"52":{"position":[[22,19]]},"72":{"position":[[139,19]]},"85":{"position":[[155,20]]}},"keywords":{}}],["abc1234](link",{"_index":1867,"title":{},"content":{"181":{"position":[[114,15]]}},"keywords":{}}],["aboutno",{"_index":2688,"title":{},"content":{"273":{"position":[[847,7]]}},"keywords":{}}],["abov",{"_index":2100,"title":{},"content":{"237":{"position":[[117,5]]},"238":{"position":[[305,5]]},"243":{"position":[[1370,5]]},"245":{"position":[[89,5],[196,5]]},"247":{"position":[[107,5]]},"248":{"position":[[548,5]]}},"keywords":{}}],["abrupt",{"_index":2234,"title":{},"content":{"243":{"position":[[1985,6]]}},"keywords":{}}],["abs(actu",{"_index":2473,"title":{},"content":{"255":{"position":[[1406,10]]}},"keywords":{}}],["abs(config.flex",{"_index":2393,"title":{},"content":{"252":{"position":[[209,16]]}},"keywords":{}}],["abs(criteria.flex",{"_index":2223,"title":{},"content":{"243":{"position":[[1269,18]]}},"keywords":{}}],["abs(flex",{"_index":2348,"title":{},"content":{"247":{"position":[[70,9]]}},"keywords":{}}],["abs(p",{"_index":2476,"title":{},"content":{"255":{"position":[[1554,6]]}},"keywords":{}}],["absolut",{"_index":494,"title":{},"content":{"36":{"position":[[170,8]]},"42":{"position":[[513,8]]},"247":{"position":[[4,8]]},"252":{"position":[[611,8]]},"273":{"position":[[3724,8]]},"279":{"position":[[1390,8],[1989,8]]}},"keywords":{}}],["abstract",{"_index":543,"title":{},"content":{"37":{"position":[[653,8]]}},"keywords":{}}],["accept",{"_index":2161,"title":{},"content":{"241":{"position":[[200,8],[273,8]]},"243":{"position":[[730,9]]},"248":{"position":[[485,10]]},"259":{"position":[[112,6]]},"263":{"position":[[255,6]]}},"keywords":{}}],["access",{"_index":217,"title":{},"content":{"16":{"position":[[56,6]]},"31":{"position":[[1262,6]]},"52":{"position":[[132,9],[621,6],[665,6],[840,8]]},"62":{"position":[[675,8]]},"67":{"position":[[713,6]]},"86":{"position":[[179,6],[409,6]]},"205":{"position":[[169,8]]}},"keywords":{}}],["accessfocus",{"_index":656,"title":{},"content":{"43":{"position":[[646,13]]}},"keywords":{}}],["accessinterval.pi",{"_index":545,"title":{},"content":{"37":{"position":[[694,17]]}},"keywords":{}}],["account",{"_index":2076,"title":{},"content":{"229":{"position":[[70,7]]},"255":{"position":[[3167,8]]}},"keywords":{}}],["accumul",{"_index":1135,"title":{},"content":{"87":{"position":[[153,12]]},"150":{"position":[[562,10]]}},"keywords":{}}],["accuraci",{"_index":2519,"title":{},"content":{"255":{"position":[[3284,8]]}},"keywords":{}}],["accuracyus",{"_index":2299,"title":{},"content":{"246":{"position":[[1030,12]]}},"keywords":{}}],["act",{"_index":230,"title":{},"content":{"17":{"position":[[203,3]]},"273":{"position":[[4088,7]]}},"keywords":{}}],["action",{"_index":1861,"title":{},"content":{"180":{"position":[[227,7]]},"185":{"position":[[269,7]]},"194":{"position":[[546,8]]},"224":{"position":[[423,7]]},"246":{"position":[[672,7]]}},"keywords":{}}],["activ",{"_index":504,"title":{},"content":{"36":{"position":[[547,7]]},"77":{"position":[[1729,6]]},"163":{"position":[[252,6]]},"165":{"position":[[113,6]]},"174":{"position":[[594,6]]},"256":{"position":[[510,6]]},"262":{"position":[[423,6]]},"267":{"position":[[361,9]]}},"keywords":{}}],["activeif",{"_index":2611,"title":{},"content":{"267":{"position":[[929,8]]}},"keywords":{}}],["actual",{"_index":1647,"title":{"288":{"position":[[24,8]]}},"content":{"150":{"position":[[787,6]]},"255":{"position":[[1168,7]]},"272":{"position":[[961,8],[1154,6],[2066,6]]},"286":{"position":[[207,8]]}},"keywords":{}}],["ad",{"_index":600,"title":{},"content":{"41":{"position":[[435,6],[496,6],[577,6]]},"93":{"position":[[53,6]]},"273":{"position":[[3824,5]]}},"keywords":{}}],["adapt",{"_index":2618,"title":{},"content":{"269":{"position":[[1,8]]},"272":{"position":[[4,8],[142,8]]}},"keywords":{}}],["adaptive_flex",{"_index":2635,"title":{},"content":{"272":{"position":[[260,13],[365,13],[429,13]]}},"keywords":{}}],["add",{"_index":221,"title":{},"content":{"17":{"position":[[1,3]]},"18":{"position":[[35,3],[76,3],[104,3],[442,3]]},"37":{"position":[[1243,3],[1284,3]]},"43":{"position":[[1135,3],[1165,3]]},"62":{"position":[[121,4]]},"90":{"position":[[275,3]]},"110":{"position":[[1,3]]},"121":{"position":[[150,3]]},"128":{"position":[[1,3]]},"129":{"position":[[49,3]]},"149":{"position":[[176,3]]},"154":{"position":[[313,3]]},"171":{"position":[[156,3]]},"196":{"position":[[79,3],[183,3]]},"273":{"position":[[1161,3],[1325,4]]},"278":{"position":[[1170,4]]}},"keywords":{}}],["add/modify/remove)test",{"_index":1671,"title":{},"content":{"157":{"position":[[98,23]]}},"keywords":{}}],["added/upd",{"_index":288,"title":{},"content":{"21":{"position":[[256,13]]}},"keywords":{}}],["addedal",{"_index":1527,"title":{},"content":{"137":{"position":[[337,8]]}},"keywords":{}}],["addit",{"_index":343,"title":{"82":{"position":[[3,10]]}},"content":{"26":{"position":[[95,10]]}},"keywords":{}}],["address",{"_index":344,"title":{},"content":{"26":{"position":[[117,7]]},"99":{"position":[[81,7]]}},"keywords":{}}],["address1",{"_index":1189,"title":{},"content":{"99":{"position":[[91,8]]}},"keywords":{}}],["adjust",{"_index":2129,"title":{},"content":{"239":{"position":[[492,6],[810,6],[1165,7]]},"243":{"position":[[315,8],[1015,9],[1729,8]]},"248":{"position":[[428,11]]},"252":{"position":[[1053,7]]},"267":{"position":[[521,9]]},"269":{"position":[[33,6]]},"272":{"position":[[68,6],[527,9]]},"273":{"position":[[4548,6]]}},"keywords":{}}],["adjusted_min_dist",{"_index":2190,"title":{},"content":{"243":{"position":[[189,21],[1203,21],[1432,21],[1696,22]]}},"keywords":{}}],["adjusted_min_distance/100",{"_index":2231,"title":{},"content":{"243":{"position":[[1821,26],[1895,26]]}},"keywords":{}}],["adjustmost",{"_index":2345,"title":{},"content":{"246":{"position":[[2669,10]]}},"keywords":{}}],["adopt",{"_index":2341,"title":{},"content":{"246":{"position":[[2451,9]]}},"keywords":{}}],["affect",{"_index":882,"title":{},"content":{"57":{"position":[[639,6]]},"143":{"position":[[162,9],[412,9]]},"170":{"position":[[122,8]]},"215":{"position":[[1,7]]},"239":{"position":[[1096,6]]},"255":{"position":[[2450,7]]}},"keywords":{}}],["against",{"_index":2721,"title":{},"content":{"273":{"position":[[2747,7],[2901,7]]}},"keywords":{}}],["agents.md",{"_index":107,"title":{},"content":{"3":{"position":[[1442,9]]},"8":{"position":[[174,9]]},"22":{"position":[[201,9]]},"132":{"position":[[41,10],[366,9]]},"133":{"position":[[1246,9]]},"161":{"position":[[34,9]]},"163":{"position":[[119,9],[308,9],[451,9],[485,10],[641,9]]},"174":{"position":[[277,11]]},"233":{"position":[[149,9]]}},"keywords":{}}],["agents.mdmov",{"_index":1639,"title":{},"content":{"150":{"position":[[406,14]]}},"keywords":{}}],["agents.mdus",{"_index":1541,"title":{},"content":{"139":{"position":[[92,12]]}},"keywords":{}}],["aggreg",{"_index":539,"title":{},"content":{"37":{"position":[[566,11]]},"38":{"position":[[86,11]]}},"keywords":{}}],["aggress",{"_index":2239,"title":{},"content":{"243":{"position":[[2114,11]]},"246":{"position":[[785,10]]},"255":{"position":[[3712,11]]},"270":{"position":[[41,10]]},"273":{"position":[[54,10]]}},"keywords":{}}],["aggressive/conserv",{"_index":2683,"title":{},"content":{"273":{"position":[[575,23]]}},"keywords":{}}],["ahead",{"_index":2737,"title":{},"content":{"273":{"position":[[3432,5]]}},"keywords":{}}],["ai",{"_index":702,"title":{"132":{"position":[[3,2]]},"133":{"position":[[0,2]]},"163":{"position":[[17,2]]}},"content":{"48":{"position":[[315,2]]},"73":{"position":[[151,2]]},"132":{"position":[[93,2],[384,2]]},"133":{"position":[[46,2],[95,2],[110,2],[957,2],[1216,2]]},"147":{"position":[[61,2]]},"163":{"position":[[19,2],[86,2],[103,2],[171,3],[295,2],[522,2],[703,2]]},"179":{"position":[[362,2],[660,2],[834,2],[1010,2]]},"180":{"position":[[378,3]]},"196":{"position":[[316,2]]},"274":{"position":[[88,2]]},"300":{"position":[[150,2]]}},"keywords":{}}],["ai'",{"_index":1469,"title":{},"content":{"133":{"position":[[1096,4]]}},"keywords":{}}],["ai/copilot",{"_index":1428,"title":{},"content":{"132":{"position":[[10,10]]}},"keywords":{}}],["ai/human",{"_index":1695,"title":{},"content":{"161":{"position":[[94,9]]}},"keywords":{}}],["aiohttp)loc",{"_index":120,"title":{},"content":{"4":{"position":[[66,13]]}},"keywords":{}}],["aioprof",{"_index":1951,"title":{},"content":{"202":{"position":[[11,7],[34,7],[73,7]]}},"keywords":{}}],["aktualisiert",{"_index":2920,"title":{},"content":{"286":{"position":[[104,13]]}},"keywords":{}}],["alert",{"_index":2294,"title":{},"content":{"246":{"position":[[849,5],[1324,5]]}},"keywords":{}}],["alert>",{"_index":1916,"title":{},"content":{"195":{"position":[[207,9]]}},"keywords":{}}],["algorithm",{"_index":2090,"title":{},"content":{"235":{"position":[[104,10]]},"239":{"position":[[998,9]]},"252":{"position":[[1394,9]]},"255":{"position":[[790,9],[1924,9]]},"272":{"position":[[112,10],[1852,10],[1963,9]]}},"keywords":{}}],["alias",{"_index":70,"title":{},"content":{"3":{"position":[[628,7]]}},"keywords":{}}],["all_pric",{"_index":2441,"title":{},"content":{"255":{"position":[[95,11]]},"273":{"position":[[1714,11]]}},"keywords":{}}],["alllightweight",{"_index":2962,"title":{},"content":{"294":{"position":[[113,15]]}},"keywords":{}}],["allow",{"_index":1650,"title":{},"content":{"152":{"position":[[93,6]]},"241":{"position":[[461,6]]}},"keywords":{}}],["alongsid",{"_index":1460,"title":{},"content":{"133":{"position":[[875,9]]}},"keywords":{}}],["alreadi",{"_index":1105,"title":{},"content":{"83":{"position":[[319,7]]},"186":{"position":[[357,7]]},"194":{"position":[[11,7],[575,7]]},"204":{"position":[[36,7],[201,7]]},"212":{"position":[[1,7]]},"258":{"position":[[92,7]]},"278":{"position":[[1509,7]]},"279":{"position":[[794,7]]},"284":{"position":[[495,7]]}},"keywords":{}}],["altern",{"_index":2331,"title":{},"content":{"246":{"position":[[2015,12]]},"255":{"position":[[1997,12],[3643,11]]},"273":{"position":[[600,12],[4347,11]]}},"keywords":{}}],["alway",{"_index":126,"title":{},"content":{"6":{"position":[[1,6]]},"8":{"position":[[1,6]]},"100":{"position":[[266,6]]},"132":{"position":[[352,6]]},"162":{"position":[[188,6]]},"179":{"position":[[959,7]]},"239":{"position":[[1565,6]]},"273":{"position":[[4720,6]]},"301":{"position":[[223,8]]}},"keywords":{}}],["always)tim",{"_index":2984,"title":{},"content":{"301":{"position":[[162,13]]}},"keywords":{}}],["amend",{"_index":1907,"title":{},"content":{"194":{"position":[[328,5],[358,5]]}},"keywords":{}}],["amp",{"_index":1588,"title":{},"content":{"146":{"position":[[547,5]]},"156":{"position":[[201,5]]},"171":{"position":[[224,5]]},"176":{"position":[[33,5]]},"181":{"position":[[302,5]]}},"keywords":{}}],["amp;lt;100ms."""",{"_index":2039,"title":{},"content":{"218":{"position":[[160,32]]}},"keywords":{}}],["analysi",{"_index":556,"title":{"82":{"position":[[14,8]]},"242":{"position":[[13,9]]}},"content":{"37":{"position":[[971,8]]},"78":{"position":[[407,8]]}},"keywords":{}}],["analysistrailing/lead",{"_index":1525,"title":{},"content":{"137":{"position":[[246,24]]}},"keywords":{}}],["analysistrend.pi",{"_index":555,"title":{},"content":{"37":{"position":[[938,16]]}},"keywords":{}}],["analyz",{"_index":1096,"title":{"90":{"position":[[3,8]]}},"content":{"82":{"position":[[21,8]]},"90":{"position":[[444,9]]},"93":{"position":[[93,8]]}},"keywords":{}}],["anneal",{"_index":2665,"title":{},"content":{"272":{"position":[[1986,9]]}},"keywords":{}}],["answer",{"_index":2871,"title":{},"content":{"281":{"position":[[72,7]]},"286":{"position":[[145,7]]}},"keywords":{}}],["anti",{"_index":1436,"title":{"258":{"position":[[2,4]]},"259":{"position":[[2,4]]},"260":{"position":[[2,4]]}},"content":{"132":{"position":[[236,4]]}},"keywords":{}}],["apach",{"_index":1549,"title":{},"content":{"141":{"position":[[36,6]]}},"keywords":{}}],["apexchart",{"_index":443,"title":{},"content":{"31":{"position":[[1328,10]]}},"keywords":{}}],["api",{"_index":61,"title":{"45":{"position":[[0,3]]},"51":{"position":[[14,3]]},"84":{"position":[[3,3]]},"96":{"position":[[0,3]]},"212":{"position":[[9,3]]},"287":{"position":[[38,4]]}},"content":{"3":{"position":[[516,4]]},"4":{"position":[[80,6]]},"8":{"position":[[19,3]]},"41":{"position":[[94,3]]},"42":{"position":[[1,3],[750,3]]},"45":{"position":[[21,3],[68,3]]},"50":{"position":[[99,3]]},"51":{"position":[[104,3],[1299,3]]},"60":{"position":[[353,3]]},"61":{"position":[[105,3]]},"62":{"position":[[62,3]]},"64":{"position":[[42,3]]},"65":{"position":[[35,3]]},"66":{"position":[[97,3]]},"67":{"position":[[104,3],[568,3]]},"90":{"position":[[104,3]]},"101":{"position":[[8,3]]},"107":{"position":[[5,3],[336,3],[373,3]]},"111":{"position":[[566,3],[617,3]]},"136":{"position":[[156,3]]},"137":{"position":[[208,3]]},"143":{"position":[[267,4]]},"157":{"position":[[220,4]]},"204":{"position":[[21,4]]},"207":{"position":[[15,3]]},"212":{"position":[[120,3]]},"229":{"position":[[90,3]]},"277":{"position":[[156,3]]},"278":{"position":[[413,3],[960,3],[1254,3]]},"279":{"position":[[259,3]]},"285":{"position":[[184,3],[461,4]]},"287":{"position":[[89,3],[141,3],[472,3]]},"288":{"position":[[574,3],[611,3]]},"289":{"position":[[109,3]]},"290":{"position":[[142,3]]},"292":{"position":[[113,4]]},"293":{"position":[[82,3]]},"294":{"position":[[80,3]]},"296":{"position":[[113,3],[150,3]]},"299":{"position":[[253,3]]}},"keywords":{}}],["api)tim",{"_index":2985,"title":{},"content":{"301":{"position":[[301,9]]}},"keywords":{}}],["api."""",{"_index":1318,"title":{},"content":{"114":{"position":[[125,22]]},"213":{"position":[[108,22]]}},"keywords":{}}],["api.pi",{"_index":488,"title":{},"content":{"36":{"position":[[41,6]]},"136":{"position":[[132,6]]}},"keywords":{}}],["api.pyapi",{"_index":388,"title":{},"content":{"31":{"position":[[204,9]]}},"keywords":{}}],["api/client.pi",{"_index":1112,"title":{},"content":{"84":{"position":[[173,13]]}},"keywords":{}}],["apicli",{"_index":48,"title":{},"content":{"3":{"position":[[286,10]]}},"keywords":{}}],["apiresult",{"_index":2805,"title":{},"content":{"278":{"position":[[1243,10]]}},"keywords":{}}],["apistor",{"_index":398,"title":{},"content":{"31":{"position":[[346,8]]}},"keywords":{}}],["appear",{"_index":1668,"title":{},"content":{"156":{"position":[[255,6]]},"178":{"position":[[307,6]]}},"keywords":{}}],["appli",{"_index":1278,"title":{},"content":{"110":{"position":[[124,6]]},"133":{"position":[[162,8]]},"243":{"position":[[1723,5]]},"247":{"position":[[878,7]]}},"keywords":{}}],["applianc",{"_index":2269,"title":{},"content":{"246":{"position":[[177,10],[203,10]]},"272":{"position":[[2099,9]]},"273":{"position":[[1128,11]]}},"keywords":{}}],["appnicknam",{"_index":1188,"title":{},"content":{"99":{"position":[[69,11]]}},"keywords":{}}],["approach",{"_index":285,"title":{"251":{"position":[[12,9]]}},"content":{"21":{"position":[[180,8]]},"146":{"position":[[323,8]]},"149":{"position":[[99,10]]},"150":{"position":[[646,8]]},"159":{"position":[[114,8]]},"171":{"position":[[88,8]]},"172":{"position":[[59,10]]},"243":{"position":[[1,9]]},"246":{"position":[[2442,8]]},"255":{"position":[[3117,9],[3655,10]]},"258":{"position":[[173,10]]},"269":{"position":[[169,9]]},"272":{"position":[[843,8],[925,9]]},"273":{"position":[[2307,9],[4359,10]]}},"keywords":{}}],["approach)document",{"_index":1564,"title":{},"content":{"143":{"position":[[619,22]]}},"keywords":{}}],["approach)refactor",{"_index":1558,"title":{},"content":{"143":{"position":[[460,21]]}},"keywords":{}}],["appropri",{"_index":2002,"title":{},"content":{"210":{"position":[[5,11]]}},"keywords":{}}],["approv",{"_index":1603,"title":{},"content":{"148":{"position":[[14,9]]}},"keywords":{}}],["architectur",{"_index":375,"title":{"29":{"position":[[0,12]]},"32":{"position":[[8,13]]},"37":{"position":[[7,12]]},"276":{"position":[[6,12]]}},"content":{"48":{"position":[[7,12]]},"57":{"position":[[708,13]]},"73":{"position":[[7,12]]},"131":{"position":[[220,12]]},"132":{"position":[[131,13]]},"279":{"position":[[1364,12]]},"300":{"position":[[1,12]]}},"keywords":{}}],["archiv",{"_index":1609,"title":{},"content":{"149":{"position":[[11,7],[254,7]]}},"keywords":{}}],["archivedplanning/config",{"_index":1720,"title":{},"content":{"166":{"position":[[58,23]]}},"keywords":{}}],["aren't",{"_index":2365,"title":{},"content":{"247":{"position":[[810,6]]}},"keywords":{}}],["aris",{"_index":1155,"title":{},"content":{"93":{"position":[[13,5]]}},"keywords":{}}],["around",{"_index":2696,"title":{},"content":{"273":{"position":[[1355,6]]}},"keywords":{}}],["arrang",{"_index":228,"title":{},"content":{"17":{"position":[[168,7]]}},"keywords":{}}],["arriv",{"_index":861,"title":{"61":{"position":[[14,7]]}},"content":{"56":{"position":[[1452,7]]}},"keywords":{}}],["artifact",{"_index":1494,"title":{},"content":{"135":{"position":[[191,9]]}},"keywords":{}}],["artifici",{"_index":2451,"title":{},"content":{"255":{"position":[[763,10]]},"273":{"position":[[4736,12]]}},"keywords":{}}],["ask",{"_index":1728,"title":{},"content":{"169":{"position":[[14,6]]}},"keywords":{}}],["assembl",{"_index":888,"title":{},"content":{"57":{"position":[[855,9]]}},"keywords":{}}],["assert",{"_index":233,"title":{},"content":{"17":{"position":[[250,6],[257,6]]},"218":{"position":[[306,6]]}},"keywords":{}}],["assign",{"_index":1086,"title":{"81":{"position":[[19,10]]}},"content":{"81":{"position":[[277,10]]},"89":{"position":[[415,10]]},"92":{"position":[[390,10]]}},"keywords":{}}],["assist",{"_index":37,"title":{"133":{"position":[[3,8]]}},"content":{"3":{"position":[[77,9]]},"21":{"position":[[229,9]]},"62":{"position":[[711,9]]},"75":{"position":[[6,9]]},"94":{"position":[[546,10]]},"95":{"position":[[6,9]]},"110":{"position":[[111,9]]},"132":{"position":[[96,10]]},"133":{"position":[[49,10],[176,9],[1025,9]]},"134":{"position":[[381,9]]},"135":{"position":[[123,9]]},"147":{"position":[[64,10]]},"156":{"position":[[80,9]]},"195":{"position":[[67,10]]},"226":{"position":[[71,9]]},"231":{"position":[[127,9]]},"232":{"position":[[14,9]]},"274":{"position":[[91,9]]},"280":{"position":[[986,9]]},"281":{"position":[[88,9]]}},"keywords":{}}],["assistant"",{"_index":1298,"title":{},"content":{"113":{"position":[[126,16]]}},"keywords":{}}],["assistant'",{"_index":1453,"title":{},"content":{"133":{"position":[[604,11]]},"278":{"position":[[75,11]]}},"keywords":{}}],["assistant.io/docs/asyncio_101/memori",{"_index":1176,"title":{},"content":{"95":{"position":[[157,36]]}},"keywords":{}}],["assistant.io/docs/integration_setup_failures/#cleanupasync",{"_index":1174,"title":{},"content":{"95":{"position":[[58,58]]}},"keywords":{}}],["assistant.log",{"_index":1352,"title":{},"content":{"120":{"position":[[52,13]]}},"keywords":{}}],["assum",{"_index":2532,"title":{},"content":{"255":{"position":[[3832,7]]}},"keywords":{}}],["assur",{"_index":1451,"title":{},"content":{"133":{"position":[[518,10]]}},"keywords":{}}],["asymmetr",{"_index":2265,"title":{"246":{"position":[[14,10]]}},"content":{"255":{"position":[[1283,10],[1702,10]]}},"keywords":{}}],["asymmetri",{"_index":2488,"title":{},"content":{"255":{"position":[[2168,9],[3045,9]]}},"keywords":{}}],["async",{"_index":223,"title":{"83":{"position":[[3,5]]},"202":{"position":[[0,5]]},"207":{"position":[[0,5]]}},"content":{"17":{"position":[[59,5]]},"55":{"position":[[443,5]]},"93":{"position":[[61,5]]},"114":{"position":[[44,5]]},"209":{"position":[[42,5]]},"213":{"position":[[27,5]]},"219":{"position":[[26,5]]},"221":{"position":[[9,5]]},"278":{"position":[[468,5]]},"279":{"position":[[592,5]]},"280":{"position":[[233,5]]},"281":{"position":[[436,5]]}},"keywords":{}}],["async_add_minute_update_listener())lifecycl",{"_index":1016,"title":{},"content":{"77":{"position":[[211,45]]}},"keywords":{}}],["async_add_minute_update_listener()coordinator/core.pi",{"_index":1029,"title":{},"content":{"77":{"position":[[731,53]]}},"keywords":{}}],["async_add_time_sensitive_listen",{"_index":1028,"title":{},"content":{"77":{"position":[[694,36]]}},"keywords":{}}],["async_add_time_sensitive_listener())minut",{"_index":1015,"title":{},"content":{"77":{"position":[[128,43]]}},"keywords":{}}],["async_add_time_sensitive_listener(self",{"_index":2882,"title":{},"content":{"281":{"position":[[769,39]]}},"keywords":{}}],["async_added_to_hass(self",{"_index":2875,"title":{},"content":{"281":{"position":[[446,26]]}},"keywords":{}}],["async_get_clientsess",{"_index":1146,"title":{},"content":{"90":{"position":[[142,24]]}},"keywords":{}}],["async_get_clientsession(hass",{"_index":1109,"title":{},"content":{"84":{"position":[[42,29]]}},"keywords":{}}],["async_load_standard_translations(hass",{"_index":145,"title":{},"content":{"7":{"position":[[95,38]]}},"keywords":{}}],["async_load_transl",{"_index":982,"title":{},"content":{"72":{"position":[[9,25]]}},"keywords":{}}],["async_load_translations(hass",{"_index":143,"title":{},"content":{"7":{"position":[[43,29]]},"52":{"position":[[498,29]]}},"keywords":{}}],["async_on_unload",{"_index":1048,"title":{},"content":{"77":{"position":[[1595,17],[1693,18]]}},"keywords":{}}],["async_on_unload()cleanup",{"_index":1047,"title":{},"content":{"77":{"position":[[1538,24]]}},"keywords":{}}],["async_remove_entry()coordinator/core.pi",{"_index":1077,"title":{},"content":{"79":{"position":[[428,39]]}},"keywords":{}}],["async_request_refresh",{"_index":963,"title":{},"content":{"69":{"position":[[141,23]]}},"keywords":{}}],["async_setup_entri",{"_index":141,"title":{},"content":{"7":{"position":[[18,18]]}},"keywords":{}}],["async_shutdown",{"_index":1045,"title":{},"content":{"77":{"position":[[1432,16]]},"79":{"position":[[470,16]]}},"keywords":{}}],["async_shutdown(self",{"_index":1989,"title":{},"content":{"209":{"position":[[52,21]]}},"keywords":{}}],["async_track_utc_time_chang",{"_index":1041,"title":{},"content":{"77":{"position":[[1211,29]]},"277":{"position":[[251,29],[329,29]]},"279":{"position":[[1417,29]]}},"keywords":{}}],["async_track_utc_time_change(minute=[0",{"_index":611,"title":{},"content":{"42":{"position":[[156,38]]},"279":{"position":[[108,38]]}},"keywords":{}}],["async_track_utc_time_change(second=0",{"_index":2848,"title":{},"content":{"280":{"position":[[102,37]]}},"keywords":{}}],["async_track_utc_time_change)listen",{"_index":2872,"title":{},"content":{"281":{"position":[[166,37]]}},"keywords":{}}],["async_unload_entri",{"_index":1056,"title":{},"content":{"77":{"position":[[1923,20]]}},"keywords":{}}],["async_update_time_sensitive_listeners(self",{"_index":2884,"title":{},"content":{"281":{"position":[[872,44]]}},"keywords":{}}],["async_will_remove_from_hass",{"_index":1032,"title":{},"content":{"77":{"position":[[886,29]]},"83":{"position":[[387,29]]}},"keywords":{}}],["async_will_remove_from_hass()binary_sensor/core.pi",{"_index":1031,"title":{},"content":{"77":{"position":[[833,50]]}},"keywords":{}}],["asyncio.gath",{"_index":1986,"title":{},"content":{"207":{"position":[[175,15]]}},"keywords":{}}],["atom",{"_index":1895,"title":{"191":{"position":[[3,6]]}},"content":{"278":{"position":[[1335,6]]},"279":{"position":[[814,6]]},"284":{"position":[[569,6]]},"299":{"position":[[181,7]]},"301":{"position":[[452,7]]}},"keywords":{}}],["attach",{"_index":1402,"title":{},"content":{"128":{"position":[[103,6],[191,6]]}},"keywords":{}}],["attempt",{"_index":772,"title":{},"content":{"52":{"position":[[596,8]]},"111":{"position":[[697,8]]},"251":{"position":[[210,8]]},"252":{"position":[[253,7],[321,8],[794,8]]}},"keywords":{}}],["attempts)cach",{"_index":865,"title":{},"content":{"56":{"position":[[1567,14]]}},"keywords":{}}],["attempts)configentryauthfail",{"_index":1261,"title":{},"content":{"106":{"position":[[582,30]]}},"keywords":{}}],["attribut",{"_index":247,"title":{"216":{"position":[[0,9]]}},"content":{"18":{"position":[[171,10]]},"37":{"position":[[307,10],[1167,10]]},"43":{"position":[[786,10]]},"52":{"position":[[825,10],[981,9]]},"118":{"position":[[208,11]]},"136":{"position":[[490,9],[700,9]]},"216":{"position":[[6,10],[71,10],[229,10]]},"273":{"position":[[3856,10]]}},"keywords":{}}],["attributeif",{"_index":2616,"title":{},"content":{"267":{"position":[[1105,11]]}},"keywords":{}}],["attributes."""",{"_index":1972,"title":{},"content":{"205":{"position":[[117,29]]}},"keywords":{}}],["attributes.pi",{"_index":1510,"title":{},"content":{"136":{"position":[[474,13],[677,13]]}},"keywords":{}}],["attributesservicestransl",{"_index":2070,"title":{},"content":{"226":{"position":[[122,29]]}},"keywords":{}}],["audienc",{"_index":1712,"title":{},"content":{"163":{"position":[[626,9]]},"235":{"position":[[248,9]]}},"keywords":{}}],["augment",{"_index":589,"title":{},"content":{"41":{"position":[[40,9]]}},"keywords":{}}],["auth",{"_index":1262,"title":{},"content":{"106":{"position":[[617,4]]}},"keywords":{}}],["authent",{"_index":1181,"title":{},"content":{"97":{"position":[[38,15]]}},"keywords":{}}],["author",{"_index":1184,"title":{},"content":{"97":{"position":[[70,13]]}},"keywords":{}}],["auto",{"_index":23,"title":{"185":{"position":[[25,4]]}},"content":{"1":{"position":[[175,4]]},"15":{"position":[[141,5]]},"60":{"position":[[287,4]]},"61":{"position":[[195,4]]},"67":{"position":[[317,4],[420,4]]},"135":{"position":[[147,5],[218,4]]},"167":{"position":[[102,4]]},"176":{"position":[[760,4]]},"182":{"position":[[93,4]]},"185":{"position":[[242,4]]},"189":{"position":[[24,4]]},"194":{"position":[[487,4]]},"269":{"position":[[28,4]]},"272":{"position":[[63,4]]}},"keywords":{}}],["autom",{"_index":301,"title":{"180":{"position":[[9,11]]}},"content":{"23":{"position":[[1,9]]},"133":{"position":[[530,9]]},"239":{"position":[[1103,10]]},"246":{"position":[[321,10],[652,11],[703,10]]},"250":{"position":[[198,10]]},"272":{"position":[[975,11]]},"273":{"position":[[4048,11]]}},"keywords":{}}],["automat",{"_index":182,"title":{},"content":{"12":{"position":[[243,14]]},"33":{"position":[[186,9],[470,9]]},"56":{"position":[[1133,10]]},"62":{"position":[[478,9],[544,9]]},"84":{"position":[[152,13]]},"87":{"position":[[45,13]]},"90":{"position":[[347,13]]},"93":{"position":[[245,9]]},"134":{"position":[[135,13]]},"176":{"position":[[22,10],[381,14],[823,14]]},"179":{"position":[[78,9],[762,13],[1016,13],[1088,12],[1115,13]]},"180":{"position":[[1,9],[162,9],[338,13]]},"182":{"position":[[67,9],[137,9],[354,9]]},"184":{"position":[[219,13]]},"185":{"position":[[277,13]]},"187":{"position":[[102,9],[180,9]]},"192":{"position":[[15,13]]},"196":{"position":[[444,9]]},"248":{"position":[[418,9]]},"278":{"position":[[196,13],[1567,9]]},"289":{"position":[[73,9]]}},"keywords":{}}],["automaticallyreleas",{"_index":1882,"title":{},"content":{"185":{"position":[[447,20]]}},"keywords":{}}],["automaticallytask",{"_index":1104,"title":{},"content":{"83":{"position":[[286,17]]}},"keywords":{}}],["automationsdiffer",{"_index":2697,"title":{},"content":{"273":{"position":[[1376,20]]}},"keywords":{}}],["aux",{"_index":1170,"title":{},"content":{"94":{"position":[[530,3]]}},"keywords":{}}],["avail",{"_index":1827,"title":{},"content":{"179":{"position":[[793,9],[1420,10]]},"285":{"position":[[284,10]]}},"keywords":{}}],["averag",{"_index":497,"title":{"238":{"position":[[44,9]]}},"content":{"36":{"position":[[288,10]]},"38":{"position":[[98,7],[150,7]]},"41":{"position":[[455,7]]},"107":{"position":[[46,7],[102,7]]},"136":{"position":[[238,7]]},"137":{"position":[[275,8]]},"235":{"position":[[206,8]]},"238":{"position":[[71,8],[180,7],[317,7]]},"255":{"position":[[3158,8],[3234,7],[3755,7]]},"259":{"position":[[234,7]]}},"keywords":{}}],["average"",{"_index":2280,"title":{},"content":{"246":{"position":[[405,13]]}},"keywords":{}}],["average)assign",{"_index":413,"title":{},"content":{"31":{"position":[[697,14]]}},"keywords":{}}],["average_utils.pi",{"_index":407,"title":{},"content":{"31":{"position":[[605,16]]},"136":{"position":[[219,16]]}},"keywords":{}}],["averagecustom",{"_index":1269,"title":{},"content":{"107":{"position":[[180,13]]}},"keywords":{}}],["averageeven",{"_index":2205,"title":{},"content":{"243":{"position":[[647,11]]}},"keywords":{}}],["averagescalcul",{"_index":411,"title":{},"content":{"31":{"position":[[653,17]]}},"keywords":{}}],["avg",{"_index":605,"title":{},"content":{"41":{"position":[[524,3]]},"238":{"position":[[422,4]]},"241":{"position":[[140,4]]},"242":{"position":[[129,3]]}},"keywords":{}}],["avg=20ct",{"_index":2728,"title":{},"content":{"273":{"position":[[3116,9]]}},"keywords":{}}],["avg=35ct",{"_index":2731,"title":{},"content":{"273":{"position":[[3184,9]]}},"keywords":{}}],["avg_context_residu",{"_index":2478,"title":{},"content":{"255":{"position":[[1593,20],[1678,21]]}},"keywords":{}}],["avg_pric",{"_index":2230,"title":{},"content":{"243":{"position":[[1804,9],[1878,9]]}},"keywords":{}}],["avg_price=avg_prices[ref_d",{"_index":2711,"title":{},"content":{"273":{"position":[[1969,31]]}},"keywords":{}}],["avoid",{"_index":39,"title":{"209":{"position":[[0,5]]}},"content":{"3":{"position":[[99,5]]},"25":{"position":[[157,6]]},"27":{"position":[[192,5]]},"52":{"position":[[103,5]]},"53":{"position":[[105,5]]},"56":{"position":[[79,5],[1794,6]]},"57":{"position":[[385,5]]},"62":{"position":[[288,6]]},"67":{"position":[[165,5],[248,5],[338,5],[443,5]]},"150":{"position":[[502,5]]},"280":{"position":[[1010,6]]}},"keywords":{}}],["avoiding)earli",{"_index":2296,"title":{},"content":{"246":{"position":[[980,14]]}},"keywords":{}}],["await",{"_index":142,"title":{},"content":{"7":{"position":[[37,5],[89,5]]},"51":{"position":[[865,5]]},"55":{"position":[[592,5]]},"204":{"position":[[137,5]]},"207":{"position":[[61,5],[98,5],[169,5],[350,5]]},"213":{"position":[[244,5]]},"219":{"position":[[239,5]]},"221":{"position":[[125,5]]},"278":{"position":[[653,5],[911,5]]},"279":{"position":[[838,5]]}},"keywords":{}}],["awar",{"_index":1829,"title":{},"content":{"179":{"position":[[854,5]]}},"keywords":{}}],["b",{"_index":189,"title":{"185":{"position":[[9,2]]}},"content":{"14":{"position":[[15,1],[62,1]]},"149":{"position":[[305,2]]},"252":{"position":[[1325,3]]},"287":{"position":[[291,2]]}},"keywords":{}}],["backend",{"_index":1813,"title":{},"content":{"179":{"position":[[88,7],[346,8],[732,7],[803,8],[1061,9]]},"180":{"position":[[354,8]]}},"keywords":{}}],["background",{"_index":991,"title":{},"content":{"75":{"position":[[53,11],[310,10]]},"92":{"position":[[153,10]]}},"keywords":{}}],["backoff",{"_index":1260,"title":{},"content":{"106":{"position":[[565,7]]}},"keywords":{}}],["backpressur",{"_index":2814,"title":{},"content":{"278":{"position":[[1683,12]]},"289":{"position":[[123,12]]}},"keywords":{}}],["balanc",{"_index":2624,"title":{},"content":{"269":{"position":[[342,7]]},"272":{"position":[[1565,7]]}},"keywords":{}}],["bar",{"_index":2856,"title":{},"content":{"280":{"position":[[600,3],[643,3],[766,4]]}},"keywords":{}}],["bare",{"_index":2559,"title":{},"content":{"259":{"position":[[221,6]]}},"keywords":{}}],["base",{"_index":464,"title":{},"content":{"33":{"position":[[381,5]]},"41":{"position":[[600,5]]},"57":{"position":[[830,5]]},"107":{"position":[[203,5]]},"157":{"position":[[293,5]]},"179":{"position":[[475,6],[1497,7]]},"245":{"position":[[298,4],[387,4]]},"252":{"position":[[761,4],[1120,4],[1138,5],[1277,4],[1311,4],[1431,5],[1465,4],[1575,4]]},"258":{"position":[[78,4]]},"267":{"position":[[531,4],[643,4],[686,4],[744,4]]},"269":{"position":[[45,5]]},"270":{"position":[[65,4]]},"272":{"position":[[80,5]]},"273":{"position":[[78,4],[99,4],[229,5],[378,4]]},"281":{"position":[[1229,5]]}},"keywords":{}}],["base.pi",{"_index":542,"title":{},"content":{"37":{"position":[[643,7]]}},"keywords":{}}],["base_flex",{"_index":2392,"title":{},"content":{"252":{"position":[[197,9],[309,9],[1489,9],[1805,9],[2007,9],[2031,9],[2221,9]]}},"keywords":{}}],["basecalcul",{"_index":544,"title":{},"content":{"37":{"position":[[662,14]]},"43":{"position":[[614,14]]}},"keywords":{}}],["baselin",{"_index":2370,"title":{},"content":{"248":{"position":[[124,8],[476,8]]},"250":{"position":[[52,8]]},"251":{"position":[[46,8]]},"253":{"position":[[240,8]]},"263":{"position":[[587,8]]},"265":{"position":[[16,8],[171,8]]},"266":{"position":[[164,8]]}},"keywords":{}}],["basic",{"_index":1669,"title":{},"content":{"156":{"position":[[267,5]]}},"keywords":{}}],["be",{"_index":281,"title":{},"content":{"21":{"position":[[124,5]]},"153":{"position":[[46,5]]}},"keywords":{}}],["bearer",{"_index":1182,"title":{},"content":{"97":{"position":[[54,6]]}},"keywords":{}}],["becom",{"_index":999,"title":{},"content":{"75":{"position":[[145,7]]},"241":{"position":[[518,7]]},"245":{"position":[[118,7]]},"247":{"position":[[135,7]]}},"keywords":{}}],["befor",{"_index":19,"title":{},"content":{"1":{"position":[[138,6]]},"3":{"position":[[1275,6]]},"22":{"position":[[1,6]]},"27":{"position":[[168,6]]},"51":{"position":[[228,6]]},"55":{"position":[[650,7]]},"133":{"position":[[715,6]]},"150":{"position":[[70,7]]},"182":{"position":[[297,6]]},"190":{"position":[[91,6]]},"196":{"position":[[292,6]]},"224":{"position":[[1,6]]},"255":{"position":[[723,6]]},"256":{"position":[[337,6]]},"273":{"position":[[3555,6],[3650,6],[4081,6]]}},"keywords":{}}],["before/aft",{"_index":617,"title":{},"content":{"42":{"position":[[251,12]]},"146":{"position":[[349,14]]}},"keywords":{}}],["begin",{"_index":885,"title":{},"content":{"57":{"position":[[700,6]]}},"keywords":{}}],["beginn",{"_index":352,"title":{},"content":{"27":{"position":[[52,8]]}},"keywords":{}}],["behavior",{"_index":483,"title":{"74":{"position":[[9,8]]}},"content":{"34":{"position":[[115,9]]},"48":{"position":[[117,9]]},"55":{"position":[[949,9]]},"57":{"position":[[471,9]]},"243":{"position":[[1992,8]]},"246":{"position":[[641,9],[1271,9],[2656,8]]},"252":{"position":[[1003,8],[1646,8]]},"255":{"position":[[3555,8]]},"262":{"position":[[74,9]]},"263":{"position":[[73,9]]},"264":{"position":[[73,9]]},"267":{"position":[[337,8]]},"272":{"position":[[640,8]]},"273":{"position":[[1486,9]]}},"keywords":{}}],["behavioradapt",{"_index":2646,"title":{},"content":{"272":{"position":[[1161,14]]}},"keywords":{}}],["behaviorprev",{"_index":2144,"title":{},"content":{"239":{"position":[[1114,16]]}},"keywords":{}}],["behind",{"_index":2089,"title":{},"content":{"235":{"position":[[74,6]]}},"keywords":{}}],["below",{"_index":1211,"title":{},"content":{"101":{"position":[[132,5]]},"237":{"position":[[231,5]]},"238":{"position":[[168,5]]},"242":{"position":[[239,5]]},"243":{"position":[[2145,5]]},"246":{"position":[[399,5]]},"259":{"position":[[228,5]]}},"keywords":{}}],["benchmark",{"_index":2035,"title":{"218":{"position":[[0,9]]}},"content":{},"keywords":{}}],["benefit",{"_index":561,"title":{},"content":{"37":{"position":[[1071,9]]},"43":{"position":[[1007,9]]},"67":{"position":[[540,9]]},"133":{"position":[[731,9]]},"143":{"position":[[337,7]]},"246":{"position":[[2686,7]]},"270":{"position":[[105,7]]},"272":{"position":[[468,9],[1120,9],[1997,9]]}},"keywords":{}}],["benutzen",{"_index":2914,"title":{},"content":{"286":{"position":[[61,9]]}},"keywords":{}}],["best",{"_index":839,"title":{"207":{"position":[[6,4]]},"289":{"position":[[25,4]]}},"content":{"56":{"position":[[677,4]]},"95":{"position":[[117,4]]},"111":{"position":[[356,4]]},"131":{"position":[[509,4]]},"133":{"position":[[186,4]]},"143":{"position":[[455,4]]},"179":{"position":[[788,4],[860,5]]},"196":{"position":[[52,4]]},"237":{"position":[[78,4],[314,5]]},"238":{"position":[[119,4],[401,5]]},"241":{"position":[[62,4]]},"242":{"position":[[24,4]]},"243":{"position":[[1850,4]]},"246":{"position":[[5,4],[98,4],[2308,4],[2550,4]]},"262":{"position":[[117,4]]},"265":{"position":[[88,4]]},"266":{"position":[[81,4]]},"280":{"position":[[996,4]]}},"keywords":{}}],["best/peak",{"_index":426,"title":{},"content":{"31":{"position":[[979,9]]},"36":{"position":[[362,9],[530,10]]},"37":{"position":[[1004,9]]},"78":{"position":[[349,9]]},"114":{"position":[[323,9]]},"243":{"position":[[809,9]]}},"keywords":{}}],["best_level_filt",{"_index":842,"title":{},"content":{"56":{"position":[[743,18]]}},"keywords":{}}],["best_price_flex",{"_index":2545,"title":{},"content":{"258":{"position":[[17,16],[229,16]]},"260":{"position":[[17,16],[190,16]]}},"keywords":{}}],["best_price_min_distance_from_avg",{"_index":2555,"title":{},"content":{"259":{"position":[[17,33],[260,33]]},"260":{"position":[[37,33],[210,33]]}},"keywords":{}}],["best_price_period_active)~50",{"_index":2844,"title":{},"content":{"279":{"position":[[1839,28]]}},"keywords":{}}],["best_price_remaining_minut",{"_index":2853,"title":{},"content":{"280":{"position":[[477,28]]}},"keywords":{}}],["beta/gql",{"_index":1180,"title":{},"content":{"97":{"position":[[27,8]]}},"keywords":{}}],["better",{"_index":1688,"title":{},"content":{"159":{"position":[[206,6]]},"171":{"position":[[81,6]]},"196":{"position":[[360,6]]},"238":{"position":[[100,7]]},"246":{"position":[[566,6],[1197,6]]},"273":{"position":[[3668,6]]}},"keywords":{}}],["better"no",{"_index":1744,"title":{},"content":{"170":{"position":[[361,14]]}},"keywords":{}}],["betterwould",{"_index":2690,"title":{},"content":{"273":{"position":[[883,11]]}},"keywords":{}}],["between",{"_index":41,"title":{},"content":{"3":{"position":[[122,7]]},"51":{"position":[[160,7]]},"57":{"position":[[437,7]]},"146":{"position":[[501,7]]},"179":{"position":[[187,7]]},"235":{"position":[[156,7]]},"264":{"position":[[242,7]]},"273":{"position":[[1058,7]]}},"keywords":{}}],["binari",{"_index":501,"title":{},"content":{"36":{"position":[[482,6]]},"81":{"position":[[213,6]]},"136":{"position":[[532,6]]},"157":{"position":[[59,6]]},"179":{"position":[[1641,6]]}},"keywords":{}}],["binary_sensor",{"_index":502,"title":{},"content":{"36":{"position":[[497,14]]}},"keywords":{}}],["binary_sensor)set",{"_index":380,"title":{},"content":{"31":{"position":[[104,18]]}},"keywords":{}}],["binary_sensor.pi",{"_index":1511,"title":{},"content":{"136":{"position":[[513,16]]}},"keywords":{}}],["black",{"_index":6,"title":{},"content":{"1":{"position":[[34,6]]}},"keywords":{}}],["blindli",{"_index":2938,"title":{},"content":{"288":{"position":[[19,7]]}},"keywords":{}}],["block",{"_index":775,"title":{},"content":{"52":{"position":[[644,8],[919,5],[972,8]]},"122":{"position":[[240,8],[293,8],[346,8]]},"207":{"position":[[242,5],[265,8],[305,6],[332,8]]},"241":{"position":[[550,6]]},"242":{"position":[[339,6]]},"267":{"position":[[81,6]]}},"keywords":{}}],["bodi",{"_index":1919,"title":{},"content":{"196":{"position":[[205,4]]}},"keywords":{}}],["bool",{"_index":739,"title":{},"content":{"51":{"position":[[987,5]]},"56":{"position":[[447,5]]},"255":{"position":[[353,5]]}},"keywords":{}}],["bootstrap",{"_index":1488,"title":{},"content":{"135":{"position":[[61,9]]}},"keywords":{}}],["both",{"_index":890,"title":{},"content":{"57":{"position":[[891,4]]},"189":{"position":[[1,4]]},"242":{"position":[[257,4]]},"243":{"position":[[372,4]]},"246":{"position":[[2082,4],[2095,4]]},"252":{"position":[[370,4]]},"262":{"position":[[410,4]]},"299":{"position":[[209,4]]}},"keywords":{}}],["bound",{"_index":1113,"title":{},"content":{"85":{"position":[[19,7]]},"90":{"position":[[204,7]]}},"keywords":{}}],["boundari",{"_index":89,"title":{},"content":{"3":{"position":[[1185,11]]},"31":{"position":[[1207,10]]},"36":{"position":[[200,8]]},"42":{"position":[[94,10],[284,8],[564,10]]},"137":{"position":[[151,8]]},"273":{"position":[[1458,8]]},"278":{"position":[[332,10]]},"279":{"position":[[228,10],[1136,8],[1468,10],[1966,8]]},"290":{"position":[[43,10]]}},"keywords":{}}],["boundaries)process",{"_index":2956,"title":{},"content":{"293":{"position":[[31,22]]}},"keywords":{}}],["boundariesinclud",{"_index":1737,"title":{},"content":{"170":{"position":[[179,18]]}},"keywords":{}}],["boundary"",{"_index":2971,"title":{},"content":{"297":{"position":[[84,14]]}},"keywords":{}}],["boundarysmart",{"_index":619,"title":{},"content":{"42":{"position":[[270,13]]}},"keywords":{}}],["box",{"_index":1766,"title":{},"content":{"173":{"position":[[277,6]]}},"keywords":{}}],["branch",{"_index":187,"title":{"14":{"position":[[12,7]]}},"content":{"14":{"position":[[92,6]]},"19":{"position":[[22,6]]}},"keywords":{}}],["break",{"_index":289,"title":{},"content":{"21":{"position":[[321,8]]},"152":{"position":[[1,8]]},"160":{"position":[[143,7]]},"174":{"position":[[73,8]]},"247":{"position":[[827,8]]},"273":{"position":[[3029,5]]}},"keywords":{}}],["breakdown",{"_index":1584,"title":{},"content":{"146":{"position":[[429,9]]}},"keywords":{}}],["breakdownno",{"_index":1745,"title":{},"content":{"170":{"position":[[382,11]]}},"keywords":{}}],["breakpoint",{"_index":1315,"title":{"114":{"position":[[4,12]]}},"content":{"114":{"position":[[148,12],[178,10],[366,12]]},"117":{"position":[[5,10]]},"129":{"position":[[53,11]]}},"keywords":{}}],["brew",{"_index":1845,"title":{},"content":{"179":{"position":[[1561,4]]}},"keywords":{}}],["brief",{"_index":279,"title":{},"content":{"21":{"position":[[80,5]]},"246":{"position":[[923,5],[1800,5]]}},"keywords":{}}],["brief)long",{"_index":2327,"title":{},"content":{"246":{"position":[[1889,12]]}},"keywords":{}}],["budget",{"_index":1662,"title":{},"content":{"153":{"position":[[231,6]]},"294":{"position":[[160,7]]}},"keywords":{}}],["buffer",{"_index":2750,"title":{},"content":{"273":{"position":[[3698,6]]}},"keywords":{}}],["bug",{"_index":197,"title":{},"content":{"14":{"position":[[138,3]]},"18":{"position":[[342,3]]},"28":{"position":[[17,3]]},"133":{"position":[[895,3]]},"143":{"position":[[542,3]]},"152":{"position":[[80,4]]},"181":{"position":[[148,3]]}},"keywords":{}}],["bugssom",{"_index":1466,"title":{},"content":{"133":{"position":[[1003,8]]}},"keywords":{}}],["build",{"_index":923,"title":{},"content":{"64":{"position":[[91,6]]},"65":{"position":[[103,6]]},"135":{"position":[[185,5]]}},"keywords":{}}],["build_extra_state_attribut",{"_index":667,"title":{},"content":{"43":{"position":[[975,30]]}},"keywords":{}}],["build_period",{"_index":2540,"title":{},"content":{"256":{"position":[[286,14]]},"262":{"position":[[443,14]]},"263":{"position":[[530,14]]},"264":{"position":[[559,14]]},"273":{"position":[[1679,16]]}},"keywords":{}}],["build_sensor_attribut",{"_index":666,"title":{},"content":{"43":{"position":[[948,26]]}},"keywords":{}}],["builder",{"_index":665,"title":{},"content":{"43":{"position":[[938,9]]},"136":{"position":[[500,8],[710,8]]}},"keywords":{}}],["built",{"_index":1797,"title":{"278":{"position":[[36,5]]}},"content":{"178":{"position":[[14,5]]},"179":{"position":[[1164,6]]},"277":{"position":[[136,5]]},"278":{"position":[[87,5]]},"279":{"position":[[1923,5]]},"301":{"position":[[41,5]]}},"keywords":{}}],["bulk",{"_index":102,"title":{"206":{"position":[[0,4]]}},"content":{"3":{"position":[[1391,4]]},"206":{"position":[[184,4]]}},"keywords":{}}],["bump",{"_index":1504,"title":{"192":{"position":[[11,5]]}},"content":{"135":{"position":[[484,5]]},"176":{"position":[[226,4],[467,4],[526,4],[721,4]]},"182":{"position":[[175,4]]},"184":{"position":[[257,5]]},"185":{"position":[[11,4],[186,4]]},"186":{"position":[[11,4],[111,4]]},"187":{"position":[[44,4],[314,6]]},"192":{"position":[[53,4]]},"194":{"position":[[390,4]]}},"keywords":{}}],["busi",{"_index":519,"title":{},"content":{"37":{"position":[[264,8]]},"43":{"position":[[834,8]]}},"keywords":{}}],["button",{"_index":1794,"title":{"178":{"position":[[13,6]]}},"content":{"182":{"position":[[187,6]]},"187":{"position":[[241,6]]}},"keywords":{}}],["buttonedit",{"_index":1804,"title":{},"content":{"178":{"position":[[156,10]]}},"keywords":{}}],["byte",{"_index":2032,"title":{},"content":{"216":{"position":[[210,6]]}},"keywords":{}}],["c",{"_index":1394,"title":{"186":{"position":[[9,2]]}},"content":{"126":{"position":[[55,1]]},"149":{"position":[[431,2]]},"202":{"position":[[96,1]]},"287":{"position":[[342,2]]}},"keywords":{}}],["c"",{"_index":1307,"title":{},"content":{"113":{"position":[[296,8]]}},"keywords":{}}],["cach",{"_index":391,"title":{"32":{"position":[[0,7]]},"34":{"position":[[0,5]]},"49":{"position":[[0,7]]},"51":{"position":[[23,6]]},"52":{"position":[[15,6]]},"53":{"position":[[21,6]]},"54":{"position":[[23,6]]},"55":{"position":[[24,6]]},"56":{"position":[[22,6]]},"57":{"position":[[18,5]]},"58":{"position":[[0,5]]},"62":{"position":[[0,5]]},"68":{"position":[[10,5]]},"78":{"position":[[3,5]]},"85":{"position":[[15,5]]},"204":{"position":[[0,8]]}},"content":{"31":{"position":[[239,5],[276,5],[297,6],[311,5],[380,5],[507,5],[524,5],[561,5],[782,5],[920,5],[935,6]]},"33":{"position":[[36,7],[124,5],[213,5],[262,5],[322,5],[407,5],[492,5]]},"34":{"position":[[50,5],[109,5],[129,7]]},"36":{"position":[[152,5]]},"38":{"position":[[278,7]]},"40":{"position":[[201,6]]},"43":{"position":[[776,8]]},"45":{"position":[[9,8],[54,8],[93,5]]},"46":{"position":[[37,7],[88,7]]},"47":{"position":[[34,5]]},"48":{"position":[[111,5]]},"50":{"position":[[33,7],[108,5],[154,5],[215,5],[271,5]]},"51":{"position":[[127,7],[190,7],[890,5],[1276,5],[1401,5]]},"52":{"position":[[189,7],[677,6],[803,5],[941,5]]},"53":{"position":[[195,7]]},"55":{"position":[[721,5],[787,5],[895,7]]},"56":{"position":[[181,7],[535,5],[1264,5],[1291,5],[1678,6],[1695,5],[1786,7]]},"57":{"position":[[143,7],[482,6],[543,5],[896,6]]},"60":{"position":[[93,5],[192,5],[281,5]]},"61":{"position":[[189,5]]},"62":{"position":[[5,6],[71,5],[179,5],[249,5],[282,5],[329,5],[362,5],[399,5],[456,5],[522,5],[593,5],[664,6]]},"64":{"position":[[58,6],[103,8],[144,8],[220,7],[269,5],[319,8]]},"65":{"position":[[53,6],[129,6],[170,6],[287,5]]},"66":{"position":[[23,5]]},"67":{"position":[[1,5],[653,6],[742,5],[797,6],[910,5],[988,5]]},"70":{"position":[[132,6]]},"78":{"position":[[50,5],[111,5],[182,5],[219,5],[331,5],[384,5]]},"79":{"position":[[301,5]]},"83":{"position":[[146,5]]},"85":{"position":[[27,5],[85,5]]},"89":{"position":[[190,5]]},"90":{"position":[[185,5],[193,5]]},"92":{"position":[[229,6]]},"99":{"position":[[252,6]]},"100":{"position":[[326,6]]},"101":{"position":[[203,6]]},"111":{"position":[[147,5],[166,6],[261,5]]},"131":{"position":[[315,5]]},"136":{"position":[[120,7]]},"157":{"position":[[243,7],[271,5]]},"204":{"position":[[15,5],[179,5],[529,5]]},"212":{"position":[[23,5],[59,6]]},"213":{"position":[[184,6]]},"222":{"position":[[196,7],[215,5]]},"278":{"position":[[995,6]]},"283":{"position":[[208,7],[225,6]]},"284":{"position":[[125,6],[306,5]]},"288":{"position":[[264,5],[597,6]]},"292":{"position":[[60,6],[198,7]]},"296":{"position":[[171,6]]},"299":{"position":[[335,5]]},"300":{"position":[[67,5]]}},"keywords":{}}],["cache)coordin",{"_index":887,"title":{},"content":{"57":{"position":[[836,18]]}},"keywords":{}}],["cache)invalid",{"_index":881,"title":{},"content":{"57":{"position":[[588,17]]}},"keywords":{}}],["cache_ag",{"_index":2013,"title":{},"content":{"212":{"position":[[197,10]]}},"keywords":{}}],["cache_age=%s)"",{"_index":2012,"title":{},"content":{"212":{"position":[[165,21]]}},"keywords":{}}],["cache_key",{"_index":1960,"title":{},"content":{"204":{"position":[[332,9],[378,9]]}},"keywords":{}}],["cache_valid",{"_index":2940,"title":{},"content":{"288":{"position":[[286,12]]}},"keywords":{}}],["cached/transform",{"_index":2958,"title":{},"content":{"293":{"position":[[98,18]]}},"keywords":{}}],["cachedata",{"_index":738,"title":{},"content":{"51":{"position":[[970,10]]}},"keywords":{}}],["cacheslint",{"_index":1495,"title":{},"content":{"135":{"position":[[205,10]]}},"keywords":{}}],["caching)configur",{"_index":2672,"title":{},"content":{"272":{"position":[[2221,21]]}},"keywords":{}}],["cachingautomat",{"_index":1522,"title":{},"content":{"137":{"position":[[63,16]]}},"keywords":{}}],["cachingtiming.pi",{"_index":557,"title":{},"content":{"37":{"position":[[985,16]]}},"keywords":{}}],["calcul",{"_index":408,"title":{"37":{"position":[[20,11]]},"43":{"position":[[3,10]]},"56":{"position":[[10,11]]},"70":{"position":[[16,11]]},"122":{"position":[[7,11]]},"234":{"position":[[7,11]]}},"content":{"31":{"position":[[622,9],[795,11]]},"36":{"position":[[328,10],[385,11]]},"37":{"position":[[26,10],[214,11],[226,11],[294,12],[443,10],[600,10],[730,12],[1144,11],[1263,11]]},"38":{"position":[[55,12],[158,12]]},"43":{"position":[[22,11],[455,10],[486,11],[548,11],[589,10],[1090,12]]},"50":{"position":[[259,11]]},"55":{"position":[[868,11]]},"56":{"position":[[102,12],[248,10],[1504,12],[1643,11],[1717,11]]},"57":{"position":[[576,11],[802,11]]},"62":{"position":[[228,11]]},"64":{"position":[[126,12]]},"65":{"position":[[150,12]]},"67":{"position":[[274,11],[358,11],[636,11]]},"78":{"position":[[208,10]]},"107":{"position":[[56,10],[112,10]]},"111":{"position":[[276,12],[344,11]]},"114":{"position":[[198,12]]},"131":{"position":[[121,11]]},"136":{"position":[[246,11]]},"137":{"position":[[284,10]]},"198":{"position":[[109,12]]},"205":{"position":[[149,9]]},"218":{"position":[[129,11]]},"235":{"position":[[92,11],[305,11],[384,11],[590,10]]},"239":{"position":[[1201,11]]},"251":{"position":[[36,9]]},"255":{"position":[[8,11]]},"265":{"position":[[76,11]]},"266":{"position":[[69,11],[358,11]]},"267":{"position":[[23,11]]},"269":{"position":[[15,12]]},"272":{"position":[[18,11]]},"273":{"position":[[2222,10],[5313,12]]},"285":{"position":[[225,9]]}},"keywords":{}}],["calculate)frequ",{"_index":2952,"title":{},"content":{"292":{"position":[[138,20]]}},"keywords":{}}],["calculate_period",{"_index":1320,"title":{},"content":{"114":{"position":[[254,22]]},"255":{"position":[[76,18]]}},"keywords":{}}],["calculate_periods(coordinator.data",{"_index":2040,"title":{},"content":{"218":{"position":[[231,35]]}},"keywords":{}}],["calculate_periods_with_relax",{"_index":2446,"title":{},"content":{"255":{"position":[[468,38]]}},"keywords":{}}],["calculation"",{"_index":971,"title":{},"content":{"70":{"position":[[146,17]]}},"keywords":{}}],["calculation.md",{"_index":2775,"title":{},"content":{"273":{"position":[[5075,14]]}},"keywords":{}}],["calculationarchitectur",{"_index":2781,"title":{},"content":{"274":{"position":[[28,23]]}},"keywords":{}}],["calculatoreasi",{"_index":569,"title":{},"content":{"37":{"position":[[1225,14]]}},"keywords":{}}],["calendar",{"_index":550,"title":{},"content":{"37":{"position":[[826,8]]},"43":{"position":[[281,8]]}},"keywords":{}}],["call",{"_index":438,"title":{"45":{"position":[[4,4]]},"212":{"position":[[13,6]]}},"content":{"31":{"position":[[1240,5]]},"37":{"position":[[508,4]]},"51":{"position":[[108,5]]},"53":{"position":[[132,5]]},"67":{"position":[[108,5],[572,5]]},"69":{"position":[[37,7]]},"72":{"position":[[35,6]]},"198":{"position":[[189,6]]},"207":{"position":[[19,6]]},"212":{"position":[[156,5]]},"281":{"position":[[236,6]]},"288":{"position":[[578,5]]},"292":{"position":[[176,6]]},"293":{"position":[[86,6]]},"294":{"position":[[84,6]]},"296":{"position":[[154,4]]},"299":{"position":[[65,6]]}},"keywords":{}}],["callback",{"_index":71,"title":{},"content":{"3":{"position":[[640,9]]},"77":{"position":[[257,9],[610,9]]},"92":{"position":[[111,8]]},"209":{"position":[[220,10],[341,10]]},"281":{"position":[[208,8],[299,10],[382,8],[505,8],[755,9],[809,10],[962,8],[1006,10]]},"301":{"position":[[569,8]]}},"keywords":{}}],["callbackswithout",{"_index":1042,"title":{},"content":{"77":{"position":[[1260,16]]}},"keywords":{}}],["callbackwithout",{"_index":1051,"title":{},"content":{"77":{"position":[[1677,15]]}},"keywords":{}}],["calledbuilt",{"_index":804,"title":{},"content":{"55":{"position":[[290,11]]}},"keywords":{}}],["calledobserv",{"_index":2990,"title":{},"content":{"301":{"position":[[588,14]]}},"keywords":{}}],["callno",{"_index":1134,"title":{},"content":{"87":{"position":[[137,6]]}},"keywords":{}}],["calls)test",{"_index":1673,"title":{},"content":{"157":{"position":[[182,10]]}},"keywords":{}}],["calls/day",{"_index":674,"title":{},"content":{"45":{"position":[[25,9],[72,9]]}},"keywords":{}}],["can't",{"_index":1731,"title":{},"content":{"169":{"position":[[86,5]]},"173":{"position":[[262,5]]},"255":{"position":[[3242,5],[3775,5]]}},"keywords":{}}],["cancel",{"_index":1034,"title":{},"content":{"77":{"position":[[978,9],[1025,9],[1072,9]]},"83":{"position":[[377,6]]},"92":{"position":[[139,9]]},"146":{"position":[[136,9]]}},"keywords":{}}],["cancel_timers()coordinator/core.pi",{"_index":1044,"title":{},"content":{"77":{"position":[[1395,34]]}},"keywords":{}}],["candid",{"_index":1375,"title":{},"content":{"122":{"position":[[169,12]]},"239":{"position":[[838,9]]}},"keywords":{}}],["cap",{"_index":2248,"title":{"244":{"position":[[23,5]]},"247":{"position":[[23,5]]}},"content":{"245":{"position":[[84,4],[169,3]]},"247":{"position":[[65,4],[416,7],[573,4],[948,7]]},"258":{"position":[[188,3]]},"270":{"position":[[26,3]]},"273":{"position":[[39,3]]}},"keywords":{}}],["cargo",{"_index":1838,"title":{},"content":{"179":{"position":[[1282,5],[1586,5],[1608,5]]}},"keywords":{}}],["cascad",{"_index":479,"title":{},"content":{"34":{"position":[[19,9]]},"62":{"position":[[381,9]]}},"keywords":{}}],["case",{"_index":1464,"title":{},"content":{"133":{"position":[[987,5]]},"182":{"position":[[12,4]]},"246":{"position":[[90,6]]},"250":{"position":[[90,5]]},"269":{"position":[[445,4]]},"272":{"position":[[1803,4]]},"273":{"position":[[492,4]]},"288":{"position":[[524,4]]}},"keywords":{}}],["casesreleas",{"_index":1424,"title":{},"content":{"131":{"position":[[398,12]]}},"keywords":{}}],["casestyp",{"_index":320,"title":{},"content":{"25":{"position":[[96,9]]}},"keywords":{}}],["caseus",{"_index":2344,"title":{},"content":{"246":{"position":[[2627,9]]}},"keywords":{}}],["catch",{"_index":1648,"title":{},"content":{"152":{"position":[[73,6]]},"246":{"position":[[1109,7],[1383,6],[1410,6]]}},"keywords":{}}],["categor",{"_index":1877,"title":{},"content":{"182":{"position":[[239,14]]}},"keywords":{}}],["categori",{"_index":1009,"title":{"76":{"position":[[7,11]]}},"content":{"89":{"position":[[1,8]]},"90":{"position":[[1,8]]},"178":{"position":[[343,8]]},"181":{"position":[[57,11]]}},"keywords":{}}],["caus",{"_index":1353,"title":{},"content":{"120":{"position":[[75,7]]},"194":{"position":[[562,7]]},"252":{"position":[[1535,6]]}},"keywords":{}}],["cd",{"_index":170,"title":{},"content":{"12":{"position":[[113,2]]},"230":{"position":[[87,2]]}},"keywords":{}}],["center",{"_index":2458,"title":{},"content":{"255":{"position":[[1029,7]]}},"keywords":{}}],["central",{"_index":529,"title":{},"content":{"37":{"position":[[422,11]]},"137":{"position":[[33,11]]}},"keywords":{}}],["cet",{"_index":2742,"title":{},"content":{"273":{"position":[[3490,3]]}},"keywords":{}}],["challeng",{"_index":2640,"title":{},"content":{"272":{"position":[[609,11],[1237,11],[2123,11]]}},"keywords":{}}],["chang",{"_index":205,"title":{"15":{"position":[[8,8]]},"18":{"position":[[10,8]]},"59":{"position":[[5,7]]},"64":{"position":[[22,9]]},"66":{"position":[[13,7]]},"69":{"position":[[33,7]]},"159":{"position":[[26,8]]},"171":{"position":[[20,7]]},"233":{"position":[[7,8]]}},"content":{"21":{"position":[[101,7],[330,7]]},"22":{"position":[[232,8]]},"25":{"position":[[279,7]]},"33":{"position":[[295,6],[369,6]]},"50":{"position":[[315,7]]},"55":{"position":[[381,6],[940,8]]},"56":{"position":[[163,8],[837,7],[886,7],[995,6],[1126,6]]},"57":{"position":[[619,7]]},"61":{"position":[[156,7]]},"67":{"position":[[207,6],[304,6],[407,6]]},"70":{"position":[[21,7],[39,8]]},"132":{"position":[[316,7]]},"134":{"position":[[229,7],[353,7]]},"139":{"position":[[168,7]]},"143":{"position":[[16,6],[88,7],[206,7],[259,7],[272,8],[318,7],[511,7],[658,7]]},"152":{"position":[[66,6]]},"157":{"position":[[135,7]]},"160":{"position":[[85,8]]},"169":{"position":[[112,6]]},"171":{"position":[[270,7]]},"172":{"position":[[29,7],[103,7],[171,7]]},"176":{"position":[[800,6]]},"184":{"position":[[89,7]]},"185":{"position":[[85,7],[426,6]]},"193":{"position":[[40,6]]},"196":{"position":[[124,8]]},"204":{"position":[[559,8]]},"215":{"position":[[81,7]]},"224":{"position":[[36,8]]},"255":{"position":[[2523,7]]},"273":{"position":[[3780,8],[3897,7],[4303,7]]},"279":{"position":[[384,7]]},"283":{"position":[[78,8]]}},"keywords":{}}],["change)transl",{"_index":912,"title":{},"content":{"62":{"position":[[574,18]]}},"keywords":{}}],["change.github/workflows/release.yml",{"_index":1889,"title":{},"content":{"187":{"position":[[142,35]]}},"keywords":{}}],["changeauto",{"_index":1881,"title":{},"content":{"185":{"position":[[394,10]]}},"keywords":{}}],["changed?docu",{"_index":1657,"title":{},"content":{"153":{"position":[[52,16]]}},"keywords":{}}],["changelin",{"_index":1740,"title":{},"content":{"170":{"position":[[285,10]]}},"keywords":{}}],["changelog",{"_index":2784,"title":{"275":{"position":[[0,10]]}},"content":{},"keywords":{}}],["changeperiodcalcul",{"_index":1058,"title":{},"content":{"78":{"position":[[143,22]]}},"keywords":{}}],["changeplanning/*.md",{"_index":1708,"title":{},"content":{"163":{"position":[[334,19]]}},"keywords":{}}],["changes"",{"_index":1810,"title":{},"content":{"178":{"position":[[329,13]]}},"keywords":{}}],["changes"implement",{"_index":2777,"title":{},"content":{"273":{"position":[[5128,28]]}},"keywords":{}}],["changes)clear",{"_index":1643,"title":{},"content":{"150":{"position":[[573,13]]}},"keywords":{}}],["changes)us",{"_index":1769,"title":{},"content":{"174":{"position":[[82,11]]}},"keywords":{}}],["changeschor",{"_index":259,"title":{},"content":{"18":{"position":[[413,13]]}},"keywords":{}}],["changeseasi",{"_index":2235,"title":{},"content":{"243":{"position":[[2001,11]]}},"keywords":{}}],["changesmiss",{"_index":329,"title":{},"content":{"25":{"position":[[233,14]]}},"keywords":{}}],["changesperiod",{"_index":710,"title":{},"content":{"50":{"position":[[245,13]]}},"keywords":{}}],["changespersist",{"_index":1523,"title":{},"content":{"137":{"position":[[103,17]]}},"keywords":{}}],["changesreleas",{"_index":699,"title":{},"content":{"48":{"position":[[221,14]]}},"keywords":{}}],["changestransl",{"_index":1448,"title":{},"content":{"133":{"position":[[371,18]]}},"keywords":{}}],["char",{"_index":277,"title":{},"content":{"21":{"position":[[31,5]]},"133":{"position":[[563,4]]}},"keywords":{}}],["characterist",{"_index":672,"title":{"44":{"position":[[12,16]]},"63":{"position":[[12,16]]},"291":{"position":[[12,16]]}},"content":{},"keywords":{}}],["charactersmax",{"_index":12,"title":{},"content":{"1":{"position":[[76,13]]}},"keywords":{}}],["charg",{"_index":2274,"title":{},"content":{"246":{"position":[[265,9]]},"269":{"position":[[454,8]]},"272":{"position":[[1812,8]]}},"keywords":{}}],["chart",{"_index":531,"title":{},"content":{"37":{"position":[[462,5]]},"83":{"position":[[75,5]]}},"keywords":{}}],["cheap",{"_index":1231,"title":{},"content":{"103":{"position":[[306,6]]},"239":{"position":[[74,6]]},"246":{"position":[[362,5],[544,5],[1644,5],[1671,5]]},"264":{"position":[[114,5]]},"272":{"position":[[1637,6]]},"273":{"position":[[2338,5],[2820,5],[2980,5],[3141,5],[4462,5]]},"285":{"position":[[494,5]]}},"keywords":{}}],["cheap")may",{"_index":2558,"title":{},"content":{"259":{"position":[[183,15]]}},"keywords":{}}],["cheap)period",{"_index":2656,"title":{},"content":{"272":{"position":[[1653,12]]}},"keywords":{}}],["cheap/expens",{"_index":2584,"title":{},"content":{"264":{"position":[[250,16]]}},"keywords":{}}],["cheaper",{"_index":2572,"title":{},"content":{"263":{"position":[[202,7]]}},"keywords":{}}],["cheaper/mor",{"_index":2113,"title":{},"content":{"238":{"position":[[43,12]]}},"keywords":{}}],["check",{"_index":208,"title":{"285":{"position":[[26,5]]},"288":{"position":[[33,7]]},"296":{"position":[[0,5]]},"297":{"position":[[0,5]]},"298":{"position":[[0,5]]}},"content":{"15":{"position":[[46,6],[81,5],[102,8]]},"21":{"position":[[281,8]]},"22":{"position":[[90,8],[122,6],[160,6]]},"23":{"position":[[11,6]]},"31":{"position":[[221,6],[485,6]]},"46":{"position":[[74,6]]},"51":{"position":[[995,6],[1122,5]]},"55":{"position":[[727,5]]},"57":{"position":[[454,7]]},"61":{"position":[[55,6]]},"69":{"position":[[1,6]]},"70":{"position":[[1,6]]},"71":{"position":[[1,6],[157,5]]},"72":{"position":[[1,6]]},"81":{"position":[[241,7]]},"94":{"position":[[401,8]]},"120":{"position":[[1,6],[114,5]]},"121":{"position":[[1,5]]},"122":{"position":[[184,5]]},"133":{"position":[[621,8]]},"135":{"position":[[253,5],[261,5]]},"154":{"position":[[473,6]]},"156":{"position":[[64,5],[175,6],[325,6]]},"167":{"position":[[16,5]]},"173":{"position":[[4,5],[93,6]]},"190":{"position":[[15,6],[70,6]]},"194":{"position":[[516,5]]},"224":{"position":[[203,7]]},"233":{"position":[[41,5],[77,5]]},"243":{"position":[[1162,5],[1763,5]]},"247":{"position":[[914,7]]},"255":{"position":[[1268,6],[1495,5],[3333,5]]},"262":{"position":[[234,7],[282,7]]},"263":{"position":[[313,7],[361,7]]},"264":{"position":[[274,7],[422,7]]},"267":{"position":[[44,5],[320,5],[371,5],[611,5],[764,5],[998,5]]},"273":{"position":[[4064,5]]},"278":{"position":[[398,5],[537,5],[799,5],[1164,5],[1342,6]]},"279":{"position":[[674,5],[821,5],[1796,5]]},"283":{"position":[[167,5]]},"284":{"position":[[32,5],[201,5],[421,5]]},"285":{"position":[[124,5]]},"287":{"position":[[456,6]]},"288":{"position":[[38,7],[96,5],[252,5],[360,5]]},"292":{"position":[[67,6]]},"299":{"position":[[26,6],[267,6]]},"301":{"position":[[469,7]]}},"keywords":{}}],["check)check",{"_index":2979,"title":{},"content":{"299":{"position":[[322,12]]}},"keywords":{}}],["check)zero",{"_index":945,"title":{},"content":{"67":{"position":[[748,10]]}},"keywords":{}}],["check_interval_criteria",{"_index":2215,"title":{},"content":{"243":{"position":[[880,25]]},"255":{"position":[[266,24]]}},"keywords":{}}],["check_interval_criteria(pric",{"_index":2220,"title":{},"content":{"243":{"position":[[1109,30]]}},"keywords":{}}],["checked"",{"_index":2538,"title":{},"content":{"256":{"position":[[207,13]]}},"keywords":{}}],["checklist",{"_index":295,"title":{"22":{"position":[[3,10]]},"267":{"position":[[10,10]]}},"content":{"156":{"position":[[17,10]]}},"keywords":{}}],["checkout",{"_index":188,"title":{},"content":{"14":{"position":[[5,8],[52,8]]}},"keywords":{}}],["checkpoint",{"_index":1586,"title":{},"content":{"146":{"position":[[526,11]]}},"keywords":{}}],["chmod",{"_index":1359,"title":{},"content":{"120":{"position":[[195,5]]}},"keywords":{}}],["choos",{"_index":570,"title":{},"content":{"37":{"position":[[1256,6]]},"43":{"position":[[1148,6]]},"272":{"position":[[1914,7]]}},"keywords":{}}],["chore(releas",{"_index":1897,"title":{},"content":{"192":{"position":[[37,15]]}},"keywords":{}}],["ci",{"_index":1498,"title":{},"content":{"135":{"position":[[294,3]]},"179":{"position":[[984,4]]},"180":{"position":[[394,2]]},"233":{"position":[[52,3]]}},"keywords":{}}],["ci/cd",{"_index":1788,"title":{"180":{"position":[[3,5]]}},"content":{"176":{"position":[[375,5]]},"179":{"position":[[675,7],[978,5]]},"182":{"position":[[327,5]]},"184":{"position":[[193,5]]},"196":{"position":[[419,6]]}},"keywords":{}}],["ci/cd)maintain",{"_index":302,"title":{},"content":{"23":{"position":[[22,17]]}},"keywords":{}}],["citi",{"_index":1191,"title":{},"content":{"99":{"position":[[111,4]]}},"keywords":{}}],["class",{"_index":32,"title":{"3":{"position":[[0,5]]},"215":{"position":[[6,5]]}},"content":{"3":{"position":[[12,7],[157,5],[186,5],[227,5],[280,5],[297,5],[316,5],[370,7],[466,7],[566,7],[734,8],[756,5],[844,5],[875,5],[1022,5],[1140,7],[1154,7],[1237,7],[1473,7]]},"37":{"position":[[145,5]]},"136":{"position":[[378,5]]},"204":{"position":[[569,5]]},"209":{"position":[[23,5],[247,5]]},"281":{"position":[[391,5],[666,5]]}},"keywords":{}}],["classesal",{"_index":55,"title":{},"content":{"3":{"position":[[420,10]]}},"keywords":{}}],["classesdata",{"_index":58,"title":{},"content":{"3":{"position":[[454,11]]}},"keywords":{}}],["classesunifi",{"_index":664,"title":{},"content":{"43":{"position":[[923,14]]}},"keywords":{}}],["classif",{"_index":1229,"title":{"239":{"position":[[29,16]]}},"content":{"103":{"position":[[278,14]]},"239":{"position":[[45,15],[384,14],[1339,14]]},"273":{"position":[[3882,14],[4288,14],[5113,14]]}},"keywords":{}}],["classifi",{"_index":1097,"title":{},"content":{"82":{"position":[[34,10]]}},"keywords":{}}],["classificationperiod",{"_index":2148,"title":{},"content":{"239":{"position":[[1180,20]]}},"keywords":{}}],["claud",{"_index":1443,"title":{},"content":{"133":{"position":[[77,7]]},"163":{"position":[[47,8]]}},"keywords":{}}],["clean",{"_index":509,"title":{},"content":{"37":{"position":[[49,5]]},"57":{"position":[[84,5]]},"92":{"position":[[297,7]]},"135":{"position":[[153,6]]},"147":{"position":[[139,5]]}},"keywords":{}}],["cleanli",{"_index":1026,"title":{},"content":{"77":{"position":[[633,7]]}},"keywords":{}}],["cleanup",{"_index":1010,"title":{"77":{"position":[[12,7]]},"79":{"position":[[11,7]]},"84":{"position":[[15,8]]}},"content":{"77":{"position":[[52,7],[332,7],[386,7],[516,8],[927,7],[1277,8],[1467,7]]},"89":{"position":[[45,7],[93,7],[148,7],[251,7]]},"90":{"position":[[116,7]]},"92":{"position":[[190,7]]},"94":{"position":[[20,7]]},"95":{"position":[[16,7]]}},"keywords":{}}],["cleanup)standard",{"_index":2889,"title":{},"content":{"281":{"position":[[1184,17]]}},"keywords":{}}],["clear",{"_index":312,"title":{},"content":{"25":{"position":[[10,6]]},"51":{"position":[[507,8]]},"60":{"position":[[76,5],[171,5]]},"65":{"position":[[60,8]]},"71":{"position":[[99,5]]},"78":{"position":[[228,7]]},"111":{"position":[[252,8]]},"134":{"position":[[464,5]]},"139":{"position":[[105,5]]},"143":{"position":[[613,5]]},"150":{"position":[[323,5]]},"153":{"position":[[26,5]]},"170":{"position":[[173,5]]},"172":{"position":[[53,5]]},"209":{"position":[[4,5]]},"262":{"position":[[111,5]]},"263":{"position":[[136,5]]},"264":{"position":[[224,6]]}},"keywords":{}}],["clear_trend_cach",{"_index":1067,"title":{},"content":{"78":{"position":[[576,19]]}},"keywords":{}}],["clearedboth",{"_index":1036,"title":{},"content":{"77":{"position":[[1049,11]]}},"keywords":{}}],["clearedminut",{"_index":1035,"title":{},"content":{"77":{"position":[[1002,13]]}},"keywords":{}}],["cli",{"_index":1818,"title":{},"content":{"179":{"position":[[381,4],[828,3]]},"196":{"position":[[347,3]]},"231":{"position":[[194,4]]}},"keywords":{}}],["client",{"_index":389,"title":{},"content":{"31":{"position":[[214,6]]},"36":{"position":[[34,6]]},"136":{"position":[[160,6]]}},"keywords":{}}],["cliff",{"_index":1501,"title":{},"content":{"135":{"position":[[421,6]]},"179":{"position":[[459,5],[508,5],[878,5],[1106,5],[1261,6],[1406,5],[1481,5],[1578,5],[1626,5],[1726,5],[1777,5],[1804,5],[1816,5]]},"180":{"position":[[303,5],[372,5]]},"187":{"position":[[278,5]]},"196":{"position":[[385,5]]}},"keywords":{}}],["cliff.org/docs/instal",{"_index":1843,"title":{},"content":{"179":{"position":[[1525,27]]}},"keywords":{}}],["cliff/releases/latest/download/git",{"_index":1849,"title":{},"content":{"179":{"position":[[1691,34]]}},"keywords":{}}],["clock",{"_index":2792,"title":{},"content":{"278":{"position":[[326,5]]},"279":{"position":[[344,5]]}},"keywords":{}}],["clone",{"_index":165,"title":{"12":{"position":[[9,6]]}},"content":{"12":{"position":[[51,5]]},"134":{"position":[[10,5]]},"230":{"position":[[3,5],[28,5]]}},"keywords":{}}],["close",{"_index":294,"title":{},"content":{"21":{"position":[[391,6]]}},"keywords":{}}],["cluster",{"_index":2483,"title":{},"content":{"255":{"position":[[1816,8]]}},"keywords":{}}],["clustered)user'",{"_index":2659,"title":{},"content":{"272":{"position":[[1775,16]]}},"keywords":{}}],["code",{"_index":0,"title":{"0":{"position":[[0,6]]},"1":{"position":[[0,4]]},"24":{"position":[[0,4]]},"112":{"position":[[3,4]]},"117":{"position":[[17,5]]},"169":{"position":[[46,8]]}},"content":{"11":{"position":[[7,4]]},"14":{"position":[[185,4]]},"15":{"position":[[6,5],[22,6]]},"18":{"position":[[382,4]]},"22":{"position":[[22,4],[35,6]]},"25":{"position":[[321,4]]},"26":{"position":[[44,4]]},"28":{"position":[[62,4]]},"43":{"position":[[1026,4]]},"77":{"position":[[650,4],[1351,4],[1836,4]]},"78":{"position":[[417,4]]},"79":{"position":[[397,4]]},"84":{"position":[[167,5]]},"85":{"position":[[138,5]]},"87":{"position":[[181,4],[187,5]]},"114":{"position":[[173,4]]},"120":{"position":[[107,4]]},"121":{"position":[[141,5]]},"125":{"position":[[51,4]]},"128":{"position":[[20,5],[174,4]]},"129":{"position":[[241,4]]},"131":{"position":[[73,4]]},"133":{"position":[[804,4]]},"134":{"position":[[55,5],[251,6]]},"135":{"position":[[227,4],[267,4]]},"139":{"position":[[124,4],[163,4]]},"140":{"position":[[59,4]]},"143":{"position":[[11,4]]},"149":{"position":[[349,4]]},"150":{"position":[[794,4]]},"161":{"position":[[10,4]]},"167":{"position":[[31,4]]},"170":{"position":[[261,4]]},"173":{"position":[[198,4]]},"179":{"position":[[1345,5]]},"200":{"position":[[387,4]]},"201":{"position":[[51,4]]},"229":{"position":[[4,4]]},"230":{"position":[[122,4],[127,4],[163,4]]},"233":{"position":[[19,4]]},"243":{"position":[[907,4]]},"252":{"position":[[98,5],[894,6]]},"272":{"position":[[133,4]]}},"keywords":{}}],["codeappropri",{"_index":315,"title":{},"content":{"25":{"position":[[34,15]]}},"keywords":{}}],["codebas",{"_index":1447,"title":{},"content":{"133":{"position":[[344,8]]}},"keywords":{}}],["codeclick",{"_index":174,"title":{},"content":{"12":{"position":[[146,9]]}},"keywords":{}}],["codelen",{"_index":1336,"title":{},"content":{"117":{"position":[[57,9]]}},"keywords":{}}],["codequick",{"_index":1461,"title":{},"content":{"133":{"position":[[885,9]]}},"keywords":{}}],["coding..."",{"_index":1680,"title":{},"content":{"159":{"position":[[60,15]]}},"keywords":{}}],["cognit",{"_index":1652,"title":{},"content":{"152":{"position":[[161,9]]}},"keywords":{}}],["color",{"_index":1515,"title":{},"content":{"136":{"position":[[651,5]]}},"keywords":{}}],["colors.pi",{"_index":1514,"title":{},"content":{"136":{"position":[[639,9]]}},"keywords":{}}],["combin",{"_index":2397,"title":{"253":{"position":[[7,11]]}},"content":{"252":{"position":[[382,12]]},"253":{"position":[[168,13]]},"266":{"position":[[242,12]]},"294":{"position":[[199,9]]}},"keywords":{}}],["combinationsstop",{"_index":2386,"title":{},"content":{"251":{"position":[[166,16]]}},"keywords":{}}],["come",{"_index":2071,"title":{},"content":{"227":{"position":[[1,6]]}},"keywords":{}}],["comment",{"_index":316,"title":{},"content":{"25":{"position":[[50,8]]},"27":{"position":[[151,7]]}},"keywords":{}}],["commentsmark",{"_index":345,"title":{},"content":{"26":{"position":[[125,12]]}},"keywords":{}}],["commit",{"_index":20,"title":{"18":{"position":[[3,6]]}},"content":{"1":{"position":[[145,11]]},"18":{"position":[[21,8],[45,6],[301,6]]},"22":{"position":[[241,6],[277,7]]},"26":{"position":[[106,7]]},"134":{"position":[[425,7]]},"135":{"position":[[563,7]]},"147":{"position":[[83,6]]},"149":{"position":[[232,6]]},"160":{"position":[[186,6]]},"176":{"position":[[196,7],[472,7],[586,6],[688,6]]},"178":{"position":[[299,7]]},"179":{"position":[[60,7]]},"181":{"position":[[133,8],[202,8],[275,8],[364,8],[431,8]]},"184":{"position":[[279,7],[317,6]]},"185":{"position":[[142,6],[153,6]]},"186":{"position":[[78,6]]},"191":{"position":[[23,6]]},"192":{"position":[[66,8]]},"194":{"position":[[338,6],[349,6],[662,6]]},"196":{"position":[[14,8],[34,6],[198,6]]},"224":{"position":[[25,10]]}},"keywords":{}}],["committed)for",{"_index":1619,"title":{},"content":{"149":{"position":[[452,13]]}},"keywords":{}}],["common",{"_index":1244,"title":{"106":{"position":[[0,6]]},"119":{"position":[[0,6]]},"158":{"position":[[0,6]]},"257":{"position":[[0,6]]},"299":{"position":[[0,6]]}},"content":{"120":{"position":[[68,6]]},"136":{"position":[[693,6]]},"194":{"position":[[555,6]]},"278":{"position":[[1025,7]]},"279":{"position":[[983,6]]},"288":{"position":[[349,8]]}},"keywords":{}}],["commun",{"_index":359,"title":{"28":{"position":[[0,14]]}},"content":{},"keywords":{}}],["compar",{"_index":2807,"title":{},"content":{"278":{"position":[[1386,8]]}},"keywords":{}}],["comparison",{"_index":867,"title":{},"content":{"56":{"position":[[1601,10]]},"284":{"position":[[581,10]]},"299":{"position":[[235,10]]}},"keywords":{}}],["compil",{"_index":2067,"title":{},"content":{"224":{"position":[[346,7]]}},"keywords":{}}],["complet",{"_index":108,"title":{"149":{"position":[[9,11]]},"183":{"position":[[3,8]]}},"content":{"3":{"position":[[1456,8]]},"8":{"position":[[188,8]]},"31":{"position":[[1066,8]]},"48":{"position":[[292,8]]},"73":{"position":[[128,8]]},"146":{"position":[[122,9]]},"150":{"position":[[688,8]]},"157":{"position":[[7,10]]},"163":{"position":[[426,10]]},"166":{"position":[[47,10]]},"174":{"position":[[266,10]]},"218":{"position":[[148,8]]},"221":{"position":[[176,9]]},"246":{"position":[[227,8]]},"266":{"position":[[370,10]]},"300":{"position":[[127,8]]}},"keywords":{}}],["complex",{"_index":13,"title":{},"content":{"1":{"position":[[90,11]]},"25":{"position":[[63,7]]},"37":{"position":[[957,7]]},"67":{"position":[[896,11]]},"133":{"position":[[585,10],[1012,7]]},"143":{"position":[[361,7]]},"166":{"position":[[295,11]]},"239":{"position":[[1040,7]]},"255":{"position":[[2596,10]]},"272":{"position":[[2091,7],[2146,7]]},"273":{"position":[[4590,8]]}},"keywords":{}}],["complexityus",{"_index":2695,"title":{},"content":{"273":{"position":[[1330,15]]}},"keywords":{}}],["compliant",{"_index":579,"title":{},"content":{"40":{"position":[[50,9]]}},"keywords":{}}],["compon",{"_index":485,"title":{"35":{"position":[[0,9]]},"36":{"position":[[5,11]]}},"content":{"36":{"position":[[1,9]]},"37":{"position":[[102,9]]},"43":{"position":[[1212,9]]}},"keywords":{}}],["comprehens",{"_index":1450,"title":{"157":{"position":[[0,13]]}},"content":{"133":{"position":[[481,13]]},"154":{"position":[[317,13]]},"163":{"position":[[507,14]]},"210":{"position":[[160,13]]}},"keywords":{}}],["comput",{"_index":420,"title":{},"content":{"31":{"position":[[870,8]]}},"keywords":{}}],["concept",{"_index":1520,"title":{"137":{"position":[[7,9]]}},"content":{"272":{"position":[[54,8],[868,8],[1556,8]]}},"keywords":{}}],["concern",{"_index":511,"title":{},"content":{"37":{"position":[[69,8]]},"43":{"position":[[1081,8]]},"150":{"position":[[213,8]]},"272":{"position":[[1308,8]]}},"keywords":{}}],["conclus",{"_index":1159,"title":{},"content":{"93":{"position":[[256,11]]}},"keywords":{}}],["concurr",{"_index":1982,"title":{},"content":{"207":{"position":[[4,10],[127,10]]}},"keywords":{}}],["condit",{"_index":2172,"title":{},"content":{"242":{"position":[[10,9]]},"273":{"position":[[4097,10],[4110,10]]}},"keywords":{}}],["condition(x",{"_index":2007,"title":{},"content":{"210":{"position":[[217,13],[295,13]]}},"keywords":{}}],["conditionsbett",{"_index":2639,"title":{},"content":{"272":{"position":[[547,16]]}},"keywords":{}}],["conduct",{"_index":1546,"title":{},"content":{"140":{"position":[[67,8]]}},"keywords":{}}],["conf_volatility_*_threshold",{"_index":2126,"title":{},"content":{"239":{"position":[[338,28]]}},"keywords":{}}],["confid",{"_index":2459,"title":{},"content":{"255":{"position":[[1037,10],[1063,10],[2111,10]]}},"keywords":{}}],["confidence_level",{"_index":2463,"title":{},"content":{"255":{"position":[[1129,17],[2082,16]]}},"keywords":{}}],["config",{"_index":459,"title":{"53":{"position":[[3,6]]},"54":{"position":[[16,6]]},"55":{"position":[[17,6]]},"59":{"position":[[21,7]]},"66":{"position":[[6,6]]},"69":{"position":[[26,6]]}},"content":{"33":{"position":[[255,6],[288,6]]},"46":{"position":[[67,6]]},"50":{"position":[[238,6],[308,6]]},"52":{"position":[[244,6]]},"54":{"position":[[205,6]]},"55":{"position":[[802,6]]},"56":{"position":[[148,6],[361,6],[688,6],[736,6],[879,6],[988,6]]},"57":{"position":[[420,6],[612,6]]},"59":{"position":[[473,6]]},"62":{"position":[[275,6],[392,6]]},"64":{"position":[[79,6]]},"65":{"position":[[91,6]]},"66":{"position":[[139,6]]},"67":{"position":[[180,6],[706,6]]},"77":{"position":[[1454,6]]},"78":{"position":[[43,6],[104,6],[166,6],[280,6]]},"79":{"position":[[153,6]]},"89":{"position":[[135,6]]},"92":{"position":[[177,6]]},"126":{"position":[[57,6]]},"143":{"position":[[281,6]]},"202":{"position":[[98,6]]},"204":{"position":[[522,6]]},"239":{"position":[[502,6],[1364,6]]},"246":{"position":[[2495,6]]},"255":{"position":[[119,7]]}},"keywords":{}}],["config/hom",{"_index":1351,"title":{},"content":{"120":{"position":[[40,11]]}},"keywords":{}}],["config_entry.add_update_listen",{"_index":891,"title":{},"content":{"59":{"position":[[22,34]]},"69":{"position":[[187,34]]}},"keywords":{}}],["config_entry.options.get(conf_volatility_low_threshold",{"_index":2152,"title":{},"content":{"239":{"position":[[1392,55]]}},"keywords":{}}],["config_flow.pi",{"_index":1517,"title":{},"content":{"136":{"position":[[757,14]]},"224":{"position":[[214,14]]}},"keywords":{}}],["configexhaust",{"_index":2604,"title":{},"content":{"267":{"position":[[536,15]]}},"keywords":{}}],["configif",{"_index":422,"title":{},"content":{"31":{"position":[[898,8]]},"251":{"position":[[75,8]]}},"keywords":{}}],["configl",{"_index":2603,"title":{},"content":{"267":{"position":[[478,10]]}},"keywords":{}}],["configur",{"_index":1292,"title":{"113":{"position":[[7,14]]},"187":{"position":[[3,13]]},"257":{"position":[[7,13]]}},"content":{"128":{"position":[[198,14]]},"136":{"position":[[777,13]]},"157":{"position":[[79,13]]},"226":{"position":[[86,13]]},"239":{"position":[[321,12],[1008,13]]},"246":{"position":[[2478,12],[2725,13]]},"250":{"position":[[101,10]]},"252":{"position":[[144,16],[905,13]]},"258":{"position":[[1,14]]},"259":{"position":[[1,14]]},"260":{"position":[[1,14]]},"272":{"position":[[586,13]]}},"keywords":{}}],["configuration.yaml",{"_index":1273,"title":{},"content":{"110":{"position":[[8,19]]},"256":{"position":[[26,18]]}},"keywords":{}}],["configurationbest",{"_index":1807,"title":{},"content":{"178":{"position":[[216,17]]}},"keywords":{}}],["configurationcliff.toml",{"_index":1891,"title":{},"content":{"187":{"position":[[248,23]]}},"keywords":{}}],["configurationsif",{"_index":2410,"title":{},"content":{"252":{"position":[[1023,16]]}},"keywords":{}}],["confirm",{"_index":979,"title":{},"content":{"71":{"position":[[105,12]]},"255":{"position":[[3088,9]]}},"keywords":{}}],["conflict",{"_index":40,"title":{"240":{"position":[[24,9]]},"260":{"position":[[18,11]]}},"content":{"3":{"position":[[112,9]]},"241":{"position":[[23,8],[317,9]]},"242":{"position":[[1,8]]},"267":{"position":[[971,8]]},"272":{"position":[[671,8]]},"283":{"position":[[504,10]]},"301":{"position":[[480,10]]}},"keywords":{}}],["conflictstest",{"_index":1642,"title":{},"content":{"150":{"position":[[523,13]]}},"keywords":{}}],["confus",{"_index":1696,"title":{},"content":{"161":{"position":[[108,8]]},"273":{"position":[[4909,9]]}},"keywords":{}}],["connect",{"_index":1406,"title":{},"content":{"128":{"position":[[158,7]]}},"keywords":{}}],["conserv",{"_index":2291,"title":{},"content":{"246":{"position":[[747,12]]}},"keywords":{}}],["conshelp",{"_index":1873,"title":{},"content":{"182":{"position":[[22,10]]}},"keywords":{}}],["consid",{"_index":2238,"title":{},"content":{"243":{"position":[[2065,11]]},"246":{"position":[[2028,11]]},"247":{"position":[[749,10]]},"255":{"position":[[3666,11]]},"267":{"position":[[512,8]]},"272":{"position":[[762,10]]}},"keywords":{}}],["consider",{"_index":2631,"title":{},"content":{"270":{"position":[[137,13]]},"273":{"position":[[947,14]]}},"keywords":{}}],["consist",{"_index":1440,"title":{},"content":{"132":{"position":[[396,11]]},"133":{"position":[[321,11],[1307,12]]},"252":{"position":[[1718,11]]}},"keywords":{}}],["consistently)11",{"_index":2404,"title":{},"content":{"252":{"position":[[778,15]]}},"keywords":{}}],["const",{"_index":121,"title":{},"content":{"4":{"position":[[87,7]]}},"keywords":{}}],["const.pi",{"_index":456,"title":{},"content":{"33":{"position":[[219,8]]},"38":{"position":[[245,8]]},"52":{"position":[[11,8]]},"85":{"position":[[144,8]]},"136":{"position":[[800,8]]},"204":{"position":[[224,8]]},"245":{"position":[[252,9]]}},"keywords":{}}],["const.pyvalu",{"_index":2135,"title":{},"content":{"239":{"position":[[715,15]]}},"keywords":{}}],["constant",{"_index":1518,"title":{"245":{"position":[[15,10]]}},"content":{"136":{"position":[[811,9]]},"239":{"position":[[1479,9]]},"252":{"position":[[397,10]]},"255":{"position":[[2019,10]]}},"keywords":{}}],["constant)outli",{"_index":2464,"title":{},"content":{"255":{"position":[[1147,16]]}},"keywords":{}}],["constraint",{"_index":2270,"title":{},"content":{"246":{"position":[[189,12],[909,12]]}},"keywords":{}}],["construct",{"_index":366,"title":{},"content":{"28":{"position":[[132,13]]}},"keywords":{}}],["consumpt",{"_index":2295,"title":{},"content":{"246":{"position":[[886,11]]}},"keywords":{}}],["consumptionean",{"_index":1197,"title":{},"content":{"99":{"position":[[214,14]]}},"keywords":{}}],["contain",{"_index":161,"title":{},"content":{"11":{"position":[[24,10]]},"129":{"position":[[12,10]]},"132":{"position":[[111,9]]},"179":{"position":[[1331,9],[1361,11]]},"229":{"position":[[18,9]]},"230":{"position":[[221,11]]}},"keywords":{}}],["container"",{"_index":176,"title":{},"content":{"12":{"position":[[172,15]]},"179":{"position":[[1381,16]]},"230":{"position":[[243,15]]}},"keywords":{}}],["container")run",{"_index":1478,"title":{},"content":{"134":{"position":[[77,19]]}},"keywords":{}}],["context",{"_index":1462,"title":{},"content":{"133":{"position":[[934,7],[1274,7]]},"163":{"position":[[285,8]]},"179":{"position":[[846,7]]},"252":{"position":[[1360,7]]},"255":{"position":[[1244,7],[1526,7],[1584,8],[2618,7],[2804,8]]},"273":{"position":[[4674,8]]}},"keywords":{}}],["context"",{"_index":2360,"title":{},"content":{"247":{"position":[[682,13]]}},"keywords":{}}],["context_residu",{"_index":2475,"title":{},"content":{"255":{"position":[[1534,17]]}},"keywords":{}}],["continu",{"_index":253,"title":{},"content":{"18":{"position":[[271,8]]},"75":{"position":[[33,12],[266,8]]},"77":{"position":[[1165,8]]},"94":{"position":[[685,13]]}},"keywords":{}}],["contribut",{"_index":154,"title":{"9":{"position":[[0,12]]},"140":{"position":[[3,13]]}},"content":{"140":{"position":[[34,12]]},"242":{"position":[[270,10]]}},"keywords":{}}],["contributing.md",{"_index":1545,"title":{},"content":{"140":{"position":[[5,15]]}},"keywords":{}}],["contributionsdocument",{"_index":356,"title":{},"content":{"27":{"position":[[103,26]]}},"keywords":{}}],["contributor",{"_index":1476,"title":{"134":{"position":[[19,13]]}},"content":{},"keywords":{}}],["control",{"_index":2423,"title":{},"content":{"252":{"position":[[1730,10]]},"277":{"position":[[389,8],[422,8],[456,8]]}},"keywords":{}}],["convent",{"_index":31,"title":{"2":{"position":[[7,12]]}},"content":{"18":{"position":[[8,12]]},"22":{"position":[[264,12]]},"132":{"position":[[339,12]]},"134":{"position":[[412,12]]},"163":{"position":[[159,11]]},"179":{"position":[[47,12]]},"196":{"position":[[1,12]]},"233":{"position":[[185,12]]}},"keywords":{}}],["conventionsdevelop",{"_index":1433,"title":{},"content":{"132":{"position":[[176,22]]}},"keywords":{}}],["conventionsperiod",{"_index":1417,"title":{},"content":{"131":{"position":[[103,17]]}},"keywords":{}}],["converg",{"_index":2525,"title":{},"content":{"255":{"position":[[3568,11]]}},"keywords":{}}],["convers",{"_index":346,"title":{},"content":{"26":{"position":[[138,13]]},"55":{"position":[[682,11]]}},"keywords":{}}],["convert",{"_index":133,"title":{},"content":{"6":{"position":[[182,7]]}},"keywords":{}}],["coordin",{"_index":56,"title":{"34":{"position":[[6,13]]},"62":{"position":[[6,13]]},"86":{"position":[[3,11]]},"211":{"position":[[0,11]]},"282":{"position":[[6,12]]},"296":{"position":[[19,13]]}},"content":{"3":{"position":[[431,11]]},"17":{"position":[[93,13]]},"31":{"position":[[48,11],[172,11],[425,11],[807,11],[1045,11],[1269,11]]},"33":{"position":[[268,13],[519,11]]},"36":{"position":[[103,11]]},"37":{"position":[[188,12],[682,11]]},"42":{"position":[[31,12]]},"43":{"position":[[634,11]]},"46":{"position":[[45,13]]},"47":{"position":[[5,11],[152,12]]},"48":{"position":[[48,12]]},"51":{"position":[[680,13]]},"53":{"position":[[147,11]]},"55":{"position":[[324,11]]},"56":{"position":[[1338,12]]},"57":{"position":[[973,11]]},"61":{"position":[[1,11]]},"64":{"position":[[1,11]]},"65":{"position":[[1,11]]},"66":{"position":[[60,11]]},"67":{"position":[[498,11]]},"69":{"position":[[239,11]]},"77":{"position":[[1330,11]]},"78":{"position":[[239,11]]},"111":{"position":[[1,11]]},"114":{"position":[[1,11]]},"118":{"position":[[7,11],[244,13]]},"121":{"position":[[7,11]]},"128":{"position":[[8,11]]},"131":{"position":[[261,12]]},"136":{"position":[[103,11]]},"198":{"position":[[18,11]]},"209":{"position":[[29,12]]},"219":{"position":[[131,12],[169,11]]},"278":{"position":[[1320,13]]},"279":{"position":[[698,12],[1932,11]]},"281":{"position":[[310,11],[626,11],[1217,11]]},"297":{"position":[[9,11]]},"298":{"position":[[9,11]]},"301":{"position":[[430,10],[632,11]]}},"keywords":{}}],["coordination)check",{"_index":2978,"title":{},"content":{"299":{"position":[[189,19]]}},"keywords":{}}],["coordinationarchitectur",{"_index":987,"title":{},"content":{"73":{"position":[[57,24]]}},"keywords":{}}],["coordinator._handle_midnight_turnov",{"_index":902,"title":{},"content":{"60":{"position":[[27,39]]}},"keywords":{}}],["coordinator._handle_options_upd",{"_index":892,"title":{},"content":{"59":{"position":[[68,36]]}},"keywords":{}}],["coordinator.async_refresh",{"_index":2050,"title":{},"content":{"219":{"position":[[245,27]]}},"keywords":{}}],["coordinator.async_request_refresh",{"_index":899,"title":{},"content":{"59":{"position":[[409,35]]}},"keywords":{}}],["coordinator.data",{"_index":229,"title":{},"content":{"17":{"position":[[176,16]]},"86":{"position":[[186,16],[231,16]]}},"keywords":{}}],["coordinator.data.get('best_price_period",{"_index":1344,"title":{},"content":{"118":{"position":[[268,42]]}},"keywords":{}}],["coordinator.data}"",{"_index":1339,"title":{},"content":{"118":{"position":[[90,25]]}},"keywords":{}}],["coordinator.pi",{"_index":492,"title":{},"content":{"36":{"position":[[115,14]]},"136":{"position":[[74,14]]}},"keywords":{}}],["coordinator/cache.pi",{"_index":452,"title":{},"content":{"33":{"position":[[130,20]]},"51":{"position":[[11,20],[918,20]]},"204":{"position":[[59,20]]}},"keywords":{}}],["coordinator/cache.py)if",{"_index":392,"title":{},"content":{"31":{"position":[[251,24]]}},"keywords":{}}],["coordinator/cache.pymidnight",{"_index":977,"title":{},"content":{"71":{"position":[[35,28]]}},"keywords":{}}],["coordinator/core.pi",{"_index":807,"title":{},"content":{"55":{"position":[[423,19]]},"77":{"position":[[1853,19]]},"114":{"position":[[24,19]]},"278":{"position":[[7,19]]}},"keywords":{}}],["coordinator/data_fetching.pi",{"_index":748,"title":{},"content":{"51":{"position":[[1145,28]]}},"keywords":{}}],["coordinator/data_transformation.pi",{"_index":466,"title":{},"content":{"33":{"position":[[413,34]]},"36":{"position":[[236,34]]},"53":{"position":[[11,34]]},"57":{"position":[[11,34]]},"78":{"position":[[434,34]]}},"keywords":{}}],["coordinator/day_transitions.pi",{"_index":729,"title":{},"content":{"51":{"position":[[696,30]]}},"keywords":{}}],["coordinator/listeners.pi",{"_index":1027,"title":{},"content":{"77":{"position":[[667,24],[1368,24]]},"279":{"position":[[7,24]]},"280":{"position":[[7,24]]}},"keywords":{}}],["coordinator/listeners.pytim",{"_index":610,"title":{},"content":{"42":{"position":[[109,29]]}},"keywords":{}}],["coordinator/period_handlers/core.pi",{"_index":1319,"title":{},"content":{"114":{"position":[[214,35]]},"235":{"position":[[341,35]]},"245":{"position":[[12,36]]},"255":{"position":[[36,35]]}},"keywords":{}}],["coordinator/period_handlers/level_filtering.pi",{"_index":2216,"title":{},"content":{"243":{"position":[[924,46]]},"255":{"position":[[215,46]]}},"keywords":{}}],["coordinator/period_handlers/outlier_filtering.pi",{"_index":2449,"title":{},"content":{"255":{"position":[[624,48],[2033,48]]}},"keywords":{}}],["coordinator/period_handlers/period_building.pi",{"_index":1370,"title":{},"content":{"122":{"position":[[33,46]]},"273":{"position":[[5157,46]]}},"keywords":{}}],["coordinator/period_handlers/period_statistics.pi",{"_index":2780,"title":{},"content":{"273":{"position":[[5248,48]]}},"keywords":{}}],["coordinator/period_handlers/relaxation.pi",{"_index":2389,"title":{},"content":{"252":{"position":[[48,41]]},"255":{"position":[[422,41]]}},"keywords":{}}],["coordinator/periods.pi",{"_index":462,"title":{},"content":{"33":{"position":[[328,22]]},"36":{"position":[[339,22]]},"46":{"position":[[96,22]]},"53":{"position":[[50,22]]},"56":{"position":[[11,22]]}},"keywords":{}}],["coordinatordocs(us",{"_index":265,"title":{},"content":{"18":{"position":[[525,22]]}},"keywords":{}}],["coordinators.append(coordin",{"_index":2051,"title":{},"content":{"219":{"position":[[273,32]]}},"keywords":{}}],["coordinatorwithout",{"_index":1021,"title":{},"content":{"77":{"position":[[497,18]]}},"keywords":{}}],["copilot",{"_index":1442,"title":{},"content":{"133":{"position":[[68,8]]},"163":{"position":[[38,8]]},"179":{"position":[[373,7],[820,7]]},"196":{"position":[[339,7]]}},"keywords":{}}],["core",{"_index":486,"title":{"36":{"position":[[0,4]]},"236":{"position":[[0,4]]}},"content":{},"keywords":{}}],["core.pi",{"_index":564,"title":{},"content":{"37":{"position":[[1099,7]]},"136":{"position":[[349,7]]},"154":{"position":[[363,7]]},"247":{"position":[[57,7],[565,7]]},"252":{"position":[[641,8]]}},"keywords":{}}],["correct",{"_index":42,"title":{},"content":{"3":{"position":[[149,7]]},"80":{"position":[[94,7],[144,7]]},"90":{"position":[[134,7],[432,9]]},"92":{"position":[[404,7]]},"273":{"position":[[2849,7],[3319,7],[5013,12]]},"286":{"position":[[160,7]]},"299":{"position":[[358,8]]},"301":{"position":[[345,7]]}},"keywords":{}}],["correctli",{"_index":1014,"title":{},"content":{"77":{"position":[[110,9],[193,9],[271,9],[1575,9]]},"80":{"position":[[243,9]]},"84":{"position":[[19,9]]},"86":{"position":[[80,9]]},"92":{"position":[[89,9],[347,9]]},"154":{"position":[[536,9]]},"156":{"position":[[353,9]]},"273":{"position":[[2956,9]]}},"keywords":{}}],["cost",{"_index":2671,"title":{},"content":{"272":{"position":[[2206,4]]}},"keywords":{}}],["costprefer",{"_index":2310,"title":{},"content":{"246":{"position":[[1357,15]]}},"keywords":{}}],["count",{"_index":864,"title":{},"content":{"56":{"position":[[1549,6]]},"118":{"position":[[140,6]]},"255":{"position":[[2486,9],[2501,6]]},"269":{"position":[[357,5]]},"272":{"position":[[1619,5]]}},"keywords":{}}],["countdown",{"_index":2849,"title":{},"content":{"280":{"position":[[172,9],[508,9],[554,9],[712,10],[920,9]]},"294":{"position":[[134,9]]},"301":{"position":[[407,9]]}},"keywords":{}}],["countdown/progress",{"_index":2787,"title":{},"content":{"277":{"position":[[310,18]]},"283":{"position":[[384,18]]},"290":{"position":[[80,18]]},"301":{"position":[[204,18]]}},"keywords":{}}],["counter",{"_index":2025,"title":{},"content":{"215":{"position":[[243,8]]}},"keywords":{}}],["countri",{"_index":1192,"title":{},"content":{"99":{"position":[[116,7]]}},"keywords":{}}],["cov",{"_index":1163,"title":{},"content":{"94":{"position":[[378,3]]}},"keywords":{}}],["cov=custom_components.tibber_pric",{"_index":1162,"title":{},"content":{"94":{"position":[[340,35]]},"138":{"position":[[178,35]]},"225":{"position":[[118,35]]}},"keywords":{}}],["cover",{"_index":318,"title":{},"content":{"25":{"position":[[82,8]]},"92":{"position":[[51,7]]},"247":{"position":[[214,6]]},"252":{"position":[[803,6]]}},"keywords":{}}],["coverag",{"_index":1137,"title":{"88":{"position":[[8,8]]}},"content":{"93":{"position":[[312,8]]},"94":{"position":[[314,8]]},"138":{"position":[[160,8]]},"225":{"position":[[100,8]]}},"keywords":{}}],["coveragelisten",{"_index":1139,"title":{},"content":{"89":{"position":[[28,16]]}},"keywords":{}}],["cprofil",{"_index":1391,"title":{"126":{"position":[[13,9]]}},"content":{"126":{"position":[[11,8]]}},"keywords":{}}],["cpu",{"_index":678,"title":{"46":{"position":[[0,3]]}},"content":{"56":{"position":[[1732,3]]},"67":{"position":[[344,3]]},"75":{"position":[[228,3]]},"77":{"position":[[1307,3]]},"280":{"position":[[940,3]]},"294":{"position":[[156,3]]}},"keywords":{}}],["creat",{"_index":186,"title":{"14":{"position":[[3,6]]},"19":{"position":[[12,6]]},"145":{"position":[[3,6]]},"169":{"position":[[17,6]]}},"content":{"31":{"position":[[40,7]]},"77":{"position":[[1241,7]]},"135":{"position":[[499,6]]},"143":{"position":[[46,6]]},"145":{"position":[[1,6]]},"146":{"position":[[146,12]]},"150":{"position":[[233,7]]},"154":{"position":[[127,6],[242,6]]},"162":{"position":[[26,6]]},"169":{"position":[[135,6]]},"176":{"position":[[189,6],[258,6],[484,7],[811,7],[875,7]]},"180":{"position":[[129,6],[314,6]]},"184":{"position":[[199,7],[289,7],[384,7]]},"185":{"position":[[291,7],[334,7],[435,7],[492,7]]},"186":{"position":[[149,6],[231,7],[268,6],[313,7]]},"187":{"position":[[59,6]]},"190":{"position":[[98,8]]},"191":{"position":[[15,7]]},"194":{"position":[[503,6]]},"196":{"position":[[299,8]]},"259":{"position":[[199,6]]}},"keywords":{}}],["create/modify/delete)defin",{"_index":1736,"title":{},"content":{"170":{"position":[[131,29]]}},"keywords":{}}],["create/modify/delete/renam",{"_index":1585,"title":{},"content":{"146":{"position":[[456,29]]}},"keywords":{}}],["create/modify/delete/rename)phas",{"_index":1644,"title":{},"content":{"150":{"position":[[602,34]]}},"keywords":{}}],["create/modify/delete/rename)upd",{"_index":1771,"title":{},"content":{"174":{"position":[[210,35]]}},"keywords":{}}],["create/modify/delete/renamedefin",{"_index":1658,"title":{},"content":{"153":{"position":[[86,33]]}},"keywords":{}}],["create_coordinator(hass",{"_index":2048,"title":{},"content":{"219":{"position":[[183,24]]}},"keywords":{}}],["createdha",{"_index":1111,"title":{},"content":{"84":{"position":[[116,9]]}},"keywords":{}}],["creation",{"_index":1888,"title":{},"content":{"187":{"position":[[116,8]]}},"keywords":{}}],["criteria",{"_index":1592,"title":{"236":{"position":[[15,9]]}},"content":{"146":{"position":[[639,8]]},"153":{"position":[[128,8]]},"154":{"position":[[412,11]]},"173":{"position":[[68,9]]},"239":{"position":[[624,8]]},"243":{"position":[[1140,10]]},"247":{"position":[[896,8]]},"255":{"position":[[305,9]]},"273":{"position":[[1879,8],[2397,9],[2521,9],[4474,8],[4862,8]]}},"keywords":{}}],["criteria"",{"_index":1761,"title":{},"content":{"173":{"position":[[28,14]]}},"keywords":{}}],["criteria.min_distance_from_avg",{"_index":2221,"title":{},"content":{"243":{"position":[[1227,30],[1456,30],[1664,31]]}},"keywords":{}}],["criterion"aft",{"_index":2539,"title":{},"content":{"256":{"position":[[265,20]]}},"keywords":{}}],["critic",{"_index":122,"title":{"5":{"position":[[0,8]]},"74":{"position":[[0,8]]},"75":{"position":[[23,10]]},"92":{"position":[[6,8]]}},"content":{"77":{"position":[[432,9],[1135,9],[1618,9]]},"78":{"position":[[263,9]]},"79":{"position":[[220,9]]},"80":{"position":[[258,9]]},"81":{"position":[[254,9]]},"82":{"position":[[52,9]]},"89":{"position":[[484,10]]},"93":{"position":[[329,8]]},"94":{"position":[[104,8]]},"200":{"position":[[21,8]]},"263":{"position":[[167,8]]},"273":{"position":[[1803,9]]}},"keywords":{}}],["cross",{"_index":2699,"title":{},"content":{"273":{"position":[[1508,5],[2142,5],[2567,8]]}},"keywords":{}}],["crucial",{"_index":1472,"title":{},"content":{"133":{"position":[[1150,7]]}},"keywords":{}}],["ct",{"_index":2320,"title":{},"content":{"246":{"position":[[1715,3],[1787,3]]},"255":{"position":[[2794,2],[2842,2],[2867,2],[2890,2],[2987,2],[3035,2]]},"264":{"position":[[313,2],[332,3],[361,2]]},"273":{"position":[[2363,3],[2382,3],[2420,2],[2487,3],[2506,3],[2542,2],[2630,2],[2674,2],[2768,2],[2784,2],[2797,2],[2920,2],[2936,2],[2944,2]]}},"keywords":{}}],["ct)distanc",{"_index":2582,"title":{},"content":{"264":{"position":[[189,11]]}},"keywords":{}}],["ct)outlier",{"_index":2581,"title":{},"content":{"264":{"position":[[133,10]]}},"keywords":{}}],["ct/interv",{"_index":2510,"title":{},"content":{"255":{"position":[[2933,11]]}},"keywords":{}}],["ct/kwh",{"_index":2110,"title":{},"content":{"237":{"position":[[385,6]]},"238":{"position":[[480,6]]},"241":{"position":[[168,6],[233,6],[308,6],[345,7]]},"262":{"position":[[22,6],[57,6]]},"263":{"position":[[22,6],[56,6]]},"264":{"position":[[21,6],[56,6]]}},"keywords":{}}],["ct/kwhdaili",{"_index":2160,"title":{},"content":{"241":{"position":[[128,11],[148,11]]}},"keywords":{}}],["ct/kwhflex",{"_index":2105,"title":{},"content":{"237":{"position":[[343,11]]}},"keywords":{}}],["ct/kwhmin",{"_index":2119,"title":{},"content":{"238":{"position":[[430,9]]}},"keywords":{}}],["ct/kwhnok",{"_index":1237,"title":{},"content":{"104":{"position":[[94,9]]}},"keywords":{}}],["ct/ΓΈre",{"_index":2757,"title":{},"content":{"273":{"position":[[4038,8]]}},"keywords":{}}],["ctrl+shift+p",{"_index":2079,"title":{},"content":{"230":{"position":[[196,12]]}},"keywords":{}}],["cumtim",{"_index":1397,"title":{},"content":{"126":{"position":[[108,8]]}},"keywords":{}}],["cumul",{"_index":2027,"title":{},"content":{"215":{"position":[[298,10]]}},"keywords":{}}],["currenc",{"_index":1195,"title":{"104":{"position":[[0,8]]}},"content":{"99":{"position":[[179,8]]},"104":{"position":[[55,11]]}},"keywords":{}}],["currency'",{"_index":1221,"title":{},"content":{"103":{"position":[[182,11]]}},"keywords":{}}],["current",{"_index":85,"title":{},"content":{"3":{"position":[[1090,9],[1198,7]]},"42":{"position":[[490,7],[696,7]]},"57":{"position":[[463,7]]},"83":{"position":[[1,7]]},"84":{"position":[[1,7]]},"85":{"position":[[1,7]]},"86":{"position":[[1,7]]},"87":{"position":[[1,7]]},"99":{"position":[[169,7]]},"125":{"position":[[60,8],[162,8]]},"146":{"position":[[269,7]]},"201":{"position":[[56,8],[165,7]]},"215":{"position":[[215,7]]},"246":{"position":[[2434,7]]},"252":{"position":[[1,7]]},"273":{"position":[[27,8],[540,8],[1478,7]]},"279":{"position":[[1343,7]]},"283":{"position":[[63,8]]}},"keywords":{}}],["current/next/previ",{"_index":644,"title":{},"content":{"43":{"position":[[144,21]]}},"keywords":{}}],["current/next/previous)rolling_hour.pi",{"_index":547,"title":{},"content":{"37":{"position":[[743,38]]}},"keywords":{}}],["current=%.2fmb",{"_index":1948,"title":{},"content":{"201":{"position":[[131,14]]}},"keywords":{}}],["current=%d",{"_index":1388,"title":{},"content":{"125":{"position":[[136,10]]}},"keywords":{}}],["current_date=2025",{"_index":2896,"title":{},"content":{"284":{"position":[[48,17],[217,17],[437,17]]}},"keywords":{}}],["current_hash",{"_index":854,"title":{},"content":{"56":{"position":[[1164,12],[1248,13]]}},"keywords":{}}],["current_hashlook",{"_index":969,"title":{},"content":{"70":{"position":[[99,16]]}},"keywords":{}}],["current_interval_pric",{"_index":2829,"title":{},"content":{"279":{"position":[[1034,24],[1732,23]]}},"keywords":{}}],["currentsubscript",{"_index":1193,"title":{},"content":{"99":{"position":[[135,19]]},"100":{"position":[[84,19]]}},"keywords":{}}],["curv",{"_index":2313,"title":{},"content":{"246":{"position":[[1492,6]]},"255":{"position":[[3317,6]]},"267":{"position":[[605,5]]},"273":{"position":[[624,5]]}},"keywords":{}}],["curveno",{"_index":2630,"title":{},"content":{"270":{"position":[[129,7]]}},"keywords":{}}],["custom",{"_index":381,"title":{"279":{"position":[[31,9]]},"280":{"position":[[25,9]]}},"content":{"31":{"position":[[126,6],[1246,6]]},"36":{"position":[[574,6]]},"136":{"position":[[737,6]]},"157":{"position":[[166,7]]},"195":{"position":[[110,6]]},"277":{"position":[[204,6],[290,6]]},"279":{"position":[[89,6],[1903,6]]},"280":{"position":[[83,6],[679,6]]},"301":{"position":[[113,8],[179,8]]}},"keywords":{}}],["custom_components.tibber_pric",{"_index":1277,"title":{},"content":{"110":{"position":[[57,32]]}},"keywords":{}}],["custom_components.tibber_prices.api",{"_index":1286,"title":{},"content":{"111":{"position":[[579,37],[650,37]]}},"keywords":{}}],["custom_components.tibber_prices.coordin",{"_index":1279,"title":{},"content":{"111":{"position":[[23,45],[101,45],[178,45]]}},"keywords":{}}],["custom_components.tibber_prices.coordinator.period",{"_index":1281,"title":{},"content":{"111":{"position":[[290,53],[387,53],[473,53]]}},"keywords":{}}],["custom_components.tibber_prices.coordinator.period_handl",{"_index":2536,"title":{},"content":{"256":{"position":[[73,60]]}},"keywords":{}}],["custom_components/tibber_pric",{"_index":1506,"title":{},"content":{"136":{"position":[[1,32]]}},"keywords":{}}],["custom_components/tibber_prices/manifest.json",{"_index":1791,"title":{},"content":{"176":{"position":[[597,45]]},"185":{"position":[[37,45]]},"186":{"position":[[28,45]]},"194":{"position":[[277,45]]}},"keywords":{}}],["custom_transl",{"_index":1519,"title":{},"content":{"136":{"position":[[882,20]]},"137":{"position":[[447,21]]}},"keywords":{}}],["custom_translations/*.json",{"_index":582,"title":{},"content":{"40":{"position":[[103,30]]},"52":{"position":[[307,30]]}},"keywords":{}}],["custom_translations/?cach",{"_index":984,"title":{},"content":{"72":{"position":[[99,27]]}},"keywords":{}}],["cycl",{"_index":805,"title":{},"content":{"55":{"position":[[343,5]]},"57":{"position":[[694,5]]},"61":{"position":[[20,5]]},"246":{"position":[[236,6]]},"283":{"position":[[158,6]]},"284":{"position":[[412,6]]},"288":{"position":[[545,7]]}},"keywords":{}}],["cycle)ent",{"_index":609,"title":{},"content":{"42":{"position":[[50,12]]}},"keywords":{}}],["d",{"_index":1903,"title":{},"content":{"194":{"position":[[61,1]]}},"keywords":{}}],["da",{"_index":2915,"title":{},"content":{"286":{"position":[[71,2]]}},"keywords":{}}],["daili",{"_index":652,"title":{"238":{"position":[[38,5]]}},"content":{"43":{"position":[[528,5]]},"51":{"position":[[516,5]]},"237":{"position":[[52,5],[123,5],[237,5],[329,5]]},"238":{"position":[[174,5],[311,5],[416,5]]},"241":{"position":[[114,5]]},"255":{"position":[[2396,6]]},"269":{"position":[[54,5]]},"272":{"position":[[89,5]]},"273":{"position":[[1616,6],[4020,5]]}},"keywords":{}}],["daily)surv",{"_index":728,"title":{},"content":{"51":{"position":[[573,15]]}},"keywords":{}}],["daily_avg",{"_index":2117,"title":{},"content":{"238":{"position":[[217,10],[354,10]]},"242":{"position":[[65,9]]},"272":{"position":[[194,9]]},"273":{"position":[[2367,9],[2491,9]]}},"keywords":{}}],["daily_max",{"_index":2104,"title":{},"content":{"237":{"position":[[273,10],[286,9]]},"272":{"position":[[168,10]]}},"keywords":{}}],["daily_min",{"_index":2102,"title":{},"content":{"237":{"position":[[159,10],[172,9]]},"242":{"position":[[37,9]]},"272":{"position":[[181,10]]},"273":{"position":[[2348,9],[2472,9]]}},"keywords":{}}],["dangl",{"_index":1154,"title":{},"content":{"92":{"position":[[208,8]]}},"keywords":{}}],["data",{"_index":147,"title":{"8":{"position":[[6,4]]},"30":{"position":[[11,4]]},"41":{"position":[[9,4]]},"51":{"position":[[18,4]]},"61":{"position":[[9,4]]},"69":{"position":[[15,4]]},"86":{"position":[[15,4]]},"99":{"position":[[5,4]]},"100":{"position":[[6,4]]},"107":{"position":[[0,4]]},"210":{"position":[[10,4]]},"285":{"position":[[21,4]]}},"content":{"8":{"position":[[23,5]]},"18":{"position":[[209,5],[520,4]]},"31":{"position":[[142,4],[361,4],[759,4],[835,4],[1075,4],[1281,4]]},"36":{"position":[[219,4]]},"42":{"position":[[507,5]]},"50":{"position":[[103,4],[300,4]]},"51":{"position":[[140,4],[155,4],[205,4],[333,4],[477,5],[547,5],[1011,4],[1090,4],[1117,4]]},"52":{"position":[[684,4]]},"56":{"position":[[139,4],[832,4],[957,5],[1121,4],[1378,4],[1424,5],[1447,4]]},"57":{"position":[[255,4],[410,4],[509,4],[871,4]]},"59":{"position":[[453,4]]},"61":{"position":[[82,4],[133,4],[146,4]]},"62":{"position":[[66,4]]},"66":{"position":[[113,5]]},"67":{"position":[[50,4],[1028,4]]},"70":{"position":[[34,4],[253,5]]},"73":{"position":[[107,4]]},"79":{"position":[[204,4],[325,4]]},"83":{"position":[[81,4]]},"90":{"position":[[241,4]]},"92":{"position":[[262,4],[312,4]]},"100":{"position":[[319,5]]},"101":{"position":[[198,4]]},"107":{"position":[[9,4]]},"111":{"position":[[96,4],[173,4]]},"114":{"position":[[115,4]]},"118":{"position":[[19,5],[84,5]]},"136":{"position":[[91,4]]},"137":{"position":[[45,4],[98,4],[186,4],[212,4]]},"156":{"position":[[295,4]]},"204":{"position":[[26,6],[130,4]]},"205":{"position":[[6,4]]},"212":{"position":[[54,4],[97,4]]},"213":{"position":[[98,4],[232,4]]},"216":{"position":[[179,4],[200,4]]},"221":{"position":[[80,4]]},"255":{"position":[[2317,4],[3894,5]]},"277":{"position":[[160,4],[398,4]]},"278":{"position":[[417,4],[825,4],[1002,4],[1159,4]]},"279":{"position":[[442,4],[2080,4]]},"280":{"position":[[341,4],[821,4]]},"283":{"position":[[185,4],[232,4]]},"284":{"position":[[132,4],[533,4]]},"285":{"position":[[139,5],[209,4],[279,4],[374,5]]},"288":{"position":[[125,5],[604,5],[642,4]]},"294":{"position":[[94,4]]},"296":{"position":[[103,4],[178,4]]},"300":{"position":[[39,4]]},"301":{"position":[[77,4],[353,4]]}},"keywords":{}}],["data"",{"_index":2017,"title":{},"content":{"213":{"position":[[191,11]]}},"keywords":{}}],["data)if",{"_index":626,"title":{},"content":{"42":{"position":[[431,7]]}},"keywords":{}}],["data)slow",{"_index":2951,"title":{},"content":{"292":{"position":[[90,9]]}},"keywords":{}}],["data)test",{"_index":1675,"title":{},"content":{"157":{"position":[[233,9]]}},"keywords":{}}],["data/config",{"_index":463,"title":{},"content":{"33":{"position":[[357,11]]},"67":{"position":[[292,11]]}},"keywords":{}}],["databas",{"_index":2020,"title":{"214":{"position":[[0,8]]}},"content":{},"keywords":{}}],["dataclass",{"_index":59,"title":{},"content":{"3":{"position":[[474,13]]}},"keywords":{}}],["datafetch",{"_index":49,"title":{},"content":{"3":{"position":[[303,12],[1028,12]]}},"keywords":{}}],["dataif",{"_index":393,"title":{},"content":{"31":{"position":[[304,6],[554,6]]}},"keywords":{}}],["datano",{"_index":2959,"title":{},"content":{"293":{"position":[[117,6]]}},"keywords":{}}],["datao(n",{"_index":2496,"title":{},"content":{"255":{"position":[[2587,8]]}},"keywords":{}}],["dataset",{"_index":2008,"title":{},"content":{"210":{"position":[[255,8]]}},"keywords":{}}],["datatransform",{"_index":782,"title":{"54":{"position":[[0,15]]}},"content":{"57":{"position":[[723,16]]},"78":{"position":[[88,15]]},"204":{"position":[[575,16]]}},"keywords":{}}],["datatransformer.invalidate_config_cach",{"_index":893,"title":{},"content":{"59":{"position":[[114,41]]}},"keywords":{}}],["datatransformertransform",{"_index":402,"title":{},"content":{"31":{"position":[[458,26]]}},"keywords":{}}],["dataupdatecoordin",{"_index":1521,"title":{"278":{"position":[[10,21]]},"292":{"position":[[9,24]]}},"content":{"137":{"position":[[1,21]]},"277":{"position":[[173,21]]},"278":{"position":[[96,21]]},"289":{"position":[[24,21]]}},"keywords":{}}],["dataupdatecoordinatortrigg",{"_index":2789,"title":{},"content":{"278":{"position":[[232,29]]}},"keywords":{}}],["date",{"_index":1544,"title":{},"content":{"139":{"position":[[153,4]]},"278":{"position":[[1395,5]]},"284":{"position":[[576,4]]},"299":{"position":[[230,4]]}},"keywords":{}}],["date_key",{"_index":2704,"title":{},"content":{"273":{"position":[[1773,8],[1870,8]]}},"keywords":{}}],["date_key)attribut",{"_index":2779,"title":{},"content":{"273":{"position":[[5227,20]]}},"keywords":{}}],["datetim",{"_index":2826,"title":{},"content":{"279":{"position":[[642,9]]},"280":{"position":[[277,9]]}},"keywords":{}}],["day",{"_index":551,"title":{"60":{"position":[[18,4]]},"262":{"position":[[19,3]]},"263":{"position":[[17,3]]},"264":{"position":[[20,3]]}},"content":{"37":{"position":[[835,3]]},"43":{"position":[[290,3]]},"51":{"position":[[224,3],[830,3],[1035,3]]},"60":{"position":[[371,3]]},"65":{"position":[[79,4],[339,4]]},"67":{"position":[[66,3]]},"100":{"position":[[311,4]]},"111":{"position":[[441,3]]},"198":{"position":[[208,3]]},"216":{"position":[[171,4]]},"243":{"position":[[2205,5]]},"246":{"position":[[1665,4]]},"247":{"position":[[179,3],[320,4]]},"250":{"position":[[28,3]]},"251":{"position":[[6,3]]},"253":{"position":[[221,3]]},"263":{"position":[[276,3],[571,3]]},"265":{"position":[[155,3],[365,3]]},"266":{"position":[[42,3],[148,3],[270,3],[385,4]]},"269":{"position":[[90,5],[127,5],[234,4]]},"270":{"position":[[213,3]]},"272":{"position":[[235,3],[425,3],[1005,4],[1767,3]]},"273":{"position":[[1006,3],[1248,3],[1832,4],[1965,3],[2014,3],[2113,3],[2185,3],[2303,3],[2318,3],[2344,3],[2438,3],[2468,3],[2592,3],[2606,3],[2618,4],[2662,4],[2725,5],[2755,3],[2829,3],[2879,5],[2909,3],[2998,3],[3053,4],[3099,3],[3160,3],[3167,3],[3232,3],[3362,3],[3428,3],[3507,3],[3841,3],[4398,3],[4950,3],[5297,4]]}},"keywords":{}}],["day'",{"_index":2606,"title":{},"content":{"267":{"position":[[593,5]]},"273":{"position":[[1593,5],[4468,5],[4815,5]]}},"keywords":{}}],["day)70",{"_index":943,"title":{},"content":{"67":{"position":[[608,7]]}},"keywords":{}}],["day_price_max",{"_index":2755,"title":{},"content":{"273":{"position":[[3989,14]]}},"keywords":{}}],["day_price_span",{"_index":2756,"title":{},"content":{"273":{"position":[[4004,15]]}},"keywords":{}}],["day_volatility_",{"_index":2752,"title":{},"content":{"273":{"position":[[3922,17],[4212,19]]}},"keywords":{}}],["dayhigh",{"_index":2598,"title":{},"content":{"267":{"position":[[265,7]]}},"keywords":{}}],["dayreject",{"_index":2764,"title":{},"content":{"273":{"position":[[4496,12]]}},"keywords":{}}],["days"",{"_index":2207,"title":{},"content":{"243":{"position":[[689,10]]},"259":{"position":[[76,10]]}},"keywords":{}}],["days)address",{"_index":304,"title":{},"content":{"23":{"position":[[65,12]]}},"keywords":{}}],["days)miss",{"_index":1121,"title":{},"content":{"86":{"position":[[113,12]]}},"keywords":{}}],["days/week",{"_index":998,"title":{},"content":{"75":{"position":[[125,10]]}},"keywords":{}}],["daysself",{"_index":2637,"title":{},"content":{"272":{"position":[[518,8]]}},"keywords":{}}],["daystransl",{"_index":706,"title":{},"content":{"50":{"position":[[138,15]]}},"keywords":{}}],["dd",{"_index":1579,"title":{},"content":{"146":{"position":[[167,2],[196,2]]}},"keywords":{}}],["de",{"_index":1530,"title":{},"content":{"137":{"position":[[523,4]]}},"keywords":{}}],["debt",{"_index":91,"title":{},"content":{"3":{"position":[[1216,5]]}},"keywords":{}}],["debug",{"_index":957,"title":{"68":{"position":[[0,9]]},"108":{"position":[[0,9]]},"110":{"position":[[7,5]]},"112":{"position":[[8,10]]},"115":{"position":[[7,10]]},"117":{"position":[[0,5]]},"127":{"position":[[5,9]]},"128":{"position":[[7,9]]},"256":{"position":[[0,9]]},"267":{"position":[[0,9]]},"295":{"position":[[0,9]]}},"content":{"110":{"position":[[90,5]]},"121":{"position":[[132,5]]},"135":{"position":[[136,5]]},"160":{"position":[[124,5]]},"232":{"position":[[27,5]]},"255":{"position":[[2721,5],[2736,6],[2797,6],[2845,6],[2909,6],[2964,6],[3010,6],[3038,6],[3619,5]]},"256":{"position":[[8,5],[134,5]]},"262":{"position":[[228,5],[243,6],[290,6],[363,6],[430,6]]},"263":{"position":[[307,5],[322,6],[369,6],[443,6],[517,6],[564,6]]},"264":{"position":[[268,5],[283,6],[336,6],[383,6],[430,6],[484,6],[546,6]]},"265":{"position":[[148,6],[204,6],[250,6],[287,6],[326,6]]},"266":{"position":[[141,6],[198,6]]},"267":{"position":[[6,9],[791,5]]},"296":{"position":[[10,5]]}},"keywords":{}}],["debug"",{"_index":1309,"title":{},"content":{"113":{"position":[[333,13]]}},"keywords":{}}],["debugg",{"_index":1401,"title":{},"content":{"128":{"position":[[94,8]]}},"keywords":{}}],["debuggingsetup",{"_index":696,"title":{},"content":{"48":{"position":[[141,14]]}},"keywords":{}}],["debuggingtest",{"_index":1423,"title":{},"content":{"131":{"position":[[343,16]]}},"keywords":{}}],["debugpi",{"_index":1398,"title":{"128":{"position":[[22,8]]}},"content":{"128":{"position":[[34,7]]}},"keywords":{}}],["debugpy.listen(5678",{"_index":1399,"title":{},"content":{"128":{"position":[[42,20]]}},"keywords":{}}],["debugpy.wait_for_cli",{"_index":1405,"title":{},"content":{"128":{"position":[[130,25]]}},"keywords":{}}],["decid",{"_index":1896,"title":{},"content":{"191":{"position":[[49,6]]},"243":{"position":[[546,7]]},"246":{"position":[[1056,6]]}},"keywords":{}}],["decis",{"_index":2088,"title":{},"content":{"235":{"position":[[64,9]]},"239":{"position":[[1605,8]]},"252":{"position":[[659,10]]}},"keywords":{}}],["decline)mov",{"_index":2517,"title":{},"content":{"255":{"position":[[3219,14]]}},"keywords":{}}],["decor",{"_index":1933,"title":{"200":{"position":[[7,10]]}},"content":{},"keywords":{}}],["decoupl",{"_index":2886,"title":{},"content":{"281":{"position":[[1062,9]]}},"keywords":{}}],["def",{"_index":224,"title":{},"content":{"17":{"position":[[65,3]]},"51":{"position":[[727,3],[939,3]]},"55":{"position":[[449,3]]},"56":{"position":[[1014,3]]},"114":{"position":[[50,3],[250,3]]},"118":{"position":[[26,3],[221,3]]},"200":{"position":[[71,3],[112,3],[351,3]]},"204":{"position":[[274,3],[592,3],[651,3],[783,3]]},"205":{"position":[[40,3]]},"209":{"position":[[48,3],[262,3],[322,3]]},"213":{"position":[[33,3]]},"218":{"position":[[50,3]]},"219":{"position":[[32,3]]},"221":{"position":[[15,3]]},"243":{"position":[[1105,3]]},"255":{"position":[[72,3],[262,3],[464,3],[531,3]]},"278":{"position":[[474,3]]},"279":{"position":[[598,3]]},"280":{"position":[[239,3]]},"281":{"position":[[442,3],[689,3],[765,3],[868,3]]},"288":{"position":[[47,3]]}},"keywords":{}}],["def5678](link",{"_index":1868,"title":{},"content":{"181":{"position":[[183,15]]}},"keywords":{}}],["default",{"_index":1275,"title":{"246":{"position":[[25,9]]}},"content":{"110":{"position":[[37,8]]},"239":{"position":[[746,8],[1030,9]]},"245":{"position":[[333,8]]},"246":{"position":[[45,8],[420,9],[1081,9],[2061,8],[2247,9],[2394,9],[2407,8],[2537,8],[2708,8]]},"256":{"position":[[53,8]]},"259":{"position":[[302,7]]},"269":{"position":[[303,8]]}},"keywords":{}}],["default_best_price_flex",{"_index":2254,"title":{},"content":{"245":{"position":[[263,23]]}},"keywords":{}}],["default_best_price_min_distance_from_avg",{"_index":2263,"title":{},"content":{"245":{"position":[[700,40]]}},"keywords":{}}],["default_best_price_min_period_length",{"_index":2261,"title":{},"content":{"245":{"position":[[590,36]]}},"keywords":{}}],["default_peak_price_flex",{"_index":2255,"title":{},"content":{"245":{"position":[[351,23]]}},"keywords":{}}],["default_peak_price_min_distance_from_avg",{"_index":2264,"title":{},"content":{"245":{"position":[[767,40]]}},"keywords":{}}],["default_peak_price_min_period_length",{"_index":2262,"title":{},"content":{"245":{"position":[[645,36]]}},"keywords":{}}],["default_relaxation_attempts_best",{"_index":2257,"title":{},"content":{"245":{"position":[[422,32]]}},"keywords":{}}],["default_relaxation_attempts_peak",{"_index":2260,"title":{},"content":{"245":{"position":[[506,32]]}},"keywords":{}}],["defaults80",{"_index":1122,"title":{},"content":{"86":{"position":[[159,11]]}},"keywords":{}}],["defaultslearn",{"_index":2645,"title":{},"content":{"272":{"position":[[1074,13]]}},"keywords":{}}],["defeat",{"_index":2170,"title":{},"content":{"241":{"position":[[596,7]]}},"keywords":{}}],["defin",{"_index":1604,"title":{},"content":{"148":{"position":[[43,7]]},"245":{"position":[[1,7],[241,7]]}},"keywords":{}}],["definitions.pi",{"_index":1507,"title":{},"content":{"136":{"position":[[390,14]]}},"keywords":{}}],["degrad",{"_index":2379,"title":{},"content":{"248":{"position":[[577,8]]}},"keywords":{}}],["delay",{"_index":634,"title":{},"content":{"42":{"position":[[589,7]]},"278":{"position":[[1188,5]]},"279":{"position":[[1518,6]]},"287":{"position":[[438,5]]},"299":{"position":[[281,5]]}},"keywords":{}}],["deleg",{"_index":516,"title":{},"content":{"37":{"position":[[201,9]]}},"keywords":{}}],["delet",{"_index":1070,"title":{},"content":{"79":{"position":[[142,7]]},"174":{"position":[[306,6]]}},"keywords":{}}],["deleteif",{"_index":1617,"title":{},"content":{"149":{"position":[[308,8]]}},"keywords":{}}],["deliveri",{"_index":2745,"title":{},"content":{"273":{"position":[[3562,8],[3657,8]]}},"keywords":{}}],["demand",{"_index":481,"title":{},"content":{"34":{"position":[[87,7]]},"57":{"position":[[879,6]]},"273":{"position":[[3773,6]]}},"keywords":{}}],["den",{"_index":2911,"title":{},"content":{"286":{"position":[[32,3]]}},"keywords":{}}],["depend",{"_index":863,"title":{},"content":{"56":{"position":[[1528,8]]},"120":{"position":[[146,10]]},"133":{"position":[[1085,7]]},"146":{"position":[[488,12]]},"279":{"position":[[1686,6]]}},"keywords":{}}],["dependenciesarchitectur",{"_index":1416,"title":{},"content":{"131":{"position":[[46,24]]}},"keywords":{}}],["dependenciesdevelop",{"_index":1490,"title":{},"content":{"135":{"position":[[90,19]]}},"keywords":{}}],["dependenciesruff",{"_index":2083,"title":{},"content":{"231":{"position":[[149,16]]}},"keywords":{}}],["describ",{"_index":290,"title":{},"content":{"21":{"position":[[348,8]]},"169":{"position":[[92,8]]}},"keywords":{}}],["descript",{"_index":194,"title":{"31":{"position":[[5,12]]}},"content":{"14":{"position":[[78,11]]},"21":{"position":[[15,11],[43,11],[86,11]]},"40":{"position":[[143,13]]},"52":{"position":[[149,13],[345,13],[376,12],[689,11]]},"62":{"position":[[343,13]]},"134":{"position":[[470,11]]},"136":{"position":[[414,12],[927,14]]},"181":{"position":[[102,11],[171,11],[244,11],[333,11],[400,11]]},"196":{"position":[[104,11],[228,12],[367,13]]}},"keywords":{}}],["design",{"_index":989,"title":{},"content":{"73":{"position":[[99,7]]},"235":{"position":[[57,6]]},"239":{"position":[[1598,6]]},"246":{"position":[[2008,6]]},"252":{"position":[[652,6]]},"273":{"position":[[1534,6],[4980,6]]},"300":{"position":[[31,7]]}},"keywords":{}}],["designdebug",{"_index":2065,"title":{},"content":{"222":{"position":[[249,15]]}},"keywords":{}}],["desktop",{"_index":163,"title":{},"content":{"11":{"position":[[51,7]]}},"keywords":{}}],["despit",{"_index":2751,"title":{},"content":{"273":{"position":[[3757,7]]}},"keywords":{}}],["detail",{"_index":482,"title":{"170":{"position":[[7,8]]}},"content":{"34":{"position":[[100,8]]},"48":{"position":[[102,8]]},"122":{"position":[[8,8]]},"132":{"position":[[122,8]]},"140":{"position":[[25,8]]},"143":{"position":[[31,8]]},"146":{"position":[[747,8]]},"165":{"position":[[66,8]]},"170":{"position":[[4,8],[244,9]]},"174":{"position":[[492,8]]},"196":{"position":[[95,8]]},"233":{"position":[[163,8]]},"239":{"position":[[166,8]]},"255":{"position":[[800,8]]},"279":{"position":[[1381,7]]}},"keywords":{}}],["detect",{"_index":1082,"title":{},"content":{"80":{"position":[[227,9]]},"111":{"position":[[242,9]]},"176":{"position":[[400,7],[778,7]]},"179":{"position":[[96,10]]},"180":{"position":[[246,6]]},"185":{"position":[[418,7]]},"236":{"position":[[8,9]]},"243":{"position":[[1593,9]]},"245":{"position":[[108,9],[214,9],[411,10]]},"246":{"position":[[1997,9]]},"247":{"position":[[125,9]]},"248":{"position":[[567,9]]},"255":{"position":[[683,6],[1791,10],[1802,7],[2178,9],[2249,9],[2779,9]]},"256":{"position":[[445,9]]},"264":{"position":[[298,9]]},"267":{"position":[[830,9]]},"273":{"position":[[3870,6]]},"296":{"position":[[244,8]]},"297":{"position":[[132,8]]}},"keywords":{}}],["detected"",{"_index":2613,"title":{},"content":{"267":{"position":[[1045,14]]}},"keywords":{}}],["detectednew",{"_index":884,"title":{},"content":{"57":{"position":[[675,11]]}},"keywords":{}}],["detectionreason",{"_index":2305,"title":{},"content":{"246":{"position":[[1177,19]]}},"keywords":{}}],["determin",{"_index":2358,"title":{},"content":{"247":{"position":[[659,9]]}},"keywords":{}}],["deterministiceasi",{"_index":2527,"title":{},"content":{"255":{"position":[[3596,19]]}},"keywords":{}}],["dev",{"_index":2073,"title":{},"content":{"229":{"position":[[14,3]]},"255":{"position":[[2904,4]]}},"keywords":{}}],["dev)preserv",{"_index":2469,"title":{},"content":{"255":{"position":[[1323,13]]}},"keywords":{}}],["devcontain",{"_index":178,"title":{},"content":{"12":{"position":[[207,12]]},"28":{"position":[[214,12]]},"131":{"position":[[9,13]]},"134":{"position":[[38,12]]},"179":{"position":[[1075,12],[1148,12],[1461,14]]},"230":{"position":[[146,12]]},"231":{"position":[[5,12]]}},"keywords":{}}],["develop",{"_index":183,"title":{"13":{"position":[[0,11]]},"91":{"position":[[3,11]]},"130":{"position":[[0,9]]},"131":{"position":[[3,9]]},"133":{"position":[[12,12]]},"135":{"position":[[4,11]]},"163":{"position":[[20,12]]},"228":{"position":[[0,11]]},"231":{"position":[[0,11]]}},"content":{"48":{"position":[[164,11],[318,11]]},"73":{"position":[[154,11]]},"121":{"position":[[32,9]]},"129":{"position":[[203,11]]},"133":{"position":[[21,9],[666,11],[756,11]]},"134":{"position":[[177,11]]},"135":{"position":[[398,11]]},"141":{"position":[[91,11]]},"163":{"position":[[89,12]]},"226":{"position":[[9,11]]},"231":{"position":[[137,11]]},"235":{"position":[[258,10]]},"289":{"position":[[194,9]]},"300":{"position":[[153,11]]}},"keywords":{}}],["developersaltern",{"_index":2237,"title":{},"content":{"243":{"position":[[2043,21]]}},"keywords":{}}],["deviat",{"_index":1268,"title":{},"content":{"107":{"position":[[165,9]]},"237":{"position":[[35,7]]},"255":{"position":[[2129,11]]}},"keywords":{}}],["deviationformula",{"_index":2457,"title":{},"content":{"255":{"position":[[972,17]]}},"keywords":{}}],["deviations)toler",{"_index":2461,"title":{},"content":{"255":{"position":[[1092,20]]}},"keywords":{}}],["devic",{"_index":1172,"title":{},"content":{"94":{"position":[[615,7]]},"156":{"position":[[193,7]]}},"keywords":{}}],["devices)wrong",{"_index":2289,"title":{},"content":{"246":{"position":[[689,13]]}},"keywords":{}}],["diagnost",{"_index":2947,"title":{},"content":{"289":{"position":[[260,11]]}},"keywords":{}}],["dich",{"_index":2868,"title":{},"content":{"281":{"position":[[37,4]]}},"keywords":{}}],["dict",{"_index":663,"title":{},"content":{"43":{"position":[[906,5]]},"52":{"position":[[86,6]]},"55":{"position":[[662,4]]},"56":{"position":[[1614,4]]},"64":{"position":[[86,4]]},"65":{"position":[[98,4]]},"67":{"position":[[187,5],[254,4]]},"114":{"position":[[85,5]]},"204":{"position":[[263,5],[326,5],[632,4],[678,5]]},"205":{"position":[[79,4]]},"213":{"position":[[68,5]]},"221":{"position":[[50,5]]},"255":{"position":[[525,5],[575,5]]}},"keywords":{}}],["dict[str",{"_index":1957,"title":{},"content":{"204":{"position":[[253,9]]},"255":{"position":[[168,9]]}},"keywords":{}}],["dictionari",{"_index":709,"title":{"53":{"position":[[10,10]]}},"content":{"50":{"position":[[204,10]]}},"keywords":{}}],["didn't",{"_index":1621,"title":{},"content":{"149":{"position":[[479,6]]},"194":{"position":[[496,6]]},"246":{"position":[[2175,6]]}},"keywords":{}}],["diff",{"_index":604,"title":{},"content":{"41":{"position":[[505,4]]}},"keywords":{}}],["differ",{"_index":412,"title":{},"content":{"31":{"position":[[677,11],[957,7]]},"36":{"position":[[308,12]]},"50":{"position":[[53,9]]},"57":{"position":[[279,11]]},"62":{"position":[[140,11]]},"107":{"position":[[150,10],[228,10]]},"137":{"position":[[313,11]]},"163":{"position":[[616,9]]},"243":{"position":[[632,9]]},"246":{"position":[[35,9],[76,9],[2646,9]]},"272":{"position":[[735,9]]},"273":{"position":[[1408,9],[3058,6]]},"277":{"position":[[61,9]]},"278":{"position":[[366,9],[1112,9]]}},"keywords":{}}],["different"",{"_index":2247,"title":{},"content":{"243":{"position":[[2357,15]]}},"keywords":{}}],["diminish",{"_index":2414,"title":{},"content":{"252":{"position":[[1197,11]]},"258":{"position":[[197,11]]}},"keywords":{}}],["direct",{"_index":245,"title":{},"content":{"18":{"position":[[151,10]]},"178":{"position":[[292,6]]},"255":{"position":[[3256,10]]}},"keywords":{}}],["directly..."",{"_index":1699,"title":{},"content":{"162":{"position":[[51,17]]}},"keywords":{}}],["directlyreturn",{"_index":439,"title":{},"content":{"31":{"position":[[1286,14]]}},"keywords":{}}],["directori",{"_index":1566,"title":{"162":{"position":[[22,10]]},"165":{"position":[[9,10]]}},"content":{"145":{"position":[[32,9],[156,9]]},"174":{"position":[[104,9]]}},"keywords":{}}],["disabl",{"_index":1824,"title":{},"content":{"179":{"position":[[652,7],[1030,9]]},"180":{"position":[[382,8]]},"252":{"position":[[1329,7],[1978,9]]},"253":{"position":[[84,10]]},"273":{"position":[[443,7]]}},"keywords":{}}],["discard",{"_index":1689,"title":{},"content":{"159":{"position":[[225,7]]}},"keywords":{}}],["disconnect",{"_index":1674,"title":{},"content":{"157":{"position":[[208,11]]}},"keywords":{}}],["discov",{"_index":1473,"title":{},"content":{"133":{"position":[[1162,11]]},"171":{"position":[[70,9]]},"272":{"position":[[1206,8]]}},"keywords":{}}],["discoveredtrack",{"_index":1607,"title":{},"content":{"148":{"position":[[119,15]]}},"keywords":{}}],["discussiondiscuss",{"_index":362,"title":{},"content":{"28":{"position":[[67,21]]}},"keywords":{}}],["dishwash",{"_index":2271,"title":{},"content":{"246":{"position":[[243,12]]},"272":{"position":[[1839,11]]}},"keywords":{}}],["disjoint",{"_index":1092,"title":{},"content":{"81":{"position":[[181,8]]}},"keywords":{}}],["display",{"_index":1236,"title":{},"content":{"104":{"position":[[81,9],[124,9],[166,9]]},"239":{"position":[[376,7],[906,7],[1077,7]]},"277":{"position":[[472,9]]}},"keywords":{}}],["distanc",{"_index":1377,"title":{"237":{"position":[[22,8]]},"238":{"position":[[7,8],[23,9]]},"260":{"position":[[37,9]]}},"content":{"122":{"position":[[284,8]]},"235":{"position":[[192,8],[465,8]]},"238":{"position":[[440,9]]},"239":{"position":[[1249,9]]},"241":{"position":[[246,8],[379,9]]},"243":{"position":[[530,8],[1754,8]]},"245":{"position":[[758,8],[825,8]]},"255":{"position":[[192,8]]},"256":{"position":[[493,8]]},"260":{"position":[[86,8]]},"263":{"position":[[492,8]]},"267":{"position":[[111,9],[202,8]]},"270":{"position":[[81,8]]},"273":{"position":[[521,8]]}},"keywords":{}}],["distinct",{"_index":703,"title":{},"content":{"50":{"position":[[24,8]]}},"keywords":{}}],["distribut",{"_index":2633,"title":{"287":{"position":[[15,12]]}},"content":{"270":{"position":[[163,13]]},"272":{"position":[[1735,12]]},"273":{"position":[[934,12],[1202,11]]},"278":{"position":[[1057,13]]},"287":{"position":[[388,12]]},"290":{"position":[[179,12]]},"301":{"position":[[285,12]]}},"keywords":{}}],["distributionransac",{"_index":2533,"title":{},"content":{"255":{"position":[[3847,18]]}},"keywords":{}}],["distributiontomorrow",{"_index":2801,"title":{},"content":{"278":{"position":[[1138,20]]}},"keywords":{}}],["doc",{"_index":357,"title":{},"content":{"27":{"position":[[132,4]]},"139":{"position":[[13,4],[44,4],[142,4]]},"161":{"position":[[48,5]]},"162":{"position":[[45,5],[239,5]]},"289":{"position":[[67,5]]}},"keywords":{}}],["docs/)arch",{"_index":1772,"title":{},"content":{"174":{"position":[[289,13]]}},"keywords":{}}],["docs/develop",{"_index":1613,"title":{},"content":{"149":{"position":[[154,17]]},"150":{"position":[[429,17]]},"163":{"position":[[465,18]]}},"keywords":{}}],["docs/development/)defin",{"_index":1635,"title":{},"content":{"150":{"position":[[283,25]]}},"keywords":{}}],["docs/development/ai",{"_index":1539,"title":{},"content":{"139":{"position":[[55,19]]}},"keywords":{}}],["docs/development/if",{"_index":1610,"title":{},"content":{"149":{"position":[[22,19]]}},"keywords":{}}],["docs/development/mi",{"_index":1614,"title":{},"content":{"149":{"position":[[180,19]]}},"keywords":{}}],["docs/development/modul",{"_index":1719,"title":{},"content":{"166":{"position":[[1,23]]},"174":{"position":[[515,23]]}},"keywords":{}}],["docs/user/develop",{"_index":1538,"title":{},"content":{"139":{"position":[[24,19]]}},"keywords":{}}],["docs/user/period",{"_index":2774,"title":{},"content":{"273":{"position":[[5058,16]]}},"keywords":{}}],["docstr",{"_index":1665,"title":{},"content":{"154":{"position":[[331,10]]}},"keywords":{}}],["document",{"_index":97,"title":{"48":{"position":[[8,14]]},"73":{"position":[[8,14]]},"130":{"position":[[10,13]]},"132":{"position":[[6,14]]},"139":{"position":[[3,13]]},"145":{"position":[[21,9]]},"154":{"position":[[14,14]]},"161":{"position":[[19,14]]},"300":{"position":[[8,14]]}},"content":{"3":{"position":[[1296,8]]},"14":{"position":[[155,13]]},"18":{"position":[[555,13]]},"22":{"position":[[167,13]]},"132":{"position":[[21,13]]},"133":{"position":[[495,13],[850,13]]},"141":{"position":[[70,13],[138,14]]},"146":{"position":[[16,8]]},"150":{"position":[[723,10]]},"161":{"position":[[129,14]]},"171":{"position":[[30,9],[51,10],[248,8]]},"173":{"position":[[232,13]]},"174":{"position":[[246,13]]},"181":{"position":[[217,13]]},"235":{"position":[[6,8]]},"273":{"position":[[5043,14]]},"274":{"position":[[6,14]]},"275":{"position":[[21,13]]}},"keywords":{}}],["documentationgraphql",{"_index":1271,"title":{},"content":{"107":{"position":[[340,20]]}},"keywords":{}}],["documentationplanning/*.md",{"_index":1718,"title":{},"content":{"165":{"position":[[84,26]]}},"keywords":{}}],["documentationrefactor",{"_index":258,"title":{},"content":{"18":{"position":[[357,22]]},"133":{"position":[[283,25]]}},"keywords":{}}],["documented)debug",{"_index":954,"title":{},"content":{"67":{"position":[[950,21]]}},"keywords":{}}],["doesn't",{"_index":1683,"title":{},"content":{"159":{"position":[[123,7]]},"194":{"position":[[167,7]]},"252":{"position":[[1238,7]]},"279":{"position":[[1944,7]]}},"keywords":{}}],["domin",{"_index":2168,"title":{},"content":{"241":{"position":[[530,8]]},"242":{"position":[[325,9]]},"243":{"position":[[497,9]]},"260":{"position":[[102,10]]},"263":{"position":[[508,8]]},"264":{"position":[[536,9]]}},"keywords":{}}],["don't",{"_index":336,"title":{},"content":{"26":{"position":[[1,5]]},"148":{"position":[[84,6]]},"150":{"position":[[555,6]]},"207":{"position":[[236,5]]},"253":{"position":[[145,6]]}},"keywords":{}}],["done",{"_index":1703,"title":{},"content":{"162":{"position":[[255,5]]},"173":{"position":[[306,5]]},"184":{"position":[[187,5]]},"278":{"position":[[1517,4]]},"279":{"position":[[802,4]]},"284":{"position":[[503,4]]}},"keywords":{}}],["doubl",{"_index":636,"title":{},"content":{"42":{"position":[[606,6]]},"279":{"position":[[1628,6]]},"284":{"position":[[601,6]]},"299":{"position":[[135,6]]}},"keywords":{}}],["down",{"_index":928,"title":{},"content":{"64":{"position":[[293,5]]}},"keywords":{}}],["download",{"_index":1846,"title":{},"content":{"179":{"position":[[1648,8]]}},"keywords":{}}],["draft",{"_index":1598,"title":{},"content":{"147":{"position":[[34,5]]},"162":{"position":[[104,5]]}},"keywords":{}}],["draftsplanning/readme.md",{"_index":1717,"title":{},"content":{"165":{"position":[[39,24]]}},"keywords":{}}],["drop",{"_index":1411,"title":{},"content":{"129":{"position":[[102,5]]}},"keywords":{}}],["dt",{"_index":129,"title":{},"content":{"6":{"position":[[77,2]]}},"keywords":{}}],["dt_util",{"_index":127,"title":{},"content":{"6":{"position":[[12,7],[83,7]]}},"keywords":{}}],["dt_util.as_local(price_tim",{"_index":132,"title":{},"content":{"6":{"position":[[151,28]]}},"keywords":{}}],["dt_util.now",{"_index":137,"title":{},"content":{"6":{"position":[[211,13]]}},"keywords":{}}],["dt_util.parse_datetime(starts_at",{"_index":131,"title":{},"content":{"6":{"position":[[104,33]]}},"keywords":{}}],["dual",{"_index":576,"title":{"40":{"position":[[3,4]]}},"content":{"137":{"position":[[405,4]]}},"keywords":{}}],["duplic",{"_index":358,"title":{"190":{"position":[[6,9]]}},"content":{"27":{"position":[[198,11]]},"43":{"position":[[1031,11]]},"77":{"position":[[1751,9]]},"81":{"position":[[329,9]]}},"keywords":{}}],["durat",{"_index":1380,"title":{},"content":{"124":{"position":[[71,8],[157,9]]},"200":{"position":[[201,8],[297,8]]},"218":{"position":[[267,8],[313,8]]},"246":{"position":[[1570,8]]},"269":{"position":[[390,8]]},"272":{"position":[[1666,8]]}},"keywords":{}}],["duration:.3f}s"",{"_index":2043,"title":{},"content":{"218":{"position":[[349,21]]}},"keywords":{}}],["durationreject",{"_index":2772,"title":{},"content":{"273":{"position":[[4891,17]]}},"keywords":{}}],["dure",{"_index":768,"title":{"171":{"position":[[28,6]]}},"content":{"52":{"position":[[443,6]]},"56":{"position":[[1314,6]]},"67":{"position":[[665,6],[768,6]]},"133":{"position":[[353,6]]},"150":{"position":[[734,6]]},"163":{"position":[[356,6]]},"246":{"position":[[1527,6]]},"255":{"position":[[3491,6]]},"259":{"position":[[214,6]]}},"keywords":{}}],["dynam",{"_index":2179,"title":{"243":{"position":[[10,7]]}},"content":{"243":{"position":[[1174,7]]}},"keywords":{}}],["e.g",{"_index":72,"title":{},"content":{"3":{"position":[[650,6]]},"43":{"position":[[740,6]]},"103":{"position":[[206,5]]},"252":{"position":[[1592,6]]},"273":{"position":[[2157,6]]},"279":{"position":[[1725,6],[1832,6]]}},"keywords":{}}],["each",{"_index":105,"title":{"156":{"position":[[6,4]]}},"content":{"3":{"position":[[1425,4]]},"34":{"position":[[45,4]]},"37":{"position":[[1220,4]]},"43":{"position":[[584,4],[1207,4]]},"56":{"position":[[633,4]]},"77":{"position":[[443,4]]},"148":{"position":[[73,4]]},"150":{"position":[[382,4]]},"152":{"position":[[61,4]]},"153":{"position":[[1,4]]},"160":{"position":[[199,4]]},"174":{"position":[[176,4]]},"246":{"position":[[2618,4]]},"251":{"position":[[1,4]]},"256":{"position":[[260,4]]},"273":{"position":[[1552,4],[2180,4]]},"278":{"position":[[343,5],[1072,4]]}},"keywords":{}}],["earli",{"_index":1649,"title":{},"content":{"152":{"position":[[85,7]]},"162":{"position":[[170,6]]},"246":{"position":[[1212,5]]},"253":{"position":[[96,5]]},"267":{"position":[[445,5]]},"278":{"position":[[776,5]]}},"keywords":{}}],["earlier",{"_index":2304,"title":{},"content":{"246":{"position":[[1169,7]]}},"keywords":{}}],["earlytim",{"_index":2809,"title":{},"content":{"278":{"position":[[1477,10]]}},"keywords":{}}],["easi",{"_index":1128,"title":{},"content":{"86":{"position":[[404,4]]},"182":{"position":[[215,5]]}},"keywords":{}}],["easier",{"_index":1763,"title":{},"content":{"173":{"position":[[203,6]]},"174":{"position":[[419,6]]},"273":{"position":[[830,6]]}},"keywords":{}}],["easiest",{"_index":1795,"title":{"178":{"position":[[20,10]]}},"content":{},"keywords":{}}],["econom",{"_index":2761,"title":{},"content":{"273":{"position":[[4320,12]]}},"keywords":{}}],["edg",{"_index":319,"title":{},"content":{"25":{"position":[[91,4]]},"133":{"position":[[982,4]]},"273":{"position":[[487,4]]}},"keywords":{}}],["edit",{"_index":206,"title":{},"content":{"15":{"position":[[1,4]]},"176":{"position":[[554,4]]}},"keywords":{}}],["effect",{"_index":2147,"title":{},"content":{"239":{"position":[[1147,7]]},"262":{"position":[[200,9]]}},"keywords":{}}],["effectiveness."",{"_index":2430,"title":{},"content":{"252":{"position":[[2199,21]]}},"keywords":{}}],["effects)if",{"_index":2808,"title":{},"content":{"278":{"position":[[1415,10]]}},"keywords":{}}],["effici",{"_index":2001,"title":{"210":{"position":[[0,9]]}},"content":{},"keywords":{}}],["efficientlyent",{"_index":2888,"title":{},"content":{"281":{"position":[[1136,19]]}},"keywords":{}}],["egg",{"_index":1492,"title":{},"content":{"135":{"position":[[160,4]]}},"keywords":{}}],["eigentlich",{"_index":2869,"title":{},"content":{"281":{"position":[[42,10]]}},"keywords":{}}],["electr",{"_index":2738,"title":{},"content":{"273":{"position":[[3438,11]]}},"keywords":{}}],["elif",{"_index":2428,"title":{},"content":{"252":{"position":[[2026,4]]},"272":{"position":[[300,4]]}},"keywords":{}}],["elimin",{"_index":692,"title":{},"content":{"47":{"position":[[110,11]]},"55":{"position":[[903,10]]},"57":{"position":[[920,11]]},"272":{"position":[[479,10]]}},"keywords":{}}],["emb",{"_index":1410,"title":{},"content":{"129":{"position":[[86,5],[92,7]]}},"keywords":{}}],["emoji",{"_index":1866,"title":{},"content":{"181":{"position":[[51,5]]}},"keywords":{}}],["en",{"_index":1531,"title":{},"content":{"137":{"position":[[528,3]]}},"keywords":{}}],["enabl",{"_index":755,"title":{"110":{"position":[[0,6]]}},"content":{"51":{"position":[[1369,7]]},"52":{"position":[[947,7]]},"122":{"position":[[1,6]]},"150":{"position":[[655,7]]},"152":{"position":[[39,7]]},"245":{"position":[[342,8]]},"247":{"position":[[475,8]]},"248":{"position":[[17,7]]},"256":{"position":[[1,6]]},"296":{"position":[[3,6]]}},"keywords":{}}],["enable_relaxation_best",{"_index":2546,"title":{},"content":{"258":{"position":[[37,23],[278,23]]}},"keywords":{}}],["end",{"_index":376,"title":{"30":{"position":[[0,3],[7,3]]}},"content":{"141":{"position":[[103,3]]},"161":{"position":[[202,3]]}},"keywords":{}}],["endpoint",{"_index":505,"title":{"97":{"position":[[8,9]]}},"content":{"36":{"position":[[589,9]]},"212":{"position":[[187,9]]}},"keywords":{}}],["energy/moneyprefer",{"_index":2290,"title":{},"content":{"246":{"position":[[723,23]]}},"keywords":{}}],["enforc",{"_index":2347,"title":{},"content":{"247":{"position":[[44,12],[552,12]]},"252":{"position":[[628,9]]}},"keywords":{}}],["enhanc",{"_index":2481,"title":{"268":{"position":[[7,13]]},"271":{"position":[[7,13]]}},"content":{"255":{"position":[[1775,8]]}},"keywords":{}}],["enough",{"_index":1734,"title":{},"content":{"170":{"position":[[13,6]]},"246":{"position":[[471,6]]},"288":{"position":[[373,6]]}},"keywords":{}}],["enrich",{"_index":148,"title":{"8":{"position":[[11,11]]},"41":{"position":[[14,11]]},"57":{"position":[[31,10]]}},"content":{"8":{"position":[[8,6],[90,8]]},"31":{"position":[[414,10],[545,8],[577,6],[750,8],[826,8]]},"36":{"position":[[277,10]]},"38":{"position":[[68,11]]},"41":{"position":[[236,10]]},"51":{"position":[[291,8]]},"57":{"position":[[103,10],[240,8],[394,9],[494,8],[754,10]]},"62":{"position":[[110,10]]},"64":{"position":[[194,11]]},"65":{"position":[[229,7]]},"66":{"position":[[228,11]]},"67":{"position":[[452,10]]},"86":{"position":[[331,8]]},"107":{"position":[[17,8],[284,10]]},"136":{"position":[[194,10]]},"137":{"position":[[191,11],[220,8]]},"206":{"position":[[104,8]]}},"keywords":{}}],["enrich_intervals_bulk(interv",{"_index":1981,"title":{},"content":{"206":{"position":[[210,32]]}},"keywords":{}}],["enrich_price_info_with_differ",{"_index":151,"title":{},"content":{"8":{"position":[[55,34],[101,35]]}},"keywords":{}}],["enrich_single_interval(interv",{"_index":1979,"title":{},"content":{"206":{"position":[[115,32]]}},"keywords":{}}],["enrichment)midnight",{"_index":883,"title":{},"content":{"57":{"position":[[646,19]]}},"keywords":{}}],["ensur",{"_index":964,"title":{},"content":{"69":{"position":[[180,6]]},"133":{"position":[[1300,6]]},"238":{"position":[[10,6]]},"243":{"position":[[598,7]]},"246":{"position":[[448,7]]},"248":{"position":[[133,7]]},"250":{"position":[[1,6]]},"263":{"position":[[183,7]]}},"keywords":{}}],["enter",{"_index":2384,"title":{},"content":{"251":{"position":[[112,5]]},"252":{"position":[[1188,8]]}},"keywords":{}}],["entir",{"_index":1732,"title":{},"content":{"169":{"position":[[105,6]]},"247":{"position":[[172,6],[312,7]]},"263":{"position":[[269,6]]}},"keywords":{}}],["entiti",{"_index":57,"title":{},"content":{"3":{"position":[[447,6]]},"31":{"position":[[78,6],[1030,6]]},"36":{"position":[[433,8]]},"37":{"position":[[170,6]]},"38":{"position":[[171,6]]},"40":{"position":[[71,6]]},"43":{"position":[[440,6],[916,6]]},"52":{"position":[[142,6],[275,6],[338,6],[818,6],[895,8]]},"62":{"position":[[335,7]]},"64":{"position":[[235,6]]},"65":{"position":[[253,6]]},"66":{"position":[[255,6]]},"75":{"position":[[211,6]]},"77":{"position":[[488,6],[525,8]]},"80":{"position":[[294,8]]},"81":{"position":[[104,6],[155,6]]},"136":{"position":[[407,6],[582,6]]},"137":{"position":[[80,6]]},"154":{"position":[[522,8]]},"156":{"position":[[246,8],[332,6]]},"157":{"position":[[40,8]]},"173":{"position":[[136,8]]},"277":{"position":[[230,6],[431,6]]},"278":{"position":[[724,8]]},"279":{"position":[[202,6],[416,8],[899,8],[1025,8],[1651,8],[1871,8],[2047,6]]},"280":{"position":[[327,8],[459,8],[659,8]]},"281":{"position":[[281,8],[354,6],[1019,6],[1089,6],[1127,8]]},"283":{"position":[[54,8],[92,8],[308,8],[322,8],[403,8],[417,8]]},"284":{"position":[[361,8]]},"285":{"position":[[84,8],[265,8],[404,8],[505,7]]},"290":{"position":[[13,6]]},"293":{"position":[[145,6]]},"297":{"position":[[59,8]]},"301":{"position":[[141,6],[613,8]]}},"keywords":{}}],["entities"",{"_index":2973,"title":{},"content":{"298":{"position":[[58,14]]}},"keywords":{}}],["entities)no",{"_index":2957,"title":{},"content":{"293":{"position":[[70,11]]},"294":{"position":[[68,11]]}},"keywords":{}}],["entity'",{"_index":2876,"title":{},"content":{"281":{"position":[[489,8]]}},"keywords":{}}],["entity_util",{"_index":574,"title":{},"content":{"38":{"position":[[184,13]]},"136":{"position":[[559,13]]}},"keywords":{}}],["entri",{"_index":475,"title":{},"content":{"33":{"position":[[546,5]]},"77":{"position":[[1461,5]]},"79":{"position":[[160,5]]},"89":{"position":[[142,5]]},"92":{"position":[[184,5]]},"235":{"position":[[396,5]]},"255":{"position":[[20,5]]}},"keywords":{}}],["entry.add_update_listen",{"_index":1049,"title":{},"content":{"77":{"position":[[1629,27]]}},"keywords":{}}],["entry.async_on_unload(entry.add_update_listener(handl",{"_index":1053,"title":{},"content":{"77":{"position":[[1777,57]]}},"keywords":{}}],["environ",{"_index":697,"title":{"231":{"position":[[12,12]]}},"content":{"48":{"position":[[176,11]]},"131":{"position":[[23,11]]},"134":{"position":[[189,12]]},"226":{"position":[[21,11]]}},"keywords":{}}],["environmentarchitectur",{"_index":1415,"title":{},"content":{"129":{"position":[[215,23]]}},"keywords":{}}],["environmentcod",{"_index":1456,"title":{},"content":{"133":{"position":[[678,15]]}},"keywords":{}}],["epex",{"_index":2739,"title":{},"content":{"273":{"position":[[3458,5]]}},"keywords":{}}],["er",{"_index":2916,"title":{},"content":{"286":{"position":[[74,2]]}},"keywords":{}}],["error",{"_index":491,"title":{"105":{"position":[[0,5]]},"106":{"position":[[7,5]]}},"content":{"36":{"position":[[88,5]]},"86":{"position":[[211,6]]},"111":{"position":[[570,7]]},"120":{"position":[[91,5]]},"133":{"position":[[263,5]]},"156":{"position":[[135,6],[316,6]]},"157":{"position":[[193,5]]},"173":{"position":[[124,7]]},"194":{"position":[[32,6]]},"224":{"position":[[369,6]]},"239":{"position":[[1300,5]]}},"keywords":{}}],["errorsconfigentrynotreadi",{"_index":1263,"title":{},"content":{"106":{"position":[[622,25]]}},"keywords":{}}],["escal",{"_index":2403,"title":{},"content":{"252":{"position":[[707,10],[1554,10],[1741,10]]}},"keywords":{}}],["essenti",{"_index":1153,"title":{},"content":{"92":{"position":[[5,9]]},"216":{"position":[[190,9]]}},"keywords":{}}],["estim",{"_index":1666,"title":{},"content":{"154":{"position":[[371,11]]}},"keywords":{}}],["etc",{"_index":654,"title":{},"content":{"43":{"position":[[541,5]]},"52":{"position":[[175,4]]},"62":{"position":[[152,5]]},"180":{"position":[[120,5]]},"279":{"position":[[1059,5]]}},"keywords":{}}],["etc.complex",{"_index":659,"title":{},"content":{"43":{"position":[[713,11]]}},"keywords":{}}],["etc.sourc",{"_index":2133,"title":{},"content":{"239":{"position":[[677,11]]}},"keywords":{}}],["eur",{"_index":1234,"title":{},"content":{"104":{"position":[[68,3]]}},"keywords":{}}],["eur)startsat",{"_index":1223,"title":{},"content":{"103":{"position":[[212,13]]}},"keywords":{}}],["euro",{"_index":1235,"title":{},"content":{"104":{"position":[[72,6]]}},"keywords":{}}],["ev",{"_index":2273,"title":{},"content":{"246":{"position":[[262,2]]},"269":{"position":[[450,3]]},"272":{"position":[[1808,3]]}},"keywords":{}}],["evalu",{"_index":434,"title":{},"content":{"31":{"position":[[1153,8]]},"273":{"position":[[1569,9],[2117,11],[2737,9],[2891,9],[4527,10],[4954,10]]}},"keywords":{}}],["even",{"_index":1038,"title":{},"content":{"77":{"position":[[1104,4]]},"241":{"position":[[444,4]]},"246":{"position":[[955,5],[1218,5]]},"250":{"position":[[42,4]]},"255":{"position":[[3211,7]]},"267":{"position":[[980,4]]},"273":{"position":[[1091,7]]}},"keywords":{}}],["evenli",{"_index":2937,"title":{},"content":{"287":{"position":[[488,7]]}},"keywords":{}}],["event",{"_index":778,"title":{},"content":{"52":{"position":[[929,5]]},"62":{"position":[[721,5]]},"83":{"position":[[255,5]]},"207":{"position":[[248,5]]}},"keywords":{}}],["everyon",{"_index":2925,"title":{},"content":{"287":{"position":[[51,8],[103,8]]}},"keywords":{}}],["everyth",{"_index":181,"title":{},"content":{"12":{"position":[[232,10]]}},"keywords":{}}],["everything..."",{"_index":1692,"title":{},"content":{"160":{"position":[[46,19]]}},"keywords":{}}],["evid",{"_index":2689,"title":{},"content":{"273":{"position":[[855,8]]}},"keywords":{}}],["exact",{"_index":618,"title":{},"content":{"42":{"position":[[264,5]]},"170":{"position":[[255,5]]},"279":{"position":[[1960,5]]},"290":{"position":[[37,5],[102,5]]},"293":{"position":[[24,6]]}},"keywords":{}}],["exampl",{"_index":1542,"title":{"150":{"position":[[11,8]]},"154":{"position":[[0,7]]},"166":{"position":[[0,7]]}},"content":{"139":{"position":[[111,8]]},"145":{"position":[[79,8]]},"150":{"position":[[60,8]]},"237":{"position":[[306,7]]},"238":{"position":[[393,7]]},"246":{"position":[[1657,7]]},"253":{"position":[[183,7]]},"255":{"position":[[2713,7]]},"273":{"position":[[89,8],[633,8],[1011,8],[2257,7]]}},"keywords":{}}],["examplebrows",{"_index":1777,"title":{},"content":{"174":{"position":[[566,13]]}},"keywords":{}}],["exce",{"_index":2357,"title":{},"content":{"247":{"position":[[388,7]]}},"keywords":{}}],["exceed",{"_index":1251,"title":{},"content":{"106":{"position":[[181,9]]}},"keywords":{}}],["excellent)tempor",{"_index":2657,"title":{},"content":{"272":{"position":[[1716,18]]}},"keywords":{}}],["except",{"_index":54,"title":{},"content":{"3":{"position":[[410,9]]},"83":{"position":[[304,10]]}},"keywords":{}}],["exclud",{"_index":1789,"title":{},"content":{"176":{"position":[[448,10]]},"192":{"position":[[29,7]]},"246":{"position":[[1928,7]]}},"keywords":{}}],["exclus",{"_index":878,"title":{},"content":{"57":{"position":[[332,11]]}},"keywords":{}}],["execut",{"_index":918,"title":{"124":{"position":[[5,10]]}},"content":{"62":{"position":[[767,9]]},"71":{"position":[[73,9]]},"131":{"position":[[559,7]]},"170":{"position":[[23,7]]}},"keywords":{}}],["executed?do",{"_index":962,"title":{},"content":{"69":{"position":[[127,13]]}},"keywords":{}}],["exhaust",{"_index":1008,"title":{"266":{"position":[[23,10]]}},"content":{"75":{"position":[[390,9]]},"251":{"position":[[219,9]]},"266":{"position":[[308,10]]}},"keywords":{}}],["exist",{"_index":93,"title":{},"content":{"3":{"position":[[1228,8]]},"25":{"position":[[136,8]]},"72":{"position":[[71,5]]},"173":{"position":[[172,9]]},"186":{"position":[[365,7]]},"190":{"position":[[29,6],[84,6]]},"194":{"position":[[583,6]]},"224":{"position":[[229,7]]},"284":{"position":[[524,8]]},"292":{"position":[[81,8]]}},"keywords":{}}],["exists"",{"_index":1902,"title":{},"content":{"194":{"position":[[19,12]]}},"keywords":{}}],["exit",{"_index":2433,"title":{},"content":{"253":{"position":[[102,5]]}},"keywords":{}}],["exp",{"_index":2684,"title":{},"content":{"273":{"position":[[691,4]]}},"keywords":{}}],["exp(10",{"_index":2686,"title":{},"content":{"273":{"position":[[771,6]]}},"keywords":{}}],["expect",{"_index":934,"title":{},"content":{"65":{"position":[[320,9]]},"66":{"position":[[297,9]]},"212":{"position":[[102,8]]},"243":{"position":[[2308,12]]},"255":{"position":[[878,8],[3462,12]]},"262":{"position":[[65,8]]},"263":{"position":[[64,8]]},"264":{"position":[[64,8]]},"265":{"position":[[54,8]]},"266":{"position":[[47,8]]}},"keywords":{}}],["expected_valu",{"_index":234,"title":{},"content":{"17":{"position":[[274,14]]}},"keywords":{}}],["expens",{"_index":819,"title":{},"content":{"56":{"position":[[85,9]]},"103":{"position":[[321,10]]},"238":{"position":[[56,9]]},"239":{"position":[[89,10]]},"246":{"position":[[864,9],[1125,9],[1247,9],[1737,9],[1866,9],[2134,9]]},"273":{"position":[[2458,9],[3209,9],[3347,9],[4486,9]]},"279":{"position":[[2070,9]]},"285":{"position":[[446,9]]}},"keywords":{}}],["expensive_calcul",{"_index":1945,"title":{},"content":{"200":{"position":[[355,24]]}},"keywords":{}}],["expensive_funct",{"_index":1379,"title":{},"content":{"124":{"position":[[50,20]]}},"keywords":{}}],["experi",{"_index":2338,"title":{},"content":{"246":{"position":[[2342,10]]},"272":{"position":[[569,10]]},"273":{"position":[[4795,10]]}},"keywords":{}}],["expir",{"_index":757,"title":{},"content":{"51":{"position":[[1407,8]]},"288":{"position":[[682,7]]}},"keywords":{}}],["expires)reduct",{"_index":676,"title":{},"content":{"45":{"position":[[99,18]]}},"keywords":{}}],["explain",{"_index":2087,"title":{},"content":{"235":{"position":[[15,8]]},"272":{"position":[[2176,7]]},"273":{"position":[[3405,8],[3711,8]]}},"keywords":{}}],["explan",{"_index":1597,"title":{},"content":{"146":{"position":[[765,12]]}},"keywords":{}}],["explanatori",{"_index":314,"title":{},"content":{"25":{"position":[[22,11]]}},"keywords":{}}],["explicit",{"_index":460,"title":{},"content":{"33":{"position":[[302,8]]},"56":{"position":[[1002,11]]},"62":{"position":[[421,8]]},"67":{"position":[[222,8]]},"272":{"position":[[801,8]]}},"keywords":{}}],["explorerget",{"_index":1272,"title":{},"content":{"107":{"position":[[361,11]]}},"keywords":{}}],["explos",{"_index":2673,"title":{},"content":{"272":{"position":[[2243,9]]}},"keywords":{}}],["exponenti",{"_index":1259,"title":{},"content":{"106":{"position":[[553,11]]},"243":{"position":[[2077,11]]},"252":{"position":[[1542,11]]},"273":{"position":[[642,11]]}},"keywords":{}}],["export",{"_index":532,"title":{},"content":{"37":{"position":[[468,6]]}},"keywords":{}}],["expos",{"_index":2149,"title":{},"content":{"239":{"position":[[1268,8],[1638,6]]}},"keywords":{}}],["extend",{"_index":583,"title":{},"content":{"40":{"position":[[134,8]]},"43":{"position":[[1127,7]]},"136":{"position":[[905,8]]},"235":{"position":[[284,9]]}},"keywords":{}}],["extended)both",{"_index":1528,"title":{},"content":{"137":{"position":[[469,14]]}},"keywords":{}}],["extens",{"_index":1441,"title":{},"content":{"133":{"position":[[36,9]]},"272":{"position":[[710,9]]},"273":{"position":[[900,9]]}},"keywords":{}}],["extensiondock",{"_index":162,"title":{},"content":{"11":{"position":[[35,15]]}},"keywords":{}}],["extern",{"_index":1270,"title":{},"content":{"107":{"position":[[308,8]]}},"keywords":{}}],["extra_state_attribut",{"_index":662,"title":{},"content":{"43":{"position":[[883,22]]}},"keywords":{}}],["extra_state_attributes(self",{"_index":1970,"title":{},"content":{"205":{"position":[[44,28]]}},"keywords":{}}],["extract",{"_index":1663,"title":{},"content":{"154":{"position":[[14,7]]},"243":{"position":[[912,8]]}},"keywords":{}}],["extrem",{"_index":2311,"title":{"264":{"position":[[12,7]]}},"content":{"246":{"position":[[1422,9]]}},"keywords":{}}],["f",{"_index":1908,"title":{},"content":{"194":{"position":[[445,1],[464,1]]}},"keywords":{}}],["f"too",{"_index":2042,"title":{},"content":{"218":{"position":[[332,10]]}},"keywords":{}}],["f"{path}_{language}"",{"_index":1961,"title":{},"content":{"204":{"position":[[344,30]]}},"keywords":{}}],["face",{"_index":1536,"title":{},"content":{"139":{"position":[[6,6]]},"273":{"position":[[3795,6]]}},"keywords":{}}],["factor",{"_index":2192,"title":{},"content":{"243":{"position":[[308,6]]},"267":{"position":[[884,6]]}},"keywords":{}}],["fail",{"_index":1287,"title":{},"content":{"111":{"position":[[629,7]]},"273":{"position":[[2802,5]]}},"keywords":{}}],["fail)result",{"_index":2165,"title":{},"content":{"241":{"position":[[405,13]]}},"keywords":{}}],["failur",{"_index":1265,"title":{},"content":{"106":{"position":[[662,8]]},"289":{"position":[[113,9]]}},"keywords":{}}],["failuresstandard",{"_index":2812,"title":{},"content":{"278":{"position":[[1636,16]]}},"keywords":{}}],["fallback",{"_index":1822,"title":{},"content":{"179":{"position":[[578,9]]},"248":{"position":[[516,8]]}},"keywords":{}}],["fals",{"_index":745,"title":{},"content":{"51":{"position":[[1102,5]]},"59":{"position":[[210,5],[352,5]]},"113":{"position":[[371,6]]},"246":{"position":[[796,6]]},"255":{"position":[[3370,5]]}},"keywords":{}}],["faq",{"_index":1726,"title":{"168":{"position":[[0,4]]}},"content":{},"keywords":{}}],["far",{"_index":2098,"title":{},"content":{"237":{"position":[[20,3]]}},"keywords":{}}],["fast",{"_index":1831,"title":{},"content":{"179":{"position":[[886,4]]},"206":{"position":[[177,4]]},"207":{"position":[[138,6]]},"231":{"position":[[93,6]]},"252":{"position":[[875,4]]},"278":{"position":[[1007,5]]},"279":{"position":[[2042,4]]},"283":{"position":[[237,5]]},"284":{"position":[[538,5]]},"288":{"position":[[553,4]]},"296":{"position":[[210,4]]}},"keywords":{}}],["faster",{"_index":687,"title":{},"content":{"46":{"position":[[243,6]]},"196":{"position":[[394,6]]}},"keywords":{}}],["feat",{"_index":255,"title":{},"content":{"18":{"position":[[316,5]]}},"keywords":{}}],["feat(scop",{"_index":1917,"title":{},"content":{"196":{"position":[[66,12]]}},"keywords":{}}],["feat(sensor",{"_index":263,"title":{},"content":{"18":{"position":[[468,14]]}},"keywords":{}}],["featur",{"_index":191,"title":{"188":{"position":[[11,9]]}},"content":{"14":{"position":[[30,7],[108,8]]},"17":{"position":[[30,9]]},"21":{"position":[[140,7]]},"28":{"position":[[30,7]]},"51":{"position":[[373,8]]},"133":{"position":[[230,8],[748,7]]},"143":{"position":[[369,8],[590,8]]},"145":{"position":[[106,7]]},"149":{"position":[[126,7],[200,7],[394,7],[550,7]]},"173":{"position":[[182,8]]},"181":{"position":[[80,8]]},"196":{"position":[[87,7]]}},"keywords":{}}],["feature."""",{"_index":227,"title":{},"content":{"17":{"position":[[139,26]]}},"keywords":{}}],["feature/your",{"_index":190,"title":{},"content":{"14":{"position":[[17,12]]}},"keywords":{}}],["featurefix",{"_index":256,"title":{},"content":{"18":{"position":[[328,11]]}},"keywords":{}}],["featuresbreak",{"_index":330,"title":{},"content":{"25":{"position":[[262,16]]}},"keywords":{}}],["featuresfix",{"_index":196,"title":{},"content":{"14":{"position":[[123,12]]}},"keywords":{}}],["fee",{"_index":1220,"title":{},"content":{"103":{"position":[[177,4]]}},"keywords":{}}],["feedback",{"_index":305,"title":{"26":{"position":[[14,9]]}},"content":{"23":{"position":[[78,8]]},"26":{"position":[[74,8]]},"133":{"position":[[1138,8]]},"246":{"position":[[2155,9]]},"272":{"position":[[915,8],[1264,8]]}},"keywords":{}}],["feedbackclassifi",{"_index":2622,"title":{},"content":{"269":{"position":[[217,16]]}},"keywords":{}}],["fetch",{"_index":383,"title":{},"content":{"31":{"position":[[147,5]]},"42":{"position":[[44,5]]},"51":{"position":[[816,5],[1338,7]]},"59":{"position":[[458,5]]},"60":{"position":[[357,5]]},"61":{"position":[[109,5]]},"64":{"position":[[46,6]]},"65":{"position":[[39,6],[69,5]]},"66":{"position":[[101,6]]},"99":{"position":[[1,7]]},"100":{"position":[[1,7]]},"111":{"position":[[82,7]]},"137":{"position":[[50,8]]},"213":{"position":[[222,5]]},"277":{"position":[[403,9]]},"278":{"position":[[433,5],[949,5]]},"280":{"position":[[346,9]]},"285":{"position":[[166,5],[366,7]]},"287":{"position":[[60,7],[112,7]]},"288":{"position":[[237,5],[330,5],[478,5],[615,5]]},"290":{"position":[[146,5]]},"292":{"position":[[118,5]]},"301":{"position":[[82,8]]}},"keywords":{}}],["fetch_price_data",{"_index":1985,"title":{},"content":{"207":{"position":[[104,18],[210,18]]}},"keywords":{}}],["fetch_user_data",{"_index":1984,"title":{},"content":{"207":{"position":[[67,17],[191,18]]}},"keywords":{}}],["few",{"_index":615,"title":{},"content":{"42":{"position":[[233,4]]}},"keywords":{}}],["fewer",{"_index":2285,"title":{},"content":{"246":{"position":[[581,6]]},"252":{"position":[[973,6]]},"280":{"position":[[954,5]]}},"keywords":{}}],["fewer/mor",{"_index":2412,"title":{},"content":{"252":{"position":[[1085,11]]}},"keywords":{}}],["field",{"_index":715,"title":{},"content":{"51":{"position":[[300,6]]},"53":{"position":[[87,7]]},"54":{"position":[[212,6]]},"103":{"position":[[137,7]]},"224":{"position":[[279,7]]}},"keywords":{}}],["fieldal",{"_index":2492,"title":{},"content":{"255":{"position":[[2376,8]]}},"keywords":{}}],["figur",{"_index":2336,"title":{},"content":{"246":{"position":[[2267,6]]}},"keywords":{}}],["file",{"_index":77,"title":{"187":{"position":[[17,6]]},"255":{"position":[[4,5]]}},"content":{"3":{"position":[[798,5],[870,4]]},"36":{"position":[[11,4]]},"37":{"position":[[112,5]]},"38":{"position":[[9,4]]},"52":{"position":[[118,4],[605,4],[904,4]]},"67":{"position":[[171,4],[759,4]]},"72":{"position":[[65,5],[229,6]]},"75":{"position":[[353,5]]},"77":{"position":[[1,5]]},"78":{"position":[[1,5]]},"79":{"position":[[1,5],[134,4],[260,5]]},"80":{"position":[[1,5]]},"81":{"position":[[1,5]]},"89":{"position":[[23,4]]},"117":{"position":[[24,5]]},"120":{"position":[[176,4]]},"132":{"position":[[57,4]]},"133":{"position":[[421,5],[1256,4]]},"138":{"position":[[111,4]]},"143":{"position":[[156,5],[427,5],[440,6],[606,6]]},"145":{"position":[[10,4]]},"146":{"position":[[334,4],[441,4]]},"150":{"position":[[329,4],[496,5],[587,4]]},"153":{"position":[[69,4]]},"154":{"position":[[103,6]]},"160":{"position":[[79,5]]},"170":{"position":[[116,5]]},"172":{"position":[[201,7]]},"174":{"position":[[66,6],[195,4]]},"224":{"position":[[143,6],[299,5],[340,5]]},"225":{"position":[[51,4]]},"235":{"position":[[333,6]]},"252":{"position":[[42,5]]},"255":{"position":[[618,5]]},"278":{"position":[[1,5]]},"279":{"position":[[1,5]]},"280":{"position":[[1,5]]}},"keywords":{}}],["files)setup",{"_index":1500,"title":{},"content":{"135":{"position":[[376,11]]}},"keywords":{}}],["filter",{"_index":843,"title":{"192":{"position":[[17,9]]},"236":{"position":[[5,9]]},"237":{"position":[[8,6]]},"238":{"position":[[16,6]]},"239":{"position":[[9,6]]},"253":{"position":[[0,6]]}},"content":{"56":{"position":[[770,6],[1746,11]]},"122":{"position":[[190,6],[233,6],[339,6]]},"187":{"position":[[293,8]]},"210":{"position":[[179,6]]},"236":{"position":[[41,7]]},"239":{"position":[[566,6],[617,6],[1234,7],[1461,6]]},"241":{"position":[[11,7],[181,6],[255,6],[539,6]]},"242":{"position":[[262,7]]},"243":{"position":[[377,7],[2224,6]]},"245":{"position":[[185,10]]},"247":{"position":[[527,9],[586,9],[636,9],[935,9]]},"250":{"position":[[61,7],[119,7]]},"251":{"position":[[159,6]]},"252":{"position":[[375,6]]},"253":{"position":[[59,6]]},"255":{"position":[[201,10],[591,9],[3686,9]]},"256":{"position":[[248,8]]},"260":{"position":[[95,6]]},"262":{"position":[[250,6],[297,8],[370,8],[415,7]]},"263":{"position":[[329,6],[376,8],[450,8],[501,6]]},"264":{"position":[[144,10],[201,7],[390,6],[437,8],[491,8]]},"265":{"position":[[242,7]]},"266":{"position":[[23,8],[235,6]]},"267":{"position":[[50,6],[74,6],[140,9],[211,9],[279,9],[297,6],[963,7],[1012,9]]}},"keywords":{}}],["filtering"day",{"_index":2541,"title":{},"content":{"256":{"position":[[355,18]]}},"keywords":{}}],["filteringcoordinator/period_handlers/relaxation.pi",{"_index":2094,"title":{},"content":{"235":{"position":[[474,50]]}},"keywords":{}}],["filterlevel",{"_index":2431,"title":{},"content":{"253":{"position":[[47,11]]}},"keywords":{}}],["filters)recalcul",{"_index":849,"title":{},"content":{"56":{"position":[[913,20]]}},"keywords":{}}],["final",{"_index":889,"title":{"157":{"position":[[22,6]]}},"content":{"57":{"position":[[865,5]]}},"keywords":{}}],["find",{"_index":348,"title":{"27":{"position":[[0,7]]}},"content":{"90":{"position":[[297,7]]},"246":{"position":[[137,4],[576,4],[2356,4]]},"262":{"position":[[102,4],[152,4]]},"263":{"position":[[98,4]]},"264":{"position":[[94,5]]},"265":{"position":[[25,5]]},"270":{"position":[[181,4]]},"272":{"position":[[1884,5]]},"273":{"position":[[974,4]]}},"keywords":{}}],["finish",{"_index":1775,"title":{},"content":{"174":{"position":[[378,8]]}},"keywords":{}}],["fire",{"_index":901,"title":{},"content":{"60":{"position":[[10,5]]},"71":{"position":[[149,7]]},"77":{"position":[[1298,6]]},"83":{"position":[[17,4]]},"90":{"position":[[51,4]]},"93":{"position":[[102,5]]}},"keywords":{}}],["first",{"_index":350,"title":{},"content":{"27":{"position":[[6,5],[38,5]]},"31":{"position":[[245,5]]},"55":{"position":[[310,5]]},"100":{"position":[[152,6]]},"182":{"position":[[374,5]]},"252":{"position":[[1144,5]]},"278":{"position":[[561,5]]},"284":{"position":[[166,5],[631,5]]}},"keywords":{}}],["fit",{"_index":2698,"title":{},"content":{"273":{"position":[[1437,4]]}},"keywords":{}}],["fix",{"_index":24,"title":{},"content":{"1":{"position":[[180,3]]},"15":{"position":[[147,4]]},"26":{"position":[[169,5]]},"69":{"position":[[175,4]]},"70":{"position":[[205,4]]},"71":{"position":[[127,4]]},"72":{"position":[[165,4]]},"133":{"position":[[899,5]]},"135":{"position":[[223,3]]},"143":{"position":[[546,5]]},"146":{"position":[[259,7]]},"167":{"position":[[107,3]]},"181":{"position":[[152,5]]},"194":{"position":[[255,3]]},"239":{"position":[[595,6],[1473,5]]},"252":{"position":[[678,5],[1674,5]]},"255":{"position":[[3344,5]]},"270":{"position":[[1,5]]},"273":{"position":[[4,5]]},"275":{"position":[[88,5]]}},"keywords":{}}],["fix/issu",{"_index":192,"title":{},"content":{"14":{"position":[[64,9]]}},"keywords":{}}],["fixdoc",{"_index":257,"title":{},"content":{"18":{"position":[[346,8]]}},"keywords":{}}],["fixesdoc",{"_index":198,"title":{},"content":{"14":{"position":[[142,10]]}},"keywords":{}}],["flag",{"_index":1329,"title":{},"content":{"116":{"position":[[93,6]]}},"keywords":{}}],["flake8",{"_index":7,"title":{},"content":{"1":{"position":[[41,7]]}},"keywords":{}}],["flat",{"_index":1124,"title":{"263":{"position":[[12,4]]}},"content":{"86":{"position":[[314,4]]},"243":{"position":[[2200,4]]},"266":{"position":[[37,4]]},"267":{"position":[[260,4]]},"272":{"position":[[230,4]]}},"keywords":{}}],["flavor",{"_index":1864,"title":{},"content":{"181":{"position":[[28,8]]},"195":{"position":[[155,8]]}},"keywords":{}}],["flex",{"_index":848,"title":{"237":{"position":[[3,4]]},"240":{"position":[[4,4]]},"244":{"position":[[0,4]]},"247":{"position":[[0,4]]},"258":{"position":[[23,4]]},"260":{"position":[[30,4]]}},"content":{"56":{"position":[[894,6]]},"122":{"position":[[228,4]]},"235":{"position":[[176,7],[456,4]]},"237":{"position":[[111,5],[184,5],[225,5],[298,5]]},"239":{"position":[[1242,6]]},"241":{"position":[[37,4],[176,4],[355,5],[456,4],[492,4],[572,4],[631,5]]},"242":{"position":[[54,5],[188,5],[214,4],[251,5],[306,5]]},"243":{"position":[[49,4],[79,4],[125,4],[297,4],[492,4],[541,4],[1157,4],[1581,4]]},"246":{"position":[[500,4],[1145,4],[1831,4]]},"247":{"position":[[379,4],[596,4],[651,4],[717,5],[867,4]]},"248":{"position":[[79,4],[220,4],[300,4]]},"250":{"position":[[132,5]]},"252":{"position":[[237,4],[766,4],[1125,5],[1316,5],[1470,5],[1580,4],[1887,4],[2113,4]]},"253":{"position":[[5,4]]},"255":{"position":[[185,4]]},"256":{"position":[[437,4]]},"258":{"position":[[83,4]]},"260":{"position":[[120,4]]},"262":{"position":[[85,4],[309,5]]},"263":{"position":[[84,4],[388,5]]},"264":{"position":[[84,4],[449,5],[531,4]]},"265":{"position":[[220,4],[303,4]]},"266":{"position":[[217,4]]},"267":{"position":[[104,6],[135,4],[617,4],[648,4],[691,4],[749,4],[822,4],[921,4]]},"269":{"position":[[10,4],[40,4],[102,4],[140,4]]},"272":{"position":[[13,4],[75,4],[151,4],[295,4],[394,4],[461,4]]},"273":{"position":[[83,4],[104,4],[152,4],[383,4],[700,5],[780,5],[2386,4],[2510,4]]}},"keywords":{}}],["flex/dist",{"_index":1421,"title":{},"content":{"131":{"position":[[168,13]]},"269":{"position":[[193,13]]},"272":{"position":[[891,13]]},"273":{"position":[[4555,13]]},"275":{"position":[[38,13]]}},"keywords":{}}],["flex=15",{"_index":2437,"title":{},"content":{"253":{"position":[[249,9]]}},"keywords":{}}],["flex=15.0",{"_index":1282,"title":{},"content":{"111":{"position":[[376,10]]},"265":{"position":[[137,10]]},"266":{"position":[[130,10]]}},"keywords":{}}],["flex=18",{"_index":2438,"title":{},"content":{"253":{"position":[[286,8],[328,8]]}},"keywords":{}}],["flex=50",{"_index":2157,"title":{},"content":{"241":{"position":[[78,9]]}},"keywords":{}}],["flex=flex",{"_index":2712,"title":{},"content":{"273":{"position":[[2018,10]]}},"keywords":{}}],["flex=y%"",{"_index":2542,"title":{},"content":{"256":{"position":[[390,13]]}},"keywords":{}}],["flex_ab",{"_index":2222,"title":{},"content":{"243":{"position":[[1258,8],[1291,8],[1343,8],[1648,8]]}},"keywords":{}}],["flex_excess",{"_index":2185,"title":{},"content":{"243":{"position":[[111,11],[168,12],[1329,11],[1411,12]]}},"keywords":{}}],["flex_high_threshold_relax",{"_index":2400,"title":{},"content":{"252":{"position":[[491,30],[1821,31]]}},"keywords":{}}],["flex_incr",{"_index":2390,"title":{},"content":{"252":{"position":[[161,14],[332,15]]}},"keywords":{}}],["flex_level",{"_index":2395,"title":{},"content":{"252":{"position":[[296,10],[354,10]]}},"keywords":{}}],["flex_scaling_threshold",{"_index":2217,"title":{},"content":{"243":{"position":[[971,22],[1305,23]]}},"keywords":{}}],["flex_warning_threshold_relax",{"_index":2398,"title":{},"content":{"252":{"position":[[409,33],[2047,34]]}},"keywords":{}}],["flexibl",{"_index":2092,"title":{},"content":{"235":{"position":[[164,11]]},"246":{"position":[[1968,8]]},"267":{"position":[[172,11]]}},"keywords":{}}],["flexlinear",{"_index":2629,"title":{},"content":{"270":{"position":[[70,10]]}},"keywords":{}}],["flexproblem",{"_index":2333,"title":{},"content":{"246":{"position":[[2104,12]]}},"keywords":{}}],["flexshould",{"_index":2417,"title":{},"content":{"252":{"position":[[1282,10]]}},"keywords":{}}],["float",{"_index":2443,"title":{},"content":{"255":{"position":[[298,6]]}},"keywords":{}}],["float(0",{"_index":2760,"title":{},"content":{"273":{"position":[[4234,8]]}},"keywords":{}}],["flow",{"_index":377,"title":{"30":{"position":[[16,5]]},"31":{"position":[[0,4]]},"58":{"position":[[19,5]]},"59":{"position":[[29,6]]}},"content":{"52":{"position":[[251,5]]},"136":{"position":[[791,4]]},"157":{"position":[[93,4],[130,4]]},"166":{"position":[[82,4]]},"239":{"position":[[509,4]]},"246":{"position":[[2502,4]]},"253":{"position":[[191,4]]},"265":{"position":[[63,5]]},"266":{"position":[[56,5]]}},"keywords":{}}],["flowagents.md",{"_index":990,"title":{},"content":{"73":{"position":[[112,13]]}},"keywords":{}}],["flowcach",{"_index":2980,"title":{},"content":{"300":{"position":[[44,11]]}},"keywords":{}}],["flowsensor",{"_index":2069,"title":{},"content":{"226":{"position":[[100,10]]}},"keywords":{}}],["fluctuating."",{"_index":254,"title":{},"content":{"18":{"position":[[280,18]]}},"keywords":{}}],["focu",{"_index":1653,"title":{},"content":{"152":{"position":[[176,6]]},"246":{"position":[[123,6],[835,6]]}},"keywords":{}}],["focus",{"_index":1630,"title":{},"content":{"150":{"position":[[153,7]]},"163":{"position":[[564,8]]},"235":{"position":[[128,8]]},"246":{"position":[[527,7]]}},"keywords":{}}],["focused)docs/develop",{"_index":1705,"title":{},"content":{"163":{"position":[[175,25]]}},"keywords":{}}],["focused)plan",{"_index":1707,"title":{},"content":{"163":{"position":[[232,17]]}},"keywords":{}}],["follow",{"_index":207,"title":{"172":{"position":[[28,6]]}},"content":{"15":{"position":[[12,9]]},"18":{"position":[[1,6]]},"22":{"position":[[27,7],[257,6]]},"134":{"position":[[237,9]]},"148":{"position":[[25,6]]}},"keywords":{}}],["foolproof",{"_index":1779,"title":{},"content":{"176":{"position":[[39,11]]},"182":{"position":[[56,10]]}},"keywords":{}}],["footprint",{"_index":1930,"title":{},"content":{"198":{"position":[[157,10]]}},"keywords":{}}],["forc",{"_index":734,"title":{},"content":{"51":{"position":[[804,5]]},"179":{"position":[[331,5]]}},"keywords":{}}],["forecast",{"_index":2746,"title":{},"content":{"273":{"position":[[3578,8],[3675,9]]}},"keywords":{}}],["forev",{"_index":707,"title":{},"content":{"50":{"position":[[171,7]]},"52":{"position":[[401,7]]},"67":{"position":[[127,7]]}},"keywords":{}}],["forget",{"_index":1099,"title":{"161":{"position":[[2,6]]}},"content":{"83":{"position":[[26,6]]},"90":{"position":[[60,6]]},"93":{"position":[[112,6]]},"176":{"position":[[516,6]]}},"keywords":{}}],["forgot",{"_index":1874,"title":{},"content":{"182":{"position":[[111,6]]}},"keywords":{}}],["fork",{"_index":164,"title":{"12":{"position":[[0,4]]}},"content":{"12":{"position":[[1,4],[41,5]]},"134":{"position":[[1,4]]}},"keywords":{}}],["format",{"_index":440,"title":{"102":{"position":[[9,7]]},"181":{"position":[[10,7]]},"195":{"position":[[3,6]]}},"content":{"31":{"position":[[1301,9],[1339,7]]},"143":{"position":[[288,6],[666,12]]},"189":{"position":[[59,6]]},"194":{"position":[[614,6]]},"195":{"position":[[19,6],[90,6]]},"196":{"position":[[41,6]]},"233":{"position":[[12,6]]},"247":{"position":[[843,9]]},"255":{"position":[[2465,9]]}},"keywords":{}}],["formatopen",{"_index":1487,"title":{},"content":{"134":{"position":[[433,10]]}},"keywords":{}}],["formatter/lint",{"_index":3,"title":{},"content":{"1":{"position":[[1,17]]}},"keywords":{}}],["formula",{"_index":2183,"title":{},"content":{"243":{"position":[[66,8]]}},"keywords":{}}],["found",{"_index":1255,"title":{},"content":{"106":{"position":[[363,6]]},"111":{"position":[[457,5]]},"250":{"position":[[36,5]]},"251":{"position":[[105,6]]},"253":{"position":[[259,5],[310,5],[350,5]]},"262":{"position":[[472,5]]},"263":{"position":[[558,5]]},"264":{"position":[[588,5]]},"265":{"position":[[180,5],[257,5],[333,5]]},"266":{"position":[[173,5],[339,5]]},"267":{"position":[[956,6]]}},"keywords":{}}],["found"",{"_index":1257,"title":{},"content":{"106":{"position":[[432,12]]},"256":{"position":[[315,11]]}},"keywords":{}}],["foundat",{"_index":1420,"title":{},"content":{"131":{"position":[[155,12]]},"235":{"position":[[41,11]]}},"keywords":{}}],["fragment",{"_index":2452,"title":{},"content":{"255":{"position":[[774,14]]},"267":{"position":[[1142,11]]},"273":{"position":[[4749,9]]}},"keywords":{}}],["free",{"_index":1130,"title":{},"content":{"87":{"position":[[59,5]]},"90":{"position":[[361,5]]},"145":{"position":[[59,4]]},"174":{"position":[[118,4]]}},"keywords":{}}],["freed",{"_index":1022,"title":{},"content":{"77":{"position":[[542,5]]}},"keywords":{}}],["freeli",{"_index":1572,"title":{"147":{"position":[[11,7]]}},"content":{"145":{"position":[[201,6]]}},"keywords":{}}],["frequent",{"_index":209,"title":{},"content":{"15":{"position":[[53,11]]}},"keywords":{}}],["fresh",{"_index":399,"title":{},"content":{"31":{"position":[[355,5]]},"51":{"position":[[810,5]]},"59":{"position":[[447,5]]},"60":{"position":[[347,5]]},"278":{"position":[[407,5]]}},"keywords":{}}],["friendli",{"_index":1920,"title":{},"content":{"196":{"position":[[219,8]]}},"keywords":{}}],["friendlyhelp",{"_index":353,"title":{},"content":{"27":{"position":[[61,12]]}},"keywords":{}}],["frontier",{"_index":2662,"title":{},"content":{"272":{"position":[[1931,8]]}},"keywords":{}}],["frontier)us",{"_index":2661,"title":{},"content":{"272":{"position":[[1900,13]]}},"keywords":{}}],["full",{"_index":1758,"title":{},"content":{"172":{"position":[[209,4]]},"224":{"position":[[383,4]]},"252":{"position":[[810,4]]}},"keywords":{}}],["fulli",{"_index":1149,"title":{},"content":{"90":{"position":[[399,5]]},"182":{"position":[[348,5]]}},"keywords":{}}],["func(*arg",{"_index":1939,"title":{},"content":{"200":{"position":[[179,11]]}},"keywords":{}}],["func.__name__",{"_index":1942,"title":{},"content":{"200":{"position":[[282,14]]}},"keywords":{}}],["function",{"_index":75,"title":{"255":{"position":[[14,10]]}},"content":{"3":{"position":[[708,8]]},"25":{"position":[[348,10]]},"37":{"position":[[578,10]]},"40":{"position":[[253,8]]},"70":{"position":[[215,8]]},"77":{"position":[[1563,8]]},"136":{"position":[[205,9],[458,9]]},"137":{"position":[[355,9]]},"154":{"position":[[29,9],[79,9],[163,10],[280,9],[437,9]]},"156":{"position":[[273,13]]},"173":{"position":[[145,11]]},"200":{"position":[[30,10]]},"281":{"position":[[217,8]]}},"keywords":{}}],["functionsfollow",{"_index":322,"title":{},"content":{"25":{"position":[[119,16]]}},"keywords":{}}],["functool",{"_index":1934,"title":{},"content":{"200":{"position":[[61,9]]}},"keywords":{}}],["functools.wraps(func",{"_index":1936,"title":{},"content":{"200":{"position":[[89,22]]}},"keywords":{}}],["fundament",{"_index":2267,"title":{},"content":{"246":{"position":[[62,13]]}},"keywords":{}}],["further",{"_index":2549,"title":{},"content":{"258":{"position":[[137,7]]}},"keywords":{}}],["futur",{"_index":632,"title":{"268":{"position":[[0,6]]},"271":{"position":[[0,6]]}},"content":{"42":{"position":[[557,6]]},"93":{"position":[[26,7]]},"107":{"position":[[128,6]]},"171":{"position":[[285,6]]},"272":{"position":[[852,7]]},"279":{"position":[[1461,6]]}},"keywords":{}}],["fΓΌr",{"_index":2867,"title":{},"content":{"281":{"position":[[33,3]]},"286":{"position":[[80,3]]}},"keywords":{}}],["gap",{"_index":870,"title":{},"content":{"56":{"position":[[1758,3]]},"239":{"position":[[152,3]]}},"keywords":{}}],["gc",{"_index":1023,"title":{},"content":{"77":{"position":[[551,2]]}},"keywords":{}}],["gener",{"_index":363,"title":{"175":{"position":[[14,10]]}},"content":{"28":{"position":[[91,7]]},"52":{"position":[[991,11]]},"133":{"position":[[205,11],[454,10]]},"135":{"position":[[535,8]]},"176":{"position":[[424,9]]},"178":{"position":[[37,10]]},"179":{"position":[[110,8],[178,8],[258,8]]},"180":{"position":[[270,8]]},"184":{"position":[[366,9]]},"210":{"position":[[235,9]]},"252":{"position":[[228,8]]}},"keywords":{}}],["genuin",{"_index":2278,"title":{},"content":{"246":{"position":[[352,9]]},"273":{"position":[[3337,9]]}},"keywords":{}}],["get",{"_index":156,"title":{"10":{"position":[[0,7]]}},"content":{"281":{"position":[[231,4]]},"301":{"position":[[583,4]]}},"keywords":{}}],["get_apexcharts_yaml",{"_index":507,"title":{},"content":{"36":{"position":[[615,20]]}},"keywords":{}}],["get_chartdata",{"_index":506,"title":{},"content":{"36":{"position":[[599,15]]}},"keywords":{}}],["get_config(self",{"_index":1966,"title":{},"content":{"204":{"position":[[655,16]]}},"keywords":{}}],["get_transl",{"_index":587,"title":{},"content":{"40":{"position":[[228,17]]}},"keywords":{}}],["get_translation("binary_sensor.best_price_period.description"",{"_index":777,"title":{},"content":{"52":{"position":[[703,72]]}},"keywords":{}}],["get_translation(path",{"_index":1958,"title":{},"content":{"204":{"position":[[278,21]]}},"keywords":{}}],["ghcr.io/devcontainers/features/rust:1",{"_index":1836,"title":{},"content":{"179":{"position":[[1202,37]]}},"keywords":{}}],["ghi9012](link",{"_index":1869,"title":{},"content":{"181":{"position":[[256,15]]}},"keywords":{}}],["git",{"_index":168,"title":{},"content":{"12":{"position":[[47,3]]},"14":{"position":[[1,3],[48,3]]},"18":{"position":[[31,3],[41,3]]},"19":{"position":[[1,3]]},"135":{"position":[[416,4]]},"145":{"position":[[42,4],[169,3],[226,3]]},"147":{"position":[[20,3]]},"149":{"position":[[172,3],[228,3],[604,3]]},"162":{"position":[[78,3]]},"165":{"position":[[13,3]]},"174":{"position":[[133,4]]},"176":{"position":[[342,3],[684,3],[749,3]]},"179":{"position":[[455,3],[1102,3],[1402,3],[1477,3],[1574,3],[1622,3],[1773,3],[1800,3],[1810,5]]},"180":{"position":[[180,3],[195,3],[299,3],[368,3]]},"184":{"position":[[97,3],[115,3],[157,3]]},"185":{"position":[[149,3],[214,3]]},"186":{"position":[[74,3],[169,3],[184,3]]},"187":{"position":[[274,3]]},"194":{"position":[[52,3],[114,3],[345,3],[436,3],[454,3]]},"196":{"position":[[381,3]]},"230":{"position":[[24,3]]}},"keywords":{}}],["github",{"_index":272,"title":{"178":{"position":[[3,6]]}},"content":{"19":{"position":[[62,7]]},"28":{"position":[[1,6]]},"133":{"position":[[60,7]]},"163":{"position":[[30,7]]},"176":{"position":[[492,6],[887,6]]},"179":{"position":[[365,7],[813,6]]},"180":{"position":[[220,6],[323,6]]},"181":{"position":[[21,6]]},"182":{"position":[[180,6]]},"185":{"position":[[262,6]]},"187":{"position":[[231,6]]},"194":{"position":[[539,6]]},"195":{"position":[[41,6],[148,6]]},"196":{"position":[[332,6]]},"224":{"position":[[416,6]]},"231":{"position":[[187,6]]}},"keywords":{}}],["github'",{"_index":1796,"title":{},"content":{"178":{"position":[[5,8]]}},"keywords":{}}],["github/copilot)prepar",{"_index":1502,"title":{},"content":{"135":{"position":[[428,23]]}},"keywords":{}}],["github/release.yml",{"_index":1806,"title":{},"content":{"178":{"position":[[196,19]]}},"keywords":{}}],["github/workflows/release.yml",{"_index":1859,"title":{},"content":{"180":{"position":[[49,29]]}},"keywords":{}}],["github_act",{"_index":1834,"title":{},"content":{"179":{"position":[[992,17]]}},"keywords":{}}],["githubclon",{"_index":167,"title":{},"content":{"12":{"position":[[24,11]]}},"keywords":{}}],["gitv",{"_index":159,"title":{},"content":{"11":{"position":[[1,5]]}},"keywords":{}}],["give",{"_index":2678,"title":{},"content":{"273":{"position":[[290,6]]}},"keywords":{}}],["given",{"_index":2159,"title":{},"content":{"241":{"position":[[106,6]]}},"keywords":{}}],["gnu.tar.gz",{"_index":1853,"title":{},"content":{"179":{"position":[[1753,10]]}},"keywords":{}}],["go",{"_index":1537,"title":{},"content":{"139":{"position":[[18,2],[49,2]]},"146":{"position":[[577,2]]},"174":{"position":[[438,2]]},"178":{"position":[[49,2]]}},"keywords":{}}],["goal",{"_index":1656,"title":{"198":{"position":[[12,6]]}},"content":{"153":{"position":[[32,4]]},"154":{"position":[[51,9]]},"246":{"position":[[131,5],[843,5]]},"272":{"position":[[1582,5],[1604,6]]}},"keywords":{}}],["goe",{"_index":1540,"title":{},"content":{"139":{"position":[[84,4]]}},"keywords":{}}],["good",{"_index":311,"title":{"262":{"position":[[23,5]]}},"content":{"25":{"position":[[3,5]]},"27":{"position":[[1,4],[33,4]]},"152":{"position":[[117,4]]},"170":{"position":[[88,4]]},"174":{"position":[[350,4]]},"246":{"position":[[2361,4]]},"262":{"position":[[348,4]]},"267":{"position":[[473,4]]},"301":{"position":[[274,4],[329,4],[394,4]]}},"keywords":{}}],["gracefulli",{"_index":2810,"title":{},"content":{"278":{"position":[[1531,10]]},"301":{"position":[[441,10]]}},"keywords":{}}],["gradual",{"_index":2321,"title":{},"content":{"246":{"position":[[1721,8]]},"255":{"position":[[2945,8]]}},"keywords":{}}],["graphql",{"_index":397,"title":{"97":{"position":[[0,7]]}},"content":{"31":{"position":[[338,7]]},"36":{"position":[[48,7]]},"51":{"position":[[394,7]]},"136":{"position":[[148,7]]}},"keywords":{}}],["grep",{"_index":1171,"title":{},"content":{"94":{"position":[[536,4]]},"120":{"position":[[9,4]]}},"keywords":{}}],["grep/awk",{"_index":1821,"title":{},"content":{"179":{"position":[[568,9],[942,8]]}},"keywords":{}}],["gridareacod",{"_index":1198,"title":{},"content":{"99":{"position":[[229,12]]}},"keywords":{}}],["grow",{"_index":996,"title":{},"content":{"75":{"position":[[114,5]]},"94":{"position":[[680,4]]}},"keywords":{}}],["gt",{"_index":731,"title":{},"content":{"51":{"position":[[760,4],[982,4]]},"55":{"position":[[482,4]]},"56":{"position":[[1045,4]]},"59":{"position":[[107,6],[158,6],[252,6],[302,6]]},"60":{"position":[[69,6],[101,6],[164,6],[198,6]]},"62":{"position":[[103,6],[214,6]]},"64":{"position":[[35,6],[72,6],[112,6],[165,6],[228,6]]},"65":{"position":[[28,6],[84,6],[136,6],[196,6],[246,6]]},"66":{"position":[[16,6],[53,6],[90,6],[132,6],[163,6],[218,6],[248,6],[276,6]]},"114":{"position":[[80,4],[278,4]]},"121":{"position":[[48,4]]},"204":{"position":[[321,4],[673,4]]},"205":{"position":[[74,4]]},"213":{"position":[[63,4]]},"221":{"position":[[45,4]]},"237":{"position":[[267,5]]},"238":{"position":[[348,5]]},"241":{"position":[[394,4]]},"242":{"position":[[60,4],[194,4],[219,4]]},"243":{"position":[[84,4],[1096,4],[1300,4],[1872,5]]},"247":{"position":[[708,4]]},"248":{"position":[[189,4],[266,4]]},"252":{"position":[[1815,5],[2041,5]]},"255":{"position":[[163,4],[336,4],[508,4],[558,4],[1189,4],[1477,4],[1652,4],[2870,4]]},"272":{"position":[[315,4],[344,5]]},"273":{"position":[[2787,4],[4146,4],[4243,4]]},"278":{"position":[[504,4]]},"279":{"position":[[653,4]]},"280":{"position":[[288,4]]},"288":{"position":[[84,4]]}},"keywords":{}}],["gt;1.5",{"_index":2514,"title":{},"content":{"255":{"position":[[3066,8]]}},"keywords":{}}],["gt;3",{"_index":1556,"title":{},"content":{"143":{"position":[[433,6]]}},"keywords":{}}],["gt;30",{"_index":2595,"title":{},"content":{"267":{"position":[[150,9]]}},"keywords":{}}],["gt;5",{"_index":1550,"title":{},"content":{"143":{"position":[[149,6]]},"172":{"position":[[195,5]]},"174":{"position":[[60,5]]}},"keywords":{}}],["gt;50",{"_index":2597,"title":{},"content":{"267":{"position":[[221,9]]}},"keywords":{}}],["gt;500",{"_index":324,"title":{},"content":{"25":{"position":[[175,8]]},"143":{"position":[[172,7]]},"172":{"position":[[179,8]]},"174":{"position":[[44,8]]}},"keywords":{}}],["guarante",{"_index":2381,"title":{},"content":{"250":{"position":[[167,9]]}},"keywords":{}}],["guid",{"_index":155,"title":{"9":{"position":[[13,5]]},"74":{"position":[[37,5]]},"108":{"position":[[10,5]]},"131":{"position":[[13,7]]},"142":{"position":[[12,5]]}},"content":{"28":{"position":[[206,5]]},"48":{"position":[[156,5],[201,5]]},"129":{"position":[[156,5],[195,5]]},"131":{"position":[[489,6],[535,5]]},"163":{"position":[[218,6]]}},"keywords":{}}],["guidanc",{"_index":1439,"title":{"248":{"position":[[25,10]]}},"content":{"132":{"position":[[387,8]]},"139":{"position":[[75,8]]},"163":{"position":[[715,9]]},"246":{"position":[[2296,8]]}},"keywords":{}}],["guidancecommon",{"_index":1434,"title":{},"content":{"132":{"position":[[208,14]]}},"keywords":{}}],["guidelin",{"_index":1,"title":{"0":{"position":[[7,10]]},"20":{"position":[[13,11]]},"227":{"position":[[5,11]]}},"content":{"8":{"position":[[197,11]]},"15":{"position":[[29,11]]},"22":{"position":[[42,10]]},"28":{"position":[[239,10]]},"131":{"position":[[470,10]]},"140":{"position":[[47,11]]}},"keywords":{}}],["guidelinesrun",{"_index":1483,"title":{},"content":{"134":{"position":[[258,13]]}},"keywords":{}}],["guidetest",{"_index":371,"title":{},"content":{"28":{"position":[[258,12]]}},"keywords":{}}],["ha",{"_index":134,"title":{"127":{"position":[[26,3]]},"278":{"position":[[32,3]]},"289":{"position":[[10,2]]},"296":{"position":[[15,3]]}},"content":{"6":{"position":[[193,2]]},"16":{"position":[[27,2]]},"31":{"position":[[396,2]]},"33":{"position":[[234,2]]},"40":{"position":[[47,2]]},"42":{"position":[[218,2],[365,2],[439,2]]},"50":{"position":[[114,3],[186,2]]},"51":{"position":[[34,2],[168,2],[589,2],[1356,2]]},"52":{"position":[[416,2]]},"62":{"position":[[47,3]]},"67":{"position":[[142,2]]},"72":{"position":[[204,2]]},"75":{"position":[[142,2]]},"79":{"position":[[338,2]]},"87":{"position":[[42,2]]},"90":{"position":[[344,2]]},"94":{"position":[[475,3],[596,3]]},"136":{"position":[[862,2]]},"137":{"position":[[433,3]]},"154":{"position":[[491,2]]},"157":{"position":[[260,3]]},"167":{"position":[[70,2]]},"173":{"position":[[106,2]]},"277":{"position":[[133,2],[384,4]]},"278":{"position":[[166,2],[1077,2],[1591,2],[1653,2]]},"281":{"position":[[1202,2]]},"286":{"position":[[36,2]]},"289":{"position":[[12,2],[64,2]]},"301":{"position":[[37,3]]}},"keywords":{}}],["ha'",{"_index":1129,"title":{"286":{"position":[[12,4]]}},"content":{"87":{"position":[[17,4]]},"93":{"position":[[221,4]]},"278":{"position":[[1554,4]]},"279":{"position":[[1918,4]]},"283":{"position":[[145,5]]},"287":{"position":[[197,4]]}},"keywords":{}}],["hac",{"_index":1911,"title":{},"content":{"195":{"position":[[1,5]]}},"keywords":{}}],["half",{"_index":1774,"title":{},"content":{"174":{"position":[[373,4]]}},"keywords":{}}],["halfway",{"_index":1681,"title":{},"content":{"159":{"position":[[85,7]]}},"keywords":{}}],["handl",{"_index":125,"title":{"6":{"position":[[5,9]]},"105":{"position":[[6,9]]}},"content":{"36":{"position":[[94,8]]},"37":{"position":[[513,9]]},"42":{"position":[[316,7]]},"43":{"position":[[850,7]]},"57":{"position":[[557,8],[740,7],[787,7]]},"75":{"position":[[331,6]]},"83":{"position":[[266,7]]},"86":{"position":[[135,7]]},"106":{"position":[[532,7]]},"133":{"position":[[113,8],[269,9]]},"157":{"position":[[199,8]]},"255":{"position":[[3781,6]]},"272":{"position":[[2084,6]]},"273":{"position":[[1467,9]]},"279":{"position":[[827,7]]},"280":{"position":[[387,8]]},"289":{"position":[[136,8]]}},"keywords":{}}],["handler",{"_index":642,"title":{},"content":{"43":{"position":[[73,7]]}},"keywords":{}}],["handlersbinari",{"_index":433,"title":{},"content":{"31":{"position":[[1130,14]]}},"keywords":{}}],["happen",{"_index":1480,"title":{},"content":{"134":{"position":[[126,8]]},"184":{"position":[[240,8]]},"185":{"position":[[361,8]]},"186":{"position":[[254,8]]},"194":{"position":[[202,6]]},"299":{"position":[[174,6]]}},"keywords":{}}],["hard",{"_index":1628,"title":{},"content":{"150":{"position":[[104,4]]},"160":{"position":[[116,4]]},"245":{"position":[[79,4]]},"248":{"position":[[591,4]]},"252":{"position":[[93,4],[889,4]]}},"keywords":{}}],["harder",{"_index":2641,"title":{},"content":{"272":{"position":[[622,6]]}},"keywords":{}}],["hash",{"_index":421,"title":{},"content":{"31":{"position":[[879,4],[907,4],[952,4],[1025,4]]},"33":{"position":[[376,4]]},"56":{"position":[[546,4],[1148,4],[1595,5]]},"57":{"position":[[825,4]]},"60":{"position":[[304,5]]},"61":{"position":[[151,4],[212,5]]},"62":{"position":[[493,4]]},"64":{"position":[[153,4]]},"67":{"position":[[322,5]]},"70":{"position":[[16,4],[210,4]]}},"keywords":{}}],["hash_data",{"_index":834,"title":{},"content":{"56":{"position":[[571,9]]}},"keywords":{}}],["hass.async_add_executor_job(heavy_comput",{"_index":1988,"title":{},"content":{"207":{"position":[[356,46]]}},"keywords":{}}],["hass.tibber_pric",{"_index":171,"title":{},"content":{"12":{"position":[[116,18]]},"230":{"position":[[90,18]]}},"keywords":{}}],["hassfest",{"_index":2068,"title":{},"content":{"224":{"position":[[388,8]]}},"keywords":{}}],["have",{"_index":2171,"title":{},"content":{"241":{"position":[[619,6]]}},"keywords":{}}],["haven't",{"_index":822,"title":{},"content":{"56":{"position":[[155,7]]}},"keywords":{}}],["head",{"_index":1815,"title":{},"content":{"179":{"position":[[138,4],[279,4],[324,4]]}},"keywords":{}}],["header",{"_index":1185,"title":{},"content":{"97":{"position":[[84,6]]}},"keywords":{}}],["heat",{"_index":2627,"title":{},"content":{"269":{"position":[[467,4]]},"272":{"position":[[1825,4]]}},"keywords":{}}],["heavi",{"_index":684,"title":{},"content":{"46":{"position":[[184,5]]}},"keywords":{}}],["heavili",{"_index":1704,"title":{},"content":{"163":{"position":[[22,7]]}},"keywords":{}}],["heavy_comput",{"_index":1987,"title":{},"content":{"207":{"position":[[283,19]]}},"keywords":{}}],["help",{"_index":1752,"title":{},"content":{"171":{"position":[[278,6]]},"260":{"position":[[151,5]]}},"keywords":{}}],["helper",{"_index":64,"title":{"38":{"position":[[0,6]]},"167":{"position":[[0,6]]},"184":{"position":[[18,6]]}},"content":{"3":{"position":[[559,6],[749,6]]},"37":{"position":[[536,7]]},"40":{"position":[[246,6]]},"135":{"position":[[30,6]]},"136":{"position":[[451,6],[589,7],[825,7]]},"154":{"position":[[22,6]]},"176":{"position":[[65,6]]},"187":{"position":[[27,6]]},"189":{"position":[[6,6]]},"190":{"position":[[1,6]]},"191":{"position":[[1,6]]},"193":{"position":[[1,6]]}},"keywords":{}}],["helpers.pi",{"_index":1508,"title":{},"content":{"136":{"position":[[433,10]]},"154":{"position":[[92,10],[216,11]]}},"keywords":{}}],["herd"",{"_index":2804,"title":{},"content":{"278":{"position":[[1222,10]]},"287":{"position":[[172,10]]}},"keywords":{}}],["here",{"_index":1946,"title":{},"content":{"200":{"position":[[392,4]]},"263":{"position":[[176,4]]}},"keywords":{}}],["hidden",{"_index":2768,"title":{},"content":{"273":{"position":[[4695,6]]}},"keywords":{}}],["hide",{"_index":2766,"title":{},"content":{"273":{"position":[[4614,5]]}},"keywords":{}}],["high",{"_index":857,"title":{"258":{"position":[[18,4]]},"264":{"position":[[24,5]]}},"content":{"56":{"position":[[1308,5]]},"146":{"position":[[312,4]]},"166":{"position":[[290,4]]},"239":{"position":[[473,4],[787,4]]},"241":{"position":[[45,5],[487,4],[626,4]]},"248":{"position":[[235,4],[252,4],[313,4]]},"252":{"position":[[551,4],[1272,4],[1570,4],[1907,4],[2135,4]]},"263":{"position":[[410,4]]},"267":{"position":[[662,4],[702,4],[916,4]]},"272":{"position":[[328,4]]},"273":{"position":[[3573,4]]}},"keywords":{}}],["higher",{"_index":2286,"title":{},"content":{"246":{"position":[[588,6]]},"269":{"position":[[133,6]]},"272":{"position":[[288,6]]}},"keywords":{}}],["hint",{"_index":321,"title":{},"content":{"25":{"position":[[106,5]]},"133":{"position":[[256,6]]}},"keywords":{}}],["histor",{"_index":248,"title":{},"content":{"18":{"position":[[187,10]]},"252":{"position":[[1349,10]]}},"keywords":{}}],["histori",{"_index":1574,"title":{},"content":{"145":{"position":[[230,8]]},"162":{"position":[[82,7]]},"272":{"position":[[1442,8]]}},"keywords":{}}],["hit",{"_index":856,"title":{},"content":{"56":{"position":[[1297,3],[1582,4],[1674,3]]},"64":{"position":[[275,4]]},"67":{"position":[[660,4]]}},"keywords":{}}],["hold",{"_index":1020,"title":{},"content":{"77":{"position":[[468,5]]}},"keywords":{}}],["home",{"_index":36,"title":{},"content":{"3":{"position":[[72,4]]},"21":{"position":[[224,4]]},"51":{"position":[[351,6]]},"62":{"position":[[705,5]]},"67":{"position":[[855,4]]},"75":{"position":[[1,4]]},"94":{"position":[[541,4]]},"95":{"position":[[1,4]]},"99":{"position":[[9,4],[58,5]]},"100":{"position":[[239,4]]},"101":{"position":[[262,4]]},"106":{"position":[[354,4]]},"110":{"position":[[106,4]]},"133":{"position":[[171,4],[1020,4]]},"134":{"position":[[376,4]]},"135":{"position":[[118,4]]},"156":{"position":[[75,4]]},"198":{"position":[[216,4]]},"226":{"position":[[66,4]]},"232":{"position":[[9,4]]},"278":{"position":[[70,4]]},"281":{"position":[[83,4]]}},"keywords":{}}],["home(id",{"_index":1200,"title":{},"content":{"100":{"position":[[64,8]]}},"keywords":{}}],["home/met",{"_index":559,"title":{},"content":{"37":{"position":[[1047,13]]}},"keywords":{}}],["home/vscode/.venv/uv",{"_index":2081,"title":{},"content":{"231":{"position":[[55,21]]}},"keywords":{}}],["home_id=f"home_{i}"",{"_index":2049,"title":{},"content":{"219":{"position":[[208,30]]}},"keywords":{}}],["homeapi",{"_index":1932,"title":{},"content":{"198":{"position":[[181,7]]}},"keywords":{}}],["homeassist",{"_index":119,"title":{},"content":{"4":{"position":[[48,17]]},"126":{"position":[[40,13]]},"202":{"position":[[81,13]]}},"keywords":{}}],["homeassistant.util",{"_index":128,"title":{},"content":{"6":{"position":[[25,19],[51,18]]}},"keywords":{}}],["homeid",{"_index":1201,"title":{},"content":{"100":{"position":[[73,8],[224,7]]}},"keywords":{}}],["homes."""",{"_index":2046,"title":{},"content":{"219":{"position":[[106,24]]}},"keywords":{}}],["hour",{"_index":244,"title":{"42":{"position":[[11,4]]},"279":{"position":[[18,4]]},"293":{"position":[[18,4]]},"297":{"position":[[24,6]]}},"content":{"18":{"position":[[129,4]]},"31":{"position":[[1202,4]]},"43":{"position":[[522,5]]},"50":{"position":[[129,5]]},"51":{"position":[[556,5]]},"52":{"position":[[886,4]]},"56":{"position":[[1847,5]]},"67":{"position":[[55,5]]},"77":{"position":[[964,4]]},"80":{"position":[[64,4]]},"99":{"position":[[267,5]]},"101":{"position":[[57,4]]},"137":{"position":[[146,4]]},"157":{"position":[[316,4]]},"246":{"position":[[1539,5],[1595,5],[1700,5],[1772,5]]},"273":{"position":[[3511,6]]},"279":{"position":[[964,4]]},"285":{"position":[[47,4],[341,4]]},"297":{"position":[[79,4]]}},"keywords":{}}],["hourli",{"_index":588,"title":{},"content":{"41":{"position":[[13,6]]},"100":{"position":[[17,6]]}},"keywords":{}}],["hours"",{"_index":2524,"title":{},"content":{"255":{"position":[[3503,11]]}},"keywords":{}}],["http://localhost:8123",{"_index":218,"title":{},"content":{"16":{"position":[[66,21]]},"232":{"position":[[64,21]]}},"keywords":{}}],["https://api.tibber.com/v1",{"_index":1179,"title":{},"content":{"97":{"position":[[1,25]]}},"keywords":{}}],["https://developers.hom",{"_index":1173,"title":{},"content":{"95":{"position":[[34,23],[133,23]]}},"keywords":{}}],["https://docs.python.org/3/library/tracemalloc.html",{"_index":1178,"title":{},"content":{"95":{"position":[[205,50]]}},"keywords":{}}],["https://git",{"_index":1842,"title":{},"content":{"179":{"position":[[1513,11]]}},"keywords":{}}],["https://github.com/jpawlowski/hass.tibber_prices.git",{"_index":2077,"title":{},"content":{"230":{"position":[[34,52]]}},"keywords":{}}],["https://github.com/orhun/git",{"_index":1848,"title":{},"content":{"179":{"position":[[1662,28]]}},"keywords":{}}],["https://github.com/your_username/hass.tibber_prices.git",{"_index":169,"title":{},"content":{"12":{"position":[[57,55]]}},"keywords":{}}],["human",{"_index":1467,"title":{},"content":{"133":{"position":[[1053,5]]},"163":{"position":[[203,5],[225,6],[573,5]]}},"keywords":{}}],["i'll",{"_index":1679,"title":{},"content":{"159":{"position":[[44,4]]}},"keywords":{}}],["i/o",{"_index":761,"title":{},"content":{"52":{"position":[[123,3],[909,3]]},"67":{"position":[[176,3],[764,3]]}},"keywords":{}}],["i['startsat",{"_index":1373,"title":{},"content":{"122":{"position":[[131,16]]}},"keywords":{}}],["i['tot",{"_index":1374,"title":{},"content":{"122":{"position":[[148,11]]}},"keywords":{}}],["icon",{"_index":1513,"title":{},"content":{"136":{"position":[[614,4]]}},"keywords":{}}],["icon/color/attribut",{"_index":575,"title":{},"content":{"38":{"position":[[205,20]]}},"keywords":{}}],["icons.pi",{"_index":1512,"title":{},"content":{"136":{"position":[[603,8]]}},"keywords":{}}],["id",{"_index":1187,"title":{},"content":{"99":{"position":[[66,2]]},"100":{"position":[[48,4]]}},"keywords":{}}],["idea",{"_index":364,"title":{},"content":{"28":{"position":[[110,5]]},"272":{"position":[[1548,6],[2288,4]]}},"keywords":{}}],["identif",{"_index":2450,"title":{},"content":{"255":{"position":[[737,14]]}},"keywords":{}}],["identifi",{"_index":2726,"title":{},"content":{"273":{"position":[[2966,10]]}},"keywords":{}}],["identifierresolut",{"_index":1205,"title":{},"content":{"100":{"position":[[244,21]]}},"keywords":{}}],["ignor",{"_index":1567,"title":{"162":{"position":[[2,6]]}},"content":{"145":{"position":[[47,7],[173,8]]},"147":{"position":[[24,8]]},"149":{"position":[[608,8]]},"165":{"position":[[17,7]]}},"keywords":{}}],["ignored)work",{"_index":1770,"title":{},"content":{"174":{"position":[[138,12]]}},"keywords":{}}],["immedi",{"_index":2434,"title":{},"content":{"253":{"position":[[113,11]]}},"keywords":{}}],["immediately)tim",{"_index":2986,"title":{},"content":{"301":{"position":[[358,17]]}},"keywords":{}}],["impact",{"_index":249,"title":{"214":{"position":[[9,7]]}},"content":{"18":{"position":[[215,7]]},"55":{"position":[[641,7]]},"56":{"position":[[1488,7]]},"196":{"position":[[133,7],[167,6],[187,7]]},"264":{"position":[[214,9]]}},"keywords":{}}],["implement",{"_index":284,"title":{"89":{"position":[[2,11]]},"90":{"position":[[20,11]]},"148":{"position":[[3,14]]},"151":{"position":[[15,15]]},"160":{"position":[[2,9]]},"171":{"position":[[35,16]]},"245":{"position":[[0,14]]},"254":{"position":[[0,14]]}},"content":{"21":{"position":[[165,14]]},"84":{"position":[[29,11]]},"133":{"position":[[217,12]]},"150":{"position":[[741,14]]},"174":{"position":[[324,14]]},"204":{"position":[[44,11],[209,11]]},"212":{"position":[[9,12]]},"239":{"position":[[1313,15]]},"243":{"position":[[839,15]]},"252":{"position":[[9,14]]},"255":{"position":[[601,15]]},"272":{"position":[[39,13],[781,11],[1481,14]]},"273":{"position":[[355,12],[806,12],[1311,12],[1638,15]]},"274":{"position":[[108,15]]}},"keywords":{}}],["implementationdocs/develop",{"_index":1709,"title":{},"content":{"163":{"position":[[375,31]]}},"keywords":{}}],["implemented)privaci",{"_index":2650,"title":{},"content":{"272":{"position":[[1288,19]]}},"keywords":{}}],["implementhard",{"_index":2669,"title":{},"content":{"272":{"position":[[2157,15]]}},"keywords":{}}],["implic",{"_index":2326,"title":{},"content":{"246":{"position":[[1808,12]]}},"keywords":{}}],["import",{"_index":112,"title":{"4":{"position":[[0,6]]}},"content":{"6":{"position":[[70,6]]},"8":{"position":[[48,6]]},"46":{"position":[[201,6]]},"124":{"position":[[1,6]]},"125":{"position":[[1,6]]},"128":{"position":[[27,6]]},"129":{"position":[[79,6]]},"132":{"position":[[290,10]]},"154":{"position":[[203,7],[352,7]]},"200":{"position":[[42,6],[54,6]]},"201":{"position":[[1,6]]},"209":{"position":[[232,6]]},"218":{"position":[[1,6],[15,6]]},"222":{"position":[[1,6],[15,6]]},"239":{"position":[[200,9]]}},"keywords":{}}],["impract",{"_index":2276,"title":{},"content":{"246":{"position":[[298,11]]}},"keywords":{}}],["improv",{"_index":202,"title":{"269":{"position":[[10,13]]},"272":{"position":[[10,13]]}},"content":{"14":{"position":[[216,12]]},"26":{"position":[[34,9]]},"27":{"position":[[137,12]]},"146":{"position":[[661,12]]}},"keywords":{}}],["in_flex",{"_index":2101,"title":{},"content":{"237":{"position":[[137,7],[251,7]]},"247":{"position":[[905,8]]},"255":{"position":[[361,9]]}},"keywords":{}}],["includ",{"_index":246,"title":{},"content":{"18":{"position":[[162,8]]},"21":{"position":[[62,8]]},"61":{"position":[[265,8]]},"70":{"position":[[232,7]]},"103":{"position":[[159,9]]},"135":{"position":[[13,8]]},"146":{"position":[[32,8]]},"161":{"position":[[155,7]]},"195":{"position":[[192,7]]},"231":{"position":[[18,9]]}},"keywords":{}}],["inconsist",{"_index":2771,"title":{},"content":{"273":{"position":[[4871,12]]}},"keywords":{}}],["inconveni",{"_index":2309,"title":{},"content":{"246":{"position":[[1338,14]]}},"keywords":{}}],["incorrect",{"_index":1062,"title":{},"content":{"78":{"position":[[339,9]]},"273":{"position":[[4444,9]]}},"keywords":{}}],["increas",{"_index":2182,"title":{},"content":{"243":{"position":[[54,10]]},"248":{"position":[[69,9]]},"255":{"position":[[2954,9]]},"258":{"position":[[266,8]]},"273":{"position":[[187,9]]}},"keywords":{}}],["increase!)bas",{"_index":2674,"title":{},"content":{"273":{"position":[[137,14]]}},"keywords":{}}],["increasestim",{"_index":1004,"title":{},"content":{"75":{"position":[[237,14]]}},"keywords":{}}],["increment",{"_index":2259,"title":{"252":{"position":[[11,11]]}},"content":{"245":{"position":[[486,9],[570,9]]},"248":{"position":[[84,14]]},"252":{"position":[[107,9],[684,10],[1437,10],[1477,9],[1683,9]]},"258":{"position":[[126,10]]},"270":{"position":[[7,9]]},"273":{"position":[[10,9],[117,9],[166,9],[235,10],[246,9]]}},"keywords":{}}],["independ",{"_index":445,"title":{},"content":{"33":{"position":[[24,11]]},"34":{"position":[[59,11]]},"48":{"position":[[64,11]]},"131":{"position":[[277,11]]},"236":{"position":[[29,11]]},"239":{"position":[[253,11]]},"251":{"position":[[20,14]]},"252":{"position":[[742,15]]},"273":{"position":[[2193,11]]},"277":{"position":[[28,11]]},"283":{"position":[[486,14]]},"301":{"position":[[7,11]]}},"keywords":{}}],["indic",{"_index":503,"title":{},"content":{"36":{"position":[[519,10]]}},"keywords":{}}],["individu",{"_index":1978,"title":{},"content":{"206":{"position":[[55,10]]}},"keywords":{}}],["info",{"_index":1276,"title":{},"content":{"110":{"position":[[46,4]]},"118":{"position":[[135,4]]},"248":{"position":[[199,4]]},"252":{"position":[[458,5]]},"256":{"position":[[62,4]]},"265":{"position":[[70,5],[359,5]]},"266":{"position":[[63,5],[345,5]]},"267":{"position":[[631,4]]}},"keywords":{}}],["info)clean",{"_index":1493,"title":{},"content":{"135":{"position":[[165,10]]}},"keywords":{}}],["inform",{"_index":1186,"title":{"104":{"position":[[9,12]]}},"content":{"99":{"position":[[14,11]]}},"keywords":{}}],["informational)wrong",{"_index":2307,"title":{},"content":{"246":{"position":[[1303,20]]}},"keywords":{}}],["inherit",{"_index":655,"title":{},"content":{"43":{"position":[[600,8]]},"278":{"position":[[219,7]]}},"keywords":{}}],["init",{"_index":966,"title":{},"content":{"69":{"position":[[251,5]]}},"keywords":{}}],["initi",{"_index":1489,"title":{},"content":{"135":{"position":[[73,7]]},"265":{"position":[[1,7]]},"266":{"position":[[1,7]]},"275":{"position":[[13,7]]}},"keywords":{}}],["input",{"_index":833,"title":{},"content":{"56":{"position":[[563,6]]},"70":{"position":[[290,7]]}},"keywords":{}}],["insight",{"_index":478,"title":{},"content":{"34":{"position":[[7,8]]},"301":{"position":[[237,9]]}},"keywords":{}}],["inspect",{"_index":1342,"title":{},"content":{"118":{"position":[[193,7]]}},"keywords":{}}],["instal",{"_index":985,"title":{},"content":{"72":{"position":[[173,7]]},"129":{"position":[[1,7],[31,7]]},"135":{"position":[[390,7]]},"179":{"position":[[1041,10],[1129,9],[1188,9],[1268,9],[1439,12],[1566,7],[1614,7]]},"202":{"position":[[3,7],[26,7]]},"229":{"position":[[42,9]]},"246":{"position":[[2524,12]]},"278":{"position":[[349,12],[1080,12]]},"287":{"position":[[8,13],[227,12],[278,12],[329,12]]}},"keywords":{}}],["instanc",{"_index":473,"title":{},"content":{"33":{"position":[[531,8]]},"47":{"position":[[17,9]]},"53":{"position":[[78,8]]},"67":{"position":[[510,8]]}},"keywords":{}}],["instancecommit",{"_index":1486,"title":{},"content":{"134":{"position":[[391,14]]}},"keywords":{}}],["instanceregist",{"_index":378,"title":{},"content":{"31":{"position":[[60,17]]}},"keywords":{}}],["instead",{"_index":2141,"title":{},"content":{"239":{"position":[[957,7]]},"278":{"position":[[1287,7]]}},"keywords":{}}],["instruct",{"_index":1741,"title":{"193":{"position":[[12,13]]}},"content":{"170":{"position":[[304,12]]}},"keywords":{}}],["insuffici",{"_index":2383,"title":{},"content":{"251":{"position":[[84,12]]},"263":{"position":[[596,12]]},"265":{"position":[[272,14]]}},"keywords":{}}],["insufficient"",{"_index":2600,"title":{},"content":{"267":{"position":[[396,18]]}},"keywords":{}}],["integr",{"_index":28,"title":{"86":{"position":[[30,10]]},"120":{"position":[[0,11]]},"163":{"position":[[0,11]]},"224":{"position":[[0,11]]},"232":{"position":[[12,12]]},"289":{"position":[[13,11]]}},"content":{"1":{"position":[[229,11]]},"3":{"position":[[33,11],[130,13]]},"16":{"position":[[35,11]]},"31":{"position":[[21,11]]},"33":{"position":[[5,11]]},"40":{"position":[[182,11]]},"50":{"position":[[5,11]]},"52":{"position":[[479,11]]},"55":{"position":[[407,13]]},"72":{"position":[[181,11]]},"75":{"position":[[16,12]]},"77":{"position":[[1188,11]]},"87":{"position":[[169,11]]},"90":{"position":[[256,9]]},"93":{"position":[[150,9],[272,11]]},"94":{"position":[[569,11]]},"101":{"position":[[109,11]]},"106":{"position":[[520,11]]},"133":{"position":[[6,11]]},"134":{"position":[[304,12]]},"135":{"position":[[323,11]]},"136":{"position":[[52,11]]},"137":{"position":[[560,11]]},"138":{"position":[[12,11]]},"156":{"position":[[155,11]]},"224":{"position":[[58,11]]},"233":{"position":[[94,11]]},"239":{"position":[[227,11]]},"255":{"position":[[2322,10]]},"277":{"position":[[5,11]]},"278":{"position":[[1656,11]]},"281":{"position":[[1235,12]]},"289":{"position":[[210,11],[272,11]]}},"keywords":{}}],["integrationsmarkdown",{"_index":1913,"title":{},"content":{"195":{"position":[[117,21]]}},"keywords":{}}],["intellig",{"_index":1811,"title":{"179":{"position":[[16,14]]}},"content":{},"keywords":{}}],["intens",{"_index":869,"title":{},"content":{"56":{"position":[[1736,9]]},"67":{"position":[[348,9]]}},"keywords":{}}],["intent",{"_index":2155,"title":{},"content":{"239":{"position":[[1586,11]]},"273":{"position":[[4968,11]]},"286":{"position":[[216,12]]}},"keywords":{}}],["interact",{"_index":1412,"title":{},"content":{"129":{"position":[[113,11]]},"131":{"position":[[182,12]]},"235":{"position":[[144,11]]},"239":{"position":[[1222,11]]},"275":{"position":[[52,11]]}},"keywords":{}}],["interactions)chang",{"_index":2143,"title":{},"content":{"239":{"position":[[1048,21]]}},"keywords":{}}],["intermedi",{"_index":1602,"title":{},"content":{"147":{"position":[[148,12]]}},"keywords":{}}],["intern",{"_index":74,"title":{},"content":{"3":{"position":[[683,8]]},"43":{"position":[[767,8]]},"239":{"position":[[584,10],[1281,9]]}},"keywords":{}}],["interquartil",{"_index":2531,"title":{},"content":{"255":{"position":[[3798,14]]}},"keywords":{}}],["interv",{"_index":546,"title":{},"content":{"37":{"position":[[721,8],[786,8]]},"41":{"position":[[26,9]]},"42":{"position":[[422,8],[498,8]]},"43":{"position":[[217,8],[503,10]]},"51":{"position":[[276,9],[312,9],[1324,9]]},"56":{"position":[[310,9],[638,8],[854,9],[1540,8]]},"61":{"position":[[169,10]]},"86":{"position":[[340,9]]},"100":{"position":[[298,9]]},"111":{"position":[[553,10]]},"118":{"position":[[417,10]]},"122":{"position":[[110,10],[252,9],[305,9],[357,9]]},"206":{"position":[[81,8],[93,10]]},"216":{"position":[[126,9]]},"241":{"position":[[328,8],[557,9]]},"242":{"position":[[346,10]]},"243":{"position":[[2258,8]]},"255":{"position":[[857,9],[908,9],[1048,10],[2290,9],[2702,9]]},"256":{"position":[[197,9],[238,9]]},"262":{"position":[[272,9]]},"263":{"position":[[210,9],[351,9]]},"264":{"position":[[412,9]]},"267":{"position":[[93,10]]},"273":{"position":[[1557,8],[2245,10],[3524,9],[3619,9],[4410,9]]},"277":{"position":[[93,8]]},"279":{"position":[[219,8]]}},"keywords":{}}],["interval"",{"_index":2841,"title":{},"content":{"279":{"position":[[1710,14]]}},"keywords":{}}],["interval'",{"_index":2706,"title":{},"content":{"273":{"position":[[1817,10],[1954,10],[2003,10],[2864,10]]}},"keywords":{}}],["interval)ha",{"_index":2833,"title":{},"content":{"279":{"position":[[1284,11]]}},"keywords":{}}],["interval)se",{"_index":2834,"title":{},"content":{"279":{"position":[[1351,12]]}},"keywords":{}}],["intervalcalcul",{"_index":657,"title":{},"content":{"43":{"position":[[676,19]]}},"keywords":{}}],["intervalcriteria",{"_index":2444,"title":{},"content":{"255":{"position":[[315,17]]}},"keywords":{}}],["intervalmaintain",{"_index":2210,"title":{},"content":{"243":{"position":[[746,17]]}},"keywords":{}}],["intervalpric",{"_index":1526,"title":{},"content":{"137":{"position":[[299,13]]}},"keywords":{}}],["intervals)peak",{"_index":2351,"title":{},"content":{"247":{"position":[[231,14]]}},"keywords":{}}],["intervals_get_rolling_hour_value(offset",{"_index":645,"title":{},"content":{"43":{"position":[[166,40]]}},"keywords":{}}],["intervalsallow",{"_index":2846,"title":{},"content":{"279":{"position":[[2026,15]]}},"keywords":{}}],["intervalslead",{"_index":1266,"title":{},"content":{"107":{"position":[[81,16]]}},"keywords":{}}],["intervalsperiod",{"_index":2556,"title":{},"content":{"259":{"position":[[123,16]]}},"keywords":{}}],["intervalspric",{"_index":1267,"title":{},"content":{"107":{"position":[[135,14]]}},"keywords":{}}],["intervent",{"_index":1921,"title":{},"content":{"196":{"position":[[474,12]]}},"keywords":{}}],["invalid",{"_index":405,"title":{"58":{"position":[[6,12]]},"78":{"position":[[9,12]]}},"content":{"31":{"position":[[567,7]]},"33":{"position":[[101,12]]},"34":{"position":[[29,13]]},"48":{"position":[[127,13]]},"51":{"position":[[625,12]]},"52":{"position":[[430,12]]},"55":{"position":[[350,12]]},"56":{"position":[[964,12]]},"60":{"position":[[292,11]]},"61":{"position":[[200,11]]},"62":{"position":[[368,12],[405,12],[462,12],[528,12],[608,11]]},"66":{"position":[[29,13]]},"67":{"position":[[26,12],[916,12]]},"78":{"position":[[56,13],[120,11]]},"89":{"position":[[196,12]]},"92":{"position":[[240,11]]},"106":{"position":[[1,7]]},"131":{"position":[[329,13]]},"157":{"position":[[225,7]]},"204":{"position":[[535,12]]},"285":{"position":[[156,7]]},"300":{"position":[[84,13]]}},"keywords":{}}],["invalidate_config_cach",{"_index":803,"title":{},"content":{"55":{"position":[[261,25]]},"56":{"position":[[1018,25]]},"69":{"position":[[93,25]]}},"keywords":{}}],["invalidate_config_cache()coordinator/periods.pi",{"_index":1065,"title":{},"content":{"78":{"position":[[471,47]]}},"keywords":{}}],["invalidate_config_cache()sensor/calculators/trend.pi",{"_index":1066,"title":{},"content":{"78":{"position":[[521,52]]}},"keywords":{}}],["invalidate_config_cache(self",{"_index":1968,"title":{},"content":{"204":{"position":[[787,30]]}},"keywords":{}}],["invalidatedtrend",{"_index":1059,"title":{},"content":{"78":{"position":[[191,16]]}},"keywords":{}}],["investig",{"_index":956,"title":{},"content":{"67":{"position":[[1008,13]]}},"keywords":{}}],["invis",{"_index":2949,"title":{},"content":{"290":{"position":[[159,10]]}},"keywords":{}}],["ipython",{"_index":1407,"title":{"129":{"position":[[0,7]]}},"content":{"129":{"position":[[39,7],[71,7]]}},"keywords":{}}],["irrelevantdynam",{"_index":2560,"title":{},"content":{"260":{"position":[[125,17]]}},"keywords":{}}],["is_cache_valid",{"_index":976,"title":{},"content":{"71":{"position":[[9,16]]}},"keywords":{}}],["is_cache_valid(cache_data",{"_index":737,"title":{},"content":{"51":{"position":[[943,26]]}},"keywords":{}}],["ishom",{"_index":1912,"title":{},"content":{"195":{"position":[[60,6]]}},"keywords":{}}],["isn't",{"_index":1767,"title":{},"content":{"173":{"position":[[300,5]]}},"keywords":{}}],["iso",{"_index":1224,"title":{},"content":{"103":{"position":[[226,3]]}},"keywords":{}}],["isol",{"_index":660,"title":{},"content":{"43":{"position":[[731,8]]},"255":{"position":[[701,8]]},"264":{"position":[[166,8]]},"267":{"position":[[1158,8]]}},"keywords":{}}],["isort)max",{"_index":8,"title":{},"content":{"1":{"position":[[49,9]]}},"keywords":{}}],["issu",{"_index":25,"title":{"27":{"position":[[8,6]]},"68":{"position":[[16,7]]},"119":{"position":[[7,7]]},"295":{"position":[[16,7]]},"299":{"position":[[7,7]]}},"content":{"1":{"position":[[184,6]]},"21":{"position":[[384,6]]},"27":{"position":[[12,6],[44,5],[162,5]]},"28":{"position":[[8,6]]},"67":{"position":[[1033,6]]},"85":{"position":[[131,5]]},"90":{"position":[[310,6],[489,7]]},"92":{"position":[[267,8],[368,8]]},"133":{"position":[[1185,6]]},"135":{"position":[[232,6]]},"146":{"position":[[233,6]]},"148":{"position":[[112,6]]},"167":{"position":[[111,6]]},"241":{"position":[[477,6]]},"247":{"position":[[261,5]]},"267":{"position":[[35,7]]},"273":{"position":[[963,6]]}},"keywords":{}}],["issues)fast",{"_index":2526,"title":{},"content":{"255":{"position":[[3580,11]]}},"keywords":{}}],["it'",{"_index":2923,"title":{},"content":{"286":{"position":[[173,4]]}},"keywords":{}}],["item",{"_index":1976,"title":{},"content":{"206":{"position":[[18,5]]},"210":{"position":[[208,5],[286,5]]}},"keywords":{}}],["iter",{"_index":1568,"title":{"147":{"position":[[3,7]]}},"content":{"145":{"position":[[64,11],[193,7]]},"162":{"position":[[110,11]]},"174":{"position":[[123,9]]},"255":{"position":[[1938,9],[2635,9],[3532,10]]}},"keywords":{}}],["itself",{"_index":2885,"title":{},"content":{"281":{"position":[[1034,6]]}},"keywords":{}}],["ja",{"_index":2917,"title":{},"content":{"286":{"position":[[77,2]]}},"keywords":{}}],["jitter",{"_index":621,"title":{},"content":{"42":{"position":[[335,6]]},"299":{"position":[[303,6]]}},"keywords":{}}],["jkl3456](link",{"_index":1870,"title":{},"content":{"181":{"position":[[345,15]]}},"keywords":{}}],["json",{"_index":442,"title":{},"content":{"31":{"position":[[1321,6]]},"135":{"position":[[345,6]]},"224":{"position":[[105,5],[260,4],[316,4]]}},"keywords":{}}],["judgment",{"_index":1753,"title":{},"content":{"172":{"position":[[12,9]]}},"keywords":{}}],["jump",{"_index":2736,"title":{},"content":{"273":{"position":[[3420,6],[3740,4]]},"280":{"position":[[728,7]]}},"keywords":{}}],["justif",{"_index":2312,"title":{},"content":{"246":{"position":[[1446,14]]}},"keywords":{}}],["k",{"_index":1333,"title":{},"content":{"116":{"position":[[147,1]]}},"keywords":{}}],["kb",{"_index":2029,"title":{},"content":{"216":{"position":[[55,3]]}},"keywords":{}}],["keep",{"_index":1043,"title":{"286":{"position":[[7,4]]}},"content":{"77":{"position":[[1293,4]]},"132":{"position":[[379,4]]},"133":{"position":[[402,7]]},"149":{"position":[[434,4]]},"216":{"position":[[1,4]]},"255":{"position":[[1767,4]]}},"keywords":{}}],["key",{"_index":477,"title":{"39":{"position":[[0,3]]},"111":{"position":[[0,3]]},"137":{"position":[[3,3]]},"255":{"position":[[0,3]]}},"content":{"34":{"position":[[3,3]]},"43":{"position":[[447,4]]},"56":{"position":[[541,4]]},"72":{"position":[[159,4]]},"86":{"position":[[126,4]]},"150":{"position":[[461,3]]},"174":{"position":[[1,3]]},"256":{"position":[[142,3]]},"277":{"position":[[360,3]]},"283":{"position":[[443,3]]},"284":{"position":[[552,3]]},"285":{"position":[[415,3]]},"301":{"position":[[233,3]]}},"keywords":{}}],["keysal",{"_index":1089,"title":{},"content":{"81":{"position":[[111,7]]}},"keywords":{}}],["keysboth",{"_index":1091,"title":{},"content":{"81":{"position":[[162,8]]}},"keywords":{}}],["kick",{"_index":1793,"title":{},"content":{"176":{"position":[[862,5]]}},"keywords":{}}],["knob",{"_index":2408,"title":{},"content":{"252":{"position":[[980,5]]},"272":{"position":[[2263,6]]}},"keywords":{}}],["know",{"_index":1759,"title":{"173":{"position":[[12,4]]}},"content":{},"keywords":{}}],["known",{"_index":1152,"title":{"270":{"position":[[0,5]]},"273":{"position":[[0,5]]}},"content":{"90":{"position":[[483,5]]}},"keywords":{}}],["krona",{"_index":1242,"title":{},"content":{"104":{"position":[[157,6]]}},"keywords":{}}],["krone",{"_index":1239,"title":{},"content":{"104":{"position":[[115,6]]}},"keywords":{}}],["kwarg",{"_index":1938,"title":{},"content":{"200":{"position":[[131,10],[191,9]]}},"keywords":{}}],["label",{"_index":351,"title":{},"content":{"27":{"position":[[23,8]]}},"keywords":{}}],["labelsnot",{"_index":1808,"title":{},"content":{"178":{"position":[[280,11]]}},"keywords":{}}],["lack",{"_index":94,"title":{},"content":{"3":{"position":[[1245,4]]}},"keywords":{}}],["languag",{"_index":1115,"title":{},"content":{"85":{"position":[[44,9]]},"90":{"position":[[230,10]]},"133":{"position":[[412,8]]},"137":{"position":[[513,9]]},"204":{"position":[[305,9],[470,9]]}},"keywords":{}}],["languageus",{"_index":1471,"title":{},"content":{"133":{"position":[[1125,12]]}},"keywords":{}}],["larg",{"_index":323,"title":{"159":{"position":[[20,5]]}},"content":{"25":{"position":[[165,5]]},"210":{"position":[[249,5]]},"216":{"position":[[31,5]]}},"keywords":{}}],["last",{"_index":722,"title":{},"content":{"51":{"position":[[426,4]]},"146":{"position":[[170,6]]},"149":{"position":[[55,7]]},"152":{"position":[[112,4]]},"289":{"position":[[291,4]]}},"keywords":{}}],["last_check=2025",{"_index":2897,"title":{},"content":{"284":{"position":[[73,15],[242,15],[462,15]]}},"keywords":{}}],["late",{"_index":2743,"title":{},"content":{"273":{"position":[[3519,4]]}},"keywords":{}}],["later",{"_index":2733,"title":{},"content":{"273":{"position":[[3288,5]]}},"keywords":{}}],["latest",{"_index":1814,"title":{},"content":{"179":{"position":[[124,6]]}},"keywords":{}}],["launch",{"_index":1291,"title":{"113":{"position":[[0,6]]}},"content":{},"keywords":{}}],["layer",{"_index":446,"title":{},"content":{"33":{"position":[[44,6],[77,5]]},"50":{"position":[[41,6]]},"131":{"position":[[321,7]]}},"keywords":{}}],["layersarchitectur",{"_index":2064,"title":{},"content":{"222":{"position":[[221,18]]}},"keywords":{}}],["lazi",{"_index":681,"title":{"205":{"position":[[0,4]]}},"content":{"46":{"position":[[148,4]]}},"keywords":{}}],["lead",{"_index":994,"title":{},"content":{"75":{"position":[[80,4]]}},"keywords":{}}],["leak",{"_index":993,"title":{"77":{"position":[[28,4]]},"209":{"position":[[13,6]]}},"content":{"75":{"position":[[74,5],[97,6],[170,6],[252,6],[338,6]]},"92":{"position":[[22,4],[120,7],[169,7]]},"93":{"position":[[347,4]]},"94":{"position":[[454,4]]}},"keywords":{}}],["leakwith",{"_index":1024,"title":{},"content":{"77":{"position":[[563,8]]}},"keywords":{}}],["learn",{"_index":1640,"title":{},"content":{"150":{"position":[[465,10]]},"269":{"position":[[160,8],[179,5]]},"272":{"position":[[834,8],[877,5]]}},"keywords":{}}],["legend",{"_index":1148,"title":{},"content":{"90":{"position":[[386,7]]}},"keywords":{}}],["legitim",{"_index":2329,"title":{},"content":{"246":{"position":[[1936,10]]},"247":{"position":[[786,10]]},"255":{"position":[[1337,10],[3389,10],[3732,10]]},"267":{"position":[[1179,10]]}},"keywords":{}}],["len(coordinator.data['priceinfo'])}"",{"_index":1341,"title":{},"content":{"118":{"position":[[147,43]]}},"keywords":{}}],["len(period['intervals'])}"",{"_index":1349,"title":{},"content":{"118":{"position":[[428,33]]}},"keywords":{}}],["lend",{"_index":2763,"title":{},"content":{"273":{"position":[[4456,5]]}},"keywords":{}}],["length",{"_index":10,"title":{},"content":{"1":{"position":[[64,7]]},"133":{"position":[[573,7]]}},"keywords":{}}],["lenient)min_dist",{"_index":2564,"title":{},"content":{"262":{"position":[[175,20]]}},"keywords":{}}],["less",{"_index":2583,"title":{},"content":{"264":{"position":[[209,4]]},"272":{"position":[[580,5],[649,5]]},"273":{"position":[[4315,4]]}},"keywords":{}}],["level",{"_index":415,"title":{"239":{"position":[[3,5],[23,5]]}},"content":{"31":{"position":[[719,6]]},"36":{"position":[[454,7]]},"38":{"position":[[80,5]]},"56":{"position":[[764,5]]},"85":{"position":[[79,5]]},"86":{"position":[[394,5]]},"100":{"position":[[189,5]]},"107":{"position":[[253,6]]},"122":{"position":[[333,5]]},"146":{"position":[[317,5]]},"170":{"position":[[98,6]]},"239":{"position":[[611,5],[1259,6]]},"250":{"position":[[150,6]]},"252":{"position":[[242,6]]},"253":{"position":[[10,6],[41,5]]},"255":{"position":[[1074,5]]},"267":{"position":[[273,5],[291,5],[1196,6]]},"272":{"position":[[1685,5]]}},"keywords":{}}],["level)high",{"_index":2594,"title":{},"content":{"267":{"position":[[124,10]]}},"keywords":{}}],["level="volatility_low"",{"_index":2132,"title":{},"content":{"239":{"position":[[644,32]]}},"keywords":{}}],["level=ani",{"_index":2440,"title":{},"content":{"253":{"position":[[339,10]]},"265":{"position":[[316,9]]}},"keywords":{}}],["level=cheap",{"_index":2439,"title":{},"content":{"253":{"position":[[297,12]]}},"keywords":{}}],["level_filtering.pi",{"_index":2124,"title":{},"content":{"239":{"position":[[129,18]]},"243":{"position":[[859,18]]}},"keywords":{}}],["levelbett",{"_index":2518,"title":{},"content":{"255":{"position":[[3272,11]]}},"keywords":{}}],["leveloptim",{"_index":2626,"title":{},"content":{"269":{"position":[[409,13]]}},"keywords":{}}],["licens",{"_index":1547,"title":{"141":{"position":[[3,8]]}},"content":{"141":{"position":[[17,8],[43,7]]}},"keywords":{}}],["lifecycl",{"_index":515,"title":{},"content":{"37":{"position":[[177,10]]},"84":{"position":[[142,9]]},"87":{"position":[[31,9]]},"93":{"position":[[235,9]]},"146":{"position":[[446,9]]},"150":{"position":[[592,9]]},"153":{"position":[[74,9]]},"154":{"position":[[110,12]]},"174":{"position":[[200,9]]}},"keywords":{}}],["lifecycleimpl",{"_index":1636,"title":{},"content":{"150":{"position":[[334,20]]}},"keywords":{}}],["lifetim",{"_index":450,"title":{},"content":{"33":{"position":[[92,8]]},"50":{"position":[[76,10]]},"51":{"position":[[460,9]]},"52":{"position":[[390,9]]},"55":{"position":[[244,9]]},"56":{"position":[[809,9]]},"67":{"position":[[12,8],[994,8]]},"300":{"position":[[73,10]]}},"keywords":{}}],["lightweight",{"_index":2066,"title":{},"content":{"224":{"position":[[184,11]]},"280":{"position":[[805,11]]}},"keywords":{}}],["limit",{"_index":1207,"title":{"101":{"position":[[5,7]]},"244":{"position":[[5,6]]},"247":{"position":[[5,6]]},"270":{"position":[[6,12]]},"273":{"position":[[6,12]]}},"content":{"101":{"position":[[17,6],[77,6],[144,7]]},"106":{"position":[[175,5]]},"133":{"position":[[943,12]]},"182":{"position":[[231,7]]},"237":{"position":[[10,5]]},"248":{"position":[[596,7]]}},"keywords":{}}],["line",{"_index":9,"title":{},"content":{"1":{"position":[[59,4]]},"25":{"position":[[184,6]]},"37":{"position":[[118,5]]},"133":{"position":[[568,4]]},"143":{"position":[[180,5]]},"150":{"position":[[97,6]]},"160":{"position":[[100,5]]},"166":{"position":[[126,5],[205,5],[283,6]]},"170":{"position":[[66,4],[74,4],[299,4]]},"172":{"position":[[46,6],[188,6]]},"174":{"position":[[53,6]]},"273":{"position":[[5204,5]]}},"keywords":{}}],["linear",{"_index":2232,"title":{},"content":{"243":{"position":[[1943,6]]},"255":{"position":[[810,6],[2990,7],[3128,6]]},"270":{"position":[[122,6]]},"273":{"position":[[514,6],[549,6],[617,6],[820,6],[873,6]]}},"keywords":{}}],["lines)clear",{"_index":566,"title":{},"content":{"37":{"position":[[1120,11]]}},"keywords":{}}],["lines)smal",{"_index":1562,"title":{},"content":{"143":{"position":[[578,11]]}},"keywords":{}}],["linesclear",{"_index":1633,"title":{},"content":{"150":{"position":[[188,10]]}},"keywords":{}}],["lint",{"_index":212,"title":{},"content":{"15":{"position":[[133,7]]},"21":{"position":[[303,7]]},"22":{"position":[[129,7]]},"94":{"position":[[414,7]]},"131":{"position":[[496,8]]},"133":{"position":[[540,7]]},"134":{"position":[[272,8]]},"156":{"position":[[34,7]]},"173":{"position":[[85,7]]},"233":{"position":[[3,4]]}},"keywords":{}}],["linter/formattergit",{"_index":2084,"title":{},"content":{"231":{"position":[[166,20]]}},"keywords":{}}],["linux",{"_index":1852,"title":{},"content":{"179":{"position":[[1747,5]]}},"keywords":{}}],["list",{"_index":109,"title":{},"content":{"3":{"position":[[1465,4]]},"81":{"position":[[171,5]]},"86":{"position":[[319,4]]},"170":{"position":[[106,5]]},"210":{"position":[[29,4],[155,4]]},"281":{"position":[[648,4],[747,4]]}},"keywords":{}}],["list[dict",{"_index":1321,"title":{},"content":{"114":{"position":[[283,11]]},"255":{"position":[[107,11]]}},"keywords":{}}],["list[weakref.ref",{"_index":1998,"title":{},"content":{"209":{"position":[[299,17]]}},"keywords":{}}],["listen",{"_index":1001,"title":{"281":{"position":[[0,8]]}},"content":{"75":{"position":[[177,9]]},"77":{"position":[[43,8],[96,9],[179,9],[417,9],[459,8],[588,8],[1511,8],[1712,8],[1886,9]]},"92":{"position":[[75,9],[217,11]]},"279":{"position":[[1660,7]]},"280":{"position":[[468,7]]},"281":{"position":[[373,8],[656,9],[948,9]]}},"keywords":{}}],["listener'?"",{"_index":2870,"title":{},"content":{"281":{"position":[[53,17]]}},"keywords":{}}],["listenermanag",{"_index":2880,"title":{},"content":{"281":{"position":[[672,16]]}},"keywords":{}}],["listenermanager.schedule_minute_refresh",{"_index":2847,"title":{},"content":{"280":{"position":[[34,41]]}},"keywords":{}}],["listenermanager.schedule_quarter_hour_refresh",{"_index":2817,"title":{},"content":{"279":{"position":[[34,47]]}},"keywords":{}}],["listenersbinari",{"_index":1019,"title":{},"content":{"77":{"position":[[363,15]]}},"keywords":{}}],["littl",{"_index":2208,"title":{},"content":{"243":{"position":[[700,7]]},"259":{"position":[[87,7]]}},"keywords":{}}],["live",{"_index":1100,"title":{"127":{"position":[[0,4]]}},"content":{"83":{"position":[[101,6],[167,6]]},"171":{"position":[[44,6]]}},"keywords":{}}],["load",{"_index":139,"title":{"7":{"position":[[12,8]]},"120":{"position":[[16,8]]},"205":{"position":[[5,8]]},"219":{"position":[[0,4]]},"287":{"position":[[10,4]]}},"content":{"16":{"position":[[47,6]]},"31":{"position":[[33,6]]},"38":{"position":[[266,7]]},"40":{"position":[[172,6]]},"46":{"position":[[250,7]]},"51":{"position":[[910,5],[1303,4]]},"52":{"position":[[563,8],[610,4]]},"62":{"position":[[637,5]]},"75":{"position":[[232,4]]},"77":{"position":[[1311,4]]},"137":{"position":[[549,7]]},"152":{"position":[[171,4]]},"156":{"position":[[167,5]]},"205":{"position":[[1,4]]},"278":{"position":[[1052,4],[1258,4]]},"280":{"position":[[944,4]]},"287":{"position":[[476,4]]},"301":{"position":[[279,5]]}},"keywords":{}}],["load_translation(path",{"_index":1963,"title":{},"content":{"204":{"position":[[447,22]]}},"keywords":{}}],["loadingpract",{"_index":1117,"title":{},"content":{"85":{"position":[[102,18]]}},"keywords":{}}],["loads)test",{"_index":1676,"title":{},"content":{"157":{"position":[[277,10]]}},"keywords":{}}],["local",{"_index":215,"title":{"16":{"position":[[8,8]]},"179":{"position":[[3,5]]}},"content":{"51":{"position":[[531,5]]},"100":{"position":[[349,5]]},"149":{"position":[[439,7]]},"179":{"position":[[68,8]]},"182":{"position":[[254,5]]},"190":{"position":[[36,6]]},"191":{"position":[[36,8]]},"194":{"position":[[42,5]]},"196":{"position":[[246,8]]},"224":{"position":[[88,5]]},"255":{"position":[[1864,5],[3422,5]]},"272":{"position":[[1179,5]]}},"keywords":{}}],["local_now.d",{"_index":743,"title":{},"content":{"51":{"position":[[1058,17]]}},"keywords":{}}],["locallyy",{"_index":1879,"title":{},"content":{"184":{"position":[[301,10]]}},"keywords":{}}],["locat",{"_index":449,"title":{},"content":{"33":{"position":[[83,8]]},"46":{"position":[[14,8]]},"51":{"position":[[1,9]]},"52":{"position":[[1,9]]},"53":{"position":[[1,9]]},"56":{"position":[[1,9]]},"57":{"position":[[1,9]]},"77":{"position":[[655,10],[1356,10],[1841,10]]},"78":{"position":[[422,10]]},"79":{"position":[[402,10]]}},"keywords":{}}],["lock",{"_index":917,"title":{},"content":{"62":{"position":[[735,7]]}},"keywords":{}}],["log",{"_index":682,"title":{"109":{"position":[[0,8]]},"110":{"position":[[13,8]]},"111":{"position":[[4,3]]},"221":{"position":[[0,3]]}},"content":{"46":{"position":[[153,7],[180,3]]},"70":{"position":[[199,4]]},"71":{"position":[[121,4]]},"83":{"position":[[327,6]]},"110":{"position":[[51,5]]},"120":{"position":[[120,4]]},"121":{"position":[[154,7]]},"122":{"position":[[24,5]]},"156":{"position":[[145,4]]},"184":{"position":[[101,3]]},"243":{"position":[[1077,3]]},"248":{"position":[[204,4],[284,4]]},"256":{"position":[[14,8],[67,5],[146,3]]},"296":{"position":[[16,7],[74,3]]},"297":{"position":[[21,5]]},"298":{"position":[[21,5]]}},"keywords":{}}],["log)ar",{"_index":961,"title":{},"content":{"69":{"position":[[85,7]]}},"keywords":{}}],["logger",{"_index":1274,"title":{},"content":{"110":{"position":[[29,7]]},"256":{"position":[[45,7]]}},"keywords":{}}],["logic",{"_index":490,"title":{},"content":{"36":{"position":[[81,6]]},"37":{"position":[[273,5],[1156,7]]},"38":{"position":[[226,5]]},"43":{"position":[[725,5],[843,6]]},"71":{"position":[[26,5]]},"107":{"position":[[295,6]]},"136":{"position":[[627,5],[665,5]]},"235":{"position":[[317,6]]},"237":{"position":[[68,6]]},"238":{"position":[[109,6]]},"239":{"position":[[118,6]]},"278":{"position":[[1616,5]]},"281":{"position":[[1078,5]]},"289":{"position":[[89,5]]},"299":{"position":[[246,6],[352,5]]}},"keywords":{}}],["logicon",{"_index":2887,"title":{},"content":{"281":{"position":[[1096,8]]}},"keywords":{}}],["logicsmart",{"_index":2494,"title":{},"content":{"255":{"position":[[2475,10]]}},"keywords":{}}],["logictest",{"_index":317,"title":{},"content":{"25":{"position":[[71,10]]}},"keywords":{}}],["long",{"_index":766,"title":{},"content":{"52":{"position":[[371,4]]},"83":{"position":[[211,4]]},"90":{"position":[[84,4]]},"132":{"position":[[72,4]]},"163":{"position":[[131,4]]},"215":{"position":[[9,4],[174,4]]},"246":{"position":[[466,4]]},"272":{"position":[[1691,5]]}},"keywords":{}}],["look",{"_index":310,"title":{"25":{"position":[[15,4]]}},"content":{"267":{"position":[[1022,4]]}},"keywords":{}}],["lookup",{"_index":812,"title":{},"content":{"55":{"position":[[667,7],[924,7]]},"67":{"position":[[259,7],[730,7]]},"210":{"position":[[38,7],[101,7]]}},"keywords":{}}],["lookup)sav",{"_index":868,"title":{},"content":{"56":{"position":[[1619,15]]}},"keywords":{}}],["loop",{"_index":779,"title":{},"content":{"52":{"position":[[935,5]]},"83":{"position":[[261,4]]},"206":{"position":[[45,4]]},"207":{"position":[[254,5]]}},"keywords":{}}],["loop)no",{"_index":916,"title":{},"content":{"62":{"position":[[727,7]]}},"keywords":{}}],["looptri",{"_index":2385,"title":{},"content":{"251":{"position":[[129,7]]}},"keywords":{}}],["lose",{"_index":2240,"title":{},"content":{"243":{"position":[[2170,5]]},"259":{"position":[[140,4]]}},"keywords":{}}],["loss",{"_index":1073,"title":{},"content":{"79":{"position":[[209,5],[330,4]]},"92":{"position":[[317,6]]}},"keywords":{}}],["low",{"_index":1150,"title":{},"content":{"90":{"position":[[454,3]]},"239":{"position":[[442,3],[755,4],[946,3]]},"248":{"position":[[117,6]]},"250":{"position":[[127,4]]},"262":{"position":[[331,3]]},"270":{"position":[[61,3]]},"273":{"position":[[74,3],[374,3],[4256,3]]}},"keywords":{}}],["low/normal/high",{"_index":416,"title":{},"content":{"31":{"position":[[726,17]]},"41":{"position":[[584,15]]}},"keywords":{}}],["lower",{"_index":2376,"title":{},"content":{"248":{"position":[[360,5]]},"252":{"position":[[472,8],[1305,5],[1955,8]]},"267":{"position":[[738,5]]},"269":{"position":[[96,5]]},"272":{"position":[[388,5]]},"273":{"position":[[3687,5]]}},"keywords":{}}],["lt",{"_index":742,"title":{},"content":{"51":{"position":[[1053,4]]},"83":{"position":[[235,4]]},"218":{"position":[[322,4]]},"237":{"position":[[153,5]]},"238":{"position":[[211,5]]},"239":{"position":[[446,4],[463,4],[760,4],[777,4]]},"243":{"position":[[1518,4],[1798,5]]},"263":{"position":[[612,4]]},"272":{"position":[[217,4],[239,5]]},"273":{"position":[[4271,5]]},"288":{"position":[[419,4]]}},"keywords":{}}],["lt;0.8",{"_index":2610,"title":{},"content":{"267":{"position":[[891,7]]}},"keywords":{}}],["lt;10",{"_index":2680,"title":{},"content":{"273":{"position":[[388,9]]}},"keywords":{}}],["lt;100",{"_index":1561,"title":{},"content":{"143":{"position":[[570,7]]},"172":{"position":[[37,8]]},"198":{"position":[[196,7]]}},"keywords":{}}],["lt;100m",{"_index":1928,"title":{},"content":{"198":{"position":[[122,9]]}},"keywords":{}}],["lt;10m",{"_index":1926,"title":{},"content":{"198":{"position":[[83,8]]}},"keywords":{}}],["lt;10mb",{"_index":1931,"title":{},"content":{"198":{"position":[[168,8]]}},"keywords":{}}],["lt;1kb",{"_index":940,"title":{},"content":{"67":{"position":[[214,7]]}},"keywords":{}}],["lt;1m",{"_index":866,"title":{},"content":{"56":{"position":[[1587,7]]},"255":{"position":[[2687,7]]}},"keywords":{}}],["lt;3",{"_index":1563,"title":{},"content":{"143":{"position":[[599,6]]}},"keywords":{}}],["lt;500m",{"_index":1923,"title":{},"content":{"198":{"position":[[38,9]]}},"keywords":{}}],["lt;800",{"_index":1632,"title":{},"content":{"150":{"position":[[180,7]]}},"keywords":{}}],["lt;`1m",{"_index":935,"title":{},"content":{"66":{"position":[[43,9]]}},"keywords":{}}],["lt;feature>",{"_index":1575,"title":{},"content":{"146":{"position":[[44,15]]}},"keywords":{}}],["lt;ha",{"_index":1915,"title":{},"content":{"195":{"position":[[200,6]]}},"keywords":{}}],["m",{"_index":238,"title":{},"content":{"18":{"position":[[53,1]]},"116":{"position":[[19,1]]},"126":{"position":[[9,1],[38,1],[72,1]]},"149":{"position":[[240,1]]},"202":{"position":[[71,1]]}},"keywords":{}}],["machin",{"_index":2621,"title":{},"content":{"269":{"position":[[152,7]]},"272":{"position":[[826,7]]}},"keywords":{}}],["maco",{"_index":1844,"title":{},"content":{"179":{"position":[[1555,5]]}},"keywords":{}}],["main",{"_index":474,"title":{},"content":{"33":{"position":[[540,5]]},"47":{"position":[[65,4]]},"67":{"position":[[519,5]]},"132":{"position":[[5,4]]},"176":{"position":[[358,4]]},"184":{"position":[[173,4]]},"186":{"position":[[200,4]]},"194":{"position":[[473,4]]},"235":{"position":[[379,4]]}},"keywords":{}}],["maintain",{"_index":307,"title":{},"content":{"23":{"position":[[110,10]]},"27":{"position":[[83,11]]},"133":{"position":[[309,11],[469,11],[704,10],[774,11],[864,10]]},"235":{"position":[[269,11]]},"239":{"position":[[239,9]]},"281":{"position":[[638,9]]}},"keywords":{}}],["mainten",{"_index":260,"title":{},"content":{"18":{"position":[[429,11]]},"181":{"position":[[290,11]]}},"keywords":{}}],["mainthread",{"_index":915,"title":{},"content":{"62":{"position":[[689,10]]}},"keywords":{}}],["major",{"_index":1222,"title":{},"content":{"103":{"position":[[194,5]]},"131":{"position":[[567,5]]},"143":{"position":[[82,5]]},"163":{"position":[[674,5]]},"170":{"position":[[39,5]]}},"keywords":{}}],["make",{"_index":204,"title":{"15":{"position":[[3,4]]},"233":{"position":[[0,6]]}},"content":{"152":{"position":[[129,5]]},"174":{"position":[[404,5]]},"252":{"position":[[1639,6]]},"260":{"position":[[113,6]]}},"keywords":{}}],["manag",{"_index":373,"title":{"83":{"position":[[14,11]]},"208":{"position":[[7,11]]}},"content":{"28":{"position":[[294,10]]},"36":{"position":[[158,11]]},"48":{"position":[[236,10]]},"57":{"position":[[344,7]]},"84":{"position":[[126,7]]},"90":{"position":[[37,10]]},"93":{"position":[[72,10]]},"131":{"position":[[411,10]]},"133":{"position":[[390,11]]},"209":{"position":[[253,8]]},"231":{"position":[[85,7]]}},"keywords":{}}],["mani",{"_index":92,"title":{},"content":{"3":{"position":[[1223,4]]},"106":{"position":[[248,4]]},"143":{"position":[[422,4]]},"239":{"position":[[1217,4]]},"246":{"position":[[616,4]]},"256":{"position":[[233,4]]},"272":{"position":[[2258,4]]},"281":{"position":[[1122,4]]}},"keywords":{}}],["manifest",{"_index":1876,"title":{},"content":{"182":{"position":[[166,8]]},"194":{"position":[[150,8]]}},"keywords":{}}],["manifest.json",{"_index":1782,"title":{},"content":{"176":{"position":[[154,13],[531,14],[559,13],[786,13]]},"184":{"position":[[263,13]]},"185":{"position":[[380,13]]},"187":{"position":[[128,13]]},"194":{"position":[[259,13]]},"224":{"position":[[237,13]]}},"keywords":{}}],["manifest.jsonmanifest.json",{"_index":1910,"title":{},"content":{"194":{"position":[[624,26]]}},"keywords":{}}],["manual",{"_index":286,"title":{"185":{"position":[[12,6]]},"186":{"position":[[12,6]]},"226":{"position":[[0,6]]}},"content":{"21":{"position":[[206,6]]},"66":{"position":[[310,6]]},"86":{"position":[[17,8]]},"93":{"position":[[180,8]]},"94":{"position":[[440,6]]},"176":{"position":[[573,8]]},"179":{"position":[[553,6],[1432,6],[1634,6]]},"182":{"position":[[194,6],[312,6]]},"185":{"position":[[24,8]]},"186":{"position":[[160,8]]},"196":{"position":[[467,6]]},"230":{"position":[[186,9]]},"246":{"position":[[1047,8]]},"289":{"position":[[233,8]]}},"keywords":{}}],["manuallyreleas",{"_index":1884,"title":{},"content":{"186":{"position":[[288,15]]}},"keywords":{}}],["map",{"_index":530,"title":{},"content":{"37":{"position":[[454,7]]},"43":{"position":[[428,7]]},"136":{"position":[[619,7],[657,7]]}},"keywords":{}}],["margin",{"_index":2114,"title":{},"content":{"238":{"position":[[89,10]]}},"keywords":{}}],["markdown",{"_index":1865,"title":{},"content":{"181":{"position":[[37,8]]},"195":{"position":[[164,8]]}},"keywords":{}}],["market",{"_index":2638,"title":{},"content":{"272":{"position":[[540,6],[745,7],[1185,6]]},"273":{"position":[[3390,6],[3450,7],[4620,6]]}},"keywords":{}}],["massiv",{"_index":2354,"title":{},"content":{"247":{"position":[[296,7]]}},"keywords":{}}],["match",{"_index":423,"title":{},"content":{"31":{"position":[[912,7]]},"64":{"position":[[158,6]]},"116":{"position":[[169,8]]},"194":{"position":[[175,5]]},"272":{"position":[[2050,5]]}},"keywords":{}}],["math",{"_index":2963,"title":{},"content":{"294":{"position":[[144,4]]}},"keywords":{}}],["mathemat",{"_index":1419,"title":{"242":{"position":[[0,12]]}},"content":{"131":{"position":[[142,12]]},"235":{"position":[[28,12]]},"246":{"position":[[1433,12]]},"273":{"position":[[3304,14],[4429,14],[5000,12]]}},"keywords":{}}],["matter",{"_index":752,"title":{"152":{"position":[[11,7]]}},"content":{"51":{"position":[[1282,8]]},"52":{"position":[[809,8]]},"55":{"position":[[793,8]]},"56":{"position":[[1701,8]]},"246":{"position":[[948,6],[2416,6]]}},"keywords":{}}],["max",{"_index":278,"title":{},"content":{"21":{"position":[[37,4]]},"83":{"position":[[108,3],[174,3]]},"85":{"position":[[34,3]]},"90":{"position":[[219,3]]},"133":{"position":[[581,3]]},"241":{"position":[[160,4],[196,3],[269,3]]},"247":{"position":[[272,3]]}},"keywords":{}}],["max(0.25",{"_index":2187,"title":{},"content":{"243":{"position":[[152,9],[1395,9]]}},"keywords":{}}],["max(base_flex",{"_index":2676,"title":{},"content":{"273":{"position":[[258,13]]}},"keywords":{}}],["max_flex_hard_limit",{"_index":2402,"title":{},"content":{"252":{"position":[[576,19]]}},"keywords":{}}],["max_outlier_flex",{"_index":2251,"title":{},"content":{"245":{"position":[[137,16]]}},"keywords":{}}],["max_relaxation_attempt",{"_index":2411,"title":{},"content":{"252":{"position":[[1061,23]]}},"keywords":{}}],["max_safe_flex",{"_index":2249,"title":{},"content":{"245":{"position":[[50,13]]},"247":{"position":[[26,16]]}},"keywords":{}}],["maximum",{"_index":2103,"title":{},"content":{"237":{"position":[[243,7]]},"246":{"position":[[1582,7]]},"247":{"position":[[13,8],[396,7],[537,8]]},"248":{"position":[[526,7]]},"252":{"position":[[620,7]]}},"keywords":{}}],["mb"",{"_index":2063,"title":{},"content":{"222":{"position":[[158,9]]}},"keywords":{}}],["mccabe)target",{"_index":15,"title":{},"content":{"1":{"position":[[105,15]]}},"keywords":{}}],["mean",{"_index":2212,"title":{},"content":{"243":{"position":[[773,8],[2343,5]]},"255":{"position":[[1002,4]]},"259":{"position":[[154,7]]},"273":{"position":[[4282,5]]}},"keywords":{}}],["mean(context_residu",{"_index":2479,"title":{},"content":{"255":{"position":[[1616,23]]}},"keywords":{}}],["meaning",{"_index":2213,"title":{},"content":{"243":{"position":[[798,10]]},"246":{"position":[[482,10]]},"273":{"position":[[3909,11]]}},"keywords":{}}],["meaningeven",{"_index":2241,"title":{},"content":{"243":{"position":[[2185,11]]}},"keywords":{}}],["meaningfully.abov",{"_index":2178,"title":{},"content":{"242":{"position":[[281,18]]}},"keywords":{}}],["measur",{"_index":1593,"title":{},"content":{"146":{"position":[[650,10]]},"215":{"position":[[44,11]]}},"keywords":{}}],["mechan",{"_index":2649,"title":{},"content":{"272":{"position":[[1273,9]]},"277":{"position":[[46,10]]},"281":{"position":[[124,9]]},"301":{"position":[[535,9]]}},"keywords":{}}],["median",{"_index":2528,"title":{},"content":{"255":{"position":[[3679,6]]}},"keywords":{}}],["mediocr",{"_index":2287,"title":{},"content":{"246":{"position":[[621,8]]},"272":{"position":[[1697,8]]}},"keywords":{}}],["medium",{"_index":1553,"title":{},"content":{"143":{"position":[[311,6]]},"239":{"position":[[456,6],[770,6]]}},"keywords":{}}],["meets_dist",{"_index":2116,"title":{},"content":{"238":{"position":[[188,14],[325,14]]}},"keywords":{}}],["meets_min_dist",{"_index":2229,"title":{},"content":{"243":{"position":[[1769,18]]},"255":{"position":[[371,19]]}},"keywords":{}}],["memori",{"_index":688,"title":{"47":{"position":[[0,6]]},"77":{"position":[[20,7]]},"85":{"position":[[21,7]]},"87":{"position":[[21,7]]},"125":{"position":[[0,6]]},"201":{"position":[[0,6]]},"208":{"position":[[0,6]]},"209":{"position":[[6,6]]},"222":{"position":[[0,6]]}},"content":{"50":{"position":[[160,8],[221,8],[277,8]]},"52":{"position":[[79,6]]},"57":{"position":[[904,6]]},"67":{"position":[[470,6],[830,6]]},"75":{"position":[[90,6]]},"77":{"position":[[556,6]]},"85":{"position":[[124,6]]},"90":{"position":[[334,6]]},"92":{"position":[[15,6]]},"93":{"position":[[212,6]]},"94":{"position":[[447,6]]},"132":{"position":[[82,6]]},"163":{"position":[[141,7]]},"204":{"position":[[189,8]]},"219":{"position":[[315,6]]},"222":{"position":[[139,6]]},"274":{"position":[[101,6]]}},"keywords":{}}],["memory)if",{"_index":404,"title":{},"content":{"31":{"position":[[513,10]]}},"keywords":{}}],["memory_mb",{"_index":2059,"title":{},"content":{"222":{"position":[[63,9],[168,10]]}},"keywords":{}}],["memoryaccess",{"_index":586,"title":{},"content":{"40":{"position":[[211,12]]}},"keywords":{}}],["memoryapi",{"_index":451,"title":{},"content":{"33":{"position":[[114,9]]}},"keywords":{}}],["mental",{"_index":2407,"title":{},"content":{"252":{"position":[[960,6]]},"272":{"position":[[692,6]]}},"keywords":{}}],["merg",{"_index":308,"title":{},"content":{"23":{"position":[[121,6]]},"133":{"position":[[722,7]]}},"keywords":{}}],["messag",{"_index":298,"title":{"111":{"position":[[8,9]]}},"content":{"22":{"position":[[248,8]]},"247":{"position":[[369,8]]},"252":{"position":[[1791,9]]},"256":{"position":[[150,8]]},"267":{"position":[[797,8]]},"296":{"position":[[78,9]]}},"keywords":{}}],["messagescheck",{"_index":2614,"title":{},"content":{"267":{"position":[[1060,13]]}},"keywords":{}}],["messagewhich",{"_index":2601,"title":{},"content":{"267":{"position":[[415,12]]}},"keywords":{}}],["met",{"_index":2355,"title":{},"content":{"247":{"position":[[355,4]]}},"keywords":{}}],["metadata",{"_index":560,"title":{},"content":{"37":{"position":[[1061,8]]},"99":{"position":[[30,9]]}},"keywords":{}}],["meteringpointdata",{"_index":1196,"title":{},"content":{"99":{"position":[[194,17]]}},"keywords":{}}],["method",{"_index":641,"title":{},"content":{"43":{"position":[[34,6],[81,7]]},"69":{"position":[[119,7]]},"181":{"position":[[5,7]]},"182":{"position":[[1,6]]},"278":{"position":[[283,6]]}},"keywords":{}}],["methodsorgan",{"_index":651,"title":{},"content":{"43":{"position":[[466,16]]}},"keywords":{}}],["methodtim",{"_index":2785,"title":{},"content":{"277":{"position":[[118,11]]}},"keywords":{}}],["metric",{"_index":1922,"title":{"221":{"position":[[16,8]]}},"content":{"198":{"position":[[8,8]]}},"keywords":{}}],["midnight",{"_index":454,"title":{"60":{"position":[[0,8]]},"65":{"position":[[6,8]]},"283":{"position":[[33,10]]},"284":{"position":[[12,8]]}},"content":{"33":{"position":[[168,8]]},"51":{"position":[[489,8],[649,8]]},"56":{"position":[[937,8],[1404,8]]},"57":{"position":[[445,8]]},"67":{"position":[[76,9]]},"73":{"position":[[48,8]]},"86":{"position":[[56,8]]},"93":{"position":[[162,8]]},"100":{"position":[[340,8]]},"111":{"position":[[224,8]]},"273":{"position":[[1514,8],[2148,8],[2576,9],[3038,8],[3748,8],[4572,8],[4711,8],[4837,8]]},"278":{"position":[[543,8],[739,8],[1311,8],[1426,8]]},"279":{"position":[[680,8],[914,8]]},"280":{"position":[[378,8]]},"284":{"position":[[38,9],[189,9],[207,9],[427,9]]},"288":{"position":[[690,9]]},"299":{"position":[[153,9]]},"300":{"position":[[98,8]]},"301":{"position":[[460,8]]}},"keywords":{}}],["midnight/config",{"_index":467,"title":{},"content":{"33":{"position":[[454,15]]},"62":{"position":[[558,15]]},"67":{"position":[[391,15],[425,17]]}},"keywords":{}}],["midnightus",{"_index":2009,"title":{},"content":{"212":{"position":[[41,12]]}},"keywords":{}}],["migrat",{"_index":291,"title":{},"content":{"21":{"position":[[357,9]]},"25":{"position":[[295,9]]},"143":{"position":[[295,11]]},"146":{"position":[[393,9]]}},"keywords":{}}],["millisecond",{"_index":616,"title":{},"content":{"42":{"position":[[238,12]]}},"keywords":{}}],["min",{"_index":921,"title":{"238":{"position":[[3,3]]}},"content":{"64":{"position":[[30,4]]},"122":{"position":[[280,3]]},"237":{"position":[[335,4]]},"241":{"position":[[120,4],[242,3]]},"242":{"position":[[119,3]]},"246":{"position":[[434,3],[967,3],[1095,3],[1917,4],[2090,4],[2208,3]]},"247":{"position":[[193,4]]},"283":{"position":[[154,3]]},"301":{"position":[[54,4]]}},"keywords":{}}],["min)with",{"_index":675,"title":{},"content":{"45":{"position":[[45,8]]}},"keywords":{}}],["min/max",{"_index":2099,"title":{},"content":{"237":{"position":[[58,8]]}},"keywords":{}}],["min/max/avg",{"_index":552,"title":{},"content":{"37":{"position":[[839,11]]},"255":{"position":[[2403,12]]},"273":{"position":[[1623,13]]}},"keywords":{}}],["min/max/avg_get_24h_window_value(stat_func",{"_index":648,"title":{},"content":{"43":{"position":[[294,43]]}},"keywords":{}}],["min=10ct",{"_index":2727,"title":{},"content":{"273":{"position":[[3106,9]]}},"keywords":{}}],["min=20ct",{"_index":2724,"title":{},"content":{"273":{"position":[[2835,11]]}},"keywords":{}}],["min=25ct",{"_index":2730,"title":{},"content":{"273":{"position":[[3174,9]]}},"keywords":{}}],["min_context_s",{"_index":2490,"title":{},"content":{"255":{"position":[[2259,16]]}},"keywords":{}}],["min_context_size)calcul",{"_index":2455,"title":{},"content":{"255":{"position":[[918,28]]}},"keywords":{}}],["min_dist",{"_index":2115,"title":{"240":{"position":[[11,12]]},"243":{"position":[[18,12]]},"259":{"position":[[23,13]]}},"content":{"238":{"position":[[154,13],[291,13]]},"241":{"position":[[431,12],[505,12]]},"242":{"position":[[139,12],[312,12]]},"243":{"position":[[18,12],[276,12],[324,12],[585,12],[1025,12],[1182,12],[1612,12],[1738,12],[2157,12]]},"256":{"position":[[464,12]]},"262":{"position":[[382,13]]},"263":{"position":[[235,13],[462,13]]},"264":{"position":[[503,13]]},"267":{"position":[[233,12],[770,12],[849,12]]}},"keywords":{}}],["min_distance/100",{"_index":2118,"title":{},"content":{"238":{"position":[[235,18],[372,18]]},"242":{"position":[[82,17]]}},"keywords":{}}],["min_distance=5",{"_index":2158,"title":{},"content":{"241":{"position":[[88,16]]}},"keywords":{}}],["min_distance_from_avg=min_distance_from_avg",{"_index":2713,"title":{},"content":{"273":{"position":[[2029,44]]}},"keywords":{}}],["min_length",{"_index":2328,"title":{},"content":{"246":{"position":[[1902,10]]},"247":{"position":[[339,11]]},"256":{"position":[[344,10]]}},"keywords":{}}],["mind",{"_index":1899,"title":{},"content":{"193":{"position":[[52,5]]}},"keywords":{}}],["minim",{"_index":668,"title":{"212":{"position":[[0,8]]}},"content":{"43":{"position":[[1018,7]]},"179":{"position":[[1240,8]]},"216":{"position":[[17,8]]},"243":{"position":[[522,7]]},"273":{"position":[[3765,7]]}},"keywords":{}}],["minimum",{"_index":1667,"title":{},"content":{"156":{"position":[[1,7]]},"235":{"position":[[184,7]]},"237":{"position":[[129,7]]},"243":{"position":[[2135,8]]},"245":{"position":[[750,7],[817,7]]},"246":{"position":[[438,7],[1099,7]]},"250":{"position":[[8,7]]},"255":{"position":[[2282,7]]},"273":{"position":[[3372,7]]}},"keywords":{}}],["minor",{"_index":2308,"title":{},"content":{"246":{"position":[[1332,5]]}},"keywords":{}}],["minut",{"_index":385,"title":{"280":{"position":[[10,6]]},"294":{"position":[[9,7]]},"298":{"position":[[15,9]]}},"content":{"31":{"position":[[163,8]]},"42":{"position":[[23,7],[87,6]]},"53":{"position":[[176,9]]},"101":{"position":[[101,6],[168,7]]},"154":{"position":[[394,7]]},"159":{"position":[[181,7]]},"245":{"position":[[637,7],[692,7]]},"277":{"position":[[148,7],[303,6]]},"278":{"position":[[144,7],[1279,7]]},"279":{"position":[[312,7]]},"280":{"position":[[147,7],[313,6],[739,7],[776,6],[786,6],[888,6],[1021,6]]},"287":{"position":[[410,8]]},"290":{"position":[[108,7]]},"292":{"position":[[20,7]]},"298":{"position":[[44,6],[81,6]]},"301":{"position":[[194,7]]}},"keywords":{}}],["minute)process",{"_index":2961,"title":{},"content":{"294":{"position":[[33,18]]}},"keywords":{}}],["minute_update_entity_key",{"_index":1090,"title":{},"content":{"81":{"position":[[119,25]]}},"keywords":{}}],["minutes")if",{"_index":2839,"title":{},"content":{"279":{"position":[[1538,16]]}},"keywords":{}}],["minutesexampl",{"_index":2821,"title":{},"content":{"279":{"position":[[460,15]]}},"keywords":{}}],["minutesnot",{"_index":2791,"title":{},"content":{"278":{"position":[[299,10]]}},"keywords":{}}],["misconfigurationsimplifi",{"_index":2406,"title":{},"content":{"252":{"position":[[933,26]]}},"keywords":{}}],["mismatch",{"_index":853,"title":{},"content":{"56":{"position":[[1153,10]]},"60":{"position":[[310,8]]},"61":{"position":[[218,9]]},"67":{"position":[[328,9]]}},"keywords":{}}],["mismatch)transform",{"_index":911,"title":{},"content":{"62":{"position":[[498,23]]}},"keywords":{}}],["miss",{"_index":47,"title":{"72":{"position":[[9,7]]}},"content":{"3":{"position":[[265,7]]},"52":{"position":[[587,8]]},"56":{"position":[[1270,4]]},"65":{"position":[[177,5]]},"133":{"position":[[977,4]]},"246":{"position":[[760,5],[1242,4],[1856,4],[2117,6]]},"285":{"position":[[145,7]]}},"keywords":{}}],["missing/invalid",{"_index":908,"title":{},"content":{"61":{"position":[[87,15]]},"288":{"position":[[647,15]]}},"keywords":{}}],["mitig",{"_index":1589,"title":{},"content":{"146":{"position":[[553,10]]}},"keywords":{}}],["mitigation"",{"_index":1751,"title":{},"content":{"171":{"position":[[230,16]]}},"keywords":{}}],["mkdir",{"_index":1623,"title":{},"content":{"149":{"position":[[509,5]]}},"keywords":{}}],["mm",{"_index":1578,"title":{},"content":{"146":{"position":[[164,2],[193,2]]}},"keywords":{}}],["mno7890](link",{"_index":1871,"title":{},"content":{"181":{"position":[[412,15]]}},"keywords":{}}],["mode",{"_index":1491,"title":{},"content":{"135":{"position":[[142,4]]},"232":{"position":[[33,4]]},"233":{"position":[[56,5]]},"245":{"position":[[328,4]]},"252":{"position":[[571,4],[1927,5]]}},"keywords":{}}],["mode!"recommend",{"_index":2375,"title":{},"content":{"248":{"position":[[333,26]]}},"keywords":{}}],["mode)hassfest",{"_index":1499,"title":{},"content":{"135":{"position":[[298,13]]}},"keywords":{}}],["model",{"_index":919,"title":{},"content":{"62":{"position":[[777,6]]},"252":{"position":[[967,5]]}},"keywords":{}}],["modelne",{"_index":2643,"title":{},"content":{"272":{"position":[[699,10]]}},"keywords":{}}],["moder",{"_index":2200,"title":{},"content":{"243":{"position":[[440,8]]}},"keywords":{}}],["modern",{"_index":950,"title":{},"content":{"67":{"position":[[876,6]]},"231":{"position":[[100,6]]}},"keywords":{}}],["modif",{"_index":1497,"title":{},"content":{"135":{"position":[[280,13]]}},"keywords":{}}],["modifi",{"_index":1664,"title":{},"content":{"154":{"position":[[179,6]]},"160":{"position":[[106,9]]}},"keywords":{}}],["modified)until",{"_index":847,"title":{},"content":{"56":{"position":[[864,14]]}},"keywords":{}}],["modul",{"_index":67,"title":{},"content":{"3":{"position":[[590,6],[791,6],[1014,7],[1178,6],[1430,6]]},"37":{"position":[[377,8]]},"46":{"position":[[221,6]]},"143":{"position":[[127,7],[229,6]]},"146":{"position":[[366,6]]},"150":{"position":[[173,6],[697,6]]}},"keywords":{}}],["module."""",{"_index":81,"title":{},"content":{"3":{"position":[[945,25]]}},"keywords":{}}],["modules)planning/binari",{"_index":1722,"title":{},"content":{"166":{"position":[[136,23]]}},"keywords":{}}],["modules)planning/coordin",{"_index":1724,"title":{},"content":{"166":{"position":[[215,28]]}},"keywords":{}}],["modulesal",{"_index":53,"title":{},"content":{"3":{"position":[[399,10]]}},"keywords":{}}],["modulescomprehens",{"_index":1459,"title":{},"content":{"133":{"position":[[829,20]]}},"keywords":{}}],["moduleseach",{"_index":1631,"title":{},"content":{"150":{"position":[[161,11]]}},"keywords":{}}],["monitor",{"_index":1166,"title":{"220":{"position":[[0,10]]}},"content":{"94":{"position":[[502,7]]},"212":{"position":[[112,7]]}},"keywords":{}}],["more",{"_index":793,"title":{},"content":{"54":{"position":[[200,4]]},"152":{"position":[[204,4]]},"196":{"position":[[405,4]]},"246":{"position":[[1003,4],[1152,4],[1390,5],[1963,4]]},"262":{"position":[[169,5]]},"267":{"position":[[167,4]]},"272":{"position":[[2008,4],[2141,4]]}},"keywords":{}}],["morn",{"_index":2515,"title":{},"content":{"255":{"position":[[3193,8]]}},"keywords":{}}],["morning/even",{"_index":2470,"title":{},"content":{"255":{"position":[[1361,16]]}},"keywords":{}}],["morning/evening)short",{"_index":2316,"title":{},"content":{"246":{"position":[[1545,24]]}},"keywords":{}}],["move",{"_index":1554,"title":{},"content":{"143":{"position":[[392,6]]},"154":{"position":[[61,4],[270,4],[447,5]]},"162":{"position":[[231,4]]},"194":{"position":[[423,4]]},"255":{"position":[[3151,6]]}},"keywords":{}}],["moved)architectur",{"_index":1551,"title":{},"content":{"143":{"position":[[186,19]]}},"keywords":{}}],["much",{"_index":2224,"title":{},"content":{"243":{"position":[[1365,4]]},"272":{"position":[[2136,4]]}},"keywords":{}}],["multi",{"_index":2095,"title":{"251":{"position":[[0,5]]}},"content":{"235":{"position":[[527,5]]},"269":{"position":[[312,5]]},"272":{"position":[[1509,5]]}},"keywords":{}}],["multi_replace_string_in_fil",{"_index":101,"title":{},"content":{"3":{"position":[[1358,28]]}},"keywords":{}}],["multipl",{"_index":52,"title":{},"content":{"3":{"position":[[390,8]]},"55":{"position":[[817,8]]},"80":{"position":[[364,8]]},"94":{"position":[[581,8]]},"143":{"position":[[383,8]]},"147":{"position":[[40,8]]},"206":{"position":[[9,8]]},"264":{"position":[[100,8]]},"272":{"position":[[1573,8]]},"273":{"position":[[1367,8]]}},"keywords":{}}],["mv",{"_index":1612,"title":{},"content":{"149":{"position":[[111,2],[535,2]]},"179":{"position":[[1797,2]]}},"keywords":{}}],["n",{"_index":1168,"title":{},"content":{"94":{"position":[[522,1]]},"250":{"position":[[180,1]]}},"keywords":{}}],["name",{"_index":30,"title":{"2":{"position":[[0,6]]},"3":{"position":[[6,6]]}},"content":{"3":{"position":[[45,4],[105,6],[1333,6]]},"14":{"position":[[38,4],[99,7]]},"19":{"position":[[29,4]]}},"keywords":{}}],["namedtupl",{"_index":60,"title":{},"content":{"3":{"position":[[488,12],[692,11]]}},"keywords":{}}],["namescustom",{"_index":581,"title":{},"content":{"40":{"position":[[78,11]]},"52":{"position":[[282,11]]}},"keywords":{}}],["natur",{"_index":2466,"title":{},"content":{"255":{"position":[[1216,7]]},"273":{"position":[[1523,9],[4759,7]]},"278":{"position":[[1130,7]]},"287":{"position":[[380,7]]}},"keywords":{}}],["navig",{"_index":1629,"title":{},"content":{"150":{"position":[[112,8]]}},"keywords":{}}],["nb",{"_index":1532,"title":{},"content":{"137":{"position":[[532,3]]}},"keywords":{}}],["nderungen",{"_index":2921,"title":{},"content":{"286":{"position":[[118,10]]}},"keywords":{}}],["necessari",{"_index":2793,"title":{},"content":{"278":{"position":[[442,9]]}},"keywords":{}}],["need",{"_index":110,"title":{},"content":{"3":{"position":[[1481,7]]},"22":{"position":[[193,7]]},"51":{"position":[[1258,6]]},"62":{"position":[[743,6]]},"83":{"position":[[199,7],[338,7]]},"133":{"position":[[1048,4]]},"143":{"position":[[23,5],[533,7]]},"146":{"position":[[254,4]]},"147":{"position":[[131,4]]},"169":{"position":[[49,4]]},"171":{"position":[[147,6]]},"178":{"position":[[170,6]]},"182":{"position":[[161,4],[364,5]]},"194":{"position":[[96,4]]},"195":{"position":[[225,6]]},"196":{"position":[[487,6]]},"205":{"position":[[21,7]]},"213":{"position":[[18,7]]},"246":{"position":[[214,4],[2334,4],[2641,4]]},"252":{"position":[[1040,7],[1246,4]]},"253":{"position":[[274,5]]},"265":{"position":[[195,5]]},"266":{"position":[[189,5]]},"267":{"position":[[162,4]]},"269":{"position":[[145,6]]},"272":{"position":[[283,4],[490,4],[600,7],[2216,4]]},"273":{"position":[[895,4],[1418,5]]},"278":{"position":[[425,7],[811,4],[1444,6]]},"279":{"position":[[1984,4]]},"280":{"position":[[771,4]]},"283":{"position":[[190,6]]},"284":{"position":[[109,6],[275,7]]},"288":{"position":[[243,6],[336,6]]}},"keywords":{}}],["needed)"",{"_index":2968,"title":{},"content":{"296":{"position":[[194,13]]}},"keywords":{}}],["needed)catch",{"_index":2486,"title":{},"content":{"255":{"position":[[1948,14]]}},"keywords":{}}],["needed)tim",{"_index":2982,"title":{},"content":{"301":{"position":[[97,12]]}},"keywords":{}}],["neededlarg",{"_index":1757,"title":{},"content":{"172":{"position":[[159,11]]}},"keywords":{}}],["neededlow",{"_index":2620,"title":{},"content":{"269":{"position":[[107,9]]}},"keywords":{}}],["neededmedium",{"_index":1754,"title":{},"content":{"172":{"position":[[90,12]]}},"keywords":{}}],["neededprev",{"_index":2242,"title":{},"content":{"243":{"position":[[2231,14]]}},"keywords":{}}],["neededtyp",{"_index":2498,"title":{},"content":{"255":{"position":[[2656,13]]}},"keywords":{}}],["needscould",{"_index":2668,"title":{},"content":{"272":{"position":[[2073,10]]}},"keywords":{}}],["neg",{"_index":2256,"title":{},"content":{"245":{"position":[[392,9]]}},"keywords":{}}],["neglig",{"_index":949,"title":{},"content":{"67":{"position":[[860,11]]}},"keywords":{}}],["nest",{"_index":2028,"title":{},"content":{"216":{"position":[[37,6]]}},"keywords":{}}],["net",{"_index":1875,"title":{"185":{"position":[[41,5]]}},"content":{"182":{"position":[[132,4]]}},"keywords":{}}],["never",{"_index":457,"title":{},"content":{"33":{"position":[[245,5]]},"62":{"position":[[602,5]]},"67":{"position":[[159,5]]}},"keywords":{}}],["new",{"_index":195,"title":{},"content":{"14":{"position":[[119,3]]},"17":{"position":[[26,3],[135,3]]},"18":{"position":[[108,3],[324,3]]},"25":{"position":[[258,3]]},"31":{"position":[[1021,3]]},"42":{"position":[[418,3]]},"51":{"position":[[826,3]]},"56":{"position":[[946,4],[1413,4]]},"59":{"position":[[469,3]]},"60":{"position":[[322,3],[367,3]]},"61":{"position":[[120,3],[164,4]]},"65":{"position":[[75,3]]},"66":{"position":[[199,4]]},"84":{"position":[[99,3]]},"131":{"position":[[389,3]]},"135":{"position":[[472,3]]},"143":{"position":[[214,4]]},"176":{"position":[[412,3]]},"178":{"position":[[83,3]]},"180":{"position":[[257,3]]},"181":{"position":[[76,3]]},"185":{"position":[[482,3]]},"194":{"position":[[218,3]]},"196":{"position":[[83,3]]},"213":{"position":[[228,3]]},"272":{"position":[[1423,4]]},"273":{"position":[[3270,3]]},"279":{"position":[[482,3],[1280,3]]},"285":{"position":[[274,4]]}},"keywords":{}}],["new=%s"",{"_index":1366,"title":{},"content":{"121":{"position":[[227,13]]}},"keywords":{}}],["new_valu",{"_index":1369,"title":{},"content":{"121":{"position":[[282,10]]}},"keywords":{}}],["newli",{"_index":2908,"title":{},"content":{"285":{"position":[[360,5]]}},"keywords":{}}],["next",{"_index":637,"title":{},"content":{"42":{"position":[[648,4],[745,4]]},"174":{"position":[[451,4]]},"273":{"position":[[3502,4],[4810,4]]},"279":{"position":[[521,4],[1579,4]]}},"keywords":{}}],["next_interval_price)binari",{"_index":2842,"title":{},"content":{"279":{"position":[[1756,26]]}},"keywords":{}}],["nice",{"_index":1095,"title":{"82":{"position":[[23,5]]},"90":{"position":[[32,5]]},"93":{"position":[[3,4]]}},"content":{},"keywords":{}}],["nl",{"_index":1533,"title":{},"content":{"137":{"position":[[536,3]]}},"keywords":{}}],["node",{"_index":1204,"title":{"103":{"position":[[6,4]]}},"content":{"100":{"position":[[166,5]]}},"keywords":{}}],["node.j",{"_index":2085,"title":{},"content":{"231":{"position":[[199,8]]}},"keywords":{}}],["non",{"_index":774,"title":{},"content":{"52":{"position":[[640,3],[968,3]]},"207":{"position":[[328,3]]},"255":{"position":[[3296,3]]},"270":{"position":[[118,3]]},"272":{"position":[[1215,3]]},"273":{"position":[[613,3],[869,3]]}},"keywords":{}}],["none",{"_index":732,"title":{},"content":{"51":{"position":[[765,5],[797,4],[860,4]]},"55":{"position":[[487,5]]},"56":{"position":[[1050,5],[1079,4],[1110,4]]},"59":{"position":[[181,4],[245,4],[325,4],[376,4],[402,4]]},"60":{"position":[[129,4],[157,4],[232,4],[267,4]]},"77":{"position":[[1125,4]]},"204":{"position":[[639,4],[646,4],[709,5],[839,4]]},"205":{"position":[[86,5],[291,4]]},"209":{"position":[[167,4],[186,4]]},"215":{"position":[[154,4]]},"279":{"position":[[658,5]]},"280":{"position":[[293,5]]}},"keywords":{}}],["normal",{"_index":858,"title":{"262":{"position":[[12,6]]},"283":{"position":[[12,6]]}},"content":{"56":{"position":[[1321,6]]},"67":{"position":[[672,6]]},"103":{"position":[[313,7]]},"182":{"position":[[40,6]]},"239":{"position":[[81,7]]},"255":{"position":[[3840,6]]},"272":{"position":[[418,6]]},"279":{"position":[[949,6]]},"285":{"position":[[32,6],[326,6]]},"297":{"position":[[101,6]]}},"keywords":{}}],["normal/flat/volatile/bimodal)appli",{"_index":2623,"title":{},"content":{"269":{"position":[[250,35]]},"272":{"position":[[1021,35]]}},"keywords":{}}],["norwegian",{"_index":1238,"title":{},"content":{"104":{"position":[[104,10]]}},"keywords":{}}],["notabl",{"_index":2246,"title":{},"content":{"243":{"position":[[2349,7]]}},"keywords":{}}],["note",{"_index":84,"title":{"175":{"position":[[8,5]]},"254":{"position":[[15,6]]}},"content":{"3":{"position":[[1084,5]]},"135":{"position":[[527,5],[552,5]]},"141":{"position":[[59,5]]},"145":{"position":[[136,5]]},"150":{"position":[[678,5]]},"176":{"position":[[442,5]]},"178":{"position":[[31,5]]},"179":{"position":[[32,5],[170,5],[236,5],[311,5],[443,5],[541,5],[644,5],[724,5]]},"180":{"position":[[19,5],[287,5]]},"182":{"position":[[283,5]]},"184":{"position":[[376,5]]},"192":{"position":[[9,5]]},"196":{"position":[[286,5]]},"224":{"position":[[377,5]]},"247":{"position":[[854,5]]}},"keywords":{}}],["notes"",{"_index":1803,"title":{},"content":{"178":{"position":[[144,11]]}},"keywords":{}}],["notifi",{"_index":2798,"title":{},"content":{"278":{"position":[[713,6]]},"279":{"position":[[888,6],[1003,6]]},"280":{"position":[[306,6]]},"281":{"position":[[322,8],[937,6],[1115,6]]},"284":{"position":[[350,6]]},"285":{"position":[[254,6],[513,8]]},"293":{"position":[[59,7]]},"294":{"position":[[57,7]]},"301":{"position":[[644,8]]}},"keywords":{}}],["notifications/alert",{"_index":2306,"title":{},"content":{"246":{"position":[[1282,20]]}},"keywords":{}}],["nov",{"_index":86,"title":{},"content":{"3":{"position":[[1100,4]]},"37":{"position":[[90,3]]},"43":{"position":[[53,3]]},"150":{"position":[[33,4]]},"239":{"position":[[1614,4]]},"273":{"position":[[3811,4]]}},"keywords":{}}],["novemb",{"_index":2388,"title":{},"content":{"252":{"position":[[24,9],[1373,8]]}},"keywords":{}}],["now",{"_index":136,"title":{},"content":{"6":{"position":[[205,3]]},"150":{"position":[[275,4]]},"196":{"position":[[151,3]]},"279":{"position":[[637,4],[1811,3]]},"280":{"position":[[272,4]]}},"keywords":{}}],["o",{"_index":1392,"title":{},"content":{"126":{"position":[[21,1]]}},"keywords":{}}],["o(1",{"_index":2005,"title":{},"content":{"210":{"position":[[109,6]]}},"keywords":{}}],["o(n",{"_index":2003,"title":{},"content":{"210":{"position":[[46,6]]}},"keywords":{}}],["object",{"_index":825,"title":{},"content":{"56":{"position":[[266,7]]},"269":{"position":[[318,9]]},"272":{"position":[[1515,9]]}},"keywords":{}}],["observ",{"_index":1119,"title":{},"content":{"86":{"position":[[90,9]]},"283":{"position":[[447,12]]},"284":{"position":[[556,12]]},"285":{"position":[[419,12]]}},"keywords":{}}],["obviou",{"_index":2648,"title":{},"content":{"272":{"position":[[1219,7]]}},"keywords":{}}],["occasion",{"_index":1463,"title":{},"content":{"133":{"position":[[964,12]]}},"keywords":{}}],["occur",{"_index":2174,"title":{},"content":{"242":{"position":[[165,6]]}},"keywords":{}}],["off",{"_index":948,"title":{},"content":{"67":{"position":[[823,5]]}},"keywords":{}}],["offlin",{"_index":756,"title":{},"content":{"51":{"position":[[1377,7]]}},"keywords":{}}],["old",{"_index":1060,"title":{"186":{"position":[[23,4]]}},"content":{"78":{"position":[[301,3]]},"79":{"position":[[256,3]]},"80":{"position":[[199,3]]},"161":{"position":[[70,3]]},"279":{"position":[[554,3]]}},"keywords":{}}],["old=%",{"_index":1365,"title":{},"content":{"121":{"position":[[220,6]]}},"keywords":{}}],["omit",{"_index":62,"title":{},"content":{"3":{"position":[[541,8]]}},"keywords":{}}],["on",{"_index":1133,"title":{},"content":{"87":{"position":[[124,3]]},"152":{"position":[[186,3]]},"184":{"position":[[35,4]]},"246":{"position":[[630,4]]},"270":{"position":[[201,3]]},"273":{"position":[[994,3],[1428,3]]}},"keywords":{}}],["onc",{"_index":773,"title":{"160":{"position":[[26,5]]}},"content":{"52":{"position":[[615,4]]},"55":{"position":[[302,4]]},"65":{"position":[[330,4]]},"67":{"position":[[599,4]]},"148":{"position":[[1,4]]},"206":{"position":[[27,5]]},"278":{"position":[[1305,4]]}},"keywords":{}}],["onesmix",{"_index":327,"title":{},"content":{"25":{"position":[[212,10]]}},"keywords":{}}],["only)third",{"_index":117,"title":{},"content":{"4":{"position":[[31,10]]}},"keywords":{}}],["onlyperiodcalcul",{"_index":886,"title":{},"content":{"57":{"position":[[765,21]]}},"keywords":{}}],["onlyrefactor",{"_index":199,"title":{},"content":{"14":{"position":[[169,13]]}},"keywords":{}}],["open",{"_index":172,"title":{},"content":{"12":{"position":[[135,4]]},"19":{"position":[[41,4]]},"75":{"position":[[366,4]]},"230":{"position":[[111,4]]}},"keywords":{}}],["oper",{"_index":685,"title":{"64":{"position":[[8,9]]},"191":{"position":[[10,11]]},"206":{"position":[[5,11]]},"283":{"position":[[19,9]]}},"content":{"46":{"position":[[190,10]]},"51":{"position":[[1385,9]]},"56":{"position":[[1328,9]]},"206":{"position":[[66,10]]}},"keywords":{}}],["operation)98",{"_index":944,"title":{},"content":{"67":{"position":[[679,13]]}},"keywords":{}}],["optim",{"_index":447,"title":{"46":{"position":[[4,13]]},"197":{"position":[[12,12]]},"203":{"position":[[0,12]]},"211":{"position":[[12,13]]}},"content":{"33":{"position":[[55,7]]},"46":{"position":[[1,12],[208,12]]},"245":{"position":[[305,7]]},"246":{"position":[[110,12]]},"248":{"position":[[41,8],[398,8]]},"252":{"position":[[2180,7]]},"269":{"position":[[185,7],[328,13]]},"272":{"position":[[883,7],[1525,12],[1871,12]]},"273":{"position":[[497,12]]}},"keywords":{}}],["optimizedboth",{"_index":1711,"title":{},"content":{"163":{"position":[[579,13]]}},"keywords":{}}],["optimizeddocs/develop",{"_index":1710,"title":{},"content":{"163":{"position":[[525,27]]}},"keywords":{}}],["option",{"_index":765,"title":{"59":{"position":[[13,7]]},"93":{"position":[[22,11]]},"177":{"position":[[11,8]]}},"content":{"52":{"position":[[266,8]]},"55":{"position":[[373,7]]},"59":{"position":[[12,7]]},"62":{"position":[[306,8],[434,7]]},"66":{"position":[[1,7]]},"67":{"position":[[199,7],[231,8]]},"77":{"position":[[1496,7]]},"78":{"position":[[135,7]]},"149":{"position":[[1,6],[298,6],[424,6]]},"157":{"position":[[122,7]]},"179":{"position":[[1052,8]]},"204":{"position":[[551,7]]},"246":{"position":[[2041,6],[2232,6],[2424,6]]}},"keywords":{}}],["options.get",{"_index":781,"title":{},"content":{"53":{"position":[[118,13]]}},"keywords":{}}],["optionsaffect",{"_index":2130,"title":{},"content":{"239":{"position":[[514,15]]}},"keywords":{}}],["optionsdiffer",{"_index":2342,"title":{},"content":{"246":{"position":[[2507,16]]}},"keywords":{}}],["orchestr",{"_index":493,"title":{},"content":{"36":{"position":[[137,14]]},"235":{"position":[[601,13]]},"255":{"position":[[404,14]]}},"keywords":{}}],["order",{"_index":113,"title":{"4":{"position":[[7,6]]}},"content":{"253":{"position":[[24,6]]}},"keywords":{}}],["organ",{"_index":640,"title":{},"content":{"43":{"position":[[9,9]]},"149":{"position":[[622,9]]}},"keywords":{}}],["origin",{"_index":269,"title":{},"content":{"19":{"position":[[10,6]]},"41":{"position":[[73,8]]},"176":{"position":[[351,6]]},"180":{"position":[[204,6]]},"184":{"position":[[166,6]]},"186":{"position":[[193,6]]},"194":{"position":[[123,6],[466,6]]},"243":{"position":[[266,9],[574,9]]},"253":{"position":[[32,8]]},"255":{"position":[[2334,8],[2420,8]]},"265":{"position":[[233,8]]}},"keywords":{}}],["original_min_dist",{"_index":2191,"title":{},"content":{"243":{"position":[[213,21]]}},"keywords":{}}],["os",{"_index":2057,"title":{},"content":{"222":{"position":[[22,2]]}},"keywords":{}}],["otherwis",{"_index":2955,"title":{},"content":{"292":{"position":[[206,10]]}},"keywords":{}}],["out",{"_index":1892,"title":{},"content":{"187":{"position":[[302,3]]},"246":{"position":[[2277,3]]},"279":{"position":[[1880,3]]}},"keywords":{}}],["outcom",{"_index":2495,"title":{},"content":{"255":{"position":[[2538,7]]}},"keywords":{}}],["outdat",{"_index":1064,"title":{},"content":{"78":{"position":[[392,8]]},"161":{"position":[[120,8]]}},"keywords":{}}],["outlier",{"_index":2252,"title":{},"content":{"245":{"position":[[177,7]]},"247":{"position":[[519,7],[578,7],[628,7],[927,7]]},"255":{"position":[[583,7],[1294,8],[2771,7],[3098,7]]},"264":{"position":[[290,7]]},"267":{"position":[[1004,7]]}},"keywords":{}}],["outlin",{"_index":1755,"title":{},"content":{"172":{"position":[[140,8]]}},"keywords":{}}],["output",{"_index":1325,"title":{"116":{"position":[[21,7]]},"181":{"position":[[3,6]]}},"content":{"116":{"position":[[114,6]]},"255":{"position":[[2727,7]]}},"keywords":{}}],["outsid",{"_index":1841,"title":{},"content":{"179":{"position":[[1452,8]]}},"keywords":{}}],["over",{"_index":997,"title":{},"content":{"75":{"position":[[120,4]]},"86":{"position":[[100,4]]},"246":{"position":[[780,4],[1396,4]]},"252":{"position":[[139,4]]},"255":{"position":[[3146,4],[3339,4],[3527,4]]},"272":{"position":[[1109,4]]},"273":{"position":[[482,4]]},"278":{"position":[[1270,4]]},"287":{"position":[[401,4]]}},"keywords":{}}],["overal",{"_index":988,"title":{},"content":{"73":{"position":[[84,7]]},"300":{"position":[[16,7]]}},"keywords":{}}],["overhead",{"_index":470,"title":{},"content":{"33":{"position":[[498,9]]},"67":{"position":[[477,9]]}},"keywords":{}}],["overhead)us",{"_index":2277,"title":{},"content":{"246":{"position":[[332,13]]}},"keywords":{}}],["overheadtyp",{"_index":689,"title":{},"content":{"47":{"position":[[40,15]]}},"keywords":{}}],["overkil",{"_index":2534,"title":{},"content":{"255":{"position":[[3878,8]]}},"keywords":{}}],["overlap)sensor",{"_index":1093,"title":{},"content":{"81":{"position":[[194,14]]}},"keywords":{}}],["overload",{"_index":2926,"title":{},"content":{"287":{"position":[[93,9],[145,9]]},"299":{"position":[[257,9]]}},"keywords":{}}],["overrid",{"_index":844,"title":{},"content":{"56":{"position":[[777,9]]},"80":{"position":[[189,9],[338,8]]}},"keywords":{}}],["overview",{"_index":444,"title":{"33":{"position":[[0,9]]},"50":{"position":[[0,9]]},"235":{"position":[[0,9]]},"277":{"position":[[0,9]]}},"content":{},"keywords":{}}],["overviewcach",{"_index":2782,"title":{},"content":{"274":{"position":[[52,15]]}},"keywords":{}}],["p",{"_index":1624,"title":{},"content":{"149":{"position":[[516,1]]},"255":{"position":[[1573,2]]}},"keywords":{}}],["packag",{"_index":541,"title":{},"content":{"37":{"position":[[611,7]]},"136":{"position":[[298,9]]},"143":{"position":[[140,8],[219,9]]},"150":{"position":[[13,7],[138,7],[515,7]]},"231":{"position":[[77,7]]}},"keywords":{}}],["packages"",{"_index":1314,"title":{},"content":{"113":{"position":[[472,14]]}},"keywords":{}}],["pain",{"_index":1581,"title":{},"content":{"146":{"position":[[277,4]]}},"keywords":{}}],["parallel",{"_index":1085,"title":{},"content":{"80":{"position":[[373,8]]}},"keywords":{}}],["paramet",{"_index":1083,"title":{},"content":{"80":{"position":[[281,10]]},"100":{"position":[[211,11]]},"273":{"position":[[1184,9]]}},"keywords":{}}],["parametersminut",{"_index":1079,"title":{},"content":{"80":{"position":[[102,16]]}},"keywords":{}}],["parameterstim",{"_index":1080,"title":{},"content":{"80":{"position":[[152,16]]}},"keywords":{}}],["pareto",{"_index":2660,"title":{},"content":{"272":{"position":[[1864,6]]}},"keywords":{}}],["pars",{"_index":536,"title":{},"content":{"37":{"position":[[528,7]]},"179":{"position":[[41,5],[560,7],[951,7]]}},"keywords":{}}],["part",{"_index":2480,"title":{},"content":{"255":{"position":[[1749,5]]},"270":{"position":[[205,4]]},"273":{"position":[[998,4]]}},"keywords":{}}],["parti",{"_index":118,"title":{},"content":{"4":{"position":[[42,5]]}},"keywords":{}}],["particularli",{"_index":2091,"title":{},"content":{"235":{"position":[[115,12]]}},"keywords":{}}],["partschang",{"_index":1555,"title":{},"content":{"143":{"position":[[399,12]]}},"keywords":{}}],["pass",{"_index":82,"title":{},"content":{"3":{"position":[[971,4],[1077,4]]},"21":{"position":[[290,6],[311,6]]},"22":{"position":[[63,4],[99,6],[137,6]]},"31":{"position":[[437,6],[819,6]]},"77":{"position":[[1585,6]]},"154":{"position":[[480,6]]},"156":{"position":[[42,6]]},"173":{"position":[[100,5]]},"236":{"position":[[59,6]]},"241":{"position":[[371,7]]},"255":{"position":[[1919,4],[2568,4],[3522,4]]},"273":{"position":[[2637,6],[2691,5],[2949,6]]},"288":{"position":[[385,7]]}},"keywords":{}}],["past",{"_index":333,"title":{},"content":{"25":{"position":[[314,6]]}},"keywords":{}}],["path",{"_index":292,"title":{},"content":{"21":{"position":[[367,5]]},"79":{"position":[[356,5]]},"252":{"position":[[718,4]]},"278":{"position":[[1013,4]]},"279":{"position":[[990,5]]},"283":{"position":[[243,5]]},"284":{"position":[[544,5]]},"288":{"position":[[558,4]]},"292":{"position":[[49,5],[100,5]]},"296":{"position":[[215,4]]}},"keywords":{}}],["pathcopi",{"_index":332,"title":{},"content":{"25":{"position":[[305,8]]}},"keywords":{}}],["patient",{"_index":367,"title":{},"content":{"28":{"position":[[150,8]]}},"keywords":{}}],["pattern",{"_index":123,"title":{"5":{"position":[[9,9]]},"37":{"position":[[32,9]]},"39":{"position":[[4,9]]},"43":{"position":[[14,7]]},"74":{"position":[[18,8]]},"82":{"position":[[37,10]]},"92":{"position":[[15,8]]},"118":{"position":[[12,9]]},"203":{"position":[[13,9]]},"258":{"position":[[7,7]]},"259":{"position":[[7,7]]},"260":{"position":[[7,7]]},"281":{"position":[[9,7]]}},"content":{"22":{"position":[[223,8]]},"25":{"position":[[145,8]]},"37":{"position":[[37,7],[1275,8]]},"43":{"position":[[1155,7]]},"52":{"position":[[628,8]]},"82":{"position":[[7,8]]},"83":{"position":[[33,7]]},"90":{"position":[[67,7],[126,7],[415,7]]},"92":{"position":[[38,8]]},"93":{"position":[[85,7],[352,9]]},"94":{"position":[[113,7]]},"95":{"position":[[24,9]]},"116":{"position":[[149,7],[178,7]]},"131":{"position":[[89,9]]},"132":{"position":[[266,8],[327,8]]},"133":{"position":[[123,7],[809,8],[1035,8],[1286,8]]},"137":{"position":[[23,8]]},"149":{"position":[[81,8]]},"163":{"position":[[149,9],[325,8]]},"233":{"position":[[172,8]]},"255":{"position":[[1963,8]]},"269":{"position":[[242,7],[286,7]]},"272":{"position":[[1013,7],[1057,7],[1227,8]]},"273":{"position":[[1293,8]]},"274":{"position":[[124,9]]},"281":{"position":[[271,7],[1052,8],[1205,7]]},"289":{"position":[[15,8]]},"301":{"position":[[603,7]]}},"keywords":{}}],["patternhandl",{"_index":2813,"title":{},"content":{"278":{"position":[[1668,14]]}},"keywords":{}}],["patterns)complex",{"_index":2651,"title":{},"content":{"272":{"position":[[1332,19]]}},"keywords":{}}],["patternscod",{"_index":1431,"title":{},"content":{"132":{"position":[[145,12]]}},"keywords":{}}],["patternscould",{"_index":2647,"title":{},"content":{"272":{"position":[[1192,13]]}},"keywords":{}}],["patternspreserv",{"_index":2522,"title":{},"content":{"255":{"position":[[3439,17]]}},"keywords":{}}],["patternsproject",{"_index":1437,"title":{},"content":{"132":{"position":[[241,15]]}},"keywords":{}}],["peak",{"_index":841,"title":{},"content":{"56":{"position":[[725,4]]},"125":{"position":[[69,4],[171,5]]},"201":{"position":[[65,4],[184,4]]},"237":{"position":[[192,4]]},"238":{"position":[[256,4]]},"243":{"position":[[1924,4]]},"245":{"position":[[406,4]]},"246":{"position":[[18,4],[815,4],[1231,5],[1462,4],[1534,4],[1628,4],[1839,4],[1992,4],[2565,4]]},"255":{"position":[[3498,4]]}},"keywords":{}}],["peak=%.2fmb"",{"_index":1949,"title":{},"content":{"201":{"position":[[146,18]]}},"keywords":{}}],["peak=%d"",{"_index":1389,"title":{},"content":{"125":{"position":[[147,14]]}},"keywords":{}}],["peak_level_filt",{"_index":845,"title":{},"content":{"56":{"position":[[787,17]]}},"keywords":{}}],["peaks)algorithm",{"_index":2471,"title":{},"content":{"255":{"position":[[1378,16]]}},"keywords":{}}],["peaksmov",{"_index":2529,"title":{},"content":{"255":{"position":[[3743,11]]}},"keywords":{}}],["per",{"_index":472,"title":{},"content":{"33":{"position":[[515,3]]},"47":{"position":[[1,3],[148,3]]},"51":{"position":[[1334,3]]},"52":{"position":[[882,3],[891,3]]},"53":{"position":[[73,4]]},"55":{"position":[[320,3],[694,3],[765,3],[832,3]]},"56":{"position":[[1843,3]]},"57":{"position":[[969,3]]},"65":{"position":[[335,3]]},"67":{"position":[[494,3],[604,3],[851,3]]},"87":{"position":[[133,3]]},"101":{"position":[[53,3],[62,3],[97,3],[258,3]]},"137":{"position":[[295,3]]},"170":{"position":[[229,3]]},"198":{"position":[[92,3],[177,3],[204,3],[212,3]]},"216":{"position":[[59,3],[217,3]]},"245":{"position":[[496,3],[580,3]]},"250":{"position":[[24,3]]},"252":{"position":[[117,3],[188,3]]},"253":{"position":[[1,3]]},"272":{"position":[[1088,3]]},"273":{"position":[[2109,3],[3830,3],[4946,3]]}},"keywords":{}}],["percentag",{"_index":2420,"title":{},"content":{"252":{"position":[[1420,10]]},"262":{"position":[[335,10]]},"263":{"position":[[415,10]]},"273":{"position":[[218,10],[3940,10]]}},"keywords":{}}],["perfect",{"_index":2298,"title":{},"content":{"246":{"position":[[1022,7]]}},"keywords":{}}],["perform",{"_index":448,"title":{"44":{"position":[[0,11]]},"63":{"position":[[0,11]]},"123":{"position":[[0,11]]},"197":{"position":[[0,11]]},"198":{"position":[[0,11]]},"217":{"position":[[8,12]]},"221":{"position":[[4,11]]},"291":{"position":[[0,11]]}},"content":{"33":{"position":[[63,12]]},"55":{"position":[[629,11]]},"56":{"position":[[1476,11]]},"80":{"position":[[391,11]]},"81":{"position":[[349,11]]},"200":{"position":[[9,11]]},"255":{"position":[[2547,12]]},"278":{"position":[[1453,8]]},"284":{"position":[[283,7]]}},"keywords":{}}],["period",{"_index":418,"title":{"56":{"position":[[3,6]]},"70":{"position":[[9,6]]},"122":{"position":[[0,6]]},"234":{"position":[[0,6]]}},"content":{"31":{"position":[[788,6],[1008,7],[1162,6]]},"33":{"position":[[315,6]]},"36":{"position":[[321,6],[378,6],[512,6]]},"37":{"position":[[1020,6]]},"46":{"position":[[81,6],[127,6]]},"55":{"position":[[861,6]]},"56":{"position":[[95,6],[259,6],[323,7],[1497,6],[1710,6],[1825,7]]},"57":{"position":[[310,7],[320,7],[549,7],[569,6],[795,6],[942,6]]},"60":{"position":[[274,6]]},"61":{"position":[[182,6],[230,7]]},"62":{"position":[[221,6],[242,6]]},"64":{"position":[[119,6],[212,7]]},"65":{"position":[[143,6]]},"66":{"position":[[170,6]]},"67":{"position":[[267,6],[629,6]]},"70":{"position":[[139,6]]},"78":{"position":[[175,6],[324,6]]},"111":{"position":[[269,6],[367,8],[465,7],[527,6]]},"114":{"position":[[191,6]]},"118":{"position":[[201,6],[258,7],[319,6],[329,8]]},"122":{"position":[[17,6]]},"218":{"position":[[221,7]]},"235":{"position":[[85,6],[298,6],[583,6]]},"236":{"position":[[1,6]]},"238":{"position":[[17,7]]},"239":{"position":[[19,7],[559,6],[831,6],[1454,6],[1645,6]]},"243":{"position":[[606,7]]},"245":{"position":[[101,6]]},"246":{"position":[[286,7],[456,6],[603,7],[874,7],[1257,7],[1677,7],[1747,7],[1876,7]]},"247":{"position":[[118,6],[304,7],[331,7],[836,6],[889,6]]},"248":{"position":[[560,6]]},"250":{"position":[[16,7]]},"251":{"position":[[55,7],[97,7]]},"253":{"position":[[267,6],[318,6],[358,7]]},"255":{"position":[[1,6],[730,6],[2458,6],[2531,6]]},"256":{"position":[[307,7],[329,7]]},"259":{"position":[[206,7]]},"262":{"position":[[161,7],[464,7]]},"263":{"position":[[113,7],[551,6]]},"264":{"position":[[120,7],[580,7]]},"265":{"position":[[33,7],[99,8],[188,6],[265,6],[341,7],[417,8]]},"266":{"position":[[92,8],[181,7],[332,6],[351,6]]},"267":{"position":[[16,6],[938,7],[1134,7]]},"269":{"position":[[350,6],[383,6]]},"270":{"position":[[190,7]]},"272":{"position":[[948,7],[1612,6],[2027,6]]},"273":{"position":[[983,7],[1050,7],[1080,7],[1229,7],[1451,6],[1496,7],[2130,7],[2290,6],[2560,6],[2712,6],[3017,7],[3080,6],[3247,6],[3274,6],[3834,6],[4385,6],[4855,6]]},"274":{"position":[[21,6]]},"279":{"position":[[2017,8]]},"285":{"position":[[235,7]]}},"keywords":{}}],["period"",{"_index":2214,"title":{},"content":{"243":{"position":[[825,12],[2272,12]]}},"keywords":{}}],["period?"",{"_index":2843,"title":{},"content":{"279":{"position":[[1818,13]]}},"keywords":{}}],["period?"cold",{"_index":2652,"title":{},"content":{"272":{"position":[[1391,17]]}},"keywords":{}}],["period['end']}"",{"_index":1347,"title":{},"content":{"118":{"position":[[380,22]]}},"keywords":{}}],["period['start",{"_index":1346,"title":{},"content":{"118":{"position":[[359,17]]}},"keywords":{}}],["period_build",{"_index":1376,"title":{},"content":{"122":{"position":[[210,17],[262,17],[315,17]]}},"keywords":{}}],["period_building.pi",{"_index":2701,"title":{},"content":{"273":{"position":[[1660,18]]}},"keywords":{}}],["period_interval_smoothed_count",{"_index":2615,"title":{},"content":{"267":{"position":[[1074,30]]}},"keywords":{}}],["period_low_threshold",{"_index":2153,"title":{},"content":{"239":{"position":[[1489,20]]}},"keywords":{}}],["period_start_d",{"_index":2707,"title":{},"content":{"273":{"position":[[1841,17]]}},"keywords":{}}],["periodcalcul",{"_index":794,"title":{"55":{"position":[[0,16]]}},"content":{"57":{"position":[[355,16]]}},"keywords":{}}],["periodcalculator._cached_period",{"_index":818,"title":{},"content":{"56":{"position":[[36,32]]}},"keywords":{}}],["periodcalculator.invalidate_config_cach",{"_index":896,"title":{},"content":{"59":{"position":[[259,42]]}},"keywords":{}}],["periodcalculatorcalcul",{"_index":419,"title":{},"content":{"31":{"position":[[843,26]]}},"keywords":{}}],["periodconfig",{"_index":2442,"title":{},"content":{"255":{"position":[[127,13]]}},"keywords":{}}],["periods"",{"_index":973,"title":{},"content":{"70":{"position":[[185,13]]}},"keywords":{}}],["periods)sensor",{"_index":429,"title":{},"content":{"31":{"position":[[1090,15]]}},"keywords":{}}],["periods)weight",{"_index":2693,"title":{},"content":{"273":{"position":[[1214,14]]}},"keywords":{}}],["periods."""",{"_index":1323,"title":{},"content":{"114":{"position":[[339,26]]}},"keywords":{}}],["periods/day",{"_index":2382,"title":{},"content":{"250":{"position":[[182,11]]},"253":{"position":[[206,13]]}},"keywords":{}}],["periodsflex",{"_index":2563,"title":{},"content":{"262":{"position":[[128,11]]}},"keywords":{}}],["periodsif",{"_index":424,"title":{},"content":{"31":{"position":[[942,9]]}},"keywords":{}}],["periodsreject",{"_index":2769,"title":{},"content":{"273":{"position":[[4767,16]]}},"keywords":{}}],["periodsstal",{"_index":1063,"title":{},"content":{"78":{"position":[[365,12]]}},"keywords":{}}],["periodsstor",{"_index":427,"title":{},"content":{"31":{"position":[[995,12]]}},"keywords":{}}],["perman",{"_index":1050,"title":{},"content":{"77":{"position":[[1667,9]]}},"keywords":{}}],["permiss",{"_index":1358,"title":{},"content":{"120":{"position":[[181,11]]},"245":{"position":[[228,10]]},"246":{"position":[[1157,11]]}},"keywords":{}}],["permissiverelax",{"_index":2548,"title":{},"content":{"258":{"position":[[105,20]]}},"keywords":{}}],["permit",{"_index":2169,"title":{},"content":{"241":{"position":[[583,7]]}},"keywords":{}}],["persist",{"_index":390,"title":{"51":{"position":[[3,10]]}},"content":{"31":{"position":[[228,10],[369,10]]},"50":{"position":[[88,10]]},"51":{"position":[[605,10]]},"60":{"position":[[82,10]]},"62":{"position":[[28,10]]},"77":{"position":[[1249,10]]},"79":{"position":[[80,10]]},"89":{"position":[[301,11]]},"204":{"position":[[4,10]]}},"keywords":{}}],["person",{"_index":338,"title":{},"content":{"26":{"position":[[15,10]]},"272":{"position":[[1131,12]]}},"keywords":{}}],["phase",{"_index":1583,"title":{"148":{"position":[[18,6]]},"151":{"position":[[0,5],[9,5]]},"152":{"position":[[4,6]]},"153":{"position":[[0,5]]},"154":{"position":[[8,5]]},"156":{"position":[[11,6]]},"157":{"position":[[29,7]]},"160":{"position":[[16,6]]},"251":{"position":[[6,5]]}},"content":{"146":{"position":[[414,5],[423,5],[509,6]]},"148":{"position":[[36,6],[78,5],[152,5]]},"150":{"position":[[311,6],[355,5],[549,5],[640,5]]},"152":{"position":[[28,7]]},"153":{"position":[[6,5]]},"154":{"position":[[5,5]]},"157":{"position":[[22,7]]},"160":{"position":[[28,7],[179,6],[215,6]]},"170":{"position":[[161,6],[233,5],[376,5]]},"171":{"position":[[140,6]]},"174":{"position":[[154,6]]},"235":{"position":[[533,5]]},"265":{"position":[[211,5],[294,5],[408,5]]},"266":{"position":[[205,5],[301,6]]},"267":{"position":[[428,5],[459,6],[497,6],[556,6]]}},"keywords":{}}],["phase"",{"_index":1698,"title":{},"content":{"161":{"position":[[183,11]]}},"keywords":{}}],["phasedocu",{"_index":1638,"title":{},"content":{"150":{"position":[[387,15]]},"174":{"position":[[181,13]]}},"keywords":{}}],["phasetest",{"_index":1637,"title":{},"content":{"150":{"position":[[364,11]]}},"keywords":{}}],["pip",{"_index":1409,"title":{},"content":{"129":{"position":[[27,3]]},"202":{"position":[[22,3]]}},"keywords":{}}],["pitfal",{"_index":1435,"title":{"158":{"position":[[7,9]]},"257":{"position":[[21,9]]}},"content":{"132":{"position":[[223,8]]}},"keywords":{}}],["plan",{"_index":98,"title":{"143":{"position":[[8,4]]},"144":{"position":[[4,8]]},"145":{"position":[[12,8]]},"146":{"position":[[11,8]]},"159":{"position":[[7,8]]},"162":{"position":[[13,8]]},"165":{"position":[[0,8]]},"166":{"position":[[8,6]]},"169":{"position":[[26,4]]},"170":{"position":[[27,4]]},"171":{"position":[[15,4]]}},"content":{"3":{"position":[[1309,4]]},"42":{"position":[[543,5]]},"131":{"position":[[550,4]]},"143":{"position":[[40,5],[67,4],[106,9],[350,9],[524,8]]},"145":{"position":[[22,9],[146,9]]},"146":{"position":[[7,8],[72,4],[92,8]]},"147":{"position":[[7,9],[115,4]]},"148":{"position":[[6,4],[104,4]]},"149":{"position":[[46,4],[321,4]]},"150":{"position":[[421,4],[714,4]]},"159":{"position":[[200,5],[216,4]]},"161":{"position":[[227,5]]},"162":{"position":[[37,4],[199,9]]},"163":{"position":[[60,8],[271,5]]},"165":{"position":[[1,9],[75,8],[132,5]]},"166":{"position":[[112,7],[192,7],[269,7]]},"169":{"position":[[56,5],[144,5]]},"170":{"position":[[93,4]]},"171":{"position":[[15,5],[21,8],[265,4]]},"172":{"position":[[85,4],[214,8]]},"173":{"position":[[53,5]]},"174":{"position":[[17,4],[94,9],[313,4],[355,8],[580,9],[613,5]]},"239":{"position":[[1629,5]]},"272":{"position":[[1496,8],[2303,8]]},"279":{"position":[[1447,5]]}},"keywords":{}}],["plan"",{"_index":1616,"title":{},"content":{"149":{"position":[[285,10]]}},"keywords":{}}],["plan.md",{"_index":1571,"title":{},"content":{"145":{"position":[[126,7]]},"149":{"position":[[146,7],[220,7],[414,7],[570,7]]},"150":{"position":[[267,7]]},"166":{"position":[[35,7],[99,7],[179,7],[256,7]]},"174":{"position":[[549,7]]}},"keywords":{}}],["planning/arch",{"_index":1625,"title":{},"content":{"149":{"position":[[518,16],[578,17]]}},"keywords":{}}],["planning/class",{"_index":99,"title":{},"content":{"3":{"position":[[1317,15]]}},"keywords":{}}],["planning/mi",{"_index":1570,"title":{},"content":{"145":{"position":[[94,11]]},"149":{"position":[[114,11],[382,11],[538,11]]}},"keywords":{}}],["planning/modul",{"_index":1634,"title":{},"content":{"150":{"position":[[241,15]]}},"keywords":{}}],["planning/readme.md",{"_index":1596,"title":{},"content":{"146":{"position":[[724,18]]},"174":{"position":[[469,18]]}},"keywords":{}}],["plantest",{"_index":1605,"title":{},"content":{"148":{"position":[[58,8]]}},"keywords":{}}],["platform",{"_index":379,"title":{"43":{"position":[[30,10]]}},"content":{"31":{"position":[[85,9]]},"37":{"position":[[12,8]]},"81":{"position":[[227,9]]},"136":{"position":[[289,8],[328,8],[546,8]]},"179":{"position":[[1597,10]]}},"keywords":{}}],["platformfix(coordin",{"_index":264,"title":{},"content":{"18":{"position":[[492,25]]}},"keywords":{}}],["plu",{"_index":2936,"title":{},"content":{"287":{"position":[[419,5]]}},"keywords":{}}],["point",{"_index":952,"title":{},"content":{"67":{"position":[[929,6]]},"146":{"position":[[282,6]]},"252":{"position":[[1775,6]]},"255":{"position":[[26,6]]},"272":{"position":[[1922,5]]}},"keywords":{}}],["pointcoordinator/period_handlers/level_filtering.pi",{"_index":2093,"title":{},"content":{"235":{"position":[[402,51]]}},"keywords":{}}],["poll",{"_index":608,"title":{},"content":{"42":{"position":[[5,8],[754,4]]},"101":{"position":[[153,5]]},"212":{"position":[[78,4]]},"279":{"position":[[263,4]]}},"keywords":{}}],["pollut",{"_index":1573,"title":{},"content":{"145":{"position":[[216,9]]},"162":{"position":[[90,8]]}},"keywords":{}}],["poor",{"_index":2569,"title":{"263":{"position":[[21,5]]}},"content":{"263":{"position":[[428,4]]}},"keywords":{}}],["popul",{"_index":770,"title":{},"content":{"52":{"position":[[464,10]]},"72":{"position":[[127,11]]}},"keywords":{}}],["port",{"_index":1403,"title":{},"content":{"128":{"position":[[113,4]]}},"keywords":{}}],["posit",{"_index":2292,"title":{},"content":{"246":{"position":[[803,10]]},"255":{"position":[[1017,9],[3376,9]]}},"keywords":{}}],["possibl",{"_index":2675,"title":{},"content":{"273":{"position":[[198,8],[1141,8]]}},"keywords":{}}],["postalcod",{"_index":1190,"title":{},"content":{"99":{"position":[[100,10]]}},"keywords":{}}],["postcreatecommand)start",{"_index":1481,"title":{},"content":{"134":{"position":[[153,23]]}},"keywords":{}}],["potenti",{"_index":2617,"title":{"269":{"position":[[0,9]]},"272":{"position":[[0,9]]}},"content":{},"keywords":{}}],["power",{"_index":1828,"title":{},"content":{"179":{"position":[[837,8]]}},"keywords":{}}],["pr",{"_index":268,"title":{"19":{"position":[[19,3]]},"21":{"position":[[0,2]]},"22":{"position":[[0,2]]}},"content":{"25":{"position":[[171,3]]},"178":{"position":[[266,3]]}},"keywords":{}}],["practic",{"_index":1175,"title":{"207":{"position":[[11,10]]},"289":{"position":[[30,10]]}},"content":{"95":{"position":[[122,10]]},"163":{"position":[[553,10]]},"246":{"position":[[142,9],[2604,9]]},"280":{"position":[[1001,8]]}},"keywords":{}}],["practicescod",{"_index":1445,"title":{},"content":{"133":{"position":[[191,13]]}},"keywords":{}}],["practicesrefactor",{"_index":1427,"title":{},"content":{"131":{"position":[[514,20]]}},"keywords":{}}],["practicesus",{"_index":2337,"title":{},"content":{"246":{"position":[[2313,14]]}},"keywords":{}}],["pre",{"_index":2418,"title":{},"content":{"252":{"position":[[1368,4]]}},"keywords":{}}],["precis",{"_index":607,"title":{"42":{"position":[[16,10]]}},"content":{"280":{"position":[[895,9]]}},"keywords":{}}],["pred",{"_index":2477,"title":{},"content":{"255":{"position":[[1563,5],[1576,4]]}},"keywords":{}}],["predict",{"_index":251,"title":{},"content":{"18":{"position":[[233,7]]},"252":{"position":[[695,11]]},"255":{"position":[[828,11],[870,7],[990,9],[1178,10],[1419,10],[2971,10],[3248,7],[3543,11]]},"264":{"position":[[371,11]]},"272":{"position":[[632,7]]}},"keywords":{}}],["predictableno",{"_index":2233,"title":{},"content":{"243":{"position":[[1971,13]]}},"keywords":{}}],["prefer",{"_index":2139,"title":{},"content":{"239":{"position":[[914,10]]},"272":{"position":[[793,7],[1097,11]]},"273":{"position":[[472,9],[1194,7]]}},"keywords":{}}],["preferencesconsid",{"_index":2694,"title":{},"content":{"273":{"position":[[1252,19]]}},"keywords":{}}],["preferencesgenet",{"_index":2663,"title":{},"content":{"272":{"position":[[1944,18]]}},"keywords":{}}],["prefix",{"_index":35,"title":{},"content":{"3":{"position":[[53,7],[273,6],[342,6],[527,6],[597,7],[804,6],[991,6],[1267,7]]}},"keywords":{}}],["premiumearli",{"_index":2748,"title":{},"content":{"273":{"position":[[3606,12]]}},"keywords":{}}],["prepar",{"_index":1503,"title":{"176":{"position":[[16,9]]}},"content":{"135":{"position":[[462,7]]},"176":{"position":[[82,7]]},"184":{"position":[[11,7]]}},"keywords":{}}],["prerequisit",{"_index":158,"title":{"11":{"position":[[0,14]]},"229":{"position":[[0,14]]}},"content":{},"keywords":{}}],["present",{"_index":525,"title":{},"content":{"37":{"position":[[349,12]]}},"keywords":{}}],["presentation)easi",{"_index":670,"title":{},"content":{"43":{"position":[[1106,17]]}},"keywords":{}}],["presentation)independ",{"_index":567,"title":{},"content":{"37":{"position":[[1178,25]]}},"keywords":{}}],["presentationbuild",{"_index":661,"title":{},"content":{"43":{"position":[[864,18]]}},"keywords":{}}],["pressur",{"_index":1700,"title":{},"content":{"162":{"position":[[125,8]]}},"keywords":{}}],["pressurerefin",{"_index":1600,"title":{},"content":{"147":{"position":[[90,14]]}},"keywords":{}}],["prevent",{"_index":635,"title":{"77":{"position":[[33,12]]}},"content":{"42":{"position":[[597,8]]},"92":{"position":[[27,10]]},"146":{"position":[[596,7]]},"174":{"position":[[364,8]]},"243":{"position":[[669,8]]},"252":{"position":[[919,8]]},"255":{"position":[[755,7],[3361,8]]},"278":{"position":[[567,9],[1196,8]]},"279":{"position":[[1618,9]]},"284":{"position":[[592,8]]}},"keywords":{}}],["preview",{"_index":1878,"title":{},"content":{"182":{"position":[[289,7]]}},"keywords":{}}],["previou",{"_index":740,"title":{},"content":{"51":{"position":[[1026,8]]},"107":{"position":[[72,8]]},"278":{"position":[[1715,8]]},"289":{"position":[[169,8]]}},"keywords":{}}],["previous",{"_index":2419,"title":{},"content":{"252":{"position":[[1404,10]]}},"keywords":{}}],["price",{"_index":146,"title":{"8":{"position":[[0,5]]},"41":{"position":[[3,5]]},"57":{"position":[[24,6]]},"71":{"position":[[21,6]]},"100":{"position":[[0,5]]},"103":{"position":[[0,5]]},"237":{"position":[[15,6]]},"239":{"position":[[16,6]]}},"content":{"18":{"position":[[246,6]]},"31":{"position":[[408,5],[448,6],[671,5],[889,6],[989,5],[1080,7]]},"33":{"position":[[177,8]]},"36":{"position":[[271,5],[372,5],[446,7],[541,5]]},"37":{"position":[[921,5],[1014,5]]},"41":{"position":[[20,5]]},"42":{"position":[[704,5]]},"50":{"position":[[294,5]]},"51":{"position":[[149,5],[199,5],[270,5],[471,5],[1005,5]]},"56":{"position":[[133,5],[682,5],[730,5],[826,5],[1115,5],[1372,5]]},"57":{"position":[[249,5],[404,5],[503,5],[514,6],[748,5]]},"61":{"position":[[140,5]]},"78":{"position":[[359,5]]},"94":{"position":[[632,6]]},"100":{"position":[[24,7]]},"103":{"position":[[153,5]]},"111":{"position":[[90,5],[361,5]]},"114":{"position":[[333,5]]},"136":{"position":[[188,5]]},"137":{"position":[[180,5]]},"156":{"position":[[225,6]]},"215":{"position":[[60,6],[163,6]]},"237":{"position":[[24,6],[83,6],[90,5],[147,5],[197,6],[204,5],[261,5],[320,7]]},"238":{"position":[[124,6],[131,5],[205,5],[261,6],[268,5],[342,5],[407,7]]},"239":{"position":[[39,5]]},"241":{"position":[[67,5]]},"242":{"position":[[29,6]]},"243":{"position":[[708,5],[819,5],[1792,5],[1855,5],[1866,5],[1929,5],[2337,5]]},"246":{"position":[[10,5],[23,6],[103,6],[820,6],[929,5],[1467,5],[1486,5],[2212,5],[2555,5]]},"247":{"position":[[158,6],[246,6],[734,5],[797,5]]},"255":{"position":[[291,6],[710,5],[1224,5],[1348,5],[2343,6],[2581,5],[3180,5],[3311,5],[3400,5]]},"259":{"position":[[95,5]]},"262":{"position":[[1,5],[122,5]]},"263":{"position":[[1,5]]},"264":{"position":[[1,5]]},"265":{"position":[[93,5]]},"266":{"position":[[86,5]]},"267":{"position":[[599,5],[1190,5]]},"269":{"position":[[60,5],[403,5]]},"272":{"position":[[95,5],[1679,5]]},"273":{"position":[[1609,6],[2215,6],[2407,5],[2531,5],[3414,5],[3474,6],[3543,6],[3638,6],[3733,6],[4026,5],[4668,5],[5107,5]]},"279":{"position":[[378,5],[486,6],[558,5]]},"283":{"position":[[72,5]]}},"keywords":{}}],["price"",{"_index":2575,"title":{},"content":{"263":{"position":[[294,11]]},"273":{"position":[[1038,11]]}},"keywords":{}}],["price_data",{"_index":713,"title":{},"content":{"51":{"position":[[210,13]]},"62":{"position":[[77,12]]},"207":{"position":[[85,10],[156,10]]},"273":{"position":[[1700,10]]}},"keywords":{}}],["price_info_data",{"_index":152,"title":{},"content":{"8":{"position":[[137,16]]}},"keywords":{}}],["price_level_threshold",{"_index":2134,"title":{},"content":{"239":{"position":[[689,22]]}},"keywords":{}}],["price_level_thresholds["volatility_low"",{"_index":2154,"title":{},"content":{"239":{"position":[[1512,50]]}},"keywords":{}}],["price_tim",{"_index":130,"title":{},"content":{"6":{"position":[[91,10],[138,10]]}},"keywords":{}}],["price_util",{"_index":150,"title":{},"content":{"8":{"position":[[35,12]]}},"keywords":{}}],["price_utils.pi",{"_index":406,"title":{},"content":{"31":{"position":[[588,14]]},"136":{"position":[[171,14]]},"137":{"position":[[368,14]]}},"keywords":{}}],["pricedefault",{"_index":2343,"title":{},"content":{"246":{"position":[[2570,13]]}},"keywords":{}}],["priceinfo",{"_index":1194,"title":{},"content":{"99":{"position":[[157,9]]},"100":{"position":[[106,9]]}},"keywords":{}}],["pricessmooth",{"_index":2493,"title":{},"content":{"255":{"position":[[2429,15]]}},"keywords":{}}],["pricewindow",{"_index":2454,"title":{},"content":{"255":{"position":[[887,11]]}},"keywords":{}}],["principl",{"_index":2700,"title":{},"content":{"273":{"position":[[1541,10],[4538,9]]},"277":{"position":[[364,10]]}},"keywords":{}}],["print",{"_index":1331,"title":{},"content":{"116":{"position":[[130,5]]},"118":{"position":[[1,5]]}},"keywords":{}}],["print(f"",{"_index":1348,"title":{},"content":{"118":{"position":[[403,13]]}},"keywords":{}}],["print(f"coordin",{"_index":1338,"title":{},"content":{"118":{"position":[[59,24]]}},"keywords":{}}],["print(f"period",{"_index":1345,"title":{},"content":{"118":{"position":[[338,20]]}},"keywords":{}}],["print(f"pric",{"_index":1340,"title":{},"content":{"118":{"position":[[116,18]]}},"keywords":{}}],["priorit",{"_index":2773,"title":{},"content":{"273":{"position":[[4987,12]]}},"keywords":{}}],["prioriti",{"_index":1151,"title":{},"content":{"90":{"position":[[458,8]]},"179":{"position":[[740,9]]}},"keywords":{}}],["privat",{"_index":63,"title":{},"content":{"3":{"position":[[551,7],[726,7],[836,7],[1132,7]]}},"keywords":{}}],["pro",{"_index":1872,"title":{},"content":{"182":{"position":[[17,4]]}},"keywords":{}}],["probabl",{"_index":1729,"title":{},"content":{"169":{"position":[[40,8]]}},"keywords":{}}],["problem",{"_index":280,"title":{"241":{"position":[[0,7]]}},"content":{"21":{"position":[[116,7]]},"80":{"position":[[403,7]]},"81":{"position":[[361,7]]},"93":{"position":[[4,8]]},"146":{"position":[[202,7]]},"159":{"position":[[1,8]]},"160":{"position":[[1,8]]},"161":{"position":[[1,8]]},"162":{"position":[[1,8]]},"258":{"position":[[68,8]]},"259":{"position":[[55,8]]},"260":{"position":[[76,8]]},"272":{"position":[[1415,7]]},"273":{"position":[[2277,7],[4420,8],[4581,8],[4727,8],[4846,8]]},"279":{"position":[[269,7]]},"287":{"position":[[183,7]]}},"keywords":{}}],["process",{"_index":300,"title":{"23":{"position":[[7,8]]},"144":{"position":[[13,8]]},"172":{"position":[[40,9]]}},"content":{"140":{"position":[[93,8]]},"150":{"position":[[223,8]]},"163":{"position":[[69,7]]},"172":{"position":[[223,7]]},"182":{"position":[[319,7]]},"206":{"position":[[1,7],[189,10]]},"222":{"position":[[25,7]]},"251":{"position":[[10,9]]},"255":{"position":[[2670,10]]},"280":{"position":[[826,11]]},"294":{"position":[[99,10]]}},"keywords":{}}],["process.memory_info().rss",{"_index":2060,"title":{},"content":{"222":{"position":[[75,25]]}},"keywords":{}}],["processcod",{"_index":1426,"title":{},"content":{"131":{"position":[[456,13]]}},"keywords":{}}],["produc",{"_index":1863,"title":{},"content":{"181":{"position":[[13,7]]}},"keywords":{}}],["product",{"_index":1160,"title":{"220":{"position":[[14,11]]}},"content":{"93":{"position":[[288,10]]}},"keywords":{}}],["profil",{"_index":1177,"title":{"123":{"position":[[12,10]]},"126":{"position":[[0,7]]},"199":{"position":[[0,10]]},"201":{"position":[[7,10]]},"202":{"position":[[6,10]]}},"content":{"95":{"position":[[194,10]]},"202":{"position":[[53,9]]},"222":{"position":[[267,9]]}},"keywords":{}}],["profile)git",{"_index":1837,"title":{},"content":{"179":{"position":[[1249,11]]}},"keywords":{}}],["profile.stat",{"_index":1393,"title":{},"content":{"126":{"position":[[23,13],[81,13]]}},"keywords":{}}],["progress",{"_index":1576,"title":{},"content":{"146":{"position":[[109,8]]},"148":{"position":[[135,8]]},"152":{"position":[[135,8]]},"162":{"position":[[221,9]]},"251":{"position":[[137,13]]},"280":{"position":[[186,8],[591,8],[634,8]]}},"keywords":{}}],["project",{"_index":88,"title":{"136":{"position":[[3,7]]}},"content":{"3":{"position":[[1117,7]]},"133":{"position":[[1233,8]]},"135":{"position":[[5,7]]},"141":{"position":[[6,7]]},"163":{"position":[[6,7]]}},"keywords":{}}],["prompt",{"_index":177,"title":{},"content":{"12":{"position":[[193,8]]},"230":{"position":[[173,7]]}},"keywords":{}}],["prone",{"_index":2150,"title":{},"content":{"239":{"position":[[1306,5]]}},"keywords":{}}],["proper",{"_index":1446,"title":{},"content":{"133":{"position":[[244,6],[910,6]]},"196":{"position":[[27,6]]}},"keywords":{}}],["properli",{"_index":2977,"title":{},"content":{"299":{"position":[[118,8]]}},"keywords":{}}],["properti",{"_index":1969,"title":{},"content":{"205":{"position":[[30,9]]}},"keywords":{}}],["proportion",{"_index":2181,"title":{},"content":{"243":{"position":[[31,14]]}},"keywords":{}}],["propos",{"_index":1438,"title":{},"content":{"132":{"position":[[306,9]]},"146":{"position":[[292,8]]}},"keywords":{}}],["provid",{"_index":428,"title":{},"content":{"31":{"position":[[1057,8]]},"133":{"position":[[1261,8]]},"196":{"position":[[351,8]]},"252":{"position":[[1708,9]]},"278":{"position":[[169,8]]}},"keywords":{}}],["ps",{"_index":1169,"title":{},"content":{"94":{"position":[[526,3]]}},"keywords":{}}],["pseudo",{"_index":2634,"title":{},"content":{"272":{"position":[[126,6]]}},"keywords":{}}],["pstat",{"_index":1395,"title":{},"content":{"126":{"position":[[74,6]]}},"keywords":{}}],["psutil",{"_index":2056,"title":{},"content":{"222":{"position":[[8,6]]}},"keywords":{}}],["psutil.process(os.getpid",{"_index":2058,"title":{},"content":{"222":{"position":[[35,27]]}},"keywords":{}}],["public",{"_index":33,"title":{},"content":{"3":{"position":[[5,6],[363,6],[509,6]]}},"keywords":{}}],["publish",{"_index":1805,"title":{},"content":{"178":{"position":[[181,7]]}},"keywords":{}}],["pull",{"_index":270,"title":{"20":{"position":[[0,4]]}},"content":{"19":{"position":[[46,4]]},"134":{"position":[[446,4]]},"140":{"position":[[80,4]]}},"keywords":{}}],["pump",{"_index":2628,"title":{},"content":{"269":{"position":[[472,5]]},"272":{"position":[[1830,4]]}},"keywords":{}}],["pure",{"_index":1509,"title":{},"content":{"136":{"position":[[446,4]]},"137":{"position":[[350,4]]},"154":{"position":[[66,4],[275,4],[432,4]]}},"keywords":{}}],["purpos",{"_index":704,"title":{"250":{"position":[[0,8]]}},"content":{"50":{"position":[[63,8]]},"51":{"position":[[88,8]]},"52":{"position":[[94,8]]},"53":{"position":[[96,8]]},"56":{"position":[[70,8]]},"57":{"position":[[376,8]]},"149":{"position":[[337,7]]},"237":{"position":[[1,8]]},"238":{"position":[[1,8]]},"239":{"position":[[1,8],[367,8],[602,8]]},"241":{"position":[[608,7]]},"255":{"position":[[674,8]]},"277":{"position":[[71,9],[102,7]]},"278":{"position":[[389,8]]},"279":{"position":[[171,8]]},"280":{"position":[[156,8]]}},"keywords":{}}],["purposeapi",{"_index":939,"title":{},"content":{"67":{"position":[[39,10]]}},"keywords":{}}],["purposepric",{"_index":571,"title":{},"content":{"38":{"position":[[14,12]]}},"keywords":{}}],["push",{"_index":267,"title":{"19":{"position":[[3,4]]}},"content":{"19":{"position":[[5,4]]},"176":{"position":[[303,6],[326,4],[346,4],[753,4]]},"180":{"position":[[32,5],[140,4],[199,4]]},"182":{"position":[[343,4]]},"184":{"position":[[141,4],[161,4],[312,4]]},"185":{"position":[[218,4],[375,4]]},"186":{"position":[[188,4],[279,4]]},"191":{"position":[[64,5]]},"194":{"position":[[118,4],[458,4],[678,6]]},"196":{"position":[[430,4]]},"224":{"position":[[434,5]]}},"keywords":{}}],["push.github/release.yml",{"_index":1890,"title":{},"content":{"187":{"position":[[205,23]]}},"keywords":{}}],["pyright",{"_index":211,"title":{},"content":{"15":{"position":[[89,7]]}},"keywords":{}}],["pytest",{"_index":1324,"title":{"115":{"position":[[0,6]]}},"content":{"116":{"position":[[21,6]]},"138":{"position":[[77,6],[116,6],[169,6]]},"218":{"position":[[8,6]]},"225":{"position":[[17,6],[56,6],[109,6]]}},"keywords":{}}],["pytest.mark.benchmark",{"_index":2036,"title":{},"content":{"218":{"position":[[27,22]]}},"keywords":{}}],["pytest.mark.integr",{"_index":2044,"title":{},"content":{"219":{"position":[[1,24]]}},"keywords":{}}],["pytest.mark.unit",{"_index":222,"title":{},"content":{"17":{"position":[[41,17]]}},"keywords":{}}],["python",{"_index":16,"title":{},"content":{"1":{"position":[[121,6]]},"4":{"position":[[1,6]]},"120":{"position":[[100,6]]},"126":{"position":[[1,6],[64,6]]},"135":{"position":[[352,6]]},"150":{"position":[[508,6]]},"202":{"position":[[63,6]]},"224":{"position":[[119,6],[333,6]]},"231":{"position":[[29,6],[107,6]]}},"keywords":{}}],["python/ha",{"_index":2864,"title":{"281":{"position":[[17,10]]}},"content":{},"keywords":{}}],["q",{"_index":1727,"title":{"169":{"position":[[0,2]]},"170":{"position":[[0,2]]},"171":{"position":[[0,2]]},"172":{"position":[[0,2]]},"173":{"position":[[0,2]]}},"content":{},"keywords":{}}],["qualifi",{"_index":2350,"title":{},"content":{"247":{"position":[[183,9]]}},"keywords":{}}],["qualifywithout",{"_index":2573,"title":{},"content":{"263":{"position":[[220,14]]}},"keywords":{}}],["qualiti",{"_index":1161,"title":{},"content":{"93":{"position":[[299,7]]},"132":{"position":[[158,7]]},"133":{"position":[[510,7],[1077,7]]},"167":{"position":[[36,7]]},"243":{"position":[[2216,7]]},"246":{"position":[[595,7]]},"272":{"position":[[1629,7]]}},"keywords":{}}],["quality)git",{"_index":1830,"title":{},"content":{"179":{"position":[[866,11]]}},"keywords":{}}],["qualityconsid",{"_index":2625,"title":{},"content":{"269":{"position":[[367,15]]}},"keywords":{}}],["qualityconsist",{"_index":1458,"title":{},"content":{"133":{"position":[[786,17]]}},"keywords":{}}],["quarter",{"_index":436,"title":{"42":{"position":[[3,7]]},"279":{"position":[[10,7]]},"293":{"position":[[9,8]]},"297":{"position":[[15,8]]}},"content":{"31":{"position":[[1194,7]]},"41":{"position":[[5,7]]},"77":{"position":[[956,7]]},"80":{"position":[[56,7]]},"100":{"position":[[9,7]]},"157":{"position":[[307,8]]},"279":{"position":[[956,7]]},"285":{"position":[[39,7],[333,7]]},"297":{"position":[[71,7]]}},"keywords":{}}],["quarter_hourli",{"_index":1203,"title":{},"content":{"100":{"position":[[136,15]]}},"keywords":{}}],["quarter_hourlyfirst",{"_index":1206,"title":{},"content":{"100":{"position":[[273,20]]}},"keywords":{}}],["queri",{"_index":395,"title":{"98":{"position":[[0,7]]},"99":{"position":[[10,6]]},"100":{"position":[[11,6]]}},"content":{"31":{"position":[[325,5]]},"36":{"position":[[56,7]]},"99":{"position":[[41,5]]}},"keywords":{}}],["query($homeid",{"_index":1199,"title":{},"content":{"100":{"position":[[33,14]]}},"keywords":{}}],["querytimestamp",{"_index":721,"title":{},"content":{"51":{"position":[[409,16]]}},"keywords":{}}],["question",{"_index":341,"title":{},"content":{"26":{"position":[[61,9]]},"28":{"position":[[99,10]]},"169":{"position":[[26,9]]},"281":{"position":[[6,9]]},"286":{"position":[[6,9]]}},"keywords":{}}],["queue",{"_index":2816,"title":{},"content":{"278":{"position":[[1703,5]]},"289":{"position":[[152,5]]}},"keywords":{}}],["quick",{"_index":1475,"title":{"134":{"position":[[3,5]]},"176":{"position":[[3,5]]},"230":{"position":[[0,5]]}},"content":{"178":{"position":[[239,5]]},"182":{"position":[[201,5]]}},"keywords":{}}],["quickli",{"_index":2553,"title":{},"content":{"258":{"position":[[161,11]]}},"keywords":{}}],["quot",{"_index":1306,"title":{},"content":{"113":{"position":[[288,7],[325,6]]},"252":{"position":[[1933,6],[2146,6]]}},"keywords":{}}],["quot;${workspacefolder}/.venv/lib/python3.13/sit",{"_index":1313,"title":{},"content":{"113":{"position":[[421,50]]}},"keywords":{}}],["quot;""calcul",{"_index":1322,"title":{},"content":{"114":{"position":[[295,27]]}},"keywords":{}}],["quot;""clean",{"_index":1990,"title":{},"content":{"209":{"position":[[74,23]]}},"keywords":{}}],["quot;""fetch",{"_index":1317,"title":{},"content":{"114":{"position":[[91,23]]},"213":{"position":[[74,23]]},"221":{"position":[[56,23]]}},"keywords":{}}],["quot;""help",{"_index":80,"title":{},"content":{"3":{"position":[[898,24]]}},"keywords":{}}],["quot;""period",{"_index":2038,"title":{},"content":{"218":{"position":[[104,24]]}},"keywords":{}}],["quot;""return",{"_index":1971,"title":{},"content":{"205":{"position":[[92,24]]}},"keywords":{}}],["quot;""test",{"_index":226,"title":{},"content":{"17":{"position":[[107,22]]},"219":{"position":[[75,22]]}},"keywords":{}}],["quot;..."",{"_index":2033,"title":{},"content":{"216":{"position":[[267,16],[310,16],[354,16]]}},"keywords":{}}],["quot;0.2.0"",{"_index":1295,"title":{},"content":{"113":{"position":[[46,18]]}},"keywords":{}}],["quot;0.3.0"",{"_index":1792,"title":{},"content":{"176":{"position":[[666,17]]},"185":{"position":[[114,17]]}},"keywords":{}}],["quot;2024",{"_index":1216,"title":{},"content":{"103":{"position":[[52,10]]}},"keywords":{}}],["quot;2025",{"_index":591,"title":{},"content":{"41":{"position":[[122,10],[288,10]]}},"keywords":{}}],["quot;all_intervals"",{"_index":2030,"title":{},"content":{"216":{"position":[[86,26]]}},"keywords":{}}],["quot;any"",{"_index":2432,"title":{},"content":{"253":{"position":[[68,15]]}},"keywords":{}}],["quot;args"",{"_index":1305,"title":{},"content":{"113":{"position":[[270,17]]}},"keywords":{}}],["quot;bas",{"_index":2372,"title":{},"content":{"248":{"position":[[209,10],[289,10]]},"252":{"position":[[1876,10],[2102,10]]}},"keywords":{}}],["quot;baselin",{"_index":2599,"title":{},"content":{"267":{"position":[[381,14]]}},"keywords":{}}],["quot;best",{"_index":2574,"title":{},"content":{"263":{"position":[[283,10]]},"273":{"position":[[1027,10]]}},"keywords":{}}],["quot;best"",{"_index":795,"title":{},"content":{"55":{"position":[[3,17]]}},"keywords":{}}],["quot;best/peak",{"_index":2245,"title":{},"content":{"243":{"position":[[2321,15]]}},"keywords":{}}],["quot;best_price"",{"_index":823,"title":{},"content":{"56":{"position":[[192,23]]}},"keywords":{}}],["quot;best_price_relaxation"",{"_index":829,"title":{},"content":{"56":{"position":[[380,34]]}},"keywords":{}}],["quot;cached"",{"_index":2941,"title":{},"content":{"288":{"position":[[306,18],[442,18]]}},"keywords":{}}],["quot;calcul",{"_index":972,"title":{},"content":{"70":{"position":[[167,17]]}},"keywords":{}}],["quot;chore(releas",{"_index":1783,"title":{},"content":{"176":{"position":[[204,21],[699,21]]},"185":{"position":[[164,21]]},"186":{"position":[[89,21]]},"194":{"position":[[368,21]]}},"keywords":{}}],["quot;code"",{"_index":1249,"title":{},"content":{"106":{"position":[[115,17],[295,17],[471,17]]}},"keywords":{}}],["quot;commit",{"_index":1701,"title":{},"content":{"162":{"position":[[137,12]]}},"keywords":{}}],["quot;complex_sensor"",{"_index":1974,"title":{},"content":{"205":{"position":[[212,27]]}},"keywords":{}}],["quot;config"",{"_index":1308,"title":{},"content":{"113":{"position":[[305,19]]}},"keywords":{}}],["quot;configurations"",{"_index":1296,"title":{},"content":{"113":{"position":[[65,27]]}},"keywords":{}}],["quot;consid",{"_index":2426,"title":{},"content":{"252":{"position":[[1940,14],[2153,14]]}},"keywords":{}}],["quot;curr",{"_index":2840,"title":{},"content":{"279":{"position":[[1696,13]]}},"keywords":{}}],["quot;currency"",{"_index":1125,"title":{},"content":{"86":{"position":[[350,21]]},"104":{"position":[[3,21]]}},"keywords":{}}],["quot;debug",{"_index":1334,"title":{},"content":{"117":{"position":[[34,11]]}},"keywords":{}}],["quot;debugpy"",{"_index":1300,"title":{},"content":{"113":{"position":[[161,20]]}},"keywords":{}}],["quot;dev",{"_index":1840,"title":{},"content":{"179":{"position":[[1351,9]]},"230":{"position":[[211,9]]}},"keywords":{}}],["quot;difference"",{"_index":602,"title":{},"content":{"41":{"position":[[463,23]]}},"keywords":{}}],["quot;doc",{"_index":1615,"title":{},"content":{"149":{"position":[[242,11]]}},"keywords":{}}],["quot;document",{"_index":1697,"title":{},"content":{"161":{"position":[[163,19]]}},"keywords":{}}],["quot;draft",{"_index":1799,"title":{},"content":{"178":{"position":[[69,11]]}},"keywords":{}}],["quot;en"",{"_index":144,"title":{},"content":{"7":{"position":[[73,15],[134,15]]},"52":{"position":[[528,15],[776,15]]}},"keywords":{}}],["quot;env"",{"_index":1311,"title":{},"content":{"113":{"position":[[378,16]]}},"keywords":{}}],["quot;errors"",{"_index":1245,"title":{},"content":{"106":{"position":[[19,19],[194,19],[373,19]]}},"keywords":{}}],["quot;eur"",{"_index":1126,"title":{},"content":{"86":{"position":[[372,15]]},"104":{"position":[[25,15]]}},"keywords":{}}],["quot;everi",{"_index":2243,"title":{},"content":{"243":{"position":[[2246,11]]}},"keywords":{}}],["quot;expens",{"_index":2523,"title":{},"content":{"255":{"position":[[3475,15]]}},"keywords":{}}],["quot;extensions"",{"_index":1248,"title":{},"content":{"106":{"position":[[89,23],[269,23],[445,23]]}},"keywords":{}}],["quot;feat(sensor",{"_index":239,"title":{},"content":{"18":{"position":[[55,20]]}},"keywords":{}}],["quot;fetch",{"_index":2966,"title":{},"content":{"296":{"position":[[88,14]]}},"keywords":{}}],["quot;filt",{"_index":2537,"title":{},"content":{"256":{"position":[[170,12]]}},"keywords":{}}],["quot;flat",{"_index":2206,"title":{},"content":{"243":{"position":[[678,10]]},"259":{"position":[[65,10]]}},"keywords":{}}],["quot;flex"",{"_index":796,"title":{},"content":{"55":{"position":[[21,18],[140,18]]}},"keywords":{}}],["quot;full_history"",{"_index":2031,"title":{},"content":{"216":{"position":[[136,25]]}},"keywords":{}}],["quot;gener",{"_index":1802,"title":{},"content":{"178":{"position":[[121,14]]}},"keywords":{}}],["quot;high",{"_index":2226,"title":{},"content":{"243":{"position":[[1570,10]]},"267":{"position":[[811,10]]}},"keywords":{}}],["quot;high"",{"_index":785,"title":{},"content":{"54":{"position":[[49,17],[136,17]]}},"keywords":{}}],["quot;hom",{"_index":1256,"title":{},"content":{"106":{"position":[[417,10]]},"113":{"position":[[115,10]]}},"keywords":{}}],["quot;homeassistant"",{"_index":1304,"title":{},"content":{"113":{"position":[[243,26]]}},"keywords":{}}],["quot;homes"",{"_index":875,"title":{},"content":{"57":{"position":[[182,18]]}},"keywords":{}}],["quot;i",{"_index":2140,"title":{},"content":{"239":{"position":[[925,8]]},"279":{"position":[[1802,8]]}},"keywords":{}}],["quot;i'l",{"_index":1691,"title":{},"content":{"160":{"position":[[10,10]]},"162":{"position":[[10,10]]}},"keywords":{}}],["quot;in",{"_index":2838,"title":{},"content":{"279":{"position":[[1525,9]]}},"keywords":{}}],["quot;intervals"",{"_index":826,"title":{},"content":{"56":{"position":[[274,22]]}},"keywords":{}}],["quot;justmycode"",{"_index":1310,"title":{},"content":{"113":{"position":[[347,23]]}},"keywords":{}}],["quot;launch"",{"_index":1302,"title":{},"content":{"113":{"position":[[203,19]]}},"keywords":{}}],["quot;level"",{"_index":596,"title":{},"content":{"41":{"position":[[188,18],[354,18]]},"103":{"position":[[95,18]]}},"keywords":{}}],["quot;listener"",{"_index":2988,"title":{},"content":{"301":{"position":[[492,20]]}},"keywords":{}}],["quot;low"",{"_index":784,"title":{},"content":{"54":{"position":[[27,17]]}},"keywords":{}}],["quot;message"",{"_index":1246,"title":{},"content":{"106":{"position":[[42,20],[217,20],[396,20]]}},"keywords":{}}],["quot;metadata"",{"_index":827,"title":{},"content":{"56":{"position":[[331,21]]}},"keywords":{}}],["quot;midnight",{"_index":2776,"title":{},"content":{"273":{"position":[[5092,14]]},"296":{"position":[[220,14]]},"297":{"position":[[108,14]]}},"keywords":{}}],["quot;migr",{"_index":1748,"title":{},"content":{"171":{"position":[[163,15]]}},"keywords":{}}],["quot;min_distance_from_avg"",{"_index":798,"title":{},"content":{"55":{"position":[[46,34],[165,34]]}},"keywords":{}}],["quot;min_period_length"",{"_index":800,"title":{},"content":{"55":{"position":[[86,30],[205,30]]}},"keywords":{}}],["quot;moderate"",{"_index":788,"title":{},"content":{"54":{"position":[[107,22]]}},"keywords":{}}],["quot;module"",{"_index":1303,"title":{},"content":{"113":{"position":[[223,19]]}},"keywords":{}}],["quot;name"",{"_index":1297,"title":{},"content":{"113":{"position":[[97,17]]}},"keywords":{}}],["quot;next_interval"",{"_index":2034,"title":{},"content":{"216":{"position":[[327,26]]}},"keywords":{}}],["quot;normal"",{"_index":597,"title":{},"content":{"41":{"position":[[207,18],[373,19],[554,18]]},"103":{"position":[[114,18]]}},"keywords":{}}],["quot;not_found"",{"_index":1258,"title":{},"content":{"106":{"position":[[489,21]]}},"keywords":{}}],["quot;opt",{"_index":959,"title":{},"content":{"69":{"position":[[57,13]]}},"keywords":{}}],["quot;oth",{"_index":1809,"title":{},"content":{"178":{"position":[[317,11]]}},"keywords":{}}],["quot;outli",{"_index":2612,"title":{},"content":{"267":{"position":[[1031,13]]}},"keywords":{}}],["quot;peak"",{"_index":802,"title":{},"content":{"55":{"position":[[122,17]]}},"keywords":{}}],["quot;peak_price"",{"_index":831,"title":{},"content":{"56":{"position":[[459,23]]}},"keywords":{}}],["quot;peak_price_relaxation"",{"_index":832,"title":{},"content":{"56":{"position":[[490,34]]}},"keywords":{}}],["quot;periods"",{"_index":824,"title":{},"content":{"56":{"position":[[218,20]]}},"keywords":{}}],["quot;plan",{"_index":1714,"title":{},"content":{"163":{"position":[[659,14]]}},"keywords":{}}],["quot;priceinfo"",{"_index":876,"title":{},"content":{"57":{"position":[[208,22]]},"86":{"position":[[282,22]]}},"keywords":{}}],["quot;propos",{"_index":1746,"title":{},"content":{"171":{"position":[[106,14]]}},"keywords":{}}],["quot;pythonpath"",{"_index":1312,"title":{},"content":{"113":{"position":[[397,23]]}},"keywords":{}}],["quot;rate_limit_exceeded"",{"_index":1254,"title":{},"content":{"106":{"position":[[313,31]]}},"keywords":{}}],["quot;rating_level"",{"_index":606,"title":{},"content":{"41":{"position":[[528,25]]},"216":{"position":[[284,25]]}},"keywords":{}}],["quot;refactor",{"_index":1743,"title":{},"content":{"170":{"position":[[330,14]]}},"keywords":{}}],["quot;relaxation_active"",{"_index":830,"title":{},"content":{"56":{"position":[[415,31]]}},"keywords":{}}],["quot;reopen",{"_index":175,"title":{},"content":{"12":{"position":[[156,12]]},"134":{"position":[[61,12]]}},"keywords":{}}],["quot;request"",{"_index":1301,"title":{},"content":{"113":{"position":[[182,20]]}},"keywords":{}}],["quot;risk",{"_index":1750,"title":{},"content":{"171":{"position":[[212,11]]}},"keywords":{}}],["quot;significantli",{"_index":2557,"title":{},"content":{"259":{"position":[[162,20]]}},"keywords":{}}],["quot;sind",{"_index":2866,"title":{},"content":{"281":{"position":[[16,10]]}},"keywords":{}}],["quot;slightli",{"_index":2279,"title":{},"content":{"246":{"position":[[384,14]]}},"keywords":{}}],["quot;spread"",{"_index":2692,"title":{},"content":{"273":{"position":[[1165,18]]}},"keywords":{}}],["quot;stabl",{"_index":2359,"title":{},"content":{"247":{"position":[[669,12]]}},"keywords":{}}],["quot;stable"result",{"_index":2363,"title":{},"content":{"247":{"position":[[760,25]]}},"keywords":{}}],["quot;startsat"",{"_index":590,"title":{},"content":{"41":{"position":[[100,21],[266,21]]},"103":{"position":[[30,21]]}},"keywords":{}}],["quot;success",{"_index":1760,"title":{},"content":{"173":{"position":[[14,13]]}},"keywords":{}}],["quot;tag",{"_index":1901,"title":{},"content":{"194":{"position":[[1,9]]}},"keywords":{}}],["quot;thi",{"_index":1677,"title":{},"content":{"159":{"position":[[10,10]]},"243":{"position":[[782,10]]}},"keywords":{}}],["quot;thresholds"",{"_index":783,"title":{},"content":{"54":{"position":[[3,23]]}},"keywords":{}}],["quot;thund",{"_index":2803,"title":{},"content":{"278":{"position":[[1205,16]]},"287":{"position":[[155,16]]}},"keywords":{}}],["quot;tibber_prices"",{"_index":1350,"title":{},"content":{"120":{"position":[[14,25]]}},"keywords":{}}],["quot;timestamp"",{"_index":874,"title":{},"content":{"57":{"position":[[154,22]]},"216":{"position":[[244,22]]}},"keywords":{}}],["quot;today"",{"_index":906,"title":{},"content":{"60":{"position":[[326,18]]}},"keywords":{}}],["quot;tomorrow_check"",{"_index":751,"title":{},"content":{"51":{"position":[[1222,26]]},"278":{"position":[[883,27]]},"288":{"position":[[208,26]]}},"keywords":{}}],["quot;too",{"_index":1252,"title":{},"content":{"106":{"position":[[238,9]]}},"keywords":{}}],["quot;total"",{"_index":594,"title":{},"content":{"41":{"position":[[161,18],[327,18]]},"103":{"position":[[3,18]]}},"keywords":{}}],["quot;trailing_avg_24h"",{"_index":598,"title":{},"content":{"41":{"position":[[393,29]]}},"keywords":{}}],["quot;type"",{"_index":1299,"title":{},"content":{"113":{"position":[[143,17]]}},"keywords":{}}],["quot;unauthenticated"",{"_index":1250,"title":{},"content":{"106":{"position":[[133,27]]}},"keywords":{}}],["quot;unauthorized"",{"_index":1247,"title":{},"content":{"106":{"position":[[63,25]]}},"keywords":{}}],["quot;upd",{"_index":2970,"title":{},"content":{"297":{"position":[[27,13]]},"298":{"position":[[27,13]]}},"keywords":{}}],["quot;update_needed"",{"_index":2943,"title":{},"content":{"288":{"position":[[491,25]]}},"keywords":{}}],["quot;us",{"_index":970,"title":{},"content":{"70":{"position":[[120,11]]},"296":{"position":[[159,11]]}},"keywords":{}}],["quot;user_data"",{"_index":1123,"title":{},"content":{"86":{"position":[[252,22]]}},"keywords":{}}],["quot;version"",{"_index":1294,"title":{},"content":{"113":{"position":[[25,20]]},"176":{"position":[[645,20]]},"185":{"position":[[93,20]]}},"keywords":{}}],["quot;very_high"",{"_index":791,"title":{},"content":{"54":{"position":[[160,22]]}},"keywords":{}}],["quot;volatility_thresholds"",{"_index":787,"title":{},"content":{"54":{"position":[[72,34]]}},"keywords":{}}],["quot;warum",{"_index":2909,"title":{},"content":{"286":{"position":[[16,11]]}},"keywords":{}}],["quot;whi",{"_index":1620,"title":{},"content":{"149":{"position":[[466,9]]},"246":{"position":[[2165,9]]},"272":{"position":[[1376,9]]}},"keywords":{}}],["race",{"_index":2795,"title":{},"content":{"278":{"position":[[577,4]]}},"keywords":{}}],["ram",{"_index":995,"title":{},"content":{"75":{"position":[[104,3]]},"94":{"position":[[510,4],[654,3]]}},"keywords":{}}],["ramp",{"_index":2516,"title":{},"content":{"255":{"position":[[3202,4]]}},"keywords":{}}],["ran",{"_index":2822,"title":{},"content":{"279":{"position":[[506,3]]}},"keywords":{}}],["random",{"_index":2802,"title":{},"content":{"278":{"position":[[1181,6]]},"287":{"position":[[425,6]]},"299":{"position":[[274,6]]}},"keywords":{}}],["rang",{"_index":2107,"title":{"248":{"position":[[12,6]]}},"content":{"237":{"position":[[369,6]]},"238":{"position":[[463,6]]},"252":{"position":[[822,5]]},"255":{"position":[[3813,6]]},"262":{"position":[[7,6],[221,5]]},"263":{"position":[[7,6]]},"264":{"position":[[7,6]]},"273":{"position":[[4032,5]]}},"keywords":{}}],["range(10",{"_index":2047,"title":{},"content":{"219":{"position":[[158,10]]}},"keywords":{}}],["range(max_relaxation_attempt",{"_index":2394,"title":{},"content":{"252":{"position":[[264,31]]}},"keywords":{}}],["range(resolut",{"_index":1202,"title":{},"content":{"100":{"position":[[118,17]]}},"keywords":{}}],["rapid",{"_index":1457,"title":{},"content":{"133":{"position":[[742,5]]}},"keywords":{}}],["rare",{"_index":2944,"title":{},"content":{"288":{"position":[[519,4]]}},"keywords":{}}],["rate",{"_index":414,"title":{"101":{"position":[[0,4]]}},"content":{"31":{"position":[[712,6]]},"36":{"position":[[299,8],[462,8]]},"38":{"position":[[48,6]]},"56":{"position":[[1301,5]]},"101":{"position":[[12,4]]},"106":{"position":[[170,4]]},"107":{"position":[[194,6]]},"137":{"position":[[329,7]]}},"keywords":{}}],["rating_level",{"_index":837,"title":{},"content":{"56":{"position":[[615,13]]},"57":{"position":[[291,13]]},"62":{"position":[[126,13]]}},"keywords":{}}],["ratio",{"_index":2512,"title":{},"content":{"255":{"position":[[3055,6]]}},"keywords":{}}],["rational",{"_index":283,"title":{"246":{"position":[[0,9]]}},"content":{"21":{"position":[[148,9]]},"239":{"position":[[859,9]]},"247":{"position":[[95,10],[616,10]]}},"keywords":{}}],["rationaleasync",{"_index":1145,"title":{},"content":{"90":{"position":[[17,14]]}},"keywords":{}}],["rationale≀20",{"_index":2193,"title":{},"content":{"243":{"position":[[337,13]]}},"keywords":{}}],["raw",{"_index":149,"title":{},"content":{"8":{"position":[[15,3]]},"31":{"position":[[444,3]]},"107":{"position":[[1,3]]},"137":{"position":[[204,3]]},"256":{"position":[[303,3]]},"262":{"position":[[460,3]]},"263":{"position":[[547,3]]},"264":{"position":[[576,3]]}},"keywords":{}}],["re",{"_index":879,"title":{},"content":{"57":{"position":[[391,2]]},"62":{"position":[[295,2]]},"65":{"position":[[225,3]]},"66":{"position":[[225,2]]},"67":{"position":[[449,2]]},"72":{"position":[[170,2]]},"80":{"position":[[176,2],[350,2]]},"85":{"position":[[99,2]]}},"keywords":{}}],["re/kwh",{"_index":1243,"title":{},"content":{"104":{"position":[[179,7]]}},"keywords":{}}],["re/kwhsek",{"_index":1240,"title":{},"content":{"104":{"position":[[137,10]]}},"keywords":{}}],["reach",{"_index":2387,"title":{},"content":{"251":{"position":[[195,7]]},"252":{"position":[[1166,7]]},"253":{"position":[[137,7]]},"266":{"position":[[390,7]]}},"keywords":{}}],["react",{"_index":2301,"title":{},"content":{"246":{"position":[[1074,5]]}},"keywords":{}}],["read",{"_index":430,"title":{},"content":{"31":{"position":[[1106,4]]},"55":{"position":[[812,4]]},"62":{"position":[[298,7],[620,5]]},"163":{"position":[[106,5]]},"174":{"position":[[464,4]]}},"keywords":{}}],["readabl",{"_index":1706,"title":{},"content":{"163":{"position":[[209,8]]}},"keywords":{}}],["readi",{"_index":1787,"title":{},"content":{"176":{"position":[[336,5]]},"184":{"position":[[151,5]]}},"keywords":{}}],["real",{"_index":1147,"title":{"150":{"position":[[0,4]]}},"content":{"90":{"position":[[305,4]]},"133":{"position":[[1174,4]]},"174":{"position":[[561,4]]},"246":{"position":[[1861,4]]}},"keywords":{}}],["realist",{"_index":1661,"title":{},"content":{"153":{"position":[[216,9]]}},"keywords":{}}],["realiti",{"_index":2735,"title":{},"content":{"273":{"position":[[3397,7]]}},"keywords":{}}],["realityreject",{"_index":2767,"title":{},"content":{"273":{"position":[[4627,16]]}},"keywords":{}}],["realiz",{"_index":1682,"title":{},"content":{"159":{"position":[[102,7]]}},"keywords":{}}],["reason",{"_index":2236,"title":{"287":{"position":[[0,6]]},"288":{"position":[[0,6]]},"289":{"position":[[0,6]]}},"content":{"243":{"position":[[2016,6]]},"255":{"position":[[3629,6]]},"273":{"position":[[840,6]]},"296":{"position":[[117,8]]}},"keywords":{}}],["rebuild",{"_index":480,"title":{},"content":{"34":{"position":[[75,8]]},"65":{"position":[[116,9],[237,8]]},"66":{"position":[[146,8]]},"179":{"position":[[1319,7],[1373,7]]}},"keywords":{}}],["recalcul",{"_index":425,"title":{},"content":{"31":{"position":[[967,11]]},"46":{"position":[[134,13]]},"56":{"position":[[1277,11],[1801,13]]},"61":{"position":[[238,12]]},"65":{"position":[[183,12]]},"66":{"position":[[177,14]]},"280":{"position":[[849,14]]}},"keywords":{}}],["recognit",{"_index":1444,"title":{},"content":{"133":{"position":[[131,12]]}},"keywords":{}}],["recommend",{"_index":1778,"title":{"184":{"position":[[32,14]]},"248":{"position":[[0,11]]}},"content":{"176":{"position":[[1,11]]},"246":{"position":[[2592,11]]},"247":{"position":[[432,15]]},"248":{"position":[[25,14]]},"289":{"position":[[49,11]]}},"keywords":{}}],["reconfigur",{"_index":806,"title":{},"content":{"55":{"position":[[394,12]]},"66":{"position":[[317,16]]}},"keywords":{}}],["records/year",{"_index":2023,"title":{},"content":{"215":{"position":[[137,12]]}},"keywords":{}}],["recreat",{"_index":1904,"title":{},"content":{"194":{"position":[[104,9]]}},"keywords":{}}],["reduc",{"_index":712,"title":{},"content":{"51":{"position":[[97,6],[1291,7]]},"67":{"position":[[97,6]]},"152":{"position":[[153,7]]},"243":{"position":[[11,6],[1603,8]]},"256":{"position":[[455,8]]},"267":{"position":[[840,8]]}},"keywords":{}}],["reduct",{"_index":563,"title":{"45":{"position":[[9,10]]}},"content":{"37":{"position":[[1086,9]]},"47":{"position":[[126,9]]},"57":{"position":[[990,11]]},"67":{"position":[[555,9],[616,9],[693,9]]},"243":{"position":[[415,9],[449,9],[480,9],[1086,9]]},"246":{"position":[[898,9]]},"267":{"position":[[904,11]]}},"keywords":{}}],["redund",{"_index":817,"title":{},"content":{"55":{"position":[[914,9]]},"57":{"position":[[123,10],[932,9]]}},"keywords":{}}],["ref_dat",{"_index":2708,"title":{},"content":{"273":{"position":[[1859,8],[5216,8]]}},"keywords":{}}],["ref_price=ref_prices[ref_d",{"_index":2710,"title":{},"content":{"273":{"position":[[1920,31]]}},"keywords":{}}],["refactor",{"_index":96,"title":{"142":{"position":[[0,11]]},"143":{"position":[[15,12]]},"172":{"position":[[16,11]]},"173":{"position":[[24,11]]}},"content":{"3":{"position":[[1282,12]]},"25":{"position":[[326,9]]},"37":{"position":[[78,11]]},"43":{"position":[[41,11]]},"131":{"position":[[573,12]]},"143":{"position":[[55,11]]},"145":{"position":[[114,11]]},"146":{"position":[[60,11]]},"149":{"position":[[134,11],[208,11],[273,11],[402,11],[558,11]]},"150":{"position":[[21,11]]},"152":{"position":[[10,12]]},"161":{"position":[[18,11],[215,11]]},"163":{"position":[[259,11],[363,11]]},"165":{"position":[[120,11]]},"166":{"position":[[87,11],[167,11],[244,11]]},"171":{"position":[[292,14]]},"173":{"position":[[288,11]]},"174":{"position":[[387,12],[601,11]]},"181":{"position":[[308,11]]}},"keywords":{}}],["refactoring.mdus",{"_index":100,"title":{},"content":{"3":{"position":[[1340,17]]}},"keywords":{}}],["refactorings"",{"_index":1715,"title":{},"content":{"163":{"position":[[680,18]]}},"keywords":{}}],["refer",{"_index":701,"title":{"95":{"position":[[3,11]]},"96":{"position":[[4,9]]},"237":{"position":[[36,11]]},"274":{"position":[[0,11]]}},"content":{"48":{"position":[[301,9]]},"73":{"position":[[137,9]]},"77":{"position":[[474,10],[992,9],[1039,9]]},"141":{"position":[[120,5]]},"149":{"position":[[497,10]]},"150":{"position":[[450,9]]},"161":{"position":[[60,9]]},"209":{"position":[[10,11],[205,10]]},"273":{"position":[[1599,9],[2205,9],[4821,9]]},"300":{"position":[[136,9]]}},"keywords":{}}],["refin",{"_index":1756,"title":{},"content":{"172":{"position":[[149,6]]},"255":{"position":[[2645,10]]}},"keywords":{}}],["reflect",{"_index":2266,"title":{},"content":{"246":{"position":[[54,7],[2584,7]]}},"keywords":{}}],["refresh",{"_index":727,"title":{"279":{"position":[[23,7]]},"280":{"position":[[17,7]]},"293":{"position":[[23,9]]},"294":{"position":[[17,9]]}},"content":{"51":{"position":[[562,10]]},"66":{"position":[[72,8]]},"83":{"position":[[86,7]]},"137":{"position":[[160,7]]},"157":{"position":[[321,8]]},"277":{"position":[[243,7]]},"279":{"position":[[969,7]]},"285":{"position":[[52,7],[346,7]]},"288":{"position":[[723,7]]},"289":{"position":[[250,9]]}},"keywords":{}}],["refresh_user_data",{"_index":508,"title":{},"content":{"36":{"position":[[636,18]]}},"keywords":{}}],["refs/tags/v0.3.0",{"_index":1905,"title":{},"content":{"194":{"position":[[130,17]]}},"keywords":{}}],["regardless",{"_index":2424,"title":{},"content":{"252":{"position":[[1752,10]]}},"keywords":{}}],["regist",{"_index":965,"title":{},"content":{"69":{"position":[[225,10]]},"75":{"position":[[194,10]]},"77":{"position":[[352,10],[406,10],[448,10],[1523,10],[1657,9]]},"80":{"position":[[78,10],[128,10]]},"281":{"position":[[290,8],[361,9],[475,8]]},"301":{"position":[[622,9]]}},"keywords":{}}],["register(self",{"_index":1999,"title":{},"content":{"209":{"position":[[326,14]]}},"keywords":{}}],["register_lifecycle_callback())sensor",{"_index":1018,"title":{},"content":{"77":{"position":[[294,37]]}},"keywords":{}}],["register_lifecycle_callback()sensor/core.pi",{"_index":1030,"title":{},"content":{"77":{"position":[[787,43]]}},"keywords":{}}],["registr",{"_index":981,"title":{},"content":{"71":{"position":[[193,13]]}},"keywords":{}}],["registration)__init__.pi",{"_index":1055,"title":{},"content":{"77":{"position":[[1896,24]]}},"keywords":{}}],["regress",{"_index":1762,"title":{},"content":{"173":{"position":[[160,11]]},"255":{"position":[[817,10],[2304,10],[2998,11],[3135,10]]}},"keywords":{}}],["regular",{"_index":2901,"title":{},"content":{"284":{"position":[[404,7]]}},"keywords":{}}],["reject",{"_index":2166,"title":{},"content":{"241":{"position":[[419,8]]},"243":{"position":[[2097,9]]},"246":{"position":[[2070,10],[2281,10]]},"255":{"position":[[1275,7],[3698,9],[3765,9],[3822,9],[3868,9]]},"273":{"position":[[4370,9]]}},"keywords":{}}],["rel",{"_index":633,"title":{},"content":{"42":{"position":[[580,8]]},"255":{"position":[[1829,8]]},"273":{"position":[[2986,8],[3147,9],[3219,9],[4518,8]]},"279":{"position":[[1509,8]]}},"keywords":{}}],["relat",{"_index":293,"title":{"48":{"position":[[0,7]]},"73":{"position":[[0,7]]},"300":{"position":[[0,7]]}},"content":{"21":{"position":[[376,7]]},"28":{"position":[[190,8]]},"129":{"position":[[138,8]]},"222":{"position":[[186,8]]},"235":{"position":[[325,7]]}},"keywords":{}}],["relative_volatility_threshold",{"_index":2489,"title":{},"content":{"255":{"position":[[2198,29]]}},"keywords":{}}],["relative_volatility_threshold)singl",{"_index":2485,"title":{},"content":{"255":{"position":[[1881,37]]}},"keywords":{}}],["relax",{"_index":498,"title":{"249":{"position":[[0,10]]},"252":{"position":[[0,10]]},"258":{"position":[[33,11]]},"265":{"position":[[12,10]]},"266":{"position":[[12,10]]}},"content":{"36":{"position":[[402,10]]},"56":{"position":[[1556,10],[1773,12]]},"131":{"position":[[195,10]]},"235":{"position":[[219,10],[539,10]]},"245":{"position":[[317,10]]},"247":{"position":[[464,10],[502,11]]},"248":{"position":[[6,10],[58,10],[141,10],[322,10],[385,11],[505,10]]},"251":{"position":[[118,10],[151,7]]},"252":{"position":[[560,10],[1150,10],[1251,10],[1337,10],[1916,10],[2188,10]]},"255":{"position":[[393,10]]},"256":{"position":[[406,10]]},"258":{"position":[[255,10]]},"263":{"position":[[630,10]]},"265":{"position":[[397,10]]},"266":{"position":[[290,10]]},"267":{"position":[[326,10],[350,10]]},"272":{"position":[[499,10],[810,11]]},"275":{"position":[[68,10]]}},"keywords":{}}],["relax_single_day",{"_index":2448,"title":{},"content":{"255":{"position":[[535,21]]}},"keywords":{}}],["relaxation."",{"_index":2427,"title":{},"content":{"252":{"position":[[1988,18]]}},"keywords":{}}],["relaxation=on",{"_index":2589,"title":{},"content":{"265":{"position":[[108,14]]},"266":{"position":[[101,14]]}},"keywords":{}}],["relaxationhigh",{"_index":2596,"title":{},"content":{"267":{"position":[[187,14]]}},"keywords":{}}],["relaxationif",{"_index":2608,"title":{},"content":{"267":{"position":[[711,12]]}},"keywords":{}}],["relaxationsimpl",{"_index":2682,"title":{},"content":{"273":{"position":[[451,20]]}},"keywords":{}}],["releas",{"_index":374,"title":{"175":{"position":[[0,7]]},"176":{"position":[[28,8]]},"177":{"position":[[3,7]]},"183":{"position":[[12,7]]}},"content":{"28":{"position":[[311,8]]},"48":{"position":[[249,7]]},"131":{"position":[[424,7]]},"135":{"position":[[452,7],[476,7],[519,7],[544,7]]},"176":{"position":[[90,7],[434,7],[499,7],[845,7],[894,7]]},"178":{"position":[[23,7],[136,7],[245,9]]},"180":{"position":[[11,7],[172,7],[279,7],[330,7]]},"182":{"position":[[47,8],[207,7],[275,7],[304,7]]},"184":{"position":[[19,7],[211,7],[392,7]]},"185":{"position":[[317,7],[346,7],[500,7]]},"186":{"position":[[214,7],[239,7]]},"187":{"position":[[190,7]]},"192":{"position":[[1,7]]},"195":{"position":[[48,8]]},"196":{"position":[[308,7],[454,7]]}},"keywords":{}}],["release"select",{"_index":1800,"title":{},"content":{"178":{"position":[[87,19]]}},"keywords":{}}],["release_notes_backend=copilot",{"_index":1819,"title":{},"content":{"179":{"position":[[386,29]]}},"keywords":{}}],["release_notes_backend=git",{"_index":1820,"title":{},"content":{"179":{"position":[[482,25]]}},"keywords":{}}],["release_notes_backend=manu",{"_index":1823,"title":{},"content":{"179":{"position":[[588,28]]}},"keywords":{}}],["releaseauto",{"_index":1885,"title":{},"content":{"186":{"position":[[321,11]]}},"keywords":{}}],["releasesclick",{"_index":1798,"title":{},"content":{"178":{"position":[[55,13]]}},"keywords":{}}],["relev",{"_index":262,"title":{},"content":{"18":{"position":[[457,9]]},"56":{"position":[[554,8]]},"70":{"position":[[244,8]]},"243":{"position":[[385,8]]},"288":{"position":[[137,8]]}},"keywords":{}}],["reliabl",{"_index":1862,"title":{},"content":{"180":{"position":[[401,12]]},"196":{"position":[[410,8]]},"250":{"position":[[209,12]]},"252":{"position":[[126,12]]}},"keywords":{}}],["reliable)manu",{"_index":1833,"title":{},"content":{"179":{"position":[[916,16]]}},"keywords":{}}],["reload",{"_index":986,"title":{},"content":{"72":{"position":[[210,6]]},"77":{"position":[[1742,6]]},"94":{"position":[[562,6],[641,7]]}},"keywords":{}}],["remain",{"_index":1002,"title":{},"content":{"75":{"position":[[187,6],[359,6]]},"77":{"position":[[1721,7]]},"79":{"position":[[266,6]]}},"keywords":{}}],["rememb",{"_index":1773,"title":{},"content":{"174":{"position":[[340,9]]}},"keywords":{}}],["remot",{"_index":160,"title":{"128":{"position":[[0,6]]}},"content":{"11":{"position":[[17,6]]},"128":{"position":[[184,6]]},"194":{"position":[[72,6]]}},"keywords":{}}],["remote)auto",{"_index":1894,"title":{},"content":{"190":{"position":[[45,11]]}},"keywords":{}}],["remotelyinvalid",{"_index":1909,"title":{},"content":{"194":{"position":[[590,15]]}},"keywords":{}}],["remov",{"_index":1003,"title":{},"content":{"75":{"position":[[218,7]]},"77":{"position":[[120,7],[203,7],[340,7],[394,7],[641,7]]},"79":{"position":[[99,8],[247,8]]},"92":{"position":[[99,7]]},"135":{"position":[[178,6]]},"252":{"position":[[1520,7]]},"255":{"position":[[3724,7]]},"281":{"position":[[1176,7]]}},"keywords":{}}],["removalcach",{"_index":1071,"title":{},"content":{"79":{"position":[[166,12]]}},"keywords":{}}],["renam",{"_index":111,"title":{},"content":{"3":{"position":[[1489,7]]},"143":{"position":[[679,9]]}},"keywords":{}}],["renamestest",{"_index":103,"title":{},"content":{"3":{"position":[[1396,11]]}},"keywords":{}}],["reopen",{"_index":2078,"title":{},"content":{"230":{"position":[[136,6],[233,6]]}},"keywords":{}}],["repeat",{"_index":760,"title":{},"content":{"52":{"position":[[109,8]]}},"keywords":{}}],["repl",{"_index":1408,"title":{"129":{"position":[[8,5]]}},"content":{},"keywords":{}}],["replac",{"_index":5,"title":{},"content":{"1":{"position":[[24,9]]}},"keywords":{}}],["report",{"_index":360,"title":{},"content":{"28":{"position":[[21,8]]}},"keywords":{}}],["report=html",{"_index":1164,"title":{},"content":{"94":{"position":[[382,11]]}},"keywords":{}}],["repositori",{"_index":166,"title":{},"content":{"12":{"position":[[10,10]]},"230":{"position":[[13,10]]}},"keywords":{}}],["repositoryopen",{"_index":1477,"title":{},"content":{"134":{"position":[[20,14]]}},"keywords":{}}],["request",{"_index":271,"title":{"20":{"position":[[5,7]]}},"content":{"19":{"position":[[51,7]]},"28":{"position":[[51,8]]},"101":{"position":[[44,8],[88,8]]},"111":{"position":[[621,7]]},"134":{"position":[[451,7]]},"140":{"position":[[85,7]]}},"keywords":{}}],["request/daytot",{"_index":1213,"title":{},"content":{"101":{"position":[[222,17]]}},"keywords":{}}],["requestedapprov",{"_index":306,"title":{},"content":{"23":{"position":[[90,17]]}},"keywords":{}}],["requests"",{"_index":1253,"title":{},"content":{"106":{"position":[[253,15]]}},"keywords":{}}],["requests/day",{"_index":1214,"title":{},"content":{"101":{"position":[[245,12]]}},"keywords":{}}],["requests/dayus",{"_index":1212,"title":{},"content":{"101":{"position":[[181,16]]}},"keywords":{}}],["requestspul",{"_index":361,"title":{},"content":{"28":{"position":[[38,12]]}},"keywords":{}}],["requir",{"_index":51,"title":{"195":{"position":[[10,13]]}},"content":{"3":{"position":[[352,9]]},"135":{"position":[[367,8]]},"143":{"position":[[96,9]]},"146":{"position":[[684,12]]},"182":{"position":[[77,8]]},"195":{"position":[[26,9],[97,8]]},"224":{"position":[[134,8],[270,8]]},"272":{"position":[[1250,8],[2109,12]]},"273":{"position":[[423,12]]}},"keywords":{}}],["research",{"_index":2654,"title":{},"content":{"272":{"position":[[1538,9],[2279,8]]}},"keywords":{}}],["residu",{"_index":2472,"title":{},"content":{"255":{"position":[[1395,8],[1468,8],[1643,8],[2852,9]]}},"keywords":{}}],["resolv",{"_index":347,"title":{},"content":{"26":{"position":[[155,8]]}},"keywords":{}}],["resourc",{"_index":992,"title":{"77":{"position":[[3,8]]},"164":{"position":[[10,10]]}},"content":{"75":{"position":[[65,8],[380,9]]},"93":{"position":[[338,8]]},"94":{"position":[[11,8]]},"107":{"position":[[317,10]]}},"keywords":{}}],["resources."""",{"_index":1991,"title":{},"content":{"209":{"position":[[101,28]]}},"keywords":{}}],["respect",{"_index":365,"title":{},"content":{"28":{"position":[[120,11]]}},"keywords":{}}],["respond",{"_index":335,"title":{"26":{"position":[[0,10]]}},"content":{},"keywords":{}}],["respons",{"_index":441,"title":{"35":{"position":[[10,17]]},"87":{"position":[[12,8]]},"102":{"position":[[0,8]]},"106":{"position":[[13,10]]}},"content":{"31":{"position":[[1311,9]]},"43":{"position":[[660,15]]},"87":{"position":[[22,8],[73,9],[112,8],[144,8]]},"90":{"position":[[325,8],[375,9]]},"93":{"position":[[203,8],[226,8]]},"146":{"position":[[373,16]]}},"keywords":{}}],["responsibilityapi",{"_index":487,"title":{},"content":{"36":{"position":[[16,17]]}},"keywords":{}}],["responsibilityent",{"_index":512,"title":{},"content":{"37":{"position":[[124,20]]}},"keywords":{}}],["restart",{"_index":401,"title":{},"content":{"31":{"position":[[399,8]]},"33":{"position":[[237,7]]},"42":{"position":[[442,8]]},"51":{"position":[[171,9],[592,8],[1359,9]]},"62":{"position":[[51,8]]},"67":{"position":[[145,8]]},"72":{"position":[[196,7]]},"110":{"position":[[98,7]]},"157":{"position":[[251,8]]},"278":{"position":[[1577,7]]},"279":{"position":[[1296,7]]}},"keywords":{}}],["restart)config",{"_index":708,"title":{},"content":{"50":{"position":[[189,14]]}},"keywords":{}}],["restart)no",{"_index":767,"title":{},"content":{"52":{"position":[[419,10]]}},"keywords":{}}],["restartbuilt",{"_index":2811,"title":{},"content":{"278":{"position":[[1594,12]]}},"keywords":{}}],["restartstorag",{"_index":1075,"title":{},"content":{"79":{"position":[[341,14]]}},"keywords":{}}],["restrict",{"_index":2123,"title":{},"content":{"239":{"position":[[10,8]]},"250":{"position":[[138,11]]},"267":{"position":[[308,11]]}},"keywords":{}}],["restructuring)break",{"_index":1552,"title":{},"content":{"143":{"position":[[236,22]]}},"keywords":{}}],["restructuringtest",{"_index":200,"title":{},"content":{"14":{"position":[[190,18]]},"18":{"position":[[387,18]]}},"keywords":{}}],["result",{"_index":231,"title":{},"content":{"17":{"position":[[207,6],[264,6]]},"42":{"position":[[688,7]]},"124":{"position":[[41,6]]},"159":{"position":[[77,7]]},"160":{"position":[[67,7]]},"161":{"position":[[86,7]]},"162":{"position":[[70,7]]},"196":{"position":[[57,8]]},"200":{"position":[[170,6],[321,6]]},"206":{"position":[[200,7]]},"207":{"position":[[274,6],[341,6]]},"210":{"position":[[186,7],[264,7]]},"221":{"position":[[116,6],[226,6]]},"273":{"position":[[3239,7]]},"287":{"position":[[464,7]]}},"keywords":{}}],["results.append(enrich",{"_index":1980,"title":{},"content":{"206":{"position":[[148,24]]}},"keywords":{}}],["retri",{"_index":489,"title":{},"content":{"36":{"position":[[75,5]]},"106":{"position":[[573,5]]},"111":{"position":[[688,8]]},"278":{"position":[[1610,5]]},"289":{"position":[[83,5]]}},"keywords":{}}],["return",{"_index":76,"title":{},"content":{"3":{"position":[[717,7]]},"31":{"position":[[290,6],[538,6],[928,6]]},"51":{"position":[[1095,6],[1215,6]]},"200":{"position":[[314,6],[328,6]]},"204":{"position":[[480,6],[757,6]]},"205":{"position":[[240,6],[284,6]]},"213":{"position":[[203,6],[237,6]]},"221":{"position":[[219,6]]},"252":{"position":[[1209,7]]},"258":{"position":[[209,7]]},"278":{"position":[[757,6],[782,6],[964,6],[1033,6],[1469,7]]},"279":{"position":[[932,6]]},"283":{"position":[[218,6]]},"284":{"position":[[118,6],[517,6]]},"288":{"position":[[201,6],[299,6],[435,6],[484,6],[589,7]]},"292":{"position":[[74,6]]}},"keywords":{}}],["returnapexchart",{"_index":1131,"title":{},"content":{"87":{"position":[[89,16]]}},"keywords":{}}],["reusabl",{"_index":1611,"title":{},"content":{"149":{"position":[[90,8]]}},"keywords":{}}],["reverse_sort=reverse_sort",{"_index":2714,"title":{},"content":{"273":{"position":[[2074,26]]}},"keywords":{}}],["review",{"_index":299,"title":{"23":{"position":[[0,6]]},"24":{"position":[[5,6]]},"25":{"position":[[5,9]]}},"content":{"23":{"position":[[40,6]]},"70":{"position":[[259,6]]},"133":{"position":[[694,6]]},"176":{"position":[[315,6]]},"184":{"position":[[82,6]]}},"keywords":{}}],["reviewtransl",{"_index":1468,"title":{},"content":{"133":{"position":[[1059,17]]}},"keywords":{}}],["risk",{"_index":1587,"title":{},"content":{"146":{"position":[[541,5]]},"171":{"position":[[197,5]]},"273":{"position":[[3601,4],[3693,4]]}},"keywords":{}}],["rm",{"_index":1618,"title":{},"content":{"149":{"position":[[379,2]]}},"keywords":{}}],["roll",{"_index":548,"title":{},"content":{"37":{"position":[[795,7]]},"43":{"position":[[226,7],[514,7]]}},"keywords":{}}],["rollback",{"_index":1590,"title":{"193":{"position":[[3,8]]}},"content":{"146":{"position":[[610,8]]},"150":{"position":[[668,8]]},"152":{"position":[[100,8]]},"174":{"position":[[410,8]]}},"keywords":{}}],["room",{"_index":2371,"title":{},"content":{"248":{"position":[[156,4]]}},"keywords":{}}],["rotat",{"_index":1157,"title":{},"content":{"93":{"position":[[171,8]]},"284":{"position":[[291,9]]}},"keywords":{}}],["rough",{"_index":1687,"title":{},"content":{"159":{"position":[[194,5]]},"172":{"position":[[134,5]]}},"keywords":{}}],["round",{"_index":624,"title":{},"content":{"42":{"position":[[392,6]]},"279":{"position":[[1254,6]]}},"keywords":{}}],["round_to_nearest_quarter_hour",{"_index":2831,"title":{},"content":{"279":{"position":[[1162,31]]}},"keywords":{}}],["rout",{"_index":526,"title":{},"content":{"37":{"position":[[386,7],[1291,7]]},"43":{"position":[[369,7]]}},"keywords":{}}],["routingindepend",{"_index":671,"title":{},"content":{"43":{"position":[[1172,18]]}},"keywords":{}}],["ruff",{"_index":4,"title":{},"content":{"1":{"position":[[19,4]]},"15":{"position":[[128,4]]},"133":{"position":[[553,4]]}},"keywords":{}}],["rufflint",{"_index":1496,"title":{},"content":{"135":{"position":[[244,8]]}},"keywords":{}}],["rule",{"_index":1432,"title":{},"content":{"132":{"position":[[166,5]]},"169":{"position":[[73,5]]}},"keywords":{}}],["run",{"_index":18,"title":{"94":{"position":[[10,3]]},"116":{"position":[[0,3]]},"127":{"position":[[18,7]]},"225":{"position":[[0,7]]},"232":{"position":[[0,7]]}},"content":{"1":{"position":[[134,3]]},"15":{"position":[[42,3],[169,3]]},"17":{"position":[[291,3]]},"23":{"position":[[18,3]]},"75":{"position":[[29,3],[275,7]]},"77":{"position":[[1174,7]]},"83":{"position":[[216,7]]},"90":{"position":[[89,7]]},"94":{"position":[[3,3],[96,3],[295,3]]},"116":{"position":[[159,3]]},"120":{"position":[[159,3]]},"129":{"position":[[176,7]]},"131":{"position":[[369,3]]},"134":{"position":[[368,7]]},"138":{"position":[[63,3],[93,3],[151,3]]},"179":{"position":[[1,3]]},"194":{"position":[[531,4]]},"196":{"position":[[255,3]]},"201":{"position":[[42,3]]},"202":{"position":[[44,3]]},"224":{"position":[[8,7],[84,3],[408,4]]},"225":{"position":[[3,3],[33,3],[91,3]]},"246":{"position":[[169,7]]},"273":{"position":[[1124,3]]},"278":{"position":[[1737,8]]},"279":{"position":[[298,4]]},"283":{"position":[[482,3]]},"284":{"position":[[626,4]]},"289":{"position":[[184,9]]}},"keywords":{}}],["runninggithub",{"_index":2075,"title":{},"content":{"229":{"position":[[56,13]]}},"keywords":{}}],["runtim",{"_index":769,"title":{},"content":{"52":{"position":[[450,7]]},"67":{"position":[[775,7]]}},"keywords":{}}],["rust",{"_index":1832,"title":{},"content":{"179":{"position":[[891,4],[1172,4]]},"231":{"position":[[208,4]]}},"keywords":{}}],["s",{"_index":1328,"title":{},"content":{"116":{"position":[[89,1],[121,1]]},"121":{"position":[[216,3]]},"212":{"position":[[162,2]]}},"keywords":{}}],["s"",{"_index":1372,"title":{},"content":{"122":{"position":[[121,9]]}},"keywords":{}}],["safe",{"_index":1645,"title":{},"content":{"150":{"position":[[663,4]]},"247":{"position":[[404,4]]}},"keywords":{}}],["safeti",{"_index":914,"title":{"185":{"position":[[34,6]]},"188":{"position":[[4,6]]},"244":{"position":[[16,6]]},"247":{"position":[[16,6]]}},"content":{"62":{"position":[[651,7]]},"182":{"position":[[125,6]]}},"keywords":{}}],["same",{"_index":2136,"title":{},"content":{"239":{"position":[[731,4]]},"246":{"position":[[2242,4]]},"299":{"position":[[225,4]]}},"keywords":{}}],["save",{"_index":694,"title":{},"content":{"47":{"position":[[142,5]]},"57":{"position":[[911,8],[957,5]]},"59":{"position":[[6,5]]},"79":{"position":[[182,5],[307,4]]},"92":{"position":[[287,5]]},"246":{"position":[[771,8]]},"284":{"position":[[301,4]]}},"keywords":{}}],["savingsconfig",{"_index":679,"title":{},"content":{"46":{"position":[[23,13]]}},"keywords":{}}],["scale",{"_index":2180,"title":{"243":{"position":[[31,8]]}},"content":{"243":{"position":[[252,7],[302,5],[1195,7],[1950,8],[2089,7]]},"252":{"position":[[1453,6]]},"256":{"position":[[502,7]]},"260":{"position":[[143,7]]},"267":{"position":[[783,7],[878,5],[990,7]]},"270":{"position":[[90,8]]},"273":{"position":[[530,8],[556,7],[654,7],[729,7]]}},"keywords":{}}],["scale_factor",{"_index":2186,"title":{},"content":{"243":{"position":[[137,12],[237,12],[1380,12],[1489,12],[1505,12]]},"273":{"position":[[662,12],[737,12]]}},"keywords":{}}],["scale_factor_warning_threshold",{"_index":2218,"title":{},"content":{"243":{"position":[[1038,30],[1523,31]]}},"keywords":{}}],["scenario",{"_index":2156,"title":{"261":{"position":[[8,10]]},"262":{"position":[[0,8]]},"263":{"position":[[0,8]]},"264":{"position":[[0,8]]},"265":{"position":[[0,8]]},"266":{"position":[[0,8]]},"282":{"position":[[19,10]]},"283":{"position":[[0,8]]},"284":{"position":[[0,8]]},"285":{"position":[[0,8]]}},"content":{"241":{"position":[[52,9]]}},"keywords":{}}],["scenariomaintain",{"_index":2244,"title":{},"content":{"243":{"position":[[2285,17]]}},"keywords":{}}],["schedul",{"_index":495,"title":{"80":{"position":[[9,10]]}},"content":{"36":{"position":[[184,10]]},"42":{"position":[[139,11],[324,10],[368,9]]},"48":{"position":[[36,11]]},"73":{"position":[[36,11]]},"80":{"position":[[179,9],[353,8]]},"89":{"position":[[357,10]]},"92":{"position":[[330,10]]},"131":{"position":[[249,11]]},"137":{"position":[[168,10]]},"279":{"position":[[1225,8],[1404,11]]}},"keywords":{}}],["schedule_quarter_hour_refresh",{"_index":2974,"title":{},"content":{"299":{"position":[[33,31]]}},"keywords":{}}],["schema",{"_index":580,"title":{},"content":{"40":{"position":[[60,6]]},"137":{"position":[[437,7]]}},"keywords":{}}],["scope",{"_index":261,"title":{},"content":{"18":{"position":[[446,5]]},"143":{"position":[[495,5]]},"172":{"position":[[120,7]]},"174":{"position":[[27,5]]},"181":{"position":[[91,10],[160,10],[233,10],[322,10],[389,10]]}},"keywords":{}}],["script",{"_index":1361,"title":{"167":{"position":[[7,8]]},"179":{"position":[[9,6]]},"184":{"position":[[25,6]]}},"content":{"120":{"position":[[204,9]]},"135":{"position":[[37,7],[48,11]]},"170":{"position":[[79,7]]},"176":{"position":[[72,6]]},"179":{"position":[[755,6]]},"182":{"position":[[33,6],[86,6],[118,6],[224,6],[260,6]]},"184":{"position":[[250,6]]},"187":{"position":[[34,6]]},"189":{"position":[[13,6]]},"190":{"position":[[8,6]]},"191":{"position":[[8,6]]},"193":{"position":[[8,6]]},"224":{"position":[[196,6]]}},"keywords":{}}],["scripts/check",{"_index":1165,"title":{},"content":{"94":{"position":[[422,15]]}},"keywords":{}}],["scripts/develop",{"_index":216,"title":{},"content":{"16":{"position":[[1,17]]},"86":{"position":[[37,17]]},"94":{"position":[[479,17]]},"156":{"position":[[97,17]]},"167":{"position":[[44,17]]},"226":{"position":[[33,17]]},"232":{"position":[[38,17]]}},"keywords":{}}],["scripts/developmak",{"_index":1482,"title":{},"content":{"134":{"position":[[202,21]]}},"keywords":{}}],["scripts/lint",{"_index":21,"title":{},"content":{"1":{"position":[[158,14]]},"15":{"position":[[111,14]]},"22":{"position":[[144,15]]},"154":{"position":[[457,15]]},"156":{"position":[[49,14]]},"167":{"position":[[1,14],[85,14]]},"233":{"position":[[24,14],[62,14]]}},"keywords":{}}],["scripts/lintvalid",{"_index":1484,"title":{},"content":{"134":{"position":[[281,22]]}},"keywords":{}}],["scripts/release/gener",{"_index":1812,"title":{},"content":{"179":{"position":[[5,26],[143,26],[209,26],[284,26],[416,26],[514,26],[617,26],[697,26]]},"196":{"position":[[259,26]]}},"keywords":{}}],["scripts/release/hassfest",{"_index":26,"title":{},"content":{"1":{"position":[[191,26]]},"138":{"position":[[34,26]]},"224":{"position":[[150,26]]},"233":{"position":[[116,26]]}},"keywords":{}}],["scripts/release/hassfesttest",{"_index":1485,"title":{},"content":{"134":{"position":[[317,30]]}},"keywords":{}}],["scripts/release/prepar",{"_index":1780,"title":{},"content":{"176":{"position":[[98,25]]},"184":{"position":[[40,25]]},"187":{"position":[[1,23]]}},"keywords":{}}],["scripts/setup/setup",{"_index":1479,"title":{},"content":{"134":{"position":[[104,21]]},"179":{"position":[[1291,19]]}},"keywords":{}}],["scripts/test",{"_index":213,"title":{},"content":{"15":{"position":[[152,14]]},"17":{"position":[[307,14]]},"22":{"position":[[68,16]]},"94":{"position":[[45,14],[138,14],[323,14]]}},"keywords":{}}],["scripts/typ",{"_index":210,"title":{},"content":{"15":{"position":[[66,14]]},"22":{"position":[[106,15]]}},"keywords":{}}],["second",{"_index":620,"title":{},"content":{"42":{"position":[[307,8]]},"207":{"position":[[316,7]]},"279":{"position":[[1202,6]]},"280":{"position":[[879,7]]}},"keywords":{}}],["second=0",{"_index":614,"title":{},"content":{"42":{"position":[[208,9]]},"279":{"position":[[160,9]]}},"keywords":{}}],["seconds)coordinator/core.pi",{"_index":1101,"title":{},"content":{"83":{"position":[[116,27]]}},"keywords":{}}],["seconds)ha'",{"_index":1103,"title":{},"content":{"83":{"position":[[242,12]]}},"keywords":{}}],["seconds)hom",{"_index":2862,"title":{},"content":{"280":{"position":[[973,12]]}},"keywords":{}}],["seconds/day",{"_index":2964,"title":{},"content":{"294":{"position":[[172,11]]}},"keywords":{}}],["section",{"_index":1713,"title":{},"content":{"163":{"position":[[651,7]]},"196":{"position":[[174,8]]}},"keywords":{}}],["see",{"_index":106,"title":{},"content":{"3":{"position":[[1438,3]]},"8":{"position":[[170,3]]},"34":{"position":[[125,3]]},"69":{"position":[[53,3]]},"107":{"position":[[261,3]]},"140":{"position":[[1,3]]},"146":{"position":[[720,3]]},"163":{"position":[[637,3]]},"179":{"position":[[1508,4]]},"184":{"position":[[355,4]]},"185":{"position":[[477,4]]},"233":{"position":[[145,3]]},"239":{"position":[[125,3],[942,3]]},"243":{"position":[[855,3]]},"248":{"position":[[586,4]]},"267":{"position":[[724,6]]},"273":{"position":[[5027,3]]},"278":{"position":[[1496,3]]},"279":{"position":[[550,3]]},"301":{"position":[[340,4]]}},"keywords":{}}],["seem",{"_index":1678,"title":{},"content":{"159":{"position":[[21,5]]}},"keywords":{}}],["select",{"_index":1826,"title":{"215":{"position":[[12,10]]}},"content":{"179":{"position":[[776,7]]},"239":{"position":[[848,9]]},"246":{"position":[[516,10]]},"264":{"position":[[474,9]]}},"keywords":{}}],["selectionbett",{"_index":2667,"title":{},"content":{"272":{"position":[[2034,15]]}},"keywords":{}}],["selector",{"_index":764,"title":{},"content":{"52":{"position":[[257,8]]}},"keywords":{}}],["self",{"_index":313,"title":{},"content":{"25":{"position":[[17,4]]},"154":{"position":[[304,5]]}},"keywords":{}}],["self._attr_native_valu",{"_index":1368,"title":{},"content":{"121":{"position":[[257,24]]}},"keywords":{}}],["self._build_config",{"_index":1967,"title":{},"content":{"204":{"position":[[736,20]]}},"keywords":{}}],["self._cach",{"_index":1994,"title":{},"content":{"209":{"position":[[172,11]]}},"keywords":{}}],["self._cached_period",{"_index":851,"title":{},"content":{"56":{"position":[[1056,20]]}},"keywords":{}}],["self._cached_price_data",{"_index":733,"title":{},"content":{"51":{"position":[[771,23]]}},"keywords":{}}],["self._calculate_complex_attribut",{"_index":1975,"title":{},"content":{"205":{"position":[[247,36]]}},"keywords":{}}],["self._callback",{"_index":1997,"title":{},"content":{"209":{"position":[[282,16]]}},"keywords":{}}],["self._callbacks.append(weakref.ref(callback",{"_index":2000,"title":{},"content":{"209":{"position":[[352,45]]}},"keywords":{}}],["self._check_midnight_turnover_needed(dt_util.now",{"_index":2796,"title":{},"content":{"278":{"position":[[600,52]]}},"keywords":{}}],["self._check_midnight_turnover_needed(now",{"_index":2827,"title":{},"content":{"279":{"position":[[729,42]]}},"keywords":{}}],["self._compute_periods_hash(price_info",{"_index":855,"title":{},"content":{"56":{"position":[[1179,38]]}},"keywords":{}}],["self._config_cach",{"_index":1965,"title":{},"content":{"204":{"position":[[612,19],[687,18],[715,18],[764,18],[818,18]]}},"keywords":{}}],["self._data",{"_index":1993,"title":{},"content":{"209":{"position":[[154,10]]}},"keywords":{}}],["self._data_transformer.invalidate_config_cach",{"_index":809,"title":{},"content":{"55":{"position":[[493,48]]}},"keywords":{}}],["self._fetch_and_update_data",{"_index":2800,"title":{},"content":{"278":{"position":[[917,29]]}},"keywords":{}}],["self._fetch_data",{"_index":2019,"title":{},"content":{"213":{"position":[[250,18]]},"221":{"position":[[131,18]]}},"keywords":{}}],["self._handle_coordinator_upd",{"_index":2879,"title":{},"content":{"281":{"position":[[590,31]]}},"keywords":{}}],["self._is_cache_valid",{"_index":2015,"title":{},"content":{"213":{"position":[[134,23]]}},"keywords":{}}],["self._last_periods_hash",{"_index":852,"title":{},"content":{"56":{"position":[[1084,23],[1221,23]]}},"keywords":{}}],["self._last_price_upd",{"_index":735,"title":{},"content":{"51":{"position":[[834,23]]}},"keywords":{}}],["self._listener_manager.async_update_minute_listen",{"_index":2852,"title":{},"content":{"280":{"position":[[396,54]]}},"keywords":{}}],["self._listener_manager.async_update_time_sensitive_listen",{"_index":2830,"title":{},"content":{"279":{"position":[[1065,62]]}},"keywords":{}}],["self._listeners.clear",{"_index":1992,"title":{},"content":{"209":{"position":[[130,23]]}},"keywords":{}}],["self._perform_midnight_data_rotation(dt_util.now",{"_index":2797,"title":{},"content":{"278":{"position":[[659,51]]}},"keywords":{}}],["self._perform_midnight_data_rotation(now",{"_index":2828,"title":{},"content":{"279":{"position":[[844,41]]}},"keywords":{}}],["self._period_calculator.invalidate_config_cach",{"_index":810,"title":{},"content":{"55":{"position":[[542,49]]}},"keywords":{}}],["self._remove_listen",{"_index":2877,"title":{},"content":{"281":{"position":[[514,21]]}},"keywords":{}}],["self._should_update_price_data",{"_index":2799,"title":{},"content":{"278":{"position":[[847,32]]}},"keywords":{}}],["self._time_sensitive_listen",{"_index":2881,"title":{},"content":{"281":{"position":[[709,30],[974,31]]}},"keywords":{}}],["self._time_sensitive_listeners.append(callback",{"_index":2883,"title":{},"content":{"281":{"position":[[820,47]]}},"keywords":{}}],["self.async_request_refresh",{"_index":811,"title":{},"content":{"55":{"position":[[598,28]]}},"keywords":{}}],["self.coordinator.async_add_time_sensitive_listen",{"_index":2878,"title":{},"content":{"281":{"position":[[538,51]]}},"keywords":{}}],["self.data",{"_index":2018,"title":{},"content":{"213":{"position":[[210,9]]},"278":{"position":[[764,9],[971,9],[1040,9]]}},"keywords":{}}],["self.entity_description.key",{"_index":1973,"title":{},"content":{"205":{"position":[[181,27]]}},"keywords":{}}],["self.entity_id",{"_index":1367,"title":{},"content":{"121":{"position":[[241,15]]}},"keywords":{}}],["self.store_cach",{"_index":736,"title":{},"content":{"51":{"position":[[871,18]]}},"keywords":{}}],["semant",{"_index":2211,"title":{},"content":{"243":{"position":[[764,8],[2176,8]]},"259":{"position":[[145,8]]}},"keywords":{}}],["sensibl",{"_index":2346,"title":{},"content":{"246":{"position":[[2699,8]]}},"keywords":{}}],["sensit",{"_index":1013,"title":{},"content":{"77":{"position":[[86,9]]},"246":{"position":[[1373,9]]},"279":{"position":[[192,9],[1015,9]]},"283":{"position":[[44,9],[298,9]]},"285":{"position":[[74,9],[394,9]]},"297":{"position":[[49,9]]}},"keywords":{}}],["sensor",{"_index":242,"title":{"37":{"position":[[0,6]]},"43":{"position":[[22,7]]},"81":{"position":[[3,6]]},"121":{"position":[[0,7]]}},"content":{"18":{"position":[[97,6],[112,6],[485,6]]},"31":{"position":[[95,8],[1145,7]]},"36":{"position":[[413,7],[421,7],[489,7]]},"37":{"position":[[5,6],[434,6],[1247,8]]},"42":{"position":[[710,7]]},"43":{"position":[[1,7],[1139,6]]},"77":{"position":[[379,6],[576,7]]},"78":{"position":[[289,7]]},"81":{"position":[[220,6],[290,7]]},"86":{"position":[[171,7]]},"89":{"position":[[402,6]]},"92":{"position":[[377,6]]},"121":{"position":[[209,6]]},"136":{"position":[[272,7],[282,6],[539,6]]},"150":{"position":[[5,7],[130,7]]},"157":{"position":[[49,9]]},"166":{"position":[[160,6]]},"239":{"position":[[297,6],[530,6],[739,6],[886,6],[1070,6],[1173,6],[1332,6]]},"279":{"position":[[1673,7],[1783,7]]},"280":{"position":[[195,7]]}},"keywords":{}}],["sensor.pi",{"_index":1626,"title":{},"content":{"150":{"position":[[79,9]]},"170":{"position":[[345,9]]}},"keywords":{}}],["sensor.tibber_home_volatility_*default",{"_index":2127,"title":{},"content":{"239":{"position":[[402,39]]}},"keywords":{}}],["sensor/attribut",{"_index":522,"title":{},"content":{"37":{"position":[[318,18]]},"43":{"position":[[797,21]]}},"keywords":{}}],["sensor/calcul",{"_index":517,"title":{},"content":{"37":{"position":[[238,19],[619,22]]},"43":{"position":[[560,22]]}},"keywords":{}}],["sensor/chart_data.pi",{"_index":533,"title":{},"content":{"37":{"position":[[475,20]]}},"keywords":{}}],["sensor/core.pi",{"_index":513,"title":{},"content":{"37":{"position":[[151,14]]},"43":{"position":[[89,17]]},"83":{"position":[[58,14]]},"121":{"position":[[165,14]]},"154":{"position":[[186,16]]}},"keywords":{}}],["sensor/helpers.pi",{"_index":537,"title":{},"content":{"37":{"position":[[544,17]]},"154":{"position":[[134,19],[249,17]]}},"keywords":{}}],["sensor/helpers.pyif",{"_index":622,"title":{},"content":{"42":{"position":[[345,19]]}},"keywords":{}}],["sensor/value_getters.pi",{"_index":527,"title":{},"content":{"37":{"position":[[394,23]]},"43":{"position":[[377,26]]}},"keywords":{}}],["sensorperiod",{"_index":1927,"title":{},"content":{"198":{"position":[[96,12]]}},"keywords":{}}],["sensors)test",{"_index":1670,"title":{},"content":{"157":{"position":[[66,12]]}},"keywords":{}}],["sensorsclear",{"_index":669,"title":{},"content":{"43":{"position":[[1054,12]]}},"keywords":{}}],["sentenc",{"_index":1733,"title":{},"content":{"169":{"position":[[124,10]]}},"keywords":{}}],["separ",{"_index":510,"title":{},"content":{"37":{"position":[[55,10],[1132,11]]},"43":{"position":[[820,8],[1067,10]]},"57":{"position":[[90,10]]},"150":{"position":[[199,10]]},"163":{"position":[[442,8]]},"239":{"position":[[210,11],[873,11]]},"264":{"position":[[231,10]]}},"keywords":{}}],["sequenti",{"_index":1983,"title":{},"content":{"207":{"position":[[31,10]]}},"keywords":{}}],["serv",{"_index":1429,"title":{},"content":{"132":{"position":[[62,6]]},"149":{"position":[[326,6]]},"163":{"position":[[610,5]]}},"keywords":{}}],["servic",{"_index":382,"title":{"87":{"position":[[4,7]]}},"content":{"31":{"position":[[133,8],[1232,7],[1253,8]]},"36":{"position":[[555,8],[564,9],[581,7]]},"37":{"position":[[500,7]]},"87":{"position":[[65,7]]},"90":{"position":[[317,7],[367,7]]},"136":{"position":[[744,8]]},"156":{"position":[[207,8]]},"157":{"position":[[157,8],[174,7]]}},"keywords":{}}],["services.pi",{"_index":1516,"title":{},"content":{"136":{"position":[[723,11]]}},"keywords":{}}],["services/apexcharts.pi",{"_index":1136,"title":{},"content":{"87":{"position":[[193,22]]}},"keywords":{}}],["session",{"_index":1108,"title":{"84":{"position":[[7,7]]}},"content":{"84":{"position":[[103,8],[134,7]]},"90":{"position":[[108,7]]},"154":{"position":[[39,8]]}},"keywords":{}}],["session)no",{"_index":1110,"title":{},"content":{"84":{"position":[[88,10]]}},"keywords":{}}],["set",{"_index":179,"title":{"114":{"position":[[0,3]]}},"content":{"12":{"position":[[225,3]]},"94":{"position":[[604,8]]},"114":{"position":[[166,3]]},"117":{"position":[[1,3]]},"156":{"position":[[182,8]]},"210":{"position":[[93,3]]},"239":{"position":[[265,4]]},"273":{"position":[[3470,3]]}},"keywords":{}}],["settings)test",{"_index":1672,"title":{},"content":{"157":{"position":[[143,13]]}},"keywords":{}}],["settingsstal",{"_index":1061,"title":{},"content":{"78":{"position":[[310,13]]}},"keywords":{}}],["setup",{"_index":369,"title":{"228":{"position":[[12,5]]},"230":{"position":[[6,6]]}},"content":{"28":{"position":[[200,5]]},"31":{"position":[[1,5]]},"40":{"position":[[194,6]]},"47":{"position":[[56,6]]},"52":{"position":[[491,6]]},"131":{"position":[[1,5],[35,6]]},"134":{"position":[[97,6]]},"135":{"position":[[81,5]]},"136":{"position":[[64,5],[337,5]]},"137":{"position":[[572,5]]}},"keywords":{}}],["setupcod",{"_index":370,"title":{},"content":{"28":{"position":[[227,11]]}},"keywords":{}}],["setuptest",{"_index":698,"title":{},"content":{"48":{"position":[[188,12]]}},"keywords":{}}],["sever",{"_index":1120,"title":{},"content":{"86":{"position":[[105,7]]},"135":{"position":[[22,7]]}},"keywords":{}}],["share",{"_index":334,"title":{},"content":{"25":{"position":[[341,6]]},"38":{"position":[[198,6]]},"84":{"position":[[80,7]]},"136":{"position":[[575,6]]},"163":{"position":[[277,7]]}},"keywords":{}}],["sharp",{"_index":2315,"title":{},"content":{"246":{"position":[[1514,5],[1793,6]]}},"keywords":{}}],["shell",{"_index":1413,"title":{},"content":{"129":{"position":[[125,5]]}},"keywords":{}}],["shift",{"_index":2364,"title":{},"content":{"247":{"position":[[803,6]]},"255":{"position":[[1354,6]]}},"keywords":{}}],["shiftsadapt",{"_index":2521,"title":{},"content":{"255":{"position":[[3406,12]]}},"keywords":{}}],["short",{"_index":275,"title":{},"content":{"21":{"position":[[8,6]]},"83":{"position":[[45,5],[94,6],[160,6],[274,5]]},"93":{"position":[[123,5]]},"246":{"position":[[2124,5]]},"272":{"position":[[1710,5]]}},"keywords":{}}],["shorter",{"_index":2302,"title":{},"content":{"246":{"position":[[1117,7]]}},"keywords":{}}],["should_update_price_data",{"_index":907,"title":{},"content":{"61":{"position":[[28,26]]}},"keywords":{}}],["shouldn't",{"_index":1906,"title":{},"content":{"194":{"position":[[192,9]]}},"keywords":{}}],["show",{"_index":243,"title":{},"content":{"18":{"position":[[119,7]]},"42":{"position":[[411,6],[483,6]]},"116":{"position":[[125,4]]},"176":{"position":[[281,4]]},"184":{"position":[[119,4]]},"193":{"position":[[15,5]]},"256":{"position":[[223,5]]},"267":{"position":[[806,4]]},"273":{"position":[[2265,7]]},"279":{"position":[[431,4],[1273,6],[1336,6]]},"289":{"position":[[284,6]]}},"keywords":{}}],["shown",{"_index":975,"title":{"71":{"position":[[28,5]]}},"content":{},"keywords":{}}],["shutdown",{"_index":1072,"title":{},"content":{"79":{"position":[[191,8],[315,9]]}},"keywords":{}}],["side",{"_index":2146,"title":{},"content":{"239":{"position":[[1142,4]]},"252":{"position":[[2140,5]]},"278":{"position":[[1410,4]]}},"keywords":{}}],["side"",{"_index":2373,"title":{},"content":{"248":{"position":[[240,10]]}},"keywords":{}}],["sidewarn",{"_index":2607,"title":{},"content":{"267":{"position":[[667,11]]}},"keywords":{}}],["sigmoid",{"_index":2685,"title":{},"content":{"273":{"position":[[721,7]]}},"keywords":{}}],["signific",{"_index":2762,"title":{},"content":{"273":{"position":[[4333,12]]}},"keywords":{}}],["significantli",{"_index":2112,"title":{},"content":{"238":{"position":[[29,13]]},"243":{"position":[[618,13]]},"273":{"position":[[3065,14]]}},"keywords":{}}],["similar",{"_index":2352,"title":{},"content":{"247":{"position":[[253,7]]}},"keywords":{}}],["simpl",{"_index":1730,"title":{},"content":{"169":{"position":[[66,6]]},"179":{"position":[[935,6]]},"243":{"position":[[1960,6]]}},"keywords":{}}],["simpli",{"_index":1839,"title":{},"content":{"179":{"position":[[1312,6]]}},"keywords":{}}],["simul",{"_index":2664,"title":{},"content":{"272":{"position":[[1976,9]]}},"keywords":{}}],["simultan",{"_index":2655,"title":{},"content":{"272":{"position":[[1588,14]]}},"keywords":{}}],["singl",{"_index":66,"title":{"116":{"position":[[4,6]]}},"content":{"3":{"position":[[583,6],[784,6]]},"37":{"position":[[714,6]]},"43":{"position":[[405,6]]},"62":{"position":[[750,7]]},"255":{"position":[[2561,6],[3515,6]]}},"keywords":{}}],["size",{"_index":938,"title":{"216":{"position":[[10,5]]}},"content":{"67":{"position":[[21,4]]},"90":{"position":[[199,4]]},"255":{"position":[[899,5]]},"273":{"position":[[1432,4]]}},"keywords":{}}],["skip",{"_index":922,"title":{"159":{"position":[[2,4]]}},"content":{"64":{"position":[[53,4]]},"66":{"position":[[108,4]]},"186":{"position":[[346,5]]},"278":{"position":[[1526,4]]},"284":{"position":[[510,4]]},"288":{"position":[[473,4]]}},"keywords":{}}],["skip!)upd",{"_index":1606,"title":{},"content":{"148":{"position":[[91,12]]}},"keywords":{}}],["slight",{"_index":2197,"title":{},"content":{"243":{"position":[[408,6]]}},"keywords":{}}],["slope",{"_index":2456,"title":{},"content":{"255":{"position":[[953,5],[1009,5],[2922,6]]}},"keywords":{}}],["slow",{"_index":1977,"title":{},"content":{"206":{"position":[[38,4]]},"207":{"position":[[42,6]]},"218":{"position":[[343,5]]},"252":{"position":[[856,4]]},"255":{"position":[[3900,4]]}},"keywords":{}}],["small",{"_index":1559,"title":{},"content":{"143":{"position":[[505,5]]},"172":{"position":[[23,5]]},"255":{"position":[[2612,5]]},"263":{"position":[[107,5]]}},"keywords":{}}],["smaller",{"_index":326,"title":{},"content":{"25":{"position":[[204,7]]}},"keywords":{}}],["smart",{"_index":2014,"title":{"213":{"position":[[0,5]]}},"content":{"279":{"position":[[1130,5]]}},"keywords":{}}],["smooth",{"_index":2366,"title":{},"content":{"247":{"position":[[817,9]]},"255":{"position":[[694,6],[1721,6],[2508,9],[3017,8]]},"264":{"position":[[159,6],[343,8]]},"267":{"position":[[1120,9]]},"280":{"position":[[207,6],[705,6]]},"301":{"position":[[399,7]]}},"keywords":{}}],["snapshot",{"_index":828,"title":{},"content":{"56":{"position":[[368,8]]}},"keywords":{}}],["snippet",{"_index":1739,"title":{},"content":{"170":{"position":[[266,8]]}},"keywords":{}}],["snippetskeep",{"_index":1543,"title":{},"content":{"139":{"position":[[129,12]]}},"keywords":{}}],["solidno",{"_index":1601,"title":{},"content":{"147":{"position":[[123,7]]}},"keywords":{}}],["solut",{"_index":1582,"title":{"243":{"position":[[0,9]]}},"content":{"146":{"position":[[301,8]]},"159":{"position":[[151,9]]},"160":{"position":[[152,9]]},"161":{"position":[[145,9]]},"162":{"position":[[178,9]]},"258":{"position":[[218,9]]},"259":{"position":[[249,9]]},"260":{"position":[[179,9]]},"273":{"position":[[207,9],[1150,9],[3802,8]]}},"keywords":{}}],["solution"mor",{"_index":1747,"title":{},"content":{"171":{"position":[[121,18]]}},"keywords":{}}],["solv",{"_index":282,"title":{},"content":{"21":{"position":[[130,6]]},"252":{"position":[[1693,6]]},"279":{"position":[[280,7]]}},"keywords":{}}],["someth",{"_index":1694,"title":{},"content":{"160":{"position":[[133,9]]}},"keywords":{}}],["something"",{"_index":1702,"title":{},"content":{"162":{"position":[[150,15]]}},"keywords":{}}],["soon",{"_index":2072,"title":{},"content":{"227":{"position":[[8,7]]},"288":{"position":[[467,5]]}},"keywords":{}}],["sophist",{"_index":2666,"title":{},"content":{"272":{"position":[[2013,13]]}},"keywords":{}}],["sort",{"_index":1396,"title":{},"content":{"126":{"position":[[103,4]]}},"keywords":{}}],["sourc",{"_index":649,"title":{},"content":{"43":{"position":[[412,6]]},"149":{"position":[[361,6]]}},"keywords":{}}],["span/avg",{"_index":2753,"title":{},"content":{"273":{"position":[[3958,9]]}},"keywords":{}}],["special",{"_index":521,"title":{},"content":{"37":{"position":[[282,11],[365,11]]}},"keywords":{}}],["specif",{"_index":115,"title":{},"content":{"4":{"position":[[15,9]]},"132":{"position":[[257,8]]},"138":{"position":[[97,8]]},"163":{"position":[[706,8]]},"179":{"position":[[195,8],[337,8]]},"195":{"position":[[10,8],[81,8]]},"225":{"position":[[37,8]]},"239":{"position":[[30,8]]},"246":{"position":[[1401,8]]},"269":{"position":[[294,8]]},"272":{"position":[[1065,8]]},"281":{"position":[[151,8]]}},"keywords":{}}],["speed",{"_index":754,"title":{},"content":{"51":{"position":[[1346,6]]}},"keywords":{}}],["spend",{"_index":1686,"title":{},"content":{"159":{"position":[[172,5]]}},"keywords":{}}],["spike",{"_index":2253,"title":{},"content":{"245":{"position":[[208,5]]},"246":{"position":[[935,6],[1520,6]]},"255":{"position":[[716,6],[1504,5],[1713,5],[1810,5],[2010,7],[2243,5]]},"264":{"position":[[175,6]]},"267":{"position":[[1167,7]]},"287":{"position":[[499,7]]}},"keywords":{}}],["spike?"",{"_index":2335,"title":{},"content":{"246":{"position":[[2218,12]]}},"keywords":{}}],["spikes20",{"_index":2303,"title":{},"content":{"246":{"position":[[1135,9]]}},"keywords":{}}],["spikessolut",{"_index":2330,"title":{},"content":{"246":{"position":[[1947,15]]}},"keywords":{}}],["spikesus",{"_index":2334,"title":{},"content":{"246":{"position":[[2144,10]]}},"keywords":{}}],["split",{"_index":325,"title":{},"content":{"25":{"position":[[193,5]]},"143":{"position":[[117,9]]},"150":{"position":[[257,9],[704,9]]},"166":{"position":[[25,9]]},"174":{"position":[[539,9]]},"273":{"position":[[3091,6],[4702,5]]}},"keywords":{}}],["spot",{"_index":2740,"title":{},"content":{"273":{"position":[[3464,5]]}},"keywords":{}}],["spread",{"_index":2658,"title":{},"content":{"272":{"position":[[1748,7]]},"273":{"position":[[3951,6]]},"278":{"position":[[1263,6]]},"287":{"position":[[481,6]]}},"keywords":{}}],["stabil",{"_index":252,"title":{},"content":{"18":{"position":[[258,9]]},"94":{"position":[[665,9]]}},"keywords":{}}],["stabl",{"_index":2322,"title":{},"content":{"246":{"position":[[1730,6]]}},"keywords":{}}],["stale",{"_index":394,"title":{"69":{"position":[[9,5]]}},"content":{"31":{"position":[[317,5]]},"67":{"position":[[1022,5]]},"78":{"position":[[274,5]]},"92":{"position":[[256,5]]},"279":{"position":[[436,5]]}},"keywords":{}}],["standard",{"_index":38,"title":{"139":{"position":[[17,10]]}},"content":{"3":{"position":[[87,8]]},"40":{"position":[[1,8]]},"52":{"position":[[198,8]]},"136":{"position":[[853,8]]},"195":{"position":[[139,8]]},"243":{"position":[[361,8]]},"255":{"position":[[963,8],[1083,8]]},"272":{"position":[[452,8]]},"289":{"position":[[3,8]]}},"keywords":{}}],["start",{"_index":157,"title":{"10":{"position":[[8,8]]},"134":{"position":[[9,5]]},"169":{"position":[[40,5]]},"176":{"position":[[9,6]]}},"content":{"16":{"position":[[21,5]]},"27":{"position":[[175,8]]},"94":{"position":[[469,5]]},"124":{"position":[[13,5],[104,5]]},"135":{"position":[[112,5]]},"154":{"position":[[494,6]]},"156":{"position":[[90,6]]},"159":{"position":[[54,5]]},"167":{"position":[[64,5]]},"173":{"position":[[109,6]]},"200":{"position":[[142,5],[234,5]]},"218":{"position":[[193,5],[300,5]]},"226":{"position":[[3,5]]},"232":{"position":[[3,5]]},"243":{"position":[[1009,5]]},"252":{"position":[[1766,8]]},"263":{"position":[[621,8]]},"272":{"position":[[1409,5]]},"273":{"position":[[2297,5],[2719,5],[3281,6],[4392,5]]},"278":{"position":[[376,5],[1093,6]]}},"keywords":{}}],["starthigh",{"_index":2378,"title":{},"content":{"248":{"position":[[464,11]]}},"keywords":{}}],["starts_at",{"_index":2702,"title":{},"content":{"273":{"position":[[1726,9]]}},"keywords":{}}],["starts_at.d",{"_index":2705,"title":{},"content":{"273":{"position":[[1784,16]]}},"keywords":{}}],["startsat",{"_index":836,"title":{},"content":{"56":{"position":[[604,10]]},"100":{"position":[[180,8]]}},"keywords":{}}],["startup",{"_index":946,"title":{},"content":{"67":{"position":[[807,8]]},"156":{"position":[[127,7]]}},"keywords":{}}],["startup?transl",{"_index":983,"title":{},"content":{"72":{"position":[[45,19]]}},"keywords":{}}],["stat",{"_index":653,"title":{},"content":{"43":{"position":[[534,6]]},"126":{"position":[[117,5]]},"184":{"position":[[110,4]]},"215":{"position":[[184,6]]}},"keywords":{}}],["stat_func",{"_index":647,"title":{},"content":{"43":{"position":[[268,10]]}},"keywords":{}}],["state",{"_index":524,"title":{"215":{"position":[[0,5]]}},"content":{"37":{"position":[[343,5]]},"43":{"position":[[858,5]]},"52":{"position":[[858,5]]},"121":{"position":[[19,6]]},"152":{"position":[[122,6]]},"154":{"position":[[294,6]]},"156":{"position":[[339,6]]},"215":{"position":[[223,5]]},"226":{"position":[[111,6]]},"265":{"position":[[9,6]]},"266":{"position":[[9,6]]},"269":{"position":[[434,6]]},"272":{"position":[[1792,6]]},"277":{"position":[[237,5]]},"279":{"position":[[209,6]]},"280":{"position":[[843,5]]},"290":{"position":[[20,5]]},"293":{"position":[[152,5]]},"301":{"position":[[148,5]]}},"keywords":{}}],["state/attribut",{"_index":2131,"title":{},"content":{"239":{"position":[[537,16]]}},"keywords":{}}],["state_attr('binary_sensor.tibber_home_best_price_period",{"_index":2759,"title":{},"content":{"273":{"position":[[4154,57]]}},"keywords":{}}],["state_class=non",{"_index":2024,"title":{},"content":{"215":{"position":[[191,16]]}},"keywords":{}}],["state_class=sensorstateclass.measur",{"_index":2021,"title":{},"content":{"215":{"position":[[89,40]]}},"keywords":{}}],["state_class=sensorstateclass.tot",{"_index":2026,"title":{},"content":{"215":{"position":[[257,34]]}},"keywords":{}}],["statement",{"_index":1332,"title":{"241":{"position":[[8,10]]}},"content":{"116":{"position":[[136,10]]},"146":{"position":[[210,9]]}},"keywords":{}}],["states.sensor.tibber_home_current_interval_price.last_upd",{"_index":1363,"title":{},"content":{"121":{"position":[[65,61]]}},"keywords":{}}],["statesent",{"_index":435,"title":{},"content":{"31":{"position":[[1169,14]]}},"keywords":{}}],["stationari",{"_index":2520,"title":{},"content":{"255":{"position":[[3300,10]]}},"keywords":{}}],["statist",{"_index":500,"title":{},"content":{"36":{"position":[[471,10]]},"43":{"position":[[357,10]]},"122":{"position":[[197,11]]},"137":{"position":[[234,11]]},"215":{"position":[[19,10]]},"255":{"position":[[2385,10]]},"256":{"position":[[183,11]]},"262":{"position":[[257,11]]},"263":{"position":[[336,11]]},"264":{"position":[[397,11]]},"267":{"position":[[57,10]]}},"keywords":{}}],["statistics)do",{"_index":880,"title":{},"content":{"57":{"position":[[523,15]]}},"keywords":{}}],["statisticswindow_24h.pi",{"_index":553,"title":{},"content":{"37":{"position":[[851,23]]}},"keywords":{}}],["statu",{"_index":873,"title":{"88":{"position":[[17,7]]},"91":{"position":[[15,7]]}},"content":{"57":{"position":[[74,7]]},"83":{"position":[[9,7]]},"84":{"position":[[9,7]]},"85":{"position":[[9,7]]},"86":{"position":[[9,7]]},"87":{"position":[[9,7]]},"89":{"position":[[10,6]]},"90":{"position":[[10,6]]},"146":{"position":[[77,11]]},"148":{"position":[[158,6]]},"239":{"position":[[1578,7]]},"272":{"position":[[754,7],[1452,7],[2271,7]]},"273":{"position":[[4938,7]]}},"keywords":{}}],["stay",{"_index":628,"title":{},"content":{"42":{"position":[[465,5]]},"101":{"position":[[121,5]]},"137":{"position":[[489,4]]},"163":{"position":[[593,4]]},"279":{"position":[[1318,5]]}},"keywords":{}}],["std",{"_index":2468,"title":{},"content":{"255":{"position":[[1319,3],[2125,3],[2900,3]]}},"keywords":{}}],["std_dev",{"_index":2462,"title":{},"content":{"255":{"position":[[1121,7],[1457,7]]}},"keywords":{}}],["stdlib",{"_index":114,"title":{},"content":{"4":{"position":[[8,6]]}},"keywords":{}}],["step",{"_index":1595,"title":{},"content":{"146":{"position":[[712,5]]},"153":{"position":[[179,5]]},"154":{"position":[[228,10]]},"174":{"position":[[456,6]]},"184":{"position":[[3,4],[74,4],[133,4]]},"185":{"position":[[3,4],[134,4],[225,4]]},"186":{"position":[[3,4],[141,4]]},"245":{"position":[[465,6],[500,5],[549,6],[584,5]]},"252":{"position":[[121,4],[192,4],[1097,6],[1161,4],[1631,7]]},"270":{"position":[[17,5]]},"273":{"position":[[20,5]]},"278":{"position":[[529,4],[791,4],[983,4]]},"279":{"position":[[666,4],[941,4]]}},"keywords":{}}],["step_pct",{"_index":2421,"title":{},"content":{"252":{"position":[[1501,9]]}},"keywords":{}}],["stick",{"_index":2340,"title":{},"content":{"246":{"position":[[2383,5]]}},"keywords":{}}],["still",{"_index":932,"title":{},"content":{"65":{"position":[[293,5]]},"149":{"position":[[598,5]]},"161":{"position":[[54,5]]},"182":{"position":[[155,5]]},"246":{"position":[[942,5]]},"247":{"position":[[872,5]]},"260":{"position":[[161,5]]},"266":{"position":[[319,5]]},"267":{"position":[[946,5]]},"278":{"position":[[1731,5]]},"283":{"position":[[202,5]]},"288":{"position":[[270,5]]},"289":{"position":[[178,5]]}},"keywords":{}}],["stop",{"_index":2204,"title":{},"content":{"243":{"position":[[559,4]]},"253":{"position":[[108,4],[376,6]]},"273":{"position":[[3254,5]]}},"keywords":{}}],["storag",{"_index":705,"title":{"79":{"position":[[3,7]]}},"content":{"50":{"position":[[118,8]]},"51":{"position":[[37,7],[616,7]]},"57":{"position":[[949,7]]},"62":{"position":[[39,7]]},"75":{"position":[[345,7]]},"79":{"position":[[91,7],[126,7],[239,7]]},"83":{"position":[[152,7]]},"89":{"position":[[243,7],[293,7]]},"92":{"position":[[276,7]]},"137":{"position":[[121,7]]},"215":{"position":[[30,8]]}},"keywords":{}}],["storage/tibber_prices.<entry_id>",{"_index":711,"title":{},"content":{"51":{"position":[[45,41]]}},"keywords":{}}],["storage/tibber_prices.{entry_id",{"_index":1076,"title":{},"content":{"79":{"position":[[362,33]]}},"keywords":{}}],["storage_key",{"_index":1954,"title":{},"content":{"204":{"position":[[117,12]]}},"keywords":{}}],["storage_vers",{"_index":1953,"title":{},"content":{"204":{"position":[[100,16]]}},"keywords":{}}],["store",{"_index":417,"title":{},"content":{"31":{"position":[[744,5]]},"204":{"position":[[80,5]]},"215":{"position":[[67,7]]},"255":{"position":[[2350,6]]},"272":{"position":[[1317,8]]},"299":{"position":[[127,7]]}},"keywords":{}}],["store(hass",{"_index":1952,"title":{},"content":{"204":{"position":[[88,11]]}},"keywords":{}}],["store.async_load",{"_index":1955,"title":{},"content":{"204":{"position":[[143,18]]}},"keywords":{}}],["storequart",{"_index":1524,"title":{},"content":{"137":{"position":[[133,12]]}},"keywords":{}}],["str",{"_index":1959,"title":{},"content":{"204":{"position":[[300,4],[315,4]]},"288":{"position":[[89,4]]}},"keywords":{}}],["straightforward",{"_index":1560,"title":{},"content":{"143":{"position":[[552,17]]},"159":{"position":[[27,16]]}},"keywords":{}}],["strategi",{"_index":484,"title":{"49":{"position":[[8,8]]},"155":{"position":[[8,9]]},"249":{"position":[[11,9]]},"253":{"position":[[19,9]]}},"content":{"34":{"position":[[137,9]]},"48":{"position":[[91,8]]},"131":{"position":[[304,8]]},"146":{"position":[[403,8],[619,8]]},"170":{"position":[[402,8]]},"222":{"position":[[204,8]]},"235":{"position":[[230,9]]},"275":{"position":[[79,8]]},"300":{"position":[[56,8]]}},"keywords":{}}],["strategy"new",{"_index":1749,"title":{},"content":{"171":{"position":[[179,17]]}},"keywords":{}}],["strategyagents.md",{"_index":2783,"title":{},"content":{"274":{"position":[[68,17]]}},"keywords":{}}],["strategycoordinator/periods.pi",{"_index":2096,"title":{},"content":{"235":{"position":[[550,30]]}},"keywords":{}}],["strategyestim",{"_index":1738,"title":{},"content":{"170":{"position":[[206,17]]}},"keywords":{}}],["strategytim",{"_index":1422,"title":{},"content":{"131":{"position":[[206,13]]}},"keywords":{}}],["strict",{"_index":2380,"title":{},"content":{"250":{"position":[[77,7],[112,6]]},"266":{"position":[[16,6]]},"267":{"position":[[250,6]]},"273":{"position":[[416,6]]}},"keywords":{}}],["stricter",{"_index":2282,"title":{},"content":{"246":{"position":[[507,8],[1822,8]]}},"keywords":{}}],["string",{"_index":763,"title":{},"content":{"52":{"position":[[166,8]]},"226":{"position":[[152,7]]}},"keywords":{}}],["strong",{"_index":2201,"title":{},"content":{"243":{"position":[[473,6]]}},"keywords":{}}],["structur",{"_index":29,"title":{"86":{"position":[[20,9]]},"103":{"position":[[11,10]]},"136":{"position":[[11,10]]},"153":{"position":[[6,10]]},"210":{"position":[[15,11]]}},"content":{"1":{"position":[[241,9]]},"46":{"position":[[228,9]]},"86":{"position":[[219,10]]},"90":{"position":[[246,9]]},"93":{"position":[[140,9]]},"129":{"position":[[246,9]]},"131":{"position":[[78,10]]},"133":{"position":[[360,10]]},"135":{"position":[[335,9]]},"138":{"position":[[24,9]]},"146":{"position":[[339,9]]},"150":{"position":[[799,10]]},"161":{"position":[[74,10]]},"216":{"position":[[44,10]]},"224":{"position":[[70,10]]},"233":{"position":[[106,9]]}},"keywords":{}}],["stuck",{"_index":1690,"title":{},"content":{"159":{"position":[[242,6]]}},"keywords":{}}],["style",{"_index":2,"title":{"1":{"position":[[5,6]]}},"content":{"28":{"position":[[252,5]]},"131":{"position":[[483,5]]}},"keywords":{}}],["sub",{"_index":2863,"title":{},"content":{"280":{"position":[[1017,3]]}},"keywords":{}}],["subentri",{"_index":476,"title":{},"content":{"33":{"position":[[554,11]]},"47":{"position":[[74,10]]},"67":{"position":[[527,11]]}},"keywords":{}}],["submit",{"_index":296,"title":{},"content":{"22":{"position":[[8,11]]}},"keywords":{}}],["suboptim",{"_index":2561,"title":{},"content":{"260":{"position":[[167,10]]}},"keywords":{}}],["subscript",{"_index":719,"title":{},"content":{"51":{"position":[[358,14]]}},"keywords":{}}],["subtl",{"_index":1465,"title":{},"content":{"133":{"position":[[996,6]]}},"keywords":{}}],["succeed",{"_index":2602,"title":{},"content":{"267":{"position":[[434,10]]}},"keywords":{}}],["succeeded"high",{"_index":2543,"title":{},"content":{"256":{"position":[[417,19]]}},"keywords":{}}],["success",{"_index":1591,"title":{"173":{"position":[[39,12]]},"265":{"position":[[23,8]]}},"content":{"146":{"position":[[631,7]]},"149":{"position":[[69,11],[262,10]]},"150":{"position":[[49,10]]},"153":{"position":[[120,7]]},"154":{"position":[[402,9]]},"160":{"position":[[204,10]]},"163":{"position":[[415,10]]},"253":{"position":[[368,7]]},"256":{"position":[[377,7]]},"265":{"position":[[351,7],[381,7]]},"267":{"position":[[451,7],[489,7]]}},"keywords":{}}],["success/failur",{"_index":2948,"title":{},"content":{"289":{"position":[[309,16]]}},"keywords":{}}],["successfulli",{"_index":1280,"title":{},"content":{"111":{"position":[[69,12]]},"154":{"position":[[501,12]]}},"keywords":{}}],["such",{"_index":2416,"title":{},"content":{"252":{"position":[[1267,4]]}},"keywords":{}}],["sudo",{"_index":1857,"title":{},"content":{"179":{"position":[[1792,4]]}},"keywords":{}}],["suffici",{"_index":2377,"title":{},"content":{"248":{"position":[[448,10]]},"272":{"position":[[399,10]]},"280":{"position":[[905,10]]}},"keywords":{}}],["suggest",{"_index":2399,"title":{},"content":{"252":{"position":[[464,7]]}},"keywords":{}}],["summari",{"_index":936,"title":{"67":{"position":[[0,7]]},"174":{"position":[[0,8]]},"301":{"position":[[0,8]]}},"content":{},"keywords":{}}],["supersed",{"_index":1646,"title":{},"content":{"150":{"position":[[769,10]]}},"keywords":{}}],["support",{"_index":1233,"title":{},"content":{"104":{"position":[[45,9]]},"163":{"position":[[77,8]]},"279":{"position":[[1952,7]]}},"keywords":{}}],["supportdock",{"_index":2074,"title":{},"content":{"229":{"position":[[28,13]]}},"keywords":{}}],["supportedhtml",{"_index":1914,"title":{},"content":{"195":{"position":[[173,14]]}},"keywords":{}}],["surpris",{"_index":1735,"title":{},"content":{"170":{"position":[[45,10]]}},"keywords":{}}],["surround",{"_index":2453,"title":{},"content":{"255":{"position":[[845,11]]}},"keywords":{}}],["surviv",{"_index":400,"title":{},"content":{"31":{"position":[[386,9]]}},"keywords":{}}],["sv)async",{"_index":1534,"title":{},"content":{"137":{"position":[[540,8]]}},"keywords":{}}],["swedish",{"_index":1241,"title":{},"content":{"104":{"position":[[148,8]]}},"keywords":{}}],["swing",{"_index":2362,"title":{},"content":{"247":{"position":[[740,5]]}},"keywords":{}}],["symmetr",{"_index":2332,"title":{},"content":{"246":{"position":[[2051,9]]},"255":{"position":[[1513,9],[1739,9]]}},"keywords":{}}],["symmetri",{"_index":2467,"title":{},"content":{"255":{"position":[[1259,8],[3324,8]]}},"keywords":{}}],["symmetry_threshold",{"_index":2474,"title":{},"content":{"255":{"position":[[1430,18],[1657,18],[2141,18]]}},"keywords":{}}],["symptom",{"_index":958,"title":{"69":{"position":[[0,8]]},"70":{"position":[[0,8]]},"71":{"position":[[0,8]]},"72":{"position":[[0,8]]}},"content":{},"keywords":{}}],["sync",{"_index":1529,"title":{},"content":{"137":{"position":[[497,4]]},"163":{"position":[[601,4]]}},"keywords":{}}],["synchron",{"_index":776,"title":{"290":{"position":[[11,12]]}},"content":{"52":{"position":[[653,11],[955,12]]},"278":{"position":[[310,12]]},"279":{"position":[[328,12]]},"284":{"position":[[172,13]]},"286":{"position":[[182,13]]},"287":{"position":[[27,12]]},"301":{"position":[[314,12],[379,12]]}},"keywords":{}}],["synchronizeddocument",{"_index":1449,"title":{},"content":{"133":{"position":[[427,26]]}},"keywords":{}}],["syncwrong",{"_index":1357,"title":{},"content":{"120":{"position":[[166,9]]}},"keywords":{}}],["syntax",{"_index":1354,"title":{},"content":{"120":{"position":[[84,6]]},"135":{"position":[[359,7]]},"224":{"position":[[111,7],[126,7],[321,7],[362,6]]}},"keywords":{}}],["system",{"_index":577,"title":{"40":{"position":[[20,7]]}},"content":{"48":{"position":[[28,7]]},"73":{"position":[[28,7],[92,6]]},"75":{"position":[[373,6]]},"131":{"position":[[241,7]]},"137":{"position":[[396,7],[410,7]]},"222":{"position":[[242,6]]},"278":{"position":[[189,6]]},"300":{"position":[[24,6]]}},"keywords":{}}],["systems)cod",{"_index":951,"title":{},"content":{"67":{"position":[[883,12]]}},"keywords":{}}],["tabl",{"_index":937,"title":{"67":{"position":[[8,6]]}},"content":{"243":{"position":[[260,5]]}},"keywords":{}}],["tag",{"_index":1785,"title":{"185":{"position":[[30,3]]},"186":{"position":[[19,3]]},"190":{"position":[[16,5]]}},"content":{"176":{"position":[[265,4],[416,3],[765,3],[819,3]]},"179":{"position":[[131,3],[204,4],[272,3]]},"180":{"position":[[28,3],[98,4],[147,3],[184,3],[261,3]]},"182":{"position":[[98,3],[147,7],[339,3],[370,3]]},"184":{"position":[[297,3],[326,3],[360,3]]},"185":{"position":[[247,3],[306,3],[405,3],[443,3],[486,3]]},"186":{"position":[[156,3],[173,3],[284,3],[333,3],[352,4]]},"187":{"position":[[112,3],[201,3]]},"189":{"position":[[29,3]]},"190":{"position":[[25,3],[57,3],[80,3]]},"191":{"position":[[32,3]]},"194":{"position":[[48,3],[56,3],[79,3],[181,4],[432,3],[440,3],[492,3],[510,4],[571,3]]},"195":{"position":[[217,4]]},"196":{"position":[[426,3]]}},"keywords":{}}],["tag)gener",{"_index":1505,"title":{},"content":{"135":{"position":[[506,12]]}},"keywords":{}}],["tag.github/workflows/auto",{"_index":1886,"title":{},"content":{"187":{"position":[[66,25]]}},"keywords":{}}],["tag.yml",{"_index":1887,"title":{},"content":{"187":{"position":[[92,7]]}},"keywords":{}}],["tagclick",{"_index":1801,"title":{},"content":{"178":{"position":[[112,8]]}},"keywords":{}}],["take",{"_index":337,"title":{},"content":{"26":{"position":[[7,4]]},"152":{"position":[[198,5]]}},"keywords":{}}],["takeaway",{"_index":1768,"title":{},"content":{"174":{"position":[[5,10]]}},"keywords":{}}],["tar",{"_index":1854,"title":{},"content":{"179":{"position":[[1764,3]]}},"keywords":{}}],["tar.gz",{"_index":1856,"title":{},"content":{"179":{"position":[[1783,8]]}},"keywords":{}}],["target",{"_index":1470,"title":{},"content":{"133":{"position":[[1118,6]]},"198":{"position":[[1,6]]},"235":{"position":[[241,6]]},"251":{"position":[[188,6]]},"253":{"position":[[130,6]]},"265":{"position":[[41,6]]},"266":{"position":[[398,6]]},"267":{"position":[[577,6]]}},"keywords":{}}],["target=2",{"_index":2435,"title":{},"content":{"253":{"position":[[196,9]]}},"keywords":{}}],["target=2/day",{"_index":2590,"title":{},"content":{"265":{"position":[[123,13]]},"266":{"position":[[116,13]]}},"keywords":{}}],["task",{"_index":1098,"title":{"83":{"position":[[9,4]]}},"content":{"83":{"position":[[51,5],[224,5],[280,5]]},"90":{"position":[[32,4],[97,6]]},"92":{"position":[[164,4]]},"93":{"position":[[67,4]]}},"keywords":{}}],["tasks)data",{"_index":1156,"title":{},"content":{"93":{"position":[[129,10]]}},"keywords":{}}],["tasksfil",{"_index":1007,"title":{},"content":{"75":{"position":[[321,9]]}},"keywords":{}}],["technic",{"_index":90,"title":{},"content":{"3":{"position":[[1206,9]]},"163":{"position":[[496,10]]}},"keywords":{}}],["templat",{"_index":273,"title":{"21":{"position":[[3,9]]},"146":{"position":[[20,9]]}},"content":{"121":{"position":[[53,8]]},"146":{"position":[[756,8]]},"179":{"position":[[465,9],[906,9],[1487,9]]},"187":{"position":[[284,8]]},"196":{"position":[[322,9]]},"273":{"position":[[4121,8]]}},"keywords":{}}],["templatecheck",{"_index":1776,"title":{},"content":{"174":{"position":[[501,13]]}},"keywords":{}}],["tempor",{"_index":2632,"title":{},"content":{"270":{"position":[[154,8]]},"273":{"position":[[925,8]]}},"keywords":{}}],["temporari",{"_index":1264,"title":{},"content":{"106":{"position":[[652,9]]},"150":{"position":[[477,9]]},"278":{"position":[[1626,9]]},"289":{"position":[[99,9]]}},"keywords":{}}],["tend",{"_index":2314,"title":{},"content":{"246":{"position":[[1499,4]]}},"keywords":{}}],["term",{"_index":1430,"title":{},"content":{"132":{"position":[[77,4]]},"163":{"position":[[136,4]]},"215":{"position":[[14,4],[179,4]]}},"keywords":{}}],["terminolog",{"_index":2865,"title":{"281":{"position":[[28,13]]}},"content":{"281":{"position":[[98,12]]},"301":{"position":[[513,12]]}},"keywords":{}}],["territoryus",{"_index":2415,"title":{},"content":{"252":{"position":[[1217,13]]}},"keywords":{}}],["test",{"_index":201,"title":{"16":{"position":[[3,4]]},"17":{"position":[[9,6]]},"74":{"position":[[29,7]]},"75":{"position":[[17,5]]},"76":{"position":[[2,4]]},"88":{"position":[[3,4]]},"89":{"position":[[14,5]]},"92":{"position":[[24,7]]},"93":{"position":[[16,5]]},"94":{"position":[[14,6]]},"116":{"position":[[11,4]]},"117":{"position":[[6,4]]},"118":{"position":[[7,4]]},"138":{"position":[[3,8]]},"155":{"position":[[0,7]]},"157":{"position":[[14,7]]},"217":{"position":[[0,7]]},"218":{"position":[[10,6]]},"219":{"position":[[5,8]]},"223":{"position":[[0,7]]},"225":{"position":[[8,6]]},"226":{"position":[[7,8]]},"227":{"position":[[0,4]]},"261":{"position":[[0,7]]}},"content":{"14":{"position":[[211,4]]},"15":{"position":[[173,5]]},"17":{"position":[[5,5],[14,7],[300,5]]},"18":{"position":[[408,4]]},"21":{"position":[[192,7],[213,7],[250,5]]},"22":{"position":[[57,5]]},"25":{"position":[[248,5]]},"48":{"position":[[216,4]]},"67":{"position":[[942,7]]},"77":{"position":[[72,7],[947,7],[1487,7]]},"78":{"position":[[79,7]]},"79":{"position":[[117,7]]},"80":{"position":[[47,7]]},"81":{"position":[[54,7]]},"83":{"position":[[193,5]]},"86":{"position":[[26,6]]},"89":{"position":[[17,5]]},"90":{"position":[[279,4],[405,6],[471,7]]},"92":{"position":[[65,6]]},"93":{"position":[[40,5],[307,4]]},"94":{"position":[[28,5],[38,6],[121,5],[131,6],[303,5],[459,4]]},"116":{"position":[[163,5]]},"117":{"position":[[19,4]]},"129":{"position":[[148,7]]},"131":{"position":[[373,5],[393,4]]},"133":{"position":[[655,7]]},"138":{"position":[[71,5],[84,6],[106,4],[214,6]]},"146":{"position":[[518,7],[676,7]]},"152":{"position":[[47,7]]},"153":{"position":[[171,7]]},"156":{"position":[[9,7],[289,5]]},"157":{"position":[[31,4]]},"160":{"position":[[41,4],[162,4]]},"167":{"position":[[77,7]]},"170":{"position":[[198,7],[394,7]]},"174":{"position":[[165,4]]},"181":{"position":[[379,7]]},"182":{"position":[[267,7]]},"196":{"position":[[241,4]]},"224":{"position":[[16,5]]},"225":{"position":[[11,5],[24,6],[46,4],[154,6]]},"226":{"position":[[58,4]]},"239":{"position":[[1022,7]]},"272":{"position":[[720,7]]},"273":{"position":[[910,7]]}},"keywords":{}}],["test"",{"_index":1335,"title":{},"content":{"117":{"position":[[46,10]]}},"keywords":{}}],["test?estim",{"_index":1660,"title":{},"content":{"153":{"position":[[195,13]]}},"keywords":{}}],["test_coordinator_shutdown.pi",{"_index":1141,"title":{},"content":{"89":{"position":[[317,28]]}},"keywords":{}}],["test_multiple_homes_performance(hass",{"_index":2045,"title":{},"content":{"219":{"position":[[36,38]]}},"keywords":{}}],["test_period_calculation_performance(coordin",{"_index":2037,"title":{},"content":{"218":{"position":[[54,49]]}},"keywords":{}}],["test_periods(hass",{"_index":1343,"title":{},"content":{"118":{"position":[[225,18]]}},"keywords":{}}],["test_resource_cleanup.pi",{"_index":1140,"title":{},"content":{"89":{"position":[[57,24],[105,24],[160,24],[213,24],[263,24]]}},"keywords":{}}],["test_sensor_timer_assignment.pi",{"_index":1144,"title":{},"content":{"89":{"position":[[431,31]]}},"keywords":{}}],["test_something(coordin",{"_index":1337,"title":{},"content":{"118":{"position":[[30,28]]}},"keywords":{}}],["test_timer_scheduling.pi",{"_index":1142,"title":{},"content":{"89":{"position":[[372,24]]}},"keywords":{}}],["test_your_feature(hass",{"_index":225,"title":{},"content":{"17":{"position":[[69,23]]}},"keywords":{}}],["testabl",{"_index":568,"title":{},"content":{"37":{"position":[[1204,11]]},"43":{"position":[[1191,11]]}},"keywords":{}}],["testedservic",{"_index":1158,"title":{},"content":{"93":{"position":[[189,13]]}},"keywords":{}}],["tests/test_coordinator.pi",{"_index":1535,"title":{},"content":{"138":{"position":[[123,25]]},"225":{"position":[[63,25]]}},"keywords":{}}],["tests/test_coordinator_shutdown.pi",{"_index":1068,"title":{},"content":{"79":{"position":[[40,34]]},"94":{"position":[[184,34]]}},"keywords":{}}],["tests/test_period_calculation.py::test_midnight_cross",{"_index":1327,"title":{},"content":{"116":{"position":[[28,56]]}},"keywords":{}}],["tests/test_resource_cleanup.pi",{"_index":1011,"title":{},"content":{"77":{"position":[[7,30]]},"78":{"position":[[7,30]]},"79":{"position":[[7,30]]},"94":{"position":[[60,30],[153,30]]}},"keywords":{}}],["tests/test_sensor_timer_assignment.pi",{"_index":1087,"title":{},"content":{"81":{"position":[[7,37]]},"94":{"position":[[252,37]]}},"keywords":{}}],["tests/test_timer_scheduling.pi",{"_index":1078,"title":{},"content":{"80":{"position":[[7,30]]},"94":{"position":[[221,30]]}},"keywords":{}}],["tests/test_your_feature.pi",{"_index":235,"title":{},"content":{"17":{"position":[[322,26]]}},"keywords":{}}],["testsreleas",{"_index":372,"title":{},"content":{"28":{"position":[[281,12]]}},"keywords":{}}],["testssetup",{"_index":1414,"title":{},"content":{"129":{"position":[[184,10]]}},"keywords":{}}],["that'",{"_index":2924,"title":{},"content":{"286":{"position":[[200,6]]}},"keywords":{}}],["theoret",{"_index":2653,"title":{},"content":{"272":{"position":[[1460,11]]}},"keywords":{}}],["theori",{"_index":1418,"title":{"234":{"position":[[19,6]]}},"content":{"131":{"position":[[133,6]]}},"keywords":{}}],["theseaffect",{"_index":2138,"title":{},"content":{"239":{"position":[[817,13]]}},"keywords":{}}],["thing",{"_index":1654,"title":{},"content":{"152":{"position":[[190,7]]},"174":{"position":[[431,6]]}},"keywords":{}}],["thoroughli",{"_index":104,"title":{},"content":{"3":{"position":[[1408,10]]}},"keywords":{}}],["though",{"_index":2167,"title":{},"content":{"241":{"position":[[449,6]]}},"keywords":{}}],["thread",{"_index":913,"title":{},"content":{"62":{"position":[[644,6],[758,8]]}},"keywords":{}}],["three",{"_index":2097,"title":{},"content":{"236":{"position":[[23,5]]},"277":{"position":[[22,5]]},"301":{"position":[[1,5],[424,5]]}},"keywords":{}}],["threshold",{"_index":153,"title":{},"content":{"8":{"position":[[154,11]]},"41":{"position":[[609,10]]},"56":{"position":[[901,11]]},"57":{"position":[[627,11]]},"66":{"position":[[204,11]]},"107":{"position":[[217,10]]},"239":{"position":[[187,10],[284,11],[304,10],[573,10],[893,10],[985,10],[1652,10]]},"243":{"position":[[101,9]]},"246":{"position":[[1977,10]]},"248":{"position":[[178,10]]},"255":{"position":[[1303,11],[2188,9],[3075,10],[3350,10]]},"264":{"position":[[316,11]]},"273":{"position":[[2771,9],[2923,9]]},"288":{"position":[[424,10]]}},"keywords":{}}],["thresholdat",{"_index":2361,"title":{},"content":{"247":{"position":[[696,11]]}},"keywords":{}}],["through",{"_index":1608,"title":{},"content":{"148":{"position":[[144,7]]},"159":{"position":[[93,8]]},"255":{"position":[[2573,7]]}},"keywords":{}}],["throughout",{"_index":683,"title":{},"content":{"46":{"position":[[161,10]]},"262":{"position":[[210,10]]},"272":{"position":[[1756,10]]}},"keywords":{}}],["tibber",{"_index":396,"title":{"287":{"position":[[31,6]]}},"content":{"31":{"position":[[331,6]]},"36":{"position":[[67,7]]},"41":{"position":[[87,6]]},"51":{"position":[[117,6],[387,6],[1311,6]]},"94":{"position":[[625,6]]},"100":{"position":[[232,6]]},"101":{"position":[[1,6]]},"107":{"position":[[329,6]]},"136":{"position":[[141,6]]},"156":{"position":[[218,6]]},"229":{"position":[[83,6]]},"278":{"position":[[1236,6]]},"285":{"position":[[177,6]]},"287":{"position":[[82,6],[134,6]]}},"keywords":{}}],["tibber'",{"_index":1228,"title":{},"content":{"103":{"position":[[265,8]]},"107":{"position":[[244,8]]}},"keywords":{}}],["tibberpric",{"_index":95,"title":{},"content":{"3":{"position":[[1254,12]]}},"keywords":{}}],["tibberpricesapicli",{"_index":43,"title":{},"content":{"3":{"position":[[163,22]]}},"keywords":{}}],["tibberpricesdata",{"_index":2794,"title":{},"content":{"278":{"position":[[509,17]]}},"keywords":{}}],["tibberpricesdatafetch",{"_index":83,"title":{},"content":{"3":{"position":[[1053,23]]}},"keywords":{}}],["tibberpricesdataupdatecoordin",{"_index":44,"title":{},"content":{"3":{"position":[[192,34]]},"278":{"position":[[29,33]]}},"keywords":{}}],["tibberpricesintervalcriteria",{"_index":2709,"title":{},"content":{"273":{"position":[[1890,29]]}},"keywords":{}}],["tibberpricessensor",{"_index":45,"title":{},"content":{"3":{"position":[[233,19]]},"136":{"position":[[359,18]]}},"keywords":{}}],["tibberpricessensor(coordinatorent",{"_index":2874,"title":{},"content":{"281":{"position":[[397,38]]}},"keywords":{}}],["tick",{"_index":1765,"title":{},"content":{"173":{"position":[[268,4]]}},"keywords":{}}],["time",{"_index":124,"title":{"6":{"position":[[0,4]]},"124":{"position":[[0,4]]},"200":{"position":[[0,6]]}},"content":{"36":{"position":[[179,4]]},"42":{"position":[[522,4]]},"51":{"position":[[438,5]]},"52":{"position":[[876,5]]},"55":{"position":[[826,5]]},"56":{"position":[[1655,4],[1837,5]]},"67":{"position":[[648,4],[720,4]]},"77":{"position":[[81,4]]},"87":{"position":[[128,4]]},"90":{"position":[[284,4]]},"94":{"position":[[590,5]]},"100":{"position":[[355,4]]},"124":{"position":[[8,4]]},"152":{"position":[[209,4]]},"153":{"position":[[209,4],[226,4]]},"154":{"position":[[383,7]]},"157":{"position":[[288,4]]},"159":{"position":[[144,5]]},"170":{"position":[[224,4]]},"200":{"position":[[49,4],[343,7]]},"218":{"position":[[22,4]]},"219":{"position":[[344,5]]},"221":{"position":[[1,7]]},"246":{"position":[[152,4],[219,4],[368,6],[1633,5],[1650,5]]},"255":{"position":[[141,5],[2681,5]]},"259":{"position":[[242,5]]},"272":{"position":[[1114,4]]},"273":{"position":[[1240,4]]},"277":{"position":[[465,6]]},"278":{"position":[[382,5],[1122,5]]},"279":{"position":[[187,4],[1010,4],[1399,4],[1998,4]]},"281":{"position":[[160,5]]},"283":{"position":[[39,4],[293,4]]},"285":{"position":[[69,4],[389,4]]},"288":{"position":[[380,4]]},"289":{"position":[[303,5]]},"290":{"position":[[152,6]]},"297":{"position":[[44,4]]}},"keywords":{}}],["time)progress",{"_index":2859,"title":{},"content":{"280":{"position":[[752,13]]}},"keywords":{}}],["time)us",{"_index":725,"title":{},"content":{"51":{"position":[[537,9]]}},"keywords":{}}],["time.get_interval_time(price_data",{"_index":2703,"title":{},"content":{"273":{"position":[[1738,34]]}},"keywords":{}}],["time.perf_count",{"_index":1378,"title":{},"content":{"124":{"position":[[21,19],[82,19]]},"200":{"position":[[150,19],[212,19]]},"218":{"position":[[201,19],[278,19]]}},"keywords":{}}],["time_sensitive_entity_key",{"_index":1088,"title":{},"content":{"81":{"position":[[67,26]]}},"keywords":{}}],["time_since_last_upd",{"_index":2942,"title":{},"content":{"288":{"position":[[396,22]]}},"keywords":{}}],["timer",{"_index":631,"title":{"80":{"position":[[3,5]]},"81":{"position":[[13,5]]},"276":{"position":[[0,5]]},"278":{"position":[[0,5]]},"279":{"position":[[0,5]]},"280":{"position":[[0,5]]},"282":{"position":[[0,5]]},"286":{"position":[[17,5],[23,6]]},"288":{"position":[[15,5]]},"292":{"position":[[0,5]]},"293":{"position":[[0,5]]},"294":{"position":[[0,5]]},"295":{"position":[[10,5]]},"296":{"position":[[6,5]]},"297":{"position":[[6,5]]},"298":{"position":[[6,5]]}},"content":{"42":{"position":[[537,5]]},"48":{"position":[[1,5],[22,5]]},"51":{"position":[[667,6]]},"60":{"position":[[1,5]]},"71":{"position":[[83,6],[132,5]]},"73":{"position":[[1,5],[22,5]]},"75":{"position":[[259,6]]},"77":{"position":[[921,5],[969,5],[1016,5],[1061,6],[1114,6],[1158,6],[1286,6]]},"80":{"position":[[69,5],[119,5],[275,5],[332,5],[382,6]]},"81":{"position":[[271,5]]},"89":{"position":[[87,5],[351,5],[409,5]]},"92":{"position":[[128,6],[324,5],[384,5]]},"131":{"position":[[235,5]]},"277":{"position":[[40,5],[82,5],[195,5],[281,5],[375,5],[413,5],[447,5]]},"278":{"position":[[183,5],[587,5],[1100,5],[1559,6]]},"279":{"position":[[96,5],[289,5],[497,5],[716,5],[774,5],[1234,5],[1910,6]]},"280":{"position":[[90,5],[686,6]]},"281":{"position":[[27,5],[112,5],[248,5],[919,5],[1072,5],[1105,5]]},"283":{"position":[[12,5],[127,5],[266,5],[357,5],[460,5],[473,5]]},"284":{"position":[[12,5],[148,5],[381,5]]},"285":{"position":[[12,5],[104,5],[306,5],[432,5],[480,5]]},"286":{"position":[[39,5]]},"287":{"position":[[40,7],[217,6]]},"288":{"position":[[1,5],[536,5]]},"290":{"position":[[3,5],[70,5],[132,5]]},"294":{"position":[[192,6]]},"296":{"position":[[253,6]]},"297":{"position":[[141,6]]},"299":{"position":[[1,5],[214,6]]},"301":{"position":[[19,7],[28,5],[248,5],[527,5]]}},"keywords":{}}],["timer)midnight",{"_index":1081,"title":{},"content":{"80":{"position":[[203,14]]}},"keywords":{}}],["timerbest_price_progress",{"_index":2855,"title":{},"content":{"280":{"position":[[564,24]]}},"keywords":{}}],["timerpeak_price_remaining_minut",{"_index":2854,"title":{},"content":{"280":{"position":[[518,33]]}},"keywords":{}}],["timers)cach",{"_index":695,"title":{},"content":{"48":{"position":[[76,14]]},"131":{"position":[[289,14]]}},"keywords":{}}],["times/day",{"_index":2954,"title":{},"content":{"292":{"position":[[188,9]]},"293":{"position":[[14,9]]},"294":{"position":[[16,9]]}},"keywords":{}}],["times/dayapi",{"_index":2953,"title":{},"content":{"292":{"position":[[163,12]]}},"keywords":{}}],["timeservic",{"_index":50,"title":{},"content":{"3":{"position":[[322,12]]},"255":{"position":[[147,12]]}},"keywords":{}}],["timeservicecallback)smal",{"_index":73,"title":{},"content":{"3":{"position":[[657,25]]}},"keywords":{}}],["timesoverlap",{"_index":1094,"title":{},"content":{"81":{"position":[[314,12]]}},"keywords":{}}],["timesreason",{"_index":2284,"title":{},"content":{"246":{"position":[[550,15]]}},"keywords":{}}],["timestamp",{"_index":1226,"title":{},"content":{"103":{"position":[[235,9]]},"210":{"position":[[56,9],[119,9]]}},"keywords":{}}],["timestamp_list",{"_index":2004,"title":{},"content":{"210":{"position":[[69,15]]}},"keywords":{}}],["timestamp_set",{"_index":2006,"title":{},"content":{"210":{"position":[[132,14]]}},"keywords":{}}],["timeswithout",{"_index":1084,"title":{},"content":{"80":{"position":[[319,12]]}},"keywords":{}}],["timezon",{"_index":135,"title":{},"content":{"6":{"position":[[196,8]]},"99":{"position":[[126,8]]}},"keywords":{}}],["timezonelevel",{"_index":1227,"title":{},"content":{"103":{"position":[[250,14]]}},"keywords":{}}],["timing(func",{"_index":1935,"title":{},"content":{"200":{"position":[[75,13]]}},"keywords":{}}],["timing."""",{"_index":2052,"title":{},"content":{"221":{"position":[[90,25]]}},"keywords":{}}],["timing_dur",{"_index":2055,"title":{},"content":{"221":{"position":[[202,16]]}},"keywords":{}}],["timingmetadata.pi",{"_index":558,"title":{},"content":{"37":{"position":[[1027,17]]}},"keywords":{}}],["timingw",{"_index":2845,"title":{},"content":{"279":{"position":[[1975,8]]}},"keywords":{}}],["tip",{"_index":309,"title":{"24":{"position":[[12,5]]},"196":{"position":[[3,5]]},"256":{"position":[[10,5]]}},"content":{"52":{"position":[[365,5]]}},"keywords":{}}],["tipsboth",{"_index":585,"title":{},"content":{"40":{"position":[[163,8]]}},"keywords":{}}],["titl",{"_index":274,"title":{},"content":{"21":{"position":[[1,6]]}},"keywords":{}}],["today",{"_index":850,"title":{"71":{"position":[[37,6]]}},"content":{"56":{"position":[[951,5],[1418,5]]}},"keywords":{}}],["today'",{"_index":846,"title":{},"content":{"56":{"position":[[845,8]]}},"keywords":{}}],["today_d",{"_index":741,"title":{},"content":{"51":{"position":[[1042,10]]}},"keywords":{}}],["today_signatur",{"_index":835,"title":{},"content":{"56":{"position":[[585,16]]}},"keywords":{}}],["togeth",{"_index":909,"title":{},"content":{"62":{"position":[[17,9]]}},"keywords":{}}],["togetherask",{"_index":340,"title":{},"content":{"26":{"position":[[49,11]]}},"keywords":{}}],["togethercleanup",{"_index":1037,"title":{},"content":{"77":{"position":[[1082,15]]}},"keywords":{}}],["togetherreleas",{"_index":1880,"title":{},"content":{"184":{"position":[[330,15]]}},"keywords":{}}],["token",{"_index":1183,"title":{},"content":{"97":{"position":[[61,5]]},"106":{"position":[[9,6]]},"107":{"position":[[377,5]]},"229":{"position":[[94,6]]}},"keywords":{}}],["tokenburst",{"_index":1210,"title":{},"content":{"101":{"position":[[66,10]]}},"keywords":{}}],["toler",{"_index":496,"title":{},"content":{"36":{"position":[[209,9]]},"42":{"position":[[293,9]]},"56":{"position":[[1762,10]]},"239":{"position":[[156,9]]},"255":{"position":[[1482,10],[2875,10]]},"279":{"position":[[1145,10]]}},"keywords":{}}],["toleranceaccount",{"_index":2465,"title":{},"content":{"255":{"position":[[1194,17]]}},"keywords":{}}],["toleranceha",{"_index":2832,"title":{},"content":{"279":{"position":[[1209,11]]}},"keywords":{}}],["tomorrow",{"_index":746,"title":{"61":{"position":[[0,8]]},"285":{"position":[[12,8]]}},"content":{"51":{"position":[[1108,8]]},"56":{"position":[[1438,8]]},"61":{"position":[[62,8],[73,8],[124,8],[256,8]]},"212":{"position":[[88,8]]},"278":{"position":[[816,8]]},"283":{"position":[[176,8]]},"285":{"position":[[130,8]]},"287":{"position":[[447,8]]},"288":{"position":[[116,8],[633,8]]},"299":{"position":[[313,8]]}},"keywords":{}}],["tomorrow_check)"",{"_index":2967,"title":{},"content":{"296":{"position":[[126,21]]}},"keywords":{}}],["tomorrow_invalid",{"_index":750,"title":{},"content":{"51":{"position":[[1197,17]]},"288":{"position":[[183,17]]}},"keywords":{}}],["tomorrow_miss",{"_index":749,"title":{},"content":{"51":{"position":[[1177,16]]},"288":{"position":[[163,16]]}},"keywords":{}}],["took",{"_index":1382,"title":{},"content":{"124":{"position":[[139,4]]},"200":{"position":[[263,4]]}},"keywords":{}}],["tool",{"_index":1362,"title":{"135":{"position":[[16,6]]},"164":{"position":[[0,5]]}},"content":{"121":{"position":[[42,5]]},"133":{"position":[[98,7],[1219,5]]},"135":{"position":[[410,5]]},"179":{"position":[[896,4]]},"222":{"position":[[277,5]]},"289":{"position":[[204,5]]}},"keywords":{}}],["toolchain",{"_index":1835,"title":{},"content":{"179":{"position":[[1177,10]]},"231":{"position":[[213,9]]}},"keywords":{}}],["tooling)hom",{"_index":2082,"title":{},"content":{"231":{"position":[[114,12]]}},"keywords":{}}],["top",{"_index":1127,"title":{},"content":{"86":{"position":[[390,3]]}},"keywords":{}}],["total",{"_index":469,"title":{"89":{"position":[[24,7]]}},"content":{"33":{"position":[[486,5]]},"64":{"position":[[280,6]]},"65":{"position":[[306,6]]},"66":{"position":[[283,6]]},"67":{"position":[[464,5]]},"89":{"position":[[468,5]]},"100":{"position":[[174,5]]},"103":{"position":[[146,6]]},"215":{"position":[[233,5]]},"279":{"position":[[1892,5]]},"280":{"position":[[668,5]]},"294":{"position":[[150,5]]}},"keywords":{}}],["total)us",{"_index":717,"title":{},"content":{"51":{"position":[[322,10]]}},"keywords":{}}],["totalmodul",{"_index":1116,"title":{},"content":{"85":{"position":[[67,11]]}},"keywords":{}}],["totalredund",{"_index":691,"title":{},"content":{"47":{"position":[[94,15]]}},"keywords":{}}],["touch",{"_index":1569,"title":{},"content":{"145":{"position":[[88,5]]}},"keywords":{}}],["tracebackmiss",{"_index":1355,"title":{},"content":{"120":{"position":[[129,16]]}},"keywords":{}}],["tracemalloc",{"_index":1384,"title":{},"content":{"125":{"position":[[8,11]]},"201":{"position":[[8,11]]}},"keywords":{}}],["tracemalloc.get_traced_memori",{"_index":1386,"title":{},"content":{"125":{"position":[[76,31]]},"201":{"position":[[72,31]]}},"keywords":{}}],["tracemalloc.start",{"_index":1385,"title":{},"content":{"125":{"position":[[20,19]]},"201":{"position":[[20,19]]}},"keywords":{}}],["tracemalloc.stop",{"_index":1390,"title":{},"content":{"125":{"position":[[177,18]]},"201":{"position":[[200,18]]}},"keywords":{}}],["track",{"_index":630,"title":{"222":{"position":[[7,9]]}},"content":{"42":{"position":[[527,9]]},"83":{"position":[[366,8]]},"272":{"position":[[936,5]]}},"keywords":{}}],["trade",{"_index":947,"title":{},"content":{"67":{"position":[[817,5]]},"272":{"position":[[1890,5]]},"273":{"position":[[3006,5]]}},"keywords":{}}],["trail",{"_index":601,"title":{},"content":{"41":{"position":[[446,8],[515,8]]},"107":{"position":[[33,8]]}},"keywords":{}}],["trailing/lead",{"_index":410,"title":{},"content":{"31":{"position":[[636,16]]},"37":{"position":[[877,16]]},"38":{"position":[[129,16]]},"43":{"position":[[340,16]]}},"keywords":{}}],["trailing_avg_24h",{"_index":877,"title":{},"content":{"57":{"position":[[260,18]]}},"keywords":{}}],["transform",{"_index":403,"title":{"57":{"position":[[3,14]]},"107":{"position":[[5,15]]}},"content":{"31":{"position":[[492,14],[767,14]]},"33":{"position":[[392,14]]},"36":{"position":[[224,11]]},"55":{"position":[[843,15]]},"60":{"position":[[177,14]]},"62":{"position":[[164,14]]},"64":{"position":[[172,15]]},"65":{"position":[[203,15]]},"67":{"position":[[370,14]]},"279":{"position":[[2085,14]]},"280":{"position":[[359,15]]},"285":{"position":[[199,9],[468,11]]},"292":{"position":[[126,9]]},"293":{"position":[[124,15]]}},"keywords":{}}],["transit",{"_index":900,"title":{"60":{"position":[[23,12]]}},"content":{},"keywords":{}}],["translat",{"_index":138,"title":{"7":{"position":[[0,11]]},"40":{"position":[[8,11]]},"52":{"position":[[3,11]]},"72":{"position":[[17,13]]},"85":{"position":[[3,11]]}},"content":{"33":{"position":[[201,11]]},"38":{"position":[[232,12],[254,11]]},"40":{"position":[[10,12],[90,12]]},"52":{"position":[[207,12],[294,12],[575,11]]},"62":{"position":[[317,11]]},"64":{"position":[[256,12]]},"65":{"position":[[274,12]]},"67":{"position":[[114,12],[783,13]]},"72":{"position":[[80,14],[217,11]]},"90":{"position":[[173,11]]},"136":{"position":[[837,13],[865,12],[914,12]]},"137":{"position":[[384,11],[418,14]]},"204":{"position":[[167,11]]},"224":{"position":[[287,11]]}},"keywords":{}}],["translations/*.json",{"_index":578,"title":{},"content":{"40":{"position":[[23,23]]},"52":{"position":[[220,23]]}},"keywords":{}}],["transparent)may",{"_index":2642,"title":{},"content":{"272":{"position":[[655,15]]}},"keywords":{}}],["trend",{"_index":241,"title":{},"content":{"18":{"position":[[91,5],[145,5]]},"37":{"position":[[965,5]]},"78":{"position":[[378,5],[401,5]]},"255":{"position":[[947,5],[1758,6],[2916,5],[3186,6]]},"264":{"position":[[364,6]]}},"keywords":{}}],["trendcalcul",{"_index":658,"title":{},"content":{"43":{"position":[[696,16],[747,15]]}},"keywords":{}}],["trendsiqr",{"_index":2530,"title":{},"content":{"255":{"position":[[3788,9]]}},"keywords":{}}],["tri",{"_index":2396,"title":{},"content":{"252":{"position":[[350,3]]},"253":{"position":[[17,3],[152,3]]},"266":{"position":[[255,5]]}},"keywords":{}}],["trigger",{"_index":386,"title":{},"content":{"31":{"position":[[184,8]]},"42":{"position":[[225,7],[625,9],[653,7]]},"51":{"position":[[638,9]]},"55":{"position":[[363,8]]},"56":{"position":[[977,9]]},"59":{"position":[[57,8]]},"69":{"position":[[165,8]]},"180":{"position":[[80,9],[154,7]]},"196":{"position":[[435,8]]},"246":{"position":[[664,7]]},"277":{"position":[[110,7]]},"279":{"position":[[1555,9],[1584,7],[2003,9]]},"281":{"position":[[139,8],[925,9]]},"283":{"position":[[21,8],[136,8],[275,8],[366,8]]},"284":{"position":[[21,8],[157,8],[390,8]]},"285":{"position":[[21,8],[113,8],[315,8]]},"289":{"position":[[242,7]]},"292":{"position":[[1,9]]},"293":{"position":[[1,9]]},"294":{"position":[[1,9]]},"299":{"position":[[14,11]]}},"keywords":{}}],["triggers)classifi",{"_index":2644,"title":{},"content":{"272":{"position":[[987,17]]}},"keywords":{}}],["triggerslisten",{"_index":2989,"title":{},"content":{"301":{"position":[[550,16]]}},"keywords":{}}],["triggersobserv",{"_index":2873,"title":{},"content":{"281":{"position":[[254,16]]}},"keywords":{}}],["triggert"",{"_index":2922,"title":{},"content":{"286":{"position":[[129,14]]}},"keywords":{}}],["trotzdem",{"_index":2912,"title":{},"content":{"286":{"position":[[45,8]]}},"keywords":{}}],["troubleshoot",{"_index":1900,"title":{"194":{"position":[[3,16]]}},"content":{},"keywords":{}}],["true",{"_index":2547,"title":{},"content":{"258":{"position":[[61,4],[302,4]]}},"keywords":{}}],["truli",{"_index":2283,"title":{},"content":{"246":{"position":[[538,5]]},"263":{"position":[[196,5]]}},"keywords":{}}],["truth",{"_index":650,"title":{},"content":{"43":{"position":[[422,5]]},"149":{"position":[[371,6]]}},"keywords":{}}],["tuple(best_config.item",{"_index":838,"title":{},"content":{"56":{"position":[[647,27]]}},"keywords":{}}],["tuple(peak_config.item",{"_index":840,"title":{},"content":{"56":{"position":[[695,27]]}},"keywords":{}}],["tuple[bool",{"_index":2445,"title":{},"content":{"255":{"position":[[341,11]]}},"keywords":{}}],["tuple[dict",{"_index":2447,"title":{},"content":{"255":{"position":[[513,11],[563,11]]}},"keywords":{}}],["turn",{"_index":2288,"title":{},"content":{"246":{"position":[[680,5]]}},"keywords":{}}],["turn)reli",{"_index":2409,"title":{},"content":{"252":{"position":[[989,13]]}},"keywords":{}}],["turnov",{"_index":723,"title":{"60":{"position":[[9,8]]},"65":{"position":[[15,9]]},"284":{"position":[[21,9]]}},"content":{"51":{"position":[[498,8],[658,8]]},"57":{"position":[[666,8]]},"71":{"position":[[64,8]]},"80":{"position":[[218,8]]},"86":{"position":[[65,8]]},"111":{"position":[[233,8]]},"278":{"position":[[552,8],[748,8],[1435,8],[1500,8]]},"279":{"position":[[689,8],[923,8]]},"284":{"position":[[100,8],[266,8],[486,8],[608,9]]},"296":{"position":[[235,8],[272,8]]},"297":{"position":[[123,8],[160,8]]}},"keywords":{}}],["turnover)explicit",{"_index":2946,"title":{},"content":{"288":{"position":[[700,17]]}},"keywords":{}}],["turnoveragents.md",{"_index":2981,"title":{},"content":{"300":{"position":[[107,17]]}},"keywords":{}}],["two",{"_index":2125,"title":{},"content":{"239":{"position":[[249,3]]},"241":{"position":[[7,3]]}},"keywords":{}}],["type",{"_index":116,"title":{},"content":{"4":{"position":[[25,5]]},"15":{"position":[[97,4]]},"18":{"position":[[308,6]]},"21":{"position":[[276,4]]},"22":{"position":[[85,4]]},"43":{"position":[[136,5],[207,5],[498,4]]},"55":{"position":[[677,4]]},"67":{"position":[[7,4]]},"77":{"position":[[597,5]]},"94":{"position":[[396,4]]},"133":{"position":[[251,4],[616,4]]},"210":{"position":[[17,6]]},"277":{"position":[[88,4]]},"278":{"position":[[64,5]]},"279":{"position":[[83,5]]},"280":{"position":[[77,5]]}},"keywords":{}}],["typic",{"_index":920,"title":{"64":{"position":[[0,7]]}},"content":{"173":{"position":[[60,7]]},"198":{"position":[[48,9],[132,9]]},"242":{"position":[[102,7]]},"247":{"position":[[204,9]]},"273":{"position":[[1279,7]]}},"keywords":{}}],["typical)high",{"_index":2317,"title":{},"content":{"246":{"position":[[1601,14]]}},"keywords":{}}],["ui",{"_index":762,"title":{"178":{"position":[[10,2]]}},"content":{"52":{"position":[[163,2]]},"94":{"position":[[600,3]]},"136":{"position":[[774,2]]},"187":{"position":[[238,2]]},"226":{"position":[[81,3]]}},"keywords":{}}],["un",{"_index":2918,"title":{},"content":{"286":{"position":[[84,3]]}},"keywords":{}}],["unauthor",{"_index":1288,"title":{},"content":{"111":{"position":[[637,12]]}},"keywords":{}}],["uncancel",{"_index":1039,"title":{},"content":{"77":{"position":[[1146,11]]}},"keywords":{}}],["uncertainti",{"_index":2747,"title":{},"content":{"273":{"position":[[3587,11]]}},"keywords":{}}],["unchang",{"_index":871,"title":{},"content":{"56":{"position":[[1815,9]]},"57":{"position":[[427,9]]},"66":{"position":[[119,10]]}},"keywords":{}}],["unchanged)low",{"_index":860,"title":{},"content":{"56":{"position":[[1383,14]]}},"keywords":{}}],["unclear",{"_index":1557,"title":{},"content":{"143":{"position":[[447,7],[487,7]]},"172":{"position":[[111,8]]},"174":{"position":[[36,7]]}},"keywords":{}}],["unclearpush",{"_index":342,"title":{},"content":{"26":{"position":[[83,11]]}},"keywords":{}}],["under",{"_index":1548,"title":{},"content":{"141":{"position":[[26,5]]}},"keywords":{}}],["underscor",{"_index":78,"title":{},"content":{"3":{"position":[[819,11]]}},"keywords":{}}],["underscore)typ",{"_index":69,"title":{},"content":{"3":{"position":[[612,15]]}},"keywords":{}}],["understand",{"_index":955,"title":{},"content":{"67":{"position":[[977,10]]},"133":{"position":[[144,13],[917,13],[1101,13]]},"272":{"position":[[1365,10]]},"273":{"position":[[4657,10]]}},"keywords":{}}],["understand/modifi",{"_index":1764,"title":{},"content":{"173":{"position":[[213,18]]}},"keywords":{}}],["undo",{"_index":1898,"title":{},"content":{"193":{"position":[[28,4]]}},"keywords":{}}],["unexpect",{"_index":2145,"title":{},"content":{"239":{"position":[[1131,10]]}},"keywords":{}}],["unifi",{"_index":432,"title":{},"content":{"31":{"position":[[1122,7]]},"43":{"position":[[65,7]]}},"keywords":{}}],["uninstallationwithout",{"_index":1074,"title":{},"content":{"79":{"position":[[279,21]]}},"keywords":{}}],["unit",{"_index":287,"title":{},"content":{"21":{"position":[[245,4]]},"103":{"position":[[200,5]]}},"keywords":{}}],["unknown",{"_index":1851,"title":{},"content":{"179":{"position":[[1739,7]]}},"keywords":{}}],["unkontrolliert",{"_index":2919,"title":{},"content":{"286":{"position":[[88,15]]}},"keywords":{}}],["unload",{"_index":1005,"title":{},"content":{"75":{"position":[[289,6]]}},"keywords":{}}],["unloadha'",{"_index":1040,"title":{},"content":{"77":{"position":[[1200,10]]}},"keywords":{}}],["unnecessari",{"_index":1006,"title":{},"content":{"75":{"position":[[298,11]]},"77":{"position":[[1318,11]]},"253":{"position":[[156,11]]}},"keywords":{}}],["unpredict",{"_index":2422,"title":{},"content":{"252":{"position":[[1655,14]]},"273":{"position":[[4599,14],[4923,13]]}},"keywords":{}}],["unrealist",{"_index":2605,"title":{},"content":{"267":{"position":[[565,11]]}},"keywords":{}}],["unregist",{"_index":1017,"title":{},"content":{"77":{"position":[[281,12]]},"281":{"position":[[1160,10]]}},"keywords":{}}],["unrel",{"_index":328,"title":{},"content":{"25":{"position":[[223,9]]}},"keywords":{}}],["unreli",{"_index":2250,"title":{},"content":{"245":{"position":[[126,10]]}},"keywords":{}}],["unreliablebest",{"_index":2349,"title":{},"content":{"247":{"position":[[143,14]]}},"keywords":{}}],["unstablecallback",{"_index":1000,"title":{},"content":{"75":{"position":[[153,16]]}},"keywords":{}}],["unsur",{"_index":1685,"title":{},"content":{"159":{"position":[[164,7]]}},"keywords":{}}],["unsynchron",{"_index":2927,"title":{},"content":{"287":{"position":[[202,14]]},"301":{"position":[[59,15],[257,14]]}},"keywords":{}}],["unsynchronized)fast",{"_index":2950,"title":{},"content":{"292":{"position":[[28,20]]}},"keywords":{}}],["until",{"_index":453,"title":{},"content":{"33":{"position":[[162,5],[228,5],[282,5],[351,5],[448,5]]},"50":{"position":[[179,6],[232,5],[288,5]]},"51":{"position":[[483,5],[1395,5]]},"52":{"position":[[409,6]]},"55":{"position":[[255,5]]},"56":{"position":[[820,5]]},"67":{"position":[[135,6],[193,5],[286,5],[385,5]]},"75":{"position":[[136,5]]},"100":{"position":[[333,6]]},"147":{"position":[[105,5]]},"212":{"position":[[35,5]]},"279":{"position":[[564,5]]}},"keywords":{}}],["unusualus",{"_index":2681,"title":{},"content":{"273":{"position":[[398,12]]}},"keywords":{}}],["up",{"_index":180,"title":{},"content":{"12":{"position":[[229,2]]},"31":{"position":[[123,2]]},"51":{"position":[[1353,2]]},"92":{"position":[[305,2]]},"139":{"position":[[147,2]]},"147":{"position":[[145,2]]},"209":{"position":[[98,2]]},"255":{"position":[[3207,3]]},"278":{"position":[[1709,2]]},"279":{"position":[[451,2]]}},"keywords":{}}],["updat",{"_index":297,"title":{"70":{"position":[[32,9]]},"121":{"position":[[12,9]]},"161":{"position":[[12,6]]},"213":{"position":[[6,8]]}},"content":{"22":{"position":[[181,7],[211,7]]},"31":{"position":[[193,6],[1037,7],[1184,6]]},"36":{"position":[[130,6]]},"42":{"position":[[63,8],[613,7],[718,6]]},"51":{"position":[[431,6],[1251,6]]},"52":{"position":[[864,6]]},"53":{"position":[[159,6]]},"55":{"position":[[336,6],[698,6],[769,7],[836,6]]},"56":{"position":[[1351,7],[1666,7]]},"57":{"position":[[687,6]]},"61":{"position":[[13,6]]},"64":{"position":[[13,6],[242,8]]},"65":{"position":[[13,6],[260,8]]},"66":{"position":[[9,6],[262,8]]},"67":{"position":[[240,7]]},"77":{"position":[[172,6],[1342,7],[1504,6]]},"78":{"position":[[251,6]]},"80":{"position":[[303,6]]},"81":{"position":[[298,6],[339,7]]},"92":{"position":[[361,6],[422,8]]},"111":{"position":[[13,8]]},"114":{"position":[[13,7]]},"132":{"position":[[359,6]]},"136":{"position":[[96,6]]},"137":{"position":[[87,7]]},"146":{"position":[[177,10]]},"154":{"position":[[345,6]]},"156":{"position":[[300,7],[346,6]]},"157":{"position":[[299,7]]},"163":{"position":[[298,8]]},"171":{"position":[[4,6],[99,6],[205,6]]},"173":{"position":[[246,7]]},"176":{"position":[[147,6]]},"198":{"position":[[30,7],[75,7]]},"213":{"position":[[6,6]]},"216":{"position":[[63,7],[221,7]]},"219":{"position":[[337,6]]},"277":{"position":[[165,7],[438,8]]},"278":{"position":[[1724,6]]},"279":{"position":[[180,6],[526,6],[1635,8],[2054,7]]},"280":{"position":[[165,6],[320,6],[960,7],[1028,8]]},"281":{"position":[[498,6],[1026,7]]},"283":{"position":[[32,6],[101,7],[286,6],[331,7],[377,6],[426,7]]},"285":{"position":[[62,6],[382,6]]},"288":{"position":[[27,7]]},"289":{"position":[[158,7],[296,6]]},"290":{"position":[[26,7]]},"293":{"position":[[158,7]]},"296":{"position":[[187,6]]},"298":{"position":[[51,6]]},"299":{"position":[[142,7]]},"301":{"position":[[154,7]]}},"keywords":{}}],["update)period",{"_index":910,"title":{},"content":{"62":{"position":[[442,13]]}},"keywords":{}}],["update_interv",{"_index":2788,"title":{},"content":{"278":{"position":[[123,15]]}},"keywords":{}}],["updated"",{"_index":960,"title":{},"content":{"69":{"position":[[71,13]]}},"keywords":{}}],["updatescosmet",{"_index":1565,"title":{},"content":{"143":{"position":[[642,15]]}},"keywords":{}}],["updatespattern",{"_index":1052,"title":{},"content":{"77":{"position":[[1761,15]]}},"keywords":{}}],["updatesveri",{"_index":2860,"title":{},"content":{"280":{"position":[[793,11]]}},"keywords":{}}],["us",{"_index":34,"title":{"98":{"position":[[8,5]]},"118":{"position":[[0,6]]},"146":{"position":[[3,3]]},"182":{"position":[[11,3]]},"184":{"position":[[12,5]]}},"content":{"3":{"position":[[25,3],[378,4],[501,4],[770,4],[852,4],[923,4],[1002,4],[1166,4]]},"6":{"position":[[8,3]]},"33":{"position":[[17,4]]},"37":{"position":[[21,4]]},"42":{"position":[[151,4]]},"50":{"position":[[17,4]]},"55":{"position":[[316,3]]},"78":{"position":[[297,3]]},"84":{"position":[[75,4]]},"90":{"position":[[75,4],[167,5]]},"111":{"position":[[160,5]]},"117":{"position":[[30,3]]},"134":{"position":[[406,5]]},"162":{"position":[[195,3]]},"163":{"position":[[14,4]]},"172":{"position":[[8,3]]},"176":{"position":[[57,3]]},"178":{"position":[[1,3],[190,5]]},"179":{"position":[[358,3],[451,3],[549,3],[663,7]]},"180":{"position":[[293,5],[363,4]]},"182":{"position":[[8,3]]},"195":{"position":[[36,4]]},"196":{"position":[[23,3]]},"200":{"position":[[1,3]]},"209":{"position":[[196,3]]},"210":{"position":[[1,3]]},"236":{"position":[[18,4]]},"239":{"position":[[638,5],[1354,4],[1468,4]]},"246":{"position":[[86,3],[2623,3]]},"247":{"position":[[448,3],[646,4]]},"248":{"position":[[534,7]]},"250":{"position":[[86,3]]},"252":{"position":[[815,6],[1415,4]]},"255":{"position":[[840,4],[2416,3]]},"259":{"position":[[298,3]]},"269":{"position":[[441,3]]},"272":{"position":[[970,4],[1799,3]]},"273":{"position":[[1579,5],[1813,3],[2705,6],[2857,6],[4381,3],[4806,3]]},"277":{"position":[[17,4]]},"278":{"position":[[991,3],[1550,3]]},"279":{"position":[[102,5],[1157,4]]},"280":{"position":[[96,5]]},"285":{"position":[[354,5]]},"287":{"position":[[22,4]]},"293":{"position":[[93,4]]},"299":{"position":[[221,3]]}},"keywords":{}}],["usag",{"_index":584,"title":{"47":{"position":[[7,6]]},"125":{"position":[[7,6]]}},"content":{"40":{"position":[[157,5]]},"52":{"position":[[359,5]]},"67":{"position":[[837,6]]},"75":{"position":[[108,5]]},"212":{"position":[[124,6]]},"219":{"position":[[322,5]]},"222":{"position":[[146,6]]},"272":{"position":[[1326,5]]},"273":{"position":[[1287,5]]}},"keywords":{}}],["use15",{"_index":2281,"title":{},"content":{"246":{"position":[[493,6]]}},"keywords":{}}],["use_ai=fals",{"_index":1825,"title":{},"content":{"179":{"position":[[684,12]]}},"keywords":{}}],["user",{"_index":250,"title":{"59":{"position":[[0,4]]},"99":{"position":[[0,4]]},"248":{"position":[[19,5]]}},"content":{"18":{"position":[[223,5],[550,4]]},"33":{"position":[[155,6]]},"51":{"position":[[135,4]]},"55":{"position":[[388,5]]},"59":{"position":[[1,4]]},"78":{"position":[[305,4]]},"107":{"position":[[212,4]]},"139":{"position":[[1,4]]},"141":{"position":[[107,5],[133,4]]},"196":{"position":[[141,5],[214,4]]},"239":{"position":[[315,5],[1160,4],[1359,4],[1666,6]]},"243":{"position":[[2033,5],[2303,4]]},"246":{"position":[[636,4],[855,5],[1266,4],[2261,5],[2377,5],[2473,4],[2680,5]]},"250":{"position":[[96,4]]},"252":{"position":[[928,4],[1048,4]]},"255":{"position":[[3457,4]]},"269":{"position":[[212,4]]},"272":{"position":[[564,4],[910,4],[956,4],[1092,4],[1259,4],[1356,5],[1428,5]]},"273":{"position":[[1105,4],[1397,5],[3790,4],[4644,5],[4790,4],[5038,4]]},"274":{"position":[[1,4]]},"279":{"position":[[544,5]]},"280":{"position":[[694,5]]},"288":{"position":[[718,4]]},"289":{"position":[[222,6]]},"290":{"position":[[54,5],[116,5],[173,5]]},"301":{"position":[[334,5]]}},"keywords":{}}],["user'",{"_index":2367,"title":{},"content":{"247":{"position":[[860,6]]},"251":{"position":[[68,6]]},"269":{"position":[[427,6]]},"272":{"position":[[685,6],[1147,6],[2059,6]]},"273":{"position":[[1272,6]]}},"keywords":{}}],["user_data",{"_index":718,"title":{},"content":{"51":{"position":[[338,12]]},"62":{"position":[[90,10]]},"207":{"position":[[49,9],[145,10]]}},"keywords":{}}],["user_low_threshold",{"_index":2151,"title":{},"content":{"239":{"position":[[1371,18]]}},"keywords":{}}],["userscomput",{"_index":2670,"title":{},"content":{"272":{"position":[[2187,18]]}},"keywords":{}}],["usr/local/bin",{"_index":1858,"title":{},"content":{"179":{"position":[[1822,15]]}},"keywords":{}}],["usual",{"_index":303,"title":{},"content":{"23":{"position":[[47,8]]}},"keywords":{}}],["util",{"_index":540,"title":{"38":{"position":[[7,10]]}},"content":{"37":{"position":[[589,9]]},"38":{"position":[[1,7],[27,5],[106,5],[178,5]]},"132":{"position":[[279,9]]},"136":{"position":[[258,9]]},"154":{"position":[[71,7],[154,8]]}},"keywords":{}}],["utils/average.pi",{"_index":573,"title":{},"content":{"38":{"position":[[112,16]]}},"keywords":{}}],["utils/price.pi",{"_index":572,"title":{},"content":{"38":{"position":[[33,14]]},"41":{"position":[[54,15],[247,16]]},"107":{"position":[[265,14]]}},"keywords":{}}],["uv",{"_index":1356,"title":{},"content":{"120":{"position":[[163,2]]},"129":{"position":[[24,2]]},"202":{"position":[[19,2]]}},"keywords":{}}],["ux",{"_index":2850,"title":{},"content":{"280":{"position":[[214,2]]}},"keywords":{}}],["ux)al",{"_index":2987,"title":{},"content":{"301":{"position":[[417,6]]}},"keywords":{}}],["uxreduc",{"_index":2861,"title":{},"content":{"280":{"position":[[930,9]]}},"keywords":{}}],["v",{"_index":236,"title":{},"content":{"17":{"position":[[350,1]]},"94":{"position":[[92,1],[291,1]]},"116":{"position":[[86,1],[102,1]]}},"keywords":{}}],["v0.3.0",{"_index":1786,"title":{},"content":{"176":{"position":[[270,6],[363,6]]},"184":{"position":[[124,6],[178,6]]},"185":{"position":[[299,6]]},"186":{"position":[[177,6],[205,6]]},"194":{"position":[[63,6],[447,6],[478,6]]}},"keywords":{}}],["v1.0.0",{"_index":1816,"title":{},"content":{"179":{"position":[[242,6],[317,6]]},"180":{"position":[[103,8],[188,6],[211,6]]}},"keywords":{}}],["v1.1.0",{"_index":1817,"title":{},"content":{"179":{"position":[[249,6]]}},"keywords":{}}],["v2.1.3",{"_index":1860,"title":{},"content":{"180":{"position":[[112,7]]}},"keywords":{}}],["vagu",{"_index":1742,"title":{},"content":{"170":{"position":[[322,6]]}},"keywords":{}}],["valid",{"_index":27,"title":{"189":{"position":[[11,11]]},"224":{"position":[[12,11]]}},"content":{"1":{"position":[[220,8]]},"31":{"position":[[282,5],[530,5]]},"51":{"position":[[448,10],[896,10]]},"55":{"position":[[882,12]]},"64":{"position":[[65,6]]},"65":{"position":[[299,6]]},"67":{"position":[[86,10]]},"81":{"position":[[98,5],[149,5]]},"111":{"position":[[153,6]]},"135":{"position":[[314,8]]},"138":{"position":[[3,8]]},"189":{"position":[[42,8]]},"212":{"position":[[29,5]]},"224":{"position":[[45,8],[94,10],[254,5],[310,5],[397,10]]},"233":{"position":[[85,8]]},"288":{"position":[[276,6]]},"299":{"position":[[341,10]]}},"keywords":{}}],["validationr",{"_index":1454,"title":{},"content":{"133":{"position":[[634,14]]}},"keywords":{}}],["valu",{"_index":431,"title":{},"content":{"31":{"position":[[1111,6]]},"149":{"position":[[63,5]]},"215":{"position":[[309,6]]},"241":{"position":[[497,7]]},"242":{"position":[[110,7]]},"246":{"position":[[2466,6]]},"247":{"position":[[409,6]]},"252":{"position":[[1585,6]]}},"keywords":{}}],["valuabl",{"_index":2297,"title":{},"content":{"246":{"position":[[1008,8]]}},"keywords":{}}],["value_templ",{"_index":2758,"title":{},"content":{"273":{"position":[[4130,15]]}},"keywords":{}}],["valuesmost",{"_index":2339,"title":{},"content":{"246":{"position":[[2366,10]]}},"keywords":{}}],["varianc",{"_index":2318,"title":{},"content":{"246":{"position":[[1616,8]]}},"keywords":{}}],["variat",{"_index":2209,"title":{"262":{"position":[[29,11]]},"263":{"position":[[27,11]]}},"content":{"243":{"position":[[714,10]]},"259":{"position":[[101,10]]},"262":{"position":[[353,9]]},"263":{"position":[[433,9]]},"269":{"position":[[80,9],[117,9]]},"272":{"position":[[101,9],[156,9],[207,9],[249,10],[305,9],[354,10]]}},"keywords":{}}],["variation)averag",{"_index":2562,"title":{},"content":{"262":{"position":[[35,18]]},"263":{"position":[[34,18]]},"264":{"position":[[34,18]]}},"keywords":{}}],["variationhigh",{"_index":2619,"title":{},"content":{"269":{"position":[[66,13]]}},"keywords":{}}],["vat",{"_index":1219,"title":{},"content":{"103":{"position":[[169,3]]}},"keywords":{}}],["venv",{"_index":2080,"title":{},"content":{"231":{"position":[[46,5]]}},"keywords":{}}],["venv/bin/python",{"_index":1326,"title":{},"content":{"116":{"position":[[1,16]]}},"keywords":{}}],["verbos",{"_index":1330,"title":{},"content":{"116":{"position":[[106,7]]}},"keywords":{}}],["veri",{"_index":2374,"title":{},"content":{"248":{"position":[[308,4]]},"252":{"position":[[546,4],[1902,4]]},"258":{"position":[[100,4]]},"264":{"position":[[109,4],[469,4]]},"266":{"position":[[32,4]]},"270":{"position":[[56,4]]},"272":{"position":[[1648,4]]},"273":{"position":[[69,4],[369,4]]}},"keywords":{}}],["verif",{"_index":1594,"title":{},"content":{"146":{"position":[[699,12]]}},"keywords":{}}],["verifi",{"_index":967,"title":{},"content":{"70":{"position":[[9,6]]},"90":{"position":[[423,8]]},"153":{"position":[[146,6]]},"156":{"position":[[234,7]]},"157":{"position":[[264,6]]},"167":{"position":[[24,6]]},"219":{"position":[[308,6],[330,6]]}},"keywords":{}}],["version",{"_index":1425,"title":{"189":{"position":[[3,7]]},"192":{"position":[[3,7]]}},"content":{"131":{"position":[[445,10]]},"135":{"position":[[490,8]]},"147":{"position":[[161,8]]},"176":{"position":[[168,7],[231,7],[459,7],[726,7]]},"180":{"position":[[90,7]]},"185":{"position":[[16,7],[191,7]]},"186":{"position":[[16,7],[116,7]]},"187":{"position":[[49,7],[306,7]]},"189":{"position":[[51,7]]},"192":{"position":[[58,7]]},"194":{"position":[[159,7],[395,7],[606,7]]}},"keywords":{}}],["versioningagents.md",{"_index":700,"title":{},"content":{"48":{"position":[[270,19]]}},"keywords":{}}],["versionsget",{"_index":1599,"title":{},"content":{"147":{"position":[[49,11]]}},"keywords":{}}],["very_cheap",{"_index":1230,"title":{},"content":{"103":{"position":[[293,12]]},"239":{"position":[[61,12]]}},"keywords":{}}],["very_expens",{"_index":1232,"title":{},"content":{"103":{"position":[[332,15]]},"239":{"position":[[100,16]]}},"keywords":{}}],["via",{"_index":387,"title":{},"content":{"31":{"position":[[200,3],[584,3],[1118,3]]},"40":{"position":[[224,3]]},"41":{"position":[[50,3]]},"42":{"position":[[105,3]]},"51":{"position":[[601,3]]},"56":{"position":[[1144,3]]},"62":{"position":[[488,4]]},"77":{"position":[[1534,3]]},"86":{"position":[[33,3],[143,3]]},"134":{"position":[[149,3]]},"137":{"position":[[129,3],[346,3]]},"179":{"position":[[1198,3],[1278,3]]},"239":{"position":[[334,3]]},"246":{"position":[[2491,3]]},"255":{"position":[[1825,3]]},"272":{"position":[[1940,3]]}},"keywords":{}}],["viewer",{"_index":720,"title":{},"content":{"51":{"position":[[402,6]]},"99":{"position":[[49,6]]},"100":{"position":[[55,6]]}},"keywords":{}}],["vim",{"_index":1790,"title":{},"content":{"176":{"position":[[593,3]]},"185":{"position":[[33,3]]},"186":{"position":[[24,3]]},"194":{"position":[[273,3]]}},"keywords":{}}],["violat",{"_index":2765,"title":{},"content":{"273":{"position":[[4509,8]]}},"keywords":{}}],["visibl",{"_index":1651,"title":{},"content":{"152":{"position":[[144,8]]},"290":{"position":[[60,9],[122,9]]}},"keywords":{}}],["visit",{"_index":2086,"title":{},"content":{"232":{"position":[[58,5]]}},"keywords":{}}],["volatil",{"_index":240,"title":{"264":{"position":[[30,12]]}},"content":{"18":{"position":[[80,10],[134,10],[198,10]]},"37":{"position":[[927,10]]},"239":{"position":[[176,10],[273,10]]},"246":{"position":[[1473,11]]},"255":{"position":[[1230,10],[1870,10],[3428,10]]},"272":{"position":[[333,10]]},"273":{"position":[[3845,10],[4070,10],[4260,10],[5302,10]]}},"keywords":{}}],["volatilitythreshold",{"_index":2484,"title":{},"content":{"255":{"position":[[1838,20]]}},"keywords":{}}],["volunt",{"_index":368,"title":{},"content":{"28":{"position":[[169,11]]}},"keywords":{}}],["vs",{"_index":173,"title":{"112":{"position":[[0,2]]},"117":{"position":[[14,2]]},"169":{"position":[[31,3]]}},"content":{"12":{"position":[[143,2]]},"37":{"position":[[1164,2]]},"43":{"position":[[1103,2]]},"70":{"position":[[96,2],[164,2]]},"114":{"position":[[170,2]]},"128":{"position":[[171,2]]},"134":{"position":[[51,3]]},"179":{"position":[[1341,3]]},"196":{"position":[[319,2]]},"229":{"position":[[1,2]]},"230":{"position":[[119,2],[159,3]]},"246":{"position":[[2561,3]]},"269":{"position":[[363,3],[399,3],[463,3]]},"272":{"position":[[1625,3],[1644,3],[1675,3],[1706,3],[1771,3],[1821,3],[1835,3]]}},"keywords":{}}],["vscode/launch.json",{"_index":1293,"title":{},"content":{"113":{"position":[[1,20]]}},"keywords":{}}],["wait",{"_index":639,"title":{},"content":{"42":{"position":[[733,7]]},"185":{"position":[[233,4]]},"279":{"position":[[247,7]]}},"keywords":{}}],["want",{"_index":354,"title":{},"content":{"27":{"position":[[74,6]]},"239":{"position":[[934,4]]},"273":{"position":[[1116,4]]},"280":{"position":[[700,4]]},"290":{"position":[[192,7]]}},"keywords":{}}],["warn",{"_index":2293,"title":{},"content":{"246":{"position":[[827,7],[995,7],[1207,4],[2188,6]]},"247":{"position":[[361,7]]},"248":{"position":[[170,7],[257,8],[276,7]]},"252":{"position":[[537,8],[1108,4],[1783,7]]},"266":{"position":[[261,8]]},"267":{"position":[[622,8]]}},"keywords":{}}],["wast",{"_index":1684,"title":{},"content":{"159":{"position":[[137,6]]},"246":{"position":[[716,6]]}},"keywords":{}}],["watch",{"_index":1167,"title":{},"content":{"94":{"position":[[515,5]]},"156":{"position":[[117,5]]},"256":{"position":[[162,6]]},"296":{"position":[[58,5]]},"297":{"position":[[3,5]]},"298":{"position":[[3,5]]}},"keywords":{}}],["way",{"_index":1883,"title":{"186":{"position":[[28,5]]}},"content":{},"keywords":{}}],["we'r",{"_index":339,"title":{},"content":{"26":{"position":[[28,5]]},"28":{"position":[[159,5]]}},"keywords":{}}],["weak",{"_index":1995,"title":{},"content":{"209":{"position":[[200,4]]}},"keywords":{}}],["weakref",{"_index":1996,"title":{},"content":{"209":{"position":[[239,7]]}},"keywords":{}}],["weiter",{"_index":2913,"title":{},"content":{"286":{"position":[[54,6]]}},"keywords":{}}],["welcom",{"_index":355,"title":{},"content":{"27":{"position":[[95,7]]}},"keywords":{}}],["well",{"_index":953,"title":{},"content":{"67":{"position":[[936,5]]},"101":{"position":[[127,4]]}},"keywords":{}}],["wget",{"_index":1847,"title":{},"content":{"179":{"position":[[1657,4]]}},"keywords":{}}],["what'",{"_index":1580,"title":{},"content":{"146":{"position":[[222,6]]},"153":{"position":[[39,6]]}},"keywords":{}}],["whether",{"_index":2300,"title":{},"content":{"246":{"position":[[1063,7]]}},"keywords":{}}],["whoever",{"_index":2902,"title":{},"content":{"284":{"position":[[618,7]]}},"keywords":{}}],["win",{"_index":2903,"title":{},"content":{"284":{"position":[[637,5]]}},"keywords":{}}],["window",{"_index":2268,"title":{},"content":{"246":{"position":[[157,7]]},"255":{"position":[[1252,6]]}},"keywords":{}}],["windowno",{"_index":2497,"title":{},"content":{"255":{"position":[[2626,8]]}},"keywords":{}}],["windows_get_daily_stat_value(day",{"_index":646,"title":{},"content":{"43":{"position":[[234,33]]}},"keywords":{}}],["windowsdaily_stat.pi",{"_index":549,"title":{},"content":{"37":{"position":[[803,20]]}},"keywords":{}}],["windowsvolatility.pi",{"_index":554,"title":{},"content":{"37":{"position":[[898,20]]}},"keywords":{}}],["winners)min_dist",{"_index":2571,"title":{},"content":{"263":{"position":[[142,20]]}},"keywords":{}}],["wir",{"_index":2910,"title":{},"content":{"286":{"position":[[28,3]]}},"keywords":{}}],["within",{"_index":65,"title":{},"content":{"3":{"position":[[574,6],[775,6],[933,6]]},"23":{"position":[[56,6]]},"237":{"position":[[104,6],[218,6]]}},"keywords":{}}],["without",{"_index":331,"title":{},"content":{"25":{"position":[[287,7]]},"42":{"position":[[725,7]]},"45":{"position":[[1,7]]},"55":{"position":[[932,7]]},"64":{"position":[[311,7]]},"79":{"position":[[231,7]]},"85":{"position":[[91,7]]},"86":{"position":[[203,7]]},"90":{"position":[[289,7]]},"135":{"position":[[272,7]]},"145":{"position":[[208,7]]},"147":{"position":[[75,7]]},"156":{"position":[[308,7]]},"170":{"position":[[31,7]]},"173":{"position":[[116,7]]},"224":{"position":[[354,7]]},"246":{"position":[[2717,7]]},"247":{"position":[[494,7]]},"248":{"position":[[377,7]]},"279":{"position":[[239,7],[2062,7]]}},"keywords":{}}],["won't",{"_index":2815,"title":{},"content":{"278":{"position":[[1696,6]]},"289":{"position":[[145,6]]}},"keywords":{}}],["work",{"_index":349,"title":{"27":{"position":[[18,4]]}},"content":{"27":{"position":[[184,4]]},"28":{"position":[[320,4]]},"62":{"position":[[12,4]]},"77":{"position":[[1098,5]]},"80":{"position":[[237,5]]},"86":{"position":[[74,5]]},"92":{"position":[[198,5],[341,5]]},"133":{"position":[[1203,7]]},"154":{"position":[[531,4]]},"159":{"position":[[131,5]]},"162":{"position":[[213,4]]},"173":{"position":[[191,6]]},"178":{"position":[[255,5]]},"179":{"position":[[967,6]]},"248":{"position":[[164,4]]},"252":{"position":[[771,6]]},"272":{"position":[[860,6]]},"273":{"position":[[1350,4]]},"281":{"position":[[344,6]]},"285":{"position":[[456,4],[500,4]]},"299":{"position":[[287,8]]}},"keywords":{}}],["worked?includ",{"_index":1659,"title":{},"content":{"153":{"position":[[156,14]]}},"keywords":{}}],["workflow",{"_index":184,"title":{"13":{"position":[[12,9]]},"183":{"position":[[20,10]]},"184":{"position":[[0,8]]},"185":{"position":[[0,8]]},"186":{"position":[[0,8]]}},"content":{"48":{"position":[[257,8]]},"131":{"position":[[432,8]]},"132":{"position":[[199,8]]},"176":{"position":[[13,8],[769,8],[853,8]]},"180":{"position":[[39,9]]},"182":{"position":[[102,8]]},"184":{"position":[[346,8]]},"185":{"position":[[251,8],[325,8],[409,8],[468,8]]},"186":{"position":[[222,8],[304,8],[337,8]]},"189":{"position":[[33,8]]},"190":{"position":[[61,8]]},"194":{"position":[[222,10],[522,8]]}},"keywords":{}}],["workspac",{"_index":1716,"title":{},"content":{"165":{"position":[[25,9]]}},"keywords":{}}],["world",{"_index":1455,"title":{"150":{"position":[[5,5]]}},"content":{"133":{"position":[[649,5],[1179,5]]}},"keywords":{}}],["wors",{"_index":2770,"title":{},"content":{"273":{"position":[[4784,5]]}},"keywords":{}}],["worth",{"_index":1655,"title":{},"content":{"152":{"position":[[219,5]]},"246":{"position":[[315,5],[974,5]]}},"keywords":{}}],["wrapper",{"_index":1944,"title":{},"content":{"200":{"position":[[335,7]]}},"keywords":{}}],["wrapper(*arg",{"_index":1937,"title":{},"content":{"200":{"position":[[116,14]]}},"keywords":{}}],["write",{"_index":220,"title":{"17":{"position":[[3,5]]}},"content":{"28":{"position":[[273,7]]},"129":{"position":[[164,7]]},"131":{"position":[[383,5]]},"172":{"position":[[128,5]]}},"keywords":{}}],["wrong",{"_index":46,"title":{"122":{"position":[[19,6]]}},"content":{"3":{"position":[[257,5],[980,5]]},"80":{"position":[[269,5],[313,5]]},"81":{"position":[[265,5],[308,5]]},"92":{"position":[[416,5]]},"146":{"position":[[580,6]]},"174":{"position":[[441,6]]},"273":{"position":[[2699,5]]}},"keywords":{}}],["x",{"_index":1360,"title":{},"content":{"120":{"position":[[201,2]]},"196":{"position":[[158,1]]},"210":{"position":[[196,2],[203,1],[274,2],[281,1]]},"256":{"position":[[195,1],[301,1],[374,2],[442,2]]},"267":{"position":[[827,2]]}},"keywords":{}}],["x"",{"_index":1622,"title":{},"content":{"149":{"position":[[489,7]]}},"keywords":{}}],["x.y.z",{"_index":1893,"title":{},"content":{"189":{"position":[[66,8]]}},"keywords":{}}],["x86_64",{"_index":1850,"title":{},"content":{"179":{"position":[[1732,6]]}},"keywords":{}}],["xx",{"_index":2356,"title":{},"content":{"247":{"position":[[384,3]]}},"keywords":{}}],["xzf",{"_index":1855,"title":{},"content":{"179":{"position":[[1769,3]]}},"keywords":{}}],["y",{"_index":1918,"title":{},"content":{"196":{"position":[[164,2]]},"256":{"position":[[477,2]]},"267":{"position":[[862,2]]}},"keywords":{}}],["yaml",{"_index":535,"title":{},"content":{"37":{"position":[[523,4]]}},"keywords":{}}],["yesterday'",{"_index":744,"title":{"71":{"position":[[9,11]]}},"content":{"51":{"position":[[1078,11]]}},"keywords":{}}],["yesterday/yesterday/today/tomorrow",{"_index":714,"title":{},"content":{"51":{"position":[[235,34]]}},"keywords":{}}],["you'r",{"_index":1474,"title":{},"content":{"133":{"position":[[1196,6]]},"169":{"position":[[7,6]]},"286":{"position":[[153,6]]}},"keywords":{}}],["your_function(coordinator.data",{"_index":232,"title":{},"content":{"17":{"position":[[216,31]]}},"keywords":{}}],["yyyi",{"_index":1577,"title":{},"content":{"146":{"position":[[159,4],[188,4]]}},"keywords":{}}],["z%"",{"_index":2544,"title":{},"content":{"256":{"position":[[482,8]]}},"keywords":{}}],["z%"if",{"_index":2609,"title":{},"content":{"267":{"position":[[867,10]]}},"keywords":{}}],["zero",{"_index":2554,"title":{"259":{"position":[[18,4]]}},"content":{"263":{"position":[[125,4]]}},"keywords":{}}],["zigzag",{"_index":2482,"title":{},"content":{"255":{"position":[[1784,6],[2236,6]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/developer/lunr-index.json b/developer/lunr-index.json new file mode 100644 index 0000000..56d3ae7 --- /dev/null +++ b/developer/lunr-index.json @@ -0,0 +1 @@ +{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,418.536,1,799.862]],["content/0",[]],["keywords/0",[]],["title/1",[0,418.536,2,1030.533]],["content/1",[3,12.24,4,10.287,5,12.24,6,12.24,7,12.24,8,12.24,9,7.351,10,11.062,11,10.287,12,12.24,13,7.543,14,8.529,15,12.24,16,7.984,17,11.062,18,5.01,19,6.855,20,5.996,21,8.529,22,1.341,23,6.855,24,6.21,25,5.996,26,9.707,27,6.326,28,4.698,29,6.101]],["keywords/1",[]],["title/2",[30,926.119,31,799.862]],["content/2",[]],["keywords/2",[]],["title/3",[30,926.119,32,825.556]],["content/3",[19,2.926,22,1.408,28,3.277,30,8.178,32,13.295,33,10.828,34,5.438,35,16.289,36,2.559,37,2.604,38,3.309,39,3.137,40,3.407,41,3.517,42,3.517,43,5.224,44,4.721,45,4.721,46,5.748,47,3.517,48,5.224,49,8.538,50,4.721,51,3.309,52,3.309,53,5.224,54,4.721,55,5.224,56,1.844,57,2.138,58,5.224,59,5.224,60,8.538,61,1.844,62,5.224,63,12.505,64,4.782,65,9.1,66,6.18,67,9.978,68,5.224,69,5.224,70,5.224,71,3.781,72,3.781,73,5.224,74,4.39,75,2.991,76,2.864,77,3.277,78,5.224,79,5.224,80,5.224,81,5.224,82,5.004,83,5.224,84,2.806,85,4.497,86,3.781,87,2.991,88,3.781,89,3.407,90,4.721,91,5.224,92,3.517,93,3.309,94,5.224,95,5.224,96,2.516,97,2.361,98,2.083,99,5.224,100,5.224,101,5.224,102,4.39,103,5.224,104,5.224,105,2.752,106,2.65,107,3.407,108,2.752,109,3.781,110,2.167,111,4.721]],["keywords/3",[]],["title/4",[112,672.328,113,1108.262]],["content/4",[16,10.041,61,5.436,114,15.394,115,9.245,116,8.44,117,15.394,118,15.394,119,12.937,120,15.394,121,15.394]],["keywords/4",[]],["title/5",[122,672.328,123,459.259]],["content/5",[]],["keywords/5",[]],["title/6",[124,459.259,125,633.736]],["content/6",[22,1.64,34,4.44,112,7.292,126,8.675,127,16.949,128,16.949,129,13.3,130,16.949,131,13.3,132,13.3,133,13.3,134,5.518,135,12.02,136,10.045,137,13.3]],["keywords/6",[]],["title/7",[138,633.736,139,590.633]],["content/7",[22,1.304,140,11.795,141,15.618,142,11.857,143,14.115,144,16.918,145,15.618]],["keywords/7",[]],["title/8",[146,353.305,147,317.926,148,536.951]],["content/8",[1,9.01,22,1.45,61,4.877,106,7.008,107,9.01,108,7.275,112,7.573,126,9.01,147,4.15,148,8.808,149,9.299,150,13.813,151,17.359,152,13.813,153,7.909]],["keywords/8",[]],["title/9",[154,972.476,155,776.741]],["content/9",[]],["keywords/9",[]],["title/10",[156,1030.533,157,581.006]],["content/10",[]],["keywords/10",[]],["title/11",[158,1317.373]],["content/11",[0,5.573,159,16.329,160,12.95,161,11.819,162,16.329,163,16.329]],["keywords/11",[]],["title/12",[164,1030.533,165,972.476]],["content/12",[164,14.357,165,10.68,166,12.171,167,13.467,168,6.712,169,13.467,170,12.171,171,12.171,172,10.68,173,7.234,174,13.467,175,12.171,176,11.317,177,12.171,178,9.384,179,8.784,180,8.53,181,13.467,182,6.712]],["keywords/12",[]],["title/13",[183,590.633,184,658.735]],["content/13",[]],["keywords/13",[]],["title/14",[185,321.195,186,493.439,187,889.361]],["content/14",[0,4.275,22,1.046,30,12.315,97,5.662,168,8.127,187,10.526,188,16.306,189,12.315,190,12.525,191,9.557,192,12.525,193,11.32,194,7.934,195,5.496,196,12.525,197,8.728,198,12.525,199,12.525,200,11.32,201,3.474,202,9.065]],["keywords/14",[]],["title/15",[203,331.334,204,765.946,205,391.598]],["content/15",[0,5.651,1,8.365,4,10.777,18,6.777,21,8.936,22,1.531,23,7.182,24,6.507,116,7.031,201,3.557,206,11.59,207,9.282,208,6.055,209,12.824,210,11.59,211,12.824,212,8.123,213,10.17]],["keywords/15",[]],["title/16",[201,293.546,214,361.201,215,605.987]],["content/16",[22,1.324,28,6.083,134,6.575,139,7.633,157,7.509,216,11.043,217,11.043,218,14.323]],["keywords/16",[]],["title/17",[201,293.546,219,546.922,220,799.251]],["content/17",[18,4.69,22,1.699,56,4.046,191,6.715,195,6.746,201,4.813,213,9.086,221,6.282,222,11.458,223,6.417,224,5.711,225,11.458,226,10.355,227,11.458,228,11.458,229,10.355,230,10.355,231,8.61,232,11.458,233,13.894,234,11.458,235,11.458,236,9.629]],["keywords/17",[]],["title/18",[20,518.392,205,391.598,237,493.439]],["content/18",[0,3.114,20,7.527,22,0.762,31,5.952,97,4.125,116,5.003,146,3.046,147,3.942,168,6.54,195,5.758,197,6.358,200,8.246,201,2.531,207,6.604,214,3.114,221,9.213,238,6.891,239,9.125,240,10.345,241,9.911,242,7.281,243,5.623,244,4.395,245,7.668,246,5.78,247,5.952,248,8.246,249,6.604,250,5.758,251,6.891,252,8.246,253,7.236,254,9.125,255,9.125,256,9.125,257,9.125,258,8.246,259,9.125,260,8.246,261,6.891,262,6.891,263,9.125,264,9.125,265,9.125]],["keywords/18",[]],["title/19",[186,433.988,266,673.662,267,558.999,268,702.954]],["content/19",[30,11.795,168,7.784,172,12.386,187,13.125,267,9.38,269,9.625,270,12.386,271,10.883,272,8.39]],["keywords/19",[]],["title/20",[1,690.289,270,839.258,271,737.417]],["content/20",[]],["keywords/20",[]],["title/21",[268,926.119,273,825.556]],["content/21",[22,1.765,25,4.627,36,4.627,37,4.707,82,7.883,116,5.178,191,5.536,193,8.536,194,9.923,201,4.345,205,4.977,208,3.119,212,5.983,246,5.983,274,9.445,275,7.133,276,5.983,277,8.536,278,6.581,279,8.536,280,5.074,281,8.536,282,7.937,283,7.49,284,4.627,285,5.29,286,5.074,287,8.536,288,9.445,289,6.836,290,8.536,291,7.49,292,5.983,293,6.359,294,9.445]],["keywords/21",[]],["title/22",[268,926.119,295,1030.533]],["content/22",[0,5.402,1,7.806,19,6.703,20,7.752,21,8.339,31,7.806,82,10.392,97,5.41,107,7.806,110,4.965,116,6.562,123,4.482,201,3.32,205,4.428,207,11.454,208,5.856,210,10.816,212,7.581,213,9.491,296,11.968,297,5.007,298,8.339]],["keywords/22",[]],["title/23",[299,825.556,300,702.177]],["content/23",[18,5.96,22,1.216,65,12.236,208,4.808,214,4.97,299,9.803,301,9.803,302,14.561,303,14.561,304,14.561,305,10.538,306,14.561,307,10.538,308,13.159]],["keywords/23",[]],["title/24",[0,361.201,299,712.464,309,839.258]],["content/24",[]],["keywords/24",[]],["title/25",[299,825.556,310,1108.262]],["content/25",[0,3.713,9,6.533,13,6.704,22,1.24,39,6.533,75,6.229,93,6.891,96,5.24,123,4.074,195,4.774,201,3.017,205,4.025,268,8.216,291,8.627,311,6.891,312,5.73,313,9.831,314,10.878,315,10.878,316,9.831,317,10.878,318,8.627,319,9.142,320,10.878,321,9.831,322,10.878,323,8.627,324,8.627,325,7.873,326,10.878,327,10.878,328,10.878,329,10.878,330,10.878,331,5.519,332,10.878,333,10.878,334,8.216]],["keywords/25",[]],["title/26",[305,887.528,335,1226.268]],["content/26",[0,4.776,20,6.854,24,7.099,202,10.127,305,10.127,336,10.567,337,12.646,338,12.646,339,12.646,340,13.992,341,10.567,342,13.992,343,12.646,344,12.646,345,13.992,346,12.646,347,13.992]],["keywords/26",[]],["title/27",[25,518.392,348,670.336,349,518.392]],["content/27",[19,7.358,25,9.085,39,7.89,157,6.225,202,9.508,307,9.508,311,10.652,316,11.873,349,6.435,350,11.321,351,13.138,352,13.138,353,13.138,354,9.922,355,13.138,356,13.138,357,9.922,358,9.922]],["keywords/27",[]],["title/28",[359,1457.646]],["content/28",[0,3.996,1,7.636,2,9.839,22,1.303,25,5.735,155,7.416,178,8.158,191,6.861,197,8.158,220,8.842,271,8.158,272,6.289,293,7.882,339,10.581,341,8.842,349,5.735,360,11.707,361,11.707,362,11.707,363,7.031,364,10.581,365,11.707,366,11.707,367,11.707,368,11.707,369,7.031,370,11.707,371,11.707,372,11.707,373,6.861,374,6.05]],["keywords/28",[]],["title/29",[375,898.32]],["content/29",[]],["keywords/29",[]],["title/30",[147,279.621,376,1118.629,377,545.505]],["content/30",[]],["keywords/30",[]],["title/31",[194,776.741,377,718.685]],["content/31",[22,1.427,27,4.26,28,1.921,56,5.119,57,3.374,76,5.763,82,4.831,89,3.265,108,2.636,134,2.076,139,2.411,140,3.78,146,4.84,147,4.355,148,6.837,149,3.37,180,3.17,186,2.334,195,2.196,208,2.722,217,3.488,242,3.906,244,2.411,297,3.325,350,3.37,369,3.006,378,5.005,379,3.622,380,5.005,381,5.08,382,6.856,383,2.411,384,2.076,385,2.587,386,2.495,387,5.763,388,5.005,389,4.206,390,5.222,391,4.907,392,5.005,393,8.244,394,3.622,395,3.622,396,2.803,397,3.78,398,5.005,399,3.78,400,5.005,401,3.085,402,5.005,403,4.52,404,5.005,405,2.371,406,4.206,407,4.523,408,3.125,409,3.37,410,3.969,411,5.005,412,4.72,413,5.005,414,3.265,415,2.587,416,4.523,417,3.622,418,3.397,419,5.005,420,5.005,421,7.719,422,4.523,423,3.78,424,5.005,425,3.488,426,3.622,427,5.005,428,3.78,429,5.005,430,3.78,431,3.37,432,4.523,433,5.005,434,4.523,435,5.005,436,2.933,437,4.523,438,2.587,439,5.005,440,4.951,441,3.17,442,4.206,443,5.005]],["keywords/31",[]],["title/32",[375,755.726,391,343.49]],["content/32",[]],["keywords/32",[]],["title/33",[444,1155.968]],["content/33",[22,0.719,28,3.306,34,2.875,56,4.444,134,3.573,138,4.451,146,2.875,182,6.272,205,4.657,237,4.016,250,3.779,391,5.257,401,5.308,403,4.722,405,4.081,409,5.798,418,2.784,421,5.456,445,5.173,446,10.576,447,5.048,448,4.627,449,5.456,450,5.798,451,8.613,452,7.238,453,10.45,454,4.148,455,6.83,456,6.002,457,7.238,458,7.238,459,5.293,460,6.505,461,8.613,462,6.505,463,7.784,464,4.824,465,6.83,466,6.505,467,7.238,468,8.613,469,5.048,470,7.784,471,7.784,472,4.219,473,6.83,474,5.618,475,6.002,476,7.238]],["keywords/33",[]],["title/34",[56,432.979,391,343.49]],["content/34",[105,7.567,106,7.289,391,5.413,405,6.807,445,8.628,477,7.717,478,12.984,479,12.984,480,11.393,481,12.073,482,7.877,483,8.046,484,8.42]],["keywords/34",[]],["title/35",[441,776.741,485,926.119]],["content/35",[]],["keywords/35",[]],["title/36",[485,926.119,486,1108.262]],["content/36",[56,3.091,57,3.583,77,3.36,89,5.709,124,3.278,125,4.524,146,5.502,147,2.63,148,4.441,242,7.111,297,2.769,373,5.13,381,5.394,382,9.79,389,7.356,391,2.452,395,6.335,396,4.902,397,6.611,403,4.799,408,4.828,412,5.012,414,8.306,415,4.524,418,4.851,426,9.216,462,6.611,466,6.611,485,6.611,487,8.753,488,7.911,489,6.611,490,4.902,491,5.13,492,7.911,493,7.356,494,6.335,495,5.394,496,6.335,497,5.394,498,4.216,499,6.942,500,5.394,501,6.611,502,8.753,503,8.753,504,5.893,505,7.356,506,8.753,507,8.753,508,8.753]],["keywords/36",[]],["title/37",[123,348.592,242,441.002,375,573.62,408,352.869]],["content/37",[9,3.551,13,3.644,22,0.788,32,3.981,34,1.974,56,3.332,57,2.42,64,3.312,66,4.28,67,4.28,75,3.386,77,2.27,86,4.28,87,3.386,96,2.848,105,3.115,123,3.534,125,3.056,146,3.151,173,3.177,221,5.174,237,2.757,240,3.981,241,4.466,242,5.58,247,6.156,379,4.28,382,3.857,408,6.669,409,3.981,410,4.689,418,1.911,426,4.28,438,3.056,485,4.466,490,5.285,509,4.466,510,6.576,511,4.689,512,5.913,513,4.466,514,9.437,515,3.857,516,5.913,517,8.529,518,5.913,519,5.344,520,6.576,521,9.437,522,5.344,523,5.913,524,3,525,5.913,526,8.529,527,5.344,528,5.913,529,5.344,530,4.969,531,5.344,532,5.913,533,5.913,534,5.913,535,5.913,536,5.344,537,5.344,538,5.913,539,5.344,540,4.28,541,4.466,542,5.913,543,5.913,544,5.344,545,5.913,546,4.332,547,5.913,548,5.344,549,5.913,550,5.344,551,2.673,552,4.969,553,5.913,554,5.913,555,5.913,556,4.689,557,5.913,558,5.913,559,5.913,560,5.344,561,3.981,562,5.913,563,3.981,564,4.466,565,5.913,566,5.913,567,5.913,568,5.344,569,5.913,570,4.969]],["keywords/37",[]],["title/38",[64,686.771,540,887.528]],["content/38",[57,5.01,77,4.698,138,8.301,139,5.896,148,6.21,334,9.244,391,3.429,408,6.09,409,8.241,410,9.707,414,7.984,415,6.326,456,8.529,490,6.855,497,9.899,539,11.062,540,13.777,571,12.24,572,10.287,573,12.24,574,11.062,575,12.24]],["keywords/38",[]],["title/39",[123,459.259,477,658.735]],["content/39",[]],["keywords/39",[]],["title/40",[138,481.026,185,282.496,576,841.206,577,607.121]],["content/40",[28,4.982,38,8.221,57,5.313,64,7.269,75,7.432,134,5.384,138,8.623,139,6.251,194,8.221,369,7.795,387,7.116,391,3.636,578,11.73,579,12.979,580,11.73,581,11.73,582,11.73,583,10.293,584,7.999,585,12.979,586,12.979,587,12.979]],["keywords/40",[]],["title/41",[146,310.737,147,279.621,148,472.257,203,291.414]],["content/41",[22,1.739,61,3.195,146,3.021,148,4.591,153,5.181,269,5.576,387,4.961,396,5.067,409,6.091,416,8.177,436,5.303,464,5.067,497,5.576,546,4.153,572,10.961,588,8.177,589,9.048,590,11.788,591,13.043,592,8.038,593,13.043,594,11.788,595,13.043,596,11.788,597,13.822,598,9.048,599,9.048,600,12.853,601,11.788,602,9.048,603,9.048,604,9.048,605,7.175,606,8.177]],["keywords/41",[]],["title/42",[214,317.682,244,448.309,436,545.505,607,841.206]],["content/42",[22,0.951,34,2.513,56,2.658,61,4.02,85,5.997,89,8.957,98,3.001,124,2.819,125,3.89,134,5.697,146,2.513,147,2.261,195,3.303,203,2.357,231,4.216,242,3.567,243,7.017,297,4.345,331,3.819,383,3.626,384,4.723,385,5.884,386,6.844,387,4.127,401,4.639,437,6.803,494,5.448,495,8.463,496,5.448,546,5.226,608,9.029,609,7.528,610,7.528,611,6.803,612,3.89,613,5.448,614,6.803,615,7.528,616,7.528,617,6.803,618,5.685,619,7.528,620,5.97,621,6.803,622,7.528,623,10.29,624,6.803,625,10.29,626,7.528,627,6.803,628,5.685,629,6.803,630,5.97,631,2.658,632,5.068,633,5.97,634,5.685,635,4.639,636,5.97,637,9.029,638,6.803,639,6.326]],["keywords/42",[]],["title/43",[123,311.108,219,429.302,242,393.582,379,601.224,408,314.925]],["content/43",[0,2.282,22,0.868,56,2.36,57,4.255,66,4.839,72,4.839,74,5.618,86,4.839,87,3.828,96,3.22,105,5.475,116,6.993,123,2.504,125,3.455,173,3.591,221,5.699,237,3.117,242,4.925,244,3.22,247,4.361,358,5.049,391,1.873,408,6.255,410,5.302,432,6.042,441,4.235,477,3.591,485,5.049,490,5.822,499,8.244,500,4.12,510,7.243,511,5.302,513,5.049,517,6.042,519,6.042,522,6.042,524,3.392,526,6.042,527,6.042,530,5.618,544,6.042,546,4.772,548,9.395,550,6.042,551,3.022,561,4.501,568,6.042,570,5.618,583,5.302,640,6.042,641,7.851,642,6.685,643,6.685,644,6.685,645,6.685,646,6.685,647,6.685,648,6.685,649,6.042,650,6.042,651,6.685,652,4.235,653,5.302,654,5.049,655,6.042,656,6.685,657,6.685,658,10.395,659,6.685,660,5.302,661,6.685,662,6.685,663,3.918,664,6.685,665,6.042,666,6.685,667,6.685,668,4.839,669,6.685,670,6.685,671,6.685]],["keywords/43",[]],["title/44",[448,658.735,672,1030.533]],["content/44",[]],["keywords/44",[]],["title/45",[61,373.666,438,546.922,563,712.464]],["content/45",[61,6.281,185,4.36,203,4.498,331,7.289,384,5.96,391,5.413,673,9.371,674,17.79,675,14.366,676,14.366,677,12.984]],["keywords/45",[]],["title/46",[447,718.685,678,854.47]],["content/46",[29,6.101,56,4.322,67,8.859,112,6.711,139,5.896,208,4.042,276,7.753,384,5.078,391,4.499,418,5.191,425,8.529,447,9.414,449,7.753,459,5.148,462,9.244,679,12.24,680,10.287,681,11.062,682,8.15,683,10.287,684,12.24,685,8.241,686,6.855,687,11.062]],["keywords/46",[]],["title/47",[584,755.726,688,562.878]],["content/47",[22,1.404,56,5.938,185,3.987,203,4.113,369,7.89,391,3.68,465,10.419,471,11.873,472,8.237,473,10.419,474,8.569,476,11.041,563,8.845,689,13.138,690,13.138,691,13.138,692,10.419,693,10.419,694,9.154]],["keywords/47",[]],["title/48",[97,554.322,293,825.556]],["content/48",[56,4.226,108,6.304,155,10.025,183,7.623,184,6.429,201,3.32,214,4.085,373,7.014,374,6.185,375,7.376,391,3.352,405,5.67,445,7.188,482,6.562,483,6.703,484,7.014,495,7.376,577,7.806,631,5.588,695,10.816,696,11.968,697,9.039,698,11.968,699,11.968,700,11.968,701,6.853,702,6.853]],["keywords/48",[]],["title/49",[391,343.49,484,718.685]],["content/49",[]],["keywords/49",[]],["title/50",[444,1155.968]],["content/50",[28,4.262,34,3.707,61,3.92,134,6.244,146,3.707,147,4.522,205,4.108,219,5.738,244,5.348,390,7.033,391,5.359,408,4.209,412,6.358,446,9.331,450,7.475,453,10.255,459,6.33,688,7.838,703,11.103,704,5.964,705,6.668,706,11.103,707,9.331,708,11.103,709,10.034,710,11.103]],["keywords/50",[]],["title/51",[61,293.306,147,249.554,185,252.12,390,526.176,391,232.685]],["content/51",[19,2.856,22,1.436,27,4.327,36,2.498,41,3.433,56,1.801,61,2.956,76,4.59,110,2.116,124,1.91,134,5.113,139,4.032,142,3.23,146,4.544,147,5.02,148,2.588,180,3.23,191,2.989,195,2.238,203,1.597,208,2.765,215,2.92,224,4.173,244,2.456,250,2.238,297,2.649,312,2.686,383,4.032,386,2.542,387,2.796,390,3.23,391,3.813,396,5.964,397,3.852,399,3.852,401,6.563,405,2.416,438,2.636,449,3.23,450,3.433,452,7.036,453,5.028,454,4.032,472,2.498,546,4.888,551,4.814,631,1.801,652,3.23,685,3.433,704,2.74,705,5.028,711,5.1,712,6.059,713,4.045,714,5.1,715,3.852,716,4.286,717,5.1,718,4.286,719,5.1,720,4.286,721,5.1,722,3.852,723,4.794,724,4.045,725,5.1,726,4.609,727,2.92,728,5.1,729,5.1,730,5.1,731,3.621,732,6.396,733,5.1,734,4.609,735,5.1,736,5.1,737,5.1,738,5.1,739,4.286,740,4.045,741,5.1,742,3.143,743,5.1,744,4.609,745,3.852,746,3.063,747,3.691,748,5.1,749,4.609,750,4.609,751,4.286,752,3.691,753,5.1,754,5.1,755,3.143,756,5.1,757,4.609]],["keywords/51",[]],["title/52",[138,546.922,203,331.334,391,296.436]],["content/52",[22,1.091,28,2.665,38,4.399,39,4.171,47,4.675,57,6.492,77,5.014,123,2.601,124,2.601,134,2.881,138,6.752,139,5.156,143,6.276,144,9.675,147,2.086,194,9.3,217,10.23,244,3.345,247,6.983,297,2.197,309,5.507,363,4.171,369,4.171,377,4.07,384,2.881,391,4.113,405,3.29,449,4.399,450,4.675,453,4.171,456,4.839,459,2.921,472,5.244,524,3.523,578,6.276,581,6.276,582,6.276,584,4.28,654,5.245,663,4.07,688,3.188,704,3.73,707,5.836,752,5.026,755,4.28,758,5.836,759,6.276,760,6.944,761,9.675,762,5.026,763,6.276,764,6.944,765,3.807,766,4.675,767,6.944,768,4.399,769,6.276,770,6.276,771,6.944,772,5.507,773,4.675,774,7.748,775,9.456,776,7.207,777,6.944,778,5.507,779,5.507]],["keywords/52",[]],["title/53",[214,317.682,391,260.72,459,391.456,709,841.206]],["content/53",[39,8.403,56,4.94,297,4.427,384,5.805,385,7.231,391,3.919,438,7.231,449,8.863,462,10.567,466,10.567,472,6.854,473,11.096,612,7.231,704,7.516,715,10.567,780,9.75,781,13.992]],["keywords/53",[]],["title/54",[391,296.436,459,445.081,782,839.258]],["content/54",[22,1.648,384,5.587,459,5.664,686,7.542,715,10.17,783,13.467,784,13.467,785,17.083,786,10.17,787,13.467,788,13.467,789,13.467,790,13.467,791,13.467,792,13.467,793,9.384]],["keywords/54",[]],["title/55",[391,296.436,459,445.081,794,956.442]],["content/55",[19,4.019,22,1.56,27,3.709,28,2.754,34,2.396,52,4.545,56,2.534,116,3.934,124,2.688,142,4.545,185,2.178,205,4.063,208,2.37,223,4.019,224,3.577,249,5.194,250,3.149,297,4.726,331,3.641,346,6.485,350,4.831,386,3.577,391,3.735,403,3.934,405,3.4,408,2.721,418,2.319,430,5.42,448,3.855,450,4.831,453,4.31,459,3.018,472,7.317,483,4.019,612,3.709,663,4.206,677,6.485,692,5.691,731,3.104,732,4.31,752,5.194,765,3.934,773,4.831,795,7.176,796,10.979,797,9.922,798,10.979,799,9.922,800,10.979,801,6.766,802,7.176,803,6.031,804,7.176,805,5,806,6.485,807,5.691,808,6.485,809,7.176,810,7.176,811,7.176,812,9.226,813,7.176,814,7.176,815,6.031,816,6.485,817,6.485]],["keywords/55",[]],["title/56",[219,481.026,391,260.72,408,352.869,418,300.809]],["content/56",[22,1.673,39,4.336,47,2.875,56,1.508,105,2.249,124,2.704,146,4.468,147,4.282,153,2.445,182,2.128,195,3.168,205,4.563,214,1.457,219,2.207,224,2.128,244,2.057,249,3.09,262,3.225,297,2.284,386,2.128,387,2.341,391,3.993,405,2.023,408,4.675,414,2.785,415,2.207,418,4.326,421,5.941,425,5.031,448,2.294,449,2.705,450,2.875,453,2.564,454,3.477,459,5.629,460,3.225,462,3.225,472,2.092,477,2.294,496,3.09,498,3.477,546,5.063,663,2.502,678,2.975,680,3.588,685,2.875,704,2.294,731,1.847,732,5.633,739,3.588,746,2.564,747,3.09,752,3.09,768,2.705,803,3.588,818,4.27,819,2.875,820,5.225,821,6.525,822,4.27,823,4.27,824,4.27,825,3.588,826,4.27,827,4.27,828,4.27,829,4.27,830,4.27,831,4.27,832,4.27,833,3.859,834,4.27,835,4.27,836,3.859,837,3.588,838,4.27,839,2.166,840,4.27,841,2.785,842,4.27,843,3.123,844,3.859,845,4.27,846,4.27,847,4.27,848,1.771,849,4.27,850,6.525,851,4.27,852,7.22,853,3.386,854,7.22,855,4.27,856,7.883,857,2.502,858,2.564,859,3.859,860,4.27,861,3.859,862,3.859,863,3.225,864,3.225,865,4.27,866,3.859,867,3.588,868,4.27,869,3.859,870,3.859,871,3.588]],["keywords/56",[]],["title/57",[146,277.324,148,421.476,237,387.321,391,232.685,403,455.444]],["content/57",[22,1.569,39,4.091,41,4.586,56,2.405,85,3.588,125,6.671,146,5.248,147,4.366,148,7.976,153,3.901,205,2.521,208,2.25,297,2.155,373,3.993,375,4.198,391,4.071,408,3.999,412,3.901,418,5.373,421,4.315,449,4.315,454,3.281,459,4.436,464,3.815,465,5.402,466,5.145,472,3.337,481,5.725,483,3.815,509,5.145,510,4.747,563,4.586,688,3.127,692,5.402,693,5.402,694,7.35,704,3.66,705,4.091,723,3.901,782,5.402,794,6.157,805,4.747,817,9.533,837,5.725,871,5.725,872,5.402,873,3.815,874,6.157,875,6.812,876,6.157,877,6.812,878,6.812,879,4.586,880,6.812,881,6.812,882,4.931,883,6.812,884,6.812,885,6.812,886,6.812,887,6.812,888,6.812,889,6.157,890,4.586]],["keywords/57",[]],["title/58",[377,620.233,391,296.436,405,501.415]],["content/58",[]],["keywords/58",[]],["title/59",[205,307.382,250,364.519,377,486.847,459,349.363,765,455.444]],["content/59",[22,1.8,147,2.995,195,4.375,250,4.375,383,4.802,386,4.969,399,7.53,459,4.193,694,6.948,731,7.564,732,11.058,745,10.555,765,5.467,872,7.907,891,9.011,892,9.971,893,9.971,894,13.975,895,13.975,896,9.971,897,9.011,898,9.011,899,9.971]],["keywords/59",[]],["title/60",[454,448.309,551,420.748,723,532.975,900,930.776]],["content/60",[22,1.741,23,5.636,61,3.553,195,6.173,203,3.151,312,7.409,383,4.847,390,6.375,391,4.542,399,7.601,403,5.518,405,4.768,418,3.252,421,6.375,551,4.549,631,3.553,724,7.981,731,7.595,732,10.545,853,7.981,872,7.981,901,7.284,902,10.064,903,10.064,904,10.064,905,10.064,906,10.064]],["keywords/60",[]],["title/61",[147,279.621,746,558.999,747,673.662,861,841.206]],["content/61",[22,1.653,23,6.283,56,3.961,61,3.961,146,3.745,147,5.157,195,6.651,205,4.151,208,3.705,246,7.106,297,3.55,383,5.404,391,3.142,405,5.315,418,4.898,421,9.601,425,7.817,546,5.15,746,11.041,805,7.817,853,8.897,907,11.219,908,10.139]],["keywords/61",[]],["title/62",[56,432.979,391,343.49]],["content/62",[22,1.572,36,3.612,37,3.675,39,4.428,57,3.018,61,2.603,66,5.336,110,3.059,134,3.059,138,3.81,139,3.551,147,2.215,148,3.741,182,5.586,194,4.67,217,5.137,221,4.042,349,3.612,387,4.042,390,4.67,391,5.541,401,4.544,403,4.042,405,7.719,408,2.795,412,4.222,418,3.622,421,4.67,430,8.464,457,6.196,459,4.714,460,5.568,467,6.196,479,6.663,654,5.568,705,4.428,713,5.847,718,6.196,731,4.848,765,6.145,778,5.847,837,6.196,872,5.847,879,4.964,897,6.663,909,7.373,910,7.373,911,7.373,912,7.373,913,11.208,914,5.336,915,7.373,916,7.373,917,7.373,918,5.568,919,6.663]],["keywords/62",[]],["title/63",[448,658.735,672,1030.533]],["content/63",[]],["keywords/63",[]],["title/64",[205,391.598,685,712.464,920,765.946]],["content/64",[27,5.456,56,3.728,57,4.322,61,3.728,138,5.456,148,5.357,297,4.601,331,5.357,383,5.085,384,4.38,391,5.443,403,5.789,408,4.003,418,4.7,421,6.688,423,7.974,459,4.44,469,6.188,663,6.188,731,8.131,816,9.542,856,8.873,921,6.688,922,7.357,923,8.873,924,8.873,925,10.558,926,7.974,927,10.558,928,10.558,929,8.873]],["keywords/64",[]],["title/65",[454,590.633,723,702.177]],["content/65",[27,5.25,47,6.839,56,3.587,57,4.158,61,3.587,138,5.25,148,5.154,195,4.458,297,4.48,312,5.351,383,6.82,391,4.938,403,5.57,408,3.851,418,3.283,425,7.079,459,4.273,469,5.954,472,4.976,480,11.229,551,6.401,663,5.954,724,8.056,731,8.019,773,6.839,815,8.537,821,9.181,879,6.839,923,8.537,926,7.672,930,8.537,931,9.181,932,5.954,933,10.159,934,6.435]],["keywords/65",[]],["title/66",[205,453.758,459,515.73]],["content/66",[22,1.554,56,3.621,57,4.198,61,3.621,147,3.081,148,5.204,153,5.873,195,4.5,286,5.509,297,4.51,383,4.94,391,2.873,405,4.859,418,3.314,425,7.146,459,4.313,469,6.011,480,8.133,727,5.873,731,8.711,765,5.623,806,9.269,815,8.619,871,8.619,879,6.904,922,7.146,926,7.746,929,11.978,930,8.619,931,9.269,934,6.496,935,10.256]],["keywords/66",[]],["title/67",[936,1030.533,937,1108.262]],["content/67",[13,3.472,22,0.758,23,5.085,25,2.76,27,2.912,36,2.76,39,7.853,56,1.989,61,3.206,77,3.485,116,3.089,124,3.4,134,2.338,138,4.692,147,2.727,148,2.859,185,2.755,201,1.563,205,4.219,217,3.926,237,2.627,244,2.714,297,1.783,391,4.292,394,4.078,401,3.472,403,3.089,405,4.302,408,4.323,418,2.934,421,3.569,438,4.692,450,6.112,453,7.853,454,2.714,455,7.2,457,4.735,458,4.735,459,3.818,460,4.255,463,5.092,465,4.468,467,7.63,469,3.302,470,5.092,472,5.585,473,4.468,474,3.675,476,4.735,551,2.547,561,3.793,563,7.676,584,3.472,612,2.912,663,5.321,678,3.926,688,4.167,707,4.735,712,4.078,761,8.205,765,4.978,768,5.751,769,5.092,773,3.793,812,7.63,853,4.468,856,4.735,858,3.384,859,5.092,869,5.092,879,3.793,938,4.255,939,5.634,940,5.634,941,9.079,942,5.634,943,5.634,944,5.634,945,5.634,946,5.092,947,4.735,948,5.634,949,5.634,950,5.092,951,5.634,952,4.255,953,5.092,954,5.634,955,4.468,956,5.634]],["keywords/67",[]],["title/68",[25,518.392,391,296.436,957,493.439]],["content/68",[]],["keywords/68",[]],["title/69",[147,249.554,205,307.382,394,601.224,459,349.363,958,658.769]],["content/69",[24,7.008,56,4.877,106,7.008,208,4.561,386,6.884,438,7.138,641,10.432,803,11.608,808,12.483,891,12.483,959,13.813,960,13.813,961,13.813,962,13.813,963,13.813,964,9.299,965,9.997,966,13.813]],["keywords/69",[]],["title/70",[297,294.49,408,352.869,418,300.809,958,738.141]],["content/70",[24,6.282,75,7.09,147,4.862,173,8.694,205,5.988,208,4.089,246,7.843,262,9.351,299,8.335,391,3.468,418,4.001,421,10.251,682,6.282,833,11.19,898,11.19,967,8.627,968,12.381,969,12.381,970,11.19,971,12.381,972,12.381,973,12.381,974,12.381]],["keywords/70",[]],["title/71",[146,277.324,744,750.752,850,750.752,958,658.769,975,830.691]],["content/71",[24,7.099,208,5.779,312,7.37,490,7.836,631,6.179,682,7.099,723,8.012,901,10.127,918,10.567,976,13.992,977,13.992,978,13.992,979,12.646,980,13.992,981,13.992]],["keywords/71",[]],["title/72",[47,712.464,138,546.922,958,839.258]],["content/72",[24,6.833,28,5.169,77,6.557,93,8.53,134,5.587,138,8.829,208,4.447,401,8.299,438,6.96,477,7.234,758,11.317,770,12.171,879,9.066,982,13.467,983,13.467,984,13.467,985,8.784,986,11.317]],["keywords/72",[]],["title/73",[97,554.322,293,825.556]],["content/73",[108,7.467,147,4.259,183,6.828,375,8.737,454,6.828,495,8.737,577,11.509,631,6.23,701,8.118,702,8.118,987,14.177,988,12.812,989,9.878,990,14.177]],["keywords/73",[]],["title/74",[122,455.444,123,311.108,155,526.176,201,230.417,483,465.228]],["content/74",[]],["keywords/74",[]],["title/75",[22,88.379,122,580.226,201,293.546]],["content/75",[18,5.683,22,1.341,28,3.792,36,4.839,37,4.924,57,4.044,77,3.792,125,5.105,134,4.098,139,4.758,172,7.834,253,11.011,453,5.933,577,6.444,584,6.088,631,3.488,678,6.884,688,4.535,705,5.933,965,7.15,991,12.549,992,10.049,993,13.281,994,9.879,995,8.928,996,8.928,997,6.444,998,9.879,999,7.834,1000,9.879,1001,6.884,1002,11.669,1003,6.651,1004,9.879,1005,9.879,1006,8.302,1007,9.879,1008,7.834]],["keywords/75",[]],["title/76",[22,88.379,201,293.546,1009,799.251]],["content/76",[]],["keywords/76",[]],["title/77",[185,227.642,635,462.236,688,344.282,992,542.852,993,542.852,1010,489.231]],["content/77",[0,3.53,18,2.002,22,1.612,28,1.877,56,1.727,57,3.311,71,5.854,75,2.801,77,1.877,82,2.867,105,2.576,116,2.682,122,5.67,124,1.832,139,2.356,186,2.281,201,2.869,214,1.669,242,3.832,244,2.356,253,3.879,297,3.272,349,2.396,358,3.694,387,2.682,390,3.098,436,2.867,449,6.551,459,2.057,475,3.408,499,3.879,504,3.293,631,5.357,678,3.408,688,2.245,701,5.922,732,2.938,765,2.682,807,3.879,901,3.54,965,9.632,986,4.111,1001,11.466,1002,4.111,1003,8.959,1006,4.111,1010,9.897,1011,3.879,1012,4.891,1013,3.54,1014,8.089,1015,4.891,1016,4.891,1017,4.421,1018,4.891,1019,4.891,1020,4.891,1021,4.891,1022,4.891,1023,4.891,1024,4.891,1025,4.891,1026,4.891,1027,6.797,1028,4.891,1029,4.891,1030,4.891,1031,4.891,1032,4.421,1033,4.891,1034,8.202,1035,4.891,1036,4.891,1037,4.891,1038,3.408,1039,4.891,1040,4.891,1041,4.111,1042,4.891,1043,3.408,1044,4.891,1045,4.421,1046,4.891,1047,4.891,1048,8.089,1049,4.891,1050,4.891,1051,4.891,1052,4.891,1053,4.891,1054,4.891,1055,4.891,1056,4.891]],["keywords/77",[]],["title/78",[22,77.73,203,291.414,391,260.72,405,441.002]],["content/78",[0,3.224,22,1.611,34,3.153,56,3.335,77,3.625,122,5.178,146,3.153,201,2.62,241,10.158,242,4.475,250,4.145,297,2.988,312,4.975,391,5.253,394,6.836,405,6.373,408,3.581,418,4.347,426,6.836,449,5.983,459,7.179,466,7.133,556,7.49,765,5.178,782,7.49,1011,7.49,1057,9.445,1058,9.445,1059,9.445,1060,6.836,1061,9.445,1062,8.536,1063,9.445,1064,8.536,1065,9.445,1066,9.445,1067,9.445]],["keywords/78",[]],["title/79",[22,77.73,214,317.682,705,558.999,1010,607.121]],["content/79",[0,3.568,22,1.382,77,6.352,122,5.732,134,4.337,140,7.896,147,4.339,201,2.9,292,6.623,331,5.305,390,6.623,391,2.929,449,6.623,459,4.397,475,7.285,694,10.065,705,9.939,1002,8.786,1003,9.724,1011,8.291,1045,9.449,1060,7.567,1068,9.449,1069,10.455,1070,9.449,1071,10.455,1072,14.445,1073,13.054,1074,10.455,1075,10.455,1076,10.455,1077,10.455]],["keywords/79",[]],["title/80",[22,77.73,219,481.026,495,573.62,631,328.645]],["content/80",[22,1.389,42,9.79,46,9.79,52,6.688,57,4.322,77,4.052,122,5.789,201,2.929,244,5.085,280,5.672,297,3.34,349,5.172,436,6.188,448,5.672,495,8.962,631,6.638,723,6.046,844,13.143,879,9.79,965,10.525,1014,7.108,1060,7.641,1078,9.542,1079,10.558,1080,10.558,1081,10.558,1082,5.456,1083,8.873,1084,10.558,1085,10.558]],["keywords/80",[]],["title/81",[22,69.372,237,387.321,242,393.582,631,293.306,1086,658.769]],["content/81",[22,1.457,27,8.002,46,10.425,57,6.338,77,4.445,109,8.382,122,6.35,201,3.212,208,3.824,242,7.337,280,6.221,297,4.899,358,8.747,379,8.382,448,6.221,501,8.747,631,4.089,1086,9.184,1087,10.467,1088,11.581,1089,11.581,1090,11.581,1091,11.581,1092,11.581,1093,11.581,1094,11.581]],["keywords/81",[]],["title/82",[22,69.372,123,311.108,343,750.752,556,658.769,1095,698.098]],["content/82",[122,9.233,123,6.307,1096,13.356,1097,16.841]],["keywords/82",[]],["title/83",[223,521.281,266,673.662,373,545.505,1098,702.954]],["content/83",[18,4.081,22,1.347,54,9.011,85,5.252,110,5.798,123,3.734,125,5.153,147,2.995,185,3.026,201,2.766,203,4.375,275,13.207,278,9.738,391,2.793,513,7.53,531,9.011,630,7.907,682,5.059,705,5.988,727,5.709,742,6.145,766,6.712,778,7.907,779,7.907,873,5.584,901,7.216,1032,9.011,1034,7.907,1098,12.186,1099,7.53,1100,11.745,1101,9.971,1102,9.011,1103,9.971,1104,9.971,1105,6.504,1106,9.971]],["keywords/83",[]],["title/84",[61,328.645,1010,607.121,1107,930.776,1108,738.141]],["content/84",[0,4.596,22,1.427,34,4.496,85,7.093,140,10.17,182,6.712,195,5.909,284,6.597,334,10.17,373,7.892,515,8.784,873,7.542,1014,9.066,1108,13.548,1109,13.467,1110,13.467,1111,13.467,1112,13.467]],["keywords/84",[]],["title/85",[138,481.026,391,260.72,520,648.57,688,427.243]],["content/85",[0,4.275,22,1.604,25,6.136,85,6.597,237,5.84,278,8.728,331,6.355,391,4.568,415,6.473,455,9.933,456,8.728,458,10.526,688,5.749,758,10.526,759,11.32,873,7.015,879,8.432,1113,11.32,1114,6.729,1115,9.46,1116,12.525,1117,12.525]],["keywords/85",[]],["title/86",[28,318.838,29,414.023,56,293.306,147,249.554,1118,830.691]],["content/86",[22,1.654,29,5.161,85,5.454,109,7.494,125,5.351,148,5.254,201,2.872,216,7.215,217,9.998,229,12.967,242,4.906,286,5.562,331,5.254,349,5.072,387,7.867,415,5.351,454,4.987,477,5.562,491,6.069,546,4.753,723,5.929,873,5.799,876,9.358,997,6.754,1014,6.971,1119,8.212,1120,9.358,1121,10.355,1122,10.355,1123,10.355,1124,7.494,1125,9.358,1126,9.358,1127,10.355,1128,9.358]],["keywords/86",[]],["title/87",[382,607.121,441,589.571,688,427.243,1114,500.001]],["content/87",[0,5.695,28,4.982,85,6.836,124,4.861,134,5.384,182,6.469,382,8.466,441,12.33,472,6.358,515,8.466,873,7.269,1129,9.044,1130,10.293,1131,12.979,1132,12.979,1133,9.394,1134,12.979,1135,11.73,1136,12.979]],["keywords/87",[]],["title/88",[22,77.73,201,258.179,873,521.281,1137,702.954]],["content/88",[]],["keywords/88",[]],["title/89",[22,69.372,201,230.417,284,406.908,469,486.847,1138,658.769]],["content/89",[22,1.659,77,3.473,122,4.961,185,3.959,201,2.51,203,2.833,214,3.088,219,4.676,237,4.219,242,4.287,390,5.731,391,2.534,405,4.287,459,3.805,469,5.303,475,6.305,495,5.576,520,6.305,631,5.4,705,7.833,820,14.378,873,5.067,1009,6.833,1010,10.918,1086,7.175,1138,7.175,1139,9.048,1140,17.744,1141,9.048,1142,9.048,1143,8.177,1144,9.048]],["keywords/89",[]],["title/90",[22,77.73,284,455.934,1095,782.207,1096,738.141]],["content/90",[18,3.497,22,1.603,25,6.129,28,3.28,29,4.259,34,4.177,42,8.423,61,3.017,123,5.544,124,3.2,134,3.545,138,4.416,147,2.567,182,4.259,201,4.106,221,4.685,278,5.954,331,4.335,348,5.412,373,5.008,382,8.161,391,3.505,441,7.925,455,6.776,688,3.922,766,5.752,873,4.785,901,6.184,938,6.453,967,5.954,1009,6.453,1010,5.573,1096,6.776,1098,9.449,1099,6.453,1108,6.776,1113,7.722,1114,4.59,1115,6.453,1130,6.776,1145,8.545,1146,8.545,1147,6.453,1148,8.545,1149,7.722,1150,5.954,1151,7.722,1152,7.181]],["keywords/90",[]],["title/91",[22,88.379,183,509.723,873,592.691]],["content/91",[]],["keywords/91",[]],["title/92",[22,77.73,122,510.318,123,348.592,201,258.179]],["content/92",[22,0.833,25,6.846,42,6.712,46,6.712,71,7.216,123,3.734,147,4.198,180,6.316,201,2.766,242,4.724,297,4.422,318,7.907,349,6.846,391,2.793,394,7.216,405,4.724,459,4.193,475,6.948,495,6.145,509,7.53,631,5.697,635,6.145,688,4.577,694,6.948,705,5.988,991,9.011,993,11.678,1001,9.738,1003,6.712,1010,6.504,1014,9.408,1034,7.907,1073,9.011,1086,7.907,1098,7.53,1138,7.907,1153,9.011,1154,9.971]],["keywords/92",[]],["title/93",[22,77.73,201,258.179,765,510.318,1095,782.207]],["content/93",[28,5.818,29,5.592,122,6.151,123,5.677,182,5.592,201,4.204,223,6.283,275,8.473,280,6.027,286,6.027,373,6.575,441,9.601,454,5.404,515,7.318,600,9.428,632,7.553,688,5.15,901,8.12,992,8.12,993,8.12,1096,8.897,1098,8.473,1099,8.473,1129,7.817,1137,8.473,1155,11.219,1156,11.219,1157,10.139,1158,11.219,1159,11.219,1160,10.139,1161,7.817]],["keywords/93",[]],["title/94",[18,433.175,22,88.379,201,293.546]],["content/94",[18,5.645,22,1.698,28,2.91,36,3.713,37,3.778,52,4.802,116,4.156,122,4.156,123,2.839,124,2.839,134,4.749,146,2.531,157,3.592,179,4.945,185,3.474,201,4.81,203,2.373,208,2.503,212,4.802,213,10.936,214,2.587,216,5.282,219,3.918,236,9.619,252,6.851,253,6.012,286,4.072,396,4.246,688,3.48,693,6.012,762,5.487,986,9.619,992,5.487,993,5.487,995,10.345,996,6.851,1010,4.945,1011,9.077,1068,6.851,1078,6.851,1087,6.851,1137,5.725,1138,6.012,1162,6.371,1163,7.581,1164,7.581,1165,7.581,1166,6.371,1167,5.487,1168,6.851,1169,7.581,1170,7.581,1171,6.851,1172,6.851]],["keywords/94",[]],["title/95",[22,102.407,701,702.177]],["content/95",[36,7.331,37,7.459,123,5.605,839,7.593,1010,9.762,1173,18.243,1174,14.966,1175,10.832,1176,14.966,1177,10.075,1178,14.966]],["keywords/95",[]],["title/96",[61,432.979,701,702.177]],["content/96",[]],["keywords/96",[]],["title/97",[397,926.119,505,1030.533]],["content/97",[1179,16.085,1180,16.085,1181,16.085,1182,16.085,1183,12.756,1184,16.085,1185,16.085]],["keywords/97",[]],["title/98",[34,409.386,395,887.528]],["content/98",[]],["keywords/98",[]],["title/99",[147,317.926,250,464.389,395,765.946]],["content/99",[22,1.815,36,7.172,85,5.616,135,9.636,244,5.136,344,9.636,383,5.136,391,2.987,395,7.717,560,9.636,720,8.961,726,9.636,1186,9.636,1187,9.636,1188,10.663,1189,10.663,1190,10.663,1191,10.663,1192,10.663,1193,9.636,1194,9.636,1195,8.961,1196,10.663,1197,10.663,1198,10.663]],["keywords/99",[]],["title/100",[146,353.305,147,317.926,395,765.946]],["content/100",[22,1.775,36,4.795,124,3.666,126,6.385,146,3.268,147,2.941,215,5.605,219,5.059,350,6.59,383,4.715,391,2.742,396,5.482,415,5.059,436,5.737,453,5.879,454,4.715,469,5.737,546,4.493,551,4.425,588,8.847,716,11.594,720,8.226,836,8.847,1083,8.226,1187,8.847,1193,8.847,1194,8.847,1199,9.789,1200,9.789,1201,13.796,1202,9.789,1203,9.789,1204,8.847,1205,9.789,1206,9.789]],["keywords/100",[]],["title/101",[414,799.862,1207,755.726]],["content/101",[22,1.257,28,4.262,36,5.439,61,3.92,147,3.336,185,3.37,244,5.348,271,10.488,384,4.606,385,7.778,391,3.11,396,6.218,409,7.475,414,7.242,472,8.967,608,8.805,628,8.385,673,7.242,820,10.893,953,10.034,1207,10.523,1208,10.034,1209,11.103,1210,11.103,1211,7.737,1212,11.103,1213,11.103,1214,11.103]],["keywords/101",[]],["title/102",[440,736.464,441,776.741]],["content/102",[]],["keywords/102",[]],["title/103",[29,527.456,146,353.305,1204,956.442]],["content/103",[22,1.303,72,8.473,146,3.908,246,7.416,287,10.581,469,6.861,590,10.581,594,10.581,596,10.581,597,10.581,715,8.842,819,7.882,858,7.031,1215,11.707,1216,11.707,1217,9.284,1218,11.707,1219,11.707,1220,11.707,1221,11.707,1222,8.842,1223,11.707,1224,11.707,1225,11.707,1226,10.581,1227,11.707,1228,10.581,1229,9.284,1230,10.581,1231,8.158,1232,10.581]],["keywords/103",[]],["title/104",[1186,1108.262,1195,1030.533]],["content/104",[22,1.45,1125,12.483,1126,12.483,1195,11.608,1233,11.608,1234,13.813,1235,13.813,1236,15.954,1237,13.813,1238,13.813,1239,13.813,1240,13.813,1241,13.813,1242,13.813,1243,13.813]],["keywords/104",[]],["title/105",[125,633.736,491,718.685]],["content/105",[]],["keywords/105",[]],["title/106",[441,670.336,491,620.233,1244,652.2]],["content/106",[22,1.797,28,3.532,36,4.508,92,6.195,125,4.756,214,3.141,405,4.36,414,6.003,489,6.95,1183,7.298,1207,5.671,1245,15.44,1246,15.44,1247,9.203,1248,15.44,1249,15.44,1250,9.203,1251,9.203,1252,9.203,1253,9.203,1254,9.203,1255,5.671,1256,8.317,1257,8.317,1258,9.203,1259,7.298,1260,9.203,1261,9.203,1262,9.203,1263,9.203,1264,7.298,1265,8.317]],["keywords/106",[]],["title/107",[147,368.392,403,672.328]],["content/107",[22,1.24,61,5.966,106,5.519,147,3.268,148,7.531,149,7.324,153,6.229,250,4.774,396,6.092,408,5.627,409,9.993,412,8.499,414,7.096,415,5.622,464,6.092,490,6.092,497,9.148,572,9.142,601,9.831,632,7.324,740,8.627,992,7.873,1183,8.627,1228,9.831,1266,10.878,1267,10.878,1268,9.142,1269,10.878,1270,10.878,1271,10.878,1272,10.878]],["keywords/107",[]],["title/108",[155,776.741,957,571.765]],["content/108",[]],["keywords/108",[]],["title/109",[682,739.58]],["content/109",[]],["keywords/109",[]],["title/110",[682,536.951,755,652.2,957,493.439]],["content/110",[36,7.331,37,7.459,221,8.205,401,9.223,682,7.593,957,6.978,1273,13.526,1274,13.526,1275,10.075,1276,10.075,1277,14.966,1278,11.869]],["keywords/110",[]],["title/111",[298,737.417,477,568.496,682,536.951]],["content/111",[27,4.881,34,3.153,56,3.335,61,4.749,146,4.491,147,4.041,185,2.867,203,2.957,271,6.581,297,2.988,312,4.975,383,4.549,391,4.388,408,5.099,418,5.517,454,4.549,489,7.133,491,5.536,546,4.335,551,4.27,723,5.408,772,7.49,839,4.792,1082,4.881,1208,8.536,1217,10.667,1255,5.821,1279,15.665,1280,8.536,1281,15.665,1282,7.937,1283,9.445,1284,7.937,1285,9.445,1286,13.451,1287,8.536,1288,9.445,1289,9.445,1290,7.937]],["keywords/111",[]],["title/112",[0,361.201,173,568.496,957,493.439]],["content/112",[]],["keywords/112",[]],["title/113",[1291,1226.268,1292,686.771]],["content/113",[22,1.731,745,8.747,1256,10.467,1293,11.581,1294,9.733,1295,11.581,1296,11.581,1297,11.581,1298,11.581,1299,11.581,1300,11.581,1301,11.581,1302,11.581,1303,11.581,1304,11.581,1305,11.581,1306,13.994,1307,11.581,1308,11.581,1309,11.581,1310,11.581,1311,11.581,1312,11.581,1313,11.581,1314,11.581]],["keywords/113",[]],["title/114",[179,799.862,1315,972.476]],["content/114",[0,4.04,22,1.473,56,4.179,146,3.951,147,3.556,173,6.358,179,7.72,223,6.629,224,7.83,297,3.745,408,4.487,418,3.825,426,8.567,663,6.937,731,6.795,807,9.387,1315,13.985,1316,9.387,1317,9.947,1318,10.697,1319,9.387,1320,10.697,1321,10.697,1322,11.836,1323,11.836]],["keywords/114",[]],["title/115",[957,571.765,1324,926.119]],["content/115",[]],["keywords/115",[]],["title/116",[18,380.984,66,673.662,201,258.179,1325,738.141]],["content/116",[18,5.512,123,6.398,201,3.735,236,14.357,238,10.17,243,8.299,423,10.17,1324,10.17,1325,10.68,1326,13.467,1327,13.467,1328,14.357,1329,13.467,1330,13.467,1331,12.171,1332,11.317,1333,13.467]],["keywords/116",[]],["title/117",[0,317.682,173,500.001,201,258.179,957,433.988]],["content/117",[34,5.291,77,6.083,179,10.337,201,4.396,1315,12.568,1334,15.848,1335,15.848,1336,15.848]],["keywords/117",[]],["title/118",[34,353.305,123,396.345,201,293.546]],["content/118",[22,1.322,56,5.588,147,4.754,224,7.888,247,7.806,418,6.098,546,5.493,864,9.039,1276,8.057,1331,10.816,1337,11.968,1338,11.968,1339,11.968,1340,11.968,1341,11.968,1342,11.968,1343,11.968,1344,11.968,1345,11.968,1346,11.968,1347,11.968,1348,11.968,1349,11.968]],["keywords/118",[]],["title/119",[25,600.679,1244,755.726]],["content/119",[]],["keywords/119",[]],["title/120",[28,470.669,139,590.633]],["content/120",[0,4.275,16,8.17,18,5.127,22,1.514,77,4.808,208,5.385,491,7.341,682,6.355,863,9.46,1171,11.32,1244,7.719,1350,12.525,1351,12.525,1352,12.525,1353,10.526,1354,10.526,1355,12.525,1356,10.526,1357,12.525,1358,10.526,1359,12.525,1360,9.46,1361,6.867]],["keywords/120",[]],["title/121",[242,581.006,297,387.981]],["content/121",[0,4.325,22,1.611,56,4.475,183,6.104,208,4.185,221,6.948,242,6.005,273,8.532,513,9.571,524,6.43,682,6.43,731,5.482,957,5.909,1328,10.65,1362,8.532,1363,12.673,1364,12.673,1365,12.673,1366,12.673,1367,12.673,1368,12.673,1369,12.673]],["keywords/121",[]],["title/122",[46,712.464,408,401.208,418,342.017]],["content/122",[22,0.967,208,3.824,415,5.985,418,3.743,482,6.35,500,7.137,520,8.07,546,8.548,613,8.382,682,5.876,755,7.137,775,12.626,843,7.545,848,4.805,921,7.336,1217,9.184,1370,10.467,1371,11.581,1372,11.581,1373,11.581,1374,11.581,1375,10.467,1376,17.444,1377,6.221]],["keywords/122",[]],["title/123",[448,658.735,1177,825.556]],["content/123",[]],["keywords/123",[]],["title/124",[124,459.259,918,926.119]],["content/124",[22,1.604,112,7.773,124,5.309,157,8.36,231,7.94,1378,14.828,1379,14.177,1380,12.77,1381,14.177,1382,12.812,1383,14.177]],["keywords/124",[]],["title/125",[584,755.726,688,562.878]],["content/125",[0,4.776,22,1.671,85,9.218,112,7.672,841,11.415,1384,12.646,1385,12.646,1386,12.646,1387,13.992,1388,13.992,1389,13.992,1390,12.646]],["keywords/125",[]],["title/126",[1177,825.556,1391,1108.262]],["content/126",[16,11.323,22,1.154,119,11.608,238,14.337,459,5.809,653,10.954,686,7.736,1391,12.483,1392,13.813,1393,17.359,1394,10.432,1395,13.813,1396,13.813,1397,13.813]],["keywords/126",[]],["title/127",[18,380.984,134,386.142,957,433.988,1100,782.207]],["content/127",[]],["keywords/127",[]],["title/128",[160,839.258,957,493.439,1398,956.442]],["content/128",[0,5.925,56,4.877,112,7.573,160,10.954,173,7.42,221,7.573,1292,7.736,1398,12.483,1399,13.813,1400,13.813,1401,13.813,1402,17.359,1403,13.813,1404,13.813,1405,13.813,1406,13.813]],["keywords/128",[]],["title/129",[1407,1108.262,1408,1226.268]],["content/129",[0,4.178,18,5.01,22,1.341,29,6.101,112,6.711,155,10.174,161,8.859,183,5.896,201,3.395,220,9.244,221,6.711,293,8.241,985,10.477,1315,9.707,1356,10.287,1407,14.517,1409,11.062,1410,16.063,1411,12.24,1412,9.244,1413,12.24,1414,12.24,1415,12.24]],["keywords/129",[]],["title/130",[97,554.322,183,590.633]],["content/130",[]],["keywords/130",[]],["title/131",[22,88.379,155,670.336,183,509.723]],["content/131",[0,3.281,1,6.271,2,8.079,18,3.935,29,4.792,56,3.395,96,4.631,98,3.833,123,3.601,155,8.628,178,6.699,184,5.164,195,4.219,201,3.778,212,6.09,214,3.281,220,7.261,369,8.181,373,5.635,374,4.969,375,5.925,391,2.693,405,4.555,408,3.645,445,5.774,446,8.079,484,5.635,495,5.925,498,4.631,577,6.271,631,3.395,695,8.689,697,7.261,839,4.878,918,7.261,1222,7.261,1412,7.261,1416,9.614,1417,9.614,1418,8.689,1419,7.261,1420,8.689,1421,7.261,1422,9.614,1423,9.614,1424,9.614,1425,5.635,1426,9.614,1427,9.614]],["keywords/131",[]],["title/132",[22,88.379,97,478.386,702,605.987]],["content/132",[31,7.168,37,5.477,77,4.218,97,4.968,107,9.749,112,6.025,115,6.6,123,5.598,126,7.168,161,7.954,184,5.903,205,4.066,297,3.477,375,6.773,474,7.168,482,6.025,540,7.954,688,5.044,702,8.559,766,7.398,1043,7.658,1161,7.658,1428,10.989,1429,9.235,1430,9.235,1431,10.989,1432,9.932,1433,10.989,1434,10.989,1435,9.235,1436,8.715,1437,10.989,1438,9.932,1439,8.3,1440,9.235]],["keywords/132",[]],["title/133",[37,527.456,183,509.723,702,605.987]],["content/133",[0,1.975,4,4.862,9,3.475,10,5.229,11,4.862,13,5.716,19,3.24,24,2.936,25,2.834,28,2.221,29,2.884,36,4.543,37,5.785,47,3.895,77,3.56,88,4.188,97,4.192,107,3.774,110,2.4,116,5.085,123,4.972,125,4.793,183,5.591,191,5.436,197,4.032,201,1.605,208,1.911,212,3.665,237,2.698,258,5.229,272,3.108,277,5.229,278,4.032,284,2.834,299,3.895,301,3.895,305,4.188,307,10.517,308,5.229,319,4.862,321,5.229,349,2.834,363,5.57,373,3.391,428,4.37,491,3.391,561,3.895,702,8.321,768,3.665,839,2.936,863,4.37,955,9.205,964,3.895,1043,4.032,1115,4.37,1147,4.37,1161,6.463,1207,3.566,1278,4.589,1362,6.244,1440,7.794,1441,4.862,1442,4.589,1443,5.229,1444,5.786,1445,5.786,1446,8.382,1447,5.786,1448,5.786,1449,5.786,1450,4.37,1451,5.786,1452,5.786,1453,5.229,1454,5.786,1455,8.382,1456,5.786,1457,5.786,1458,5.786,1459,5.786,1460,5.786,1461,5.786,1462,6.713,1463,5.786,1464,3.895,1465,5.786,1466,5.786,1467,5.229,1468,5.786,1469,5.786,1470,3.895,1471,5.786,1472,5.786,1473,4.862,1474,4.862]],["keywords/133",[]],["title/134",[22,77.73,157,441.002,1475,702.954,1476,930.776]],["content/134",[0,5.101,18,4.498,20,5.383,28,4.218,31,7.168,34,3.669,36,5.383,37,5.477,164,9.235,165,8.715,173,5.903,175,9.932,178,7.658,182,5.477,183,5.293,194,6.961,205,5.531,207,7.954,212,6.961,270,8.715,271,7.658,312,5.788,369,6.6,387,6.025,697,8.3,1477,10.989,1478,10.989,1479,9.932,1480,7.954,1481,10.989,1482,10.989,1483,10.989,1484,10.989,1485,10.989,1486,10.989,1487,10.989]],["keywords/134",[]],["title/135",[22,88.379,183,509.723,1362,712.464]],["content/135",[0,4.346,16,5.709,20,4.288,23,7.132,24,4.441,25,4.288,27,4.524,28,3.36,29,4.363,36,4.288,37,4.363,51,5.544,64,4.902,84,6.841,88,6.335,157,4.147,168,4.363,183,4.216,186,4.081,195,3.841,208,4.205,246,5.544,331,4.441,363,5.257,369,5.257,374,8.518,442,7.356,509,6.611,923,7.356,957,4.081,985,5.709,1003,5.893,1120,7.911,1354,7.356,1361,6.982,1362,5.893,1425,5.13,1488,8.753,1489,6.942,1490,8.753,1491,6.611,1492,8.753,1493,8.753,1494,8.753,1495,8.753,1496,8.753,1497,8.753,1498,6.942,1499,8.753,1500,8.753,1501,6.611,1502,8.753,1503,6.942,1504,5.544,1505,8.753]],["keywords/135",[]],["title/136",[22,88.379,29,527.456,88,765.946]],["content/136",[22,1.836,28,2.174,32,3.813,38,3.588,45,5.119,56,2,57,3.732,61,2,64,6.408,75,5.221,134,2.35,138,5.914,140,6.886,146,1.891,147,1.702,148,2.874,194,5.775,242,5.421,247,5.947,297,1.792,334,4.278,369,5.476,377,3.32,379,8.282,381,3.491,382,3.695,389,4.76,391,1.587,396,3.172,397,4.278,406,4.76,407,5.119,408,2.147,456,3.947,488,5.119,490,5.106,492,5.119,497,3.491,501,4.278,530,7.662,540,4.099,541,4.278,564,4.278,574,5.119,583,4.492,665,8.24,762,4.099,1244,3.491,1292,3.172,1506,5.664,1507,5.664,1508,5.119,1509,4.76,1510,9.117,1511,5.664,1512,5.664,1513,5.664,1514,5.664,1515,5.664,1516,5.664,1517,5.119,1518,4.278,1519,5.119]],["keywords/136",[]],["title/137",[22,88.379,477,568.496,1520,956.442]],["content/137",[22,0.756,28,3.473,57,3.703,61,3.195,75,5.181,89,5.902,123,3.389,134,3.754,138,6.741,139,4.358,146,3.021,147,5.029,148,6.618,149,6.091,244,4.358,297,2.863,369,5.434,383,4.358,387,7.151,406,7.604,408,3.43,409,6.091,412,5.181,414,5.902,472,4.432,495,5.576,497,5.576,500,5.576,529,8.177,576,8.177,577,8.508,580,8.177,628,6.833,705,5.434,727,5.181,1115,6.833,1509,7.604,1519,8.177,1521,6.548,1522,9.048,1523,9.048,1524,9.048,1525,9.048,1526,9.048,1527,9.048,1528,9.048,1529,8.177,1530,9.048,1531,9.048,1532,9.048,1533,9.048,1534,9.048]],["keywords/137",[]],["title/138",[22,102.407,201,340.142]],["content/138",[18,7.548,22,1.626,26,10.293,27,6.708,28,4.982,29,6.469,77,4.982,115,7.795,201,5.399,1137,9.802,1162,10.907,1324,13.928,1535,11.73]],["keywords/138",[]],["title/139",[22,88.379,38,670.336,97,478.386]],["content/139",[0,5.831,180,8.53,205,4.983,250,5.909,312,7.093,357,14.171,1439,10.17,1536,12.171,1537,13.548,1538,13.467,1539,13.467,1540,13.467,1541,13.467,1542,8.088,1543,13.467,1544,10.68]],["keywords/139",[]],["title/140",[22,102.407,154,972.476]],["content/140",[0,5.254,1,10.041,106,7.811,154,12.208,270,12.208,271,10.727,300,8.815,482,8.44,1545,15.394,1546,15.394]],["keywords/140",[]],["title/141",[22,102.407,1547,1108.262]],["content/141",[84,7.822,88,10.538,97,8.109,183,7.013,250,7.872,376,12.236,701,8.338,1290,12.236,1547,16.212,1548,14.561,1549,14.561]],["keywords/141",[]],["title/142",[96,590.633,155,776.741]],["content/142",[]],["keywords/142",[]],["title/143",[96,590.633,98,488.916]],["content/143",[0,2.784,9,4.898,13,5.026,22,1.203,24,4.138,51,5.166,52,5.166,61,2.88,67,8.75,77,6.115,92,5.491,96,3.928,98,6.784,110,5.016,111,7.371,186,3.803,191,7.086,195,3.579,197,5.683,205,7.01,261,6.159,291,6.468,312,4.296,324,6.468,325,5.903,440,7.261,459,3.43,482,4.472,541,9.131,561,5.491,839,4.138,882,8.75,1222,6.159,1550,6.854,1551,8.156,1552,8.156,1553,7.371,1554,6.159,1555,8.156,1556,8.156,1557,10.16,1558,8.156,1559,6.468,1560,7.371,1561,6.854,1562,8.156,1563,8.156,1564,8.156,1565,8.156]],["keywords/143",[]],["title/144",[98,488.916,300,702.177]],["content/144",[]],["keywords/144",[]],["title/145",[97,420.748,98,371.103,185,282.496,186,433.988]],["content/145",[22,1.046,77,4.808,84,6.729,96,6.033,98,6.501,168,9.036,186,5.84,191,7.341,331,6.355,1130,9.933,1542,7.522,1566,12.931,1567,12.315,1568,12.315,1569,12.525,1570,11.32,1571,9.46,1572,11.32,1573,11.32,1574,10.526]],["keywords/145",[]],["title/146",[34,310.737,98,371.103,203,291.414,273,626.623]],["content/146",[22,1.672,24,3.741,25,3.612,29,3.675,41,4.964,46,4.964,51,4.67,67,5.336,77,4.302,85,3.883,96,3.551,97,3.333,98,5.406,106,3.741,108,3.883,110,3.059,186,3.438,201,3.109,202,5.336,246,4.67,273,4.964,280,3.961,285,4.129,291,5.847,297,2.333,415,3.81,441,4.67,482,4.042,484,6.569,515,4.809,617,6.663,635,4.544,722,5.568,857,4.321,863,5.568,873,4.129,952,5.568,1034,5.847,1332,6.196,1438,6.663,1537,5.847,1575,7.373,1576,5.336,1577,11.208,1578,11.208,1579,11.208,1580,6.663,1581,7.373,1582,4.67,1583,6.424,1584,7.373,1585,7.373,1586,7.373,1587,6.196,1588,5.568,1589,7.373,1590,5.568,1591,4.321,1592,4.67,1593,6.663,1594,7.373,1595,4.321,1596,6.663,1597,7.373]],["keywords/146",[]],["title/147",[214,361.201,1568,799.251,1572,956.442]],["content/147",[20,6.68,37,6.797,52,8.638,98,6.866,110,5.658,168,6.797,180,8.638,331,6.919,453,8.19,509,10.299,702,7.809,1425,7.993,1567,10.299,1598,12.325,1599,13.637,1600,13.637,1601,13.637,1602,13.637]],["keywords/147",[]],["title/148",[219,546.922,284,518.392,1583,501.415]],["content/148",[25,6.766,98,6.921,105,7.275,207,9.997,336,10.432,773,9.299,873,7.736,1576,9.997,1583,8.995,1603,13.813,1604,12.483,1605,13.813,1606,13.813,1607,13.813,1608,11.608]],["keywords/148",[]],["title/149",[108,645.898,237,571.765]],["content/149",[0,2.893,20,4.152,22,0.708,96,8.327,98,4.96,123,3.175,168,7.344,189,6.402,191,9.514,215,4.854,221,4.648,238,6.402,285,4.748,431,5.707,640,7.661,649,7.661,650,7.661,701,4.854,704,4.554,722,6.402,765,8.079,932,4.968,1043,5.907,1394,6.402,1429,7.124,1567,6.402,1570,13.317,1571,12.26,1591,7.29,1609,12.439,1610,8.477,1611,8.477,1612,11.242,1613,7.124,1614,8.477,1615,8.477,1616,8.477,1617,8.477,1618,8.477,1619,8.477,1620,7.124,1621,7.124,1622,8.477,1623,8.477,1624,7.661,1625,12.439]],["keywords/149",[]],["title/150",[1147,799.251,1455,956.442,1542,635.576]],["content/150",[0,2.702,9,4.754,16,5.163,19,4.433,29,3.945,39,4.754,67,8.558,77,5.432,84,4.252,86,5.729,87,4.533,96,3.813,97,3.578,98,4.714,105,4.169,108,4.169,136,5.978,186,3.691,237,3.691,242,5.602,266,5.729,284,3.877,285,4.433,300,4.533,312,4.169,325,8.558,336,5.978,477,4.252,510,5.516,511,6.277,515,5.163,541,10.689,701,4.533,755,4.878,768,5.014,1135,7.154,1264,6.277,1542,4.754,1571,5.978,1583,7.439,1590,5.978,1591,4.639,1613,6.652,1626,7.154,1627,7.916,1628,5.978,1629,7.916,1630,6.277,1631,7.916,1632,7.916,1633,7.916,1634,7.916,1635,7.916,1636,7.916,1637,7.916,1638,7.154,1639,7.916,1640,6.652,1641,7.916,1642,7.916,1643,7.916,1644,7.916,1645,7.154,1646,7.916,1647,5.978]],["keywords/150",[]],["title/151",[284,518.392,1583,690.13]],["content/151",[]],["keywords/151",[]],["title/152",[752,887.528,1583,581.006]],["content/152",[22,1.011,96,5.829,105,6.375,124,4.533,139,5.829,197,8.433,201,3.357,204,8.759,205,4.478,289,8.759,311,7.666,337,10.938,524,6.141,712,8.759,722,9.14,755,7.459,793,8.433,1133,8.759,1576,8.759,1583,5.734,1590,9.14,1648,10.938,1649,8.759,1650,10.938,1651,10.938,1652,12.103,1653,10.938,1654,10.938,1655,10.938]],["keywords/152",[]],["title/153",[29,611.181,1583,581.006]],["content/153",[77,5.105,105,7.005,124,6.348,201,3.689,281,12.02,312,7.005,515,8.675,967,9.268,1580,12.02,1583,6.302,1591,7.795,1592,8.424,1595,7.795,1656,10.045,1657,13.3,1658,13.3,1659,13.3,1660,13.3,1661,13.3,1662,12.02]],["keywords/153",[]],["title/154",[97,478.386,1542,635.576,1583,501.415]],["content/154",[21,5.954,22,1.563,57,3.497,64,4.785,75,9.931,77,3.28,82,5.008,112,6.86,124,3.2,134,3.545,157,4.048,185,2.593,186,5.834,203,2.675,208,2.822,214,5.052,219,4.416,221,4.685,297,2.703,313,7.722,349,4.185,385,4.416,513,6.453,515,5.573,524,4.335,537,11.308,540,9.056,564,6.453,613,6.184,1014,5.752,1108,6.776,1280,7.722,1450,6.453,1508,11.308,1509,12.44,1554,11.18,1583,4.048,1591,5.008,1592,5.412,1595,5.008,1656,6.453,1663,7.722,1664,7.722,1665,8.545,1666,8.545]],["keywords/154",[]],["title/155",[201,340.142,484,718.685]],["content/155",[]],["keywords/155",[]],["title/156",[105,645.898,1583,581.006]],["content/156",[21,6.581,22,1.72,28,3.625,36,4.627,37,4.707,57,5.506,75,5.408,82,5.536,139,4.549,146,3.153,147,2.837,157,4.475,179,6.161,185,2.867,201,3.731,203,2.957,208,5.173,212,5.983,214,3.224,216,6.581,219,4.881,295,7.937,297,4.256,331,4.792,382,6.161,396,5.29,491,7.883,524,4.792,682,4.792,946,8.536,967,6.581,1014,6.359,1167,6.836,1172,8.536,1588,7.133,1667,6.161,1668,8.536,1669,9.445]],["keywords/156",[]],["title/157",[201,258.179,889,841.206,1450,702.954,1583,441.002]],["content/157",[57,4.592,61,3.961,108,5.909,124,4.202,125,5.798,134,4.654,201,3.112,205,4.151,242,5.315,244,5.404,297,3.55,377,8.883,381,6.914,382,9.887,391,4.246,401,6.914,405,5.315,436,6.575,464,6.283,491,6.575,501,8.473,727,6.424,765,6.151,967,7.817,1292,6.283,1583,5.315,1670,11.219,1671,11.219,1672,11.219,1673,11.219,1674,11.219,1675,11.219,1676,11.219]],["keywords/157",[]],["title/158",[1244,755.726,1435,1030.533]],["content/158",[]],["keywords/158",[]],["title/159",[22,69.372,98,331.199,205,307.382,323,658.769,922,578.83]],["content/159",[98,6.452,124,4.637,157,5.866,231,6.934,280,6.651,285,6.934,349,6.065,385,6.399,612,6.399,1560,11.19,1582,7.843,1608,10.405,1677,11.19,1678,12.381,1679,12.381,1680,12.381,1681,12.381,1682,12.381,1683,9.819,1684,11.19,1685,12.381,1686,12.381,1687,11.19,1688,8.961,1689,12.381,1690,12.381]],["keywords/159",[]],["title/160",[22,77.73,284,455.934,773,626.623,1583,441.002]],["content/160",[9,7.795,20,6.358,77,4.982,105,6.836,201,4.628,205,4.803,231,7.269,280,6.972,289,9.394,957,6.052,1114,6.972,1582,8.221,1583,8.738,1591,7.607,1628,9.802,1664,11.73,1691,11.73,1692,12.979,1693,12.979,1694,12.979]],["keywords/160",[]],["title/161",[22,77.73,97,420.748,297,294.49,1099,702.954]],["content/161",[0,4.539,29,6.629,96,8.163,97,6.012,98,5.303,107,8.675,231,7.449,246,8.424,280,7.145,357,10.045,376,11.177,701,7.616,932,7.795,1060,9.626,1064,12.02,1582,8.424,1695,13.3,1696,12.02,1697,13.3,1698,13.3]],["keywords/161",[]],["title/162",[22,77.73,98,371.103,1566,738.141,1567,702.954]],["content/162",[34,4.231,98,6.551,126,8.266,168,6.316,186,5.909,231,7.098,280,6.808,349,6.208,357,12.409,1554,9.571,1568,9.571,1573,11.454,1574,10.65,1576,9.172,1582,8.027,1598,11.454,1649,9.172,1691,11.454,1699,12.673,1700,12.673,1701,12.673,1702,12.673,1703,9.172]],["keywords/162",[]],["title/163",[28,406.193,183,509.723,702,605.987]],["content/163",[31,5.486,34,2.808,88,6.087,90,7.601,96,5.957,98,4.931,106,4.267,107,11.24,108,4.43,115,5.051,123,4.632,155,5.328,183,4.051,272,4.518,297,2.661,300,4.816,334,6.352,412,4.816,430,6.352,504,5.662,510,5.861,628,6.352,688,3.861,702,10.666,766,5.662,768,5.328,1175,6.087,1222,6.352,1233,7.068,1429,7.068,1430,7.068,1439,6.352,1442,6.67,1443,7.601,1450,6.352,1462,6.087,1467,13.257,1529,7.601,1591,4.929,1613,7.068,1630,6.67,1704,8.411,1705,8.411,1706,8.411,1707,8.411,1708,8.411,1709,8.411,1710,8.411,1711,8.411,1712,7.601,1713,7.601,1714,8.411,1715,8.411]],["keywords/163",[]],["title/164",[992,887.528,1362,825.556]],["content/164",[]],["keywords/164",[]],["title/165",[98,488.916,1566,972.476]],["content/165",[96,7.31,98,7.894,168,7.564,482,8.321,504,10.218,1567,11.462,1716,15.177,1717,15.177,1718,15.177]],["keywords/165",[]],["title/166",[98,488.916,1542,736.464]],["content/166",[9,10.42,13,7.061,22,1.663,96,8.357,98,6.918,108,6.035,219,7.945,242,5.429,325,8.293,377,6.715,857,6.715,1571,14.004,1719,10.355,1720,11.458,1721,11.458,1722,11.458,1723,11.458,1724,11.458,1725,11.458]],["keywords/166",[]],["title/167",[64,686.771,1361,672.328]],["content/167",[0,4.839,21,12.294,22,1.604,23,7.94,24,7.193,25,6.944,134,5.881,157,6.717,201,3.932,208,4.682,216,9.878,967,9.878,1161,9.878]],["keywords/167",[]],["title/168",[1726,1457.646]],["content/168",[]],["keywords/168",[]],["title/169",[0,255.996,98,299.043,157,355.37,173,402.912,186,349.717,1727,566.456]],["content/169",[22,1.169,98,6.977,110,5.805,186,6.524,205,5.178,214,4.776,290,12.646,341,10.567,1432,12.646,1474,11.759,1728,13.992,1729,13.992,1730,11.759,1731,11.759,1732,11.759,1733,13.992]],["keywords/169",[]],["title/170",[98,421.94,482,580.226,1727,799.251]],["content/170",[0,3.713,9,10.147,77,4.175,98,4.337,109,7.873,124,4.074,201,4.117,311,6.891,312,5.73,331,5.519,415,5.622,472,5.329,482,8.138,484,6.375,618,8.216,882,7.873,918,8.216,1222,8.216,1361,5.964,1583,8.005,1626,9.831,1734,9.142,1735,10.878,1736,10.878,1737,10.878,1738,10.878,1739,10.878,1740,10.878,1741,9.831,1742,10.878,1743,10.878,1744,10.878,1745,10.878]],["keywords/170",[]],["title/171",[98,331.199,205,307.382,284,406.908,768,526.176,1727,627.366]],["content/171",[22,1.473,96,5.701,97,7.972,98,7.031,110,4.91,205,4.38,221,6.489,285,6.629,297,5.58,632,7.968,1100,9.947,1473,9.947,1583,5.608,1587,9.947,1588,8.939,1688,8.567,1746,11.836,1747,11.836,1748,11.836,1749,11.836,1750,11.836,1751,11.836,1752,10.697]],["keywords/171",[]],["title/172",[96,448.309,207,673.662,300,532.975,1727,702.954]],["content/172",[9,9.793,34,4.182,77,4.808,98,6.501,205,6.709,220,9.46,261,9.46,285,7.015,300,7.172,312,6.597,324,9.933,1550,10.526,1557,10.526,1559,9.933,1561,10.526,1687,11.32,1753,12.525,1754,12.525,1755,12.525,1756,11.32,1757,12.525,1758,10.526]],["keywords/172",[]],["title/173",[96,448.309,1591,545.505,1727,702.954,1759,930.776]],["content/173",[0,4.04,22,0.988,57,4.845,75,6.778,82,6.937,93,7.497,96,5.701,97,5.35,98,4.719,134,4.91,157,5.608,191,6.937,208,5.188,212,7.497,297,3.745,331,6.005,349,5.798,491,6.937,920,8.567,1592,7.497,1703,8.567,1731,9.947,1760,11.836,1761,11.836,1762,10.697,1763,9.947,1764,11.836,1765,11.836,1766,11.836,1767,11.836]],["keywords/173",[]],["title/174",[936,1224.978]],["content/174",[9,5.434,46,6.091,77,5.006,96,6.282,97,4.09,98,7.37,105,4.766,107,5.902,108,4.766,168,4.509,201,2.51,204,6.548,261,6.833,284,4.432,289,6.548,311,5.731,324,7.175,325,6.548,430,6.833,477,4.86,482,4.961,504,6.091,515,5.902,635,5.576,637,7.175,1070,8.177,1130,7.175,1147,6.833,1537,7.175,1550,7.604,1557,7.604,1566,7.175,1568,6.833,1571,6.833,1583,4.287,1590,6.833,1595,5.303,1596,8.177,1638,8.177,1654,8.177,1719,8.177,1763,7.604,1768,9.048,1769,9.048,1770,9.048,1771,9.048,1772,9.048,1773,9.048,1774,9.048,1775,9.048,1776,9.048,1777,9.048]],["keywords/174",[]],["title/175",[84,568.496,363,635.576,374,546.922]],["content/175",[]],["keywords/175",[]],["title/176",[22,69.372,157,393.582,374,429.302,1475,627.366,1503,658.769]],["content/176",[20,7.024,22,1.67,23,3.721,34,2.218,64,3.721,84,3.569,168,6.332,182,6.332,184,6.825,185,2.016,186,7.245,195,2.915,203,2.08,205,2.458,206,6.005,214,2.268,243,4.095,267,8.612,269,4.095,272,5.557,286,3.569,297,2.102,299,4.473,363,3.99,374,8.031,474,4.334,1082,5.346,1099,5.018,1294,5.583,1361,3.643,1425,8.404,1503,5.269,1504,9.083,1588,5.018,1778,4.63,1779,6.005,1780,5.583,1781,9.35,1782,10.378,1783,8.204,1784,8.204,1785,7.703,1786,7.813,1787,6.005,1788,4.809,1789,5.583,1790,5.269,1791,5.269,1792,6.005,1793,6.644]],["keywords/176",[]],["title/177",[22,88.379,374,546.922,765,580.226]],["content/177",[]],["keywords/177",[]],["title/178",[185,252.12,272,446.236,762,601.224,1794,698.098,1795,830.691]],["content/178",[20,5.735,34,5.207,84,6.289,110,4.857,195,5.137,245,9.839,268,8.842,349,5.735,363,7.031,374,9.064,1009,8.842,1475,8.842,1537,9.284,1668,10.581,1796,11.707,1797,8.158,1798,11.707,1799,11.707,1800,11.707,1801,11.707,1802,11.707,1803,11.707,1804,11.707,1805,11.707,1806,11.707,1807,11.707,1808,11.707,1809,11.707,1810,11.707]],["keywords/178",[]],["title/179",[203,291.414,215,532.975,1361,510.318,1811,930.776]],["content/179",[0,1.469,18,1.762,20,2.108,22,1.352,31,2.807,34,3.701,41,2.898,84,8.077,106,2.184,115,4.365,126,2.807,161,5.261,168,7.803,173,2.312,176,3.617,178,6.574,182,6.174,215,2.464,272,3.905,273,6.352,286,5.068,349,2.108,363,5.666,379,3.115,387,3.985,464,4.071,480,5.764,501,3.25,536,8.527,668,3.115,702,6.348,734,3.89,765,2.36,839,3.688,985,9.333,1082,2.224,1151,3.89,1361,2.36,1362,2.898,1442,5.764,1462,3.115,1479,3.89,1498,3.413,1501,13.159,1612,3.89,1730,3.617,1785,5.068,1788,5.261,1797,2.999,1812,13.589,1813,11.196,1814,4.304,1815,9.435,1816,6.569,1817,4.304,1818,6.108,1819,4.304,1820,4.304,1821,7.269,1822,3.89,1823,4.304,1824,5.489,1825,4.304,1826,3.25,1827,6.569,1828,4.304,1829,4.304,1830,4.304,1831,2.652,1832,6.569,1833,4.304,1834,4.304,1835,3.89,1836,4.304,1837,4.304,1838,9.435,1839,4.304,1840,3.89,1841,4.304,1842,4.304,1843,4.304,1844,4.304,1845,4.304,1846,4.304,1847,4.304,1848,4.304,1849,4.304,1850,4.304,1851,4.304,1852,4.304,1853,4.304,1854,4.304,1855,4.304,1856,4.304,1857,4.304,1858,4.304]],["keywords/179",[]],["title/180",[214,361.201,301,712.464,1788,765.946]],["content/180",[22,1.492,34,4.408,84,7.093,168,8.408,182,7.696,184,4.944,185,2.793,186,6.156,195,4.038,203,2.881,214,3.141,267,9.273,269,5.671,272,7.093,363,5.527,374,8.718,386,6.581,654,6.95,702,5.27,1082,4.756,1425,5.393,1498,7.298,1501,9.971,1785,9.595,1813,8.317,1816,13.955,1824,6.95,1859,9.203,1860,9.203,1861,6.95,1862,7.298]],["keywords/180",[]],["title/181",[22,88.379,440,635.576,1325,839.258]],["content/181",[20,9.081,22,1.726,24,5.154,96,4.893,97,4.592,191,5.954,194,11.743,195,4.458,197,7.079,201,2.818,260,9.181,261,14.002,272,5.457,641,7.672,1009,7.672,1588,7.672,1863,10.159,1864,9.181,1865,9.181,1866,10.159,1867,10.159,1868,10.159,1869,10.159,1870,10.159,1871,10.159]],["keywords/181",[]],["title/182",[22,102.407,34,409.386]],["content/182",[19,5.384,23,5.384,34,3.21,51,6.09,84,5.164,110,5.651,182,7.884,184,5.164,201,2.667,215,5.505,267,5.774,272,5.164,286,7.317,300,5.505,350,6.472,374,8.893,641,7.261,858,5.774,914,6.958,932,5.635,1128,8.689,1149,8.689,1207,5.925,1361,9.959,1464,6.472,1475,7.261,1504,6.09,1779,8.689,1785,9.244,1788,6.958,1794,8.079,1872,9.614,1873,9.614,1874,9.614,1875,8.689,1876,8.689,1877,9.614,1878,9.614]],["keywords/182",[]],["title/183",[22,77.73,108,490.257,184,500.001,374,481.026]],["content/183",[]],["keywords/183",[]],["title/184",[34,277.324,64,465.228,184,446.236,1361,455.444,1778,578.83]],["content/184",[20,6.35,22,1.656,84,4.82,106,4.552,168,7.587,182,4.472,184,4.82,185,3.935,186,7.097,203,2.809,205,3.32,214,3.062,243,5.529,267,9.142,269,5.529,299,6.04,363,5.388,374,7.867,474,5.852,653,7.115,682,4.552,1133,6.494,1361,4.919,1480,6.494,1503,7.115,1504,5.683,1595,8.921,1703,6.494,1780,7.54,1781,8.109,1782,6.494,1785,8.177,1786,9.791,1787,8.109,1788,6.494,1879,8.972,1880,8.972]],["keywords/184",[]],["title/185",[23,382.886,184,367.256,189,516.327,286,367.256,914,494.811,1785,367.256,1875,617.874]],["content/185",[20,6.275,22,1.618,23,4.942,106,4.478,168,6.385,182,4.398,184,8.888,185,2.678,186,7.715,195,3.873,203,2.763,205,4.74,214,3.012,267,7.693,272,4.741,286,4.741,374,7.793,639,7.416,1082,4.561,1294,7.416,1425,7.508,1480,6.387,1504,8.114,1595,8.838,1782,6.387,1783,6.999,1784,6.999,1785,9.438,1786,6.665,1790,6.999,1791,6.999,1792,7.976,1861,6.665,1881,8.825,1882,8.825]],["keywords/185",[]],["title/186",[184,402.912,286,402.912,1060,542.852,1394,566.456,1785,402.912,1883,750.04]],["content/186",[20,4.976,22,1.361,93,6.435,168,8.123,184,8.755,185,3.083,186,8.22,203,3.181,267,8.504,269,6.261,286,5.457,374,7.318,474,6.626,922,7.079,1105,6.626,1425,8.298,1480,7.353,1504,8.969,1595,8.298,1783,8.056,1784,8.056,1785,9.959,1786,10.694,1790,8.056,1791,8.056,1884,10.159,1885,10.159]],["keywords/186",[]],["title/187",[22,88.379,77,406.193,1292,592.691]],["content/187",[22,1.011,64,6.778,168,6.032,182,7.946,186,5.643,272,6.501,273,8.148,374,6.255,762,8.759,843,5.235,1361,6.635,1425,9.344,1501,9.14,1504,10.099,1780,10.171,1782,8.759,1785,8.565,1794,10.171,1886,12.103,1887,12.103,1888,12.103,1889,12.103,1890,12.103,1891,12.103,1892,10.171]],["keywords/187",[]],["title/188",[22,88.379,191,620.233,914,765.946]],["content/188",[]],["keywords/188",[]],["title/189",[27,546.922,185,321.195,1425,620.233]],["content/189",[23,8.622,27,7.956,64,8.622,184,8.27,440,9.245,890,10.364,1361,8.44,1425,9.022,1785,8.27,1893,15.394]],["keywords/189",[]],["title/190",[203,331.334,358,799.251,1785,568.496]],["content/190",[19,8.046,22,1.2,64,8.046,93,11.268,184,7.717,186,6.698,208,5.875,215,8.226,1361,7.877,1785,10.381,1894,14.366]],["keywords/190",[]],["title/191",[214,361.201,685,712.464,1895,765.946]],["content/191",[20,7.65,22,1.304,64,8.747,186,7.282,215,8.943,267,9.38,1361,8.563,1785,8.39,1896,13.125]],["keywords/191",[]],["title/192",[219,481.026,843,402.592,1425,545.505,1504,589.571]],["content/192",[20,7.763,84,8.513,182,7.899,374,8.19,1425,9.288,1504,10.039,1789,13.319,1897,15.848]],["keywords/192",[]],["title/193",[237,493.439,1590,799.251,1741,956.442]],["content/193",[64,9.145,205,6.042,243,10.064,1361,8.953,1898,16.329,1899,16.329]],["keywords/193",[]],["title/194",[22,102.407,1900,1226.268]],["content/194",[18,3.125,20,6.784,22,1.382,23,4.276,24,3.874,93,4.836,110,3.167,160,6.054,168,8.245,184,6.182,185,2.317,186,3.56,195,3.35,203,2.39,208,2.521,214,2.606,215,4.372,267,8.318,269,7.092,272,4.101,423,5.766,440,4.585,474,4.98,491,4.474,1105,7.506,1244,4.705,1353,6.416,1425,8.117,1480,5.526,1504,4.836,1554,5.766,1621,6.416,1683,6.054,1782,5.526,1783,6.054,1784,6.054,1785,10.21,1786,10.46,1790,6.054,1791,6.054,1861,5.766,1876,6.9,1901,7.635,1902,7.635,1903,7.635,1904,7.635,1905,7.635,1906,7.635,1907,11.508,1908,11.508,1909,7.635,1910,7.635]],["keywords/194",[]],["title/195",[22,88.379,51,670.336,440,635.576]],["content/195",[34,4.281,37,6.392,38,8.123,51,10.488,110,5.32,115,9.944,246,8.123,272,8.894,374,6.628,381,7.903,440,9.944,1785,6.889,1864,11.59,1865,11.59,1911,12.824,1912,12.824,1913,12.824,1914,12.824,1915,12.824,1916,12.824]],["keywords/195",[]],["title/196",[22,102.407,309,972.476]],["content/196",[18,3.673,19,5.025,20,7.456,31,5.852,34,2.995,84,4.82,110,3.722,136,6.776,168,4.472,173,4.82,182,4.472,186,4.183,191,5.258,194,9.642,195,3.937,201,2.489,205,3.32,215,5.138,221,7.108,231,5.025,249,11.017,250,5.689,267,5.388,272,4.82,273,6.04,286,4.82,374,6.7,386,4.472,428,6.776,440,5.388,482,4.919,687,8.109,702,5.138,793,6.252,839,4.552,1360,6.776,1442,7.115,1446,8.109,1501,6.776,1688,6.494,1713,8.109,1785,4.82,1788,6.494,1812,8.109,1818,7.54,1862,7.115,1917,8.972,1918,7.54,1919,8.972,1920,8.972,1921,8.972]],["keywords/196",[]],["title/197",[447,718.685,448,658.735]],["content/197",[]],["keywords/197",[]],["title/198",[448,658.735,1656,926.119]],["content/198",[36,6.065,56,4.372,297,5.12,408,4.694,438,6.399,472,9.365,551,5.597,686,6.934,920,11.713,1470,8.335,1561,10.405,1922,11.19,1923,12.381,1924,12.381,1925,12.381,1926,12.381,1927,12.381,1928,12.381,1929,12.381,1930,12.381,1931,12.381,1932,12.381]],["keywords/198",[]],["title/199",[1177,981.326]],["content/199",[]],["keywords/199",[]],["title/200",[124,459.259,1933,1226.268]],["content/200",[0,3.603,22,1.57,34,3.525,75,6.046,76,7.973,112,7.973,122,5.789,124,5.446,157,6.89,224,8.291,231,8.144,448,5.672,1378,12.221,1380,10.525,1382,9.542,1934,10.558,1935,10.558,1936,10.558,1937,10.558,1938,14.542,1939,10.558,1940,10.558,1941,10.558,1942,10.558,1943,10.558,1944,10.558,1945,10.558,1946,9.542]],["keywords/200",[]],["title/201",[688,562.878,1177,825.556]],["content/201",[0,4.596,18,5.512,22,1.648,85,8.998,112,7.383,841,11.143,1384,12.171,1385,12.171,1386,12.171,1390,12.171,1947,13.467,1948,13.467,1949,13.467,1950,15.439]],["keywords/201",[]],["title/202",[223,686.771,1177,825.556]],["content/202",[16,9.247,18,5.803,22,1.473,119,11.914,238,10.707,459,5.962,985,11.509,1177,9.544,1356,11.914,1394,10.707,1409,12.812,1951,19.21]],["keywords/202",[]],["title/203",[123,459.259,447,718.685]],["content/203",[]],["keywords/203",[]],["title/204",[391,408.301]],["content/204",[22,1.665,32,5.14,61,2.696,76,6.309,138,3.946,142,4.836,147,3.457,185,2.317,203,2.39,205,2.825,214,2.606,224,7.685,284,5.637,390,4.836,391,3.879,405,3.617,417,5.526,452,6.416,456,5.32,459,3.211,663,9.036,688,3.504,731,4.977,732,9.26,765,4.186,782,6.054,1105,7.506,1115,8.691,1952,7.635,1953,7.635,1954,7.635,1955,7.635,1956,11.508,1957,6.9,1958,7.635,1959,10.4,1960,11.508,1961,7.635,1962,11.508,1963,7.635,1964,6.416,1965,16.543,1966,7.635,1967,7.635,1968,7.635]],["keywords/204",[]],["title/205",[139,590.633,681,1108.262]],["content/205",[22,1.549,76,9.22,110,5.45,139,6.328,147,3.947,217,9.154,224,6.548,408,4.981,663,7.7,731,5.682,732,10.099,1969,13.138,1970,13.138,1971,13.138,1972,13.138,1973,13.138,1974,13.138,1975,13.138]],["keywords/205",[]],["title/206",[102,1030.533,685,825.556]],["content/206",[22,1.716,52,8.123,102,10.777,148,6.507,231,7.182,300,9.481,546,7.6,685,8.634,773,8.634,779,10.17,1831,7.903,1976,11.59,1977,9.685,1978,12.824,1979,12.824,1980,12.824,1981,12.824]],["keywords/206",[]],["title/207",[223,592.691,839,536.951,1175,765.946]],["content/207",[22,1.786,61,3.456,142,10.987,185,2.971,203,3.065,231,7.726,336,7.393,438,5.059,620,7.763,713,10.941,718,11.594,774,7.085,775,12.554,778,7.763,779,7.763,1831,6.033,1977,7.393,1982,13.796,1983,9.789,1984,13.796,1985,13.796,1986,9.789,1987,9.789,1988,9.789]],["keywords/207",[]],["title/208",[373,718.685,688,562.878]],["content/208",[]],["keywords/208",[]],["title/209",[39,635.576,688,485.77,993,765.946]],["content/209",[22,1.529,32,10.133,34,3.707,56,3.92,71,10.893,112,6.087,180,7.033,185,3.37,203,3.476,223,6.218,224,8.51,312,5.848,373,6.507,701,8.618,732,9.039,1964,9.331,1989,11.103,1990,11.103,1991,11.103,1992,11.103,1993,11.103,1994,11.103,1995,11.103,1996,11.103,1997,11.103,1998,11.103,1999,11.103,2000,11.103]],["keywords/209",[]],["title/210",[29,527.456,147,317.926,2001,1058.283]],["content/210",[22,1.774,34,3.56,109,10.597,116,5.846,179,6.955,231,8.2,323,8.456,363,6.404,812,12.304,843,4.612,1226,13.232,1360,13.594,1450,8.053,1976,13.232,2002,10.663,2003,10.663,2004,10.663,2005,10.663,2006,10.663,2007,14.641,2008,10.663]],["keywords/210",[]],["title/211",[56,432.979,447,718.685]],["content/211",[]],["keywords/211",[]],["title/212",[61,373.666,438,546.922,668,765.946]],["content/212",[27,6.79,61,4.639,147,5.052,284,6.435,391,4.71,438,6.79,453,7.89,505,11.041,584,8.096,608,10.419,746,7.89,934,8.322,1105,8.569,1166,11.041,1328,11.041,2009,13.138,2010,13.138,2011,13.138,2012,13.138,2013,13.138]],["keywords/212",[]],["title/213",[297,387.981,2014,1108.262]],["content/213",[22,1.084,76,9.148,110,5.384,142,8.221,147,5.013,195,5.695,223,7.269,224,6.469,297,4.106,383,6.251,391,3.636,663,7.607,731,5.614,1316,10.293,1317,10.907,1318,11.73,2015,12.979,2016,12.979,2017,12.979,2018,11.73,2019,11.73]],["keywords/213",[]],["title/214",[249,887.528,2020,1226.268]],["content/214",[]],["keywords/214",[]],["title/215",[32,712.464,524,536.951,1826,799.251]],["content/215",[22,1.749,85,6.035,146,5.132,205,4.24,417,8.293,431,7.714,469,6.715,500,7.061,524,5.813,653,9.086,705,6.881,732,6.881,766,10.35,882,8.293,1430,12.92,1593,10.355,2021,11.458,2022,11.458,2023,11.458,2024,11.458,2025,11.458,2026,11.458,2027,11.458]],["keywords/215",[]],["title/216",[247,799.862,938,926.119]],["content/216",[22,1.795,29,5.262,147,4.369,247,10.85,297,4.601,323,8.373,472,7.123,546,4.846,551,4.773,606,9.542,668,7.641,716,8.873,874,9.542,1043,7.357,1153,9.542,2028,10.558,2029,10.558,2030,10.558,2031,10.558,2032,10.558,2033,16.635,2034,10.558]],["keywords/216",[]],["title/217",[201,340.142,448,658.735]],["content/217",[]],["keywords/217",[]],["title/218",[201,340.142,2035,1226.268]],["content/218",[22,1.497,108,6.447,112,8.807,124,4.584,157,7.611,224,6.101,233,11.062,408,4.64,418,3.956,742,7.543,1324,9.244,1378,13.499,1380,11.626,1977,9.244,2036,12.24,2037,12.24,2038,12.24,2039,12.24,2040,12.24,2041,12.24,2042,12.24,2043,12.24]],["keywords/218",[]],["title/219",[139,590.633,201,340.142]],["content/219",[22,1.663,56,5.758,124,4.691,142,7.934,223,7.015,224,6.243,226,11.32,297,3.963,584,7.719,688,5.749,967,11.362,1114,6.729,2044,12.525,2045,12.525,2046,12.525,2047,12.525,2048,12.525,2049,12.525,2050,12.525,2051,12.525]],["keywords/219",[]],["title/220",[1160,1108.262,1166,1030.533]],["content/220",[]],["keywords/220",[]],["title/221",[448,568.496,682,536.951,1922,956.442]],["content/221",[22,1.139,76,7.477,108,7.183,124,5.107,142,8.638,147,4.097,223,7.638,224,6.797,231,9.644,663,7.993,731,5.899,1316,10.815,1317,11.461,2019,12.325,2052,13.637,2053,13.637,2054,13.637,2055,13.637]],["keywords/221",[]],["title/222",[630,972.476,688,562.878]],["content/222",[22,1.59,112,8.807,293,8.241,300,7.009,391,4.499,484,7.174,577,7.984,584,7.543,688,5.619,1177,8.241,1362,8.241,1950,11.062,2056,12.24,2057,12.24,2058,12.24,2059,16.063,2060,12.24,2061,12.24,2062,12.24,2063,12.24,2064,12.24,2065,12.24]],["keywords/222",[]],["title/223",[201,404.321]],["content/223",[]],["keywords/223",[]],["title/224",[27,633.736,28,470.669]],["content/224",[16,9.057,18,6.572,19,5.533,20,4.839,22,1.16,26,7.834,27,9.483,28,3.792,29,4.924,51,8.795,77,6.162,84,5.307,93,6.257,138,5.105,201,2.74,205,3.656,208,3.262,215,5.657,267,5.933,272,5.307,331,5.012,442,13.492,491,5.79,715,7.461,1354,14.636,1361,5.416,1517,8.928,1758,8.302,1782,7.15,1861,7.461,2066,8.928,2067,9.879,2068,9.879]],["keywords/224",[]],["title/225",[18,501.934,201,340.142]],["content/225",[18,7.771,22,1.585,77,5.302,115,8.295,201,5.524,1137,10.432,1162,11.608,1324,14.337,1535,12.483]],["keywords/225",[]],["title/226",[201,340.142,286,658.735]],["content/226",[22,1.216,36,7.132,37,7.257,157,6.899,183,7.013,201,4.039,216,10.146,524,7.388,697,10.997,762,10.538,763,13.159,1292,8.155,2069,14.561,2070,14.561]],["keywords/226",[]],["title/227",[1,799.862,201,340.142]],["content/227",[2071,17.386,2072,15.712]],["keywords/227",[]],["title/228",[183,590.633,369,736.464]],["content/228",[]],["keywords/228",[]],["title/229",[158,1317.373]],["content/229",[0,5.18,61,5.359,161,10.985,173,8.153,396,8.5,985,9.9,1183,12.036,2073,13.717,2074,15.177,2075,15.177,2076,13.717]],["keywords/229",[]],["title/230",[369,736.464,1475,926.119]],["content/230",[0,6.119,22,1.694,161,8.859,165,12.738,166,11.062,168,6.101,170,11.062,171,11.062,172,9.707,173,8.629,176,10.287,177,11.062,178,8.529,286,6.575,1840,11.062,2077,12.24,2078,16.063,2079,12.24]],["keywords/230",[]],["title/231",[183,590.633,697,926.119]],["content/231",[16,11.055,17,12.02,37,6.629,178,9.268,183,6.406,246,8.424,272,7.145,373,7.795,541,10.045,950,12.02,1818,11.177,1831,8.197,1832,12.02,1835,12.02,2080,13.3,2081,13.3,2082,13.3,2083,13.3,2084,13.3,2085,13.3]],["keywords/231",[]],["title/232",[18,501.934,28,470.669]],["content/232",[22,1.304,36,7.65,37,7.784,157,7.4,216,10.883,218,14.115,957,7.282,1491,11.795,2086,15.618]],["keywords/232",[]],["title/233",[204,887.528,205,453.758]],["content/233",[0,4.539,21,11.81,22,1.558,26,10.547,27,6.873,28,5.105,29,6.629,31,8.675,106,6.748,107,8.675,123,4.981,208,5.597,212,8.424,440,7.988,482,7.292,1491,10.045,1498,10.547]],["keywords/233",[]],["title/234",[408,401.208,418,342.017,1418,956.442]],["content/234",[]],["keywords/234",[]],["title/235",[444,1155.968]],["content/235",[41,6.839,77,3.899,97,4.592,183,4.893,293,6.839,307,7.353,408,6.684,418,5.267,474,6.626,475,7.079,484,5.954,490,5.689,493,8.537,497,6.261,498,6.82,583,8.056,848,5.874,989,7.079,1319,8.056,1377,7.606,1412,7.672,1419,7.672,1420,9.181,1470,6.839,1583,4.813,1630,8.056,1667,6.626,1712,9.181,2087,8.537,2088,8.537,2089,10.159,2090,7.672,2091,10.159,2092,8.537,2093,10.159,2094,10.159,2095,8.056,2096,10.159]],["keywords/235",[]],["title/236",[486,956.442,843,457.743,1592,670.336]],["content/236",[34,5.37,82,9.427,418,5.198,445,9.66,843,6.957,1082,8.313,2097,13.518]],["keywords/236",[]],["title/237",[146,250.399,185,227.642,701,429.483,843,324.418,848,311.162,1377,402.912]],["content/237",[22,1.632,65,11.028,146,6.525,490,5.11,652,10.644,704,4.902,731,3.947,742,5.623,839,6.658,841,5.952,848,6.971,921,5.78,1114,7.049,1207,5.623,1211,6.358,1268,7.668,1542,5.48,1667,5.952,2098,9.125,2099,9.125,2100,6.604,2101,11.028,2102,10.407,2103,6.891,2104,11.86,2105,9.125,2106,9.125,2107,5.952,2108,6.143,2109,8.246,2110,6.604,2111,8.246]],["keywords/237",[]],["title/238",[203,214.046,497,421.33,652,433.046,843,295.708,921,433.046,1377,568.195]],["content/238",[22,1.629,146,6.36,185,3.959,384,5.411,418,2.924,490,5.067,497,9.425,605,7.175,652,9.688,704,4.86,731,3.913,742,5.576,819,6.091,839,6.618,841,5.902,964,6.091,1211,6.305,1377,4.86,1542,5.434,1688,6.548,2100,6.548,2107,5.902,2108,6.091,2110,6.548,2112,7.604,2113,9.048,2114,9.048,2115,7.833,2116,13.043,2117,10.344,2118,11.788,2119,9.048,2120,9.048,2121,8.177,2122,9.048]],["keywords/238",[]],["title/239",[146,250.399,214,255.996,415,586.804,843,324.418,1229,594.81]],["content/239",[13,2.974,22,1.367,24,4.058,28,1.852,34,3.42,74,6.722,86,3.492,87,2.763,92,3.249,98,1.924,106,4.058,112,2.646,115,2.898,126,3.147,146,1.611,153,8.636,179,3.147,201,1.338,240,5.385,242,7.146,250,5.229,283,3.827,284,2.364,301,3.249,307,3.492,354,3.644,377,2.828,384,2.002,387,2.646,408,1.829,415,4.134,418,4.269,445,2.898,459,3.364,482,2.646,490,2.702,491,2.828,496,3.492,510,5.573,686,4.479,704,5.503,742,7.344,819,3.249,843,5.154,848,2.002,857,4.688,858,2.898,870,4.361,873,2.702,882,3.492,989,3.362,1114,6.401,1150,7.138,1229,8.124,1230,4.361,1231,3.362,1232,4.361,1236,8.609,1275,5.385,1292,4.479,1375,4.361,1377,2.592,1412,3.644,1518,3.644,1553,7.229,1592,3.056,1826,3.644,2088,4.055,2090,3.644,2123,4.055,2124,4.361,2125,4.361,2126,4.825,2127,4.825,2128,4.825,2129,6.896,2130,4.825,2131,4.825,2132,4.825,2133,4.825,2134,4.825,2135,4.825,2136,4.055,2137,4.825,2138,4.825,2139,4.055,2140,4.361,2141,4.361,2142,4.825,2143,4.825,2144,4.825,2145,4.825,2146,4.055,2147,4.361,2148,4.825,2149,7.998,2150,4.825,2151,4.825,2152,4.825,2153,4.825,2154,4.825,2155,4.055]],["keywords/239",[]],["title/240",[22,77.73,40,607.121,848,386.142,2115,558.999]],["content/240",[]],["keywords/240",[]],["title/241",[280,658.735,1332,1030.533]],["content/241",[22,1.569,25,3.587,40,7.273,82,4.292,146,2.445,185,2.222,237,3.414,276,4.638,278,9.408,384,6.262,431,4.93,546,5.118,605,5.807,652,4.638,686,4.101,704,3.934,731,3.167,775,5.3,839,3.715,843,6.529,848,7.381,857,7.913,921,7.062,999,5.807,1038,5.102,1114,7.253,1377,5.989,1650,6.618,2110,10.924,2115,6.696,2121,10.077,2125,6.618,2156,4.513,2157,7.323,2158,7.323,2159,7.323,2160,11.15,2161,8.421,2162,5.3,2163,7.323,2164,13.502,2165,7.323,2166,5.53,2167,7.323,2168,5.3,2169,7.323,2170,7.323,2171,7.323]],["keywords/241",[]],["title/242",[556,972.476,1419,926.119]],["content/242",[22,1.662,40,6.385,146,3.268,154,7.763,185,4.849,384,4.061,431,6.59,546,4.493,605,7.763,731,6.91,775,7.085,839,4.967,843,4.234,848,7.587,890,6.59,920,7.085,921,6.201,1114,7.411,1211,6.821,2102,7.763,2115,8.285,2117,7.763,2118,8.847,2168,7.085,2172,8.847,2173,9.789,2174,9.789,2175,9.789,2176,9.789,2177,15.976,2178,9.789]],["keywords/242",[]],["title/243",[1582,589.571,2115,558.999,2179,841.206,2180,626.623]],["content/243",[0,1.188,14,5.607,22,1.696,38,2.205,106,1.767,146,4.295,153,1.994,157,1.65,185,1.839,208,2.001,224,1.735,237,1.623,250,2.659,262,2.63,269,3.735,276,2.205,284,1.706,285,1.95,412,1.994,418,1.125,426,2.52,483,1.95,546,1.598,551,1.574,563,6.479,612,1.799,635,2.146,668,2.52,682,1.767,686,5.39,712,4.386,731,4.162,742,3.735,780,2.426,799,3.147,820,2.52,839,1.767,841,2.271,843,2.621,848,5.655,890,2.344,934,2.205,937,3.147,964,2.344,1082,1.799,1124,2.52,1161,2.426,1211,2.426,1259,2.761,1278,2.761,1377,3.255,1592,2.205,1663,3.147,1667,2.271,1677,3.147,1730,2.926,1896,2.926,2100,2.52,2112,2.926,2115,8.583,2124,3.147,2129,5.417,2161,2.63,2162,2.52,2166,2.63,2168,2.52,2179,3.147,2180,7.342,2181,3.482,2182,2.63,2183,3.482,2184,8.697,2185,9.623,2186,9.856,2187,6.06,2188,6.06,2189,8.046,2190,9.623,2191,3.482,2192,3.147,2193,3.482,2194,3.482,2195,3.482,2196,3.482,2197,3.482,2198,3.147,2199,3.482,2200,3.482,2201,3.482,2202,2.63,2203,6.06,2204,2.926,2205,3.482,2206,3.147,2207,3.147,2208,3.147,2209,2.344,2210,3.482,2211,5.477,2212,4.806,2213,2.926,2214,6.06,2215,3.147,2216,3.147,2217,6.06,2218,6.06,2219,3.482,2220,3.482,2221,8.046,2222,9.623,2223,3.482,2224,3.147,2225,3.482,2226,3.147,2227,5.477,2228,3.482,2229,3.147,2230,6.06,2231,6.06,2232,2.761,2233,3.482,2234,3.482,2235,3.482,2236,2.426,2237,3.482,2238,2.52,2239,2.63,2240,3.147,2241,3.482,2242,3.482,2243,3.482,2244,3.482,2245,3.482,2246,3.482,2247,3.482]],["keywords/243",[]],["title/244",[848,386.142,914,673.662,1207,573.62,2248,648.57]],["content/244",[]],["keywords/244",[]],["title/245",[284,600.679,1518,926.119]],["content/245",[14,4.688,22,1.753,214,3.565,237,6.731,276,6.616,384,5.312,385,5.398,418,2.174,447,3.943,456,4.688,464,5.85,472,5.117,498,3.24,592,8.896,612,5.398,686,7.171,755,4.146,801,6.437,841,4.388,843,2.91,999,5.335,1082,6.618,1275,4.529,1319,5.335,1358,5.653,1377,5.611,1491,5.081,1595,8.46,1604,9.44,1628,5.081,1667,6.813,2100,7.56,2162,4.869,2202,5.081,2248,7.279,2249,6.08,2250,6.727,2251,6.727,2252,5.081,2253,4.869,2254,6.727,2255,6.727,2256,6.727,2257,6.727,2258,6.727,2259,7.279,2260,6.727,2261,6.727,2262,6.727,2263,6.727,2264,6.727]],["keywords/245",[]],["title/246",[283,839.258,1275,712.464,2265,956.442]],["content/246",[18,1.177,22,0.805,34,1.71,47,5.656,85,1.515,92,1.936,105,1.515,108,1.515,110,2.872,115,1.727,124,3.609,146,4.353,153,1.647,173,1.545,185,1.555,203,2.168,214,0.982,219,1.487,237,1.341,240,1.936,244,4.047,250,5.081,275,2.172,279,4.629,285,1.611,286,1.545,301,4.661,305,2.082,311,1.822,331,1.459,348,4.386,377,1.686,384,2.872,386,1.434,387,1.577,412,3.965,418,3.994,431,1.936,447,1.686,459,1.21,483,3.878,551,1.3,561,1.936,563,1.936,612,3.578,694,2.004,745,2.172,752,3.707,765,3.796,766,1.936,768,1.822,780,2.004,786,2.172,793,5.854,801,4.267,805,2.004,819,7.191,839,4.263,841,8.506,848,2.872,890,3.448,921,6.766,932,1.686,964,1.936,985,1.876,989,2.004,997,3.341,1013,2.082,1038,3.569,1082,1.487,1114,1.545,1133,2.082,1147,2.172,1161,2.004,1175,3.707,1211,2.004,1217,2.281,1231,5.854,1275,8.779,1284,2.417,1292,2.869,1358,2.417,1380,2.082,1419,2.172,1439,2.172,1464,1.936,1542,1.727,1620,2.417,1621,2.417,1630,2.281,1648,6.258,1649,2.082,1653,4.629,1655,4.629,1656,3.868,1667,3.341,1684,2.6,1688,3.707,1734,2.417,1778,2.004,1789,2.417,1826,2.172,1861,2.172,1892,2.417,1896,2.417,2092,2.417,2103,2.172,2136,2.417,2166,3.868,2213,2.417,2238,2.082,2239,2.172,2253,3.707,2266,5.122,2267,2.876,2268,2.6,2269,4.304,2270,5.122,2271,2.6,2272,2.876,2273,2.417,2274,2.417,2275,2.876,2276,2.876,2277,2.876,2278,2.6,2279,2.876,2280,2.876,2281,2.876,2282,5.122,2283,2.6,2284,2.876,2285,2.417,2286,2.417,2287,2.6,2288,2.876,2289,2.876,2290,2.876,2291,2.876,2292,2.6,2293,6.081,2294,5.122,2295,2.876,2296,2.876,2297,2.876,2298,2.876,2299,2.876,2300,2.876,2301,2.876,2302,2.876,2303,2.876,2304,2.876,2305,2.876,2306,2.876,2307,2.876,2308,2.876,2309,2.876,2310,2.876,2311,2.6,2312,2.876,2313,2.281,2314,2.876,2315,5.122,2316,2.876,2317,2.876,2318,2.876,2319,2.876,2320,4.062,2321,2.6,2322,2.876,2323,2.876,2324,2.876,2325,2.6,2326,2.876,2327,2.876,2328,2.417,2329,2.281,2330,2.876,2331,2.417,2332,2.6,2333,2.876,2334,2.876,2335,2.876,2336,2.876,2337,2.876,2338,2.417,2339,2.876,2340,2.876,2341,2.876,2342,2.876,2343,2.876,2344,2.876,2345,2.876,2346,2.876]],["keywords/246",[]],["title/247",[848,386.142,914,673.662,1207,573.62,2248,648.57]],["content/247",[14,9.701,22,0.526,25,3.083,34,3.31,84,3.381,146,4.648,185,1.91,203,1.971,208,2.078,276,9.593,278,4.386,283,7.864,289,4.555,298,4.386,318,4.991,331,3.193,384,2.611,418,4.895,431,4.237,440,3.78,494,4.555,498,4.776,499,4.991,551,4.482,564,7.489,686,3.525,731,2.722,755,3.879,786,4.753,801,3.879,843,6.022,848,6.283,920,4.555,921,3.987,932,3.689,999,4.991,1082,3.253,1278,4.991,1592,3.987,1645,5.688,1732,8.333,1778,4.386,2100,4.555,2101,5.289,2103,9.266,2162,4.555,2202,4.753,2238,4.555,2248,9.701,2249,5.688,2252,10.514,2293,4.555,2328,5.289,2329,4.991,2347,8.962,2348,6.294,2349,6.294,2350,6.294,2351,6.294,2352,6.294,2353,6.294,2354,6.294,2355,6.294,2356,6.294,2357,6.294,2358,6.294,2359,6.294,2360,6.294,2361,6.294,2362,6.294,2363,6.294,2364,5.688,2365,6.294,2366,4.555,2367,4.753]],["keywords/247",[]],["title/248",[250,408.438,1439,702.954,1778,648.57,2107,607.121]],["content/248",[14,5.77,22,1.214,34,2.765,106,4.202,153,4.742,182,4.127,276,5.246,331,4.202,349,4.057,384,5.073,418,2.676,447,7.166,498,8.631,612,4.28,682,6.204,686,8.141,731,5.289,755,5.104,786,6.254,848,6.03,857,8.519,964,5.575,1082,4.28,1114,4.449,1150,5.77,1207,5.104,1276,5.575,1628,6.254,1778,5.77,1822,7.484,2100,5.994,2103,6.254,2129,5.575,2161,6.254,2182,6.254,2259,5.77,2293,10.521,2368,5.77,2369,6.959,2370,8.52,2371,8.281,2372,11.051,2373,8.281,2374,5.575,2375,8.281,2376,5.994,2377,6.959,2378,8.281,2379,8.281]],["keywords/248",[]],["title/249",[484,718.685,498,590.633]],["content/249",[]],["keywords/249",[]],["title/250",[704,783.028]],["content/250",[34,4.231,250,5.561,301,8.532,415,6.549,418,4.096,472,6.208,551,5.729,843,7.107,848,5.258,964,8.532,1038,8.831,1150,8.831,1168,11.454,1255,7.81,1292,7.098,1464,8.532,1667,8.266,1862,10.05,2123,10.65,2370,8.831,2380,13.03,2381,12.673,2382,11.454]],["keywords/250",[]],["title/251",[285,592.691,1583,501.415,2095,839.258]],["content/251",[105,6.836,300,7.432,408,4.92,418,5.393,422,11.73,445,7.795,498,8.037,551,5.867,772,10.293,843,5.614,1008,10.293,1255,7.999,1470,8.738,1576,9.394,2367,9.802,2370,9.044,2383,10.907,2384,11.73,2385,12.979,2386,12.979,2387,10.293]],["keywords/251",[]],["title/252",[498,590.633,2259,854.47]],["content/252",[0,2.023,14,6.588,22,1.648,24,3.007,34,1.979,72,2.456,76,1.861,77,1.303,85,1.788,87,3.394,110,2.459,157,1.608,189,2.563,203,1.063,204,2.456,214,3.227,237,1.582,248,3.067,250,2.601,251,2.563,266,2.456,276,3.754,282,2.852,284,1.662,292,2.15,298,2.365,318,2.691,349,1.662,350,2.285,363,2.038,384,4.452,415,1.754,428,2.563,431,2.285,445,2.038,447,1.989,464,7.538,472,2.903,483,3.319,494,2.456,498,5.681,564,2.563,612,4.077,635,2.092,680,2.852,686,4.418,731,2.563,772,6.256,780,2.365,801,2.092,820,5.71,843,1.468,848,5.584,857,6.29,890,2.285,919,3.067,952,2.563,989,2.365,997,2.214,1003,2.285,1259,2.691,1276,2.285,1292,3.319,1306,5.356,1353,2.852,1440,2.852,1462,2.456,1491,4.476,1518,2.563,1595,6.29,1628,4.476,1683,2.691,1758,2.852,1824,4.476,1831,2.092,1862,2.691,1977,2.563,2088,2.852,2090,2.563,2103,2.563,2107,2.214,2129,2.285,2146,2.852,2162,2.456,2180,2.285,2202,2.563,2227,5.356,2259,7.478,2285,2.852,2293,5.71,2347,3.067,2368,2.365,2369,2.852,2372,5.356,2374,3.99,2376,5.71,2384,3.067,2387,2.691,2388,5.927,2389,3.067,2390,5.927,2391,3.394,2392,12.692,2393,3.394,2394,3.394,2395,5.927,2396,2.852,2397,2.563,2398,5.927,2399,3.394,2400,5.927,2401,3.067,2402,3.394,2403,7.889,2404,3.394,2405,3.394,2406,3.394,2407,3.067,2408,3.067,2409,3.394,2410,3.394,2411,3.394,2412,3.394,2413,3.394,2414,3.067,2415,3.394,2416,3.394,2417,3.394,2418,3.394,2419,3.394,2420,2.691,2421,3.394,2422,3.067,2423,3.067,2424,3.394,2425,3.394,2426,5.927,2427,3.394,2428,3.067,2429,3.394,2430,3.394]],["keywords/252",[]],["title/253",[484,620.233,843,457.743,2397,799.251]],["content/253",[22,1.42,87,5.361,110,3.884,113,8.462,185,4.732,203,4.881,214,3.196,269,5.77,336,7.071,377,5.487,415,6.908,418,5.038,472,4.586,551,4.232,592,5.77,843,4.05,848,3.884,1006,7.868,1255,9.608,1470,6.303,1542,5.623,1591,5.487,1649,6.776,1824,7.071,2204,11.234,2370,6.524,2382,8.462,2387,7.425,2396,11.234,2397,7.071,2431,9.363,2432,9.363,2433,9.363,2434,9.363,2435,9.363,2436,7.868,2437,9.363,2438,13.367,2439,9.363,2440,8.462]],["keywords/253",[]],["title/254",[84,658.735,284,600.679]],["content/254",[]],["keywords/254",[]],["title/255",[75,605.987,77,406.193,477,568.496]],["content/255",[13,1.41,19,1.282,22,1.525,24,1.161,28,0.878,34,1.392,38,2.641,50,2.068,66,3.017,77,0.878,82,3.365,87,1.311,123,0.857,124,1.561,125,1.183,146,3.855,147,1.252,153,4.051,180,1.45,203,1.305,205,0.847,208,1.896,214,1.423,215,2.387,224,3.526,240,3.865,241,5.343,245,1.923,250,1.004,251,8.202,269,2.569,284,1.121,285,2.335,300,1.311,387,1.255,408,0.868,415,1.183,417,1.656,418,2.286,440,1.375,448,1.229,459,0.963,475,1.595,482,1.255,483,1.282,493,1.923,496,3.017,497,3.538,498,1.102,500,1.41,546,3.774,552,1.923,592,1.41,633,1.815,635,2.569,652,1.45,660,1.815,663,2.443,673,1.493,704,1.229,731,4.697,739,1.923,745,1.729,768,1.45,774,1.656,786,1.729,841,1.493,843,2.483,848,0.949,858,1.375,864,3.148,866,2.068,882,1.656,934,2.641,938,1.729,952,1.729,957,5.384,979,2.068,997,3.745,1003,1.541,1038,1.595,1043,1.595,1082,4.763,1268,1.923,1290,5.946,1319,1.815,1320,2.068,1321,2.068,1325,1.815,1377,1.229,1462,5.95,1518,1.729,1542,1.375,1554,1.729,1559,1.815,1568,4.336,1592,1.45,1608,1.923,1624,2.068,1647,1.729,1667,1.493,1731,3.503,1756,2.068,1762,6.394,1957,2.068,1977,1.729,2073,2.068,2076,2.068,2090,3.148,2101,1.923,2107,1.493,2166,6.209,2182,1.729,2212,1.815,2215,2.068,2216,2.068,2229,2.068,2232,4.553,2236,1.595,2238,1.656,2239,1.729,2252,5.343,2253,6.671,2265,3.768,2268,2.068,2292,3.768,2313,1.815,2320,7.309,2321,2.068,2325,5.189,2329,4.553,2331,3.503,2332,3.768,2364,2.068,2366,5.121,2368,2.905,2389,2.068,2436,1.923,2441,2.068,2442,2.289,2443,2.289,2444,2.289,2445,2.289,2446,2.289,2447,4.169,2448,2.289,2449,4.169,2450,2.289,2451,2.068,2452,1.923,2453,2.289,2454,2.289,2455,2.289,2456,5.741,2457,2.289,2458,2.289,2459,5.741,2460,4.169,2461,2.289,2462,4.169,2463,4.169,2464,2.289,2465,2.289,2466,1.815,2467,4.169,2468,5.741,2469,2.289,2470,2.289,2471,2.289,2472,7.075,2473,2.289,2474,5.741,2475,2.289,2476,2.289,2477,4.169,2478,4.169,2479,2.289,2480,1.923,2481,1.923,2482,4.169,2483,2.289,2484,2.289,2485,2.289,2486,2.289,2487,2.289,2488,4.169,2489,2.289,2490,2.289,2491,2.289,2492,2.289,2493,2.289,2494,2.289,2495,2.289,2496,2.289,2497,2.289,2498,2.289,2499,2.289,2500,2.289,2501,2.289,2502,2.289,2503,2.289,2504,2.289,2505,2.289,2506,2.289,2507,2.289,2508,2.289,2509,2.289,2510,2.289,2511,4.169,2512,2.289,2513,2.289,2514,2.289,2515,2.289,2516,2.289,2517,2.289,2518,2.289,2519,2.289,2520,2.289,2521,2.289,2522,2.289,2523,2.289,2524,2.289,2525,2.289,2526,2.289,2527,2.289,2528,2.289,2529,2.289,2530,2.289,2531,2.289,2532,2.289,2533,2.289,2534,2.289,2535,2.289]],["keywords/255",[]],["title/256",[309,972.476,957,571.765]],["content/256",[19,5.433,22,1.145,92,6.531,105,5.11,149,6.531,243,5.978,298,6.759,418,4.43,477,5.211,498,4.672,500,5.978,504,6.531,546,6.292,682,8.066,712,7.021,755,5.978,843,4.196,848,4.024,957,6.392,1082,5.013,1167,7.021,1257,8.767,1273,8.767,1274,8.767,1275,6.531,1276,6.531,1360,13.048,1377,5.211,1591,5.685,1918,8.152,2115,5.826,2180,6.531,2328,8.152,2536,9.701,2537,9.701,2538,9.701,2539,9.701,2540,7.326,2541,9.701,2542,9.701,2543,9.701,2544,9.701]],["keywords/256",[]],["title/257",[1244,652.2,1292,592.691,1435,889.361]],["content/257",[]],["keywords/257",[]],["title/258",[22,57.094,123,256.044,185,207.496,498,329.288,848,283.625,857,400.679,1436,542.171]],["content/258",[22,0.988,76,6.489,276,7.497,280,6.358,285,6.629,384,4.91,464,6.629,498,5.701,780,10.947,848,4.91,1105,7.72,1292,6.629,1582,7.497,2182,8.939,2248,8.247,2259,8.247,2374,7.968,2414,10.697,2545,14.199,2546,15.711,2547,15.711,2548,11.836,2549,11.836,2550,10.697,2551,11.836,2552,11.836,2553,11.836]],["keywords/258",[]],["title/259",[22,62.637,123,280.903,203,234.828,1436,594.81,2115,450.454,2554,677.863]],["content/259",[22,0.999,34,3.995,124,4.482,146,3.995,186,5.58,237,7.379,280,6.429,418,3.868,497,7.376,768,7.581,1211,8.339,1275,8.057,1292,6.703,1582,7.581,2108,8.057,2161,9.039,2206,10.816,2207,10.816,2208,10.816,2209,8.057,2211,10.816,2212,9.491,2240,10.816,2555,14.303,2556,11.968,2557,11.968,2558,11.968,2559,11.968]],["keywords/259",[]],["title/260",[22,82.672,40,409.681,123,235.227,214,214.37,848,260.566,1377,337.397,1436,498.092]],["content/260",[204,9.626,237,6.201,280,7.145,613,9.626,686,7.449,843,5.753,848,5.518,932,7.795,1114,7.145,1292,7.449,1377,7.145,1582,8.424,1752,12.02,2168,9.626,2180,8.954,2545,15.318,2555,15.318,2560,13.3,2561,13.3]],["keywords/260",[]],["title/261",[201,340.142,2156,755.726]],["content/261",[]],["keywords/261",[]],["title/262",[185,227.642,311,475.09,551,339.048,858,450.454,2156,462.236,2209,504.947]],["content/262",[22,1.242,146,4.201,149,5.798,203,2.697,208,4.156,214,2.94,219,6.504,237,4.016,311,5.456,312,4.537,348,7.972,384,5.221,418,4.067,483,4.824,500,5.308,504,5.798,520,6.002,546,3.953,612,4.451,673,5.618,683,7.238,686,4.824,793,6.002,820,6.234,839,4.37,843,7.075,848,5.221,890,5.798,934,5.456,957,8.113,1114,4.627,1150,6.002,1255,5.308,2107,8.209,2110,9.109,2115,5.173,2147,7.784,2209,5.798,2420,6.83,2540,6.505,2562,7.238,2563,8.613,2564,8.613,2565,8.613,2566,8.613,2567,7.784,2568,7.784]],["keywords/262",[]],["title/263",[203,234.828,551,339.048,1124,542.852,2156,462.236,2209,504.947,2569,677.863]],["content/263",[22,1.157,87,4.372,122,4.186,146,2.549,149,5.14,157,3.617,185,4.203,203,3.603,208,3.8,237,3.56,312,4.021,348,4.836,384,4.774,418,3.719,483,4.276,498,3.677,500,4.705,546,5.282,551,5.202,592,7.092,673,4.98,693,9.126,742,4.705,843,6.669,848,4.774,857,4.474,934,4.836,957,8.108,964,5.14,1255,4.705,1377,4.101,1559,6.054,1732,6.416,1946,6.9,2107,4.98,2110,8.329,2115,6.911,2161,5.766,2168,5.526,2209,5.14,2283,6.9,2370,5.32,2383,6.416,2420,6.054,2540,5.766,2554,6.9,2562,6.416,2569,6.9,2570,7.635,2571,7.635,2572,7.635,2573,7.635,2574,6.9,2575,6.9,2576,7.635,2577,7.635,2578,7.635,2579,7.635]],["keywords/263",[]],["title/264",[214,255.996,240,504.947,551,339.048,857,439.58,2156,462.236,2311,677.863]],["content/264",[22,0.971,41,5.214,52,4.906,146,2.585,149,5.214,153,4.435,208,3.841,219,4.002,237,5.424,241,5.849,249,5.605,251,5.849,266,5.605,312,4.079,348,4.906,384,3.213,418,3.759,483,4.337,500,4.773,510,5.396,546,3.555,612,4.002,660,6.142,673,5.052,780,8.105,843,7.2,848,5.795,934,4.906,957,8.455,1082,4.002,1231,5.396,1255,4.773,1826,5.849,2107,5.052,2110,8.419,2115,4.651,2168,5.605,2252,5.849,2253,5.605,2320,11.078,2366,8.419,2368,5.396,2374,7.831,2540,5.849,2562,6.508,2567,6.999,2568,6.999,2580,7.745,2581,7.745,2582,7.745,2583,6.508,2584,7.745,2585,7.745,2586,11.632,2587,7.745,2588,7.745]],["keywords/264",[]],["title/265",[219,481.026,498,448.309,1591,545.505,2156,573.62]],["content/265",[22,1.236,87,7.164,110,3.545,146,2.853,185,5.264,203,5.43,269,5.266,348,5.412,377,5.008,408,3.239,418,5.856,498,4.115,524,4.335,551,5.656,592,10.042,839,4.335,843,3.696,848,5.191,934,5.412,957,8.087,1255,9.123,1276,8.423,1282,7.181,1470,5.752,1489,6.776,1583,7.014,1591,7.333,2370,8.718,2383,7.181,2440,7.722,2589,7.722,2590,7.722,2591,12.512]],["keywords/265",[]],["title/266",[237,433.988,498,448.309,1008,738.141,2156,573.62]],["content/266",[87,7.56,108,4.847,110,3.818,146,3.072,185,4.007,203,2.881,377,5.393,408,5.005,418,5.452,498,4.432,524,4.669,551,7.626,592,11.008,839,4.669,843,5.711,848,3.818,932,5.393,934,5.829,957,6.156,1008,7.298,1124,6.661,1255,8.137,1276,8.889,1282,7.734,1470,6.195,1489,7.298,1583,6.256,2108,6.195,2293,6.661,2370,6.412,2374,6.195,2380,7.298,2387,7.298,2396,7.734,2397,6.95,2589,8.317,2590,8.317,2592,9.203,2593,9.203]],["keywords/266",[]],["title/267",[295,1030.533,957,571.765]],["content/267",[14,3.768,22,1.425,25,2.649,40,3.527,106,2.744,110,2.243,146,2.932,185,1.641,208,4.966,214,1.846,243,3.333,298,3.768,310,4.887,311,3.425,384,2.243,408,2.05,415,5.731,418,3.584,464,7.149,483,3.029,498,4.23,500,3.333,504,3.641,520,3.768,546,2.482,563,3.641,592,3.333,612,2.795,660,4.289,686,4.918,712,3.914,775,3.914,793,3.768,843,7.14,848,6.848,857,6.499,932,3.169,957,4.095,1038,3.768,1082,2.795,1124,3.914,1255,3.333,1276,3.641,1360,4.084,1377,4.718,1470,3.641,1583,6.048,1591,5.147,1649,3.914,1918,4.545,2092,4.545,2115,6.66,2123,4.545,2129,3.641,2180,7.465,2192,4.887,2226,4.887,2238,3.914,2252,4.084,2253,3.914,2293,3.914,2313,4.289,2329,4.289,2366,3.914,2376,3.914,2380,4.289,2452,4.545,2594,5.408,2595,5.408,2596,5.408,2597,5.408,2598,5.408,2599,5.408,2600,5.408,2601,5.408,2602,5.408,2603,5.408,2604,5.408,2605,5.408,2606,4.887,2607,5.408,2608,5.408,2609,5.408,2610,5.408,2611,5.408,2612,5.408,2613,5.408,2614,5.408,2615,5.408,2616,5.408]],["keywords/267",[]],["title/268",[632,825.556,2481,1030.533]],["content/268",[]],["keywords/268",[]],["title/269",[202,887.528,2617,1108.262]],["content/269",[23,5.198,34,3.099,110,3.851,115,5.575,123,4.975,146,4.435,173,8.334,250,4.073,285,5.198,408,3.519,418,4.293,447,7.786,464,5.198,524,4.71,551,7.013,652,5.879,825,7.8,848,7.026,864,7.01,1275,6.249,1380,6.718,1421,7.01,1464,6.249,1640,11.164,2095,7.361,2129,6.249,2209,8.944,2273,7.8,2274,7.8,2286,7.8,2367,7.01,2376,6.718,2618,8.389,2619,9.282,2620,9.282,2621,8.389,2622,9.282,2623,8.389,2624,8.389,2625,9.282,2626,9.282,2627,8.389,2628,8.389]],["keywords/269",[]],["title/270",[1152,1030.533,1207,755.726]],["content/270",[24,6.507,214,4.377,348,8.123,418,4.145,464,7.182,551,5.797,561,8.634,774,9.282,1133,9.282,1150,8.936,1377,6.889,1595,7.516,2180,8.634,2232,10.17,2239,9.685,2248,8.936,2259,8.936,2374,8.634,2480,10.777,2629,12.824,2630,12.824,2631,11.59,2632,11.59,2633,8.634]],["keywords/270",[]],["title/271",[632,825.556,2481,1030.533]],["content/271",[]],["keywords/271",[]],["title/272",[202,887.528,2617,1108.262]],["content/272",[0,1.166,13,3.673,22,1.312,23,1.913,34,1.99,38,2.163,40,2.228,51,3.775,52,2.163,92,2.299,98,2.376,110,3.939,115,2.051,123,2.969,124,1.279,125,1.765,146,1.99,157,1.618,173,6.841,185,1.037,195,1.499,201,0.947,203,1.069,214,1.166,215,1.956,240,2.299,250,5.588,251,2.579,275,2.579,276,2.163,280,1.835,284,3.883,285,3.338,301,2.299,305,4.313,338,3.087,348,2.163,349,1.673,364,5.386,384,1.417,387,1.873,408,1.295,412,1.956,415,1.765,417,2.472,418,2.562,423,2.579,447,4.646,460,2.579,464,1.913,472,1.673,483,1.913,498,2.87,511,2.709,524,1.733,551,4.293,561,5.337,570,2.87,584,2.105,630,2.709,632,2.299,652,2.163,683,2.87,692,2.709,731,2.578,742,3.673,766,2.299,774,2.472,793,4.153,797,5.386,825,2.87,848,4.911,857,2.002,858,2.051,864,2.579,873,4.44,947,2.87,952,2.579,955,2.709,997,2.228,1124,2.472,1161,2.38,1231,2.38,1292,1.913,1380,2.472,1421,2.579,1441,2.87,1464,2.299,1473,2.87,1520,7.165,1574,2.87,1620,2.87,1640,5.008,1647,5.987,1656,4.501,2087,2.87,2090,5.987,2095,2.709,2102,2.709,2104,3.087,2117,2.709,2129,4.012,2139,5.008,2162,2.472,2209,7.969,2224,3.087,2238,2.472,2269,2.87,2271,3.087,2273,2.87,2274,2.87,2286,2.87,2287,3.087,2338,2.87,2367,5.987,2374,2.299,2376,2.472,2377,2.87,2401,3.087,2407,3.087,2408,3.087,2428,3.087,2583,5.008,2618,5.386,2621,3.087,2623,3.087,2624,3.087,2627,3.087,2628,3.087,2633,2.299,2634,3.415,2635,7.928,2636,3.415,2637,3.415,2638,7.165,2639,3.415,2640,7.928,2641,3.415,2642,3.415,2643,3.415,2644,3.415,2645,3.415,2646,3.415,2647,3.415,2648,3.415,2649,2.709,2650,3.415,2651,3.415,2652,3.415,2653,3.415,2654,5.959,2655,3.415,2656,3.415,2657,3.415,2658,2.709,2659,3.415,2660,3.415,2661,3.415,2662,3.415,2663,3.415,2664,3.415,2665,3.415,2666,3.415,2667,3.415,2668,3.415,2669,3.415,2670,3.415,2671,3.415,2672,3.415,2673,3.415]],["keywords/272",[]],["title/273",[1152,1030.533,1207,755.726]],["content/273",[9,0.928,13,0.952,18,0.633,19,2.293,22,1.598,24,0.784,25,0.757,34,2.326,41,1.04,42,2.756,46,1.04,51,0.979,52,0.979,72,1.118,82,2.4,85,2.157,86,1.118,87,2.344,89,1.008,97,0.699,105,1.527,106,0.784,110,1.203,122,0.847,123,0.579,124,0.579,125,0.799,126,1.008,146,3.583,153,1.66,157,2.444,179,1.008,185,2.35,195,0.678,201,0.429,203,2.645,205,1.515,208,0.51,214,2.085,219,0.799,221,1.589,230,1.397,231,0.865,237,1.909,240,3.472,243,0.952,244,0.744,247,1.008,250,3.057,266,1.118,273,1.04,280,3.282,284,2.526,285,1.624,289,1.118,301,1.04,319,1.299,325,2.098,348,0.979,349,0.757,354,1.167,384,2.89,408,1.099,412,1.66,418,4.124,434,6.297,445,0.928,447,0.906,454,4.07,464,2.889,472,2.006,481,1.299,483,0.865,494,1.118,520,1.077,546,2.805,551,7.461,552,1.299,584,0.952,592,3.179,600,1.299,612,0.799,633,4.09,637,2.299,652,1.836,668,1.118,673,1.008,686,3.902,701,2.344,713,1.226,724,4.09,731,1.771,742,0.952,774,2.098,780,1.077,801,0.952,819,3.472,848,3.505,857,0.906,873,0.865,920,1.118,938,1.167,947,1.299,955,1.226,989,2.02,997,1.008,1014,1.04,1038,1.077,1062,1.397,1082,0.799,1083,1.299,1114,1.557,1133,2.098,1150,2.853,1229,3.247,1231,4.257,1259,1.226,1284,1.299,1287,1.397,1370,1.397,1377,0.83,1419,3.092,1421,1.167,1441,1.299,1462,1.118,1464,1.04,1536,1.397,1542,3.098,1582,2.593,1587,2.436,1592,3.87,1595,0.906,1667,1.008,1688,1.118,1696,1.397,1763,1.299,1824,1.167,2087,2.436,2102,2.299,2107,1.008,2109,4.661,2111,1.397,2112,1.299,2117,2.299,2129,1.04,2139,2.436,2155,1.299,2166,1.167,2172,2.62,2180,3.472,2182,1.167,2184,2.62,2186,2.62,2198,2.62,2202,2.189,2204,1.299,2212,1.226,2213,1.299,2232,4.845,2236,1.077,2239,1.167,2248,1.077,2259,4.257,2269,1.299,2278,1.397,2313,1.226,2320,9.224,2331,2.436,2338,1.299,2367,1.167,2368,2.02,2369,4.334,2374,1.952,2376,1.118,2380,1.226,2420,2.299,2422,2.62,2441,1.397,2451,1.397,2452,1.299,2466,2.299,2480,1.299,2540,1.167,2550,1.397,2574,1.397,2575,1.397,2583,1.299,2606,3.7,2631,1.397,2632,1.397,2633,1.952,2638,3.7,2658,1.226,2674,1.545,2675,2.899,2676,1.545,2677,1.545,2678,1.545,2679,1.545,2680,1.545,2681,1.545,2682,1.545,2683,1.545,2684,1.545,2685,1.545,2686,1.545,2687,1.545,2688,1.545,2689,1.545,2690,1.545,2691,1.545,2692,1.545,2693,1.545,2694,1.545,2695,1.545,2696,1.545,2697,1.545,2698,1.545,2699,4.094,2700,2.62,2701,1.545,2702,1.545,2703,1.545,2704,2.899,2705,1.545,2706,5.158,2707,1.545,2708,2.899,2709,1.545,2710,1.545,2711,1.545,2712,1.545,2713,1.545,2714,1.545,2715,6.11,2716,1.545,2717,1.545,2718,4.094,2719,1.545,2720,1.545,2721,2.899,2722,1.545,2723,2.899,2724,1.545,2725,1.545,2726,1.545,2727,1.545,2728,1.545,2729,1.545,2730,1.545,2731,1.545,2732,1.545,2733,1.545,2734,1.545,2735,1.545,2736,2.62,2737,1.545,2738,1.545,2739,1.545,2740,1.545,2741,1.545,2742,1.545,2743,1.545,2744,1.545,2745,2.899,2746,2.899,2747,1.545,2748,1.545,2749,1.545,2750,1.545,2751,1.545,2752,2.899,2753,1.545,2754,1.545,2755,1.545,2756,1.545,2757,1.545,2758,1.545,2759,1.545,2760,1.545,2761,1.545,2762,1.545,2763,1.545,2764,1.545,2765,1.545,2766,1.545,2767,1.545,2768,1.545,2769,1.545,2770,1.545,2771,1.545,2772,1.545,2773,1.545,2774,1.545,2775,1.545,2776,1.299,2777,1.545,2778,1.545,2779,1.545,2780,1.545]],["keywords/273",[]],["title/274",[701,834.667]],["content/274",[37,7.564,97,6.861,123,5.684,250,6.66,284,7.434,418,4.905,688,6.967,702,8.691,2781,15.177,2782,15.177,2783,15.177]],["keywords/274",[]],["title/275",[2784,1457.646]],["content/275",[24,7.811,87,8.815,97,6.959,484,9.022,498,7.415,592,9.487,1412,11.626,1421,11.626,1489,12.208,2436,12.937]],["keywords/275",[]],["title/276",[375,755.726,631,432.979]],["content/276",[]],["keywords/276",[]],["title/277",[444,1155.968]],["content/277",[28,3.502,34,3.046,57,5.371,61,3.222,116,5.003,124,3.417,134,5.444,147,3.942,185,3.983,203,4.108,214,4.479,297,4.152,381,8.087,383,4.395,384,5.444,385,6.782,386,4.548,412,5.225,445,5.48,477,4.902,524,4.63,546,4.188,612,4.716,613,6.604,631,6.744,704,7.049,727,5.225,1041,11.028,1236,7.668,1521,6.604,1797,6.358,2097,7.668,2423,13.888,2649,7.236,2700,8.246,2785,9.125,2786,8.246,2787,7.236]],["keywords/277",[]],["title/278",[134,344.62,185,252.12,631,293.306,1521,601.224,1797,578.83]],["content/278",[18,1.858,22,1.45,28,1.743,34,2.538,36,2.224,44,4.103,56,1.603,57,1.858,61,3.463,76,7.002,77,1.743,89,2.961,105,4.004,106,2.304,110,4.069,116,2.489,124,2.847,134,4.759,139,3.662,142,4.816,147,3.446,157,3.602,180,2.876,182,3.789,185,2.307,203,3.071,208,4.217,214,1.55,221,2.489,223,2.543,224,2.263,292,2.876,297,1.436,350,3.057,383,3.662,384,3.154,385,3.929,391,1.272,396,2.543,399,3.429,401,2.798,412,4.353,428,3.429,448,2.439,454,5.525,489,3.429,490,2.543,577,2.961,612,3.929,631,4.05,634,3.429,635,4.685,641,3.429,655,4.103,704,2.439,723,6.569,731,1.964,740,3.601,746,2.727,747,3.286,751,3.815,773,3.057,776,3.057,807,3.601,922,3.164,932,2.661,985,4.959,997,2.961,1105,2.961,1129,3.164,1244,2.798,1264,3.601,1316,3.601,1453,4.103,1521,3.286,1544,3.601,1595,5.748,1649,3.286,1703,3.286,1797,3.164,1831,2.798,1895,3.286,2018,8.864,2108,3.057,2141,4.103,2146,3.815,2466,3.601,2633,3.057,2658,3.601,2788,4.54,2789,4.54,2790,4.54,2791,4.54,2792,4.103,2793,4.54,2794,4.54,2795,4.54,2796,4.54,2797,4.54,2798,2.961,2799,4.54,2800,4.54,2801,4.54,2802,3.815,2803,4.103,2804,4.103,2805,4.54,2806,4.54,2807,4.54,2808,4.54,2809,4.54,2810,4.103,2811,4.54,2812,4.54,2813,4.54,2814,4.103,2815,4.103,2816,4.103]],["keywords/278",[]],["title/279",[203,234.828,244,361.258,381,462.236,436,439.58,631,264.83,727,429.483]],["content/279",[11,3.264,18,1.59,22,1.408,34,2.224,56,2.352,57,5.571,61,1.371,72,4.821,76,2.13,77,1.491,85,2.046,89,6.761,98,1.549,106,1.971,110,1.611,116,2.13,124,3.882,125,2.007,136,5.03,142,2.46,146,2.919,147,2.001,180,2.46,185,3.54,195,2.923,203,2.085,205,1.437,208,2.888,223,2.175,224,1.936,242,3.156,243,5.389,244,1.871,250,1.704,280,2.087,282,3.264,292,2.46,297,3.28,331,3.38,375,2.394,381,4.105,384,4.838,385,2.007,386,4.358,394,2.811,401,2.394,403,2.13,418,1.255,436,2.276,453,2.333,454,3.208,469,2.276,482,2.13,494,4.821,495,4.105,496,2.811,524,1.971,546,1.783,608,3.08,611,3.51,612,3.442,613,4.821,614,3.51,618,2.933,620,3.08,623,6.02,624,3.51,625,6.02,627,3.51,628,2.933,629,3.51,631,4.805,632,2.615,633,3.08,634,2.933,635,2.394,636,3.08,637,5.282,638,3.51,639,3.264,654,2.933,704,2.087,723,3.814,727,2.224,731,1.68,732,2.333,776,2.615,801,2.394,819,2.615,858,2.333,862,3.51,863,2.933,1001,2.707,1013,4.821,1027,3.264,1041,3.264,1060,2.811,1105,2.534,1129,2.707,1233,3.264,1244,2.394,1595,3.904,1683,3.08,1703,2.811,1797,2.707,1831,2.394,1892,3.264,1895,2.811,2014,3.51,2140,3.51,2368,2.707,2786,3.51,2792,3.51,2798,4.345,2817,3.884,2818,3.884,2819,3.884,2820,3.884,2821,3.884,2822,3.884,2823,3.884,2824,6.661,2825,3.884,2826,3.51,2827,3.884,2828,3.884,2829,6.661,2830,3.884,2831,3.884,2832,3.884,2833,3.884,2834,3.884,2835,3.884,2836,3.884,2837,3.884,2838,3.884,2839,3.884,2840,3.884,2841,3.884,2842,3.884,2843,3.884,2844,3.884,2845,3.884,2846,3.884]],["keywords/279",[]],["title/280",[214,283.523,381,511.939,385,429.302,631,293.306,727,475.665]],["content/280",[22,1.104,34,2.364,37,3.529,39,4.253,57,5.413,77,2.718,110,2.938,116,3.883,125,3.66,136,5.348,139,3.411,147,3.265,223,3.966,224,3.529,242,3.355,250,3.107,297,4.693,300,4.055,354,5.348,381,6.698,383,3.411,384,2.938,385,9.087,403,3.883,425,4.934,454,3.411,469,4.15,524,3.593,607,6.4,620,5.616,631,3.837,678,4.934,704,3.804,731,3.063,732,4.253,801,4.364,839,3.593,1001,4.934,1027,5.951,1175,5.125,1576,9.572,2066,6.4,2108,7.317,2285,5.951,2366,7.866,2377,5.951,2736,6.4,2798,4.619,2826,6.4,2847,7.082,2848,7.082,2849,13.447,2850,7.082,2851,7.082,2852,7.082,2853,7.082,2854,7.082,2855,7.082,2856,13.225,2857,7.082,2858,7.082,2859,7.082,2860,7.082,2861,7.082,2862,7.082,2863,7.082]],["keywords/280",[]],["title/281",[123,348.592,1001,648.57,2864,930.776,2865,782.207]],["content/281",[22,1.645,28,2.489,32,6.833,36,3.176,37,3.232,56,4.416,57,6.288,71,12.755,75,3.713,92,4.365,109,7.346,115,3.894,123,4.684,124,2.428,134,2.69,156,5.449,223,3.631,224,7.053,297,3.211,307,4.693,341,4.897,349,3.176,386,5.059,438,3.351,464,3.631,490,3.631,631,5.752,965,9.052,1001,8.715,1003,4.365,1017,5.86,1964,5.449,2649,5.142,2798,8.158,2865,5.449,2866,6.484,2867,5.86,2868,6.484,2869,6.484,2870,6.484,2871,5.86,2872,6.484,2873,6.484,2874,6.484,2875,6.484,2876,6.484,2877,6.484,2878,6.484,2879,6.484,2880,6.484,2881,10.15,2882,6.484,2883,6.484,2884,6.484,2885,6.484,2886,6.484,2887,6.484,2888,6.484,2889,6.484]],["keywords/281",[]],["title/282",[56,373.666,631,373.666,2156,652.2]],["content/282",[]],["keywords/282",[]],["title/283",[185,252.12,454,400.103,685,559.243,858,498.891,2156,511.939]],["content/283",[18,3.17,22,1.67,40,5.052,57,7.156,76,4.246,85,4.079,110,3.213,124,4.356,146,2.585,147,3.494,185,3.53,203,4.374,205,2.866,208,2.557,214,2.643,292,4.906,297,5.531,384,3.213,386,7.74,391,3.258,445,4.651,477,4.16,631,6.173,746,4.651,801,7.169,805,5.396,921,4.906,924,6.508,926,8.785,932,4.539,1013,8.419,1114,4.16,1119,6.142,1129,5.396,1831,4.773,2787,6.142,2890,6.999,2891,7.745,2892,6.508,2893,7.745,2894,7.745]],["keywords/283",[]],["title/284",[203,291.414,454,448.309,723,532.975,2156,573.62]],["content/284",[18,2.861,22,1.687,57,2.861,76,5.899,87,4.002,93,4.427,110,4.464,147,3.232,185,3.265,203,2.188,208,4.332,292,4.427,350,7.243,386,6.538,391,3.014,448,3.755,454,7.096,477,3.755,592,10.786,631,4.632,635,4.307,636,5.543,694,4.87,723,8.436,776,4.706,805,4.87,867,5.874,922,4.87,1105,4.559,1119,5.543,1143,11.855,1157,6.317,1544,5.543,1703,5.059,1831,4.307,1895,5.059,2368,10.265,2798,4.559,2895,6.989,2896,13.118,2897,13.118,2898,6.989,2899,6.989,2900,6.989,2901,6.989,2902,6.989,2903,6.989]],["keywords/284",[]],["title/285",[147,225.325,208,247.682,214,255.996,746,450.454,747,542.852,2156,462.236]],["content/285",[22,1.689,34,2.585,47,5.214,57,6.357,61,4.107,124,4.356,147,4.665,185,3.53,195,3.398,203,4.374,208,2.557,244,5.603,297,3.68,349,5.698,383,5.603,386,6.963,396,4.337,403,6.378,405,3.669,408,2.936,418,2.503,436,6.817,477,4.16,631,5.877,727,6.661,746,4.651,819,5.214,858,6.986,930,6.508,1013,8.419,1102,6.999,1119,6.142,1231,5.396,1827,6.999,2798,7.587,2904,6.999,2905,6.999,2906,7.745,2907,7.745,2908,7.745]],["keywords/285",[]],["title/286",[185,252.12,631,432.714,1043,578.83,1129,578.83]],["content/286",[42,8.432,134,5.196,341,9.46,631,4.423,776,8.432,1474,10.526,1647,9.46,2155,10.526,2867,11.32,2871,11.32,2909,12.525,2910,12.525,2911,12.525,2912,12.525,2913,12.525,2914,12.525,2915,12.525,2916,12.525,2917,12.525,2918,12.525,2919,12.525,2920,12.525,2921,12.525,2922,12.525,2923,12.525,2924,12.525]],["keywords/286",[]],["title/287",[61,264.83,139,361.258,185,227.642,396,420.06,2236,522.632,2633,504.947]],["content/287",[22,1.583,34,2.971,61,5.349,139,4.286,189,6.72,208,2.938,231,4.983,280,4.78,383,6.207,385,4.598,396,7.217,612,6.66,631,4.55,634,6.72,746,5.344,776,5.99,985,10.834,997,5.804,1129,6.2,1394,6.72,2108,5.99,2253,6.44,2466,7.056,2633,5.99,2658,7.056,2802,7.478,2803,8.042,2804,8.042,2890,8.042,2904,8.042,2905,8.042,2925,12.887,2926,11.647,2927,8.042,2928,8.898,2929,8.898,2930,8.898,2931,8.898,2932,8.898,2933,8.898,2934,8.898,2935,8.898,2936,8.898,2937,8.898]],["keywords/287",[]],["title/288",[185,227.642,203,234.828,208,247.682,631,264.83,1647,566.456,2236,522.632]],["content/288",[22,1.518,27,4.031,61,4.129,76,9.155,82,4.572,110,4.852,124,2.922,147,4.215,153,4.467,185,4.258,203,2.442,208,5.147,214,2.662,224,3.888,250,3.423,262,5.891,292,4.941,297,2.468,383,7.507,391,3.276,438,4.031,454,3.757,631,4.129,727,4.467,731,3.374,742,4.807,746,7.024,747,5.646,749,7.05,750,7.05,751,6.556,757,7.05,805,5.436,908,7.05,922,5.436,932,4.572,1244,4.807,1464,5.252,1734,6.556,1831,4.807,1959,7.05,2072,7.05,2892,6.556,2938,7.801,2939,7.801,2940,7.801,2941,11.695,2942,7.801,2943,7.801,2944,7.801,2945,7.801,2946,7.801]],["keywords/288",[]],["title/289",[28,287.882,134,311.162,214,255.996,839,380.555,1175,542.852,2236,522.632]],["content/289",[18,4.592,22,0.937,28,5.818,38,7.106,61,3.961,123,4.202,124,4.202,125,5.798,134,6.288,182,5.592,183,5.404,243,6.914,250,4.923,286,6.027,297,4.796,357,8.473,386,5.592,489,8.473,490,6.283,722,8.473,727,6.424,740,8.897,932,6.575,1264,8.897,1265,10.139,1362,7.553,1521,8.12,1778,7.817,2814,10.139,2815,10.139,2816,10.139,2947,11.219,2948,11.219]],["keywords/289",[]],["title/290",[776,981.326]],["content/290",[22,1.046,57,5.127,61,4.423,89,8.17,124,4.691,185,3.802,203,3.922,214,4.275,250,7.956,297,3.963,354,9.46,383,6.033,385,6.473,524,6.355,618,12.315,631,6.402,1651,14.737,2633,8.432,2787,9.933,2949,12.525]],["keywords/290",[]],["title/291",[448,658.735,672,1030.533]],["content/291",[]],["keywords/291",[]],["title/292",[185,321.195,631,373.666,1521,765.946]],["content/292",[22,1.352,61,4.372,76,6.788,93,7.843,185,3.758,203,3.876,208,4.089,292,10.251,383,5.963,384,5.136,385,6.399,386,6.171,391,4.533,403,6.788,438,6.399,673,8.076,929,10.405,2892,10.405,2950,12.381,2951,12.381,2952,12.381,2953,12.381,2954,10.405,2955,12.381]],["keywords/292",[]],["title/293",[203,260.078,244,400.103,436,486.847,631,293.306,727,475.665]],["content/293",[34,4.611,57,5.654,61,4.877,297,4.37,386,6.884,403,7.573,438,7.138,524,7.008,618,10.432,673,9.01,801,8.512,926,10.432,2798,9.01,2954,11.608,2956,13.813,2957,12.483,2958,13.813,2959,13.813]],["keywords/293",[]],["title/294",[214,317.682,385,481.026,631,328.645,727,532.975]],["content/294",[61,4.639,147,3.947,300,7.523,384,5.45,386,6.548,438,6.79,469,7.7,631,4.639,678,9.154,924,11.041,1114,7.057,1662,11.873,2397,9.922,2798,8.569,2849,11.041,2954,11.041,2957,11.873,2960,13.138,2961,13.138,2962,13.138,2963,13.138,2964,13.138]],["keywords/294",[]],["title/295",[25,518.392,631,373.666,957,493.439]],["content/295",[]],["keywords/295",[]],["title/296",[56,293.306,134,344.62,185,252.12,208,274.315,631,293.306]],["content/296",[22,1.627,61,5.507,147,4.686,292,7.416,297,3.704,298,8.158,391,3.279,438,6.05,631,4.134,682,7.913,723,8.931,755,7.215,957,5.459,970,10.581,1082,6.05,1167,8.473,1831,7.215,2236,8.158,2776,9.839,2965,11.707,2966,11.707,2967,11.707,2968,11.707,2969,11.707]],["keywords/296",[]],["title/297",[203,260.078,208,274.315,244,400.103,436,486.847,631,293.306]],["content/297",[22,1.558,56,4.696,57,5.444,124,4.981,244,6.406,436,7.795,631,4.696,682,6.748,723,9.705,801,8.197,858,7.988,1013,9.626,1082,6.873,1167,9.626,2776,11.177,2970,12.02,2971,13.3,2972,13.3]],["keywords/297",[]],["title/298",[208,307.365,214,317.682,385,481.026,631,328.645]],["content/298",[22,1.537,56,5.359,297,4.802,385,9.508,682,7.701,1114,8.153,1167,10.985,2970,13.717,2973,15.177]],["keywords/298",[]],["title/299",[25,600.679,1244,755.726]],["content/299",[27,5.679,34,3.669,42,7.398,61,3.88,203,3.441,208,4.936,297,3.477,349,5.383,386,5.477,391,3.078,417,7.954,438,5.679,454,5.293,490,8.371,612,5.679,621,9.932,631,5.277,634,8.3,636,8.715,746,6.6,867,9.235,890,7.398,1480,7.954,1544,8.715,1895,7.954,2108,7.398,2136,9.235,2802,9.235,2926,9.932,2974,10.989,2975,10.989,2976,10.989,2977,10.989,2978,10.989,2979,10.989]],["keywords/299",[]],["title/300",[97,554.322,293,825.556]],["content/300",[108,7.467,147,4.259,183,6.828,375,8.737,391,3.971,405,6.717,450,9.544,454,6.828,484,8.309,577,9.247,701,8.118,702,8.118,988,12.812,989,9.878,2980,14.177,2981,14.177]],["keywords/300",[]],["title/301",[936,1224.978]],["content/301",[22,1.6,40,5.125,42,5.29,56,4.152,57,4.813,71,5.687,106,3.987,123,2.943,126,5.125,134,3.26,139,3.785,147,3.533,156,6.603,185,3.569,203,3.682,208,2.595,214,4.014,250,3.448,297,2.486,311,8.926,381,7.247,383,3.785,384,3.26,385,4.061,445,4.719,454,3.785,477,4.221,478,7.102,524,3.987,631,5.523,776,7.917,921,4.977,965,5.687,1797,5.475,1895,5.687,2097,9.882,2366,5.687,2633,5.29,2649,6.231,2787,6.231,2798,5.125,2810,7.102,2849,6.603,2865,6.603,2927,10.628,2982,7.858,2983,7.858,2984,7.858,2985,7.858,2986,7.858,2987,7.858,2988,7.858,2989,7.858,2990,7.858]],["keywords/301",[]]],"invertedIndex":[["",{"_index":22,"title":{"75":{"position":[[0,2]]},"76":{"position":[[0,1]]},"78":{"position":[[22,2]]},"79":{"position":[[19,2]]},"80":{"position":[[20,2]]},"81":{"position":[[30,2]]},"82":{"position":[[0,2]]},"88":{"position":[[0,2]]},"89":{"position":[[0,1]]},"90":{"position":[[0,2]]},"91":{"position":[[0,2]]},"92":{"position":[[0,1]]},"93":{"position":[[0,2]]},"94":{"position":[[0,2]]},"95":{"position":[[0,2]]},"131":{"position":[[0,2]]},"132":{"position":[[0,2]]},"134":{"position":[[0,2]]},"135":{"position":[[0,3]]},"136":{"position":[[0,2]]},"137":{"position":[[0,2]]},"138":{"position":[[0,2]]},"139":{"position":[[0,2]]},"140":{"position":[[0,2]]},"141":{"position":[[0,2]]},"159":{"position":[[0,1]]},"160":{"position":[[0,1]]},"161":{"position":[[0,1]]},"162":{"position":[[0,1]]},"176":{"position":[[0,2]]},"177":{"position":[[0,2]]},"181":{"position":[[0,2]]},"182":{"position":[[0,2]]},"183":{"position":[[0,2]]},"187":{"position":[[0,2]]},"188":{"position":[[0,3]]},"194":{"position":[[0,2]]},"195":{"position":[[0,2]]},"196":{"position":[[0,2]]},"240":{"position":[[9,1]]},"258":{"position":[[0,1]]},"259":{"position":[[0,1]]},"260":{"position":[[0,1],[35,1]]}},"content":{"1":{"position":[[173,1],[218,1]]},"3":{"position":[[145,1],[147,1],[253,1],[255,1],[832,1],[834,1],[976,1],[978,1],[1041,1]]},"6":{"position":[[102,1],[149,1],[180,1],[209,1]]},"7":{"position":[[1,1]]},"8":{"position":[[99,1],[166,1]]},"14":{"position":[[43,1]]},"15":{"position":[[87,1],[126,1],[167,1]]},"16":{"position":[[19,1]]},"17":{"position":[[166,1],[193,1],[195,5],[201,1],[214,1],[248,1],[271,2]]},"18":{"position":[[39,1]]},"21":{"position":[[72,2],[109,2],[158,2],[189,2],[202,1],[204,1],[241,1],[243,1],[272,1],[274,1],[299,1],[301,1],[318,2],[373,2]]},"23":{"position":[[108,1]]},"25":{"position":[[1,1],[155,1]]},"28":{"position":[[181,2],[187,2]]},"31":{"position":[[288,1],[323,1],[536,1],[575,1],[603,1],[689,2],[896,1],[926,1],[965,1],[1088,1]]},"33":{"position":[[552,1]]},"37":{"position":[[441,1],[1114,1]]},"41":{"position":[[71,1],[98,1],[226,1],[228,1],[264,1],[431,1],[433,1],[492,1],[494,1],[503,1],[573,1],[575,1],[620,1]]},"42":{"position":[[390,1],[463,1]]},"43":{"position":[[1146,1],[1163,1]]},"47":{"position":[[70,1],[85,1]]},"51":{"position":[[32,1],[694,1],[795,1],[802,1],[858,1],[916,1],[993,1],[1076,1],[1143,1],[1249,1]]},"52":{"position":[[20,1],[638,1],[701,1]]},"54":{"position":[[1,1],[190,1],[192,3],[219,1]]},"55":{"position":[[1,1],[240,1],[421,1],[675,1],[705,1],[733,1],[759,1],[859,1],[880,1]]},"56":{"position":[[34,1],[190,1],[216,1],[239,6],[246,1],[297,6],[304,1],[353,5],[359,1],[377,2],[453,5],[483,6],[525,5],[531,1],[581,1],[583,1],[602,1],[675,1],[723,1],[762,1],[805,1],[1077,1],[1108,1],[1177,1],[1245,2],[1262,1],[1612,1]]},"57":{"position":[[46,1],[82,1],[152,1],[177,4],[201,6],[231,6],[238,1],[305,1],[372,1],[521,1]]},"59":{"position":[[20,1],[66,1],[105,1],[156,1],[179,1],[186,1],[208,1],[216,1],[243,1],[250,1],[323,1],[350,1],[374,1],[400,1],[407,1],[445,1]]},"60":{"position":[[25,1],[67,1],[99,1],[127,1],[134,1],[155,1],[162,1],[230,1],[265,1],[272,1],[345,1]]},"61":{"position":[[26,1],[71,1],[103,1],[138,1],[180,1],[228,1]]},"62":{"position":[[60,1],[101,1],[158,1],[160,1],[162,1],[212,1],[240,1],[273,1],[315,1]]},"66":{"position":[[88,1],[130,1],[161,1],[216,1],[246,1]]},"67":{"position":[[525,1],[738,1]]},"75":{"position":[[226,1],[296,1],[371,1]]},"77":{"position":[[60,2],[495,1],[554,1],[584,1],[603,1],[692,1],[785,1],[831,1],[884,1],[935,2],[1305,1],[1316,1],[1393,1],[1430,1],[1475,2],[1749,1],[1873,1],[1921,1]]},"78":{"position":[[173,1],[287,1],[337,1],[390,1],[469,1],[519,1],[574,1]]},"79":{"position":[[38,1],[426,1],[468,1]]},"80":{"position":[[292,1],[362,1],[389,1]]},"81":{"position":[[288,1],[327,1],[347,1]]},"83":{"position":[[73,1],[144,1],[375,1]]},"84":{"position":[[17,1],[187,1]]},"85":{"position":[[17,1],[54,1],[60,1],[153,1]]},"86":{"position":[[248,1],[250,1],[275,6],[305,6],[312,1],[388,1],[416,1]]},"89":{"position":[[53,1],[101,1],[156,1],[209,1],[259,1],[313,1],[368,1],[426,1],[474,1]]},"90":{"position":[[48,2],[124,1],[191,1],[266,2],[341,2],[395,1],[397,1],[442,1]]},"92":{"position":[[73,1]]},"94":{"position":[[1,1],[94,1],[219,1],[293,1],[394,1],[438,1],[464,1],[497,1],[534,1],[557,1],[613,1],[623,1],[639,1],[649,1]]},"99":{"position":[[47,1],[56,1],[64,1],[89,1],[124,1],[155,1],[167,1],[177,1],[188,1],[190,1],[192,1],[212,1],[242,1],[244,1],[246,1],[248,1]]},"100":{"position":[[53,1],[62,1],[82,1],[104,1],[116,1],[164,1],[172,1],[195,1],[197,1],[199,1],[201,1],[203,1],[205,1],[207,1]]},"101":{"position":[[176,1],[218,1]]},"103":{"position":[[1,1],[133,1]]},"104":{"position":[[1,1],[41,1]]},"106":{"position":[[17,1],[39,2],[113,1],[161,1],[163,2],[166,1],[192,1],[214,2],[293,1],[345,1],[347,2],[350,1],[371,1],[393,2],[469,1],[511,1],[513,2],[516,1]]},"107":{"position":[[161,1],[305,2]]},"113":{"position":[[23,1],[93,1],[95,1],[395,1],[487,1],[489,1],[491,1],[493,1]]},"114":{"position":[[22,1],[161,1],[212,1]]},"118":{"position":[[266,1],[311,3]]},"120":{"position":[[112,1],[157,1],[193,1]]},"121":{"position":[[27,1],[62,2],[127,2],[148,1]]},"122":{"position":[[31,1]]},"124":{"position":[[19,1],[48,1],[80,1]]},"125":{"position":[[40,1],[42,3],[56,3],[74,1]]},"126":{"position":[[95,1]]},"129":{"position":[[100,1],[135,2]]},"136":{"position":[[34,3],[50,1],[70,3],[89,1],[128,3],[139,1],[167,3],[186,1],[215,3],[236,1],[268,3],[280,1],[308,1],[310,3],[326,1],[343,1],[345,3],[357,1],[384,1],[386,3],[405,1],[427,1],[429,3],[444,1],[468,1],[470,3],[488,1],[509,3],[530,1],[555,3],[573,1],[597,1],[599,3],[612,1],[633,1],[635,3],[649,1],[671,1],[673,3],[691,1],[719,3],[735,1],[753,3],[772,1],[796,3],[809,1],[833,3],[851,1],[878,3],[903,1]]},"137":{"position":[[445,1]]},"138":{"position":[[1,1],[61,1],[91,1],[149,1]]},"143":{"position":[[79,2],[308,2],[502,2]]},"145":{"position":[[77,1]]},"146":{"position":[[42,1],[89,2],[101,1],[103,2],[118,1],[120,1],[132,1],[134,1],[199,2],[289,2],[390,2],[538,2],[628,2]]},"149":{"position":[[596,1]]},"152":{"position":[[37,1]]},"154":{"position":[[1,3],[125,1],[176,2],[426,1],[455,1],[489,1],[516,1]]},"156":{"position":[[29,1],[70,1],[115,1],[150,1],[173,1],[191,1],[216,1],[232,1],[262,1],[287,1],[323,1]]},"166":{"position":[[45,1],[109,2],[132,1],[189,2],[211,1],[266,2]]},"167":{"position":[[22,1],[62,1],[100,1]]},"169":{"position":[[62,2]]},"171":{"position":[[97,1],[154,1],[203,1]]},"173":{"position":[[79,1]]},"176":{"position":[[52,1],[130,1],[143,1],[185,1],[254,1],[277,1],[310,1],[370,1],[396,1],[420,1],[480,1],[547,1],[643,1],[758,1],[838,1]]},"179":{"position":[[108,1],[176,1],[256,1],[356,1],[449,1],[547,1],[1506,1],[1553,1],[1584,1],[1632,1]]},"180":{"position":[[127,1],[218,1],[241,1],[265,1],[309,1]]},"181":{"position":[[70,2],[73,2],[142,2],[145,2],[211,2],[214,2],[284,2],[287,2],[373,2],[376,2]]},"184":{"position":[[1,1],[72,1],[131,1],[185,1],[277,1],[287,1],[324,1],[364,1],[382,1]]},"185":{"position":[[1,1],[83,1],[132,1],[223,1],[260,1],[310,1],[433,1],[490,1]]},"186":{"position":[[1,1],[139,1],[212,1]]},"187":{"position":[[57,1]]},"190":{"position":[[43,1]]},"191":{"position":[[30,1]]},"194":{"position":[[40,1],[70,1],[250,1],[323,1],[418,1]]},"200":{"position":[[148,1],[177,1],[210,1],[306,1],[380,1]]},"201":{"position":[[40,1],[70,1],[173,1],[189,1]]},"202":{"position":[[1,1],[42,1]]},"204":{"position":[[34,1],[86,1],[135,1],[199,1],[269,1],[271,2],[342,1],[445,1],[637,1],[644,1],[734,1],[837,1]]},"205":{"position":[[84,1],[147,1],[209,2]]},"206":{"position":[[34,1],[36,1],[113,1],[173,1],[175,1],[208,1]]},"207":{"position":[[27,1],[29,1],[59,1],[96,1],[123,1],[125,1],[167,1],[229,1],[261,1],[263,1],[281,1],[303,1],[324,1],[326,1],[348,1]]},"209":{"position":[[165,1],[184,1],[317,1],[319,2]]},"210":{"position":[[25,1],[27,1],[85,3],[89,1],[91,1],[147,3],[151,1],[153,1],[194,1],[231,1],[233,1],[272,1]]},"213":{"position":[[220,1]]},"215":{"position":[[40,1],[42,1],[130,1],[150,1],[152,1],[208,1],[229,1],[231,1],[292,1]]},"216":{"position":[[27,1],[29,1],[82,1],[84,1],[113,6],[120,1],[162,6],[169,1],[184,1],[186,1],[188,1],[240,1],[242,1],[371,1]]},"218":{"position":[[199,1],[229,1],[276,1]]},"219":{"position":[[144,1],[146,2],[181,1],[306,1],[328,1]]},"221":{"position":[[123,1]]},"222":{"position":[[33,1],[73,1],[101,1],[183,2]]},"224":{"position":[[82,1],[212,1]]},"225":{"position":[[1,1],[31,1],[89,1]]},"226":{"position":[[1,1]]},"230":{"position":[[1,1],[109,1],[132,1],[134,1],[181,1],[209,1]]},"232":{"position":[[1,1]]},"233":{"position":[[1,1],[39,1],[83,1]]},"237":{"position":[[76,1],[145,1],[170,1],[182,1],[190,1],[259,1],[296,1],[396,1]]},"238":{"position":[[117,1],[203,1],[228,1],[254,1],[340,1],[365,1],[370,1],[491,1]]},"239":{"position":[[478,1],[792,1],[904,1],[996,1],[1330,1],[1390,1],[1452,1],[1510,1],[1563,1]]},"241":{"position":[[209,1],[214,1],[220,1],[228,1],[282,1],[287,1],[300,1],[353,1],[366,1]]},"242":{"position":[[47,1],[52,1],[75,1],[123,1],[133,1],[152,1],[181,1],[186,1]]},"243":{"position":[[95,1],[123,1],[150,1],[181,1],[211,1],[235,1],[289,1],[878,1],[922,1],[994,1],[1001,1],[1069,1],[1075,1],[1151,1],[1153,3],[1168,3],[1172,1],[1225,1],[1267,1],[1341,1],[1359,1],[1393,1],[1424,1],[1454,1],[1487,1],[1632,1],[1657,1],[1719,1],[1721,1],[1788,1],[1790,1],[1814,1],[1848,1],[1861,1],[1888,1],[1893,1],[1922,1],[1935,1]]},"245":{"position":[[64,1],[71,1],[154,1],[161,1],[287,1],[292,1],[375,1],[381,1],[455,1],[460,1],[476,1],[539,1],[544,1],[560,1],[627,1],[632,1],[682,1],[687,1],[741,1],[745,1],[808,1],[812,1]]},"246":{"position":[[16,1],[714,1],[1330,1],[1719,1],[1791,1]]},"247":{"position":[[198,1]]},"248":{"position":[[103,1],[109,1],[115,1]]},"252":{"position":[[91,1],[176,1],[183,1],[207,1],[226,1],[307,1],[319,1],[330,1],[348,1],[443,1],[450,1],[522,1],[529,1],[596,1],[603,1],[728,1],[734,1],[740,1],[833,1],[1487,1],[1499,1],[1511,1],[1518,1],[1603,1],[1609,1],[1615,1],[1853,1],[2017,1],[2024,1],[2082,1],[2231,1],[2238,1]]},"253":{"position":[[66,1],[295,1],[337,1],[366,1]]},"255":{"position":[[34,1],[160,1],[190,1],[213,1],[333,1],[359,1],[420,1],[1000,1],[1007,1],[1015,1],[1113,1],[1119,1],[1404,1],[1449,1],[1455,1],[1493,1],[1552,1],[1614,1],[1676,1],[1700,1],[1719,1],[1737,1],[1765,1],[2031,1],[2099,1],[2105,1],[2160,1],[2166,1],[2228,1],[2234,1],[2276,1],[2280,1],[3086,1]]},"256":{"position":[[24,1],[480,1]]},"258":{"position":[[249,1]]},"259":{"position":[[296,1]]},"262":{"position":[[329,1],[346,1],[408,1]]},"263":{"position":[[408,1],[426,1],[490,1]]},"264":{"position":[[467,1],[529,1]]},"265":{"position":[[231,1],[314,1],[349,1]]},"267":{"position":[[160,1],[231,1],[289,1],[471,1],[510,1],[563,1],[653,1],[696,1],[865,1]]},"272":{"position":[[124,1],[166,1],[192,1],[228,1],[274,1],[281,1],[326,1],[379,1],[386,1],[416,1],[443,1],[450,1]]},"273":{"position":[[112,1],[127,1],[161,1],[176,1],[256,1],[272,1],[300,1],[316,1],[333,1],[631,1],[675,1],[682,1],[689,1],[698,1],[715,1],[750,1],[757,1],[764,1],[769,1],[778,1],[1655,1],[1736,1],[1782,1],[1801,1],[1868,1],[1888,1],[1952,1],[2001,1],[2101,1],[2170,1],[2358,1],[2377,1],[2391,1],[2413,1],[2427,1],[2482,1],[2501,1],[2515,1],[2537,1],[2549,1],[2598,1],[2633,1],[2635,1],[2648,1],[2677,1],[2697,1],[2800,1],[2847,1],[2939,1],[2947,1],[3137,1],[3139,1],[3205,1],[3207,1],[3571,1],[3599,1],[3666,1],[3685,1],[3968,1],[4151,2],[4232,1],[4251,2],[5090,1],[5225,1]]},"278":{"position":[[27,1],[139,1],[527,1],[711,1],[774,1],[789,1],[880,2],[947,1],[981,1],[1128,1],[1194,1],[1451,1]]},"279":{"position":[[32,1],[414,1],[519,1],[542,1],[664,1],[772,1],[812,1],[886,1],[939,1],[996,1],[1252,1],[1316,1],[1577,1]]},"280":{"position":[[32,1],[299,1],[336,1]]},"281":{"position":[[118,1],[204,1],[279,1],[352,1],[473,1],[536,1],[622,1],[624,1],[740,1],[742,2],[745,1],[917,1],[935,1],[1017,1]]},"283":{"position":[[10,1],[30,1],[87,1],[125,1],[165,1],[216,1],[264,1],[284,1],[317,1],[355,1],[375,1],[412,1]]},"284":{"position":[[10,1],[30,1],[95,1],[116,1],[146,1],[199,1],[264,1],[312,1],[335,1],[348,1],[379,1],[419,1],[484,1],[508,1],[515,1]]},"285":{"position":[[10,1],[30,1],[60,1],[102,1],[122,1],[164,1],[197,1],[223,1],[252,1],[304,1],[324,1],[380,1],[466,1]]},"287":{"position":[[49,1],[80,1],[132,1],[225,1],[273,4],[324,4],[375,4]]},"288":{"position":[[94,1],[235,1],[250,1],[325,1],[358,1],[461,1],[517,1]]},"289":{"position":[[1,1]]},"290":{"position":[[1,1]]},"292":{"position":[[124,1],[136,1]]},"296":{"position":[[1,1],[56,1],[148,1],[208,1],[270,1]]},"297":{"position":[[1,1],[99,1],[158,1]]},"298":{"position":[[1,1],[73,1]]},"301":{"position":[[75,1],[139,1],[202,1],[272,1],[327,1],[392,1],[533,1],[567,1],[611,1]]}},"keywords":{}}],["0",{"_index":2108,"title":{},"content":{"237":{"position":[[376,1]]},"238":{"position":[[470,1]]},"259":{"position":[[51,1]]},"266":{"position":[[179,1]]},"278":{"position":[[1175,1]]},"280":{"position":[[604,2],[647,2]]},"287":{"position":[[432,1]]},"299":{"position":[[296,2]]}},"keywords":{}}],["0.03",{"_index":2391,"title":{},"content":{"252":{"position":[[178,4]]}},"keywords":{}}],["0.03)thi",{"_index":2677,"title":{},"content":{"273":{"position":[[280,9]]}},"keywords":{}}],["0.05",{"_index":2163,"title":{},"content":{"241":{"position":[[294,5]]}},"keywords":{}}],["0.1",{"_index":2041,"title":{},"content":{"218":{"position":[[327,4]]}},"keywords":{}}],["0.10",{"_index":2636,"title":{},"content":{"272":{"position":[[381,4]]}},"keywords":{}}],["0.15",{"_index":797,"title":{},"content":{"55":{"position":[[40,5],[159,5]]},"272":{"position":[[222,5],[445,4]]}},"keywords":{}}],["0.20",{"_index":2184,"title":{},"content":{"243":{"position":[[89,5],[132,4],[996,4],[1354,4]]},"273":{"position":[[274,5],[708,6]]}},"keywords":{}}],["0.2312",{"_index":599,"title":{},"content":{"41":{"position":[[423,7]]}},"keywords":{}}],["0.2456",{"_index":1215,"title":{},"content":{"103":{"position":[[22,7]]}},"keywords":{}}],["0.25",{"_index":2202,"title":{},"content":{"243":{"position":[[511,4]]},"245":{"position":[[156,4]]},"247":{"position":[[604,4]]},"252":{"position":[[445,4]]},"273":{"position":[[677,4],[752,4]]}},"keywords":{}}],["0.2534",{"_index":595,"title":{},"content":{"41":{"position":[[180,7],[346,7]]}},"keywords":{}}],["0.3",{"_index":2509,"title":{},"content":{"255":{"position":[[2929,3]]}},"keywords":{}}],["0.3.0",{"_index":1781,"title":{},"content":{"176":{"position":[[124,5],[179,5]]},"184":{"position":[[66,5]]}},"keywords":{}}],["0.3.0"",{"_index":1784,"title":{},"content":{"176":{"position":[[242,11],[737,11]]},"185":{"position":[[202,11]]},"186":{"position":[[127,11]]},"194":{"position":[[406,11]]}},"keywords":{}}],["0.30",{"_index":2401,"title":{},"content":{"252":{"position":[[524,4]]},"272":{"position":[[276,4]]}},"keywords":{}}],["0.35",{"_index":2687,"title":{},"content":{"273":{"position":[[788,7]]}},"keywords":{}}],["0.425",{"_index":2176,"title":{},"content":{"242":{"position":[[224,5]]}},"keywords":{}}],["0.50",{"_index":2162,"title":{},"content":{"241":{"position":[[222,5]]},"243":{"position":[[463,4]]},"245":{"position":[[66,4]]},"247":{"position":[[83,4]]},"252":{"position":[[598,4]]},"272":{"position":[[320,5]]}},"keywords":{}}],["0.75",{"_index":2198,"title":{},"content":{"243":{"position":[[429,4]]},"273":{"position":[[684,4],[759,4]]}},"keywords":{}}],["0.8",{"_index":2219,"title":{},"content":{"243":{"position":[[1071,3]]}},"keywords":{}}],["0.88",{"_index":2195,"title":{},"content":{"243":{"position":[[398,4]]}},"keywords":{}}],["0.95",{"_index":2122,"title":{},"content":{"238":{"position":[[493,5]]}},"keywords":{}}],["00",{"_index":2786,"title":{},"content":{"277":{"position":[[211,4]]},"279":{"position":[[395,4]]}},"keywords":{}}],["00/15/30/45",{"_index":437,"title":{},"content":{"31":{"position":[[1218,13]]},"42":{"position":[[75,11]]}},"keywords":{}}],["00/:15/:30/:45",{"_index":2983,"title":{},"content":{"301":{"position":[[122,16]]}},"keywords":{}}],["00:00",{"_index":724,"title":{},"content":{"51":{"position":[[525,5]]},"60":{"position":[[19,5]]},"65":{"position":[[20,7]]},"273":{"position":[[2656,5],[2731,5],[2885,5],[3629,8]]}},"keywords":{}}],["00:00:00",{"_index":2898,"title":{},"content":{"284":{"position":[[137,8]]}},"keywords":{}}],["00:00=21ct",{"_index":2732,"title":{},"content":{"273":{"position":[[3194,10]]}},"keywords":{}}],["00:03:12",{"_index":2900,"title":{},"content":{"284":{"position":[[370,8]]}},"keywords":{}}],["00:15",{"_index":2720,"title":{},"content":{"273":{"position":[[2600,5]]}},"keywords":{}}],["01:00",{"_index":2716,"title":{},"content":{"273":{"position":[[2172,7]]}},"keywords":{}}],["02:00",{"_index":1284,"title":{},"content":{"111":{"position":[[537,5]]},"246":{"position":[[1685,5]]},"273":{"position":[[1066,5]]}},"keywords":{}}],["03",{"_index":2818,"title":{},"content":{"279":{"position":[[350,5]]}},"keywords":{}}],["03t14:00:00+01:00"",{"_index":593,"title":{},"content":{"41":{"position":[[136,24],[302,24]]}},"keywords":{}}],["05:00",{"_index":1285,"title":{},"content":{"111":{"position":[[543,5]]}},"keywords":{}}],["06",{"_index":1283,"title":{},"content":{"111":{"position":[[453,3]]}},"keywords":{}}],["06t14:00:00.000+01:00"",{"_index":1218,"title":{},"content":{"103":{"position":[[66,28]]}},"keywords":{}}],["07:00",{"_index":2319,"title":{},"content":{"246":{"position":[[1691,5]]}},"keywords":{}}],["08:00no",{"_index":2691,"title":{},"content":{"273":{"position":[[1072,7]]}},"keywords":{}}],["1",{"_index":185,"title":{"14":{"position":[[0,2]]},"40":{"position":[[0,2]]},"51":{"position":[[0,2]]},"77":{"position":[[0,2]]},"145":{"position":[[0,2]]},"178":{"position":[[0,2]]},"189":{"position":[[0,2]]},"237":{"position":[[0,2]]},"258":{"position":[[15,2]]},"262":{"position":[[9,2]]},"278":{"position":[[6,3]]},"283":{"position":[[9,2]]},"286":{"position":[[30,4]]},"287":{"position":[[7,2]]},"288":{"position":[[21,2]]},"292":{"position":[[6,2]]},"296":{"position":[[12,2]]}},"content":{"45":{"position":[[63,2]]},"47":{"position":[[63,1]]},"55":{"position":[[719,1]]},"67":{"position":[[64,1],[740,1]]},"83":{"position":[[112,1]]},"89":{"position":[[158,1],[261,1]]},"94":{"position":[[466,2],[524,1]]},"101":{"position":[[220,1]]},"111":{"position":[[534,2]]},"154":{"position":[[239,2]]},"156":{"position":[[31,2]]},"176":{"position":[[54,2]]},"180":{"position":[[243,2]]},"184":{"position":[[8,2],[106,1]]},"185":{"position":[[8,2]]},"186":{"position":[[8,2]]},"194":{"position":[[252,2]]},"204":{"position":[[1,2]]},"207":{"position":[[1,2]]},"209":{"position":[[1,2]]},"238":{"position":[[230,2],[367,2]]},"241":{"position":[[289,2]]},"242":{"position":[[49,2],[77,2],[183,2]]},"243":{"position":[[1816,2],[1890,2]]},"246":{"position":[[1590,2],[2048,2]]},"247":{"position":[[1,2]]},"253":{"position":[[237,2],[265,1],[316,1]]},"263":{"position":[[103,1],[545,1],[609,2]]},"265":{"position":[[31,1],[186,1],[217,2],[263,1],[395,1]]},"266":{"position":[[211,1],[330,1]]},"267":{"position":[[466,1]]},"272":{"position":[[1,2]]},"273":{"position":[[1,2],[766,2],[2322,1],[2596,1],[2623,3],[3103,2],[3164,2]]},"277":{"position":[[130,2],[381,2]]},"278":{"position":[[534,2],[1106,2]]},"279":{"position":[[295,2],[503,2],[671,2],[722,3],[780,2]]},"283":{"position":[[133,2],[466,2]]},"284":{"position":[[18,2],[387,2]]},"285":{"position":[[110,2],[438,2]]},"288":{"position":[[7,2],[102,2],[542,2]]},"290":{"position":[[138,3]]},"292":{"position":[[183,2]]},"301":{"position":[[34,2],[254,2]]}},"keywords":{}}],["1'",{"_index":2722,"title":{},"content":{"273":{"position":[[2759,3]]}},"keywords":{}}],["1)"",{"_index":2969,"title":{},"content":{"296":{"position":[[260,9]]}},"keywords":{}}],["1,209",{"_index":523,"title":{},"content":{"37":{"position":[[337,5]]}},"keywords":{}}],["1,838",{"_index":518,"title":{},"content":{"37":{"position":[[258,5]]}},"keywords":{}}],["1.0",{"_index":2188,"title":{},"content":{"243":{"position":[[162,3],[1405,3]]}},"keywords":{}}],["1.00",{"_index":2194,"title":{},"content":{"243":{"position":[[351,4]]}},"keywords":{}}],["1.1",{"_index":1012,"title":{},"content":{"77":{"position":[[39,3]]}},"keywords":{}}],["1.2",{"_index":1033,"title":{},"content":{"77":{"position":[[917,3]]}},"keywords":{}}],["1.25",{"_index":2203,"title":{},"content":{"243":{"position":[[516,5],[662,6]]}},"keywords":{}}],["1.3",{"_index":1046,"title":{},"content":{"77":{"position":[[1450,3]]}},"keywords":{}}],["1.5",{"_index":2325,"title":{},"content":{"246":{"position":[[1767,4]]},"255":{"position":[[1315,3],[1451,3],[2162,3]]}},"keywords":{}}],["1/2",{"_index":2593,"title":{},"content":{"266":{"position":[[381,3]]}},"keywords":{}}],["10",{"_index":1114,"title":{"87":{"position":[[0,3]]}},"content":{"85":{"position":[[41,2]]},"90":{"position":[[227,2]]},"160":{"position":[[75,3]]},"219":{"position":[[103,2]]},"237":{"position":[[340,2],[392,3]]},"239":{"position":[[451,4],[765,4],[1448,3],[1572,3]]},"241":{"position":[[125,2],[211,2],[216,3]]},"242":{"position":[[125,3],[178,2]]},"246":{"position":[[1709,2]]},"248":{"position":[[50,2]]},"260":{"position":[[71,2]]},"262":{"position":[[14,2]]},"273":{"position":[[2360,2],[2423,3]]},"283":{"position":[[414,2]]},"294":{"position":[[65,2]]},"298":{"position":[[41,2]]}},"keywords":{}}],["10%")period",{"_index":2142,"title":{},"content":{"239":{"position":[[968,16]]}},"keywords":{}}],["100",{"_index":820,"title":{},"content":{"56":{"position":[[115,5],[1517,4]]},"89":{"position":[[82,4],[130,4],[185,4],[238,4],[288,4],[346,4],[397,4],[463,4],[479,4]]},"101":{"position":[[84,3],[240,4]]},"243":{"position":[[1659,4]]},"252":{"position":[[1513,4],[2019,4],[2233,4]]},"262":{"position":[[29,5]]}},"keywords":{}}],["100%)peak_price_progress",{"_index":2857,"title":{},"content":{"280":{"position":[[607,24]]}},"keywords":{}}],["100%)~10",{"_index":2858,"title":{},"content":{"280":{"position":[[650,8]]}},"keywords":{}}],["100)day_price_min",{"_index":2754,"title":{},"content":{"273":{"position":[[3970,18]]}},"keywords":{}}],["1000",{"_index":1943,"title":{},"content":{"200":{"position":[[308,5]]}},"keywords":{}}],["100m",{"_index":1102,"title":{},"content":{"83":{"position":[[178,6]]},"285":{"position":[[243,8]]}},"keywords":{}}],["1013",{"_index":1721,"title":{},"content":{"166":{"position":[[120,5]]}},"keywords":{}}],["1024**2",{"_index":1950,"title":{},"content":{"201":{"position":[[175,8],[191,8]]},"222":{"position":[[103,7]]}},"keywords":{}}],["10kb",{"_index":465,"title":{},"content":{"33":{"position":[[387,4]]},"47":{"position":[[136,5]]},"57":{"position":[[963,5]]},"67":{"position":[[311,5]]}},"keywords":{}}],["10m",{"_index":925,"title":{},"content":{"64":{"position":[[188,5]]}},"keywords":{}}],["10Γ—0.15",{"_index":2111,"title":{},"content":{"237":{"position":[[398,8]]},"273":{"position":[[2429,8]]}},"keywords":{}}],["11",{"_index":592,"title":{},"content":{"41":{"position":[[133,2],[299,2]]},"245":{"position":[[457,2],[462,2],[541,2],[546,2]]},"253":{"position":[[230,2]]},"255":{"position":[[2749,2]]},"263":{"position":[[580,2],[583,3]]},"265":{"position":[[164,2],[167,3],[374,2],[377,3]]},"266":{"position":[[157,2],[160,3],[213,3],[279,2],[282,3]]},"267":{"position":[[506,3]]},"273":{"position":[[2330,2],[2450,2],[2627,2],[2644,3]]},"275":{"position":[[6,2]]},"284":{"position":[[66,2],[89,2],[235,2],[258,2],[342,2],[455,2],[478,2]]}},"keywords":{}}],["11.5",{"_index":2109,"title":{},"content":{"237":{"position":[[380,4]]},"273":{"position":[[2415,4],[2650,5],[2763,4],[2792,4]]}},"keywords":{}}],["116kb",{"_index":941,"title":{},"content":{"67":{"position":[[487,6],[844,6]]}},"keywords":{}}],["11t14:30:00+01:00",{"_index":2499,"title":{},"content":{"255":{"position":[[2752,18]]}},"keywords":{}}],["12",{"_index":1217,"title":{},"content":{"103":{"position":[[63,2]]},"111":{"position":[[450,2],[549,3]]},"122":{"position":[[302,2]]},"246":{"position":[[1712,2]]}},"keywords":{}}],["12.5",{"_index":2566,"title":{},"content":{"262":{"position":[[321,7]]}},"keywords":{}}],["12/96",{"_index":2565,"title":{},"content":{"262":{"position":[[315,5]]}},"keywords":{}}],["120",{"_index":11,"title":{},"content":{"1":{"position":[[72,3]]},"133":{"position":[[558,4]]},"279":{"position":[[1887,4]]}},"keywords":{}}],["123",{"_index":193,"title":{},"content":{"14":{"position":[[74,3]]},"21":{"position":[[398,4]]}},"keywords":{}}],["126",{"_index":2778,"title":{},"content":{"273":{"position":[[5210,5]]}},"keywords":{}}],["126kb",{"_index":471,"title":{},"content":{"33":{"position":[[508,6]]},"47":{"position":[[27,6]]}},"keywords":{}}],["12:00",{"_index":2741,"title":{},"content":{"273":{"position":[[3484,5]]}},"keywords":{}}],["12h",{"_index":2749,"title":{},"content":{"273":{"position":[[3645,4]]}},"keywords":{}}],["13:00",{"_index":747,"title":{"61":{"position":[[22,9]]},"285":{"position":[[39,7]]}},"content":{"51":{"position":[[1135,7]]},"56":{"position":[[1460,7]]},"278":{"position":[[837,6]]},"288":{"position":[[152,7]]}},"keywords":{}}],["13:00)cach",{"_index":2945,"title":{},"content":{"288":{"position":[[670,11]]}},"keywords":{}}],["13:00:00",{"_index":2904,"title":{},"content":{"285":{"position":[[1,8]]},"287":{"position":[[71,8]]}},"keywords":{}}],["13:03:12",{"_index":2905,"title":{},"content":{"285":{"position":[[93,8]]},"287":{"position":[[243,9]]}},"keywords":{}}],["13:07:45",{"_index":2930,"title":{},"content":{"287":{"position":[[294,9]]}},"keywords":{}}],["13:11:28",{"_index":2933,"title":{},"content":{"287":{"position":[[345,9]]}},"keywords":{}}],["13:15:00",{"_index":2907,"title":{},"content":{"285":{"position":[[295,8]]}},"keywords":{}}],["13:18:12",{"_index":2928,"title":{},"content":{"287":{"position":[[253,9]]}},"keywords":{}}],["13:22:45",{"_index":2931,"title":{},"content":{"287":{"position":[[304,9]]}},"keywords":{}}],["13:26:28",{"_index":2934,"title":{},"content":{"287":{"position":[[355,9]]}},"keywords":{}}],["13:33:12",{"_index":2929,"title":{},"content":{"287":{"position":[[263,9]]}},"keywords":{}}],["13:37:45",{"_index":2932,"title":{},"content":{"287":{"position":[[314,9]]}},"keywords":{}}],["13:41:28",{"_index":2935,"title":{},"content":{"287":{"position":[[365,9]]}},"keywords":{}}],["13:58",{"_index":2823,"title":{},"content":{"279":{"position":[[513,5]]}},"keywords":{}}],["14",{"_index":693,"title":{},"content":{"47":{"position":[[122,3]]},"57":{"position":[[985,4]]},"94":{"position":[[34,3]]},"263":{"position":[[14,2],[29,4]]}},"keywords":{}}],["14.25",{"_index":2121,"title":{},"content":{"238":{"position":[[474,5]]},"241":{"position":[[302,5],[399,5]]}},"keywords":{}}],["14.25simplifi",{"_index":2175,"title":{},"content":{"242":{"position":[[199,14]]}},"keywords":{}}],["14.5",{"_index":2506,"title":{},"content":{"255":{"position":[[2862,4]]}},"keywords":{}}],["14.8",{"_index":2164,"title":{},"content":{"241":{"position":[[340,4],[361,4],[389,4]]}},"keywords":{}}],["144",{"_index":534,"title":{},"content":{"37":{"position":[[496,3]]}},"keywords":{}}],["1440",{"_index":2960,"title":{},"content":{"294":{"position":[[11,4]]}},"keywords":{}}],["1446",{"_index":1725,"title":{},"content":{"166":{"position":[[277,5]]}},"keywords":{}}],["14:00",{"_index":862,"title":{},"content":{"56":{"position":[[1468,6]]},"279":{"position":[[476,5]]}},"keywords":{}}],["14:00:00",{"_index":2890,"title":{},"content":{"283":{"position":[[1,8]]},"287":{"position":[[123,8]]}},"keywords":{}}],["14:03:12",{"_index":2891,"title":{},"content":{"283":{"position":[[116,8]]}},"keywords":{}}],["14:13",{"_index":2824,"title":{},"content":{"279":{"position":[[536,5],[570,5]]}},"keywords":{}}],["14:15:00",{"_index":2893,"title":{},"content":{"283":{"position":[[255,8]]}},"keywords":{}}],["14:16:00",{"_index":2894,"title":{},"content":{"283":{"position":[[346,8]]}},"keywords":{}}],["14:45:00",{"_index":629,"title":{},"content":{"42":{"position":[[474,8]]},"279":{"position":[[1327,8]]}},"keywords":{}}],["14:59:30",{"_index":627,"title":{},"content":{"42":{"position":[[454,8]]},"279":{"position":[[1307,8]]}},"keywords":{}}],["14:59:58",{"_index":623,"title":{},"content":{"42":{"position":[[381,8],[638,9]]},"279":{"position":[[1243,8],[1568,8]]}},"keywords":{}}],["15",{"_index":384,"title":{},"content":{"31":{"position":[[160,2]]},"42":{"position":[[20,2],[195,3]]},"45":{"position":[[42,2]]},"46":{"position":[[172,4]]},"52":{"position":[[871,4]]},"53":{"position":[[173,2]]},"54":{"position":[[45,3]]},"64":{"position":[[27,2]]},"101":{"position":[[165,2]]},"238":{"position":[[427,2],[487,3]]},"239":{"position":[[953,3]]},"241":{"position":[[145,2],[230,2],[284,2],[368,2]]},"242":{"position":[[135,3]]},"245":{"position":[[289,2],[294,3],[472,3]]},"246":{"position":[[961,2],[1844,5],[2100,3]]},"247":{"position":[[452,2]]},"248":{"position":[[99,3],[369,2]]},"252":{"position":[[484,2],[723,4],[828,4],[1967,2],[2168,2]]},"258":{"position":[[246,2]]},"262":{"position":[[54,2],[90,4]]},"263":{"position":[[53,2],[89,4]]},"264":{"position":[[89,4]]},"267":{"position":[[757,2]]},"272":{"position":[[245,3]]},"273":{"position":[[157,3],[312,3],[2393,3],[2517,3],[4248,2],[4277,4]]},"277":{"position":[[145,2],[216,4]]},"278":{"position":[[141,2],[296,2]]},"279":{"position":[[147,3],[309,2],[400,4],[457,2],[1535,2]]},"280":{"position":[[736,2]]},"283":{"position":[[151,2]]},"292":{"position":[[17,2]]},"294":{"position":[[168,3]]},"301":{"position":[[51,2]]}},"keywords":{}}],["15%accept",{"_index":2106,"title":{},"content":{"237":{"position":[[355,13]]}},"keywords":{}}],["15%β†’48",{"_index":2592,"title":{},"content":{"266":{"position":[[222,8]]}},"keywords":{}}],["15.0",{"_index":789,"title":{},"content":{"54":{"position":[[130,5]]}},"keywords":{}}],["15:00",{"_index":2835,"title":{},"content":{"279":{"position":[[1479,7]]}},"keywords":{}}],["15:00:00",{"_index":625,"title":{},"content":{"42":{"position":[[402,8],[678,9]]},"279":{"position":[[1264,8],[1609,8]]}},"keywords":{}}],["15:15",{"_index":2836,"title":{},"content":{"279":{"position":[[1487,6]]}},"keywords":{}}],["15:15:00",{"_index":638,"title":{},"content":{"42":{"position":[[664,9]]},"279":{"position":[[1595,9]]}},"keywords":{}}],["15:30",{"_index":2837,"title":{},"content":{"279":{"position":[[1494,6]]}},"keywords":{}}],["15min",{"_index":859,"title":{},"content":{"56":{"position":[[1365,6]]},"67":{"position":[[590,5]]}},"keywords":{}}],["16",{"_index":2570,"title":{},"content":{"263":{"position":[[19,2]]}},"keywords":{}}],["16m",{"_index":927,"title":{},"content":{"64":{"position":[[287,5]]}},"keywords":{}}],["17",{"_index":1143,"title":{},"content":{"89":{"position":[[428,2]]},"284":{"position":[[69,3],[92,2],[261,2]]}},"keywords":{}}],["17:00",{"_index":2323,"title":{},"content":{"246":{"position":[[1755,5]]}},"keywords":{}}],["18",{"_index":2368,"title":{},"content":{"248":{"position":[[105,3]]},"252":{"position":[[730,3]]},"255":{"position":[[1978,3],[1994,2]]},"264":{"position":[[53,2]]},"273":{"position":[[178,3],[318,3]]},"279":{"position":[[356,4]]},"284":{"position":[[238,3],[345,2],[458,3],[481,2]]}},"keywords":{}}],["18.0",{"_index":2591,"title":{},"content":{"265":{"position":[[225,5],[308,5]]}},"keywords":{}}],["18.5",{"_index":2501,"title":{},"content":{"255":{"position":[[2813,5]]}},"keywords":{}}],["188",{"_index":538,"title":{},"content":{"37":{"position":[[562,3]]}},"keywords":{}}],["18:30",{"_index":2324,"title":{},"content":{"246":{"position":[[1761,5]]}},"keywords":{}}],["19",{"_index":2436,"title":{},"content":{"253":{"position":[[233,3]]},"255":{"position":[[1986,3]]},"275":{"position":[[9,3]]}},"keywords":{}}],["19.1",{"_index":2502,"title":{},"content":{"255":{"position":[[2819,5]]}},"keywords":{}}],["19.3",{"_index":2503,"title":{},"content":{"255":{"position":[[2825,5]]}},"keywords":{}}],["19.8",{"_index":2504,"title":{},"content":{"255":{"position":[[2831,5]]}},"keywords":{}}],["192",{"_index":753,"title":{},"content":{"51":{"position":[[1318,5]]}},"keywords":{}}],["1d",{"_index":2535,"title":{},"content":{"255":{"position":[[3891,2]]}},"keywords":{}}],["1f",{"_index":2227,"title":{},"content":{"243":{"position":[[1586,6],[1625,6]]},"252":{"position":[[1892,6],[2118,6]]}},"keywords":{}}],["1f%%"",{"_index":2228,"title":{},"content":{"243":{"position":[[1634,13]]}},"keywords":{}}],["1kb",{"_index":461,"title":{},"content":{"33":{"position":[[311,3]]}},"keywords":{}}],["1m",{"_index":924,"title":{},"content":{"64":{"position":[[139,4]]},"283":{"position":[[434,6]]},"294":{"position":[[52,4]]}},"keywords":{}}],["1ΞΌ",{"_index":816,"title":{},"content":{"55":{"position":[[761,3]]},"64":{"position":[[98,4]]}},"keywords":{}}],["1ΞΌssave",{"_index":814,"title":{},"content":{"55":{"position":[[735,12]]}},"keywords":{}}],["2",{"_index":203,"title":{"15":{"position":[[0,2]]},"41":{"position":[[0,2]]},"52":{"position":[[0,2]]},"78":{"position":[[0,2]]},"146":{"position":[[0,2]]},"179":{"position":[[0,2]]},"190":{"position":[[0,2]]},"238":{"position":[[0,2]]},"259":{"position":[[15,2]]},"263":{"position":[[9,2]]},"279":{"position":[[6,3]]},"284":{"position":[[9,2]]},"288":{"position":[[7,2]]},"293":{"position":[[6,2]]},"297":{"position":[[12,2]]}},"content":{"42":{"position":[[303,3]]},"45":{"position":[[66,1]]},"47":{"position":[[72,1]]},"51":{"position":[[674,2]]},"60":{"position":[[7,2]]},"83":{"position":[[114,1],[240,1]]},"89":{"position":[[315,1]]},"94":{"position":[[499,2]]},"111":{"position":[[463,1]]},"154":{"position":[[267,2]]},"156":{"position":[[72,2]]},"176":{"position":[[312,2]]},"180":{"position":[[267,2]]},"184":{"position":[[79,2]]},"185":{"position":[[139,2]]},"186":{"position":[[146,2]]},"194":{"position":[[325,2]]},"204":{"position":[[164,2]]},"207":{"position":[[233,2]]},"209":{"position":[[193,2]]},"246":{"position":[[256,1],[1593,1],[2239,2]]},"247":{"position":[[516,2]]},"252":{"position":[[861,5]]},"253":{"position":[[280,2],[283,2],[356,1]]},"255":{"position":[[1080,2],[2122,2]]},"262":{"position":[[107,1]]},"263":{"position":[[105,1],[617,3]]},"265":{"position":[[51,1],[201,2],[300,2],[339,1],[414,2]]},"266":{"position":[[195,2]]},"272":{"position":[[823,2]]},"273":{"position":[[511,2],[2442,1],[2610,1],[2667,3],[2833,1],[3002,1],[3171,2],[3236,2]]},"277":{"position":[[201,2],[419,2]]},"278":{"position":[[593,3],[796,2],[1488,2]]},"279":{"position":[[946,2],[1199,2]]},"283":{"position":[[18,2],[272,2],[479,2]]},"284":{"position":[[154,2]]},"285":{"position":[[18,2],[312,2],[486,2]]},"288":{"position":[[258,2]]},"290":{"position":[[9,3]]},"292":{"position":[[186,1]]},"299":{"position":[[7,2]]},"301":{"position":[[110,2],[311,2]]}},"keywords":{}}],["2'",{"_index":2725,"title":{},"content":{"273":{"position":[[2913,3]]}},"keywords":{}}],["2)"",{"_index":2972,"title":{},"content":{"297":{"position":[[148,9]]}},"keywords":{}}],["2)cach",{"_index":978,"title":{},"content":{"71":{"position":[[90,8]]}},"keywords":{}}],["2,170",{"_index":565,"title":{},"content":{"37":{"position":[[1107,6]]}},"keywords":{}}],["2,574",{"_index":1627,"title":{},"content":{"150":{"position":[[91,5]]}},"keywords":{}}],["2.0",{"_index":1290,"title":{},"content":{"111":{"position":[[717,4]]},"141":{"position":[[51,4]]},"255":{"position":[[1115,3],[1859,4],[2101,3],[2230,3]]}},"keywords":{}}],["2.1",{"_index":1057,"title":{},"content":{"78":{"position":[[39,3]]}},"keywords":{}}],["2.5",{"_index":2189,"title":{},"content":{"243":{"position":[[183,5],[468,4],[1426,5]]}},"keywords":{}}],["2/3",{"_index":1289,"title":{},"content":{"111":{"position":[[706,4]]}},"keywords":{}}],["20",{"_index":686,"title":{},"content":{"46":{"position":[[238,4]]},"54":{"position":[[196,3]]},"126":{"position":[[123,2]]},"198":{"position":[[142,2]]},"239":{"position":[[468,4],[782,4]]},"241":{"position":[[165,2]]},"243":{"position":[[97,3],[1003,3],[1101,3],[1376,3]]},"245":{"position":[[378,2],[383,3],[556,3]]},"247":{"position":[[455,3]]},"248":{"position":[[53,3],[372,3],[407,2]]},"252":{"position":[[487,3],[1970,4],[2171,4]]},"260":{"position":[[207,2]]},"262":{"position":[[19,2]]},"267":{"position":[[760,3],[899,4]]},"273":{"position":[[182,4],[305,6],[322,6],[2379,2],[2484,2],[2545,3]]}},"keywords":{}}],["20%)user",{"_index":2137,"title":{},"content":{"239":{"position":[[794,8]]}},"keywords":{}}],["20%user",{"_index":2128,"title":{},"content":{"239":{"position":[[480,7]]}},"keywords":{}}],["20.1",{"_index":2587,"title":{},"content":{"264":{"position":[[356,4]]}},"keywords":{}}],["20.2",{"_index":2505,"title":{},"content":{"255":{"position":[[2837,4]]}},"keywords":{}}],["20.7",{"_index":2511,"title":{},"content":{"255":{"position":[[2982,4],[3030,4]]}},"keywords":{}}],["200",{"_index":1924,"title":{},"content":{"198":{"position":[[58,3]]}},"keywords":{}}],["2000",{"_index":1693,"title":{},"content":{"160":{"position":[[94,5]]}},"keywords":{}}],["200m",{"_index":930,"title":{},"content":{"65":{"position":[[163,6]]},"66":{"position":[[192,6]]},"285":{"position":[[214,8]]}},"keywords":{}}],["2024",{"_index":1208,"title":{},"content":{"101":{"position":[[31,6]]},"111":{"position":[[445,4]]}},"keywords":{}}],["2025",{"_index":87,"title":{},"content":{"3":{"position":[[1105,6]]},"37":{"position":[[94,6]]},"43":{"position":[[57,6]]},"150":{"position":[[38,5]]},"239":{"position":[[1619,6]]},"252":{"position":[[34,6],[1382,6]]},"253":{"position":[[225,4]]},"255":{"position":[[2743,5]]},"263":{"position":[[575,4]]},"265":{"position":[[159,4],[369,4]]},"266":{"position":[[152,4],[274,4]]},"273":{"position":[[2324,5],[2444,5],[3816,6]]},"275":{"position":[[1,4]]},"284":{"position":[[337,4]]}},"keywords":{}}],["20kb",{"_index":1132,"title":{},"content":{"87":{"position":[[106,5]]}},"keywords":{}}],["20Γ—0.15",{"_index":2719,"title":{},"content":{"273":{"position":[[2551,8]]}},"keywords":{}}],["21",{"_index":2369,"title":{},"content":{"248":{"position":[[111,3]]},"252":{"position":[[736,3]]},"273":{"position":[[2333,4],[2671,2],[2781,2],[2933,2]]}},"keywords":{}}],["21ct",{"_index":2723,"title":{},"content":{"273":{"position":[[2812,4],[3329,4]]}},"keywords":{}}],["22",{"_index":2717,"title":{},"content":{"273":{"position":[[2453,4]]}},"keywords":{}}],["23",{"_index":2718,"title":{},"content":{"273":{"position":[[2539,2],[2917,2],[2941,2]]}},"keywords":{}}],["23:45",{"_index":2715,"title":{},"content":{"273":{"position":[[2164,5],[2586,5],[2612,5],[3263,6],[3534,8]]}},"keywords":{}}],["23:45:12",{"_index":2895,"title":{},"content":{"284":{"position":[[1,8]]}},"keywords":{}}],["23:45=11ct",{"_index":2729,"title":{},"content":{"273":{"position":[[3126,10]]}},"keywords":{}}],["24",{"_index":726,"title":{},"content":{"51":{"position":[[553,2]]},"99":{"position":[[264,2]]}},"keywords":{}}],["240",{"_index":1025,"title":{},"content":{"77":{"position":[[605,4]]}},"keywords":{}}],["24h",{"_index":409,"title":{},"content":{"31":{"position":[[632,3]]},"33":{"position":[[151,3]]},"37":{"position":[[894,3]]},"38":{"position":[[146,3]]},"41":{"position":[[442,3]]},"101":{"position":[[214,3]]},"107":{"position":[[42,3],[98,3]]},"137":{"position":[[271,3]]}},"keywords":{}}],["24honli",{"_index":2010,"title":{},"content":{"212":{"position":[[70,7]]}},"keywords":{}}],["25",{"_index":14,"title":{},"content":{"1":{"position":[[102,2]]},"243":{"position":[[394,3],[567,3],[2131,3]]},"245":{"position":[[163,3]]},"247":{"position":[[487,2],[546,4],[609,5],[713,3]]},"248":{"position":[[194,3]]},"252":{"position":[[452,3],[1116,3],[1134,3],[2084,3]]},"267":{"position":[[639,3]]}},"keywords":{}}],["25)home",{"_index":1452,"title":{},"content":{"133":{"position":[[596,7]]}},"keywords":{}}],["25.0",{"_index":790,"title":{},"content":{"54":{"position":[[154,5]]}},"keywords":{}}],["25ct",{"_index":2734,"title":{},"content":{"273":{"position":[[3383,5]]}},"keywords":{}}],["276",{"_index":528,"title":{},"content":{"37":{"position":[[418,3]]}},"keywords":{}}],["28%abov",{"_index":2413,"title":{},"content":{"252":{"position":[[1174,8]]}},"keywords":{}}],["2f",{"_index":2062,"title":{},"content":{"222":{"position":[[153,4]]}},"keywords":{}}],["2fs"",{"_index":2054,"title":{},"content":{"221":{"position":[[189,12]]}},"keywords":{}}],["2m",{"_index":2892,"title":{},"content":{"283":{"position":[[249,5]]},"288":{"position":[[563,7]]},"292":{"position":[[55,4]]}},"keywords":{}}],["2Γ—2.4",{"_index":2508,"title":{},"content":{"255":{"position":[[2893,6]]}},"keywords":{}}],["3",{"_index":214,"title":{"16":{"position":[[0,2]]},"42":{"position":[[0,2]]},"53":{"position":[[0,2]]},"79":{"position":[[0,2]]},"147":{"position":[[0,2]]},"180":{"position":[[0,2]]},"191":{"position":[[0,2]]},"239":{"position":[[0,2]]},"260":{"position":[[15,2]]},"264":{"position":[[9,2]]},"280":{"position":[[6,3]]},"285":{"position":[[9,2]]},"289":{"position":[[7,2]]},"294":{"position":[[6,2]]},"298":{"position":[[12,2]]}},"content":{"18":{"position":[[127,1]]},"23":{"position":[[63,1]]},"48":{"position":[[61,2]]},"56":{"position":[[1833,1]]},"77":{"position":[[586,1]]},"89":{"position":[[211,1]]},"94":{"position":[[559,2]]},"106":{"position":[[579,2]]},"131":{"position":[[274,2]]},"154":{"position":[[11,2],[48,2],[310,2]]},"156":{"position":[[152,2]]},"169":{"position":[[122,1]]},"176":{"position":[[372,2]]},"180":{"position":[[311,2]]},"184":{"position":[[138,2]]},"185":{"position":[[230,2]]},"194":{"position":[[420,2]]},"204":{"position":[[519,2]]},"245":{"position":[[482,3],[566,3]]},"246":{"position":[[2431,2]]},"252":{"position":[[104,2],[185,2],[675,2],[1680,2]]},"253":{"position":[[325,2]]},"255":{"position":[[905,2],[2278,1]]},"262":{"position":[[458,1]]},"267":{"position":[[468,2]]},"270":{"position":[[23,2]]},"272":{"position":[[1506,2]]},"273":{"position":[[36,2],[114,2],[163,2],[919,2],[1025,1]]},"277":{"position":[[287,2],[453,2]]},"278":{"position":[[988,2]]},"283":{"position":[[363,2]]},"288":{"position":[[366,2]]},"290":{"position":[[76,3]]},"301":{"position":[[176,2],[376,2]]}},"keywords":{}}],["3.1",{"_index":1069,"title":{},"content":{"79":{"position":[[76,3]]}},"keywords":{}}],["3.13",{"_index":17,"title":{},"content":{"1":{"position":[[128,4]]},"231":{"position":[[36,4]]}},"keywords":{}}],["3.2",{"_index":2513,"title":{},"content":{"255":{"position":[[3062,3]]}},"keywords":{}}],["3.75",{"_index":2199,"title":{},"content":{"243":{"position":[[434,5]]}},"keywords":{}}],["30",{"_index":612,"title":{},"content":{"42":{"position":[[199,3]]},"53":{"position":[[111,3]]},"55":{"position":[[658,3]]},"67":{"position":[[725,4]]},"159":{"position":[[178,2]]},"243":{"position":[[425,3]]},"245":{"position":[[684,2],[689,2]]},"246":{"position":[[964,2],[1092,2],[2205,2]]},"248":{"position":[[271,3]]},"252":{"position":[[531,3],[1183,4],[1855,3]]},"262":{"position":[[140,4]]},"264":{"position":[[182,3]]},"267":{"position":[[682,3]]},"273":{"position":[[2503,2]]},"277":{"position":[[221,4]]},"278":{"position":[[1177,3],[1275,3]]},"279":{"position":[[151,3],[405,4]]},"287":{"position":[[406,3],[434,3]]},"299":{"position":[[299,3]]}},"keywords":{}}],["300m",{"_index":2906,"title":{},"content":{"285":{"position":[[188,8]]}},"keywords":{}}],["300ms)sensor",{"_index":1925,"title":{},"content":{"198":{"position":[[62,12]]}},"keywords":{}}],["33",{"_index":2819,"title":{},"content":{"279":{"position":[[361,4]]}},"keywords":{}}],["34",{"_index":2487,"title":{},"content":{"255":{"position":[[1990,3]]}},"keywords":{}}],["35",{"_index":786,"title":{},"content":{"54":{"position":[[67,4]]},"246":{"position":[[1781,2]]},"247":{"position":[[490,3]]},"248":{"position":[[410,3]]},"255":{"position":[[1982,3]]}},"keywords":{}}],["35.2",{"_index":2500,"title":{},"content":{"255":{"position":[[2789,4]]}},"keywords":{}}],["35k",{"_index":2022,"title":{},"content":{"215":{"position":[[132,4]]}},"keywords":{}}],["36h",{"_index":2744,"title":{},"content":{"273":{"position":[[3550,4]]}},"keywords":{}}],["378kb",{"_index":690,"title":{},"content":{"47":{"position":[[87,6]]}},"keywords":{}}],["38.5",{"_index":2585,"title":{},"content":{"264":{"position":[[308,4]]}},"keywords":{}}],["384",{"_index":716,"title":{},"content":{"51":{"position":[[307,4]]},"100":{"position":[[159,4],[294,3]]},"216":{"position":[[122,3]]}},"keywords":{}}],["3fms"",{"_index":1941,"title":{},"content":{"200":{"position":[[268,13]]}},"keywords":{}}],["3fs"",{"_index":1383,"title":{},"content":{"124":{"position":[[144,12]]}},"keywords":{}}],["3h",{"_index":2272,"title":{},"content":{"246":{"position":[[258,3]]}},"keywords":{}}],["4",{"_index":219,"title":{"17":{"position":[[0,2]]},"43":{"position":[[0,2]]},"56":{"position":[[0,2]]},"80":{"position":[[0,2]]},"148":{"position":[[0,2]]},"192":{"position":[[0,2]]},"265":{"position":[[9,2]]}},"content":{"50":{"position":[[22,1]]},"56":{"position":[[1835,1]]},"89":{"position":[[103,1]]},"94":{"position":[[651,2]]},"100":{"position":[[308,2]]},"154":{"position":[[342,2]]},"156":{"position":[[264,2]]},"166":{"position":[[134,1],[213,1]]},"246":{"position":[[275,1]]},"262":{"position":[[109,1],[157,1]]},"264":{"position":[[574,1]]},"273":{"position":[[1448,2]]}},"keywords":{}}],["4.2",{"_index":2586,"title":{},"content":{"264":{"position":[[328,3],[522,6]]}},"keywords":{}}],["4.4",{"_index":2196,"title":{},"content":{"243":{"position":[[403,4]]}},"keywords":{}}],["4.8",{"_index":2507,"title":{},"content":{"255":{"position":[[2886,3]]}},"keywords":{}}],["4/96",{"_index":2588,"title":{},"content":{"264":{"position":[[517,4]]}},"keywords":{}}],["40",{"_index":780,"title":{},"content":{"53":{"position":[[115,2]]},"243":{"position":[[459,3]]},"246":{"position":[[1784,2]]},"252":{"position":[[1599,3]]},"258":{"position":[[34,2],[88,3]]},"264":{"position":[[18,2],[186,2]]},"273":{"position":[[329,3]]}},"keywords":{}}],["40.0",{"_index":792,"title":{},"content":{"54":{"position":[[183,6]]}},"keywords":{}}],["41",{"_index":1138,"title":{"89":{"position":[[20,3]]}},"content":{"89":{"position":[[476,2]]},"92":{"position":[[62,2]]},"94":{"position":[[127,3]]}},"keywords":{}}],["42.5",{"_index":2177,"title":{},"content":{"242":{"position":[[230,7],[245,5],[300,5]]}},"keywords":{}}],["43",{"_index":2550,"title":{},"content":{"258":{"position":[[145,5]]},"273":{"position":[[335,3]]}},"keywords":{}}],["45",{"_index":613,"title":{},"content":{"42":{"position":[[203,4]]},"122":{"position":[[249,2]]},"154":{"position":[[391,2]]},"260":{"position":[[34,2]]},"277":{"position":[[226,3]]},"279":{"position":[[155,4],[410,3]]}},"keywords":{}}],["45/96",{"_index":2576,"title":{},"content":{"263":{"position":[[394,5]]}},"keywords":{}}],["46",{"_index":2551,"title":{},"content":{"258":{"position":[[151,4]]}},"keywords":{}}],["46.9",{"_index":2577,"title":{},"content":{"263":{"position":[[400,7]]}},"keywords":{}}],["48",{"_index":2258,"title":{},"content":{"245":{"position":[[478,3]]}},"keywords":{}}],["48%)balanc",{"_index":2405,"title":{},"content":{"252":{"position":[[835,12]]}},"keywords":{}}],["48)current",{"_index":2820,"title":{},"content":{"279":{"position":[[366,11]]}},"keywords":{}}],["49",{"_index":2552,"title":{},"content":{"258":{"position":[[156,4]]}},"keywords":{}}],["5",{"_index":237,"title":{"18":{"position":[[0,2]]},"57":{"position":[[0,2]]},"81":{"position":[[0,2]]},"149":{"position":[[0,2]]},"193":{"position":[[0,2]]},"266":{"position":[[9,2]]}},"content":{"33":{"position":[[22,1]]},"37":{"position":[[784,1]]},"43":{"position":[[215,1]]},"67":{"position":[[908,1]]},"85":{"position":[[38,2]]},"89":{"position":[[55,1]]},"133":{"position":[[410,1]]},"150":{"position":[[151,1]]},"241":{"position":[[262,5]]},"243":{"position":[[291,4]]},"245":{"position":[[743,1],[747,2],[810,1],[814,2]]},"246":{"position":[[1697,2]]},"252":{"position":[[880,4]]},"259":{"position":[[294,1],[310,2]]},"260":{"position":[[244,1]]},"262":{"position":[[196,3]]},"263":{"position":[[163,3]]},"264":{"position":[[14,1],[128,2]]},"273":{"position":[[109,2],[297,2],[696,1]]}},"keywords":{}}],["5%accept",{"_index":2120,"title":{},"content":{"238":{"position":[[450,12]]}},"keywords":{}}],["5%conflict",{"_index":2173,"title":{},"content":{"242":{"position":[[154,10]]}},"keywords":{}}],["5.0",{"_index":799,"title":{},"content":{"55":{"position":[[81,4],[200,4]]},"243":{"position":[[356,4]]}},"keywords":{}}],["50",{"_index":276,"title":{},"content":{"21":{"position":[[27,3]]},"46":{"position":[[59,4]]},"241":{"position":[[188,6]]},"243":{"position":[[507,3]]},"245":{"position":[[73,3],[562,3]]},"247":{"position":[[22,3],[88,5],[113,4],[200,3],[427,4]]},"248":{"position":[[542,4]]},"252":{"position":[[605,3],[1605,3]]},"258":{"position":[[184,3]]},"272":{"position":[[350,3]]}},"keywords":{}}],["50%result",{"_index":2353,"title":{},"content":{"247":{"position":[[278,10]]}},"keywords":{}}],["5000",{"_index":1209,"title":{},"content":{"101":{"position":[[39,4]]}},"keywords":{}}],["500m",{"_index":821,"title":{},"content":{"56":{"position":[[121,6],[1522,5]]},"65":{"position":[[46,6]]}},"keywords":{}}],["50kb",{"_index":455,"title":{},"content":{"33":{"position":[[196,4]]},"67":{"position":[[70,5],[414,5]]},"85":{"position":[[62,4]]},"90":{"position":[[212,6]]}},"keywords":{}}],["50m",{"_index":931,"title":{},"content":{"65":{"position":[[219,5]]},"66":{"position":[[240,5]]}},"keywords":{}}],["50ms)memori",{"_index":1929,"title":{},"content":{"198":{"position":[[145,11]]}},"keywords":{}}],["50ΞΌ",{"_index":815,"title":{},"content":{"55":{"position":[[753,5]]},"65":{"position":[[110,5]]},"66":{"position":[[155,5]]}},"keywords":{}}],["50ΞΌsafter",{"_index":813,"title":{},"content":{"55":{"position":[[707,11]]}},"keywords":{}}],["52/96",{"_index":2578,"title":{},"content":{"263":{"position":[[476,5]]}},"keywords":{}}],["54.2",{"_index":2579,"title":{},"content":{"263":{"position":[[482,7]]}},"keywords":{}}],["5678"",{"_index":1404,"title":{},"content":{"128":{"position":[[118,11]]}},"keywords":{}}],["58",{"_index":562,"title":{},"content":{"37":{"position":[[1082,3]]}},"keywords":{}}],["5kb",{"_index":458,"title":{},"content":{"33":{"position":[[251,3]]},"67":{"position":[[154,4]]},"85":{"position":[[56,3]]}},"keywords":{}}],["5m",{"_index":926,"title":{},"content":{"64":{"position":[[251,4]]},"65":{"position":[[269,4]]},"66":{"position":[[271,4]]},"283":{"position":[[109,6],[339,6]]},"293":{"position":[[54,4]]}},"keywords":{}}],["6",{"_index":266,"title":{"19":{"position":[[0,2]]},"83":{"position":[[0,2]]}},"content":{"150":{"position":[[309,1]]},"252":{"position":[[1629,1]]},"264":{"position":[[131,1]]},"273":{"position":[[302,2]]}},"keywords":{}}],["60",{"_index":801,"title":{},"content":{"55":{"position":[[117,4],[236,3]]},"245":{"position":[[629,2],[634,2]]},"246":{"position":[[431,2],[1913,3],[2087,2]]},"247":{"position":[[221,2]]},"252":{"position":[[1611,3]]},"273":{"position":[[132,4]]},"279":{"position":[[1868,2]]},"280":{"position":[[949,4]]},"283":{"position":[[89,2],[319,2]]},"293":{"position":[[67,2]]},"297":{"position":[[41,2]]}},"keywords":{}}],["600m",{"_index":929,"title":{},"content":{"64":{"position":[[304,6]]},"66":{"position":[[81,6],[290,6]]},"292":{"position":[[106,6]]}},"keywords":{}}],["60kb",{"_index":468,"title":{},"content":{"33":{"position":[[480,4]]}},"keywords":{}}],["644",{"_index":1723,"title":{},"content":{"166":{"position":[[200,4]]}},"keywords":{}}],["7",{"_index":1107,"title":{"84":{"position":[[0,2]]}},"content":{},"keywords":{}}],["7.5",{"_index":2679,"title":{},"content":{"273":{"position":[[339,6]]}},"keywords":{}}],["70",{"_index":680,"title":{},"content":{"46":{"position":[[119,4]]},"56":{"position":[[1635,4]]},"252":{"position":[[1617,3]]}},"keywords":{}}],["700",{"_index":2580,"title":{},"content":{"264":{"position":[[28,5]]}},"keywords":{}}],["755m",{"_index":933,"title":{},"content":{"65":{"position":[[313,6]]}},"keywords":{}}],["8",{"_index":520,"title":{"85":{"position":[[0,2]]}},"content":{"37":{"position":[[279,2],[362,2]]},"89":{"position":[[370,1]]},"122":{"position":[[355,1]]},"262":{"position":[[159,1]]},"267":{"position":[[504,1]]},"273":{"position":[[129,2]]}},"keywords":{}}],["8.3",{"_index":2568,"title":{},"content":{"262":{"position":[[401,6]]},"264":{"position":[[460,6]]}},"keywords":{}}],["8/96",{"_index":2567,"title":{},"content":{"262":{"position":[[396,4]]},"264":{"position":[[455,4]]}},"keywords":{}}],["80",{"_index":499,"title":{},"content":{"36":{"position":[[429,3]]},"43":{"position":[[436,3],[1050,3]]},"77":{"position":[[572,3]]},"247":{"position":[[224,3]]}},"keywords":{}}],["8601",{"_index":1225,"title":{},"content":{"103":{"position":[[230,4]]}},"keywords":{}}],["8h)short",{"_index":2275,"title":{},"content":{"246":{"position":[[277,8]]}},"keywords":{}}],["9",{"_index":1118,"title":{"86":{"position":[[0,2]]}},"content":{},"keywords":{}}],["9.6",{"_index":603,"title":{},"content":{"41":{"position":[[487,4]]}},"keywords":{}}],["909",{"_index":514,"title":{},"content":{"37":{"position":[[166,3],[1116,3]]}},"keywords":{}}],["95",{"_index":2460,"title":{},"content":{"255":{"position":[[1059,3],[2107,3]]}},"keywords":{}}],["96",{"_index":673,"title":{},"content":{"45":{"position":[[18,2]]},"101":{"position":[[178,2]]},"255":{"position":[[2699,2]]},"262":{"position":[[269,2]]},"263":{"position":[[348,2]]},"264":{"position":[[409,2]]},"273":{"position":[[2242,2]]},"292":{"position":[[159,3]]},"293":{"position":[[11,2]]}},"keywords":{}}],["97",{"_index":942,"title":{},"content":{"67":{"position":[[551,3]]}},"keywords":{}}],["98",{"_index":677,"title":{},"content":{"45":{"position":[[118,4]]},"55":{"position":[[748,4]]}},"keywords":{}}],["_",{"_index":68,"title":{},"content":{"3":{"position":[[610,1]]}},"keywords":{}}],["__init__",{"_index":1054,"title":{},"content":{"77":{"position":[[1875,10]]}},"keywords":{}}],["__init__(self",{"_index":1964,"title":{},"content":{"204":{"position":[[596,15]]},"209":{"position":[[266,15]]},"281":{"position":[[693,15]]}},"keywords":{}}],["__init__.pi",{"_index":140,"title":{},"content":{"7":{"position":[[6,11]]},"31":{"position":[[7,13]]},"79":{"position":[[414,11]]},"84":{"position":[[189,11]]},"136":{"position":[[38,11],[314,11]]}},"keywords":{}}],["__init__.pylazi",{"_index":771,"title":{},"content":{"52":{"position":[[547,15]]}},"keywords":{}}],["__init__?check",{"_index":2975,"title":{},"content":{"299":{"position":[[75,15]]}},"keywords":{}}],["_async_update_data",{"_index":2790,"title":{},"content":{"278":{"position":[[262,20]]}},"keywords":{}}],["_async_update_data(self",{"_index":1316,"title":{},"content":{"114":{"position":[[54,24]]},"213":{"position":[[37,24]]},"221":{"position":[[19,24]]},"278":{"position":[[478,24]]}},"keywords":{}}],["_cached_period",{"_index":897,"title":{},"content":{"59":{"position":[[358,15]]},"62":{"position":[[255,17]]}},"keywords":{}}],["_cached_price_data",{"_index":903,"title":{},"content":{"60":{"position":[[108,18]]}},"keywords":{}}],["_cached_transformed_data",{"_index":872,"title":{},"content":{"57":{"position":[[48,24]]},"59":{"position":[[218,24]]},"60":{"position":[[205,24]]},"62":{"position":[[185,26]]}},"keywords":{}}],["_chart_refresh_task",{"_index":1106,"title":{},"content":{"83":{"position":[[346,19]]}},"keywords":{}}],["_check_midnight_turnover_needed(now",{"_index":2806,"title":{},"content":{"278":{"position":[[1349,36]]}},"keywords":{}}],["_compute_periods_hash",{"_index":974,"title":{},"content":{"70":{"position":[[266,23]]}},"keywords":{}}],["_compute_periods_hash()check",{"_index":968,"title":{},"content":{"70":{"position":[[48,28]]}},"keywords":{}}],["_config_cach",{"_index":894,"title":{},"content":{"59":{"position":[[165,13],[309,13]]}},"keywords":{}}],["_config_cache_valid",{"_index":895,"title":{},"content":{"59":{"position":[[188,19],[330,19]]}},"keywords":{}}],["_get_interval_value(offset",{"_index":643,"title":{},"content":{"43":{"position":[[108,27]]}},"keywords":{}}],["_handle_midnight_turnov",{"_index":730,"title":{},"content":{"51":{"position":[[731,27]]}},"keywords":{}}],["_handle_minute_refresh(self",{"_index":2851,"title":{},"content":{"280":{"position":[[243,28]]}},"keywords":{}}],["_handle_options_upd",{"_index":808,"title":{},"content":{"55":{"position":[[453,27]]},"69":{"position":[[12,24]]}},"keywords":{}}],["_handle_quarter_hour_refresh(self",{"_index":2825,"title":{},"content":{"279":{"position":[[602,34]]}},"keywords":{}}],["_impl.pi",{"_index":1641,"title":{},"content":{"150":{"position":[[487,8]]}},"keywords":{}}],["_internalhelp",{"_index":79,"title":{},"content":{"3":{"position":[[881,16]]}},"keywords":{}}],["_last_midnight_check",{"_index":2899,"title":{},"content":{"284":{"position":[[314,20]]}},"keywords":{}}],["_last_periods_hash",{"_index":898,"title":{},"content":{"59":{"position":[[381,18]]},"70":{"position":[[77,18]]}},"keywords":{}}],["_last_price_upd",{"_index":904,"title":{},"content":{"60":{"position":[[136,18]]}},"keywords":{}}],["_last_transformation_config",{"_index":905,"title":{},"content":{"60":{"position":[[237,27]]}},"keywords":{}}],["_logger.debug",{"_index":2225,"title":{},"content":{"243":{"position":[[1555,14]]}},"keywords":{}}],["_logger.debug("%",{"_index":1940,"title":{},"content":{"200":{"position":[[240,22]]}},"keywords":{}}],["_logger.debug("api",{"_index":2011,"title":{},"content":{"212":{"position":[[132,23]]}},"keywords":{}}],["_logger.debug("candid",{"_index":1371,"title":{},"content":{"122":{"position":[[80,29]]}},"keywords":{}}],["_logger.debug("curr",{"_index":2061,"title":{},"content":{"222":{"position":[[111,27]]}},"keywords":{}}],["_logger.debug("funct",{"_index":1381,"title":{},"content":{"124":{"position":[[110,28]]}},"keywords":{}}],["_logger.debug("memori",{"_index":1387,"title":{},"content":{"125":{"position":[[108,27]]}},"keywords":{}}],["_logger.debug("upd",{"_index":1364,"title":{},"content":{"121":{"position":[[180,28]]}},"keywords":{}}],["_logger.debug("us",{"_index":2016,"title":{},"content":{"213":{"position":[[158,25]]}},"keywords":{}}],["_logger.info",{"_index":2429,"title":{},"content":{"252":{"position":[[2088,13]]}},"keywords":{}}],["_logger.info("memori",{"_index":1947,"title":{},"content":{"201":{"position":[[104,26]]}},"keywords":{}}],["_logger.info("upd",{"_index":2053,"title":{},"content":{"221":{"position":[[150,25]]}},"keywords":{}}],["_logger.info("wait",{"_index":1400,"title":{},"content":{"128":{"position":[[63,26]]}},"keywords":{}}],["_logger.setlevel(logging.debug",{"_index":2965,"title":{},"content":{"296":{"position":[[24,31]]}},"keywords":{}}],["_logger.warn",{"_index":2425,"title":{},"content":{"252":{"position":[[1859,16]]}},"keywords":{}}],["_original_pric",{"_index":2491,"title":{},"content":{"255":{"position":[[2360,15]]}},"keywords":{}}],["_quarter_hour_timer_cancel",{"_index":2976,"title":{},"content":{"299":{"position":[[91,26]]}},"keywords":{}}],["_schedule_midnight_turnov",{"_index":980,"title":{},"content":{"71":{"position":[[163,29]]}},"keywords":{}}],["_should_update_price_data(self",{"_index":2939,"title":{},"content":{"288":{"position":[[51,31]]}},"keywords":{}}],["_standard_translations_cach",{"_index":759,"title":{},"content":{"52":{"position":[[46,28]]},"85":{"position":[[176,28]]}},"keywords":{}}],["_translation_cach",{"_index":1956,"title":{},"content":{"204":{"position":[[233,19],[395,19]]}},"keywords":{}}],["_translation_cache[cache_key",{"_index":1962,"title":{},"content":{"204":{"position":[[415,29],[487,29]]}},"keywords":{}}],["_translations_cach",{"_index":758,"title":{},"content":{"52":{"position":[[22,19]]},"72":{"position":[[139,19]]},"85":{"position":[[155,20]]}},"keywords":{}}],["abc1234](link",{"_index":1867,"title":{},"content":{"181":{"position":[[114,15]]}},"keywords":{}}],["aboutno",{"_index":2688,"title":{},"content":{"273":{"position":[[847,7]]}},"keywords":{}}],["abov",{"_index":2100,"title":{},"content":{"237":{"position":[[117,5]]},"238":{"position":[[305,5]]},"243":{"position":[[1370,5]]},"245":{"position":[[89,5],[196,5]]},"247":{"position":[[107,5]]},"248":{"position":[[548,5]]}},"keywords":{}}],["abrupt",{"_index":2234,"title":{},"content":{"243":{"position":[[1985,6]]}},"keywords":{}}],["abs(actu",{"_index":2473,"title":{},"content":{"255":{"position":[[1406,10]]}},"keywords":{}}],["abs(config.flex",{"_index":2393,"title":{},"content":{"252":{"position":[[209,16]]}},"keywords":{}}],["abs(criteria.flex",{"_index":2223,"title":{},"content":{"243":{"position":[[1269,18]]}},"keywords":{}}],["abs(flex",{"_index":2348,"title":{},"content":{"247":{"position":[[70,9]]}},"keywords":{}}],["abs(p",{"_index":2476,"title":{},"content":{"255":{"position":[[1554,6]]}},"keywords":{}}],["absolut",{"_index":494,"title":{},"content":{"36":{"position":[[170,8]]},"42":{"position":[[513,8]]},"247":{"position":[[4,8]]},"252":{"position":[[611,8]]},"273":{"position":[[3724,8]]},"279":{"position":[[1390,8],[1989,8]]}},"keywords":{}}],["abstract",{"_index":543,"title":{},"content":{"37":{"position":[[653,8]]}},"keywords":{}}],["accept",{"_index":2161,"title":{},"content":{"241":{"position":[[200,8],[273,8]]},"243":{"position":[[730,9]]},"248":{"position":[[485,10]]},"259":{"position":[[112,6]]},"263":{"position":[[255,6]]}},"keywords":{}}],["access",{"_index":217,"title":{},"content":{"16":{"position":[[56,6]]},"31":{"position":[[1262,6]]},"52":{"position":[[132,9],[621,6],[665,6],[840,8]]},"62":{"position":[[675,8]]},"67":{"position":[[713,6]]},"86":{"position":[[179,6],[409,6]]},"205":{"position":[[169,8]]}},"keywords":{}}],["accessfocus",{"_index":656,"title":{},"content":{"43":{"position":[[646,13]]}},"keywords":{}}],["accessinterval.pi",{"_index":545,"title":{},"content":{"37":{"position":[[694,17]]}},"keywords":{}}],["account",{"_index":2076,"title":{},"content":{"229":{"position":[[70,7]]},"255":{"position":[[3167,8]]}},"keywords":{}}],["accumul",{"_index":1135,"title":{},"content":{"87":{"position":[[153,12]]},"150":{"position":[[562,10]]}},"keywords":{}}],["accuraci",{"_index":2519,"title":{},"content":{"255":{"position":[[3284,8]]}},"keywords":{}}],["accuracyus",{"_index":2299,"title":{},"content":{"246":{"position":[[1030,12]]}},"keywords":{}}],["act",{"_index":230,"title":{},"content":{"17":{"position":[[203,3]]},"273":{"position":[[4088,7]]}},"keywords":{}}],["action",{"_index":1861,"title":{},"content":{"180":{"position":[[227,7]]},"185":{"position":[[269,7]]},"194":{"position":[[546,8]]},"224":{"position":[[423,7]]},"246":{"position":[[672,7]]}},"keywords":{}}],["activ",{"_index":504,"title":{},"content":{"36":{"position":[[547,7]]},"77":{"position":[[1729,6]]},"163":{"position":[[252,6]]},"165":{"position":[[113,6]]},"174":{"position":[[594,6]]},"256":{"position":[[510,6]]},"262":{"position":[[423,6]]},"267":{"position":[[361,9]]}},"keywords":{}}],["activeif",{"_index":2611,"title":{},"content":{"267":{"position":[[929,8]]}},"keywords":{}}],["actual",{"_index":1647,"title":{"288":{"position":[[24,8]]}},"content":{"150":{"position":[[787,6]]},"255":{"position":[[1168,7]]},"272":{"position":[[961,8],[1154,6],[2066,6]]},"286":{"position":[[207,8]]}},"keywords":{}}],["ad",{"_index":600,"title":{},"content":{"41":{"position":[[435,6],[496,6],[577,6]]},"93":{"position":[[53,6]]},"273":{"position":[[3824,5]]}},"keywords":{}}],["adapt",{"_index":2618,"title":{},"content":{"269":{"position":[[1,8]]},"272":{"position":[[4,8],[142,8]]}},"keywords":{}}],["adaptive_flex",{"_index":2635,"title":{},"content":{"272":{"position":[[260,13],[365,13],[429,13]]}},"keywords":{}}],["add",{"_index":221,"title":{},"content":{"17":{"position":[[1,3]]},"18":{"position":[[35,3],[76,3],[104,3],[442,3]]},"37":{"position":[[1243,3],[1284,3]]},"43":{"position":[[1135,3],[1165,3]]},"62":{"position":[[121,4]]},"90":{"position":[[275,3]]},"110":{"position":[[1,3]]},"121":{"position":[[150,3]]},"128":{"position":[[1,3]]},"129":{"position":[[49,3]]},"149":{"position":[[176,3]]},"154":{"position":[[313,3]]},"171":{"position":[[156,3]]},"196":{"position":[[79,3],[183,3]]},"273":{"position":[[1161,3],[1325,4]]},"278":{"position":[[1170,4]]}},"keywords":{}}],["add/modify/remove)test",{"_index":1671,"title":{},"content":{"157":{"position":[[98,23]]}},"keywords":{}}],["added/upd",{"_index":288,"title":{},"content":{"21":{"position":[[256,13]]}},"keywords":{}}],["addedal",{"_index":1527,"title":{},"content":{"137":{"position":[[337,8]]}},"keywords":{}}],["addit",{"_index":343,"title":{"82":{"position":[[3,10]]}},"content":{"26":{"position":[[95,10]]}},"keywords":{}}],["address",{"_index":344,"title":{},"content":{"26":{"position":[[117,7]]},"99":{"position":[[81,7]]}},"keywords":{}}],["address1",{"_index":1189,"title":{},"content":{"99":{"position":[[91,8]]}},"keywords":{}}],["adjust",{"_index":2129,"title":{},"content":{"239":{"position":[[492,6],[810,6],[1165,7]]},"243":{"position":[[315,8],[1015,9],[1729,8]]},"248":{"position":[[428,11]]},"252":{"position":[[1053,7]]},"267":{"position":[[521,9]]},"269":{"position":[[33,6]]},"272":{"position":[[68,6],[527,9]]},"273":{"position":[[4548,6]]}},"keywords":{}}],["adjusted_min_dist",{"_index":2190,"title":{},"content":{"243":{"position":[[189,21],[1203,21],[1432,21],[1696,22]]}},"keywords":{}}],["adjusted_min_distance/100",{"_index":2231,"title":{},"content":{"243":{"position":[[1821,26],[1895,26]]}},"keywords":{}}],["adjustmost",{"_index":2345,"title":{},"content":{"246":{"position":[[2669,10]]}},"keywords":{}}],["adopt",{"_index":2341,"title":{},"content":{"246":{"position":[[2451,9]]}},"keywords":{}}],["affect",{"_index":882,"title":{},"content":{"57":{"position":[[639,6]]},"143":{"position":[[162,9],[412,9]]},"170":{"position":[[122,8]]},"215":{"position":[[1,7]]},"239":{"position":[[1096,6]]},"255":{"position":[[2450,7]]}},"keywords":{}}],["against",{"_index":2721,"title":{},"content":{"273":{"position":[[2747,7],[2901,7]]}},"keywords":{}}],["agents.md",{"_index":107,"title":{},"content":{"3":{"position":[[1442,9]]},"8":{"position":[[174,9]]},"22":{"position":[[201,9]]},"132":{"position":[[41,10],[366,9]]},"133":{"position":[[1246,9]]},"161":{"position":[[34,9]]},"163":{"position":[[119,9],[308,9],[451,9],[485,10],[641,9]]},"174":{"position":[[277,11]]},"233":{"position":[[149,9]]}},"keywords":{}}],["agents.mdmov",{"_index":1639,"title":{},"content":{"150":{"position":[[406,14]]}},"keywords":{}}],["agents.mdus",{"_index":1541,"title":{},"content":{"139":{"position":[[92,12]]}},"keywords":{}}],["aggreg",{"_index":539,"title":{},"content":{"37":{"position":[[566,11]]},"38":{"position":[[86,11]]}},"keywords":{}}],["aggress",{"_index":2239,"title":{},"content":{"243":{"position":[[2114,11]]},"246":{"position":[[785,10]]},"255":{"position":[[3712,11]]},"270":{"position":[[41,10]]},"273":{"position":[[54,10]]}},"keywords":{}}],["aggressive/conserv",{"_index":2683,"title":{},"content":{"273":{"position":[[575,23]]}},"keywords":{}}],["ahead",{"_index":2737,"title":{},"content":{"273":{"position":[[3432,5]]}},"keywords":{}}],["ai",{"_index":702,"title":{"132":{"position":[[3,2]]},"133":{"position":[[0,2]]},"163":{"position":[[17,2]]}},"content":{"48":{"position":[[315,2]]},"73":{"position":[[151,2]]},"132":{"position":[[93,2],[384,2]]},"133":{"position":[[46,2],[95,2],[110,2],[957,2],[1216,2]]},"147":{"position":[[61,2]]},"163":{"position":[[19,2],[86,2],[103,2],[171,3],[295,2],[522,2],[703,2]]},"179":{"position":[[362,2],[660,2],[834,2],[1010,2]]},"180":{"position":[[378,3]]},"196":{"position":[[316,2]]},"274":{"position":[[88,2]]},"300":{"position":[[150,2]]}},"keywords":{}}],["ai'",{"_index":1469,"title":{},"content":{"133":{"position":[[1096,4]]}},"keywords":{}}],["ai/copilot",{"_index":1428,"title":{},"content":{"132":{"position":[[10,10]]}},"keywords":{}}],["ai/human",{"_index":1695,"title":{},"content":{"161":{"position":[[94,9]]}},"keywords":{}}],["aiohttp)loc",{"_index":120,"title":{},"content":{"4":{"position":[[66,13]]}},"keywords":{}}],["aioprof",{"_index":1951,"title":{},"content":{"202":{"position":[[11,7],[34,7],[73,7]]}},"keywords":{}}],["aktualisiert",{"_index":2920,"title":{},"content":{"286":{"position":[[104,13]]}},"keywords":{}}],["alert",{"_index":2294,"title":{},"content":{"246":{"position":[[849,5],[1324,5]]}},"keywords":{}}],["alert>",{"_index":1916,"title":{},"content":{"195":{"position":[[207,9]]}},"keywords":{}}],["algorithm",{"_index":2090,"title":{},"content":{"235":{"position":[[104,10]]},"239":{"position":[[998,9]]},"252":{"position":[[1394,9]]},"255":{"position":[[790,9],[1924,9]]},"272":{"position":[[112,10],[1852,10],[1963,9]]}},"keywords":{}}],["alias",{"_index":70,"title":{},"content":{"3":{"position":[[628,7]]}},"keywords":{}}],["all_pric",{"_index":2441,"title":{},"content":{"255":{"position":[[95,11]]},"273":{"position":[[1714,11]]}},"keywords":{}}],["alllightweight",{"_index":2962,"title":{},"content":{"294":{"position":[[113,15]]}},"keywords":{}}],["allow",{"_index":1650,"title":{},"content":{"152":{"position":[[93,6]]},"241":{"position":[[461,6]]}},"keywords":{}}],["alongsid",{"_index":1460,"title":{},"content":{"133":{"position":[[875,9]]}},"keywords":{}}],["alreadi",{"_index":1105,"title":{},"content":{"83":{"position":[[319,7]]},"186":{"position":[[357,7]]},"194":{"position":[[11,7],[575,7]]},"204":{"position":[[36,7],[201,7]]},"212":{"position":[[1,7]]},"258":{"position":[[92,7]]},"278":{"position":[[1509,7]]},"279":{"position":[[794,7]]},"284":{"position":[[495,7]]}},"keywords":{}}],["altern",{"_index":2331,"title":{},"content":{"246":{"position":[[2015,12]]},"255":{"position":[[1997,12],[3643,11]]},"273":{"position":[[600,12],[4347,11]]}},"keywords":{}}],["alway",{"_index":126,"title":{},"content":{"6":{"position":[[1,6]]},"8":{"position":[[1,6]]},"100":{"position":[[266,6]]},"132":{"position":[[352,6]]},"162":{"position":[[188,6]]},"179":{"position":[[959,7]]},"239":{"position":[[1565,6]]},"273":{"position":[[4720,6]]},"301":{"position":[[223,8]]}},"keywords":{}}],["always)tim",{"_index":2984,"title":{},"content":{"301":{"position":[[162,13]]}},"keywords":{}}],["amend",{"_index":1907,"title":{},"content":{"194":{"position":[[328,5],[358,5]]}},"keywords":{}}],["amp",{"_index":1588,"title":{},"content":{"146":{"position":[[547,5]]},"156":{"position":[[201,5]]},"171":{"position":[[224,5]]},"176":{"position":[[33,5]]},"181":{"position":[[302,5]]}},"keywords":{}}],["amp;lt;100ms."""",{"_index":2039,"title":{},"content":{"218":{"position":[[160,32]]}},"keywords":{}}],["analysi",{"_index":556,"title":{"82":{"position":[[14,8]]},"242":{"position":[[13,9]]}},"content":{"37":{"position":[[971,8]]},"78":{"position":[[407,8]]}},"keywords":{}}],["analysistrailing/lead",{"_index":1525,"title":{},"content":{"137":{"position":[[246,24]]}},"keywords":{}}],["analysistrend.pi",{"_index":555,"title":{},"content":{"37":{"position":[[938,16]]}},"keywords":{}}],["analyz",{"_index":1096,"title":{"90":{"position":[[3,8]]}},"content":{"82":{"position":[[21,8]]},"90":{"position":[[444,9]]},"93":{"position":[[93,8]]}},"keywords":{}}],["anneal",{"_index":2665,"title":{},"content":{"272":{"position":[[1986,9]]}},"keywords":{}}],["answer",{"_index":2871,"title":{},"content":{"281":{"position":[[72,7]]},"286":{"position":[[145,7]]}},"keywords":{}}],["anti",{"_index":1436,"title":{"258":{"position":[[2,4]]},"259":{"position":[[2,4]]},"260":{"position":[[2,4]]}},"content":{"132":{"position":[[236,4]]}},"keywords":{}}],["apach",{"_index":1549,"title":{},"content":{"141":{"position":[[36,6]]}},"keywords":{}}],["apexchart",{"_index":443,"title":{},"content":{"31":{"position":[[1328,10]]}},"keywords":{}}],["api",{"_index":61,"title":{"45":{"position":[[0,3]]},"51":{"position":[[14,3]]},"84":{"position":[[3,3]]},"96":{"position":[[0,3]]},"212":{"position":[[9,3]]},"287":{"position":[[38,4]]}},"content":{"3":{"position":[[516,4]]},"4":{"position":[[80,6]]},"8":{"position":[[19,3]]},"41":{"position":[[94,3]]},"42":{"position":[[1,3],[750,3]]},"45":{"position":[[21,3],[68,3]]},"50":{"position":[[99,3]]},"51":{"position":[[104,3],[1299,3]]},"60":{"position":[[353,3]]},"61":{"position":[[105,3]]},"62":{"position":[[62,3]]},"64":{"position":[[42,3]]},"65":{"position":[[35,3]]},"66":{"position":[[97,3]]},"67":{"position":[[104,3],[568,3]]},"90":{"position":[[104,3]]},"101":{"position":[[8,3]]},"107":{"position":[[5,3],[336,3],[373,3]]},"111":{"position":[[566,3],[617,3]]},"136":{"position":[[156,3]]},"137":{"position":[[208,3]]},"143":{"position":[[267,4]]},"157":{"position":[[220,4]]},"204":{"position":[[21,4]]},"207":{"position":[[15,3]]},"212":{"position":[[120,3]]},"229":{"position":[[90,3]]},"277":{"position":[[156,3]]},"278":{"position":[[413,3],[960,3],[1254,3]]},"279":{"position":[[259,3]]},"285":{"position":[[184,3],[461,4]]},"287":{"position":[[89,3],[141,3],[472,3]]},"288":{"position":[[574,3],[611,3]]},"289":{"position":[[109,3]]},"290":{"position":[[142,3]]},"292":{"position":[[113,4]]},"293":{"position":[[82,3]]},"294":{"position":[[80,3]]},"296":{"position":[[113,3],[150,3]]},"299":{"position":[[253,3]]}},"keywords":{}}],["api)tim",{"_index":2985,"title":{},"content":{"301":{"position":[[301,9]]}},"keywords":{}}],["api."""",{"_index":1318,"title":{},"content":{"114":{"position":[[125,22]]},"213":{"position":[[108,22]]}},"keywords":{}}],["api.pi",{"_index":488,"title":{},"content":{"36":{"position":[[41,6]]},"136":{"position":[[132,6]]}},"keywords":{}}],["api.pyapi",{"_index":388,"title":{},"content":{"31":{"position":[[204,9]]}},"keywords":{}}],["api/client.pi",{"_index":1112,"title":{},"content":{"84":{"position":[[173,13]]}},"keywords":{}}],["apicli",{"_index":48,"title":{},"content":{"3":{"position":[[286,10]]}},"keywords":{}}],["apiresult",{"_index":2805,"title":{},"content":{"278":{"position":[[1243,10]]}},"keywords":{}}],["apistor",{"_index":398,"title":{},"content":{"31":{"position":[[346,8]]}},"keywords":{}}],["appear",{"_index":1668,"title":{},"content":{"156":{"position":[[255,6]]},"178":{"position":[[307,6]]}},"keywords":{}}],["appli",{"_index":1278,"title":{},"content":{"110":{"position":[[124,6]]},"133":{"position":[[162,8]]},"243":{"position":[[1723,5]]},"247":{"position":[[878,7]]}},"keywords":{}}],["applianc",{"_index":2269,"title":{},"content":{"246":{"position":[[177,10],[203,10]]},"272":{"position":[[2099,9]]},"273":{"position":[[1128,11]]}},"keywords":{}}],["appnicknam",{"_index":1188,"title":{},"content":{"99":{"position":[[69,11]]}},"keywords":{}}],["approach",{"_index":285,"title":{"251":{"position":[[12,9]]}},"content":{"21":{"position":[[180,8]]},"146":{"position":[[323,8]]},"149":{"position":[[99,10]]},"150":{"position":[[646,8]]},"159":{"position":[[114,8]]},"171":{"position":[[88,8]]},"172":{"position":[[59,10]]},"243":{"position":[[1,9]]},"246":{"position":[[2442,8]]},"255":{"position":[[3117,9],[3655,10]]},"258":{"position":[[173,10]]},"269":{"position":[[169,9]]},"272":{"position":[[843,8],[925,9]]},"273":{"position":[[2307,9],[4359,10]]}},"keywords":{}}],["approach)document",{"_index":1564,"title":{},"content":{"143":{"position":[[619,22]]}},"keywords":{}}],["approach)refactor",{"_index":1558,"title":{},"content":{"143":{"position":[[460,21]]}},"keywords":{}}],["appropri",{"_index":2002,"title":{},"content":{"210":{"position":[[5,11]]}},"keywords":{}}],["approv",{"_index":1603,"title":{},"content":{"148":{"position":[[14,9]]}},"keywords":{}}],["architectur",{"_index":375,"title":{"29":{"position":[[0,12]]},"32":{"position":[[8,13]]},"37":{"position":[[7,12]]},"276":{"position":[[6,12]]}},"content":{"48":{"position":[[7,12]]},"57":{"position":[[708,13]]},"73":{"position":[[7,12]]},"131":{"position":[[220,12]]},"132":{"position":[[131,13]]},"279":{"position":[[1364,12]]},"300":{"position":[[1,12]]}},"keywords":{}}],["archiv",{"_index":1609,"title":{},"content":{"149":{"position":[[11,7],[254,7]]}},"keywords":{}}],["archivedplanning/config",{"_index":1720,"title":{},"content":{"166":{"position":[[58,23]]}},"keywords":{}}],["aren't",{"_index":2365,"title":{},"content":{"247":{"position":[[810,6]]}},"keywords":{}}],["aris",{"_index":1155,"title":{},"content":{"93":{"position":[[13,5]]}},"keywords":{}}],["around",{"_index":2696,"title":{},"content":{"273":{"position":[[1355,6]]}},"keywords":{}}],["arrang",{"_index":228,"title":{},"content":{"17":{"position":[[168,7]]}},"keywords":{}}],["arriv",{"_index":861,"title":{"61":{"position":[[14,7]]}},"content":{"56":{"position":[[1452,7]]}},"keywords":{}}],["artifact",{"_index":1494,"title":{},"content":{"135":{"position":[[191,9]]}},"keywords":{}}],["artifici",{"_index":2451,"title":{},"content":{"255":{"position":[[763,10]]},"273":{"position":[[4736,12]]}},"keywords":{}}],["ask",{"_index":1728,"title":{},"content":{"169":{"position":[[14,6]]}},"keywords":{}}],["assembl",{"_index":888,"title":{},"content":{"57":{"position":[[855,9]]}},"keywords":{}}],["assert",{"_index":233,"title":{},"content":{"17":{"position":[[250,6],[257,6]]},"218":{"position":[[306,6]]}},"keywords":{}}],["assign",{"_index":1086,"title":{"81":{"position":[[19,10]]}},"content":{"81":{"position":[[277,10]]},"89":{"position":[[415,10]]},"92":{"position":[[390,10]]}},"keywords":{}}],["assist",{"_index":37,"title":{"133":{"position":[[3,8]]}},"content":{"3":{"position":[[77,9]]},"21":{"position":[[229,9]]},"62":{"position":[[711,9]]},"75":{"position":[[6,9]]},"94":{"position":[[546,10]]},"95":{"position":[[6,9]]},"110":{"position":[[111,9]]},"132":{"position":[[96,10]]},"133":{"position":[[49,10],[176,9],[1025,9]]},"134":{"position":[[381,9]]},"135":{"position":[[123,9]]},"147":{"position":[[64,10]]},"156":{"position":[[80,9]]},"195":{"position":[[67,10]]},"226":{"position":[[71,9]]},"231":{"position":[[127,9]]},"232":{"position":[[14,9]]},"274":{"position":[[91,9]]},"280":{"position":[[986,9]]},"281":{"position":[[88,9]]}},"keywords":{}}],["assistant"",{"_index":1298,"title":{},"content":{"113":{"position":[[126,16]]}},"keywords":{}}],["assistant'",{"_index":1453,"title":{},"content":{"133":{"position":[[604,11]]},"278":{"position":[[75,11]]}},"keywords":{}}],["assistant.io/docs/asyncio_101/memori",{"_index":1176,"title":{},"content":{"95":{"position":[[157,36]]}},"keywords":{}}],["assistant.io/docs/integration_setup_failures/#cleanupasync",{"_index":1174,"title":{},"content":{"95":{"position":[[58,58]]}},"keywords":{}}],["assistant.log",{"_index":1352,"title":{},"content":{"120":{"position":[[52,13]]}},"keywords":{}}],["assum",{"_index":2532,"title":{},"content":{"255":{"position":[[3832,7]]}},"keywords":{}}],["assur",{"_index":1451,"title":{},"content":{"133":{"position":[[518,10]]}},"keywords":{}}],["asymmetr",{"_index":2265,"title":{"246":{"position":[[14,10]]}},"content":{"255":{"position":[[1283,10],[1702,10]]}},"keywords":{}}],["asymmetri",{"_index":2488,"title":{},"content":{"255":{"position":[[2168,9],[3045,9]]}},"keywords":{}}],["async",{"_index":223,"title":{"83":{"position":[[3,5]]},"202":{"position":[[0,5]]},"207":{"position":[[0,5]]}},"content":{"17":{"position":[[59,5]]},"55":{"position":[[443,5]]},"93":{"position":[[61,5]]},"114":{"position":[[44,5]]},"209":{"position":[[42,5]]},"213":{"position":[[27,5]]},"219":{"position":[[26,5]]},"221":{"position":[[9,5]]},"278":{"position":[[468,5]]},"279":{"position":[[592,5]]},"280":{"position":[[233,5]]},"281":{"position":[[436,5]]}},"keywords":{}}],["async_add_minute_update_listener())lifecycl",{"_index":1016,"title":{},"content":{"77":{"position":[[211,45]]}},"keywords":{}}],["async_add_minute_update_listener()coordinator/core.pi",{"_index":1029,"title":{},"content":{"77":{"position":[[731,53]]}},"keywords":{}}],["async_add_time_sensitive_listen",{"_index":1028,"title":{},"content":{"77":{"position":[[694,36]]}},"keywords":{}}],["async_add_time_sensitive_listener())minut",{"_index":1015,"title":{},"content":{"77":{"position":[[128,43]]}},"keywords":{}}],["async_add_time_sensitive_listener(self",{"_index":2882,"title":{},"content":{"281":{"position":[[769,39]]}},"keywords":{}}],["async_added_to_hass(self",{"_index":2875,"title":{},"content":{"281":{"position":[[446,26]]}},"keywords":{}}],["async_get_clientsess",{"_index":1146,"title":{},"content":{"90":{"position":[[142,24]]}},"keywords":{}}],["async_get_clientsession(hass",{"_index":1109,"title":{},"content":{"84":{"position":[[42,29]]}},"keywords":{}}],["async_load_standard_translations(hass",{"_index":145,"title":{},"content":{"7":{"position":[[95,38]]}},"keywords":{}}],["async_load_transl",{"_index":982,"title":{},"content":{"72":{"position":[[9,25]]}},"keywords":{}}],["async_load_translations(hass",{"_index":143,"title":{},"content":{"7":{"position":[[43,29]]},"52":{"position":[[498,29]]}},"keywords":{}}],["async_on_unload",{"_index":1048,"title":{},"content":{"77":{"position":[[1595,17],[1693,18]]}},"keywords":{}}],["async_on_unload()cleanup",{"_index":1047,"title":{},"content":{"77":{"position":[[1538,24]]}},"keywords":{}}],["async_remove_entry()coordinator/core.pi",{"_index":1077,"title":{},"content":{"79":{"position":[[428,39]]}},"keywords":{}}],["async_request_refresh",{"_index":963,"title":{},"content":{"69":{"position":[[141,23]]}},"keywords":{}}],["async_setup_entri",{"_index":141,"title":{},"content":{"7":{"position":[[18,18]]}},"keywords":{}}],["async_shutdown",{"_index":1045,"title":{},"content":{"77":{"position":[[1432,16]]},"79":{"position":[[470,16]]}},"keywords":{}}],["async_shutdown(self",{"_index":1989,"title":{},"content":{"209":{"position":[[52,21]]}},"keywords":{}}],["async_track_utc_time_chang",{"_index":1041,"title":{},"content":{"77":{"position":[[1211,29]]},"277":{"position":[[251,29],[329,29]]},"279":{"position":[[1417,29]]}},"keywords":{}}],["async_track_utc_time_change(minute=[0",{"_index":611,"title":{},"content":{"42":{"position":[[156,38]]},"279":{"position":[[108,38]]}},"keywords":{}}],["async_track_utc_time_change(second=0",{"_index":2848,"title":{},"content":{"280":{"position":[[102,37]]}},"keywords":{}}],["async_track_utc_time_change)listen",{"_index":2872,"title":{},"content":{"281":{"position":[[166,37]]}},"keywords":{}}],["async_unload_entri",{"_index":1056,"title":{},"content":{"77":{"position":[[1923,20]]}},"keywords":{}}],["async_update_time_sensitive_listeners(self",{"_index":2884,"title":{},"content":{"281":{"position":[[872,44]]}},"keywords":{}}],["async_will_remove_from_hass",{"_index":1032,"title":{},"content":{"77":{"position":[[886,29]]},"83":{"position":[[387,29]]}},"keywords":{}}],["async_will_remove_from_hass()binary_sensor/core.pi",{"_index":1031,"title":{},"content":{"77":{"position":[[833,50]]}},"keywords":{}}],["asyncio.gath",{"_index":1986,"title":{},"content":{"207":{"position":[[175,15]]}},"keywords":{}}],["atom",{"_index":1895,"title":{"191":{"position":[[3,6]]}},"content":{"278":{"position":[[1335,6]]},"279":{"position":[[814,6]]},"284":{"position":[[569,6]]},"299":{"position":[[181,7]]},"301":{"position":[[452,7]]}},"keywords":{}}],["attach",{"_index":1402,"title":{},"content":{"128":{"position":[[103,6],[191,6]]}},"keywords":{}}],["attempt",{"_index":772,"title":{},"content":{"52":{"position":[[596,8]]},"111":{"position":[[697,8]]},"251":{"position":[[210,8]]},"252":{"position":[[253,7],[321,8],[794,8]]}},"keywords":{}}],["attempts)cach",{"_index":865,"title":{},"content":{"56":{"position":[[1567,14]]}},"keywords":{}}],["attempts)configentryauthfail",{"_index":1261,"title":{},"content":{"106":{"position":[[582,30]]}},"keywords":{}}],["attribut",{"_index":247,"title":{"216":{"position":[[0,9]]}},"content":{"18":{"position":[[171,10]]},"37":{"position":[[307,10],[1167,10]]},"43":{"position":[[786,10]]},"52":{"position":[[825,10],[981,9]]},"118":{"position":[[208,11]]},"136":{"position":[[490,9],[700,9]]},"216":{"position":[[6,10],[71,10],[229,10]]},"273":{"position":[[3856,10]]}},"keywords":{}}],["attributeif",{"_index":2616,"title":{},"content":{"267":{"position":[[1105,11]]}},"keywords":{}}],["attributes."""",{"_index":1972,"title":{},"content":{"205":{"position":[[117,29]]}},"keywords":{}}],["attributes.pi",{"_index":1510,"title":{},"content":{"136":{"position":[[474,13],[677,13]]}},"keywords":{}}],["attributesservicestransl",{"_index":2070,"title":{},"content":{"226":{"position":[[122,29]]}},"keywords":{}}],["audienc",{"_index":1712,"title":{},"content":{"163":{"position":[[626,9]]},"235":{"position":[[248,9]]}},"keywords":{}}],["augment",{"_index":589,"title":{},"content":{"41":{"position":[[40,9]]}},"keywords":{}}],["auth",{"_index":1262,"title":{},"content":{"106":{"position":[[617,4]]}},"keywords":{}}],["authent",{"_index":1181,"title":{},"content":{"97":{"position":[[38,15]]}},"keywords":{}}],["author",{"_index":1184,"title":{},"content":{"97":{"position":[[70,13]]}},"keywords":{}}],["auto",{"_index":23,"title":{"185":{"position":[[25,4]]}},"content":{"1":{"position":[[175,4]]},"15":{"position":[[141,5]]},"60":{"position":[[287,4]]},"61":{"position":[[195,4]]},"67":{"position":[[317,4],[420,4]]},"135":{"position":[[147,5],[218,4]]},"167":{"position":[[102,4]]},"176":{"position":[[760,4]]},"182":{"position":[[93,4]]},"185":{"position":[[242,4]]},"189":{"position":[[24,4]]},"194":{"position":[[487,4]]},"269":{"position":[[28,4]]},"272":{"position":[[63,4]]}},"keywords":{}}],["autom",{"_index":301,"title":{"180":{"position":[[9,11]]}},"content":{"23":{"position":[[1,9]]},"133":{"position":[[530,9]]},"239":{"position":[[1103,10]]},"246":{"position":[[321,10],[652,11],[703,10]]},"250":{"position":[[198,10]]},"272":{"position":[[975,11]]},"273":{"position":[[4048,11]]}},"keywords":{}}],["automat",{"_index":182,"title":{},"content":{"12":{"position":[[243,14]]},"33":{"position":[[186,9],[470,9]]},"56":{"position":[[1133,10]]},"62":{"position":[[478,9],[544,9]]},"84":{"position":[[152,13]]},"87":{"position":[[45,13]]},"90":{"position":[[347,13]]},"93":{"position":[[245,9]]},"134":{"position":[[135,13]]},"176":{"position":[[22,10],[381,14],[823,14]]},"179":{"position":[[78,9],[762,13],[1016,13],[1088,12],[1115,13]]},"180":{"position":[[1,9],[162,9],[338,13]]},"182":{"position":[[67,9],[137,9],[354,9]]},"184":{"position":[[219,13]]},"185":{"position":[[277,13]]},"187":{"position":[[102,9],[180,9]]},"192":{"position":[[15,13]]},"196":{"position":[[444,9]]},"248":{"position":[[418,9]]},"278":{"position":[[196,13],[1567,9]]},"289":{"position":[[73,9]]}},"keywords":{}}],["automaticallyreleas",{"_index":1882,"title":{},"content":{"185":{"position":[[447,20]]}},"keywords":{}}],["automaticallytask",{"_index":1104,"title":{},"content":{"83":{"position":[[286,17]]}},"keywords":{}}],["automationsdiffer",{"_index":2697,"title":{},"content":{"273":{"position":[[1376,20]]}},"keywords":{}}],["aux",{"_index":1170,"title":{},"content":{"94":{"position":[[530,3]]}},"keywords":{}}],["avail",{"_index":1827,"title":{},"content":{"179":{"position":[[793,9],[1420,10]]},"285":{"position":[[284,10]]}},"keywords":{}}],["averag",{"_index":497,"title":{"238":{"position":[[44,9]]}},"content":{"36":{"position":[[288,10]]},"38":{"position":[[98,7],[150,7]]},"41":{"position":[[455,7]]},"107":{"position":[[46,7],[102,7]]},"136":{"position":[[238,7]]},"137":{"position":[[275,8]]},"235":{"position":[[206,8]]},"238":{"position":[[71,8],[180,7],[317,7]]},"255":{"position":[[3158,8],[3234,7],[3755,7]]},"259":{"position":[[234,7]]}},"keywords":{}}],["average"",{"_index":2280,"title":{},"content":{"246":{"position":[[405,13]]}},"keywords":{}}],["average)assign",{"_index":413,"title":{},"content":{"31":{"position":[[697,14]]}},"keywords":{}}],["average_utils.pi",{"_index":407,"title":{},"content":{"31":{"position":[[605,16]]},"136":{"position":[[219,16]]}},"keywords":{}}],["averagecustom",{"_index":1269,"title":{},"content":{"107":{"position":[[180,13]]}},"keywords":{}}],["averageeven",{"_index":2205,"title":{},"content":{"243":{"position":[[647,11]]}},"keywords":{}}],["averagescalcul",{"_index":411,"title":{},"content":{"31":{"position":[[653,17]]}},"keywords":{}}],["avg",{"_index":605,"title":{},"content":{"41":{"position":[[524,3]]},"238":{"position":[[422,4]]},"241":{"position":[[140,4]]},"242":{"position":[[129,3]]}},"keywords":{}}],["avg=20ct",{"_index":2728,"title":{},"content":{"273":{"position":[[3116,9]]}},"keywords":{}}],["avg=35ct",{"_index":2731,"title":{},"content":{"273":{"position":[[3184,9]]}},"keywords":{}}],["avg_context_residu",{"_index":2478,"title":{},"content":{"255":{"position":[[1593,20],[1678,21]]}},"keywords":{}}],["avg_pric",{"_index":2230,"title":{},"content":{"243":{"position":[[1804,9],[1878,9]]}},"keywords":{}}],["avg_price=avg_prices[ref_d",{"_index":2711,"title":{},"content":{"273":{"position":[[1969,31]]}},"keywords":{}}],["avoid",{"_index":39,"title":{"209":{"position":[[0,5]]}},"content":{"3":{"position":[[99,5]]},"25":{"position":[[157,6]]},"27":{"position":[[192,5]]},"52":{"position":[[103,5]]},"53":{"position":[[105,5]]},"56":{"position":[[79,5],[1794,6]]},"57":{"position":[[385,5]]},"62":{"position":[[288,6]]},"67":{"position":[[165,5],[248,5],[338,5],[443,5]]},"150":{"position":[[502,5]]},"280":{"position":[[1010,6]]}},"keywords":{}}],["avoiding)earli",{"_index":2296,"title":{},"content":{"246":{"position":[[980,14]]}},"keywords":{}}],["await",{"_index":142,"title":{},"content":{"7":{"position":[[37,5],[89,5]]},"51":{"position":[[865,5]]},"55":{"position":[[592,5]]},"204":{"position":[[137,5]]},"207":{"position":[[61,5],[98,5],[169,5],[350,5]]},"213":{"position":[[244,5]]},"219":{"position":[[239,5]]},"221":{"position":[[125,5]]},"278":{"position":[[653,5],[911,5]]},"279":{"position":[[838,5]]}},"keywords":{}}],["awar",{"_index":1829,"title":{},"content":{"179":{"position":[[854,5]]}},"keywords":{}}],["b",{"_index":189,"title":{"185":{"position":[[9,2]]}},"content":{"14":{"position":[[15,1],[62,1]]},"149":{"position":[[305,2]]},"252":{"position":[[1325,3]]},"287":{"position":[[291,2]]}},"keywords":{}}],["backend",{"_index":1813,"title":{},"content":{"179":{"position":[[88,7],[346,8],[732,7],[803,8],[1061,9]]},"180":{"position":[[354,8]]}},"keywords":{}}],["background",{"_index":991,"title":{},"content":{"75":{"position":[[53,11],[310,10]]},"92":{"position":[[153,10]]}},"keywords":{}}],["backoff",{"_index":1260,"title":{},"content":{"106":{"position":[[565,7]]}},"keywords":{}}],["backpressur",{"_index":2814,"title":{},"content":{"278":{"position":[[1683,12]]},"289":{"position":[[123,12]]}},"keywords":{}}],["balanc",{"_index":2624,"title":{},"content":{"269":{"position":[[342,7]]},"272":{"position":[[1565,7]]}},"keywords":{}}],["bar",{"_index":2856,"title":{},"content":{"280":{"position":[[600,3],[643,3],[766,4]]}},"keywords":{}}],["bare",{"_index":2559,"title":{},"content":{"259":{"position":[[221,6]]}},"keywords":{}}],["base",{"_index":464,"title":{},"content":{"33":{"position":[[381,5]]},"41":{"position":[[600,5]]},"57":{"position":[[830,5]]},"107":{"position":[[203,5]]},"157":{"position":[[293,5]]},"179":{"position":[[475,6],[1497,7]]},"245":{"position":[[298,4],[387,4]]},"252":{"position":[[761,4],[1120,4],[1138,5],[1277,4],[1311,4],[1431,5],[1465,4],[1575,4]]},"258":{"position":[[78,4]]},"267":{"position":[[531,4],[643,4],[686,4],[744,4]]},"269":{"position":[[45,5]]},"270":{"position":[[65,4]]},"272":{"position":[[80,5]]},"273":{"position":[[78,4],[99,4],[229,5],[378,4]]},"281":{"position":[[1229,5]]}},"keywords":{}}],["base.pi",{"_index":542,"title":{},"content":{"37":{"position":[[643,7]]}},"keywords":{}}],["base_flex",{"_index":2392,"title":{},"content":{"252":{"position":[[197,9],[309,9],[1489,9],[1805,9],[2007,9],[2031,9],[2221,9]]}},"keywords":{}}],["basecalcul",{"_index":544,"title":{},"content":{"37":{"position":[[662,14]]},"43":{"position":[[614,14]]}},"keywords":{}}],["baselin",{"_index":2370,"title":{},"content":{"248":{"position":[[124,8],[476,8]]},"250":{"position":[[52,8]]},"251":{"position":[[46,8]]},"253":{"position":[[240,8]]},"263":{"position":[[587,8]]},"265":{"position":[[16,8],[171,8]]},"266":{"position":[[164,8]]}},"keywords":{}}],["basic",{"_index":1669,"title":{},"content":{"156":{"position":[[267,5]]}},"keywords":{}}],["be",{"_index":281,"title":{},"content":{"21":{"position":[[124,5]]},"153":{"position":[[46,5]]}},"keywords":{}}],["bearer",{"_index":1182,"title":{},"content":{"97":{"position":[[54,6]]}},"keywords":{}}],["becom",{"_index":999,"title":{},"content":{"75":{"position":[[145,7]]},"241":{"position":[[518,7]]},"245":{"position":[[118,7]]},"247":{"position":[[135,7]]}},"keywords":{}}],["befor",{"_index":19,"title":{},"content":{"1":{"position":[[138,6]]},"3":{"position":[[1275,6]]},"22":{"position":[[1,6]]},"27":{"position":[[168,6]]},"51":{"position":[[228,6]]},"55":{"position":[[650,7]]},"133":{"position":[[715,6]]},"150":{"position":[[70,7]]},"182":{"position":[[297,6]]},"190":{"position":[[91,6]]},"196":{"position":[[292,6]]},"224":{"position":[[1,6]]},"255":{"position":[[723,6]]},"256":{"position":[[337,6]]},"273":{"position":[[3555,6],[3650,6],[4081,6]]}},"keywords":{}}],["before/aft",{"_index":617,"title":{},"content":{"42":{"position":[[251,12]]},"146":{"position":[[349,14]]}},"keywords":{}}],["begin",{"_index":885,"title":{},"content":{"57":{"position":[[700,6]]}},"keywords":{}}],["beginn",{"_index":352,"title":{},"content":{"27":{"position":[[52,8]]}},"keywords":{}}],["behavior",{"_index":483,"title":{"74":{"position":[[9,8]]}},"content":{"34":{"position":[[115,9]]},"48":{"position":[[117,9]]},"55":{"position":[[949,9]]},"57":{"position":[[471,9]]},"243":{"position":[[1992,8]]},"246":{"position":[[641,9],[1271,9],[2656,8]]},"252":{"position":[[1003,8],[1646,8]]},"255":{"position":[[3555,8]]},"262":{"position":[[74,9]]},"263":{"position":[[73,9]]},"264":{"position":[[73,9]]},"267":{"position":[[337,8]]},"272":{"position":[[640,8]]},"273":{"position":[[1486,9]]}},"keywords":{}}],["behavioradapt",{"_index":2646,"title":{},"content":{"272":{"position":[[1161,14]]}},"keywords":{}}],["behaviorprev",{"_index":2144,"title":{},"content":{"239":{"position":[[1114,16]]}},"keywords":{}}],["behind",{"_index":2089,"title":{},"content":{"235":{"position":[[74,6]]}},"keywords":{}}],["below",{"_index":1211,"title":{},"content":{"101":{"position":[[132,5]]},"237":{"position":[[231,5]]},"238":{"position":[[168,5]]},"242":{"position":[[239,5]]},"243":{"position":[[2145,5]]},"246":{"position":[[399,5]]},"259":{"position":[[228,5]]}},"keywords":{}}],["benchmark",{"_index":2035,"title":{"218":{"position":[[0,9]]}},"content":{},"keywords":{}}],["benefit",{"_index":561,"title":{},"content":{"37":{"position":[[1071,9]]},"43":{"position":[[1007,9]]},"67":{"position":[[540,9]]},"133":{"position":[[731,9]]},"143":{"position":[[337,7]]},"246":{"position":[[2686,7]]},"270":{"position":[[105,7]]},"272":{"position":[[468,9],[1120,9],[1997,9]]}},"keywords":{}}],["benutzen",{"_index":2914,"title":{},"content":{"286":{"position":[[61,9]]}},"keywords":{}}],["best",{"_index":839,"title":{"207":{"position":[[6,4]]},"289":{"position":[[25,4]]}},"content":{"56":{"position":[[677,4]]},"95":{"position":[[117,4]]},"111":{"position":[[356,4]]},"131":{"position":[[509,4]]},"133":{"position":[[186,4]]},"143":{"position":[[455,4]]},"179":{"position":[[788,4],[860,5]]},"196":{"position":[[52,4]]},"237":{"position":[[78,4],[314,5]]},"238":{"position":[[119,4],[401,5]]},"241":{"position":[[62,4]]},"242":{"position":[[24,4]]},"243":{"position":[[1850,4]]},"246":{"position":[[5,4],[98,4],[2308,4],[2550,4]]},"262":{"position":[[117,4]]},"265":{"position":[[88,4]]},"266":{"position":[[81,4]]},"280":{"position":[[996,4]]}},"keywords":{}}],["best/peak",{"_index":426,"title":{},"content":{"31":{"position":[[979,9]]},"36":{"position":[[362,9],[530,10]]},"37":{"position":[[1004,9]]},"78":{"position":[[349,9]]},"114":{"position":[[323,9]]},"243":{"position":[[809,9]]}},"keywords":{}}],["best_level_filt",{"_index":842,"title":{},"content":{"56":{"position":[[743,18]]}},"keywords":{}}],["best_price_flex",{"_index":2545,"title":{},"content":{"258":{"position":[[17,16],[229,16]]},"260":{"position":[[17,16],[190,16]]}},"keywords":{}}],["best_price_min_distance_from_avg",{"_index":2555,"title":{},"content":{"259":{"position":[[17,33],[260,33]]},"260":{"position":[[37,33],[210,33]]}},"keywords":{}}],["best_price_period_active)~50",{"_index":2844,"title":{},"content":{"279":{"position":[[1839,28]]}},"keywords":{}}],["best_price_remaining_minut",{"_index":2853,"title":{},"content":{"280":{"position":[[477,28]]}},"keywords":{}}],["beta/gql",{"_index":1180,"title":{},"content":{"97":{"position":[[27,8]]}},"keywords":{}}],["better",{"_index":1688,"title":{},"content":{"159":{"position":[[206,6]]},"171":{"position":[[81,6]]},"196":{"position":[[360,6]]},"238":{"position":[[100,7]]},"246":{"position":[[566,6],[1197,6]]},"273":{"position":[[3668,6]]}},"keywords":{}}],["better"no",{"_index":1744,"title":{},"content":{"170":{"position":[[361,14]]}},"keywords":{}}],["betterwould",{"_index":2690,"title":{},"content":{"273":{"position":[[883,11]]}},"keywords":{}}],["between",{"_index":41,"title":{},"content":{"3":{"position":[[122,7]]},"51":{"position":[[160,7]]},"57":{"position":[[437,7]]},"146":{"position":[[501,7]]},"179":{"position":[[187,7]]},"235":{"position":[[156,7]]},"264":{"position":[[242,7]]},"273":{"position":[[1058,7]]}},"keywords":{}}],["binari",{"_index":501,"title":{},"content":{"36":{"position":[[482,6]]},"81":{"position":[[213,6]]},"136":{"position":[[532,6]]},"157":{"position":[[59,6]]},"179":{"position":[[1641,6]]}},"keywords":{}}],["binary_sensor",{"_index":502,"title":{},"content":{"36":{"position":[[497,14]]}},"keywords":{}}],["binary_sensor)set",{"_index":380,"title":{},"content":{"31":{"position":[[104,18]]}},"keywords":{}}],["binary_sensor.pi",{"_index":1511,"title":{},"content":{"136":{"position":[[513,16]]}},"keywords":{}}],["black",{"_index":6,"title":{},"content":{"1":{"position":[[34,6]]}},"keywords":{}}],["blindli",{"_index":2938,"title":{},"content":{"288":{"position":[[19,7]]}},"keywords":{}}],["block",{"_index":775,"title":{},"content":{"52":{"position":[[644,8],[919,5],[972,8]]},"122":{"position":[[240,8],[293,8],[346,8]]},"207":{"position":[[242,5],[265,8],[305,6],[332,8]]},"241":{"position":[[550,6]]},"242":{"position":[[339,6]]},"267":{"position":[[81,6]]}},"keywords":{}}],["bodi",{"_index":1919,"title":{},"content":{"196":{"position":[[205,4]]}},"keywords":{}}],["bool",{"_index":739,"title":{},"content":{"51":{"position":[[987,5]]},"56":{"position":[[447,5]]},"255":{"position":[[353,5]]}},"keywords":{}}],["bootstrap",{"_index":1488,"title":{},"content":{"135":{"position":[[61,9]]}},"keywords":{}}],["both",{"_index":890,"title":{},"content":{"57":{"position":[[891,4]]},"189":{"position":[[1,4]]},"242":{"position":[[257,4]]},"243":{"position":[[372,4]]},"246":{"position":[[2082,4],[2095,4]]},"252":{"position":[[370,4]]},"262":{"position":[[410,4]]},"299":{"position":[[209,4]]}},"keywords":{}}],["bound",{"_index":1113,"title":{},"content":{"85":{"position":[[19,7]]},"90":{"position":[[204,7]]}},"keywords":{}}],["boundari",{"_index":89,"title":{},"content":{"3":{"position":[[1185,11]]},"31":{"position":[[1207,10]]},"36":{"position":[[200,8]]},"42":{"position":[[94,10],[284,8],[564,10]]},"137":{"position":[[151,8]]},"273":{"position":[[1458,8]]},"278":{"position":[[332,10]]},"279":{"position":[[228,10],[1136,8],[1468,10],[1966,8]]},"290":{"position":[[43,10]]}},"keywords":{}}],["boundaries)process",{"_index":2956,"title":{},"content":{"293":{"position":[[31,22]]}},"keywords":{}}],["boundariesinclud",{"_index":1737,"title":{},"content":{"170":{"position":[[179,18]]}},"keywords":{}}],["boundary"",{"_index":2971,"title":{},"content":{"297":{"position":[[84,14]]}},"keywords":{}}],["boundarysmart",{"_index":619,"title":{},"content":{"42":{"position":[[270,13]]}},"keywords":{}}],["box",{"_index":1766,"title":{},"content":{"173":{"position":[[277,6]]}},"keywords":{}}],["branch",{"_index":187,"title":{"14":{"position":[[12,7]]}},"content":{"14":{"position":[[92,6]]},"19":{"position":[[22,6]]}},"keywords":{}}],["break",{"_index":289,"title":{},"content":{"21":{"position":[[321,8]]},"152":{"position":[[1,8]]},"160":{"position":[[143,7]]},"174":{"position":[[73,8]]},"247":{"position":[[827,8]]},"273":{"position":[[3029,5]]}},"keywords":{}}],["breakdown",{"_index":1584,"title":{},"content":{"146":{"position":[[429,9]]}},"keywords":{}}],["breakdownno",{"_index":1745,"title":{},"content":{"170":{"position":[[382,11]]}},"keywords":{}}],["breakpoint",{"_index":1315,"title":{"114":{"position":[[4,12]]}},"content":{"114":{"position":[[148,12],[178,10],[366,12]]},"117":{"position":[[5,10]]},"129":{"position":[[53,11]]}},"keywords":{}}],["brew",{"_index":1845,"title":{},"content":{"179":{"position":[[1561,4]]}},"keywords":{}}],["brief",{"_index":279,"title":{},"content":{"21":{"position":[[80,5]]},"246":{"position":[[923,5],[1800,5]]}},"keywords":{}}],["brief)long",{"_index":2327,"title":{},"content":{"246":{"position":[[1889,12]]}},"keywords":{}}],["budget",{"_index":1662,"title":{},"content":{"153":{"position":[[231,6]]},"294":{"position":[[160,7]]}},"keywords":{}}],["buffer",{"_index":2750,"title":{},"content":{"273":{"position":[[3698,6]]}},"keywords":{}}],["bug",{"_index":197,"title":{},"content":{"14":{"position":[[138,3]]},"18":{"position":[[342,3]]},"28":{"position":[[17,3]]},"133":{"position":[[895,3]]},"143":{"position":[[542,3]]},"152":{"position":[[80,4]]},"181":{"position":[[148,3]]}},"keywords":{}}],["bugssom",{"_index":1466,"title":{},"content":{"133":{"position":[[1003,8]]}},"keywords":{}}],["build",{"_index":923,"title":{},"content":{"64":{"position":[[91,6]]},"65":{"position":[[103,6]]},"135":{"position":[[185,5]]}},"keywords":{}}],["build_extra_state_attribut",{"_index":667,"title":{},"content":{"43":{"position":[[975,30]]}},"keywords":{}}],["build_period",{"_index":2540,"title":{},"content":{"256":{"position":[[286,14]]},"262":{"position":[[443,14]]},"263":{"position":[[530,14]]},"264":{"position":[[559,14]]},"273":{"position":[[1679,16]]}},"keywords":{}}],["build_sensor_attribut",{"_index":666,"title":{},"content":{"43":{"position":[[948,26]]}},"keywords":{}}],["builder",{"_index":665,"title":{},"content":{"43":{"position":[[938,9]]},"136":{"position":[[500,8],[710,8]]}},"keywords":{}}],["built",{"_index":1797,"title":{"278":{"position":[[36,5]]}},"content":{"178":{"position":[[14,5]]},"179":{"position":[[1164,6]]},"277":{"position":[[136,5]]},"278":{"position":[[87,5]]},"279":{"position":[[1923,5]]},"301":{"position":[[41,5]]}},"keywords":{}}],["bulk",{"_index":102,"title":{"206":{"position":[[0,4]]}},"content":{"3":{"position":[[1391,4]]},"206":{"position":[[184,4]]}},"keywords":{}}],["bump",{"_index":1504,"title":{"192":{"position":[[11,5]]}},"content":{"135":{"position":[[484,5]]},"176":{"position":[[226,4],[467,4],[526,4],[721,4]]},"182":{"position":[[175,4]]},"184":{"position":[[257,5]]},"185":{"position":[[11,4],[186,4]]},"186":{"position":[[11,4],[111,4]]},"187":{"position":[[44,4],[314,6]]},"192":{"position":[[53,4]]},"194":{"position":[[390,4]]}},"keywords":{}}],["busi",{"_index":519,"title":{},"content":{"37":{"position":[[264,8]]},"43":{"position":[[834,8]]}},"keywords":{}}],["button",{"_index":1794,"title":{"178":{"position":[[13,6]]}},"content":{"182":{"position":[[187,6]]},"187":{"position":[[241,6]]}},"keywords":{}}],["buttonedit",{"_index":1804,"title":{},"content":{"178":{"position":[[156,10]]}},"keywords":{}}],["byte",{"_index":2032,"title":{},"content":{"216":{"position":[[210,6]]}},"keywords":{}}],["c",{"_index":1394,"title":{"186":{"position":[[9,2]]}},"content":{"126":{"position":[[55,1]]},"149":{"position":[[431,2]]},"202":{"position":[[96,1]]},"287":{"position":[[342,2]]}},"keywords":{}}],["c"",{"_index":1307,"title":{},"content":{"113":{"position":[[296,8]]}},"keywords":{}}],["cach",{"_index":391,"title":{"32":{"position":[[0,7]]},"34":{"position":[[0,5]]},"49":{"position":[[0,7]]},"51":{"position":[[23,6]]},"52":{"position":[[15,6]]},"53":{"position":[[21,6]]},"54":{"position":[[23,6]]},"55":{"position":[[24,6]]},"56":{"position":[[22,6]]},"57":{"position":[[18,5]]},"58":{"position":[[0,5]]},"62":{"position":[[0,5]]},"68":{"position":[[10,5]]},"78":{"position":[[3,5]]},"85":{"position":[[15,5]]},"204":{"position":[[0,8]]}},"content":{"31":{"position":[[239,5],[276,5],[297,6],[311,5],[380,5],[507,5],[524,5],[561,5],[782,5],[920,5],[935,6]]},"33":{"position":[[36,7],[124,5],[213,5],[262,5],[322,5],[407,5],[492,5]]},"34":{"position":[[50,5],[109,5],[129,7]]},"36":{"position":[[152,5]]},"38":{"position":[[278,7]]},"40":{"position":[[201,6]]},"43":{"position":[[776,8]]},"45":{"position":[[9,8],[54,8],[93,5]]},"46":{"position":[[37,7],[88,7]]},"47":{"position":[[34,5]]},"48":{"position":[[111,5]]},"50":{"position":[[33,7],[108,5],[154,5],[215,5],[271,5]]},"51":{"position":[[127,7],[190,7],[890,5],[1276,5],[1401,5]]},"52":{"position":[[189,7],[677,6],[803,5],[941,5]]},"53":{"position":[[195,7]]},"55":{"position":[[721,5],[787,5],[895,7]]},"56":{"position":[[181,7],[535,5],[1264,5],[1291,5],[1678,6],[1695,5],[1786,7]]},"57":{"position":[[143,7],[482,6],[543,5],[896,6]]},"60":{"position":[[93,5],[192,5],[281,5]]},"61":{"position":[[189,5]]},"62":{"position":[[5,6],[71,5],[179,5],[249,5],[282,5],[329,5],[362,5],[399,5],[456,5],[522,5],[593,5],[664,6]]},"64":{"position":[[58,6],[103,8],[144,8],[220,7],[269,5],[319,8]]},"65":{"position":[[53,6],[129,6],[170,6],[287,5]]},"66":{"position":[[23,5]]},"67":{"position":[[1,5],[653,6],[742,5],[797,6],[910,5],[988,5]]},"70":{"position":[[132,6]]},"78":{"position":[[50,5],[111,5],[182,5],[219,5],[331,5],[384,5]]},"79":{"position":[[301,5]]},"83":{"position":[[146,5]]},"85":{"position":[[27,5],[85,5]]},"89":{"position":[[190,5]]},"90":{"position":[[185,5],[193,5]]},"92":{"position":[[229,6]]},"99":{"position":[[252,6]]},"100":{"position":[[326,6]]},"101":{"position":[[203,6]]},"111":{"position":[[147,5],[166,6],[261,5]]},"131":{"position":[[315,5]]},"136":{"position":[[120,7]]},"157":{"position":[[243,7],[271,5]]},"204":{"position":[[15,5],[179,5],[529,5]]},"212":{"position":[[23,5],[59,6]]},"213":{"position":[[184,6]]},"222":{"position":[[196,7],[215,5]]},"278":{"position":[[995,6]]},"283":{"position":[[208,7],[225,6]]},"284":{"position":[[125,6],[306,5]]},"288":{"position":[[264,5],[597,6]]},"292":{"position":[[60,6],[198,7]]},"296":{"position":[[171,6]]},"299":{"position":[[335,5]]},"300":{"position":[[67,5]]}},"keywords":{}}],["cache)coordin",{"_index":887,"title":{},"content":{"57":{"position":[[836,18]]}},"keywords":{}}],["cache)invalid",{"_index":881,"title":{},"content":{"57":{"position":[[588,17]]}},"keywords":{}}],["cache_ag",{"_index":2013,"title":{},"content":{"212":{"position":[[197,10]]}},"keywords":{}}],["cache_age=%s)"",{"_index":2012,"title":{},"content":{"212":{"position":[[165,21]]}},"keywords":{}}],["cache_key",{"_index":1960,"title":{},"content":{"204":{"position":[[332,9],[378,9]]}},"keywords":{}}],["cache_valid",{"_index":2940,"title":{},"content":{"288":{"position":[[286,12]]}},"keywords":{}}],["cached/transform",{"_index":2958,"title":{},"content":{"293":{"position":[[98,18]]}},"keywords":{}}],["cachedata",{"_index":738,"title":{},"content":{"51":{"position":[[970,10]]}},"keywords":{}}],["cacheslint",{"_index":1495,"title":{},"content":{"135":{"position":[[205,10]]}},"keywords":{}}],["caching)configur",{"_index":2672,"title":{},"content":{"272":{"position":[[2221,21]]}},"keywords":{}}],["cachingautomat",{"_index":1522,"title":{},"content":{"137":{"position":[[63,16]]}},"keywords":{}}],["cachingtiming.pi",{"_index":557,"title":{},"content":{"37":{"position":[[985,16]]}},"keywords":{}}],["calcul",{"_index":408,"title":{"37":{"position":[[20,11]]},"43":{"position":[[3,10]]},"56":{"position":[[10,11]]},"70":{"position":[[16,11]]},"122":{"position":[[7,11]]},"234":{"position":[[7,11]]}},"content":{"31":{"position":[[622,9],[795,11]]},"36":{"position":[[328,10],[385,11]]},"37":{"position":[[26,10],[214,11],[226,11],[294,12],[443,10],[600,10],[730,12],[1144,11],[1263,11]]},"38":{"position":[[55,12],[158,12]]},"43":{"position":[[22,11],[455,10],[486,11],[548,11],[589,10],[1090,12]]},"50":{"position":[[259,11]]},"55":{"position":[[868,11]]},"56":{"position":[[102,12],[248,10],[1504,12],[1643,11],[1717,11]]},"57":{"position":[[576,11],[802,11]]},"62":{"position":[[228,11]]},"64":{"position":[[126,12]]},"65":{"position":[[150,12]]},"67":{"position":[[274,11],[358,11],[636,11]]},"78":{"position":[[208,10]]},"107":{"position":[[56,10],[112,10]]},"111":{"position":[[276,12],[344,11]]},"114":{"position":[[198,12]]},"131":{"position":[[121,11]]},"136":{"position":[[246,11]]},"137":{"position":[[284,10]]},"198":{"position":[[109,12]]},"205":{"position":[[149,9]]},"218":{"position":[[129,11]]},"235":{"position":[[92,11],[305,11],[384,11],[590,10]]},"239":{"position":[[1201,11]]},"251":{"position":[[36,9]]},"255":{"position":[[8,11]]},"265":{"position":[[76,11]]},"266":{"position":[[69,11],[358,11]]},"267":{"position":[[23,11]]},"269":{"position":[[15,12]]},"272":{"position":[[18,11]]},"273":{"position":[[2222,10],[5313,12]]},"285":{"position":[[225,9]]}},"keywords":{}}],["calculate)frequ",{"_index":2952,"title":{},"content":{"292":{"position":[[138,20]]}},"keywords":{}}],["calculate_period",{"_index":1320,"title":{},"content":{"114":{"position":[[254,22]]},"255":{"position":[[76,18]]}},"keywords":{}}],["calculate_periods(coordinator.data",{"_index":2040,"title":{},"content":{"218":{"position":[[231,35]]}},"keywords":{}}],["calculate_periods_with_relax",{"_index":2446,"title":{},"content":{"255":{"position":[[468,38]]}},"keywords":{}}],["calculation"",{"_index":971,"title":{},"content":{"70":{"position":[[146,17]]}},"keywords":{}}],["calculation.md",{"_index":2775,"title":{},"content":{"273":{"position":[[5075,14]]}},"keywords":{}}],["calculationarchitectur",{"_index":2781,"title":{},"content":{"274":{"position":[[28,23]]}},"keywords":{}}],["calculatoreasi",{"_index":569,"title":{},"content":{"37":{"position":[[1225,14]]}},"keywords":{}}],["calendar",{"_index":550,"title":{},"content":{"37":{"position":[[826,8]]},"43":{"position":[[281,8]]}},"keywords":{}}],["call",{"_index":438,"title":{"45":{"position":[[4,4]]},"212":{"position":[[13,6]]}},"content":{"31":{"position":[[1240,5]]},"37":{"position":[[508,4]]},"51":{"position":[[108,5]]},"53":{"position":[[132,5]]},"67":{"position":[[108,5],[572,5]]},"69":{"position":[[37,7]]},"72":{"position":[[35,6]]},"198":{"position":[[189,6]]},"207":{"position":[[19,6]]},"212":{"position":[[156,5]]},"281":{"position":[[236,6]]},"288":{"position":[[578,5]]},"292":{"position":[[176,6]]},"293":{"position":[[86,6]]},"294":{"position":[[84,6]]},"296":{"position":[[154,4]]},"299":{"position":[[65,6]]}},"keywords":{}}],["callback",{"_index":71,"title":{},"content":{"3":{"position":[[640,9]]},"77":{"position":[[257,9],[610,9]]},"92":{"position":[[111,8]]},"209":{"position":[[220,10],[341,10]]},"281":{"position":[[208,8],[299,10],[382,8],[505,8],[755,9],[809,10],[962,8],[1006,10]]},"301":{"position":[[569,8]]}},"keywords":{}}],["callbackswithout",{"_index":1042,"title":{},"content":{"77":{"position":[[1260,16]]}},"keywords":{}}],["callbackwithout",{"_index":1051,"title":{},"content":{"77":{"position":[[1677,15]]}},"keywords":{}}],["calledbuilt",{"_index":804,"title":{},"content":{"55":{"position":[[290,11]]}},"keywords":{}}],["calledobserv",{"_index":2990,"title":{},"content":{"301":{"position":[[588,14]]}},"keywords":{}}],["callno",{"_index":1134,"title":{},"content":{"87":{"position":[[137,6]]}},"keywords":{}}],["calls)test",{"_index":1673,"title":{},"content":{"157":{"position":[[182,10]]}},"keywords":{}}],["calls/day",{"_index":674,"title":{},"content":{"45":{"position":[[25,9],[72,9]]}},"keywords":{}}],["can't",{"_index":1731,"title":{},"content":{"169":{"position":[[86,5]]},"173":{"position":[[262,5]]},"255":{"position":[[3242,5],[3775,5]]}},"keywords":{}}],["cancel",{"_index":1034,"title":{},"content":{"77":{"position":[[978,9],[1025,9],[1072,9]]},"83":{"position":[[377,6]]},"92":{"position":[[139,9]]},"146":{"position":[[136,9]]}},"keywords":{}}],["cancel_timers()coordinator/core.pi",{"_index":1044,"title":{},"content":{"77":{"position":[[1395,34]]}},"keywords":{}}],["candid",{"_index":1375,"title":{},"content":{"122":{"position":[[169,12]]},"239":{"position":[[838,9]]}},"keywords":{}}],["cap",{"_index":2248,"title":{"244":{"position":[[23,5]]},"247":{"position":[[23,5]]}},"content":{"245":{"position":[[84,4],[169,3]]},"247":{"position":[[65,4],[416,7],[573,4],[948,7]]},"258":{"position":[[188,3]]},"270":{"position":[[26,3]]},"273":{"position":[[39,3]]}},"keywords":{}}],["cargo",{"_index":1838,"title":{},"content":{"179":{"position":[[1282,5],[1586,5],[1608,5]]}},"keywords":{}}],["cascad",{"_index":479,"title":{},"content":{"34":{"position":[[19,9]]},"62":{"position":[[381,9]]}},"keywords":{}}],["case",{"_index":1464,"title":{},"content":{"133":{"position":[[987,5]]},"182":{"position":[[12,4]]},"246":{"position":[[90,6]]},"250":{"position":[[90,5]]},"269":{"position":[[445,4]]},"272":{"position":[[1803,4]]},"273":{"position":[[492,4]]},"288":{"position":[[524,4]]}},"keywords":{}}],["casesreleas",{"_index":1424,"title":{},"content":{"131":{"position":[[398,12]]}},"keywords":{}}],["casestyp",{"_index":320,"title":{},"content":{"25":{"position":[[96,9]]}},"keywords":{}}],["caseus",{"_index":2344,"title":{},"content":{"246":{"position":[[2627,9]]}},"keywords":{}}],["catch",{"_index":1648,"title":{},"content":{"152":{"position":[[73,6]]},"246":{"position":[[1109,7],[1383,6],[1410,6]]}},"keywords":{}}],["categor",{"_index":1877,"title":{},"content":{"182":{"position":[[239,14]]}},"keywords":{}}],["categori",{"_index":1009,"title":{"76":{"position":[[7,11]]}},"content":{"89":{"position":[[1,8]]},"90":{"position":[[1,8]]},"178":{"position":[[343,8]]},"181":{"position":[[57,11]]}},"keywords":{}}],["caus",{"_index":1353,"title":{},"content":{"120":{"position":[[75,7]]},"194":{"position":[[562,7]]},"252":{"position":[[1535,6]]}},"keywords":{}}],["cd",{"_index":170,"title":{},"content":{"12":{"position":[[113,2]]},"230":{"position":[[87,2]]}},"keywords":{}}],["center",{"_index":2458,"title":{},"content":{"255":{"position":[[1029,7]]}},"keywords":{}}],["central",{"_index":529,"title":{},"content":{"37":{"position":[[422,11]]},"137":{"position":[[33,11]]}},"keywords":{}}],["cet",{"_index":2742,"title":{},"content":{"273":{"position":[[3490,3]]}},"keywords":{}}],["challeng",{"_index":2640,"title":{},"content":{"272":{"position":[[609,11],[1237,11],[2123,11]]}},"keywords":{}}],["chang",{"_index":205,"title":{"15":{"position":[[8,8]]},"18":{"position":[[10,8]]},"59":{"position":[[5,7]]},"64":{"position":[[22,9]]},"66":{"position":[[13,7]]},"69":{"position":[[33,7]]},"159":{"position":[[26,8]]},"171":{"position":[[20,7]]},"233":{"position":[[7,8]]}},"content":{"21":{"position":[[101,7],[330,7]]},"22":{"position":[[232,8]]},"25":{"position":[[279,7]]},"33":{"position":[[295,6],[369,6]]},"50":{"position":[[315,7]]},"55":{"position":[[381,6],[940,8]]},"56":{"position":[[163,8],[837,7],[886,7],[995,6],[1126,6]]},"57":{"position":[[619,7]]},"61":{"position":[[156,7]]},"67":{"position":[[207,6],[304,6],[407,6]]},"70":{"position":[[21,7],[39,8]]},"132":{"position":[[316,7]]},"134":{"position":[[229,7],[353,7]]},"139":{"position":[[168,7]]},"143":{"position":[[16,6],[88,7],[206,7],[259,7],[272,8],[318,7],[511,7],[658,7]]},"152":{"position":[[66,6]]},"157":{"position":[[135,7]]},"160":{"position":[[85,8]]},"169":{"position":[[112,6]]},"171":{"position":[[270,7]]},"172":{"position":[[29,7],[103,7],[171,7]]},"176":{"position":[[800,6]]},"184":{"position":[[89,7]]},"185":{"position":[[85,7],[426,6]]},"193":{"position":[[40,6]]},"196":{"position":[[124,8]]},"204":{"position":[[559,8]]},"215":{"position":[[81,7]]},"224":{"position":[[36,8]]},"255":{"position":[[2523,7]]},"273":{"position":[[3780,8],[3897,7],[4303,7]]},"279":{"position":[[384,7]]},"283":{"position":[[78,8]]}},"keywords":{}}],["change)transl",{"_index":912,"title":{},"content":{"62":{"position":[[574,18]]}},"keywords":{}}],["change.github/workflows/release.yml",{"_index":1889,"title":{},"content":{"187":{"position":[[142,35]]}},"keywords":{}}],["changeauto",{"_index":1881,"title":{},"content":{"185":{"position":[[394,10]]}},"keywords":{}}],["changed?docu",{"_index":1657,"title":{},"content":{"153":{"position":[[52,16]]}},"keywords":{}}],["changelin",{"_index":1740,"title":{},"content":{"170":{"position":[[285,10]]}},"keywords":{}}],["changelog",{"_index":2784,"title":{"275":{"position":[[0,10]]}},"content":{},"keywords":{}}],["changeperiodcalcul",{"_index":1058,"title":{},"content":{"78":{"position":[[143,22]]}},"keywords":{}}],["changeplanning/*.md",{"_index":1708,"title":{},"content":{"163":{"position":[[334,19]]}},"keywords":{}}],["changes"",{"_index":1810,"title":{},"content":{"178":{"position":[[329,13]]}},"keywords":{}}],["changes"implement",{"_index":2777,"title":{},"content":{"273":{"position":[[5128,28]]}},"keywords":{}}],["changes)clear",{"_index":1643,"title":{},"content":{"150":{"position":[[573,13]]}},"keywords":{}}],["changes)us",{"_index":1769,"title":{},"content":{"174":{"position":[[82,11]]}},"keywords":{}}],["changeschor",{"_index":259,"title":{},"content":{"18":{"position":[[413,13]]}},"keywords":{}}],["changeseasi",{"_index":2235,"title":{},"content":{"243":{"position":[[2001,11]]}},"keywords":{}}],["changesmiss",{"_index":329,"title":{},"content":{"25":{"position":[[233,14]]}},"keywords":{}}],["changesperiod",{"_index":710,"title":{},"content":{"50":{"position":[[245,13]]}},"keywords":{}}],["changespersist",{"_index":1523,"title":{},"content":{"137":{"position":[[103,17]]}},"keywords":{}}],["changesreleas",{"_index":699,"title":{},"content":{"48":{"position":[[221,14]]}},"keywords":{}}],["changestransl",{"_index":1448,"title":{},"content":{"133":{"position":[[371,18]]}},"keywords":{}}],["char",{"_index":277,"title":{},"content":{"21":{"position":[[31,5]]},"133":{"position":[[563,4]]}},"keywords":{}}],["characterist",{"_index":672,"title":{"44":{"position":[[12,16]]},"63":{"position":[[12,16]]},"291":{"position":[[12,16]]}},"content":{},"keywords":{}}],["charactersmax",{"_index":12,"title":{},"content":{"1":{"position":[[76,13]]}},"keywords":{}}],["charg",{"_index":2274,"title":{},"content":{"246":{"position":[[265,9]]},"269":{"position":[[454,8]]},"272":{"position":[[1812,8]]}},"keywords":{}}],["chart",{"_index":531,"title":{},"content":{"37":{"position":[[462,5]]},"83":{"position":[[75,5]]}},"keywords":{}}],["cheap",{"_index":1231,"title":{},"content":{"103":{"position":[[306,6]]},"239":{"position":[[74,6]]},"246":{"position":[[362,5],[544,5],[1644,5],[1671,5]]},"264":{"position":[[114,5]]},"272":{"position":[[1637,6]]},"273":{"position":[[2338,5],[2820,5],[2980,5],[3141,5],[4462,5]]},"285":{"position":[[494,5]]}},"keywords":{}}],["cheap")may",{"_index":2558,"title":{},"content":{"259":{"position":[[183,15]]}},"keywords":{}}],["cheap)period",{"_index":2656,"title":{},"content":{"272":{"position":[[1653,12]]}},"keywords":{}}],["cheap/expens",{"_index":2584,"title":{},"content":{"264":{"position":[[250,16]]}},"keywords":{}}],["cheaper",{"_index":2572,"title":{},"content":{"263":{"position":[[202,7]]}},"keywords":{}}],["cheaper/mor",{"_index":2113,"title":{},"content":{"238":{"position":[[43,12]]}},"keywords":{}}],["check",{"_index":208,"title":{"285":{"position":[[26,5]]},"288":{"position":[[33,7]]},"296":{"position":[[0,5]]},"297":{"position":[[0,5]]},"298":{"position":[[0,5]]}},"content":{"15":{"position":[[46,6],[81,5],[102,8]]},"21":{"position":[[281,8]]},"22":{"position":[[90,8],[122,6],[160,6]]},"23":{"position":[[11,6]]},"31":{"position":[[221,6],[485,6]]},"46":{"position":[[74,6]]},"51":{"position":[[995,6],[1122,5]]},"55":{"position":[[727,5]]},"57":{"position":[[454,7]]},"61":{"position":[[55,6]]},"69":{"position":[[1,6]]},"70":{"position":[[1,6]]},"71":{"position":[[1,6],[157,5]]},"72":{"position":[[1,6]]},"81":{"position":[[241,7]]},"94":{"position":[[401,8]]},"120":{"position":[[1,6],[114,5]]},"121":{"position":[[1,5]]},"122":{"position":[[184,5]]},"133":{"position":[[621,8]]},"135":{"position":[[253,5],[261,5]]},"154":{"position":[[473,6]]},"156":{"position":[[64,5],[175,6],[325,6]]},"167":{"position":[[16,5]]},"173":{"position":[[4,5],[93,6]]},"190":{"position":[[15,6],[70,6]]},"194":{"position":[[516,5]]},"224":{"position":[[203,7]]},"233":{"position":[[41,5],[77,5]]},"243":{"position":[[1162,5],[1763,5]]},"247":{"position":[[914,7]]},"255":{"position":[[1268,6],[1495,5],[3333,5]]},"262":{"position":[[234,7],[282,7]]},"263":{"position":[[313,7],[361,7]]},"264":{"position":[[274,7],[422,7]]},"267":{"position":[[44,5],[320,5],[371,5],[611,5],[764,5],[998,5]]},"273":{"position":[[4064,5]]},"278":{"position":[[398,5],[537,5],[799,5],[1164,5],[1342,6]]},"279":{"position":[[674,5],[821,5],[1796,5]]},"283":{"position":[[167,5]]},"284":{"position":[[32,5],[201,5],[421,5]]},"285":{"position":[[124,5]]},"287":{"position":[[456,6]]},"288":{"position":[[38,7],[96,5],[252,5],[360,5]]},"292":{"position":[[67,6]]},"299":{"position":[[26,6],[267,6]]},"301":{"position":[[469,7]]}},"keywords":{}}],["check)check",{"_index":2979,"title":{},"content":{"299":{"position":[[322,12]]}},"keywords":{}}],["check)zero",{"_index":945,"title":{},"content":{"67":{"position":[[748,10]]}},"keywords":{}}],["check_interval_criteria",{"_index":2215,"title":{},"content":{"243":{"position":[[880,25]]},"255":{"position":[[266,24]]}},"keywords":{}}],["check_interval_criteria(pric",{"_index":2220,"title":{},"content":{"243":{"position":[[1109,30]]}},"keywords":{}}],["checked"",{"_index":2538,"title":{},"content":{"256":{"position":[[207,13]]}},"keywords":{}}],["checklist",{"_index":295,"title":{"22":{"position":[[3,10]]},"267":{"position":[[10,10]]}},"content":{"156":{"position":[[17,10]]}},"keywords":{}}],["checkout",{"_index":188,"title":{},"content":{"14":{"position":[[5,8],[52,8]]}},"keywords":{}}],["checkpoint",{"_index":1586,"title":{},"content":{"146":{"position":[[526,11]]}},"keywords":{}}],["chmod",{"_index":1359,"title":{},"content":{"120":{"position":[[195,5]]}},"keywords":{}}],["choos",{"_index":570,"title":{},"content":{"37":{"position":[[1256,6]]},"43":{"position":[[1148,6]]},"272":{"position":[[1914,7]]}},"keywords":{}}],["chore(releas",{"_index":1897,"title":{},"content":{"192":{"position":[[37,15]]}},"keywords":{}}],["ci",{"_index":1498,"title":{},"content":{"135":{"position":[[294,3]]},"179":{"position":[[984,4]]},"180":{"position":[[394,2]]},"233":{"position":[[52,3]]}},"keywords":{}}],["ci/cd",{"_index":1788,"title":{"180":{"position":[[3,5]]}},"content":{"176":{"position":[[375,5]]},"179":{"position":[[675,7],[978,5]]},"182":{"position":[[327,5]]},"184":{"position":[[193,5]]},"196":{"position":[[419,6]]}},"keywords":{}}],["ci/cd)maintain",{"_index":302,"title":{},"content":{"23":{"position":[[22,17]]}},"keywords":{}}],["citi",{"_index":1191,"title":{},"content":{"99":{"position":[[111,4]]}},"keywords":{}}],["class",{"_index":32,"title":{"3":{"position":[[0,5]]},"215":{"position":[[6,5]]}},"content":{"3":{"position":[[12,7],[157,5],[186,5],[227,5],[280,5],[297,5],[316,5],[370,7],[466,7],[566,7],[734,8],[756,5],[844,5],[875,5],[1022,5],[1140,7],[1154,7],[1237,7],[1473,7]]},"37":{"position":[[145,5]]},"136":{"position":[[378,5]]},"204":{"position":[[569,5]]},"209":{"position":[[23,5],[247,5]]},"281":{"position":[[391,5],[666,5]]}},"keywords":{}}],["classesal",{"_index":55,"title":{},"content":{"3":{"position":[[420,10]]}},"keywords":{}}],["classesdata",{"_index":58,"title":{},"content":{"3":{"position":[[454,11]]}},"keywords":{}}],["classesunifi",{"_index":664,"title":{},"content":{"43":{"position":[[923,14]]}},"keywords":{}}],["classif",{"_index":1229,"title":{"239":{"position":[[29,16]]}},"content":{"103":{"position":[[278,14]]},"239":{"position":[[45,15],[384,14],[1339,14]]},"273":{"position":[[3882,14],[4288,14],[5113,14]]}},"keywords":{}}],["classifi",{"_index":1097,"title":{},"content":{"82":{"position":[[34,10]]}},"keywords":{}}],["classificationperiod",{"_index":2148,"title":{},"content":{"239":{"position":[[1180,20]]}},"keywords":{}}],["claud",{"_index":1443,"title":{},"content":{"133":{"position":[[77,7]]},"163":{"position":[[47,8]]}},"keywords":{}}],["clean",{"_index":509,"title":{},"content":{"37":{"position":[[49,5]]},"57":{"position":[[84,5]]},"92":{"position":[[297,7]]},"135":{"position":[[153,6]]},"147":{"position":[[139,5]]}},"keywords":{}}],["cleanli",{"_index":1026,"title":{},"content":{"77":{"position":[[633,7]]}},"keywords":{}}],["cleanup",{"_index":1010,"title":{"77":{"position":[[12,7]]},"79":{"position":[[11,7]]},"84":{"position":[[15,8]]}},"content":{"77":{"position":[[52,7],[332,7],[386,7],[516,8],[927,7],[1277,8],[1467,7]]},"89":{"position":[[45,7],[93,7],[148,7],[251,7]]},"90":{"position":[[116,7]]},"92":{"position":[[190,7]]},"94":{"position":[[20,7]]},"95":{"position":[[16,7]]}},"keywords":{}}],["cleanup)standard",{"_index":2889,"title":{},"content":{"281":{"position":[[1184,17]]}},"keywords":{}}],["clear",{"_index":312,"title":{},"content":{"25":{"position":[[10,6]]},"51":{"position":[[507,8]]},"60":{"position":[[76,5],[171,5]]},"65":{"position":[[60,8]]},"71":{"position":[[99,5]]},"78":{"position":[[228,7]]},"111":{"position":[[252,8]]},"134":{"position":[[464,5]]},"139":{"position":[[105,5]]},"143":{"position":[[613,5]]},"150":{"position":[[323,5]]},"153":{"position":[[26,5]]},"170":{"position":[[173,5]]},"172":{"position":[[53,5]]},"209":{"position":[[4,5]]},"262":{"position":[[111,5]]},"263":{"position":[[136,5]]},"264":{"position":[[224,6]]}},"keywords":{}}],["clear_trend_cach",{"_index":1067,"title":{},"content":{"78":{"position":[[576,19]]}},"keywords":{}}],["clearedboth",{"_index":1036,"title":{},"content":{"77":{"position":[[1049,11]]}},"keywords":{}}],["clearedminut",{"_index":1035,"title":{},"content":{"77":{"position":[[1002,13]]}},"keywords":{}}],["cli",{"_index":1818,"title":{},"content":{"179":{"position":[[381,4],[828,3]]},"196":{"position":[[347,3]]},"231":{"position":[[194,4]]}},"keywords":{}}],["client",{"_index":389,"title":{},"content":{"31":{"position":[[214,6]]},"36":{"position":[[34,6]]},"136":{"position":[[160,6]]}},"keywords":{}}],["cliff",{"_index":1501,"title":{},"content":{"135":{"position":[[421,6]]},"179":{"position":[[459,5],[508,5],[878,5],[1106,5],[1261,6],[1406,5],[1481,5],[1578,5],[1626,5],[1726,5],[1777,5],[1804,5],[1816,5]]},"180":{"position":[[303,5],[372,5]]},"187":{"position":[[278,5]]},"196":{"position":[[385,5]]}},"keywords":{}}],["cliff.org/docs/instal",{"_index":1843,"title":{},"content":{"179":{"position":[[1525,27]]}},"keywords":{}}],["cliff/releases/latest/download/git",{"_index":1849,"title":{},"content":{"179":{"position":[[1691,34]]}},"keywords":{}}],["clock",{"_index":2792,"title":{},"content":{"278":{"position":[[326,5]]},"279":{"position":[[344,5]]}},"keywords":{}}],["clone",{"_index":165,"title":{"12":{"position":[[9,6]]}},"content":{"12":{"position":[[51,5]]},"134":{"position":[[10,5]]},"230":{"position":[[3,5],[28,5]]}},"keywords":{}}],["close",{"_index":294,"title":{},"content":{"21":{"position":[[391,6]]}},"keywords":{}}],["cluster",{"_index":2483,"title":{},"content":{"255":{"position":[[1816,8]]}},"keywords":{}}],["clustered)user'",{"_index":2659,"title":{},"content":{"272":{"position":[[1775,16]]}},"keywords":{}}],["code",{"_index":0,"title":{"0":{"position":[[0,6]]},"1":{"position":[[0,4]]},"24":{"position":[[0,4]]},"112":{"position":[[3,4]]},"117":{"position":[[17,5]]},"169":{"position":[[46,8]]}},"content":{"11":{"position":[[7,4]]},"14":{"position":[[185,4]]},"15":{"position":[[6,5],[22,6]]},"18":{"position":[[382,4]]},"22":{"position":[[22,4],[35,6]]},"25":{"position":[[321,4]]},"26":{"position":[[44,4]]},"28":{"position":[[62,4]]},"43":{"position":[[1026,4]]},"77":{"position":[[650,4],[1351,4],[1836,4]]},"78":{"position":[[417,4]]},"79":{"position":[[397,4]]},"84":{"position":[[167,5]]},"85":{"position":[[138,5]]},"87":{"position":[[181,4],[187,5]]},"114":{"position":[[173,4]]},"120":{"position":[[107,4]]},"121":{"position":[[141,5]]},"125":{"position":[[51,4]]},"128":{"position":[[20,5],[174,4]]},"129":{"position":[[241,4]]},"131":{"position":[[73,4]]},"133":{"position":[[804,4]]},"134":{"position":[[55,5],[251,6]]},"135":{"position":[[227,4],[267,4]]},"139":{"position":[[124,4],[163,4]]},"140":{"position":[[59,4]]},"143":{"position":[[11,4]]},"149":{"position":[[349,4]]},"150":{"position":[[794,4]]},"161":{"position":[[10,4]]},"167":{"position":[[31,4]]},"170":{"position":[[261,4]]},"173":{"position":[[198,4]]},"179":{"position":[[1345,5]]},"200":{"position":[[387,4]]},"201":{"position":[[51,4]]},"229":{"position":[[4,4]]},"230":{"position":[[122,4],[127,4],[163,4]]},"233":{"position":[[19,4]]},"243":{"position":[[907,4]]},"252":{"position":[[98,5],[894,6]]},"272":{"position":[[133,4]]}},"keywords":{}}],["codeappropri",{"_index":315,"title":{},"content":{"25":{"position":[[34,15]]}},"keywords":{}}],["codebas",{"_index":1447,"title":{},"content":{"133":{"position":[[344,8]]}},"keywords":{}}],["codeclick",{"_index":174,"title":{},"content":{"12":{"position":[[146,9]]}},"keywords":{}}],["codelen",{"_index":1336,"title":{},"content":{"117":{"position":[[57,9]]}},"keywords":{}}],["codequick",{"_index":1461,"title":{},"content":{"133":{"position":[[885,9]]}},"keywords":{}}],["coding..."",{"_index":1680,"title":{},"content":{"159":{"position":[[60,15]]}},"keywords":{}}],["cognit",{"_index":1652,"title":{},"content":{"152":{"position":[[161,9]]}},"keywords":{}}],["color",{"_index":1515,"title":{},"content":{"136":{"position":[[651,5]]}},"keywords":{}}],["colors.pi",{"_index":1514,"title":{},"content":{"136":{"position":[[639,9]]}},"keywords":{}}],["combin",{"_index":2397,"title":{"253":{"position":[[7,11]]}},"content":{"252":{"position":[[382,12]]},"253":{"position":[[168,13]]},"266":{"position":[[242,12]]},"294":{"position":[[199,9]]}},"keywords":{}}],["combinationsstop",{"_index":2386,"title":{},"content":{"251":{"position":[[166,16]]}},"keywords":{}}],["come",{"_index":2071,"title":{},"content":{"227":{"position":[[1,6]]}},"keywords":{}}],["comment",{"_index":316,"title":{},"content":{"25":{"position":[[50,8]]},"27":{"position":[[151,7]]}},"keywords":{}}],["commentsmark",{"_index":345,"title":{},"content":{"26":{"position":[[125,12]]}},"keywords":{}}],["commit",{"_index":20,"title":{"18":{"position":[[3,6]]}},"content":{"1":{"position":[[145,11]]},"18":{"position":[[21,8],[45,6],[301,6]]},"22":{"position":[[241,6],[277,7]]},"26":{"position":[[106,7]]},"134":{"position":[[425,7]]},"135":{"position":[[563,7]]},"147":{"position":[[83,6]]},"149":{"position":[[232,6]]},"160":{"position":[[186,6]]},"176":{"position":[[196,7],[472,7],[586,6],[688,6]]},"178":{"position":[[299,7]]},"179":{"position":[[60,7]]},"181":{"position":[[133,8],[202,8],[275,8],[364,8],[431,8]]},"184":{"position":[[279,7],[317,6]]},"185":{"position":[[142,6],[153,6]]},"186":{"position":[[78,6]]},"191":{"position":[[23,6]]},"192":{"position":[[66,8]]},"194":{"position":[[338,6],[349,6],[662,6]]},"196":{"position":[[14,8],[34,6],[198,6]]},"224":{"position":[[25,10]]}},"keywords":{}}],["committed)for",{"_index":1619,"title":{},"content":{"149":{"position":[[452,13]]}},"keywords":{}}],["common",{"_index":1244,"title":{"106":{"position":[[0,6]]},"119":{"position":[[0,6]]},"158":{"position":[[0,6]]},"257":{"position":[[0,6]]},"299":{"position":[[0,6]]}},"content":{"120":{"position":[[68,6]]},"136":{"position":[[693,6]]},"194":{"position":[[555,6]]},"278":{"position":[[1025,7]]},"279":{"position":[[983,6]]},"288":{"position":[[349,8]]}},"keywords":{}}],["commun",{"_index":359,"title":{"28":{"position":[[0,14]]}},"content":{},"keywords":{}}],["compar",{"_index":2807,"title":{},"content":{"278":{"position":[[1386,8]]}},"keywords":{}}],["comparison",{"_index":867,"title":{},"content":{"56":{"position":[[1601,10]]},"284":{"position":[[581,10]]},"299":{"position":[[235,10]]}},"keywords":{}}],["compil",{"_index":2067,"title":{},"content":{"224":{"position":[[346,7]]}},"keywords":{}}],["complet",{"_index":108,"title":{"149":{"position":[[9,11]]},"183":{"position":[[3,8]]}},"content":{"3":{"position":[[1456,8]]},"8":{"position":[[188,8]]},"31":{"position":[[1066,8]]},"48":{"position":[[292,8]]},"73":{"position":[[128,8]]},"146":{"position":[[122,9]]},"150":{"position":[[688,8]]},"157":{"position":[[7,10]]},"163":{"position":[[426,10]]},"166":{"position":[[47,10]]},"174":{"position":[[266,10]]},"218":{"position":[[148,8]]},"221":{"position":[[176,9]]},"246":{"position":[[227,8]]},"266":{"position":[[370,10]]},"300":{"position":[[127,8]]}},"keywords":{}}],["complex",{"_index":13,"title":{},"content":{"1":{"position":[[90,11]]},"25":{"position":[[63,7]]},"37":{"position":[[957,7]]},"67":{"position":[[896,11]]},"133":{"position":[[585,10],[1012,7]]},"143":{"position":[[361,7]]},"166":{"position":[[295,11]]},"239":{"position":[[1040,7]]},"255":{"position":[[2596,10]]},"272":{"position":[[2091,7],[2146,7]]},"273":{"position":[[4590,8]]}},"keywords":{}}],["complexityus",{"_index":2695,"title":{},"content":{"273":{"position":[[1330,15]]}},"keywords":{}}],["compliant",{"_index":579,"title":{},"content":{"40":{"position":[[50,9]]}},"keywords":{}}],["compon",{"_index":485,"title":{"35":{"position":[[0,9]]},"36":{"position":[[5,11]]}},"content":{"36":{"position":[[1,9]]},"37":{"position":[[102,9]]},"43":{"position":[[1212,9]]}},"keywords":{}}],["comprehens",{"_index":1450,"title":{"157":{"position":[[0,13]]}},"content":{"133":{"position":[[481,13]]},"154":{"position":[[317,13]]},"163":{"position":[[507,14]]},"210":{"position":[[160,13]]}},"keywords":{}}],["comput",{"_index":420,"title":{},"content":{"31":{"position":[[870,8]]}},"keywords":{}}],["concept",{"_index":1520,"title":{"137":{"position":[[7,9]]}},"content":{"272":{"position":[[54,8],[868,8],[1556,8]]}},"keywords":{}}],["concern",{"_index":511,"title":{},"content":{"37":{"position":[[69,8]]},"43":{"position":[[1081,8]]},"150":{"position":[[213,8]]},"272":{"position":[[1308,8]]}},"keywords":{}}],["conclus",{"_index":1159,"title":{},"content":{"93":{"position":[[256,11]]}},"keywords":{}}],["concurr",{"_index":1982,"title":{},"content":{"207":{"position":[[4,10],[127,10]]}},"keywords":{}}],["condit",{"_index":2172,"title":{},"content":{"242":{"position":[[10,9]]},"273":{"position":[[4097,10],[4110,10]]}},"keywords":{}}],["condition(x",{"_index":2007,"title":{},"content":{"210":{"position":[[217,13],[295,13]]}},"keywords":{}}],["conditionsbett",{"_index":2639,"title":{},"content":{"272":{"position":[[547,16]]}},"keywords":{}}],["conduct",{"_index":1546,"title":{},"content":{"140":{"position":[[67,8]]}},"keywords":{}}],["conf_volatility_*_threshold",{"_index":2126,"title":{},"content":{"239":{"position":[[338,28]]}},"keywords":{}}],["confid",{"_index":2459,"title":{},"content":{"255":{"position":[[1037,10],[1063,10],[2111,10]]}},"keywords":{}}],["confidence_level",{"_index":2463,"title":{},"content":{"255":{"position":[[1129,17],[2082,16]]}},"keywords":{}}],["config",{"_index":459,"title":{"53":{"position":[[3,6]]},"54":{"position":[[16,6]]},"55":{"position":[[17,6]]},"59":{"position":[[21,7]]},"66":{"position":[[6,6]]},"69":{"position":[[26,6]]}},"content":{"33":{"position":[[255,6],[288,6]]},"46":{"position":[[67,6]]},"50":{"position":[[238,6],[308,6]]},"52":{"position":[[244,6]]},"54":{"position":[[205,6]]},"55":{"position":[[802,6]]},"56":{"position":[[148,6],[361,6],[688,6],[736,6],[879,6],[988,6]]},"57":{"position":[[420,6],[612,6]]},"59":{"position":[[473,6]]},"62":{"position":[[275,6],[392,6]]},"64":{"position":[[79,6]]},"65":{"position":[[91,6]]},"66":{"position":[[139,6]]},"67":{"position":[[180,6],[706,6]]},"77":{"position":[[1454,6]]},"78":{"position":[[43,6],[104,6],[166,6],[280,6]]},"79":{"position":[[153,6]]},"89":{"position":[[135,6]]},"92":{"position":[[177,6]]},"126":{"position":[[57,6]]},"143":{"position":[[281,6]]},"202":{"position":[[98,6]]},"204":{"position":[[522,6]]},"239":{"position":[[502,6],[1364,6]]},"246":{"position":[[2495,6]]},"255":{"position":[[119,7]]}},"keywords":{}}],["config/hom",{"_index":1351,"title":{},"content":{"120":{"position":[[40,11]]}},"keywords":{}}],["config_entry.add_update_listen",{"_index":891,"title":{},"content":{"59":{"position":[[22,34]]},"69":{"position":[[187,34]]}},"keywords":{}}],["config_entry.options.get(conf_volatility_low_threshold",{"_index":2152,"title":{},"content":{"239":{"position":[[1392,55]]}},"keywords":{}}],["config_flow.pi",{"_index":1517,"title":{},"content":{"136":{"position":[[757,14]]},"224":{"position":[[214,14]]}},"keywords":{}}],["configexhaust",{"_index":2604,"title":{},"content":{"267":{"position":[[536,15]]}},"keywords":{}}],["configif",{"_index":422,"title":{},"content":{"31":{"position":[[898,8]]},"251":{"position":[[75,8]]}},"keywords":{}}],["configl",{"_index":2603,"title":{},"content":{"267":{"position":[[478,10]]}},"keywords":{}}],["configur",{"_index":1292,"title":{"113":{"position":[[7,14]]},"187":{"position":[[3,13]]},"257":{"position":[[7,13]]}},"content":{"128":{"position":[[198,14]]},"136":{"position":[[777,13]]},"157":{"position":[[79,13]]},"226":{"position":[[86,13]]},"239":{"position":[[321,12],[1008,13]]},"246":{"position":[[2478,12],[2725,13]]},"250":{"position":[[101,10]]},"252":{"position":[[144,16],[905,13]]},"258":{"position":[[1,14]]},"259":{"position":[[1,14]]},"260":{"position":[[1,14]]},"272":{"position":[[586,13]]}},"keywords":{}}],["configuration.yaml",{"_index":1273,"title":{},"content":{"110":{"position":[[8,19]]},"256":{"position":[[26,18]]}},"keywords":{}}],["configurationbest",{"_index":1807,"title":{},"content":{"178":{"position":[[216,17]]}},"keywords":{}}],["configurationcliff.toml",{"_index":1891,"title":{},"content":{"187":{"position":[[248,23]]}},"keywords":{}}],["configurationsif",{"_index":2410,"title":{},"content":{"252":{"position":[[1023,16]]}},"keywords":{}}],["confirm",{"_index":979,"title":{},"content":{"71":{"position":[[105,12]]},"255":{"position":[[3088,9]]}},"keywords":{}}],["conflict",{"_index":40,"title":{"240":{"position":[[24,9]]},"260":{"position":[[18,11]]}},"content":{"3":{"position":[[112,9]]},"241":{"position":[[23,8],[317,9]]},"242":{"position":[[1,8]]},"267":{"position":[[971,8]]},"272":{"position":[[671,8]]},"283":{"position":[[504,10]]},"301":{"position":[[480,10]]}},"keywords":{}}],["conflictstest",{"_index":1642,"title":{},"content":{"150":{"position":[[523,13]]}},"keywords":{}}],["confus",{"_index":1696,"title":{},"content":{"161":{"position":[[108,8]]},"273":{"position":[[4909,9]]}},"keywords":{}}],["connect",{"_index":1406,"title":{},"content":{"128":{"position":[[158,7]]}},"keywords":{}}],["conserv",{"_index":2291,"title":{},"content":{"246":{"position":[[747,12]]}},"keywords":{}}],["conshelp",{"_index":1873,"title":{},"content":{"182":{"position":[[22,10]]}},"keywords":{}}],["consid",{"_index":2238,"title":{},"content":{"243":{"position":[[2065,11]]},"246":{"position":[[2028,11]]},"247":{"position":[[749,10]]},"255":{"position":[[3666,11]]},"267":{"position":[[512,8]]},"272":{"position":[[762,10]]}},"keywords":{}}],["consider",{"_index":2631,"title":{},"content":{"270":{"position":[[137,13]]},"273":{"position":[[947,14]]}},"keywords":{}}],["consist",{"_index":1440,"title":{},"content":{"132":{"position":[[396,11]]},"133":{"position":[[321,11],[1307,12]]},"252":{"position":[[1718,11]]}},"keywords":{}}],["consistently)11",{"_index":2404,"title":{},"content":{"252":{"position":[[778,15]]}},"keywords":{}}],["const",{"_index":121,"title":{},"content":{"4":{"position":[[87,7]]}},"keywords":{}}],["const.pi",{"_index":456,"title":{},"content":{"33":{"position":[[219,8]]},"38":{"position":[[245,8]]},"52":{"position":[[11,8]]},"85":{"position":[[144,8]]},"136":{"position":[[800,8]]},"204":{"position":[[224,8]]},"245":{"position":[[252,9]]}},"keywords":{}}],["const.pyvalu",{"_index":2135,"title":{},"content":{"239":{"position":[[715,15]]}},"keywords":{}}],["constant",{"_index":1518,"title":{"245":{"position":[[15,10]]}},"content":{"136":{"position":[[811,9]]},"239":{"position":[[1479,9]]},"252":{"position":[[397,10]]},"255":{"position":[[2019,10]]}},"keywords":{}}],["constant)outli",{"_index":2464,"title":{},"content":{"255":{"position":[[1147,16]]}},"keywords":{}}],["constraint",{"_index":2270,"title":{},"content":{"246":{"position":[[189,12],[909,12]]}},"keywords":{}}],["construct",{"_index":366,"title":{},"content":{"28":{"position":[[132,13]]}},"keywords":{}}],["consumpt",{"_index":2295,"title":{},"content":{"246":{"position":[[886,11]]}},"keywords":{}}],["consumptionean",{"_index":1197,"title":{},"content":{"99":{"position":[[214,14]]}},"keywords":{}}],["contain",{"_index":161,"title":{},"content":{"11":{"position":[[24,10]]},"129":{"position":[[12,10]]},"132":{"position":[[111,9]]},"179":{"position":[[1331,9],[1361,11]]},"229":{"position":[[18,9]]},"230":{"position":[[221,11]]}},"keywords":{}}],["container"",{"_index":176,"title":{},"content":{"12":{"position":[[172,15]]},"179":{"position":[[1381,16]]},"230":{"position":[[243,15]]}},"keywords":{}}],["container")run",{"_index":1478,"title":{},"content":{"134":{"position":[[77,19]]}},"keywords":{}}],["context",{"_index":1462,"title":{},"content":{"133":{"position":[[934,7],[1274,7]]},"163":{"position":[[285,8]]},"179":{"position":[[846,7]]},"252":{"position":[[1360,7]]},"255":{"position":[[1244,7],[1526,7],[1584,8],[2618,7],[2804,8]]},"273":{"position":[[4674,8]]}},"keywords":{}}],["context"",{"_index":2360,"title":{},"content":{"247":{"position":[[682,13]]}},"keywords":{}}],["context_residu",{"_index":2475,"title":{},"content":{"255":{"position":[[1534,17]]}},"keywords":{}}],["continu",{"_index":253,"title":{},"content":{"18":{"position":[[271,8]]},"75":{"position":[[33,12],[266,8]]},"77":{"position":[[1165,8]]},"94":{"position":[[685,13]]}},"keywords":{}}],["contribut",{"_index":154,"title":{"9":{"position":[[0,12]]},"140":{"position":[[3,13]]}},"content":{"140":{"position":[[34,12]]},"242":{"position":[[270,10]]}},"keywords":{}}],["contributing.md",{"_index":1545,"title":{},"content":{"140":{"position":[[5,15]]}},"keywords":{}}],["contributionsdocument",{"_index":356,"title":{},"content":{"27":{"position":[[103,26]]}},"keywords":{}}],["contributor",{"_index":1476,"title":{"134":{"position":[[19,13]]}},"content":{},"keywords":{}}],["control",{"_index":2423,"title":{},"content":{"252":{"position":[[1730,10]]},"277":{"position":[[389,8],[422,8],[456,8]]}},"keywords":{}}],["convent",{"_index":31,"title":{"2":{"position":[[7,12]]}},"content":{"18":{"position":[[8,12]]},"22":{"position":[[264,12]]},"132":{"position":[[339,12]]},"134":{"position":[[412,12]]},"163":{"position":[[159,11]]},"179":{"position":[[47,12]]},"196":{"position":[[1,12]]},"233":{"position":[[185,12]]}},"keywords":{}}],["conventionsdevelop",{"_index":1433,"title":{},"content":{"132":{"position":[[176,22]]}},"keywords":{}}],["conventionsperiod",{"_index":1417,"title":{},"content":{"131":{"position":[[103,17]]}},"keywords":{}}],["converg",{"_index":2525,"title":{},"content":{"255":{"position":[[3568,11]]}},"keywords":{}}],["convers",{"_index":346,"title":{},"content":{"26":{"position":[[138,13]]},"55":{"position":[[682,11]]}},"keywords":{}}],["convert",{"_index":133,"title":{},"content":{"6":{"position":[[182,7]]}},"keywords":{}}],["coordin",{"_index":56,"title":{"34":{"position":[[6,13]]},"62":{"position":[[6,13]]},"86":{"position":[[3,11]]},"211":{"position":[[0,11]]},"282":{"position":[[6,12]]},"296":{"position":[[19,13]]}},"content":{"3":{"position":[[431,11]]},"17":{"position":[[93,13]]},"31":{"position":[[48,11],[172,11],[425,11],[807,11],[1045,11],[1269,11]]},"33":{"position":[[268,13],[519,11]]},"36":{"position":[[103,11]]},"37":{"position":[[188,12],[682,11]]},"42":{"position":[[31,12]]},"43":{"position":[[634,11]]},"46":{"position":[[45,13]]},"47":{"position":[[5,11],[152,12]]},"48":{"position":[[48,12]]},"51":{"position":[[680,13]]},"53":{"position":[[147,11]]},"55":{"position":[[324,11]]},"56":{"position":[[1338,12]]},"57":{"position":[[973,11]]},"61":{"position":[[1,11]]},"64":{"position":[[1,11]]},"65":{"position":[[1,11]]},"66":{"position":[[60,11]]},"67":{"position":[[498,11]]},"69":{"position":[[239,11]]},"77":{"position":[[1330,11]]},"78":{"position":[[239,11]]},"111":{"position":[[1,11]]},"114":{"position":[[1,11]]},"118":{"position":[[7,11],[244,13]]},"121":{"position":[[7,11]]},"128":{"position":[[8,11]]},"131":{"position":[[261,12]]},"136":{"position":[[103,11]]},"198":{"position":[[18,11]]},"209":{"position":[[29,12]]},"219":{"position":[[131,12],[169,11]]},"278":{"position":[[1320,13]]},"279":{"position":[[698,12],[1932,11]]},"281":{"position":[[310,11],[626,11],[1217,11]]},"297":{"position":[[9,11]]},"298":{"position":[[9,11]]},"301":{"position":[[430,10],[632,11]]}},"keywords":{}}],["coordination)check",{"_index":2978,"title":{},"content":{"299":{"position":[[189,19]]}},"keywords":{}}],["coordinationarchitectur",{"_index":987,"title":{},"content":{"73":{"position":[[57,24]]}},"keywords":{}}],["coordinator._handle_midnight_turnov",{"_index":902,"title":{},"content":{"60":{"position":[[27,39]]}},"keywords":{}}],["coordinator._handle_options_upd",{"_index":892,"title":{},"content":{"59":{"position":[[68,36]]}},"keywords":{}}],["coordinator.async_refresh",{"_index":2050,"title":{},"content":{"219":{"position":[[245,27]]}},"keywords":{}}],["coordinator.async_request_refresh",{"_index":899,"title":{},"content":{"59":{"position":[[409,35]]}},"keywords":{}}],["coordinator.data",{"_index":229,"title":{},"content":{"17":{"position":[[176,16]]},"86":{"position":[[186,16],[231,16]]}},"keywords":{}}],["coordinator.data.get('best_price_period",{"_index":1344,"title":{},"content":{"118":{"position":[[268,42]]}},"keywords":{}}],["coordinator.data}"",{"_index":1339,"title":{},"content":{"118":{"position":[[90,25]]}},"keywords":{}}],["coordinator.pi",{"_index":492,"title":{},"content":{"36":{"position":[[115,14]]},"136":{"position":[[74,14]]}},"keywords":{}}],["coordinator/cache.pi",{"_index":452,"title":{},"content":{"33":{"position":[[130,20]]},"51":{"position":[[11,20],[918,20]]},"204":{"position":[[59,20]]}},"keywords":{}}],["coordinator/cache.py)if",{"_index":392,"title":{},"content":{"31":{"position":[[251,24]]}},"keywords":{}}],["coordinator/cache.pymidnight",{"_index":977,"title":{},"content":{"71":{"position":[[35,28]]}},"keywords":{}}],["coordinator/core.pi",{"_index":807,"title":{},"content":{"55":{"position":[[423,19]]},"77":{"position":[[1853,19]]},"114":{"position":[[24,19]]},"278":{"position":[[7,19]]}},"keywords":{}}],["coordinator/data_fetching.pi",{"_index":748,"title":{},"content":{"51":{"position":[[1145,28]]}},"keywords":{}}],["coordinator/data_transformation.pi",{"_index":466,"title":{},"content":{"33":{"position":[[413,34]]},"36":{"position":[[236,34]]},"53":{"position":[[11,34]]},"57":{"position":[[11,34]]},"78":{"position":[[434,34]]}},"keywords":{}}],["coordinator/day_transitions.pi",{"_index":729,"title":{},"content":{"51":{"position":[[696,30]]}},"keywords":{}}],["coordinator/listeners.pi",{"_index":1027,"title":{},"content":{"77":{"position":[[667,24],[1368,24]]},"279":{"position":[[7,24]]},"280":{"position":[[7,24]]}},"keywords":{}}],["coordinator/listeners.pytim",{"_index":610,"title":{},"content":{"42":{"position":[[109,29]]}},"keywords":{}}],["coordinator/period_handlers/core.pi",{"_index":1319,"title":{},"content":{"114":{"position":[[214,35]]},"235":{"position":[[341,35]]},"245":{"position":[[12,36]]},"255":{"position":[[36,35]]}},"keywords":{}}],["coordinator/period_handlers/level_filtering.pi",{"_index":2216,"title":{},"content":{"243":{"position":[[924,46]]},"255":{"position":[[215,46]]}},"keywords":{}}],["coordinator/period_handlers/outlier_filtering.pi",{"_index":2449,"title":{},"content":{"255":{"position":[[624,48],[2033,48]]}},"keywords":{}}],["coordinator/period_handlers/period_building.pi",{"_index":1370,"title":{},"content":{"122":{"position":[[33,46]]},"273":{"position":[[5157,46]]}},"keywords":{}}],["coordinator/period_handlers/period_statistics.pi",{"_index":2780,"title":{},"content":{"273":{"position":[[5248,48]]}},"keywords":{}}],["coordinator/period_handlers/relaxation.pi",{"_index":2389,"title":{},"content":{"252":{"position":[[48,41]]},"255":{"position":[[422,41]]}},"keywords":{}}],["coordinator/periods.pi",{"_index":462,"title":{},"content":{"33":{"position":[[328,22]]},"36":{"position":[[339,22]]},"46":{"position":[[96,22]]},"53":{"position":[[50,22]]},"56":{"position":[[11,22]]}},"keywords":{}}],["coordinatordocs(us",{"_index":265,"title":{},"content":{"18":{"position":[[525,22]]}},"keywords":{}}],["coordinators.append(coordin",{"_index":2051,"title":{},"content":{"219":{"position":[[273,32]]}},"keywords":{}}],["coordinatorwithout",{"_index":1021,"title":{},"content":{"77":{"position":[[497,18]]}},"keywords":{}}],["copilot",{"_index":1442,"title":{},"content":{"133":{"position":[[68,8]]},"163":{"position":[[38,8]]},"179":{"position":[[373,7],[820,7]]},"196":{"position":[[339,7]]}},"keywords":{}}],["core",{"_index":486,"title":{"36":{"position":[[0,4]]},"236":{"position":[[0,4]]}},"content":{},"keywords":{}}],["core.pi",{"_index":564,"title":{},"content":{"37":{"position":[[1099,7]]},"136":{"position":[[349,7]]},"154":{"position":[[363,7]]},"247":{"position":[[57,7],[565,7]]},"252":{"position":[[641,8]]}},"keywords":{}}],["correct",{"_index":42,"title":{},"content":{"3":{"position":[[149,7]]},"80":{"position":[[94,7],[144,7]]},"90":{"position":[[134,7],[432,9]]},"92":{"position":[[404,7]]},"273":{"position":[[2849,7],[3319,7],[5013,12]]},"286":{"position":[[160,7]]},"299":{"position":[[358,8]]},"301":{"position":[[345,7]]}},"keywords":{}}],["correctli",{"_index":1014,"title":{},"content":{"77":{"position":[[110,9],[193,9],[271,9],[1575,9]]},"80":{"position":[[243,9]]},"84":{"position":[[19,9]]},"86":{"position":[[80,9]]},"92":{"position":[[89,9],[347,9]]},"154":{"position":[[536,9]]},"156":{"position":[[353,9]]},"273":{"position":[[2956,9]]}},"keywords":{}}],["cost",{"_index":2671,"title":{},"content":{"272":{"position":[[2206,4]]}},"keywords":{}}],["costprefer",{"_index":2310,"title":{},"content":{"246":{"position":[[1357,15]]}},"keywords":{}}],["count",{"_index":864,"title":{},"content":{"56":{"position":[[1549,6]]},"118":{"position":[[140,6]]},"255":{"position":[[2486,9],[2501,6]]},"269":{"position":[[357,5]]},"272":{"position":[[1619,5]]}},"keywords":{}}],["countdown",{"_index":2849,"title":{},"content":{"280":{"position":[[172,9],[508,9],[554,9],[712,10],[920,9]]},"294":{"position":[[134,9]]},"301":{"position":[[407,9]]}},"keywords":{}}],["countdown/progress",{"_index":2787,"title":{},"content":{"277":{"position":[[310,18]]},"283":{"position":[[384,18]]},"290":{"position":[[80,18]]},"301":{"position":[[204,18]]}},"keywords":{}}],["counter",{"_index":2025,"title":{},"content":{"215":{"position":[[243,8]]}},"keywords":{}}],["countri",{"_index":1192,"title":{},"content":{"99":{"position":[[116,7]]}},"keywords":{}}],["cov",{"_index":1163,"title":{},"content":{"94":{"position":[[378,3]]}},"keywords":{}}],["cov=custom_components.tibber_pric",{"_index":1162,"title":{},"content":{"94":{"position":[[340,35]]},"138":{"position":[[178,35]]},"225":{"position":[[118,35]]}},"keywords":{}}],["cover",{"_index":318,"title":{},"content":{"25":{"position":[[82,8]]},"92":{"position":[[51,7]]},"247":{"position":[[214,6]]},"252":{"position":[[803,6]]}},"keywords":{}}],["coverag",{"_index":1137,"title":{"88":{"position":[[8,8]]}},"content":{"93":{"position":[[312,8]]},"94":{"position":[[314,8]]},"138":{"position":[[160,8]]},"225":{"position":[[100,8]]}},"keywords":{}}],["coveragelisten",{"_index":1139,"title":{},"content":{"89":{"position":[[28,16]]}},"keywords":{}}],["cprofil",{"_index":1391,"title":{"126":{"position":[[13,9]]}},"content":{"126":{"position":[[11,8]]}},"keywords":{}}],["cpu",{"_index":678,"title":{"46":{"position":[[0,3]]}},"content":{"56":{"position":[[1732,3]]},"67":{"position":[[344,3]]},"75":{"position":[[228,3]]},"77":{"position":[[1307,3]]},"280":{"position":[[940,3]]},"294":{"position":[[156,3]]}},"keywords":{}}],["creat",{"_index":186,"title":{"14":{"position":[[3,6]]},"19":{"position":[[12,6]]},"145":{"position":[[3,6]]},"169":{"position":[[17,6]]}},"content":{"31":{"position":[[40,7]]},"77":{"position":[[1241,7]]},"135":{"position":[[499,6]]},"143":{"position":[[46,6]]},"145":{"position":[[1,6]]},"146":{"position":[[146,12]]},"150":{"position":[[233,7]]},"154":{"position":[[127,6],[242,6]]},"162":{"position":[[26,6]]},"169":{"position":[[135,6]]},"176":{"position":[[189,6],[258,6],[484,7],[811,7],[875,7]]},"180":{"position":[[129,6],[314,6]]},"184":{"position":[[199,7],[289,7],[384,7]]},"185":{"position":[[291,7],[334,7],[435,7],[492,7]]},"186":{"position":[[149,6],[231,7],[268,6],[313,7]]},"187":{"position":[[59,6]]},"190":{"position":[[98,8]]},"191":{"position":[[15,7]]},"194":{"position":[[503,6]]},"196":{"position":[[299,8]]},"259":{"position":[[199,6]]}},"keywords":{}}],["create/modify/delete)defin",{"_index":1736,"title":{},"content":{"170":{"position":[[131,29]]}},"keywords":{}}],["create/modify/delete/renam",{"_index":1585,"title":{},"content":{"146":{"position":[[456,29]]}},"keywords":{}}],["create/modify/delete/rename)phas",{"_index":1644,"title":{},"content":{"150":{"position":[[602,34]]}},"keywords":{}}],["create/modify/delete/rename)upd",{"_index":1771,"title":{},"content":{"174":{"position":[[210,35]]}},"keywords":{}}],["create/modify/delete/renamedefin",{"_index":1658,"title":{},"content":{"153":{"position":[[86,33]]}},"keywords":{}}],["create_coordinator(hass",{"_index":2048,"title":{},"content":{"219":{"position":[[183,24]]}},"keywords":{}}],["createdha",{"_index":1111,"title":{},"content":{"84":{"position":[[116,9]]}},"keywords":{}}],["creation",{"_index":1888,"title":{},"content":{"187":{"position":[[116,8]]}},"keywords":{}}],["criteria",{"_index":1592,"title":{"236":{"position":[[15,9]]}},"content":{"146":{"position":[[639,8]]},"153":{"position":[[128,8]]},"154":{"position":[[412,11]]},"173":{"position":[[68,9]]},"239":{"position":[[624,8]]},"243":{"position":[[1140,10]]},"247":{"position":[[896,8]]},"255":{"position":[[305,9]]},"273":{"position":[[1879,8],[2397,9],[2521,9],[4474,8],[4862,8]]}},"keywords":{}}],["criteria"",{"_index":1761,"title":{},"content":{"173":{"position":[[28,14]]}},"keywords":{}}],["criteria.min_distance_from_avg",{"_index":2221,"title":{},"content":{"243":{"position":[[1227,30],[1456,30],[1664,31]]}},"keywords":{}}],["criterion"aft",{"_index":2539,"title":{},"content":{"256":{"position":[[265,20]]}},"keywords":{}}],["critic",{"_index":122,"title":{"5":{"position":[[0,8]]},"74":{"position":[[0,8]]},"75":{"position":[[23,10]]},"92":{"position":[[6,8]]}},"content":{"77":{"position":[[432,9],[1135,9],[1618,9]]},"78":{"position":[[263,9]]},"79":{"position":[[220,9]]},"80":{"position":[[258,9]]},"81":{"position":[[254,9]]},"82":{"position":[[52,9]]},"89":{"position":[[484,10]]},"93":{"position":[[329,8]]},"94":{"position":[[104,8]]},"200":{"position":[[21,8]]},"263":{"position":[[167,8]]},"273":{"position":[[1803,9]]}},"keywords":{}}],["cross",{"_index":2699,"title":{},"content":{"273":{"position":[[1508,5],[2142,5],[2567,8]]}},"keywords":{}}],["crucial",{"_index":1472,"title":{},"content":{"133":{"position":[[1150,7]]}},"keywords":{}}],["ct",{"_index":2320,"title":{},"content":{"246":{"position":[[1715,3],[1787,3]]},"255":{"position":[[2794,2],[2842,2],[2867,2],[2890,2],[2987,2],[3035,2]]},"264":{"position":[[313,2],[332,3],[361,2]]},"273":{"position":[[2363,3],[2382,3],[2420,2],[2487,3],[2506,3],[2542,2],[2630,2],[2674,2],[2768,2],[2784,2],[2797,2],[2920,2],[2936,2],[2944,2]]}},"keywords":{}}],["ct)distanc",{"_index":2582,"title":{},"content":{"264":{"position":[[189,11]]}},"keywords":{}}],["ct)outlier",{"_index":2581,"title":{},"content":{"264":{"position":[[133,10]]}},"keywords":{}}],["ct/interv",{"_index":2510,"title":{},"content":{"255":{"position":[[2933,11]]}},"keywords":{}}],["ct/kwh",{"_index":2110,"title":{},"content":{"237":{"position":[[385,6]]},"238":{"position":[[480,6]]},"241":{"position":[[168,6],[233,6],[308,6],[345,7]]},"262":{"position":[[22,6],[57,6]]},"263":{"position":[[22,6],[56,6]]},"264":{"position":[[21,6],[56,6]]}},"keywords":{}}],["ct/kwhdaili",{"_index":2160,"title":{},"content":{"241":{"position":[[128,11],[148,11]]}},"keywords":{}}],["ct/kwhflex",{"_index":2105,"title":{},"content":{"237":{"position":[[343,11]]}},"keywords":{}}],["ct/kwhmin",{"_index":2119,"title":{},"content":{"238":{"position":[[430,9]]}},"keywords":{}}],["ct/kwhnok",{"_index":1237,"title":{},"content":{"104":{"position":[[94,9]]}},"keywords":{}}],["ct/ΓΈre",{"_index":2757,"title":{},"content":{"273":{"position":[[4038,8]]}},"keywords":{}}],["ctrl+shift+p",{"_index":2079,"title":{},"content":{"230":{"position":[[196,12]]}},"keywords":{}}],["cumtim",{"_index":1397,"title":{},"content":{"126":{"position":[[108,8]]}},"keywords":{}}],["cumul",{"_index":2027,"title":{},"content":{"215":{"position":[[298,10]]}},"keywords":{}}],["currenc",{"_index":1195,"title":{"104":{"position":[[0,8]]}},"content":{"99":{"position":[[179,8]]},"104":{"position":[[55,11]]}},"keywords":{}}],["currency'",{"_index":1221,"title":{},"content":{"103":{"position":[[182,11]]}},"keywords":{}}],["current",{"_index":85,"title":{},"content":{"3":{"position":[[1090,9],[1198,7]]},"42":{"position":[[490,7],[696,7]]},"57":{"position":[[463,7]]},"83":{"position":[[1,7]]},"84":{"position":[[1,7]]},"85":{"position":[[1,7]]},"86":{"position":[[1,7]]},"87":{"position":[[1,7]]},"99":{"position":[[169,7]]},"125":{"position":[[60,8],[162,8]]},"146":{"position":[[269,7]]},"201":{"position":[[56,8],[165,7]]},"215":{"position":[[215,7]]},"246":{"position":[[2434,7]]},"252":{"position":[[1,7]]},"273":{"position":[[27,8],[540,8],[1478,7]]},"279":{"position":[[1343,7]]},"283":{"position":[[63,8]]}},"keywords":{}}],["current/next/previ",{"_index":644,"title":{},"content":{"43":{"position":[[144,21]]}},"keywords":{}}],["current/next/previous)rolling_hour.pi",{"_index":547,"title":{},"content":{"37":{"position":[[743,38]]}},"keywords":{}}],["current=%.2fmb",{"_index":1948,"title":{},"content":{"201":{"position":[[131,14]]}},"keywords":{}}],["current=%d",{"_index":1388,"title":{},"content":{"125":{"position":[[136,10]]}},"keywords":{}}],["current_date=2025",{"_index":2896,"title":{},"content":{"284":{"position":[[48,17],[217,17],[437,17]]}},"keywords":{}}],["current_hash",{"_index":854,"title":{},"content":{"56":{"position":[[1164,12],[1248,13]]}},"keywords":{}}],["current_hashlook",{"_index":969,"title":{},"content":{"70":{"position":[[99,16]]}},"keywords":{}}],["current_interval_pric",{"_index":2829,"title":{},"content":{"279":{"position":[[1034,24],[1732,23]]}},"keywords":{}}],["currentsubscript",{"_index":1193,"title":{},"content":{"99":{"position":[[135,19]]},"100":{"position":[[84,19]]}},"keywords":{}}],["curv",{"_index":2313,"title":{},"content":{"246":{"position":[[1492,6]]},"255":{"position":[[3317,6]]},"267":{"position":[[605,5]]},"273":{"position":[[624,5]]}},"keywords":{}}],["curveno",{"_index":2630,"title":{},"content":{"270":{"position":[[129,7]]}},"keywords":{}}],["custom",{"_index":381,"title":{"279":{"position":[[31,9]]},"280":{"position":[[25,9]]}},"content":{"31":{"position":[[126,6],[1246,6]]},"36":{"position":[[574,6]]},"136":{"position":[[737,6]]},"157":{"position":[[166,7]]},"195":{"position":[[110,6]]},"277":{"position":[[204,6],[290,6]]},"279":{"position":[[89,6],[1903,6]]},"280":{"position":[[83,6],[679,6]]},"301":{"position":[[113,8],[179,8]]}},"keywords":{}}],["custom_components.tibber_pric",{"_index":1277,"title":{},"content":{"110":{"position":[[57,32]]}},"keywords":{}}],["custom_components.tibber_prices.api",{"_index":1286,"title":{},"content":{"111":{"position":[[579,37],[650,37]]}},"keywords":{}}],["custom_components.tibber_prices.coordin",{"_index":1279,"title":{},"content":{"111":{"position":[[23,45],[101,45],[178,45]]}},"keywords":{}}],["custom_components.tibber_prices.coordinator.period",{"_index":1281,"title":{},"content":{"111":{"position":[[290,53],[387,53],[473,53]]}},"keywords":{}}],["custom_components.tibber_prices.coordinator.period_handl",{"_index":2536,"title":{},"content":{"256":{"position":[[73,60]]}},"keywords":{}}],["custom_components/tibber_pric",{"_index":1506,"title":{},"content":{"136":{"position":[[1,32]]}},"keywords":{}}],["custom_components/tibber_prices/manifest.json",{"_index":1791,"title":{},"content":{"176":{"position":[[597,45]]},"185":{"position":[[37,45]]},"186":{"position":[[28,45]]},"194":{"position":[[277,45]]}},"keywords":{}}],["custom_transl",{"_index":1519,"title":{},"content":{"136":{"position":[[882,20]]},"137":{"position":[[447,21]]}},"keywords":{}}],["custom_translations/*.json",{"_index":582,"title":{},"content":{"40":{"position":[[103,30]]},"52":{"position":[[307,30]]}},"keywords":{}}],["custom_translations/?cach",{"_index":984,"title":{},"content":{"72":{"position":[[99,27]]}},"keywords":{}}],["cycl",{"_index":805,"title":{},"content":{"55":{"position":[[343,5]]},"57":{"position":[[694,5]]},"61":{"position":[[20,5]]},"246":{"position":[[236,6]]},"283":{"position":[[158,6]]},"284":{"position":[[412,6]]},"288":{"position":[[545,7]]}},"keywords":{}}],["cycle)ent",{"_index":609,"title":{},"content":{"42":{"position":[[50,12]]}},"keywords":{}}],["d",{"_index":1903,"title":{},"content":{"194":{"position":[[61,1]]}},"keywords":{}}],["da",{"_index":2915,"title":{},"content":{"286":{"position":[[71,2]]}},"keywords":{}}],["daili",{"_index":652,"title":{"238":{"position":[[38,5]]}},"content":{"43":{"position":[[528,5]]},"51":{"position":[[516,5]]},"237":{"position":[[52,5],[123,5],[237,5],[329,5]]},"238":{"position":[[174,5],[311,5],[416,5]]},"241":{"position":[[114,5]]},"255":{"position":[[2396,6]]},"269":{"position":[[54,5]]},"272":{"position":[[89,5]]},"273":{"position":[[1616,6],[4020,5]]}},"keywords":{}}],["daily)surv",{"_index":728,"title":{},"content":{"51":{"position":[[573,15]]}},"keywords":{}}],["daily_avg",{"_index":2117,"title":{},"content":{"238":{"position":[[217,10],[354,10]]},"242":{"position":[[65,9]]},"272":{"position":[[194,9]]},"273":{"position":[[2367,9],[2491,9]]}},"keywords":{}}],["daily_max",{"_index":2104,"title":{},"content":{"237":{"position":[[273,10],[286,9]]},"272":{"position":[[168,10]]}},"keywords":{}}],["daily_min",{"_index":2102,"title":{},"content":{"237":{"position":[[159,10],[172,9]]},"242":{"position":[[37,9]]},"272":{"position":[[181,10]]},"273":{"position":[[2348,9],[2472,9]]}},"keywords":{}}],["dangl",{"_index":1154,"title":{},"content":{"92":{"position":[[208,8]]}},"keywords":{}}],["data",{"_index":147,"title":{"8":{"position":[[6,4]]},"30":{"position":[[11,4]]},"41":{"position":[[9,4]]},"51":{"position":[[18,4]]},"61":{"position":[[9,4]]},"69":{"position":[[15,4]]},"86":{"position":[[15,4]]},"99":{"position":[[5,4]]},"100":{"position":[[6,4]]},"107":{"position":[[0,4]]},"210":{"position":[[10,4]]},"285":{"position":[[21,4]]}},"content":{"8":{"position":[[23,5]]},"18":{"position":[[209,5],[520,4]]},"31":{"position":[[142,4],[361,4],[759,4],[835,4],[1075,4],[1281,4]]},"36":{"position":[[219,4]]},"42":{"position":[[507,5]]},"50":{"position":[[103,4],[300,4]]},"51":{"position":[[140,4],[155,4],[205,4],[333,4],[477,5],[547,5],[1011,4],[1090,4],[1117,4]]},"52":{"position":[[684,4]]},"56":{"position":[[139,4],[832,4],[957,5],[1121,4],[1378,4],[1424,5],[1447,4]]},"57":{"position":[[255,4],[410,4],[509,4],[871,4]]},"59":{"position":[[453,4]]},"61":{"position":[[82,4],[133,4],[146,4]]},"62":{"position":[[66,4]]},"66":{"position":[[113,5]]},"67":{"position":[[50,4],[1028,4]]},"70":{"position":[[34,4],[253,5]]},"73":{"position":[[107,4]]},"79":{"position":[[204,4],[325,4]]},"83":{"position":[[81,4]]},"90":{"position":[[241,4]]},"92":{"position":[[262,4],[312,4]]},"100":{"position":[[319,5]]},"101":{"position":[[198,4]]},"107":{"position":[[9,4]]},"111":{"position":[[96,4],[173,4]]},"114":{"position":[[115,4]]},"118":{"position":[[19,5],[84,5]]},"136":{"position":[[91,4]]},"137":{"position":[[45,4],[98,4],[186,4],[212,4]]},"156":{"position":[[295,4]]},"204":{"position":[[26,6],[130,4]]},"205":{"position":[[6,4]]},"212":{"position":[[54,4],[97,4]]},"213":{"position":[[98,4],[232,4]]},"216":{"position":[[179,4],[200,4]]},"221":{"position":[[80,4]]},"255":{"position":[[2317,4],[3894,5]]},"277":{"position":[[160,4],[398,4]]},"278":{"position":[[417,4],[825,4],[1002,4],[1159,4]]},"279":{"position":[[442,4],[2080,4]]},"280":{"position":[[341,4],[821,4]]},"283":{"position":[[185,4],[232,4]]},"284":{"position":[[132,4],[533,4]]},"285":{"position":[[139,5],[209,4],[279,4],[374,5]]},"288":{"position":[[125,5],[604,5],[642,4]]},"294":{"position":[[94,4]]},"296":{"position":[[103,4],[178,4]]},"300":{"position":[[39,4]]},"301":{"position":[[77,4],[353,4]]}},"keywords":{}}],["data"",{"_index":2017,"title":{},"content":{"213":{"position":[[191,11]]}},"keywords":{}}],["data)if",{"_index":626,"title":{},"content":{"42":{"position":[[431,7]]}},"keywords":{}}],["data)slow",{"_index":2951,"title":{},"content":{"292":{"position":[[90,9]]}},"keywords":{}}],["data)test",{"_index":1675,"title":{},"content":{"157":{"position":[[233,9]]}},"keywords":{}}],["data/config",{"_index":463,"title":{},"content":{"33":{"position":[[357,11]]},"67":{"position":[[292,11]]}},"keywords":{}}],["databas",{"_index":2020,"title":{"214":{"position":[[0,8]]}},"content":{},"keywords":{}}],["dataclass",{"_index":59,"title":{},"content":{"3":{"position":[[474,13]]}},"keywords":{}}],["datafetch",{"_index":49,"title":{},"content":{"3":{"position":[[303,12],[1028,12]]}},"keywords":{}}],["dataif",{"_index":393,"title":{},"content":{"31":{"position":[[304,6],[554,6]]}},"keywords":{}}],["datano",{"_index":2959,"title":{},"content":{"293":{"position":[[117,6]]}},"keywords":{}}],["datao(n",{"_index":2496,"title":{},"content":{"255":{"position":[[2587,8]]}},"keywords":{}}],["dataset",{"_index":2008,"title":{},"content":{"210":{"position":[[255,8]]}},"keywords":{}}],["datatransform",{"_index":782,"title":{"54":{"position":[[0,15]]}},"content":{"57":{"position":[[723,16]]},"78":{"position":[[88,15]]},"204":{"position":[[575,16]]}},"keywords":{}}],["datatransformer.invalidate_config_cach",{"_index":893,"title":{},"content":{"59":{"position":[[114,41]]}},"keywords":{}}],["datatransformertransform",{"_index":402,"title":{},"content":{"31":{"position":[[458,26]]}},"keywords":{}}],["dataupdatecoordin",{"_index":1521,"title":{"278":{"position":[[10,21]]},"292":{"position":[[9,24]]}},"content":{"137":{"position":[[1,21]]},"277":{"position":[[173,21]]},"278":{"position":[[96,21]]},"289":{"position":[[24,21]]}},"keywords":{}}],["dataupdatecoordinatortrigg",{"_index":2789,"title":{},"content":{"278":{"position":[[232,29]]}},"keywords":{}}],["date",{"_index":1544,"title":{},"content":{"139":{"position":[[153,4]]},"278":{"position":[[1395,5]]},"284":{"position":[[576,4]]},"299":{"position":[[230,4]]}},"keywords":{}}],["date_key",{"_index":2704,"title":{},"content":{"273":{"position":[[1773,8],[1870,8]]}},"keywords":{}}],["date_key)attribut",{"_index":2779,"title":{},"content":{"273":{"position":[[5227,20]]}},"keywords":{}}],["datetim",{"_index":2826,"title":{},"content":{"279":{"position":[[642,9]]},"280":{"position":[[277,9]]}},"keywords":{}}],["day",{"_index":551,"title":{"60":{"position":[[18,4]]},"262":{"position":[[19,3]]},"263":{"position":[[17,3]]},"264":{"position":[[20,3]]}},"content":{"37":{"position":[[835,3]]},"43":{"position":[[290,3]]},"51":{"position":[[224,3],[830,3],[1035,3]]},"60":{"position":[[371,3]]},"65":{"position":[[79,4],[339,4]]},"67":{"position":[[66,3]]},"100":{"position":[[311,4]]},"111":{"position":[[441,3]]},"198":{"position":[[208,3]]},"216":{"position":[[171,4]]},"243":{"position":[[2205,5]]},"246":{"position":[[1665,4]]},"247":{"position":[[179,3],[320,4]]},"250":{"position":[[28,3]]},"251":{"position":[[6,3]]},"253":{"position":[[221,3]]},"263":{"position":[[276,3],[571,3]]},"265":{"position":[[155,3],[365,3]]},"266":{"position":[[42,3],[148,3],[270,3],[385,4]]},"269":{"position":[[90,5],[127,5],[234,4]]},"270":{"position":[[213,3]]},"272":{"position":[[235,3],[425,3],[1005,4],[1767,3]]},"273":{"position":[[1006,3],[1248,3],[1832,4],[1965,3],[2014,3],[2113,3],[2185,3],[2303,3],[2318,3],[2344,3],[2438,3],[2468,3],[2592,3],[2606,3],[2618,4],[2662,4],[2725,5],[2755,3],[2829,3],[2879,5],[2909,3],[2998,3],[3053,4],[3099,3],[3160,3],[3167,3],[3232,3],[3362,3],[3428,3],[3507,3],[3841,3],[4398,3],[4950,3],[5297,4]]}},"keywords":{}}],["day'",{"_index":2606,"title":{},"content":{"267":{"position":[[593,5]]},"273":{"position":[[1593,5],[4468,5],[4815,5]]}},"keywords":{}}],["day)70",{"_index":943,"title":{},"content":{"67":{"position":[[608,7]]}},"keywords":{}}],["day_price_max",{"_index":2755,"title":{},"content":{"273":{"position":[[3989,14]]}},"keywords":{}}],["day_price_span",{"_index":2756,"title":{},"content":{"273":{"position":[[4004,15]]}},"keywords":{}}],["day_volatility_",{"_index":2752,"title":{},"content":{"273":{"position":[[3922,17],[4212,19]]}},"keywords":{}}],["dayhigh",{"_index":2598,"title":{},"content":{"267":{"position":[[265,7]]}},"keywords":{}}],["dayreject",{"_index":2764,"title":{},"content":{"273":{"position":[[4496,12]]}},"keywords":{}}],["days"",{"_index":2207,"title":{},"content":{"243":{"position":[[689,10]]},"259":{"position":[[76,10]]}},"keywords":{}}],["days)address",{"_index":304,"title":{},"content":{"23":{"position":[[65,12]]}},"keywords":{}}],["days)miss",{"_index":1121,"title":{},"content":{"86":{"position":[[113,12]]}},"keywords":{}}],["days/week",{"_index":998,"title":{},"content":{"75":{"position":[[125,10]]}},"keywords":{}}],["daysself",{"_index":2637,"title":{},"content":{"272":{"position":[[518,8]]}},"keywords":{}}],["daystransl",{"_index":706,"title":{},"content":{"50":{"position":[[138,15]]}},"keywords":{}}],["dd",{"_index":1579,"title":{},"content":{"146":{"position":[[167,2],[196,2]]}},"keywords":{}}],["de",{"_index":1530,"title":{},"content":{"137":{"position":[[523,4]]}},"keywords":{}}],["debt",{"_index":91,"title":{},"content":{"3":{"position":[[1216,5]]}},"keywords":{}}],["debug",{"_index":957,"title":{"68":{"position":[[0,9]]},"108":{"position":[[0,9]]},"110":{"position":[[7,5]]},"112":{"position":[[8,10]]},"115":{"position":[[7,10]]},"117":{"position":[[0,5]]},"127":{"position":[[5,9]]},"128":{"position":[[7,9]]},"256":{"position":[[0,9]]},"267":{"position":[[0,9]]},"295":{"position":[[0,9]]}},"content":{"110":{"position":[[90,5]]},"121":{"position":[[132,5]]},"135":{"position":[[136,5]]},"160":{"position":[[124,5]]},"232":{"position":[[27,5]]},"255":{"position":[[2721,5],[2736,6],[2797,6],[2845,6],[2909,6],[2964,6],[3010,6],[3038,6],[3619,5]]},"256":{"position":[[8,5],[134,5]]},"262":{"position":[[228,5],[243,6],[290,6],[363,6],[430,6]]},"263":{"position":[[307,5],[322,6],[369,6],[443,6],[517,6],[564,6]]},"264":{"position":[[268,5],[283,6],[336,6],[383,6],[430,6],[484,6],[546,6]]},"265":{"position":[[148,6],[204,6],[250,6],[287,6],[326,6]]},"266":{"position":[[141,6],[198,6]]},"267":{"position":[[6,9],[791,5]]},"296":{"position":[[10,5]]}},"keywords":{}}],["debug"",{"_index":1309,"title":{},"content":{"113":{"position":[[333,13]]}},"keywords":{}}],["debugg",{"_index":1401,"title":{},"content":{"128":{"position":[[94,8]]}},"keywords":{}}],["debuggingsetup",{"_index":696,"title":{},"content":{"48":{"position":[[141,14]]}},"keywords":{}}],["debuggingtest",{"_index":1423,"title":{},"content":{"131":{"position":[[343,16]]}},"keywords":{}}],["debugpi",{"_index":1398,"title":{"128":{"position":[[22,8]]}},"content":{"128":{"position":[[34,7]]}},"keywords":{}}],["debugpy.listen(5678",{"_index":1399,"title":{},"content":{"128":{"position":[[42,20]]}},"keywords":{}}],["debugpy.wait_for_cli",{"_index":1405,"title":{},"content":{"128":{"position":[[130,25]]}},"keywords":{}}],["decid",{"_index":1896,"title":{},"content":{"191":{"position":[[49,6]]},"243":{"position":[[546,7]]},"246":{"position":[[1056,6]]}},"keywords":{}}],["decis",{"_index":2088,"title":{},"content":{"235":{"position":[[64,9]]},"239":{"position":[[1605,8]]},"252":{"position":[[659,10]]}},"keywords":{}}],["decline)mov",{"_index":2517,"title":{},"content":{"255":{"position":[[3219,14]]}},"keywords":{}}],["decor",{"_index":1933,"title":{"200":{"position":[[7,10]]}},"content":{},"keywords":{}}],["decoupl",{"_index":2886,"title":{},"content":{"281":{"position":[[1062,9]]}},"keywords":{}}],["def",{"_index":224,"title":{},"content":{"17":{"position":[[65,3]]},"51":{"position":[[727,3],[939,3]]},"55":{"position":[[449,3]]},"56":{"position":[[1014,3]]},"114":{"position":[[50,3],[250,3]]},"118":{"position":[[26,3],[221,3]]},"200":{"position":[[71,3],[112,3],[351,3]]},"204":{"position":[[274,3],[592,3],[651,3],[783,3]]},"205":{"position":[[40,3]]},"209":{"position":[[48,3],[262,3],[322,3]]},"213":{"position":[[33,3]]},"218":{"position":[[50,3]]},"219":{"position":[[32,3]]},"221":{"position":[[15,3]]},"243":{"position":[[1105,3]]},"255":{"position":[[72,3],[262,3],[464,3],[531,3]]},"278":{"position":[[474,3]]},"279":{"position":[[598,3]]},"280":{"position":[[239,3]]},"281":{"position":[[442,3],[689,3],[765,3],[868,3]]},"288":{"position":[[47,3]]}},"keywords":{}}],["def5678](link",{"_index":1868,"title":{},"content":{"181":{"position":[[183,15]]}},"keywords":{}}],["default",{"_index":1275,"title":{"246":{"position":[[25,9]]}},"content":{"110":{"position":[[37,8]]},"239":{"position":[[746,8],[1030,9]]},"245":{"position":[[333,8]]},"246":{"position":[[45,8],[420,9],[1081,9],[2061,8],[2247,9],[2394,9],[2407,8],[2537,8],[2708,8]]},"256":{"position":[[53,8]]},"259":{"position":[[302,7]]},"269":{"position":[[303,8]]}},"keywords":{}}],["default_best_price_flex",{"_index":2254,"title":{},"content":{"245":{"position":[[263,23]]}},"keywords":{}}],["default_best_price_min_distance_from_avg",{"_index":2263,"title":{},"content":{"245":{"position":[[700,40]]}},"keywords":{}}],["default_best_price_min_period_length",{"_index":2261,"title":{},"content":{"245":{"position":[[590,36]]}},"keywords":{}}],["default_peak_price_flex",{"_index":2255,"title":{},"content":{"245":{"position":[[351,23]]}},"keywords":{}}],["default_peak_price_min_distance_from_avg",{"_index":2264,"title":{},"content":{"245":{"position":[[767,40]]}},"keywords":{}}],["default_peak_price_min_period_length",{"_index":2262,"title":{},"content":{"245":{"position":[[645,36]]}},"keywords":{}}],["default_relaxation_attempts_best",{"_index":2257,"title":{},"content":{"245":{"position":[[422,32]]}},"keywords":{}}],["default_relaxation_attempts_peak",{"_index":2260,"title":{},"content":{"245":{"position":[[506,32]]}},"keywords":{}}],["defaults80",{"_index":1122,"title":{},"content":{"86":{"position":[[159,11]]}},"keywords":{}}],["defaultslearn",{"_index":2645,"title":{},"content":{"272":{"position":[[1074,13]]}},"keywords":{}}],["defeat",{"_index":2170,"title":{},"content":{"241":{"position":[[596,7]]}},"keywords":{}}],["defin",{"_index":1604,"title":{},"content":{"148":{"position":[[43,7]]},"245":{"position":[[1,7],[241,7]]}},"keywords":{}}],["definitions.pi",{"_index":1507,"title":{},"content":{"136":{"position":[[390,14]]}},"keywords":{}}],["degrad",{"_index":2379,"title":{},"content":{"248":{"position":[[577,8]]}},"keywords":{}}],["delay",{"_index":634,"title":{},"content":{"42":{"position":[[589,7]]},"278":{"position":[[1188,5]]},"279":{"position":[[1518,6]]},"287":{"position":[[438,5]]},"299":{"position":[[281,5]]}},"keywords":{}}],["deleg",{"_index":516,"title":{},"content":{"37":{"position":[[201,9]]}},"keywords":{}}],["delet",{"_index":1070,"title":{},"content":{"79":{"position":[[142,7]]},"174":{"position":[[306,6]]}},"keywords":{}}],["deleteif",{"_index":1617,"title":{},"content":{"149":{"position":[[308,8]]}},"keywords":{}}],["deliveri",{"_index":2745,"title":{},"content":{"273":{"position":[[3562,8],[3657,8]]}},"keywords":{}}],["demand",{"_index":481,"title":{},"content":{"34":{"position":[[87,7]]},"57":{"position":[[879,6]]},"273":{"position":[[3773,6]]}},"keywords":{}}],["den",{"_index":2911,"title":{},"content":{"286":{"position":[[32,3]]}},"keywords":{}}],["depend",{"_index":863,"title":{},"content":{"56":{"position":[[1528,8]]},"120":{"position":[[146,10]]},"133":{"position":[[1085,7]]},"146":{"position":[[488,12]]},"279":{"position":[[1686,6]]}},"keywords":{}}],["dependenciesarchitectur",{"_index":1416,"title":{},"content":{"131":{"position":[[46,24]]}},"keywords":{}}],["dependenciesdevelop",{"_index":1490,"title":{},"content":{"135":{"position":[[90,19]]}},"keywords":{}}],["dependenciesruff",{"_index":2083,"title":{},"content":{"231":{"position":[[149,16]]}},"keywords":{}}],["describ",{"_index":290,"title":{},"content":{"21":{"position":[[348,8]]},"169":{"position":[[92,8]]}},"keywords":{}}],["descript",{"_index":194,"title":{"31":{"position":[[5,12]]}},"content":{"14":{"position":[[78,11]]},"21":{"position":[[15,11],[43,11],[86,11]]},"40":{"position":[[143,13]]},"52":{"position":[[149,13],[345,13],[376,12],[689,11]]},"62":{"position":[[343,13]]},"134":{"position":[[470,11]]},"136":{"position":[[414,12],[927,14]]},"181":{"position":[[102,11],[171,11],[244,11],[333,11],[400,11]]},"196":{"position":[[104,11],[228,12],[367,13]]}},"keywords":{}}],["design",{"_index":989,"title":{},"content":{"73":{"position":[[99,7]]},"235":{"position":[[57,6]]},"239":{"position":[[1598,6]]},"246":{"position":[[2008,6]]},"252":{"position":[[652,6]]},"273":{"position":[[1534,6],[4980,6]]},"300":{"position":[[31,7]]}},"keywords":{}}],["designdebug",{"_index":2065,"title":{},"content":{"222":{"position":[[249,15]]}},"keywords":{}}],["desktop",{"_index":163,"title":{},"content":{"11":{"position":[[51,7]]}},"keywords":{}}],["despit",{"_index":2751,"title":{},"content":{"273":{"position":[[3757,7]]}},"keywords":{}}],["detail",{"_index":482,"title":{"170":{"position":[[7,8]]}},"content":{"34":{"position":[[100,8]]},"48":{"position":[[102,8]]},"122":{"position":[[8,8]]},"132":{"position":[[122,8]]},"140":{"position":[[25,8]]},"143":{"position":[[31,8]]},"146":{"position":[[747,8]]},"165":{"position":[[66,8]]},"170":{"position":[[4,8],[244,9]]},"174":{"position":[[492,8]]},"196":{"position":[[95,8]]},"233":{"position":[[163,8]]},"239":{"position":[[166,8]]},"255":{"position":[[800,8]]},"279":{"position":[[1381,7]]}},"keywords":{}}],["detect",{"_index":1082,"title":{},"content":{"80":{"position":[[227,9]]},"111":{"position":[[242,9]]},"176":{"position":[[400,7],[778,7]]},"179":{"position":[[96,10]]},"180":{"position":[[246,6]]},"185":{"position":[[418,7]]},"236":{"position":[[8,9]]},"243":{"position":[[1593,9]]},"245":{"position":[[108,9],[214,9],[411,10]]},"246":{"position":[[1997,9]]},"247":{"position":[[125,9]]},"248":{"position":[[567,9]]},"255":{"position":[[683,6],[1791,10],[1802,7],[2178,9],[2249,9],[2779,9]]},"256":{"position":[[445,9]]},"264":{"position":[[298,9]]},"267":{"position":[[830,9]]},"273":{"position":[[3870,6]]},"296":{"position":[[244,8]]},"297":{"position":[[132,8]]}},"keywords":{}}],["detected"",{"_index":2613,"title":{},"content":{"267":{"position":[[1045,14]]}},"keywords":{}}],["detectednew",{"_index":884,"title":{},"content":{"57":{"position":[[675,11]]}},"keywords":{}}],["detectionreason",{"_index":2305,"title":{},"content":{"246":{"position":[[1177,19]]}},"keywords":{}}],["determin",{"_index":2358,"title":{},"content":{"247":{"position":[[659,9]]}},"keywords":{}}],["deterministiceasi",{"_index":2527,"title":{},"content":{"255":{"position":[[3596,19]]}},"keywords":{}}],["dev",{"_index":2073,"title":{},"content":{"229":{"position":[[14,3]]},"255":{"position":[[2904,4]]}},"keywords":{}}],["dev)preserv",{"_index":2469,"title":{},"content":{"255":{"position":[[1323,13]]}},"keywords":{}}],["devcontain",{"_index":178,"title":{},"content":{"12":{"position":[[207,12]]},"28":{"position":[[214,12]]},"131":{"position":[[9,13]]},"134":{"position":[[38,12]]},"179":{"position":[[1075,12],[1148,12],[1461,14]]},"230":{"position":[[146,12]]},"231":{"position":[[5,12]]}},"keywords":{}}],["develop",{"_index":183,"title":{"13":{"position":[[0,11]]},"91":{"position":[[3,11]]},"130":{"position":[[0,9]]},"131":{"position":[[3,9]]},"133":{"position":[[12,12]]},"135":{"position":[[4,11]]},"163":{"position":[[20,12]]},"228":{"position":[[0,11]]},"231":{"position":[[0,11]]}},"content":{"48":{"position":[[164,11],[318,11]]},"73":{"position":[[154,11]]},"121":{"position":[[32,9]]},"129":{"position":[[203,11]]},"133":{"position":[[21,9],[666,11],[756,11]]},"134":{"position":[[177,11]]},"135":{"position":[[398,11]]},"141":{"position":[[91,11]]},"163":{"position":[[89,12]]},"226":{"position":[[9,11]]},"231":{"position":[[137,11]]},"235":{"position":[[258,10]]},"289":{"position":[[194,9]]},"300":{"position":[[153,11]]}},"keywords":{}}],["developersaltern",{"_index":2237,"title":{},"content":{"243":{"position":[[2043,21]]}},"keywords":{}}],["deviat",{"_index":1268,"title":{},"content":{"107":{"position":[[165,9]]},"237":{"position":[[35,7]]},"255":{"position":[[2129,11]]}},"keywords":{}}],["deviationformula",{"_index":2457,"title":{},"content":{"255":{"position":[[972,17]]}},"keywords":{}}],["deviations)toler",{"_index":2461,"title":{},"content":{"255":{"position":[[1092,20]]}},"keywords":{}}],["devic",{"_index":1172,"title":{},"content":{"94":{"position":[[615,7]]},"156":{"position":[[193,7]]}},"keywords":{}}],["devices)wrong",{"_index":2289,"title":{},"content":{"246":{"position":[[689,13]]}},"keywords":{}}],["diagnost",{"_index":2947,"title":{},"content":{"289":{"position":[[260,11]]}},"keywords":{}}],["dich",{"_index":2868,"title":{},"content":{"281":{"position":[[37,4]]}},"keywords":{}}],["dict",{"_index":663,"title":{},"content":{"43":{"position":[[906,5]]},"52":{"position":[[86,6]]},"55":{"position":[[662,4]]},"56":{"position":[[1614,4]]},"64":{"position":[[86,4]]},"65":{"position":[[98,4]]},"67":{"position":[[187,5],[254,4]]},"114":{"position":[[85,5]]},"204":{"position":[[263,5],[326,5],[632,4],[678,5]]},"205":{"position":[[79,4]]},"213":{"position":[[68,5]]},"221":{"position":[[50,5]]},"255":{"position":[[525,5],[575,5]]}},"keywords":{}}],["dict[str",{"_index":1957,"title":{},"content":{"204":{"position":[[253,9]]},"255":{"position":[[168,9]]}},"keywords":{}}],["dictionari",{"_index":709,"title":{"53":{"position":[[10,10]]}},"content":{"50":{"position":[[204,10]]}},"keywords":{}}],["didn't",{"_index":1621,"title":{},"content":{"149":{"position":[[479,6]]},"194":{"position":[[496,6]]},"246":{"position":[[2175,6]]}},"keywords":{}}],["diff",{"_index":604,"title":{},"content":{"41":{"position":[[505,4]]}},"keywords":{}}],["differ",{"_index":412,"title":{},"content":{"31":{"position":[[677,11],[957,7]]},"36":{"position":[[308,12]]},"50":{"position":[[53,9]]},"57":{"position":[[279,11]]},"62":{"position":[[140,11]]},"107":{"position":[[150,10],[228,10]]},"137":{"position":[[313,11]]},"163":{"position":[[616,9]]},"243":{"position":[[632,9]]},"246":{"position":[[35,9],[76,9],[2646,9]]},"272":{"position":[[735,9]]},"273":{"position":[[1408,9],[3058,6]]},"277":{"position":[[61,9]]},"278":{"position":[[366,9],[1112,9]]}},"keywords":{}}],["different"",{"_index":2247,"title":{},"content":{"243":{"position":[[2357,15]]}},"keywords":{}}],["diminish",{"_index":2414,"title":{},"content":{"252":{"position":[[1197,11]]},"258":{"position":[[197,11]]}},"keywords":{}}],["direct",{"_index":245,"title":{},"content":{"18":{"position":[[151,10]]},"178":{"position":[[292,6]]},"255":{"position":[[3256,10]]}},"keywords":{}}],["directly..."",{"_index":1699,"title":{},"content":{"162":{"position":[[51,17]]}},"keywords":{}}],["directlyreturn",{"_index":439,"title":{},"content":{"31":{"position":[[1286,14]]}},"keywords":{}}],["directori",{"_index":1566,"title":{"162":{"position":[[22,10]]},"165":{"position":[[9,10]]}},"content":{"145":{"position":[[32,9],[156,9]]},"174":{"position":[[104,9]]}},"keywords":{}}],["disabl",{"_index":1824,"title":{},"content":{"179":{"position":[[652,7],[1030,9]]},"180":{"position":[[382,8]]},"252":{"position":[[1329,7],[1978,9]]},"253":{"position":[[84,10]]},"273":{"position":[[443,7]]}},"keywords":{}}],["discard",{"_index":1689,"title":{},"content":{"159":{"position":[[225,7]]}},"keywords":{}}],["disconnect",{"_index":1674,"title":{},"content":{"157":{"position":[[208,11]]}},"keywords":{}}],["discov",{"_index":1473,"title":{},"content":{"133":{"position":[[1162,11]]},"171":{"position":[[70,9]]},"272":{"position":[[1206,8]]}},"keywords":{}}],["discoveredtrack",{"_index":1607,"title":{},"content":{"148":{"position":[[119,15]]}},"keywords":{}}],["discussiondiscuss",{"_index":362,"title":{},"content":{"28":{"position":[[67,21]]}},"keywords":{}}],["dishwash",{"_index":2271,"title":{},"content":{"246":{"position":[[243,12]]},"272":{"position":[[1839,11]]}},"keywords":{}}],["disjoint",{"_index":1092,"title":{},"content":{"81":{"position":[[181,8]]}},"keywords":{}}],["display",{"_index":1236,"title":{},"content":{"104":{"position":[[81,9],[124,9],[166,9]]},"239":{"position":[[376,7],[906,7],[1077,7]]},"277":{"position":[[472,9]]}},"keywords":{}}],["distanc",{"_index":1377,"title":{"237":{"position":[[22,8]]},"238":{"position":[[7,8],[23,9]]},"260":{"position":[[37,9]]}},"content":{"122":{"position":[[284,8]]},"235":{"position":[[192,8],[465,8]]},"238":{"position":[[440,9]]},"239":{"position":[[1249,9]]},"241":{"position":[[246,8],[379,9]]},"243":{"position":[[530,8],[1754,8]]},"245":{"position":[[758,8],[825,8]]},"255":{"position":[[192,8]]},"256":{"position":[[493,8]]},"260":{"position":[[86,8]]},"263":{"position":[[492,8]]},"267":{"position":[[111,9],[202,8]]},"270":{"position":[[81,8]]},"273":{"position":[[521,8]]}},"keywords":{}}],["distinct",{"_index":703,"title":{},"content":{"50":{"position":[[24,8]]}},"keywords":{}}],["distribut",{"_index":2633,"title":{"287":{"position":[[15,12]]}},"content":{"270":{"position":[[163,13]]},"272":{"position":[[1735,12]]},"273":{"position":[[934,12],[1202,11]]},"278":{"position":[[1057,13]]},"287":{"position":[[388,12]]},"290":{"position":[[179,12]]},"301":{"position":[[285,12]]}},"keywords":{}}],["distributionransac",{"_index":2533,"title":{},"content":{"255":{"position":[[3847,18]]}},"keywords":{}}],["distributiontomorrow",{"_index":2801,"title":{},"content":{"278":{"position":[[1138,20]]}},"keywords":{}}],["doc",{"_index":357,"title":{},"content":{"27":{"position":[[132,4]]},"139":{"position":[[13,4],[44,4],[142,4]]},"161":{"position":[[48,5]]},"162":{"position":[[45,5],[239,5]]},"289":{"position":[[67,5]]}},"keywords":{}}],["docs/)arch",{"_index":1772,"title":{},"content":{"174":{"position":[[289,13]]}},"keywords":{}}],["docs/develop",{"_index":1613,"title":{},"content":{"149":{"position":[[154,17]]},"150":{"position":[[429,17]]},"163":{"position":[[465,18]]}},"keywords":{}}],["docs/development/)defin",{"_index":1635,"title":{},"content":{"150":{"position":[[283,25]]}},"keywords":{}}],["docs/development/ai",{"_index":1539,"title":{},"content":{"139":{"position":[[55,19]]}},"keywords":{}}],["docs/development/if",{"_index":1610,"title":{},"content":{"149":{"position":[[22,19]]}},"keywords":{}}],["docs/development/mi",{"_index":1614,"title":{},"content":{"149":{"position":[[180,19]]}},"keywords":{}}],["docs/development/modul",{"_index":1719,"title":{},"content":{"166":{"position":[[1,23]]},"174":{"position":[[515,23]]}},"keywords":{}}],["docs/user/develop",{"_index":1538,"title":{},"content":{"139":{"position":[[24,19]]}},"keywords":{}}],["docs/user/period",{"_index":2774,"title":{},"content":{"273":{"position":[[5058,16]]}},"keywords":{}}],["docstr",{"_index":1665,"title":{},"content":{"154":{"position":[[331,10]]}},"keywords":{}}],["document",{"_index":97,"title":{"48":{"position":[[8,14]]},"73":{"position":[[8,14]]},"130":{"position":[[10,13]]},"132":{"position":[[6,14]]},"139":{"position":[[3,13]]},"145":{"position":[[21,9]]},"154":{"position":[[14,14]]},"161":{"position":[[19,14]]},"300":{"position":[[8,14]]}},"content":{"3":{"position":[[1296,8]]},"14":{"position":[[155,13]]},"18":{"position":[[555,13]]},"22":{"position":[[167,13]]},"132":{"position":[[21,13]]},"133":{"position":[[495,13],[850,13]]},"141":{"position":[[70,13],[138,14]]},"146":{"position":[[16,8]]},"150":{"position":[[723,10]]},"161":{"position":[[129,14]]},"171":{"position":[[30,9],[51,10],[248,8]]},"173":{"position":[[232,13]]},"174":{"position":[[246,13]]},"181":{"position":[[217,13]]},"235":{"position":[[6,8]]},"273":{"position":[[5043,14]]},"274":{"position":[[6,14]]},"275":{"position":[[21,13]]}},"keywords":{}}],["documentationgraphql",{"_index":1271,"title":{},"content":{"107":{"position":[[340,20]]}},"keywords":{}}],["documentationplanning/*.md",{"_index":1718,"title":{},"content":{"165":{"position":[[84,26]]}},"keywords":{}}],["documentationrefactor",{"_index":258,"title":{},"content":{"18":{"position":[[357,22]]},"133":{"position":[[283,25]]}},"keywords":{}}],["documented)debug",{"_index":954,"title":{},"content":{"67":{"position":[[950,21]]}},"keywords":{}}],["doesn't",{"_index":1683,"title":{},"content":{"159":{"position":[[123,7]]},"194":{"position":[[167,7]]},"252":{"position":[[1238,7]]},"279":{"position":[[1944,7]]}},"keywords":{}}],["domin",{"_index":2168,"title":{},"content":{"241":{"position":[[530,8]]},"242":{"position":[[325,9]]},"243":{"position":[[497,9]]},"260":{"position":[[102,10]]},"263":{"position":[[508,8]]},"264":{"position":[[536,9]]}},"keywords":{}}],["don't",{"_index":336,"title":{},"content":{"26":{"position":[[1,5]]},"148":{"position":[[84,6]]},"150":{"position":[[555,6]]},"207":{"position":[[236,5]]},"253":{"position":[[145,6]]}},"keywords":{}}],["done",{"_index":1703,"title":{},"content":{"162":{"position":[[255,5]]},"173":{"position":[[306,5]]},"184":{"position":[[187,5]]},"278":{"position":[[1517,4]]},"279":{"position":[[802,4]]},"284":{"position":[[503,4]]}},"keywords":{}}],["doubl",{"_index":636,"title":{},"content":{"42":{"position":[[606,6]]},"279":{"position":[[1628,6]]},"284":{"position":[[601,6]]},"299":{"position":[[135,6]]}},"keywords":{}}],["down",{"_index":928,"title":{},"content":{"64":{"position":[[293,5]]}},"keywords":{}}],["download",{"_index":1846,"title":{},"content":{"179":{"position":[[1648,8]]}},"keywords":{}}],["draft",{"_index":1598,"title":{},"content":{"147":{"position":[[34,5]]},"162":{"position":[[104,5]]}},"keywords":{}}],["draftsplanning/readme.md",{"_index":1717,"title":{},"content":{"165":{"position":[[39,24]]}},"keywords":{}}],["drop",{"_index":1411,"title":{},"content":{"129":{"position":[[102,5]]}},"keywords":{}}],["dt",{"_index":129,"title":{},"content":{"6":{"position":[[77,2]]}},"keywords":{}}],["dt_util",{"_index":127,"title":{},"content":{"6":{"position":[[12,7],[83,7]]}},"keywords":{}}],["dt_util.as_local(price_tim",{"_index":132,"title":{},"content":{"6":{"position":[[151,28]]}},"keywords":{}}],["dt_util.now",{"_index":137,"title":{},"content":{"6":{"position":[[211,13]]}},"keywords":{}}],["dt_util.parse_datetime(starts_at",{"_index":131,"title":{},"content":{"6":{"position":[[104,33]]}},"keywords":{}}],["dual",{"_index":576,"title":{"40":{"position":[[3,4]]}},"content":{"137":{"position":[[405,4]]}},"keywords":{}}],["duplic",{"_index":358,"title":{"190":{"position":[[6,9]]}},"content":{"27":{"position":[[198,11]]},"43":{"position":[[1031,11]]},"77":{"position":[[1751,9]]},"81":{"position":[[329,9]]}},"keywords":{}}],["durat",{"_index":1380,"title":{},"content":{"124":{"position":[[71,8],[157,9]]},"200":{"position":[[201,8],[297,8]]},"218":{"position":[[267,8],[313,8]]},"246":{"position":[[1570,8]]},"269":{"position":[[390,8]]},"272":{"position":[[1666,8]]}},"keywords":{}}],["duration:.3f}s"",{"_index":2043,"title":{},"content":{"218":{"position":[[349,21]]}},"keywords":{}}],["durationreject",{"_index":2772,"title":{},"content":{"273":{"position":[[4891,17]]}},"keywords":{}}],["dure",{"_index":768,"title":{"171":{"position":[[28,6]]}},"content":{"52":{"position":[[443,6]]},"56":{"position":[[1314,6]]},"67":{"position":[[665,6],[768,6]]},"133":{"position":[[353,6]]},"150":{"position":[[734,6]]},"163":{"position":[[356,6]]},"246":{"position":[[1527,6]]},"255":{"position":[[3491,6]]},"259":{"position":[[214,6]]}},"keywords":{}}],["dynam",{"_index":2179,"title":{"243":{"position":[[10,7]]}},"content":{"243":{"position":[[1174,7]]}},"keywords":{}}],["e.g",{"_index":72,"title":{},"content":{"3":{"position":[[650,6]]},"43":{"position":[[740,6]]},"103":{"position":[[206,5]]},"252":{"position":[[1592,6]]},"273":{"position":[[2157,6]]},"279":{"position":[[1725,6],[1832,6]]}},"keywords":{}}],["each",{"_index":105,"title":{"156":{"position":[[6,4]]}},"content":{"3":{"position":[[1425,4]]},"34":{"position":[[45,4]]},"37":{"position":[[1220,4]]},"43":{"position":[[584,4],[1207,4]]},"56":{"position":[[633,4]]},"77":{"position":[[443,4]]},"148":{"position":[[73,4]]},"150":{"position":[[382,4]]},"152":{"position":[[61,4]]},"153":{"position":[[1,4]]},"160":{"position":[[199,4]]},"174":{"position":[[176,4]]},"246":{"position":[[2618,4]]},"251":{"position":[[1,4]]},"256":{"position":[[260,4]]},"273":{"position":[[1552,4],[2180,4]]},"278":{"position":[[343,5],[1072,4]]}},"keywords":{}}],["earli",{"_index":1649,"title":{},"content":{"152":{"position":[[85,7]]},"162":{"position":[[170,6]]},"246":{"position":[[1212,5]]},"253":{"position":[[96,5]]},"267":{"position":[[445,5]]},"278":{"position":[[776,5]]}},"keywords":{}}],["earlier",{"_index":2304,"title":{},"content":{"246":{"position":[[1169,7]]}},"keywords":{}}],["earlytim",{"_index":2809,"title":{},"content":{"278":{"position":[[1477,10]]}},"keywords":{}}],["easi",{"_index":1128,"title":{},"content":{"86":{"position":[[404,4]]},"182":{"position":[[215,5]]}},"keywords":{}}],["easier",{"_index":1763,"title":{},"content":{"173":{"position":[[203,6]]},"174":{"position":[[419,6]]},"273":{"position":[[830,6]]}},"keywords":{}}],["easiest",{"_index":1795,"title":{"178":{"position":[[20,10]]}},"content":{},"keywords":{}}],["econom",{"_index":2761,"title":{},"content":{"273":{"position":[[4320,12]]}},"keywords":{}}],["edg",{"_index":319,"title":{},"content":{"25":{"position":[[91,4]]},"133":{"position":[[982,4]]},"273":{"position":[[487,4]]}},"keywords":{}}],["edit",{"_index":206,"title":{},"content":{"15":{"position":[[1,4]]},"176":{"position":[[554,4]]}},"keywords":{}}],["effect",{"_index":2147,"title":{},"content":{"239":{"position":[[1147,7]]},"262":{"position":[[200,9]]}},"keywords":{}}],["effectiveness."",{"_index":2430,"title":{},"content":{"252":{"position":[[2199,21]]}},"keywords":{}}],["effects)if",{"_index":2808,"title":{},"content":{"278":{"position":[[1415,10]]}},"keywords":{}}],["effici",{"_index":2001,"title":{"210":{"position":[[0,9]]}},"content":{},"keywords":{}}],["efficientlyent",{"_index":2888,"title":{},"content":{"281":{"position":[[1136,19]]}},"keywords":{}}],["egg",{"_index":1492,"title":{},"content":{"135":{"position":[[160,4]]}},"keywords":{}}],["eigentlich",{"_index":2869,"title":{},"content":{"281":{"position":[[42,10]]}},"keywords":{}}],["electr",{"_index":2738,"title":{},"content":{"273":{"position":[[3438,11]]}},"keywords":{}}],["elif",{"_index":2428,"title":{},"content":{"252":{"position":[[2026,4]]},"272":{"position":[[300,4]]}},"keywords":{}}],["elimin",{"_index":692,"title":{},"content":{"47":{"position":[[110,11]]},"55":{"position":[[903,10]]},"57":{"position":[[920,11]]},"272":{"position":[[479,10]]}},"keywords":{}}],["emb",{"_index":1410,"title":{},"content":{"129":{"position":[[86,5],[92,7]]}},"keywords":{}}],["emoji",{"_index":1866,"title":{},"content":{"181":{"position":[[51,5]]}},"keywords":{}}],["en",{"_index":1531,"title":{},"content":{"137":{"position":[[528,3]]}},"keywords":{}}],["enabl",{"_index":755,"title":{"110":{"position":[[0,6]]}},"content":{"51":{"position":[[1369,7]]},"52":{"position":[[947,7]]},"122":{"position":[[1,6]]},"150":{"position":[[655,7]]},"152":{"position":[[39,7]]},"245":{"position":[[342,8]]},"247":{"position":[[475,8]]},"248":{"position":[[17,7]]},"256":{"position":[[1,6]]},"296":{"position":[[3,6]]}},"keywords":{}}],["enable_relaxation_best",{"_index":2546,"title":{},"content":{"258":{"position":[[37,23],[278,23]]}},"keywords":{}}],["end",{"_index":376,"title":{"30":{"position":[[0,3],[7,3]]}},"content":{"141":{"position":[[103,3]]},"161":{"position":[[202,3]]}},"keywords":{}}],["endpoint",{"_index":505,"title":{"97":{"position":[[8,9]]}},"content":{"36":{"position":[[589,9]]},"212":{"position":[[187,9]]}},"keywords":{}}],["energy/moneyprefer",{"_index":2290,"title":{},"content":{"246":{"position":[[723,23]]}},"keywords":{}}],["enforc",{"_index":2347,"title":{},"content":{"247":{"position":[[44,12],[552,12]]},"252":{"position":[[628,9]]}},"keywords":{}}],["enhanc",{"_index":2481,"title":{"268":{"position":[[7,13]]},"271":{"position":[[7,13]]}},"content":{"255":{"position":[[1775,8]]}},"keywords":{}}],["enough",{"_index":1734,"title":{},"content":{"170":{"position":[[13,6]]},"246":{"position":[[471,6]]},"288":{"position":[[373,6]]}},"keywords":{}}],["enrich",{"_index":148,"title":{"8":{"position":[[11,11]]},"41":{"position":[[14,11]]},"57":{"position":[[31,10]]}},"content":{"8":{"position":[[8,6],[90,8]]},"31":{"position":[[414,10],[545,8],[577,6],[750,8],[826,8]]},"36":{"position":[[277,10]]},"38":{"position":[[68,11]]},"41":{"position":[[236,10]]},"51":{"position":[[291,8]]},"57":{"position":[[103,10],[240,8],[394,9],[494,8],[754,10]]},"62":{"position":[[110,10]]},"64":{"position":[[194,11]]},"65":{"position":[[229,7]]},"66":{"position":[[228,11]]},"67":{"position":[[452,10]]},"86":{"position":[[331,8]]},"107":{"position":[[17,8],[284,10]]},"136":{"position":[[194,10]]},"137":{"position":[[191,11],[220,8]]},"206":{"position":[[104,8]]}},"keywords":{}}],["enrich_intervals_bulk(interv",{"_index":1981,"title":{},"content":{"206":{"position":[[210,32]]}},"keywords":{}}],["enrich_price_info_with_differ",{"_index":151,"title":{},"content":{"8":{"position":[[55,34],[101,35]]}},"keywords":{}}],["enrich_single_interval(interv",{"_index":1979,"title":{},"content":{"206":{"position":[[115,32]]}},"keywords":{}}],["enrichment)midnight",{"_index":883,"title":{},"content":{"57":{"position":[[646,19]]}},"keywords":{}}],["ensur",{"_index":964,"title":{},"content":{"69":{"position":[[180,6]]},"133":{"position":[[1300,6]]},"238":{"position":[[10,6]]},"243":{"position":[[598,7]]},"246":{"position":[[448,7]]},"248":{"position":[[133,7]]},"250":{"position":[[1,6]]},"263":{"position":[[183,7]]}},"keywords":{}}],["enter",{"_index":2384,"title":{},"content":{"251":{"position":[[112,5]]},"252":{"position":[[1188,8]]}},"keywords":{}}],["entir",{"_index":1732,"title":{},"content":{"169":{"position":[[105,6]]},"247":{"position":[[172,6],[312,7]]},"263":{"position":[[269,6]]}},"keywords":{}}],["entiti",{"_index":57,"title":{},"content":{"3":{"position":[[447,6]]},"31":{"position":[[78,6],[1030,6]]},"36":{"position":[[433,8]]},"37":{"position":[[170,6]]},"38":{"position":[[171,6]]},"40":{"position":[[71,6]]},"43":{"position":[[440,6],[916,6]]},"52":{"position":[[142,6],[275,6],[338,6],[818,6],[895,8]]},"62":{"position":[[335,7]]},"64":{"position":[[235,6]]},"65":{"position":[[253,6]]},"66":{"position":[[255,6]]},"75":{"position":[[211,6]]},"77":{"position":[[488,6],[525,8]]},"80":{"position":[[294,8]]},"81":{"position":[[104,6],[155,6]]},"136":{"position":[[407,6],[582,6]]},"137":{"position":[[80,6]]},"154":{"position":[[522,8]]},"156":{"position":[[246,8],[332,6]]},"157":{"position":[[40,8]]},"173":{"position":[[136,8]]},"277":{"position":[[230,6],[431,6]]},"278":{"position":[[724,8]]},"279":{"position":[[202,6],[416,8],[899,8],[1025,8],[1651,8],[1871,8],[2047,6]]},"280":{"position":[[327,8],[459,8],[659,8]]},"281":{"position":[[281,8],[354,6],[1019,6],[1089,6],[1127,8]]},"283":{"position":[[54,8],[92,8],[308,8],[322,8],[403,8],[417,8]]},"284":{"position":[[361,8]]},"285":{"position":[[84,8],[265,8],[404,8],[505,7]]},"290":{"position":[[13,6]]},"293":{"position":[[145,6]]},"297":{"position":[[59,8]]},"301":{"position":[[141,6],[613,8]]}},"keywords":{}}],["entities"",{"_index":2973,"title":{},"content":{"298":{"position":[[58,14]]}},"keywords":{}}],["entities)no",{"_index":2957,"title":{},"content":{"293":{"position":[[70,11]]},"294":{"position":[[68,11]]}},"keywords":{}}],["entity'",{"_index":2876,"title":{},"content":{"281":{"position":[[489,8]]}},"keywords":{}}],["entity_util",{"_index":574,"title":{},"content":{"38":{"position":[[184,13]]},"136":{"position":[[559,13]]}},"keywords":{}}],["entri",{"_index":475,"title":{},"content":{"33":{"position":[[546,5]]},"77":{"position":[[1461,5]]},"79":{"position":[[160,5]]},"89":{"position":[[142,5]]},"92":{"position":[[184,5]]},"235":{"position":[[396,5]]},"255":{"position":[[20,5]]}},"keywords":{}}],["entry.add_update_listen",{"_index":1049,"title":{},"content":{"77":{"position":[[1629,27]]}},"keywords":{}}],["entry.async_on_unload(entry.add_update_listener(handl",{"_index":1053,"title":{},"content":{"77":{"position":[[1777,57]]}},"keywords":{}}],["environ",{"_index":697,"title":{"231":{"position":[[12,12]]}},"content":{"48":{"position":[[176,11]]},"131":{"position":[[23,11]]},"134":{"position":[[189,12]]},"226":{"position":[[21,11]]}},"keywords":{}}],["environmentarchitectur",{"_index":1415,"title":{},"content":{"129":{"position":[[215,23]]}},"keywords":{}}],["environmentcod",{"_index":1456,"title":{},"content":{"133":{"position":[[678,15]]}},"keywords":{}}],["epex",{"_index":2739,"title":{},"content":{"273":{"position":[[3458,5]]}},"keywords":{}}],["er",{"_index":2916,"title":{},"content":{"286":{"position":[[74,2]]}},"keywords":{}}],["error",{"_index":491,"title":{"105":{"position":[[0,5]]},"106":{"position":[[7,5]]}},"content":{"36":{"position":[[88,5]]},"86":{"position":[[211,6]]},"111":{"position":[[570,7]]},"120":{"position":[[91,5]]},"133":{"position":[[263,5]]},"156":{"position":[[135,6],[316,6]]},"157":{"position":[[193,5]]},"173":{"position":[[124,7]]},"194":{"position":[[32,6]]},"224":{"position":[[369,6]]},"239":{"position":[[1300,5]]}},"keywords":{}}],["errorsconfigentrynotreadi",{"_index":1263,"title":{},"content":{"106":{"position":[[622,25]]}},"keywords":{}}],["escal",{"_index":2403,"title":{},"content":{"252":{"position":[[707,10],[1554,10],[1741,10]]}},"keywords":{}}],["essenti",{"_index":1153,"title":{},"content":{"92":{"position":[[5,9]]},"216":{"position":[[190,9]]}},"keywords":{}}],["estim",{"_index":1666,"title":{},"content":{"154":{"position":[[371,11]]}},"keywords":{}}],["etc",{"_index":654,"title":{},"content":{"43":{"position":[[541,5]]},"52":{"position":[[175,4]]},"62":{"position":[[152,5]]},"180":{"position":[[120,5]]},"279":{"position":[[1059,5]]}},"keywords":{}}],["etc.complex",{"_index":659,"title":{},"content":{"43":{"position":[[713,11]]}},"keywords":{}}],["etc.sourc",{"_index":2133,"title":{},"content":{"239":{"position":[[677,11]]}},"keywords":{}}],["eur",{"_index":1234,"title":{},"content":{"104":{"position":[[68,3]]}},"keywords":{}}],["eur)startsat",{"_index":1223,"title":{},"content":{"103":{"position":[[212,13]]}},"keywords":{}}],["euro",{"_index":1235,"title":{},"content":{"104":{"position":[[72,6]]}},"keywords":{}}],["ev",{"_index":2273,"title":{},"content":{"246":{"position":[[262,2]]},"269":{"position":[[450,3]]},"272":{"position":[[1808,3]]}},"keywords":{}}],["evalu",{"_index":434,"title":{},"content":{"31":{"position":[[1153,8]]},"273":{"position":[[1569,9],[2117,11],[2737,9],[2891,9],[4527,10],[4954,10]]}},"keywords":{}}],["even",{"_index":1038,"title":{},"content":{"77":{"position":[[1104,4]]},"241":{"position":[[444,4]]},"246":{"position":[[955,5],[1218,5]]},"250":{"position":[[42,4]]},"255":{"position":[[3211,7]]},"267":{"position":[[980,4]]},"273":{"position":[[1091,7]]}},"keywords":{}}],["evenli",{"_index":2937,"title":{},"content":{"287":{"position":[[488,7]]}},"keywords":{}}],["event",{"_index":778,"title":{},"content":{"52":{"position":[[929,5]]},"62":{"position":[[721,5]]},"83":{"position":[[255,5]]},"207":{"position":[[248,5]]}},"keywords":{}}],["everyon",{"_index":2925,"title":{},"content":{"287":{"position":[[51,8],[103,8]]}},"keywords":{}}],["everyth",{"_index":181,"title":{},"content":{"12":{"position":[[232,10]]}},"keywords":{}}],["everything..."",{"_index":1692,"title":{},"content":{"160":{"position":[[46,19]]}},"keywords":{}}],["evid",{"_index":2689,"title":{},"content":{"273":{"position":[[855,8]]}},"keywords":{}}],["exact",{"_index":618,"title":{},"content":{"42":{"position":[[264,5]]},"170":{"position":[[255,5]]},"279":{"position":[[1960,5]]},"290":{"position":[[37,5],[102,5]]},"293":{"position":[[24,6]]}},"keywords":{}}],["exampl",{"_index":1542,"title":{"150":{"position":[[11,8]]},"154":{"position":[[0,7]]},"166":{"position":[[0,7]]}},"content":{"139":{"position":[[111,8]]},"145":{"position":[[79,8]]},"150":{"position":[[60,8]]},"237":{"position":[[306,7]]},"238":{"position":[[393,7]]},"246":{"position":[[1657,7]]},"253":{"position":[[183,7]]},"255":{"position":[[2713,7]]},"273":{"position":[[89,8],[633,8],[1011,8],[2257,7]]}},"keywords":{}}],["examplebrows",{"_index":1777,"title":{},"content":{"174":{"position":[[566,13]]}},"keywords":{}}],["exce",{"_index":2357,"title":{},"content":{"247":{"position":[[388,7]]}},"keywords":{}}],["exceed",{"_index":1251,"title":{},"content":{"106":{"position":[[181,9]]}},"keywords":{}}],["excellent)tempor",{"_index":2657,"title":{},"content":{"272":{"position":[[1716,18]]}},"keywords":{}}],["except",{"_index":54,"title":{},"content":{"3":{"position":[[410,9]]},"83":{"position":[[304,10]]}},"keywords":{}}],["exclud",{"_index":1789,"title":{},"content":{"176":{"position":[[448,10]]},"192":{"position":[[29,7]]},"246":{"position":[[1928,7]]}},"keywords":{}}],["exclus",{"_index":878,"title":{},"content":{"57":{"position":[[332,11]]}},"keywords":{}}],["execut",{"_index":918,"title":{"124":{"position":[[5,10]]}},"content":{"62":{"position":[[767,9]]},"71":{"position":[[73,9]]},"131":{"position":[[559,7]]},"170":{"position":[[23,7]]}},"keywords":{}}],["executed?do",{"_index":962,"title":{},"content":{"69":{"position":[[127,13]]}},"keywords":{}}],["exhaust",{"_index":1008,"title":{"266":{"position":[[23,10]]}},"content":{"75":{"position":[[390,9]]},"251":{"position":[[219,9]]},"266":{"position":[[308,10]]}},"keywords":{}}],["exist",{"_index":93,"title":{},"content":{"3":{"position":[[1228,8]]},"25":{"position":[[136,8]]},"72":{"position":[[71,5]]},"173":{"position":[[172,9]]},"186":{"position":[[365,7]]},"190":{"position":[[29,6],[84,6]]},"194":{"position":[[583,6]]},"224":{"position":[[229,7]]},"284":{"position":[[524,8]]},"292":{"position":[[81,8]]}},"keywords":{}}],["exists"",{"_index":1902,"title":{},"content":{"194":{"position":[[19,12]]}},"keywords":{}}],["exit",{"_index":2433,"title":{},"content":{"253":{"position":[[102,5]]}},"keywords":{}}],["exp",{"_index":2684,"title":{},"content":{"273":{"position":[[691,4]]}},"keywords":{}}],["exp(10",{"_index":2686,"title":{},"content":{"273":{"position":[[771,6]]}},"keywords":{}}],["expect",{"_index":934,"title":{},"content":{"65":{"position":[[320,9]]},"66":{"position":[[297,9]]},"212":{"position":[[102,8]]},"243":{"position":[[2308,12]]},"255":{"position":[[878,8],[3462,12]]},"262":{"position":[[65,8]]},"263":{"position":[[64,8]]},"264":{"position":[[64,8]]},"265":{"position":[[54,8]]},"266":{"position":[[47,8]]}},"keywords":{}}],["expected_valu",{"_index":234,"title":{},"content":{"17":{"position":[[274,14]]}},"keywords":{}}],["expens",{"_index":819,"title":{},"content":{"56":{"position":[[85,9]]},"103":{"position":[[321,10]]},"238":{"position":[[56,9]]},"239":{"position":[[89,10]]},"246":{"position":[[864,9],[1125,9],[1247,9],[1737,9],[1866,9],[2134,9]]},"273":{"position":[[2458,9],[3209,9],[3347,9],[4486,9]]},"279":{"position":[[2070,9]]},"285":{"position":[[446,9]]}},"keywords":{}}],["expensive_calcul",{"_index":1945,"title":{},"content":{"200":{"position":[[355,24]]}},"keywords":{}}],["expensive_funct",{"_index":1379,"title":{},"content":{"124":{"position":[[50,20]]}},"keywords":{}}],["experi",{"_index":2338,"title":{},"content":{"246":{"position":[[2342,10]]},"272":{"position":[[569,10]]},"273":{"position":[[4795,10]]}},"keywords":{}}],["expir",{"_index":757,"title":{},"content":{"51":{"position":[[1407,8]]},"288":{"position":[[682,7]]}},"keywords":{}}],["expires)reduct",{"_index":676,"title":{},"content":{"45":{"position":[[99,18]]}},"keywords":{}}],["explain",{"_index":2087,"title":{},"content":{"235":{"position":[[15,8]]},"272":{"position":[[2176,7]]},"273":{"position":[[3405,8],[3711,8]]}},"keywords":{}}],["explan",{"_index":1597,"title":{},"content":{"146":{"position":[[765,12]]}},"keywords":{}}],["explanatori",{"_index":314,"title":{},"content":{"25":{"position":[[22,11]]}},"keywords":{}}],["explicit",{"_index":460,"title":{},"content":{"33":{"position":[[302,8]]},"56":{"position":[[1002,11]]},"62":{"position":[[421,8]]},"67":{"position":[[222,8]]},"272":{"position":[[801,8]]}},"keywords":{}}],["explorerget",{"_index":1272,"title":{},"content":{"107":{"position":[[361,11]]}},"keywords":{}}],["explos",{"_index":2673,"title":{},"content":{"272":{"position":[[2243,9]]}},"keywords":{}}],["exponenti",{"_index":1259,"title":{},"content":{"106":{"position":[[553,11]]},"243":{"position":[[2077,11]]},"252":{"position":[[1542,11]]},"273":{"position":[[642,11]]}},"keywords":{}}],["export",{"_index":532,"title":{},"content":{"37":{"position":[[468,6]]}},"keywords":{}}],["expos",{"_index":2149,"title":{},"content":{"239":{"position":[[1268,8],[1638,6]]}},"keywords":{}}],["extend",{"_index":583,"title":{},"content":{"40":{"position":[[134,8]]},"43":{"position":[[1127,7]]},"136":{"position":[[905,8]]},"235":{"position":[[284,9]]}},"keywords":{}}],["extended)both",{"_index":1528,"title":{},"content":{"137":{"position":[[469,14]]}},"keywords":{}}],["extens",{"_index":1441,"title":{},"content":{"133":{"position":[[36,9]]},"272":{"position":[[710,9]]},"273":{"position":[[900,9]]}},"keywords":{}}],["extensiondock",{"_index":162,"title":{},"content":{"11":{"position":[[35,15]]}},"keywords":{}}],["extern",{"_index":1270,"title":{},"content":{"107":{"position":[[308,8]]}},"keywords":{}}],["extra_state_attribut",{"_index":662,"title":{},"content":{"43":{"position":[[883,22]]}},"keywords":{}}],["extra_state_attributes(self",{"_index":1970,"title":{},"content":{"205":{"position":[[44,28]]}},"keywords":{}}],["extract",{"_index":1663,"title":{},"content":{"154":{"position":[[14,7]]},"243":{"position":[[912,8]]}},"keywords":{}}],["extrem",{"_index":2311,"title":{"264":{"position":[[12,7]]}},"content":{"246":{"position":[[1422,9]]}},"keywords":{}}],["f",{"_index":1908,"title":{},"content":{"194":{"position":[[445,1],[464,1]]}},"keywords":{}}],["f"too",{"_index":2042,"title":{},"content":{"218":{"position":[[332,10]]}},"keywords":{}}],["f"{path}_{language}"",{"_index":1961,"title":{},"content":{"204":{"position":[[344,30]]}},"keywords":{}}],["face",{"_index":1536,"title":{},"content":{"139":{"position":[[6,6]]},"273":{"position":[[3795,6]]}},"keywords":{}}],["factor",{"_index":2192,"title":{},"content":{"243":{"position":[[308,6]]},"267":{"position":[[884,6]]}},"keywords":{}}],["fail",{"_index":1287,"title":{},"content":{"111":{"position":[[629,7]]},"273":{"position":[[2802,5]]}},"keywords":{}}],["fail)result",{"_index":2165,"title":{},"content":{"241":{"position":[[405,13]]}},"keywords":{}}],["failur",{"_index":1265,"title":{},"content":{"106":{"position":[[662,8]]},"289":{"position":[[113,9]]}},"keywords":{}}],["failuresstandard",{"_index":2812,"title":{},"content":{"278":{"position":[[1636,16]]}},"keywords":{}}],["fallback",{"_index":1822,"title":{},"content":{"179":{"position":[[578,9]]},"248":{"position":[[516,8]]}},"keywords":{}}],["fals",{"_index":745,"title":{},"content":{"51":{"position":[[1102,5]]},"59":{"position":[[210,5],[352,5]]},"113":{"position":[[371,6]]},"246":{"position":[[796,6]]},"255":{"position":[[3370,5]]}},"keywords":{}}],["faq",{"_index":1726,"title":{"168":{"position":[[0,4]]}},"content":{},"keywords":{}}],["far",{"_index":2098,"title":{},"content":{"237":{"position":[[20,3]]}},"keywords":{}}],["fast",{"_index":1831,"title":{},"content":{"179":{"position":[[886,4]]},"206":{"position":[[177,4]]},"207":{"position":[[138,6]]},"231":{"position":[[93,6]]},"252":{"position":[[875,4]]},"278":{"position":[[1007,5]]},"279":{"position":[[2042,4]]},"283":{"position":[[237,5]]},"284":{"position":[[538,5]]},"288":{"position":[[553,4]]},"296":{"position":[[210,4]]}},"keywords":{}}],["faster",{"_index":687,"title":{},"content":{"46":{"position":[[243,6]]},"196":{"position":[[394,6]]}},"keywords":{}}],["feat",{"_index":255,"title":{},"content":{"18":{"position":[[316,5]]}},"keywords":{}}],["feat(scop",{"_index":1917,"title":{},"content":{"196":{"position":[[66,12]]}},"keywords":{}}],["feat(sensor",{"_index":263,"title":{},"content":{"18":{"position":[[468,14]]}},"keywords":{}}],["featur",{"_index":191,"title":{"188":{"position":[[11,9]]}},"content":{"14":{"position":[[30,7],[108,8]]},"17":{"position":[[30,9]]},"21":{"position":[[140,7]]},"28":{"position":[[30,7]]},"51":{"position":[[373,8]]},"133":{"position":[[230,8],[748,7]]},"143":{"position":[[369,8],[590,8]]},"145":{"position":[[106,7]]},"149":{"position":[[126,7],[200,7],[394,7],[550,7]]},"173":{"position":[[182,8]]},"181":{"position":[[80,8]]},"196":{"position":[[87,7]]}},"keywords":{}}],["feature."""",{"_index":227,"title":{},"content":{"17":{"position":[[139,26]]}},"keywords":{}}],["feature/your",{"_index":190,"title":{},"content":{"14":{"position":[[17,12]]}},"keywords":{}}],["featurefix",{"_index":256,"title":{},"content":{"18":{"position":[[328,11]]}},"keywords":{}}],["featuresbreak",{"_index":330,"title":{},"content":{"25":{"position":[[262,16]]}},"keywords":{}}],["featuresfix",{"_index":196,"title":{},"content":{"14":{"position":[[123,12]]}},"keywords":{}}],["fee",{"_index":1220,"title":{},"content":{"103":{"position":[[177,4]]}},"keywords":{}}],["feedback",{"_index":305,"title":{"26":{"position":[[14,9]]}},"content":{"23":{"position":[[78,8]]},"26":{"position":[[74,8]]},"133":{"position":[[1138,8]]},"246":{"position":[[2155,9]]},"272":{"position":[[915,8],[1264,8]]}},"keywords":{}}],["feedbackclassifi",{"_index":2622,"title":{},"content":{"269":{"position":[[217,16]]}},"keywords":{}}],["fetch",{"_index":383,"title":{},"content":{"31":{"position":[[147,5]]},"42":{"position":[[44,5]]},"51":{"position":[[816,5],[1338,7]]},"59":{"position":[[458,5]]},"60":{"position":[[357,5]]},"61":{"position":[[109,5]]},"64":{"position":[[46,6]]},"65":{"position":[[39,6],[69,5]]},"66":{"position":[[101,6]]},"99":{"position":[[1,7]]},"100":{"position":[[1,7]]},"111":{"position":[[82,7]]},"137":{"position":[[50,8]]},"213":{"position":[[222,5]]},"277":{"position":[[403,9]]},"278":{"position":[[433,5],[949,5]]},"280":{"position":[[346,9]]},"285":{"position":[[166,5],[366,7]]},"287":{"position":[[60,7],[112,7]]},"288":{"position":[[237,5],[330,5],[478,5],[615,5]]},"290":{"position":[[146,5]]},"292":{"position":[[118,5]]},"301":{"position":[[82,8]]}},"keywords":{}}],["fetch_price_data",{"_index":1985,"title":{},"content":{"207":{"position":[[104,18],[210,18]]}},"keywords":{}}],["fetch_user_data",{"_index":1984,"title":{},"content":{"207":{"position":[[67,17],[191,18]]}},"keywords":{}}],["few",{"_index":615,"title":{},"content":{"42":{"position":[[233,4]]}},"keywords":{}}],["fewer",{"_index":2285,"title":{},"content":{"246":{"position":[[581,6]]},"252":{"position":[[973,6]]},"280":{"position":[[954,5]]}},"keywords":{}}],["fewer/mor",{"_index":2412,"title":{},"content":{"252":{"position":[[1085,11]]}},"keywords":{}}],["field",{"_index":715,"title":{},"content":{"51":{"position":[[300,6]]},"53":{"position":[[87,7]]},"54":{"position":[[212,6]]},"103":{"position":[[137,7]]},"224":{"position":[[279,7]]}},"keywords":{}}],["fieldal",{"_index":2492,"title":{},"content":{"255":{"position":[[2376,8]]}},"keywords":{}}],["figur",{"_index":2336,"title":{},"content":{"246":{"position":[[2267,6]]}},"keywords":{}}],["file",{"_index":77,"title":{"187":{"position":[[17,6]]},"255":{"position":[[4,5]]}},"content":{"3":{"position":[[798,5],[870,4]]},"36":{"position":[[11,4]]},"37":{"position":[[112,5]]},"38":{"position":[[9,4]]},"52":{"position":[[118,4],[605,4],[904,4]]},"67":{"position":[[171,4],[759,4]]},"72":{"position":[[65,5],[229,6]]},"75":{"position":[[353,5]]},"77":{"position":[[1,5]]},"78":{"position":[[1,5]]},"79":{"position":[[1,5],[134,4],[260,5]]},"80":{"position":[[1,5]]},"81":{"position":[[1,5]]},"89":{"position":[[23,4]]},"117":{"position":[[24,5]]},"120":{"position":[[176,4]]},"132":{"position":[[57,4]]},"133":{"position":[[421,5],[1256,4]]},"138":{"position":[[111,4]]},"143":{"position":[[156,5],[427,5],[440,6],[606,6]]},"145":{"position":[[10,4]]},"146":{"position":[[334,4],[441,4]]},"150":{"position":[[329,4],[496,5],[587,4]]},"153":{"position":[[69,4]]},"154":{"position":[[103,6]]},"160":{"position":[[79,5]]},"170":{"position":[[116,5]]},"172":{"position":[[201,7]]},"174":{"position":[[66,6],[195,4]]},"224":{"position":[[143,6],[299,5],[340,5]]},"225":{"position":[[51,4]]},"235":{"position":[[333,6]]},"252":{"position":[[42,5]]},"255":{"position":[[618,5]]},"278":{"position":[[1,5]]},"279":{"position":[[1,5]]},"280":{"position":[[1,5]]}},"keywords":{}}],["files)setup",{"_index":1500,"title":{},"content":{"135":{"position":[[376,11]]}},"keywords":{}}],["filter",{"_index":843,"title":{"192":{"position":[[17,9]]},"236":{"position":[[5,9]]},"237":{"position":[[8,6]]},"238":{"position":[[16,6]]},"239":{"position":[[9,6]]},"253":{"position":[[0,6]]}},"content":{"56":{"position":[[770,6],[1746,11]]},"122":{"position":[[190,6],[233,6],[339,6]]},"187":{"position":[[293,8]]},"210":{"position":[[179,6]]},"236":{"position":[[41,7]]},"239":{"position":[[566,6],[617,6],[1234,7],[1461,6]]},"241":{"position":[[11,7],[181,6],[255,6],[539,6]]},"242":{"position":[[262,7]]},"243":{"position":[[377,7],[2224,6]]},"245":{"position":[[185,10]]},"247":{"position":[[527,9],[586,9],[636,9],[935,9]]},"250":{"position":[[61,7],[119,7]]},"251":{"position":[[159,6]]},"252":{"position":[[375,6]]},"253":{"position":[[59,6]]},"255":{"position":[[201,10],[591,9],[3686,9]]},"256":{"position":[[248,8]]},"260":{"position":[[95,6]]},"262":{"position":[[250,6],[297,8],[370,8],[415,7]]},"263":{"position":[[329,6],[376,8],[450,8],[501,6]]},"264":{"position":[[144,10],[201,7],[390,6],[437,8],[491,8]]},"265":{"position":[[242,7]]},"266":{"position":[[23,8],[235,6]]},"267":{"position":[[50,6],[74,6],[140,9],[211,9],[279,9],[297,6],[963,7],[1012,9]]}},"keywords":{}}],["filtering"day",{"_index":2541,"title":{},"content":{"256":{"position":[[355,18]]}},"keywords":{}}],["filteringcoordinator/period_handlers/relaxation.pi",{"_index":2094,"title":{},"content":{"235":{"position":[[474,50]]}},"keywords":{}}],["filterlevel",{"_index":2431,"title":{},"content":{"253":{"position":[[47,11]]}},"keywords":{}}],["filters)recalcul",{"_index":849,"title":{},"content":{"56":{"position":[[913,20]]}},"keywords":{}}],["final",{"_index":889,"title":{"157":{"position":[[22,6]]}},"content":{"57":{"position":[[865,5]]}},"keywords":{}}],["find",{"_index":348,"title":{"27":{"position":[[0,7]]}},"content":{"90":{"position":[[297,7]]},"246":{"position":[[137,4],[576,4],[2356,4]]},"262":{"position":[[102,4],[152,4]]},"263":{"position":[[98,4]]},"264":{"position":[[94,5]]},"265":{"position":[[25,5]]},"270":{"position":[[181,4]]},"272":{"position":[[1884,5]]},"273":{"position":[[974,4]]}},"keywords":{}}],["finish",{"_index":1775,"title":{},"content":{"174":{"position":[[378,8]]}},"keywords":{}}],["fire",{"_index":901,"title":{},"content":{"60":{"position":[[10,5]]},"71":{"position":[[149,7]]},"77":{"position":[[1298,6]]},"83":{"position":[[17,4]]},"90":{"position":[[51,4]]},"93":{"position":[[102,5]]}},"keywords":{}}],["first",{"_index":350,"title":{},"content":{"27":{"position":[[6,5],[38,5]]},"31":{"position":[[245,5]]},"55":{"position":[[310,5]]},"100":{"position":[[152,6]]},"182":{"position":[[374,5]]},"252":{"position":[[1144,5]]},"278":{"position":[[561,5]]},"284":{"position":[[166,5],[631,5]]}},"keywords":{}}],["fit",{"_index":2698,"title":{},"content":{"273":{"position":[[1437,4]]}},"keywords":{}}],["fix",{"_index":24,"title":{},"content":{"1":{"position":[[180,3]]},"15":{"position":[[147,4]]},"26":{"position":[[169,5]]},"69":{"position":[[175,4]]},"70":{"position":[[205,4]]},"71":{"position":[[127,4]]},"72":{"position":[[165,4]]},"133":{"position":[[899,5]]},"135":{"position":[[223,3]]},"143":{"position":[[546,5]]},"146":{"position":[[259,7]]},"167":{"position":[[107,3]]},"181":{"position":[[152,5]]},"194":{"position":[[255,3]]},"239":{"position":[[595,6],[1473,5]]},"252":{"position":[[678,5],[1674,5]]},"255":{"position":[[3344,5]]},"270":{"position":[[1,5]]},"273":{"position":[[4,5]]},"275":{"position":[[88,5]]}},"keywords":{}}],["fix/issu",{"_index":192,"title":{},"content":{"14":{"position":[[64,9]]}},"keywords":{}}],["fixdoc",{"_index":257,"title":{},"content":{"18":{"position":[[346,8]]}},"keywords":{}}],["fixesdoc",{"_index":198,"title":{},"content":{"14":{"position":[[142,10]]}},"keywords":{}}],["flag",{"_index":1329,"title":{},"content":{"116":{"position":[[93,6]]}},"keywords":{}}],["flake8",{"_index":7,"title":{},"content":{"1":{"position":[[41,7]]}},"keywords":{}}],["flat",{"_index":1124,"title":{"263":{"position":[[12,4]]}},"content":{"86":{"position":[[314,4]]},"243":{"position":[[2200,4]]},"266":{"position":[[37,4]]},"267":{"position":[[260,4]]},"272":{"position":[[230,4]]}},"keywords":{}}],["flavor",{"_index":1864,"title":{},"content":{"181":{"position":[[28,8]]},"195":{"position":[[155,8]]}},"keywords":{}}],["flex",{"_index":848,"title":{"237":{"position":[[3,4]]},"240":{"position":[[4,4]]},"244":{"position":[[0,4]]},"247":{"position":[[0,4]]},"258":{"position":[[23,4]]},"260":{"position":[[30,4]]}},"content":{"56":{"position":[[894,6]]},"122":{"position":[[228,4]]},"235":{"position":[[176,7],[456,4]]},"237":{"position":[[111,5],[184,5],[225,5],[298,5]]},"239":{"position":[[1242,6]]},"241":{"position":[[37,4],[176,4],[355,5],[456,4],[492,4],[572,4],[631,5]]},"242":{"position":[[54,5],[188,5],[214,4],[251,5],[306,5]]},"243":{"position":[[49,4],[79,4],[125,4],[297,4],[492,4],[541,4],[1157,4],[1581,4]]},"246":{"position":[[500,4],[1145,4],[1831,4]]},"247":{"position":[[379,4],[596,4],[651,4],[717,5],[867,4]]},"248":{"position":[[79,4],[220,4],[300,4]]},"250":{"position":[[132,5]]},"252":{"position":[[237,4],[766,4],[1125,5],[1316,5],[1470,5],[1580,4],[1887,4],[2113,4]]},"253":{"position":[[5,4]]},"255":{"position":[[185,4]]},"256":{"position":[[437,4]]},"258":{"position":[[83,4]]},"260":{"position":[[120,4]]},"262":{"position":[[85,4],[309,5]]},"263":{"position":[[84,4],[388,5]]},"264":{"position":[[84,4],[449,5],[531,4]]},"265":{"position":[[220,4],[303,4]]},"266":{"position":[[217,4]]},"267":{"position":[[104,6],[135,4],[617,4],[648,4],[691,4],[749,4],[822,4],[921,4]]},"269":{"position":[[10,4],[40,4],[102,4],[140,4]]},"272":{"position":[[13,4],[75,4],[151,4],[295,4],[394,4],[461,4]]},"273":{"position":[[83,4],[104,4],[152,4],[383,4],[700,5],[780,5],[2386,4],[2510,4]]}},"keywords":{}}],["flex/dist",{"_index":1421,"title":{},"content":{"131":{"position":[[168,13]]},"269":{"position":[[193,13]]},"272":{"position":[[891,13]]},"273":{"position":[[4555,13]]},"275":{"position":[[38,13]]}},"keywords":{}}],["flex=15",{"_index":2437,"title":{},"content":{"253":{"position":[[249,9]]}},"keywords":{}}],["flex=15.0",{"_index":1282,"title":{},"content":{"111":{"position":[[376,10]]},"265":{"position":[[137,10]]},"266":{"position":[[130,10]]}},"keywords":{}}],["flex=18",{"_index":2438,"title":{},"content":{"253":{"position":[[286,8],[328,8]]}},"keywords":{}}],["flex=50",{"_index":2157,"title":{},"content":{"241":{"position":[[78,9]]}},"keywords":{}}],["flex=flex",{"_index":2712,"title":{},"content":{"273":{"position":[[2018,10]]}},"keywords":{}}],["flex=y%"",{"_index":2542,"title":{},"content":{"256":{"position":[[390,13]]}},"keywords":{}}],["flex_ab",{"_index":2222,"title":{},"content":{"243":{"position":[[1258,8],[1291,8],[1343,8],[1648,8]]}},"keywords":{}}],["flex_excess",{"_index":2185,"title":{},"content":{"243":{"position":[[111,11],[168,12],[1329,11],[1411,12]]}},"keywords":{}}],["flex_high_threshold_relax",{"_index":2400,"title":{},"content":{"252":{"position":[[491,30],[1821,31]]}},"keywords":{}}],["flex_incr",{"_index":2390,"title":{},"content":{"252":{"position":[[161,14],[332,15]]}},"keywords":{}}],["flex_level",{"_index":2395,"title":{},"content":{"252":{"position":[[296,10],[354,10]]}},"keywords":{}}],["flex_scaling_threshold",{"_index":2217,"title":{},"content":{"243":{"position":[[971,22],[1305,23]]}},"keywords":{}}],["flex_warning_threshold_relax",{"_index":2398,"title":{},"content":{"252":{"position":[[409,33],[2047,34]]}},"keywords":{}}],["flexibl",{"_index":2092,"title":{},"content":{"235":{"position":[[164,11]]},"246":{"position":[[1968,8]]},"267":{"position":[[172,11]]}},"keywords":{}}],["flexlinear",{"_index":2629,"title":{},"content":{"270":{"position":[[70,10]]}},"keywords":{}}],["flexproblem",{"_index":2333,"title":{},"content":{"246":{"position":[[2104,12]]}},"keywords":{}}],["flexshould",{"_index":2417,"title":{},"content":{"252":{"position":[[1282,10]]}},"keywords":{}}],["float",{"_index":2443,"title":{},"content":{"255":{"position":[[298,6]]}},"keywords":{}}],["float(0",{"_index":2760,"title":{},"content":{"273":{"position":[[4234,8]]}},"keywords":{}}],["flow",{"_index":377,"title":{"30":{"position":[[16,5]]},"31":{"position":[[0,4]]},"58":{"position":[[19,5]]},"59":{"position":[[29,6]]}},"content":{"52":{"position":[[251,5]]},"136":{"position":[[791,4]]},"157":{"position":[[93,4],[130,4]]},"166":{"position":[[82,4]]},"239":{"position":[[509,4]]},"246":{"position":[[2502,4]]},"253":{"position":[[191,4]]},"265":{"position":[[63,5]]},"266":{"position":[[56,5]]}},"keywords":{}}],["flowagents.md",{"_index":990,"title":{},"content":{"73":{"position":[[112,13]]}},"keywords":{}}],["flowcach",{"_index":2980,"title":{},"content":{"300":{"position":[[44,11]]}},"keywords":{}}],["flowsensor",{"_index":2069,"title":{},"content":{"226":{"position":[[100,10]]}},"keywords":{}}],["fluctuating."",{"_index":254,"title":{},"content":{"18":{"position":[[280,18]]}},"keywords":{}}],["focu",{"_index":1653,"title":{},"content":{"152":{"position":[[176,6]]},"246":{"position":[[123,6],[835,6]]}},"keywords":{}}],["focus",{"_index":1630,"title":{},"content":{"150":{"position":[[153,7]]},"163":{"position":[[564,8]]},"235":{"position":[[128,8]]},"246":{"position":[[527,7]]}},"keywords":{}}],["focused)docs/develop",{"_index":1705,"title":{},"content":{"163":{"position":[[175,25]]}},"keywords":{}}],["focused)plan",{"_index":1707,"title":{},"content":{"163":{"position":[[232,17]]}},"keywords":{}}],["follow",{"_index":207,"title":{"172":{"position":[[28,6]]}},"content":{"15":{"position":[[12,9]]},"18":{"position":[[1,6]]},"22":{"position":[[27,7],[257,6]]},"134":{"position":[[237,9]]},"148":{"position":[[25,6]]}},"keywords":{}}],["foolproof",{"_index":1779,"title":{},"content":{"176":{"position":[[39,11]]},"182":{"position":[[56,10]]}},"keywords":{}}],["footprint",{"_index":1930,"title":{},"content":{"198":{"position":[[157,10]]}},"keywords":{}}],["forc",{"_index":734,"title":{},"content":{"51":{"position":[[804,5]]},"179":{"position":[[331,5]]}},"keywords":{}}],["forecast",{"_index":2746,"title":{},"content":{"273":{"position":[[3578,8],[3675,9]]}},"keywords":{}}],["forev",{"_index":707,"title":{},"content":{"50":{"position":[[171,7]]},"52":{"position":[[401,7]]},"67":{"position":[[127,7]]}},"keywords":{}}],["forget",{"_index":1099,"title":{"161":{"position":[[2,6]]}},"content":{"83":{"position":[[26,6]]},"90":{"position":[[60,6]]},"93":{"position":[[112,6]]},"176":{"position":[[516,6]]}},"keywords":{}}],["forgot",{"_index":1874,"title":{},"content":{"182":{"position":[[111,6]]}},"keywords":{}}],["fork",{"_index":164,"title":{"12":{"position":[[0,4]]}},"content":{"12":{"position":[[1,4],[41,5]]},"134":{"position":[[1,4]]}},"keywords":{}}],["format",{"_index":440,"title":{"102":{"position":[[9,7]]},"181":{"position":[[10,7]]},"195":{"position":[[3,6]]}},"content":{"31":{"position":[[1301,9],[1339,7]]},"143":{"position":[[288,6],[666,12]]},"189":{"position":[[59,6]]},"194":{"position":[[614,6]]},"195":{"position":[[19,6],[90,6]]},"196":{"position":[[41,6]]},"233":{"position":[[12,6]]},"247":{"position":[[843,9]]},"255":{"position":[[2465,9]]}},"keywords":{}}],["formatopen",{"_index":1487,"title":{},"content":{"134":{"position":[[433,10]]}},"keywords":{}}],["formatter/lint",{"_index":3,"title":{},"content":{"1":{"position":[[1,17]]}},"keywords":{}}],["formula",{"_index":2183,"title":{},"content":{"243":{"position":[[66,8]]}},"keywords":{}}],["found",{"_index":1255,"title":{},"content":{"106":{"position":[[363,6]]},"111":{"position":[[457,5]]},"250":{"position":[[36,5]]},"251":{"position":[[105,6]]},"253":{"position":[[259,5],[310,5],[350,5]]},"262":{"position":[[472,5]]},"263":{"position":[[558,5]]},"264":{"position":[[588,5]]},"265":{"position":[[180,5],[257,5],[333,5]]},"266":{"position":[[173,5],[339,5]]},"267":{"position":[[956,6]]}},"keywords":{}}],["found"",{"_index":1257,"title":{},"content":{"106":{"position":[[432,12]]},"256":{"position":[[315,11]]}},"keywords":{}}],["foundat",{"_index":1420,"title":{},"content":{"131":{"position":[[155,12]]},"235":{"position":[[41,11]]}},"keywords":{}}],["fragment",{"_index":2452,"title":{},"content":{"255":{"position":[[774,14]]},"267":{"position":[[1142,11]]},"273":{"position":[[4749,9]]}},"keywords":{}}],["free",{"_index":1130,"title":{},"content":{"87":{"position":[[59,5]]},"90":{"position":[[361,5]]},"145":{"position":[[59,4]]},"174":{"position":[[118,4]]}},"keywords":{}}],["freed",{"_index":1022,"title":{},"content":{"77":{"position":[[542,5]]}},"keywords":{}}],["freeli",{"_index":1572,"title":{"147":{"position":[[11,7]]}},"content":{"145":{"position":[[201,6]]}},"keywords":{}}],["frequent",{"_index":209,"title":{},"content":{"15":{"position":[[53,11]]}},"keywords":{}}],["fresh",{"_index":399,"title":{},"content":{"31":{"position":[[355,5]]},"51":{"position":[[810,5]]},"59":{"position":[[447,5]]},"60":{"position":[[347,5]]},"278":{"position":[[407,5]]}},"keywords":{}}],["friendli",{"_index":1920,"title":{},"content":{"196":{"position":[[219,8]]}},"keywords":{}}],["friendlyhelp",{"_index":353,"title":{},"content":{"27":{"position":[[61,12]]}},"keywords":{}}],["frontier",{"_index":2662,"title":{},"content":{"272":{"position":[[1931,8]]}},"keywords":{}}],["frontier)us",{"_index":2661,"title":{},"content":{"272":{"position":[[1900,13]]}},"keywords":{}}],["full",{"_index":1758,"title":{},"content":{"172":{"position":[[209,4]]},"224":{"position":[[383,4]]},"252":{"position":[[810,4]]}},"keywords":{}}],["fulli",{"_index":1149,"title":{},"content":{"90":{"position":[[399,5]]},"182":{"position":[[348,5]]}},"keywords":{}}],["func(*arg",{"_index":1939,"title":{},"content":{"200":{"position":[[179,11]]}},"keywords":{}}],["func.__name__",{"_index":1942,"title":{},"content":{"200":{"position":[[282,14]]}},"keywords":{}}],["function",{"_index":75,"title":{"255":{"position":[[14,10]]}},"content":{"3":{"position":[[708,8]]},"25":{"position":[[348,10]]},"37":{"position":[[578,10]]},"40":{"position":[[253,8]]},"70":{"position":[[215,8]]},"77":{"position":[[1563,8]]},"136":{"position":[[205,9],[458,9]]},"137":{"position":[[355,9]]},"154":{"position":[[29,9],[79,9],[163,10],[280,9],[437,9]]},"156":{"position":[[273,13]]},"173":{"position":[[145,11]]},"200":{"position":[[30,10]]},"281":{"position":[[217,8]]}},"keywords":{}}],["functionsfollow",{"_index":322,"title":{},"content":{"25":{"position":[[119,16]]}},"keywords":{}}],["functool",{"_index":1934,"title":{},"content":{"200":{"position":[[61,9]]}},"keywords":{}}],["functools.wraps(func",{"_index":1936,"title":{},"content":{"200":{"position":[[89,22]]}},"keywords":{}}],["fundament",{"_index":2267,"title":{},"content":{"246":{"position":[[62,13]]}},"keywords":{}}],["further",{"_index":2549,"title":{},"content":{"258":{"position":[[137,7]]}},"keywords":{}}],["futur",{"_index":632,"title":{"268":{"position":[[0,6]]},"271":{"position":[[0,6]]}},"content":{"42":{"position":[[557,6]]},"93":{"position":[[26,7]]},"107":{"position":[[128,6]]},"171":{"position":[[285,6]]},"272":{"position":[[852,7]]},"279":{"position":[[1461,6]]}},"keywords":{}}],["fΓΌr",{"_index":2867,"title":{},"content":{"281":{"position":[[33,3]]},"286":{"position":[[80,3]]}},"keywords":{}}],["gap",{"_index":870,"title":{},"content":{"56":{"position":[[1758,3]]},"239":{"position":[[152,3]]}},"keywords":{}}],["gc",{"_index":1023,"title":{},"content":{"77":{"position":[[551,2]]}},"keywords":{}}],["gener",{"_index":363,"title":{"175":{"position":[[14,10]]}},"content":{"28":{"position":[[91,7]]},"52":{"position":[[991,11]]},"133":{"position":[[205,11],[454,10]]},"135":{"position":[[535,8]]},"176":{"position":[[424,9]]},"178":{"position":[[37,10]]},"179":{"position":[[110,8],[178,8],[258,8]]},"180":{"position":[[270,8]]},"184":{"position":[[366,9]]},"210":{"position":[[235,9]]},"252":{"position":[[228,8]]}},"keywords":{}}],["genuin",{"_index":2278,"title":{},"content":{"246":{"position":[[352,9]]},"273":{"position":[[3337,9]]}},"keywords":{}}],["get",{"_index":156,"title":{"10":{"position":[[0,7]]}},"content":{"281":{"position":[[231,4]]},"301":{"position":[[583,4]]}},"keywords":{}}],["get_apexcharts_yaml",{"_index":507,"title":{},"content":{"36":{"position":[[615,20]]}},"keywords":{}}],["get_chartdata",{"_index":506,"title":{},"content":{"36":{"position":[[599,15]]}},"keywords":{}}],["get_config(self",{"_index":1966,"title":{},"content":{"204":{"position":[[655,16]]}},"keywords":{}}],["get_transl",{"_index":587,"title":{},"content":{"40":{"position":[[228,17]]}},"keywords":{}}],["get_translation("binary_sensor.best_price_period.description"",{"_index":777,"title":{},"content":{"52":{"position":[[703,72]]}},"keywords":{}}],["get_translation(path",{"_index":1958,"title":{},"content":{"204":{"position":[[278,21]]}},"keywords":{}}],["ghcr.io/devcontainers/features/rust:1",{"_index":1836,"title":{},"content":{"179":{"position":[[1202,37]]}},"keywords":{}}],["ghi9012](link",{"_index":1869,"title":{},"content":{"181":{"position":[[256,15]]}},"keywords":{}}],["git",{"_index":168,"title":{},"content":{"12":{"position":[[47,3]]},"14":{"position":[[1,3],[48,3]]},"18":{"position":[[31,3],[41,3]]},"19":{"position":[[1,3]]},"135":{"position":[[416,4]]},"145":{"position":[[42,4],[169,3],[226,3]]},"147":{"position":[[20,3]]},"149":{"position":[[172,3],[228,3],[604,3]]},"162":{"position":[[78,3]]},"165":{"position":[[13,3]]},"174":{"position":[[133,4]]},"176":{"position":[[342,3],[684,3],[749,3]]},"179":{"position":[[455,3],[1102,3],[1402,3],[1477,3],[1574,3],[1622,3],[1773,3],[1800,3],[1810,5]]},"180":{"position":[[180,3],[195,3],[299,3],[368,3]]},"184":{"position":[[97,3],[115,3],[157,3]]},"185":{"position":[[149,3],[214,3]]},"186":{"position":[[74,3],[169,3],[184,3]]},"187":{"position":[[274,3]]},"194":{"position":[[52,3],[114,3],[345,3],[436,3],[454,3]]},"196":{"position":[[381,3]]},"230":{"position":[[24,3]]}},"keywords":{}}],["github",{"_index":272,"title":{"178":{"position":[[3,6]]}},"content":{"19":{"position":[[62,7]]},"28":{"position":[[1,6]]},"133":{"position":[[60,7]]},"163":{"position":[[30,7]]},"176":{"position":[[492,6],[887,6]]},"179":{"position":[[365,7],[813,6]]},"180":{"position":[[220,6],[323,6]]},"181":{"position":[[21,6]]},"182":{"position":[[180,6]]},"185":{"position":[[262,6]]},"187":{"position":[[231,6]]},"194":{"position":[[539,6]]},"195":{"position":[[41,6],[148,6]]},"196":{"position":[[332,6]]},"224":{"position":[[416,6]]},"231":{"position":[[187,6]]}},"keywords":{}}],["github'",{"_index":1796,"title":{},"content":{"178":{"position":[[5,8]]}},"keywords":{}}],["github/copilot)prepar",{"_index":1502,"title":{},"content":{"135":{"position":[[428,23]]}},"keywords":{}}],["github/release.yml",{"_index":1806,"title":{},"content":{"178":{"position":[[196,19]]}},"keywords":{}}],["github/workflows/release.yml",{"_index":1859,"title":{},"content":{"180":{"position":[[49,29]]}},"keywords":{}}],["github_act",{"_index":1834,"title":{},"content":{"179":{"position":[[992,17]]}},"keywords":{}}],["githubclon",{"_index":167,"title":{},"content":{"12":{"position":[[24,11]]}},"keywords":{}}],["gitv",{"_index":159,"title":{},"content":{"11":{"position":[[1,5]]}},"keywords":{}}],["give",{"_index":2678,"title":{},"content":{"273":{"position":[[290,6]]}},"keywords":{}}],["given",{"_index":2159,"title":{},"content":{"241":{"position":[[106,6]]}},"keywords":{}}],["gnu.tar.gz",{"_index":1853,"title":{},"content":{"179":{"position":[[1753,10]]}},"keywords":{}}],["go",{"_index":1537,"title":{},"content":{"139":{"position":[[18,2],[49,2]]},"146":{"position":[[577,2]]},"174":{"position":[[438,2]]},"178":{"position":[[49,2]]}},"keywords":{}}],["goal",{"_index":1656,"title":{"198":{"position":[[12,6]]}},"content":{"153":{"position":[[32,4]]},"154":{"position":[[51,9]]},"246":{"position":[[131,5],[843,5]]},"272":{"position":[[1582,5],[1604,6]]}},"keywords":{}}],["goe",{"_index":1540,"title":{},"content":{"139":{"position":[[84,4]]}},"keywords":{}}],["good",{"_index":311,"title":{"262":{"position":[[23,5]]}},"content":{"25":{"position":[[3,5]]},"27":{"position":[[1,4],[33,4]]},"152":{"position":[[117,4]]},"170":{"position":[[88,4]]},"174":{"position":[[350,4]]},"246":{"position":[[2361,4]]},"262":{"position":[[348,4]]},"267":{"position":[[473,4]]},"301":{"position":[[274,4],[329,4],[394,4]]}},"keywords":{}}],["gracefulli",{"_index":2810,"title":{},"content":{"278":{"position":[[1531,10]]},"301":{"position":[[441,10]]}},"keywords":{}}],["gradual",{"_index":2321,"title":{},"content":{"246":{"position":[[1721,8]]},"255":{"position":[[2945,8]]}},"keywords":{}}],["graphql",{"_index":397,"title":{"97":{"position":[[0,7]]}},"content":{"31":{"position":[[338,7]]},"36":{"position":[[48,7]]},"51":{"position":[[394,7]]},"136":{"position":[[148,7]]}},"keywords":{}}],["grep",{"_index":1171,"title":{},"content":{"94":{"position":[[536,4]]},"120":{"position":[[9,4]]}},"keywords":{}}],["grep/awk",{"_index":1821,"title":{},"content":{"179":{"position":[[568,9],[942,8]]}},"keywords":{}}],["gridareacod",{"_index":1198,"title":{},"content":{"99":{"position":[[229,12]]}},"keywords":{}}],["grow",{"_index":996,"title":{},"content":{"75":{"position":[[114,5]]},"94":{"position":[[680,4]]}},"keywords":{}}],["gt",{"_index":731,"title":{},"content":{"51":{"position":[[760,4],[982,4]]},"55":{"position":[[482,4]]},"56":{"position":[[1045,4]]},"59":{"position":[[107,6],[158,6],[252,6],[302,6]]},"60":{"position":[[69,6],[101,6],[164,6],[198,6]]},"62":{"position":[[103,6],[214,6]]},"64":{"position":[[35,6],[72,6],[112,6],[165,6],[228,6]]},"65":{"position":[[28,6],[84,6],[136,6],[196,6],[246,6]]},"66":{"position":[[16,6],[53,6],[90,6],[132,6],[163,6],[218,6],[248,6],[276,6]]},"114":{"position":[[80,4],[278,4]]},"121":{"position":[[48,4]]},"204":{"position":[[321,4],[673,4]]},"205":{"position":[[74,4]]},"213":{"position":[[63,4]]},"221":{"position":[[45,4]]},"237":{"position":[[267,5]]},"238":{"position":[[348,5]]},"241":{"position":[[394,4]]},"242":{"position":[[60,4],[194,4],[219,4]]},"243":{"position":[[84,4],[1096,4],[1300,4],[1872,5]]},"247":{"position":[[708,4]]},"248":{"position":[[189,4],[266,4]]},"252":{"position":[[1815,5],[2041,5]]},"255":{"position":[[163,4],[336,4],[508,4],[558,4],[1189,4],[1477,4],[1652,4],[2870,4]]},"272":{"position":[[315,4],[344,5]]},"273":{"position":[[2787,4],[4146,4],[4243,4]]},"278":{"position":[[504,4]]},"279":{"position":[[653,4]]},"280":{"position":[[288,4]]},"288":{"position":[[84,4]]}},"keywords":{}}],["gt;1.5",{"_index":2514,"title":{},"content":{"255":{"position":[[3066,8]]}},"keywords":{}}],["gt;3",{"_index":1556,"title":{},"content":{"143":{"position":[[433,6]]}},"keywords":{}}],["gt;30",{"_index":2595,"title":{},"content":{"267":{"position":[[150,9]]}},"keywords":{}}],["gt;5",{"_index":1550,"title":{},"content":{"143":{"position":[[149,6]]},"172":{"position":[[195,5]]},"174":{"position":[[60,5]]}},"keywords":{}}],["gt;50",{"_index":2597,"title":{},"content":{"267":{"position":[[221,9]]}},"keywords":{}}],["gt;500",{"_index":324,"title":{},"content":{"25":{"position":[[175,8]]},"143":{"position":[[172,7]]},"172":{"position":[[179,8]]},"174":{"position":[[44,8]]}},"keywords":{}}],["guarante",{"_index":2381,"title":{},"content":{"250":{"position":[[167,9]]}},"keywords":{}}],["guid",{"_index":155,"title":{"9":{"position":[[13,5]]},"74":{"position":[[37,5]]},"108":{"position":[[10,5]]},"131":{"position":[[13,7]]},"142":{"position":[[12,5]]}},"content":{"28":{"position":[[206,5]]},"48":{"position":[[156,5],[201,5]]},"129":{"position":[[156,5],[195,5]]},"131":{"position":[[489,6],[535,5]]},"163":{"position":[[218,6]]}},"keywords":{}}],["guidanc",{"_index":1439,"title":{"248":{"position":[[25,10]]}},"content":{"132":{"position":[[387,8]]},"139":{"position":[[75,8]]},"163":{"position":[[715,9]]},"246":{"position":[[2296,8]]}},"keywords":{}}],["guidancecommon",{"_index":1434,"title":{},"content":{"132":{"position":[[208,14]]}},"keywords":{}}],["guidelin",{"_index":1,"title":{"0":{"position":[[7,10]]},"20":{"position":[[13,11]]},"227":{"position":[[5,11]]}},"content":{"8":{"position":[[197,11]]},"15":{"position":[[29,11]]},"22":{"position":[[42,10]]},"28":{"position":[[239,10]]},"131":{"position":[[470,10]]},"140":{"position":[[47,11]]}},"keywords":{}}],["guidelinesrun",{"_index":1483,"title":{},"content":{"134":{"position":[[258,13]]}},"keywords":{}}],["guidetest",{"_index":371,"title":{},"content":{"28":{"position":[[258,12]]}},"keywords":{}}],["ha",{"_index":134,"title":{"127":{"position":[[26,3]]},"278":{"position":[[32,3]]},"289":{"position":[[10,2]]},"296":{"position":[[15,3]]}},"content":{"6":{"position":[[193,2]]},"16":{"position":[[27,2]]},"31":{"position":[[396,2]]},"33":{"position":[[234,2]]},"40":{"position":[[47,2]]},"42":{"position":[[218,2],[365,2],[439,2]]},"50":{"position":[[114,3],[186,2]]},"51":{"position":[[34,2],[168,2],[589,2],[1356,2]]},"52":{"position":[[416,2]]},"62":{"position":[[47,3]]},"67":{"position":[[142,2]]},"72":{"position":[[204,2]]},"75":{"position":[[142,2]]},"79":{"position":[[338,2]]},"87":{"position":[[42,2]]},"90":{"position":[[344,2]]},"94":{"position":[[475,3],[596,3]]},"136":{"position":[[862,2]]},"137":{"position":[[433,3]]},"154":{"position":[[491,2]]},"157":{"position":[[260,3]]},"167":{"position":[[70,2]]},"173":{"position":[[106,2]]},"277":{"position":[[133,2],[384,4]]},"278":{"position":[[166,2],[1077,2],[1591,2],[1653,2]]},"281":{"position":[[1202,2]]},"286":{"position":[[36,2]]},"289":{"position":[[12,2],[64,2]]},"301":{"position":[[37,3]]}},"keywords":{}}],["ha'",{"_index":1129,"title":{"286":{"position":[[12,4]]}},"content":{"87":{"position":[[17,4]]},"93":{"position":[[221,4]]},"278":{"position":[[1554,4]]},"279":{"position":[[1918,4]]},"283":{"position":[[145,5]]},"287":{"position":[[197,4]]}},"keywords":{}}],["hac",{"_index":1911,"title":{},"content":{"195":{"position":[[1,5]]}},"keywords":{}}],["half",{"_index":1774,"title":{},"content":{"174":{"position":[[373,4]]}},"keywords":{}}],["halfway",{"_index":1681,"title":{},"content":{"159":{"position":[[85,7]]}},"keywords":{}}],["handl",{"_index":125,"title":{"6":{"position":[[5,9]]},"105":{"position":[[6,9]]}},"content":{"36":{"position":[[94,8]]},"37":{"position":[[513,9]]},"42":{"position":[[316,7]]},"43":{"position":[[850,7]]},"57":{"position":[[557,8],[740,7],[787,7]]},"75":{"position":[[331,6]]},"83":{"position":[[266,7]]},"86":{"position":[[135,7]]},"106":{"position":[[532,7]]},"133":{"position":[[113,8],[269,9]]},"157":{"position":[[199,8]]},"255":{"position":[[3781,6]]},"272":{"position":[[2084,6]]},"273":{"position":[[1467,9]]},"279":{"position":[[827,7]]},"280":{"position":[[387,8]]},"289":{"position":[[136,8]]}},"keywords":{}}],["handler",{"_index":642,"title":{},"content":{"43":{"position":[[73,7]]}},"keywords":{}}],["handlersbinari",{"_index":433,"title":{},"content":{"31":{"position":[[1130,14]]}},"keywords":{}}],["happen",{"_index":1480,"title":{},"content":{"134":{"position":[[126,8]]},"184":{"position":[[240,8]]},"185":{"position":[[361,8]]},"186":{"position":[[254,8]]},"194":{"position":[[202,6]]},"299":{"position":[[174,6]]}},"keywords":{}}],["hard",{"_index":1628,"title":{},"content":{"150":{"position":[[104,4]]},"160":{"position":[[116,4]]},"245":{"position":[[79,4]]},"248":{"position":[[591,4]]},"252":{"position":[[93,4],[889,4]]}},"keywords":{}}],["harder",{"_index":2641,"title":{},"content":{"272":{"position":[[622,6]]}},"keywords":{}}],["hash",{"_index":421,"title":{},"content":{"31":{"position":[[879,4],[907,4],[952,4],[1025,4]]},"33":{"position":[[376,4]]},"56":{"position":[[546,4],[1148,4],[1595,5]]},"57":{"position":[[825,4]]},"60":{"position":[[304,5]]},"61":{"position":[[151,4],[212,5]]},"62":{"position":[[493,4]]},"64":{"position":[[153,4]]},"67":{"position":[[322,5]]},"70":{"position":[[16,4],[210,4]]}},"keywords":{}}],["hash_data",{"_index":834,"title":{},"content":{"56":{"position":[[571,9]]}},"keywords":{}}],["hass.async_add_executor_job(heavy_comput",{"_index":1988,"title":{},"content":{"207":{"position":[[356,46]]}},"keywords":{}}],["hass.tibber_pric",{"_index":171,"title":{},"content":{"12":{"position":[[116,18]]},"230":{"position":[[90,18]]}},"keywords":{}}],["hassfest",{"_index":2068,"title":{},"content":{"224":{"position":[[388,8]]}},"keywords":{}}],["have",{"_index":2171,"title":{},"content":{"241":{"position":[[619,6]]}},"keywords":{}}],["haven't",{"_index":822,"title":{},"content":{"56":{"position":[[155,7]]}},"keywords":{}}],["head",{"_index":1815,"title":{},"content":{"179":{"position":[[138,4],[279,4],[324,4]]}},"keywords":{}}],["header",{"_index":1185,"title":{},"content":{"97":{"position":[[84,6]]}},"keywords":{}}],["heat",{"_index":2627,"title":{},"content":{"269":{"position":[[467,4]]},"272":{"position":[[1825,4]]}},"keywords":{}}],["heavi",{"_index":684,"title":{},"content":{"46":{"position":[[184,5]]}},"keywords":{}}],["heavili",{"_index":1704,"title":{},"content":{"163":{"position":[[22,7]]}},"keywords":{}}],["heavy_comput",{"_index":1987,"title":{},"content":{"207":{"position":[[283,19]]}},"keywords":{}}],["help",{"_index":1752,"title":{},"content":{"171":{"position":[[278,6]]},"260":{"position":[[151,5]]}},"keywords":{}}],["helper",{"_index":64,"title":{"38":{"position":[[0,6]]},"167":{"position":[[0,6]]},"184":{"position":[[18,6]]}},"content":{"3":{"position":[[559,6],[749,6]]},"37":{"position":[[536,7]]},"40":{"position":[[246,6]]},"135":{"position":[[30,6]]},"136":{"position":[[451,6],[589,7],[825,7]]},"154":{"position":[[22,6]]},"176":{"position":[[65,6]]},"187":{"position":[[27,6]]},"189":{"position":[[6,6]]},"190":{"position":[[1,6]]},"191":{"position":[[1,6]]},"193":{"position":[[1,6]]}},"keywords":{}}],["helpers.pi",{"_index":1508,"title":{},"content":{"136":{"position":[[433,10]]},"154":{"position":[[92,10],[216,11]]}},"keywords":{}}],["herd"",{"_index":2804,"title":{},"content":{"278":{"position":[[1222,10]]},"287":{"position":[[172,10]]}},"keywords":{}}],["here",{"_index":1946,"title":{},"content":{"200":{"position":[[392,4]]},"263":{"position":[[176,4]]}},"keywords":{}}],["hidden",{"_index":2768,"title":{},"content":{"273":{"position":[[4695,6]]}},"keywords":{}}],["hide",{"_index":2766,"title":{},"content":{"273":{"position":[[4614,5]]}},"keywords":{}}],["high",{"_index":857,"title":{"258":{"position":[[18,4]]},"264":{"position":[[24,5]]}},"content":{"56":{"position":[[1308,5]]},"146":{"position":[[312,4]]},"166":{"position":[[290,4]]},"239":{"position":[[473,4],[787,4]]},"241":{"position":[[45,5],[487,4],[626,4]]},"248":{"position":[[235,4],[252,4],[313,4]]},"252":{"position":[[551,4],[1272,4],[1570,4],[1907,4],[2135,4]]},"263":{"position":[[410,4]]},"267":{"position":[[662,4],[702,4],[916,4]]},"272":{"position":[[328,4]]},"273":{"position":[[3573,4]]}},"keywords":{}}],["higher",{"_index":2286,"title":{},"content":{"246":{"position":[[588,6]]},"269":{"position":[[133,6]]},"272":{"position":[[288,6]]}},"keywords":{}}],["hint",{"_index":321,"title":{},"content":{"25":{"position":[[106,5]]},"133":{"position":[[256,6]]}},"keywords":{}}],["histor",{"_index":248,"title":{},"content":{"18":{"position":[[187,10]]},"252":{"position":[[1349,10]]}},"keywords":{}}],["histori",{"_index":1574,"title":{},"content":{"145":{"position":[[230,8]]},"162":{"position":[[82,7]]},"272":{"position":[[1442,8]]}},"keywords":{}}],["hit",{"_index":856,"title":{},"content":{"56":{"position":[[1297,3],[1582,4],[1674,3]]},"64":{"position":[[275,4]]},"67":{"position":[[660,4]]}},"keywords":{}}],["hold",{"_index":1020,"title":{},"content":{"77":{"position":[[468,5]]}},"keywords":{}}],["home",{"_index":36,"title":{},"content":{"3":{"position":[[72,4]]},"21":{"position":[[224,4]]},"51":{"position":[[351,6]]},"62":{"position":[[705,5]]},"67":{"position":[[855,4]]},"75":{"position":[[1,4]]},"94":{"position":[[541,4]]},"95":{"position":[[1,4]]},"99":{"position":[[9,4],[58,5]]},"100":{"position":[[239,4]]},"101":{"position":[[262,4]]},"106":{"position":[[354,4]]},"110":{"position":[[106,4]]},"133":{"position":[[171,4],[1020,4]]},"134":{"position":[[376,4]]},"135":{"position":[[118,4]]},"156":{"position":[[75,4]]},"198":{"position":[[216,4]]},"226":{"position":[[66,4]]},"232":{"position":[[9,4]]},"278":{"position":[[70,4]]},"281":{"position":[[83,4]]}},"keywords":{}}],["home(id",{"_index":1200,"title":{},"content":{"100":{"position":[[64,8]]}},"keywords":{}}],["home/met",{"_index":559,"title":{},"content":{"37":{"position":[[1047,13]]}},"keywords":{}}],["home/vscode/.venv/uv",{"_index":2081,"title":{},"content":{"231":{"position":[[55,21]]}},"keywords":{}}],["home_id=f"home_{i}"",{"_index":2049,"title":{},"content":{"219":{"position":[[208,30]]}},"keywords":{}}],["homeapi",{"_index":1932,"title":{},"content":{"198":{"position":[[181,7]]}},"keywords":{}}],["homeassist",{"_index":119,"title":{},"content":{"4":{"position":[[48,17]]},"126":{"position":[[40,13]]},"202":{"position":[[81,13]]}},"keywords":{}}],["homeassistant.util",{"_index":128,"title":{},"content":{"6":{"position":[[25,19],[51,18]]}},"keywords":{}}],["homeid",{"_index":1201,"title":{},"content":{"100":{"position":[[73,8],[224,7]]}},"keywords":{}}],["homes."""",{"_index":2046,"title":{},"content":{"219":{"position":[[106,24]]}},"keywords":{}}],["hour",{"_index":244,"title":{"42":{"position":[[11,4]]},"279":{"position":[[18,4]]},"293":{"position":[[18,4]]},"297":{"position":[[24,6]]}},"content":{"18":{"position":[[129,4]]},"31":{"position":[[1202,4]]},"43":{"position":[[522,5]]},"50":{"position":[[129,5]]},"51":{"position":[[556,5]]},"52":{"position":[[886,4]]},"56":{"position":[[1847,5]]},"67":{"position":[[55,5]]},"77":{"position":[[964,4]]},"80":{"position":[[64,4]]},"99":{"position":[[267,5]]},"101":{"position":[[57,4]]},"137":{"position":[[146,4]]},"157":{"position":[[316,4]]},"246":{"position":[[1539,5],[1595,5],[1700,5],[1772,5]]},"273":{"position":[[3511,6]]},"279":{"position":[[964,4]]},"285":{"position":[[47,4],[341,4]]},"297":{"position":[[79,4]]}},"keywords":{}}],["hourli",{"_index":588,"title":{},"content":{"41":{"position":[[13,6]]},"100":{"position":[[17,6]]}},"keywords":{}}],["hours"",{"_index":2524,"title":{},"content":{"255":{"position":[[3503,11]]}},"keywords":{}}],["http://localhost:8123",{"_index":218,"title":{},"content":{"16":{"position":[[66,21]]},"232":{"position":[[64,21]]}},"keywords":{}}],["https://api.tibber.com/v1",{"_index":1179,"title":{},"content":{"97":{"position":[[1,25]]}},"keywords":{}}],["https://developers.hom",{"_index":1173,"title":{},"content":{"95":{"position":[[34,23],[133,23]]}},"keywords":{}}],["https://docs.python.org/3/library/tracemalloc.html",{"_index":1178,"title":{},"content":{"95":{"position":[[205,50]]}},"keywords":{}}],["https://git",{"_index":1842,"title":{},"content":{"179":{"position":[[1513,11]]}},"keywords":{}}],["https://github.com/jpawlowski/hass.tibber_prices.git",{"_index":2077,"title":{},"content":{"230":{"position":[[34,52]]}},"keywords":{}}],["https://github.com/orhun/git",{"_index":1848,"title":{},"content":{"179":{"position":[[1662,28]]}},"keywords":{}}],["https://github.com/your_username/hass.tibber_prices.git",{"_index":169,"title":{},"content":{"12":{"position":[[57,55]]}},"keywords":{}}],["human",{"_index":1467,"title":{},"content":{"133":{"position":[[1053,5]]},"163":{"position":[[203,5],[225,6],[573,5]]}},"keywords":{}}],["i'll",{"_index":1679,"title":{},"content":{"159":{"position":[[44,4]]}},"keywords":{}}],["i/o",{"_index":761,"title":{},"content":{"52":{"position":[[123,3],[909,3]]},"67":{"position":[[176,3],[764,3]]}},"keywords":{}}],["i['startsat",{"_index":1373,"title":{},"content":{"122":{"position":[[131,16]]}},"keywords":{}}],["i['tot",{"_index":1374,"title":{},"content":{"122":{"position":[[148,11]]}},"keywords":{}}],["icon",{"_index":1513,"title":{},"content":{"136":{"position":[[614,4]]}},"keywords":{}}],["icon/color/attribut",{"_index":575,"title":{},"content":{"38":{"position":[[205,20]]}},"keywords":{}}],["icons.pi",{"_index":1512,"title":{},"content":{"136":{"position":[[603,8]]}},"keywords":{}}],["id",{"_index":1187,"title":{},"content":{"99":{"position":[[66,2]]},"100":{"position":[[48,4]]}},"keywords":{}}],["idea",{"_index":364,"title":{},"content":{"28":{"position":[[110,5]]},"272":{"position":[[1548,6],[2288,4]]}},"keywords":{}}],["identif",{"_index":2450,"title":{},"content":{"255":{"position":[[737,14]]}},"keywords":{}}],["identifi",{"_index":2726,"title":{},"content":{"273":{"position":[[2966,10]]}},"keywords":{}}],["identifierresolut",{"_index":1205,"title":{},"content":{"100":{"position":[[244,21]]}},"keywords":{}}],["ignor",{"_index":1567,"title":{"162":{"position":[[2,6]]}},"content":{"145":{"position":[[47,7],[173,8]]},"147":{"position":[[24,8]]},"149":{"position":[[608,8]]},"165":{"position":[[17,7]]}},"keywords":{}}],["ignored)work",{"_index":1770,"title":{},"content":{"174":{"position":[[138,12]]}},"keywords":{}}],["immedi",{"_index":2434,"title":{},"content":{"253":{"position":[[113,11]]}},"keywords":{}}],["immediately)tim",{"_index":2986,"title":{},"content":{"301":{"position":[[358,17]]}},"keywords":{}}],["impact",{"_index":249,"title":{"214":{"position":[[9,7]]}},"content":{"18":{"position":[[215,7]]},"55":{"position":[[641,7]]},"56":{"position":[[1488,7]]},"196":{"position":[[133,7],[167,6],[187,7]]},"264":{"position":[[214,9]]}},"keywords":{}}],["implement",{"_index":284,"title":{"89":{"position":[[2,11]]},"90":{"position":[[20,11]]},"148":{"position":[[3,14]]},"151":{"position":[[15,15]]},"160":{"position":[[2,9]]},"171":{"position":[[35,16]]},"245":{"position":[[0,14]]},"254":{"position":[[0,14]]}},"content":{"21":{"position":[[165,14]]},"84":{"position":[[29,11]]},"133":{"position":[[217,12]]},"150":{"position":[[741,14]]},"174":{"position":[[324,14]]},"204":{"position":[[44,11],[209,11]]},"212":{"position":[[9,12]]},"239":{"position":[[1313,15]]},"243":{"position":[[839,15]]},"252":{"position":[[9,14]]},"255":{"position":[[601,15]]},"272":{"position":[[39,13],[781,11],[1481,14]]},"273":{"position":[[355,12],[806,12],[1311,12],[1638,15]]},"274":{"position":[[108,15]]}},"keywords":{}}],["implementationdocs/develop",{"_index":1709,"title":{},"content":{"163":{"position":[[375,31]]}},"keywords":{}}],["implemented)privaci",{"_index":2650,"title":{},"content":{"272":{"position":[[1288,19]]}},"keywords":{}}],["implementhard",{"_index":2669,"title":{},"content":{"272":{"position":[[2157,15]]}},"keywords":{}}],["implic",{"_index":2326,"title":{},"content":{"246":{"position":[[1808,12]]}},"keywords":{}}],["import",{"_index":112,"title":{"4":{"position":[[0,6]]}},"content":{"6":{"position":[[70,6]]},"8":{"position":[[48,6]]},"46":{"position":[[201,6]]},"124":{"position":[[1,6]]},"125":{"position":[[1,6]]},"128":{"position":[[27,6]]},"129":{"position":[[79,6]]},"132":{"position":[[290,10]]},"154":{"position":[[203,7],[352,7]]},"200":{"position":[[42,6],[54,6]]},"201":{"position":[[1,6]]},"209":{"position":[[232,6]]},"218":{"position":[[1,6],[15,6]]},"222":{"position":[[1,6],[15,6]]},"239":{"position":[[200,9]]}},"keywords":{}}],["impract",{"_index":2276,"title":{},"content":{"246":{"position":[[298,11]]}},"keywords":{}}],["improv",{"_index":202,"title":{"269":{"position":[[10,13]]},"272":{"position":[[10,13]]}},"content":{"14":{"position":[[216,12]]},"26":{"position":[[34,9]]},"27":{"position":[[137,12]]},"146":{"position":[[661,12]]}},"keywords":{}}],["in_flex",{"_index":2101,"title":{},"content":{"237":{"position":[[137,7],[251,7]]},"247":{"position":[[905,8]]},"255":{"position":[[361,9]]}},"keywords":{}}],["includ",{"_index":246,"title":{},"content":{"18":{"position":[[162,8]]},"21":{"position":[[62,8]]},"61":{"position":[[265,8]]},"70":{"position":[[232,7]]},"103":{"position":[[159,9]]},"135":{"position":[[13,8]]},"146":{"position":[[32,8]]},"161":{"position":[[155,7]]},"195":{"position":[[192,7]]},"231":{"position":[[18,9]]}},"keywords":{}}],["inconsist",{"_index":2771,"title":{},"content":{"273":{"position":[[4871,12]]}},"keywords":{}}],["inconveni",{"_index":2309,"title":{},"content":{"246":{"position":[[1338,14]]}},"keywords":{}}],["incorrect",{"_index":1062,"title":{},"content":{"78":{"position":[[339,9]]},"273":{"position":[[4444,9]]}},"keywords":{}}],["increas",{"_index":2182,"title":{},"content":{"243":{"position":[[54,10]]},"248":{"position":[[69,9]]},"255":{"position":[[2954,9]]},"258":{"position":[[266,8]]},"273":{"position":[[187,9]]}},"keywords":{}}],["increase!)bas",{"_index":2674,"title":{},"content":{"273":{"position":[[137,14]]}},"keywords":{}}],["increasestim",{"_index":1004,"title":{},"content":{"75":{"position":[[237,14]]}},"keywords":{}}],["increment",{"_index":2259,"title":{"252":{"position":[[11,11]]}},"content":{"245":{"position":[[486,9],[570,9]]},"248":{"position":[[84,14]]},"252":{"position":[[107,9],[684,10],[1437,10],[1477,9],[1683,9]]},"258":{"position":[[126,10]]},"270":{"position":[[7,9]]},"273":{"position":[[10,9],[117,9],[166,9],[235,10],[246,9]]}},"keywords":{}}],["independ",{"_index":445,"title":{},"content":{"33":{"position":[[24,11]]},"34":{"position":[[59,11]]},"48":{"position":[[64,11]]},"131":{"position":[[277,11]]},"236":{"position":[[29,11]]},"239":{"position":[[253,11]]},"251":{"position":[[20,14]]},"252":{"position":[[742,15]]},"273":{"position":[[2193,11]]},"277":{"position":[[28,11]]},"283":{"position":[[486,14]]},"301":{"position":[[7,11]]}},"keywords":{}}],["indic",{"_index":503,"title":{},"content":{"36":{"position":[[519,10]]}},"keywords":{}}],["individu",{"_index":1978,"title":{},"content":{"206":{"position":[[55,10]]}},"keywords":{}}],["info",{"_index":1276,"title":{},"content":{"110":{"position":[[46,4]]},"118":{"position":[[135,4]]},"248":{"position":[[199,4]]},"252":{"position":[[458,5]]},"256":{"position":[[62,4]]},"265":{"position":[[70,5],[359,5]]},"266":{"position":[[63,5],[345,5]]},"267":{"position":[[631,4]]}},"keywords":{}}],["info)clean",{"_index":1493,"title":{},"content":{"135":{"position":[[165,10]]}},"keywords":{}}],["inform",{"_index":1186,"title":{"104":{"position":[[9,12]]}},"content":{"99":{"position":[[14,11]]}},"keywords":{}}],["informational)wrong",{"_index":2307,"title":{},"content":{"246":{"position":[[1303,20]]}},"keywords":{}}],["inherit",{"_index":655,"title":{},"content":{"43":{"position":[[600,8]]},"278":{"position":[[219,7]]}},"keywords":{}}],["init",{"_index":966,"title":{},"content":{"69":{"position":[[251,5]]}},"keywords":{}}],["initi",{"_index":1489,"title":{},"content":{"135":{"position":[[73,7]]},"265":{"position":[[1,7]]},"266":{"position":[[1,7]]},"275":{"position":[[13,7]]}},"keywords":{}}],["input",{"_index":833,"title":{},"content":{"56":{"position":[[563,6]]},"70":{"position":[[290,7]]}},"keywords":{}}],["insight",{"_index":478,"title":{},"content":{"34":{"position":[[7,8]]},"301":{"position":[[237,9]]}},"keywords":{}}],["inspect",{"_index":1342,"title":{},"content":{"118":{"position":[[193,7]]}},"keywords":{}}],["instal",{"_index":985,"title":{},"content":{"72":{"position":[[173,7]]},"129":{"position":[[1,7],[31,7]]},"135":{"position":[[390,7]]},"179":{"position":[[1041,10],[1129,9],[1188,9],[1268,9],[1439,12],[1566,7],[1614,7]]},"202":{"position":[[3,7],[26,7]]},"229":{"position":[[42,9]]},"246":{"position":[[2524,12]]},"278":{"position":[[349,12],[1080,12]]},"287":{"position":[[8,13],[227,12],[278,12],[329,12]]}},"keywords":{}}],["instanc",{"_index":473,"title":{},"content":{"33":{"position":[[531,8]]},"47":{"position":[[17,9]]},"53":{"position":[[78,8]]},"67":{"position":[[510,8]]}},"keywords":{}}],["instancecommit",{"_index":1486,"title":{},"content":{"134":{"position":[[391,14]]}},"keywords":{}}],["instanceregist",{"_index":378,"title":{},"content":{"31":{"position":[[60,17]]}},"keywords":{}}],["instead",{"_index":2141,"title":{},"content":{"239":{"position":[[957,7]]},"278":{"position":[[1287,7]]}},"keywords":{}}],["instruct",{"_index":1741,"title":{"193":{"position":[[12,13]]}},"content":{"170":{"position":[[304,12]]}},"keywords":{}}],["insuffici",{"_index":2383,"title":{},"content":{"251":{"position":[[84,12]]},"263":{"position":[[596,12]]},"265":{"position":[[272,14]]}},"keywords":{}}],["insufficient"",{"_index":2600,"title":{},"content":{"267":{"position":[[396,18]]}},"keywords":{}}],["integr",{"_index":28,"title":{"86":{"position":[[30,10]]},"120":{"position":[[0,11]]},"163":{"position":[[0,11]]},"224":{"position":[[0,11]]},"232":{"position":[[12,12]]},"289":{"position":[[13,11]]}},"content":{"1":{"position":[[229,11]]},"3":{"position":[[33,11],[130,13]]},"16":{"position":[[35,11]]},"31":{"position":[[21,11]]},"33":{"position":[[5,11]]},"40":{"position":[[182,11]]},"50":{"position":[[5,11]]},"52":{"position":[[479,11]]},"55":{"position":[[407,13]]},"72":{"position":[[181,11]]},"75":{"position":[[16,12]]},"77":{"position":[[1188,11]]},"87":{"position":[[169,11]]},"90":{"position":[[256,9]]},"93":{"position":[[150,9],[272,11]]},"94":{"position":[[569,11]]},"101":{"position":[[109,11]]},"106":{"position":[[520,11]]},"133":{"position":[[6,11]]},"134":{"position":[[304,12]]},"135":{"position":[[323,11]]},"136":{"position":[[52,11]]},"137":{"position":[[560,11]]},"138":{"position":[[12,11]]},"156":{"position":[[155,11]]},"224":{"position":[[58,11]]},"233":{"position":[[94,11]]},"239":{"position":[[227,11]]},"255":{"position":[[2322,10]]},"277":{"position":[[5,11]]},"278":{"position":[[1656,11]]},"281":{"position":[[1235,12]]},"289":{"position":[[210,11],[272,11]]}},"keywords":{}}],["integrationsmarkdown",{"_index":1913,"title":{},"content":{"195":{"position":[[117,21]]}},"keywords":{}}],["intellig",{"_index":1811,"title":{"179":{"position":[[16,14]]}},"content":{},"keywords":{}}],["intens",{"_index":869,"title":{},"content":{"56":{"position":[[1736,9]]},"67":{"position":[[348,9]]}},"keywords":{}}],["intent",{"_index":2155,"title":{},"content":{"239":{"position":[[1586,11]]},"273":{"position":[[4968,11]]},"286":{"position":[[216,12]]}},"keywords":{}}],["interact",{"_index":1412,"title":{},"content":{"129":{"position":[[113,11]]},"131":{"position":[[182,12]]},"235":{"position":[[144,11]]},"239":{"position":[[1222,11]]},"275":{"position":[[52,11]]}},"keywords":{}}],["interactions)chang",{"_index":2143,"title":{},"content":{"239":{"position":[[1048,21]]}},"keywords":{}}],["intermedi",{"_index":1602,"title":{},"content":{"147":{"position":[[148,12]]}},"keywords":{}}],["intern",{"_index":74,"title":{},"content":{"3":{"position":[[683,8]]},"43":{"position":[[767,8]]},"239":{"position":[[584,10],[1281,9]]}},"keywords":{}}],["interquartil",{"_index":2531,"title":{},"content":{"255":{"position":[[3798,14]]}},"keywords":{}}],["interv",{"_index":546,"title":{},"content":{"37":{"position":[[721,8],[786,8]]},"41":{"position":[[26,9]]},"42":{"position":[[422,8],[498,8]]},"43":{"position":[[217,8],[503,10]]},"51":{"position":[[276,9],[312,9],[1324,9]]},"56":{"position":[[310,9],[638,8],[854,9],[1540,8]]},"61":{"position":[[169,10]]},"86":{"position":[[340,9]]},"100":{"position":[[298,9]]},"111":{"position":[[553,10]]},"118":{"position":[[417,10]]},"122":{"position":[[110,10],[252,9],[305,9],[357,9]]},"206":{"position":[[81,8],[93,10]]},"216":{"position":[[126,9]]},"241":{"position":[[328,8],[557,9]]},"242":{"position":[[346,10]]},"243":{"position":[[2258,8]]},"255":{"position":[[857,9],[908,9],[1048,10],[2290,9],[2702,9]]},"256":{"position":[[197,9],[238,9]]},"262":{"position":[[272,9]]},"263":{"position":[[210,9],[351,9]]},"264":{"position":[[412,9]]},"267":{"position":[[93,10]]},"273":{"position":[[1557,8],[2245,10],[3524,9],[3619,9],[4410,9]]},"277":{"position":[[93,8]]},"279":{"position":[[219,8]]}},"keywords":{}}],["interval"",{"_index":2841,"title":{},"content":{"279":{"position":[[1710,14]]}},"keywords":{}}],["interval'",{"_index":2706,"title":{},"content":{"273":{"position":[[1817,10],[1954,10],[2003,10],[2864,10]]}},"keywords":{}}],["interval)ha",{"_index":2833,"title":{},"content":{"279":{"position":[[1284,11]]}},"keywords":{}}],["interval)se",{"_index":2834,"title":{},"content":{"279":{"position":[[1351,12]]}},"keywords":{}}],["intervalcalcul",{"_index":657,"title":{},"content":{"43":{"position":[[676,19]]}},"keywords":{}}],["intervalcriteria",{"_index":2444,"title":{},"content":{"255":{"position":[[315,17]]}},"keywords":{}}],["intervalmaintain",{"_index":2210,"title":{},"content":{"243":{"position":[[746,17]]}},"keywords":{}}],["intervalpric",{"_index":1526,"title":{},"content":{"137":{"position":[[299,13]]}},"keywords":{}}],["intervals)peak",{"_index":2351,"title":{},"content":{"247":{"position":[[231,14]]}},"keywords":{}}],["intervals_get_rolling_hour_value(offset",{"_index":645,"title":{},"content":{"43":{"position":[[166,40]]}},"keywords":{}}],["intervalsallow",{"_index":2846,"title":{},"content":{"279":{"position":[[2026,15]]}},"keywords":{}}],["intervalslead",{"_index":1266,"title":{},"content":{"107":{"position":[[81,16]]}},"keywords":{}}],["intervalsperiod",{"_index":2556,"title":{},"content":{"259":{"position":[[123,16]]}},"keywords":{}}],["intervalspric",{"_index":1267,"title":{},"content":{"107":{"position":[[135,14]]}},"keywords":{}}],["intervent",{"_index":1921,"title":{},"content":{"196":{"position":[[474,12]]}},"keywords":{}}],["invalid",{"_index":405,"title":{"58":{"position":[[6,12]]},"78":{"position":[[9,12]]}},"content":{"31":{"position":[[567,7]]},"33":{"position":[[101,12]]},"34":{"position":[[29,13]]},"48":{"position":[[127,13]]},"51":{"position":[[625,12]]},"52":{"position":[[430,12]]},"55":{"position":[[350,12]]},"56":{"position":[[964,12]]},"60":{"position":[[292,11]]},"61":{"position":[[200,11]]},"62":{"position":[[368,12],[405,12],[462,12],[528,12],[608,11]]},"66":{"position":[[29,13]]},"67":{"position":[[26,12],[916,12]]},"78":{"position":[[56,13],[120,11]]},"89":{"position":[[196,12]]},"92":{"position":[[240,11]]},"106":{"position":[[1,7]]},"131":{"position":[[329,13]]},"157":{"position":[[225,7]]},"204":{"position":[[535,12]]},"285":{"position":[[156,7]]},"300":{"position":[[84,13]]}},"keywords":{}}],["invalidate_config_cach",{"_index":803,"title":{},"content":{"55":{"position":[[261,25]]},"56":{"position":[[1018,25]]},"69":{"position":[[93,25]]}},"keywords":{}}],["invalidate_config_cache()coordinator/periods.pi",{"_index":1065,"title":{},"content":{"78":{"position":[[471,47]]}},"keywords":{}}],["invalidate_config_cache()sensor/calculators/trend.pi",{"_index":1066,"title":{},"content":{"78":{"position":[[521,52]]}},"keywords":{}}],["invalidate_config_cache(self",{"_index":1968,"title":{},"content":{"204":{"position":[[787,30]]}},"keywords":{}}],["invalidatedtrend",{"_index":1059,"title":{},"content":{"78":{"position":[[191,16]]}},"keywords":{}}],["investig",{"_index":956,"title":{},"content":{"67":{"position":[[1008,13]]}},"keywords":{}}],["invis",{"_index":2949,"title":{},"content":{"290":{"position":[[159,10]]}},"keywords":{}}],["ipython",{"_index":1407,"title":{"129":{"position":[[0,7]]}},"content":{"129":{"position":[[39,7],[71,7]]}},"keywords":{}}],["irrelevantdynam",{"_index":2560,"title":{},"content":{"260":{"position":[[125,17]]}},"keywords":{}}],["is_cache_valid",{"_index":976,"title":{},"content":{"71":{"position":[[9,16]]}},"keywords":{}}],["is_cache_valid(cache_data",{"_index":737,"title":{},"content":{"51":{"position":[[943,26]]}},"keywords":{}}],["ishom",{"_index":1912,"title":{},"content":{"195":{"position":[[60,6]]}},"keywords":{}}],["isn't",{"_index":1767,"title":{},"content":{"173":{"position":[[300,5]]}},"keywords":{}}],["iso",{"_index":1224,"title":{},"content":{"103":{"position":[[226,3]]}},"keywords":{}}],["isol",{"_index":660,"title":{},"content":{"43":{"position":[[731,8]]},"255":{"position":[[701,8]]},"264":{"position":[[166,8]]},"267":{"position":[[1158,8]]}},"keywords":{}}],["isort)max",{"_index":8,"title":{},"content":{"1":{"position":[[49,9]]}},"keywords":{}}],["issu",{"_index":25,"title":{"27":{"position":[[8,6]]},"68":{"position":[[16,7]]},"119":{"position":[[7,7]]},"295":{"position":[[16,7]]},"299":{"position":[[7,7]]}},"content":{"1":{"position":[[184,6]]},"21":{"position":[[384,6]]},"27":{"position":[[12,6],[44,5],[162,5]]},"28":{"position":[[8,6]]},"67":{"position":[[1033,6]]},"85":{"position":[[131,5]]},"90":{"position":[[310,6],[489,7]]},"92":{"position":[[267,8],[368,8]]},"133":{"position":[[1185,6]]},"135":{"position":[[232,6]]},"146":{"position":[[233,6]]},"148":{"position":[[112,6]]},"167":{"position":[[111,6]]},"241":{"position":[[477,6]]},"247":{"position":[[261,5]]},"267":{"position":[[35,7]]},"273":{"position":[[963,6]]}},"keywords":{}}],["issues)fast",{"_index":2526,"title":{},"content":{"255":{"position":[[3580,11]]}},"keywords":{}}],["it'",{"_index":2923,"title":{},"content":{"286":{"position":[[173,4]]}},"keywords":{}}],["item",{"_index":1976,"title":{},"content":{"206":{"position":[[18,5]]},"210":{"position":[[208,5],[286,5]]}},"keywords":{}}],["iter",{"_index":1568,"title":{"147":{"position":[[3,7]]}},"content":{"145":{"position":[[64,11],[193,7]]},"162":{"position":[[110,11]]},"174":{"position":[[123,9]]},"255":{"position":[[1938,9],[2635,9],[3532,10]]}},"keywords":{}}],["itself",{"_index":2885,"title":{},"content":{"281":{"position":[[1034,6]]}},"keywords":{}}],["ja",{"_index":2917,"title":{},"content":{"286":{"position":[[77,2]]}},"keywords":{}}],["jitter",{"_index":621,"title":{},"content":{"42":{"position":[[335,6]]},"299":{"position":[[303,6]]}},"keywords":{}}],["jkl3456](link",{"_index":1870,"title":{},"content":{"181":{"position":[[345,15]]}},"keywords":{}}],["json",{"_index":442,"title":{},"content":{"31":{"position":[[1321,6]]},"135":{"position":[[345,6]]},"224":{"position":[[105,5],[260,4],[316,4]]}},"keywords":{}}],["judgment",{"_index":1753,"title":{},"content":{"172":{"position":[[12,9]]}},"keywords":{}}],["jump",{"_index":2736,"title":{},"content":{"273":{"position":[[3420,6],[3740,4]]},"280":{"position":[[728,7]]}},"keywords":{}}],["justif",{"_index":2312,"title":{},"content":{"246":{"position":[[1446,14]]}},"keywords":{}}],["k",{"_index":1333,"title":{},"content":{"116":{"position":[[147,1]]}},"keywords":{}}],["kb",{"_index":2029,"title":{},"content":{"216":{"position":[[55,3]]}},"keywords":{}}],["keep",{"_index":1043,"title":{"286":{"position":[[7,4]]}},"content":{"77":{"position":[[1293,4]]},"132":{"position":[[379,4]]},"133":{"position":[[402,7]]},"149":{"position":[[434,4]]},"216":{"position":[[1,4]]},"255":{"position":[[1767,4]]}},"keywords":{}}],["key",{"_index":477,"title":{"39":{"position":[[0,3]]},"111":{"position":[[0,3]]},"137":{"position":[[3,3]]},"255":{"position":[[0,3]]}},"content":{"34":{"position":[[3,3]]},"43":{"position":[[447,4]]},"56":{"position":[[541,4]]},"72":{"position":[[159,4]]},"86":{"position":[[126,4]]},"150":{"position":[[461,3]]},"174":{"position":[[1,3]]},"256":{"position":[[142,3]]},"277":{"position":[[360,3]]},"283":{"position":[[443,3]]},"284":{"position":[[552,3]]},"285":{"position":[[415,3]]},"301":{"position":[[233,3]]}},"keywords":{}}],["keysal",{"_index":1089,"title":{},"content":{"81":{"position":[[111,7]]}},"keywords":{}}],["keysboth",{"_index":1091,"title":{},"content":{"81":{"position":[[162,8]]}},"keywords":{}}],["kick",{"_index":1793,"title":{},"content":{"176":{"position":[[862,5]]}},"keywords":{}}],["knob",{"_index":2408,"title":{},"content":{"252":{"position":[[980,5]]},"272":{"position":[[2263,6]]}},"keywords":{}}],["know",{"_index":1759,"title":{"173":{"position":[[12,4]]}},"content":{},"keywords":{}}],["known",{"_index":1152,"title":{"270":{"position":[[0,5]]},"273":{"position":[[0,5]]}},"content":{"90":{"position":[[483,5]]}},"keywords":{}}],["krona",{"_index":1242,"title":{},"content":{"104":{"position":[[157,6]]}},"keywords":{}}],["krone",{"_index":1239,"title":{},"content":{"104":{"position":[[115,6]]}},"keywords":{}}],["kwarg",{"_index":1938,"title":{},"content":{"200":{"position":[[131,10],[191,9]]}},"keywords":{}}],["label",{"_index":351,"title":{},"content":{"27":{"position":[[23,8]]}},"keywords":{}}],["labelsnot",{"_index":1808,"title":{},"content":{"178":{"position":[[280,11]]}},"keywords":{}}],["lack",{"_index":94,"title":{},"content":{"3":{"position":[[1245,4]]}},"keywords":{}}],["languag",{"_index":1115,"title":{},"content":{"85":{"position":[[44,9]]},"90":{"position":[[230,10]]},"133":{"position":[[412,8]]},"137":{"position":[[513,9]]},"204":{"position":[[305,9],[470,9]]}},"keywords":{}}],["languageus",{"_index":1471,"title":{},"content":{"133":{"position":[[1125,12]]}},"keywords":{}}],["larg",{"_index":323,"title":{"159":{"position":[[20,5]]}},"content":{"25":{"position":[[165,5]]},"210":{"position":[[249,5]]},"216":{"position":[[31,5]]}},"keywords":{}}],["last",{"_index":722,"title":{},"content":{"51":{"position":[[426,4]]},"146":{"position":[[170,6]]},"149":{"position":[[55,7]]},"152":{"position":[[112,4]]},"289":{"position":[[291,4]]}},"keywords":{}}],["last_check=2025",{"_index":2897,"title":{},"content":{"284":{"position":[[73,15],[242,15],[462,15]]}},"keywords":{}}],["late",{"_index":2743,"title":{},"content":{"273":{"position":[[3519,4]]}},"keywords":{}}],["later",{"_index":2733,"title":{},"content":{"273":{"position":[[3288,5]]}},"keywords":{}}],["latest",{"_index":1814,"title":{},"content":{"179":{"position":[[124,6]]}},"keywords":{}}],["launch",{"_index":1291,"title":{"113":{"position":[[0,6]]}},"content":{},"keywords":{}}],["layer",{"_index":446,"title":{},"content":{"33":{"position":[[44,6],[77,5]]},"50":{"position":[[41,6]]},"131":{"position":[[321,7]]}},"keywords":{}}],["layersarchitectur",{"_index":2064,"title":{},"content":{"222":{"position":[[221,18]]}},"keywords":{}}],["lazi",{"_index":681,"title":{"205":{"position":[[0,4]]}},"content":{"46":{"position":[[148,4]]}},"keywords":{}}],["lead",{"_index":994,"title":{},"content":{"75":{"position":[[80,4]]}},"keywords":{}}],["leak",{"_index":993,"title":{"77":{"position":[[28,4]]},"209":{"position":[[13,6]]}},"content":{"75":{"position":[[74,5],[97,6],[170,6],[252,6],[338,6]]},"92":{"position":[[22,4],[120,7],[169,7]]},"93":{"position":[[347,4]]},"94":{"position":[[454,4]]}},"keywords":{}}],["leakwith",{"_index":1024,"title":{},"content":{"77":{"position":[[563,8]]}},"keywords":{}}],["learn",{"_index":1640,"title":{},"content":{"150":{"position":[[465,10]]},"269":{"position":[[160,8],[179,5]]},"272":{"position":[[834,8],[877,5]]}},"keywords":{}}],["legend",{"_index":1148,"title":{},"content":{"90":{"position":[[386,7]]}},"keywords":{}}],["legitim",{"_index":2329,"title":{},"content":{"246":{"position":[[1936,10]]},"247":{"position":[[786,10]]},"255":{"position":[[1337,10],[3389,10],[3732,10]]},"267":{"position":[[1179,10]]}},"keywords":{}}],["len(coordinator.data['priceinfo'])}"",{"_index":1341,"title":{},"content":{"118":{"position":[[147,43]]}},"keywords":{}}],["len(period['intervals'])}"",{"_index":1349,"title":{},"content":{"118":{"position":[[428,33]]}},"keywords":{}}],["lend",{"_index":2763,"title":{},"content":{"273":{"position":[[4456,5]]}},"keywords":{}}],["length",{"_index":10,"title":{},"content":{"1":{"position":[[64,7]]},"133":{"position":[[573,7]]}},"keywords":{}}],["lenient)min_dist",{"_index":2564,"title":{},"content":{"262":{"position":[[175,20]]}},"keywords":{}}],["less",{"_index":2583,"title":{},"content":{"264":{"position":[[209,4]]},"272":{"position":[[580,5],[649,5]]},"273":{"position":[[4315,4]]}},"keywords":{}}],["level",{"_index":415,"title":{"239":{"position":[[3,5],[23,5]]}},"content":{"31":{"position":[[719,6]]},"36":{"position":[[454,7]]},"38":{"position":[[80,5]]},"56":{"position":[[764,5]]},"85":{"position":[[79,5]]},"86":{"position":[[394,5]]},"100":{"position":[[189,5]]},"107":{"position":[[253,6]]},"122":{"position":[[333,5]]},"146":{"position":[[317,5]]},"170":{"position":[[98,6]]},"239":{"position":[[611,5],[1259,6]]},"250":{"position":[[150,6]]},"252":{"position":[[242,6]]},"253":{"position":[[10,6],[41,5]]},"255":{"position":[[1074,5]]},"267":{"position":[[273,5],[291,5],[1196,6]]},"272":{"position":[[1685,5]]}},"keywords":{}}],["level)high",{"_index":2594,"title":{},"content":{"267":{"position":[[124,10]]}},"keywords":{}}],["level="volatility_low"",{"_index":2132,"title":{},"content":{"239":{"position":[[644,32]]}},"keywords":{}}],["level=ani",{"_index":2440,"title":{},"content":{"253":{"position":[[339,10]]},"265":{"position":[[316,9]]}},"keywords":{}}],["level=cheap",{"_index":2439,"title":{},"content":{"253":{"position":[[297,12]]}},"keywords":{}}],["level_filtering.pi",{"_index":2124,"title":{},"content":{"239":{"position":[[129,18]]},"243":{"position":[[859,18]]}},"keywords":{}}],["levelbett",{"_index":2518,"title":{},"content":{"255":{"position":[[3272,11]]}},"keywords":{}}],["leveloptim",{"_index":2626,"title":{},"content":{"269":{"position":[[409,13]]}},"keywords":{}}],["licens",{"_index":1547,"title":{"141":{"position":[[3,8]]}},"content":{"141":{"position":[[17,8],[43,7]]}},"keywords":{}}],["lifecycl",{"_index":515,"title":{},"content":{"37":{"position":[[177,10]]},"84":{"position":[[142,9]]},"87":{"position":[[31,9]]},"93":{"position":[[235,9]]},"146":{"position":[[446,9]]},"150":{"position":[[592,9]]},"153":{"position":[[74,9]]},"154":{"position":[[110,12]]},"174":{"position":[[200,9]]}},"keywords":{}}],["lifecycleimpl",{"_index":1636,"title":{},"content":{"150":{"position":[[334,20]]}},"keywords":{}}],["lifetim",{"_index":450,"title":{},"content":{"33":{"position":[[92,8]]},"50":{"position":[[76,10]]},"51":{"position":[[460,9]]},"52":{"position":[[390,9]]},"55":{"position":[[244,9]]},"56":{"position":[[809,9]]},"67":{"position":[[12,8],[994,8]]},"300":{"position":[[73,10]]}},"keywords":{}}],["lightweight",{"_index":2066,"title":{},"content":{"224":{"position":[[184,11]]},"280":{"position":[[805,11]]}},"keywords":{}}],["limit",{"_index":1207,"title":{"101":{"position":[[5,7]]},"244":{"position":[[5,6]]},"247":{"position":[[5,6]]},"270":{"position":[[6,12]]},"273":{"position":[[6,12]]}},"content":{"101":{"position":[[17,6],[77,6],[144,7]]},"106":{"position":[[175,5]]},"133":{"position":[[943,12]]},"182":{"position":[[231,7]]},"237":{"position":[[10,5]]},"248":{"position":[[596,7]]}},"keywords":{}}],["line",{"_index":9,"title":{},"content":{"1":{"position":[[59,4]]},"25":{"position":[[184,6]]},"37":{"position":[[118,5]]},"133":{"position":[[568,4]]},"143":{"position":[[180,5]]},"150":{"position":[[97,6]]},"160":{"position":[[100,5]]},"166":{"position":[[126,5],[205,5],[283,6]]},"170":{"position":[[66,4],[74,4],[299,4]]},"172":{"position":[[46,6],[188,6]]},"174":{"position":[[53,6]]},"273":{"position":[[5204,5]]}},"keywords":{}}],["linear",{"_index":2232,"title":{},"content":{"243":{"position":[[1943,6]]},"255":{"position":[[810,6],[2990,7],[3128,6]]},"270":{"position":[[122,6]]},"273":{"position":[[514,6],[549,6],[617,6],[820,6],[873,6]]}},"keywords":{}}],["lines)clear",{"_index":566,"title":{},"content":{"37":{"position":[[1120,11]]}},"keywords":{}}],["lines)smal",{"_index":1562,"title":{},"content":{"143":{"position":[[578,11]]}},"keywords":{}}],["linesclear",{"_index":1633,"title":{},"content":{"150":{"position":[[188,10]]}},"keywords":{}}],["lint",{"_index":212,"title":{},"content":{"15":{"position":[[133,7]]},"21":{"position":[[303,7]]},"22":{"position":[[129,7]]},"94":{"position":[[414,7]]},"131":{"position":[[496,8]]},"133":{"position":[[540,7]]},"134":{"position":[[272,8]]},"156":{"position":[[34,7]]},"173":{"position":[[85,7]]},"233":{"position":[[3,4]]}},"keywords":{}}],["linter/formattergit",{"_index":2084,"title":{},"content":{"231":{"position":[[166,20]]}},"keywords":{}}],["linux",{"_index":1852,"title":{},"content":{"179":{"position":[[1747,5]]}},"keywords":{}}],["list",{"_index":109,"title":{},"content":{"3":{"position":[[1465,4]]},"81":{"position":[[171,5]]},"86":{"position":[[319,4]]},"170":{"position":[[106,5]]},"210":{"position":[[29,4],[155,4]]},"281":{"position":[[648,4],[747,4]]}},"keywords":{}}],["list[dict",{"_index":1321,"title":{},"content":{"114":{"position":[[283,11]]},"255":{"position":[[107,11]]}},"keywords":{}}],["list[weakref.ref",{"_index":1998,"title":{},"content":{"209":{"position":[[299,17]]}},"keywords":{}}],["listen",{"_index":1001,"title":{"281":{"position":[[0,8]]}},"content":{"75":{"position":[[177,9]]},"77":{"position":[[43,8],[96,9],[179,9],[417,9],[459,8],[588,8],[1511,8],[1712,8],[1886,9]]},"92":{"position":[[75,9],[217,11]]},"279":{"position":[[1660,7]]},"280":{"position":[[468,7]]},"281":{"position":[[373,8],[656,9],[948,9]]}},"keywords":{}}],["listener'?"",{"_index":2870,"title":{},"content":{"281":{"position":[[53,17]]}},"keywords":{}}],["listenermanag",{"_index":2880,"title":{},"content":{"281":{"position":[[672,16]]}},"keywords":{}}],["listenermanager.schedule_minute_refresh",{"_index":2847,"title":{},"content":{"280":{"position":[[34,41]]}},"keywords":{}}],["listenermanager.schedule_quarter_hour_refresh",{"_index":2817,"title":{},"content":{"279":{"position":[[34,47]]}},"keywords":{}}],["listenersbinari",{"_index":1019,"title":{},"content":{"77":{"position":[[363,15]]}},"keywords":{}}],["littl",{"_index":2208,"title":{},"content":{"243":{"position":[[700,7]]},"259":{"position":[[87,7]]}},"keywords":{}}],["live",{"_index":1100,"title":{"127":{"position":[[0,4]]}},"content":{"83":{"position":[[101,6],[167,6]]},"171":{"position":[[44,6]]}},"keywords":{}}],["load",{"_index":139,"title":{"7":{"position":[[12,8]]},"120":{"position":[[16,8]]},"205":{"position":[[5,8]]},"219":{"position":[[0,4]]},"287":{"position":[[10,4]]}},"content":{"16":{"position":[[47,6]]},"31":{"position":[[33,6]]},"38":{"position":[[266,7]]},"40":{"position":[[172,6]]},"46":{"position":[[250,7]]},"51":{"position":[[910,5],[1303,4]]},"52":{"position":[[563,8],[610,4]]},"62":{"position":[[637,5]]},"75":{"position":[[232,4]]},"77":{"position":[[1311,4]]},"137":{"position":[[549,7]]},"152":{"position":[[171,4]]},"156":{"position":[[167,5]]},"205":{"position":[[1,4]]},"278":{"position":[[1052,4],[1258,4]]},"280":{"position":[[944,4]]},"287":{"position":[[476,4]]},"301":{"position":[[279,5]]}},"keywords":{}}],["load_translation(path",{"_index":1963,"title":{},"content":{"204":{"position":[[447,22]]}},"keywords":{}}],["loadingpract",{"_index":1117,"title":{},"content":{"85":{"position":[[102,18]]}},"keywords":{}}],["loads)test",{"_index":1676,"title":{},"content":{"157":{"position":[[277,10]]}},"keywords":{}}],["local",{"_index":215,"title":{"16":{"position":[[8,8]]},"179":{"position":[[3,5]]}},"content":{"51":{"position":[[531,5]]},"100":{"position":[[349,5]]},"149":{"position":[[439,7]]},"179":{"position":[[68,8]]},"182":{"position":[[254,5]]},"190":{"position":[[36,6]]},"191":{"position":[[36,8]]},"194":{"position":[[42,5]]},"196":{"position":[[246,8]]},"224":{"position":[[88,5]]},"255":{"position":[[1864,5],[3422,5]]},"272":{"position":[[1179,5]]}},"keywords":{}}],["local_now.d",{"_index":743,"title":{},"content":{"51":{"position":[[1058,17]]}},"keywords":{}}],["locallyy",{"_index":1879,"title":{},"content":{"184":{"position":[[301,10]]}},"keywords":{}}],["locat",{"_index":449,"title":{},"content":{"33":{"position":[[83,8]]},"46":{"position":[[14,8]]},"51":{"position":[[1,9]]},"52":{"position":[[1,9]]},"53":{"position":[[1,9]]},"56":{"position":[[1,9]]},"57":{"position":[[1,9]]},"77":{"position":[[655,10],[1356,10],[1841,10]]},"78":{"position":[[422,10]]},"79":{"position":[[402,10]]}},"keywords":{}}],["lock",{"_index":917,"title":{},"content":{"62":{"position":[[735,7]]}},"keywords":{}}],["log",{"_index":682,"title":{"109":{"position":[[0,8]]},"110":{"position":[[13,8]]},"111":{"position":[[4,3]]},"221":{"position":[[0,3]]}},"content":{"46":{"position":[[153,7],[180,3]]},"70":{"position":[[199,4]]},"71":{"position":[[121,4]]},"83":{"position":[[327,6]]},"110":{"position":[[51,5]]},"120":{"position":[[120,4]]},"121":{"position":[[154,7]]},"122":{"position":[[24,5]]},"156":{"position":[[145,4]]},"184":{"position":[[101,3]]},"243":{"position":[[1077,3]]},"248":{"position":[[204,4],[284,4]]},"256":{"position":[[14,8],[67,5],[146,3]]},"296":{"position":[[16,7],[74,3]]},"297":{"position":[[21,5]]},"298":{"position":[[21,5]]}},"keywords":{}}],["log)ar",{"_index":961,"title":{},"content":{"69":{"position":[[85,7]]}},"keywords":{}}],["logger",{"_index":1274,"title":{},"content":{"110":{"position":[[29,7]]},"256":{"position":[[45,7]]}},"keywords":{}}],["logic",{"_index":490,"title":{},"content":{"36":{"position":[[81,6]]},"37":{"position":[[273,5],[1156,7]]},"38":{"position":[[226,5]]},"43":{"position":[[725,5],[843,6]]},"71":{"position":[[26,5]]},"107":{"position":[[295,6]]},"136":{"position":[[627,5],[665,5]]},"235":{"position":[[317,6]]},"237":{"position":[[68,6]]},"238":{"position":[[109,6]]},"239":{"position":[[118,6]]},"278":{"position":[[1616,5]]},"281":{"position":[[1078,5]]},"289":{"position":[[89,5]]},"299":{"position":[[246,6],[352,5]]}},"keywords":{}}],["logicon",{"_index":2887,"title":{},"content":{"281":{"position":[[1096,8]]}},"keywords":{}}],["logicsmart",{"_index":2494,"title":{},"content":{"255":{"position":[[2475,10]]}},"keywords":{}}],["logictest",{"_index":317,"title":{},"content":{"25":{"position":[[71,10]]}},"keywords":{}}],["long",{"_index":766,"title":{},"content":{"52":{"position":[[371,4]]},"83":{"position":[[211,4]]},"90":{"position":[[84,4]]},"132":{"position":[[72,4]]},"163":{"position":[[131,4]]},"215":{"position":[[9,4],[174,4]]},"246":{"position":[[466,4]]},"272":{"position":[[1691,5]]}},"keywords":{}}],["look",{"_index":310,"title":{"25":{"position":[[15,4]]}},"content":{"267":{"position":[[1022,4]]}},"keywords":{}}],["lookup",{"_index":812,"title":{},"content":{"55":{"position":[[667,7],[924,7]]},"67":{"position":[[259,7],[730,7]]},"210":{"position":[[38,7],[101,7]]}},"keywords":{}}],["lookup)sav",{"_index":868,"title":{},"content":{"56":{"position":[[1619,15]]}},"keywords":{}}],["loop",{"_index":779,"title":{},"content":{"52":{"position":[[935,5]]},"83":{"position":[[261,4]]},"206":{"position":[[45,4]]},"207":{"position":[[254,5]]}},"keywords":{}}],["loop)no",{"_index":916,"title":{},"content":{"62":{"position":[[727,7]]}},"keywords":{}}],["looptri",{"_index":2385,"title":{},"content":{"251":{"position":[[129,7]]}},"keywords":{}}],["lose",{"_index":2240,"title":{},"content":{"243":{"position":[[2170,5]]},"259":{"position":[[140,4]]}},"keywords":{}}],["loss",{"_index":1073,"title":{},"content":{"79":{"position":[[209,5],[330,4]]},"92":{"position":[[317,6]]}},"keywords":{}}],["low",{"_index":1150,"title":{},"content":{"90":{"position":[[454,3]]},"239":{"position":[[442,3],[755,4],[946,3]]},"248":{"position":[[117,6]]},"250":{"position":[[127,4]]},"262":{"position":[[331,3]]},"270":{"position":[[61,3]]},"273":{"position":[[74,3],[374,3],[4256,3]]}},"keywords":{}}],["low/normal/high",{"_index":416,"title":{},"content":{"31":{"position":[[726,17]]},"41":{"position":[[584,15]]}},"keywords":{}}],["lower",{"_index":2376,"title":{},"content":{"248":{"position":[[360,5]]},"252":{"position":[[472,8],[1305,5],[1955,8]]},"267":{"position":[[738,5]]},"269":{"position":[[96,5]]},"272":{"position":[[388,5]]},"273":{"position":[[3687,5]]}},"keywords":{}}],["lt",{"_index":742,"title":{},"content":{"51":{"position":[[1053,4]]},"83":{"position":[[235,4]]},"218":{"position":[[322,4]]},"237":{"position":[[153,5]]},"238":{"position":[[211,5]]},"239":{"position":[[446,4],[463,4],[760,4],[777,4]]},"243":{"position":[[1518,4],[1798,5]]},"263":{"position":[[612,4]]},"272":{"position":[[217,4],[239,5]]},"273":{"position":[[4271,5]]},"288":{"position":[[419,4]]}},"keywords":{}}],["lt;0.8",{"_index":2610,"title":{},"content":{"267":{"position":[[891,7]]}},"keywords":{}}],["lt;10",{"_index":2680,"title":{},"content":{"273":{"position":[[388,9]]}},"keywords":{}}],["lt;100",{"_index":1561,"title":{},"content":{"143":{"position":[[570,7]]},"172":{"position":[[37,8]]},"198":{"position":[[196,7]]}},"keywords":{}}],["lt;100m",{"_index":1928,"title":{},"content":{"198":{"position":[[122,9]]}},"keywords":{}}],["lt;10m",{"_index":1926,"title":{},"content":{"198":{"position":[[83,8]]}},"keywords":{}}],["lt;10mb",{"_index":1931,"title":{},"content":{"198":{"position":[[168,8]]}},"keywords":{}}],["lt;1kb",{"_index":940,"title":{},"content":{"67":{"position":[[214,7]]}},"keywords":{}}],["lt;1m",{"_index":866,"title":{},"content":{"56":{"position":[[1587,7]]},"255":{"position":[[2687,7]]}},"keywords":{}}],["lt;3",{"_index":1563,"title":{},"content":{"143":{"position":[[599,6]]}},"keywords":{}}],["lt;500m",{"_index":1923,"title":{},"content":{"198":{"position":[[38,9]]}},"keywords":{}}],["lt;800",{"_index":1632,"title":{},"content":{"150":{"position":[[180,7]]}},"keywords":{}}],["lt;`1m",{"_index":935,"title":{},"content":{"66":{"position":[[43,9]]}},"keywords":{}}],["lt;feature>",{"_index":1575,"title":{},"content":{"146":{"position":[[44,15]]}},"keywords":{}}],["lt;ha",{"_index":1915,"title":{},"content":{"195":{"position":[[200,6]]}},"keywords":{}}],["m",{"_index":238,"title":{},"content":{"18":{"position":[[53,1]]},"116":{"position":[[19,1]]},"126":{"position":[[9,1],[38,1],[72,1]]},"149":{"position":[[240,1]]},"202":{"position":[[71,1]]}},"keywords":{}}],["machin",{"_index":2621,"title":{},"content":{"269":{"position":[[152,7]]},"272":{"position":[[826,7]]}},"keywords":{}}],["maco",{"_index":1844,"title":{},"content":{"179":{"position":[[1555,5]]}},"keywords":{}}],["main",{"_index":474,"title":{},"content":{"33":{"position":[[540,5]]},"47":{"position":[[65,4]]},"67":{"position":[[519,5]]},"132":{"position":[[5,4]]},"176":{"position":[[358,4]]},"184":{"position":[[173,4]]},"186":{"position":[[200,4]]},"194":{"position":[[473,4]]},"235":{"position":[[379,4]]}},"keywords":{}}],["maintain",{"_index":307,"title":{},"content":{"23":{"position":[[110,10]]},"27":{"position":[[83,11]]},"133":{"position":[[309,11],[469,11],[704,10],[774,11],[864,10]]},"235":{"position":[[269,11]]},"239":{"position":[[239,9]]},"281":{"position":[[638,9]]}},"keywords":{}}],["mainten",{"_index":260,"title":{},"content":{"18":{"position":[[429,11]]},"181":{"position":[[290,11]]}},"keywords":{}}],["mainthread",{"_index":915,"title":{},"content":{"62":{"position":[[689,10]]}},"keywords":{}}],["major",{"_index":1222,"title":{},"content":{"103":{"position":[[194,5]]},"131":{"position":[[567,5]]},"143":{"position":[[82,5]]},"163":{"position":[[674,5]]},"170":{"position":[[39,5]]}},"keywords":{}}],["make",{"_index":204,"title":{"15":{"position":[[3,4]]},"233":{"position":[[0,6]]}},"content":{"152":{"position":[[129,5]]},"174":{"position":[[404,5]]},"252":{"position":[[1639,6]]},"260":{"position":[[113,6]]}},"keywords":{}}],["manag",{"_index":373,"title":{"83":{"position":[[14,11]]},"208":{"position":[[7,11]]}},"content":{"28":{"position":[[294,10]]},"36":{"position":[[158,11]]},"48":{"position":[[236,10]]},"57":{"position":[[344,7]]},"84":{"position":[[126,7]]},"90":{"position":[[37,10]]},"93":{"position":[[72,10]]},"131":{"position":[[411,10]]},"133":{"position":[[390,11]]},"209":{"position":[[253,8]]},"231":{"position":[[85,7]]}},"keywords":{}}],["mani",{"_index":92,"title":{},"content":{"3":{"position":[[1223,4]]},"106":{"position":[[248,4]]},"143":{"position":[[422,4]]},"239":{"position":[[1217,4]]},"246":{"position":[[616,4]]},"256":{"position":[[233,4]]},"272":{"position":[[2258,4]]},"281":{"position":[[1122,4]]}},"keywords":{}}],["manifest",{"_index":1876,"title":{},"content":{"182":{"position":[[166,8]]},"194":{"position":[[150,8]]}},"keywords":{}}],["manifest.json",{"_index":1782,"title":{},"content":{"176":{"position":[[154,13],[531,14],[559,13],[786,13]]},"184":{"position":[[263,13]]},"185":{"position":[[380,13]]},"187":{"position":[[128,13]]},"194":{"position":[[259,13]]},"224":{"position":[[237,13]]}},"keywords":{}}],["manifest.jsonmanifest.json",{"_index":1910,"title":{},"content":{"194":{"position":[[624,26]]}},"keywords":{}}],["manual",{"_index":286,"title":{"185":{"position":[[12,6]]},"186":{"position":[[12,6]]},"226":{"position":[[0,6]]}},"content":{"21":{"position":[[206,6]]},"66":{"position":[[310,6]]},"86":{"position":[[17,8]]},"93":{"position":[[180,8]]},"94":{"position":[[440,6]]},"176":{"position":[[573,8]]},"179":{"position":[[553,6],[1432,6],[1634,6]]},"182":{"position":[[194,6],[312,6]]},"185":{"position":[[24,8]]},"186":{"position":[[160,8]]},"196":{"position":[[467,6]]},"230":{"position":[[186,9]]},"246":{"position":[[1047,8]]},"289":{"position":[[233,8]]}},"keywords":{}}],["manuallyreleas",{"_index":1884,"title":{},"content":{"186":{"position":[[288,15]]}},"keywords":{}}],["map",{"_index":530,"title":{},"content":{"37":{"position":[[454,7]]},"43":{"position":[[428,7]]},"136":{"position":[[619,7],[657,7]]}},"keywords":{}}],["margin",{"_index":2114,"title":{},"content":{"238":{"position":[[89,10]]}},"keywords":{}}],["markdown",{"_index":1865,"title":{},"content":{"181":{"position":[[37,8]]},"195":{"position":[[164,8]]}},"keywords":{}}],["market",{"_index":2638,"title":{},"content":{"272":{"position":[[540,6],[745,7],[1185,6]]},"273":{"position":[[3390,6],[3450,7],[4620,6]]}},"keywords":{}}],["massiv",{"_index":2354,"title":{},"content":{"247":{"position":[[296,7]]}},"keywords":{}}],["match",{"_index":423,"title":{},"content":{"31":{"position":[[912,7]]},"64":{"position":[[158,6]]},"116":{"position":[[169,8]]},"194":{"position":[[175,5]]},"272":{"position":[[2050,5]]}},"keywords":{}}],["math",{"_index":2963,"title":{},"content":{"294":{"position":[[144,4]]}},"keywords":{}}],["mathemat",{"_index":1419,"title":{"242":{"position":[[0,12]]}},"content":{"131":{"position":[[142,12]]},"235":{"position":[[28,12]]},"246":{"position":[[1433,12]]},"273":{"position":[[3304,14],[4429,14],[5000,12]]}},"keywords":{}}],["matter",{"_index":752,"title":{"152":{"position":[[11,7]]}},"content":{"51":{"position":[[1282,8]]},"52":{"position":[[809,8]]},"55":{"position":[[793,8]]},"56":{"position":[[1701,8]]},"246":{"position":[[948,6],[2416,6]]}},"keywords":{}}],["max",{"_index":278,"title":{},"content":{"21":{"position":[[37,4]]},"83":{"position":[[108,3],[174,3]]},"85":{"position":[[34,3]]},"90":{"position":[[219,3]]},"133":{"position":[[581,3]]},"241":{"position":[[160,4],[196,3],[269,3]]},"247":{"position":[[272,3]]}},"keywords":{}}],["max(0.25",{"_index":2187,"title":{},"content":{"243":{"position":[[152,9],[1395,9]]}},"keywords":{}}],["max(base_flex",{"_index":2676,"title":{},"content":{"273":{"position":[[258,13]]}},"keywords":{}}],["max_flex_hard_limit",{"_index":2402,"title":{},"content":{"252":{"position":[[576,19]]}},"keywords":{}}],["max_outlier_flex",{"_index":2251,"title":{},"content":{"245":{"position":[[137,16]]}},"keywords":{}}],["max_relaxation_attempt",{"_index":2411,"title":{},"content":{"252":{"position":[[1061,23]]}},"keywords":{}}],["max_safe_flex",{"_index":2249,"title":{},"content":{"245":{"position":[[50,13]]},"247":{"position":[[26,16]]}},"keywords":{}}],["maximum",{"_index":2103,"title":{},"content":{"237":{"position":[[243,7]]},"246":{"position":[[1582,7]]},"247":{"position":[[13,8],[396,7],[537,8]]},"248":{"position":[[526,7]]},"252":{"position":[[620,7]]}},"keywords":{}}],["mb"",{"_index":2063,"title":{},"content":{"222":{"position":[[158,9]]}},"keywords":{}}],["mccabe)target",{"_index":15,"title":{},"content":{"1":{"position":[[105,15]]}},"keywords":{}}],["mean",{"_index":2212,"title":{},"content":{"243":{"position":[[773,8],[2343,5]]},"255":{"position":[[1002,4]]},"259":{"position":[[154,7]]},"273":{"position":[[4282,5]]}},"keywords":{}}],["mean(context_residu",{"_index":2479,"title":{},"content":{"255":{"position":[[1616,23]]}},"keywords":{}}],["meaning",{"_index":2213,"title":{},"content":{"243":{"position":[[798,10]]},"246":{"position":[[482,10]]},"273":{"position":[[3909,11]]}},"keywords":{}}],["meaningeven",{"_index":2241,"title":{},"content":{"243":{"position":[[2185,11]]}},"keywords":{}}],["meaningfully.abov",{"_index":2178,"title":{},"content":{"242":{"position":[[281,18]]}},"keywords":{}}],["measur",{"_index":1593,"title":{},"content":{"146":{"position":[[650,10]]},"215":{"position":[[44,11]]}},"keywords":{}}],["mechan",{"_index":2649,"title":{},"content":{"272":{"position":[[1273,9]]},"277":{"position":[[46,10]]},"281":{"position":[[124,9]]},"301":{"position":[[535,9]]}},"keywords":{}}],["median",{"_index":2528,"title":{},"content":{"255":{"position":[[3679,6]]}},"keywords":{}}],["mediocr",{"_index":2287,"title":{},"content":{"246":{"position":[[621,8]]},"272":{"position":[[1697,8]]}},"keywords":{}}],["medium",{"_index":1553,"title":{},"content":{"143":{"position":[[311,6]]},"239":{"position":[[456,6],[770,6]]}},"keywords":{}}],["meets_dist",{"_index":2116,"title":{},"content":{"238":{"position":[[188,14],[325,14]]}},"keywords":{}}],["meets_min_dist",{"_index":2229,"title":{},"content":{"243":{"position":[[1769,18]]},"255":{"position":[[371,19]]}},"keywords":{}}],["memori",{"_index":688,"title":{"47":{"position":[[0,6]]},"77":{"position":[[20,7]]},"85":{"position":[[21,7]]},"87":{"position":[[21,7]]},"125":{"position":[[0,6]]},"201":{"position":[[0,6]]},"208":{"position":[[0,6]]},"209":{"position":[[6,6]]},"222":{"position":[[0,6]]}},"content":{"50":{"position":[[160,8],[221,8],[277,8]]},"52":{"position":[[79,6]]},"57":{"position":[[904,6]]},"67":{"position":[[470,6],[830,6]]},"75":{"position":[[90,6]]},"77":{"position":[[556,6]]},"85":{"position":[[124,6]]},"90":{"position":[[334,6]]},"92":{"position":[[15,6]]},"93":{"position":[[212,6]]},"94":{"position":[[447,6]]},"132":{"position":[[82,6]]},"163":{"position":[[141,7]]},"204":{"position":[[189,8]]},"219":{"position":[[315,6]]},"222":{"position":[[139,6]]},"274":{"position":[[101,6]]}},"keywords":{}}],["memory)if",{"_index":404,"title":{},"content":{"31":{"position":[[513,10]]}},"keywords":{}}],["memory_mb",{"_index":2059,"title":{},"content":{"222":{"position":[[63,9],[168,10]]}},"keywords":{}}],["memoryaccess",{"_index":586,"title":{},"content":{"40":{"position":[[211,12]]}},"keywords":{}}],["memoryapi",{"_index":451,"title":{},"content":{"33":{"position":[[114,9]]}},"keywords":{}}],["mental",{"_index":2407,"title":{},"content":{"252":{"position":[[960,6]]},"272":{"position":[[692,6]]}},"keywords":{}}],["merg",{"_index":308,"title":{},"content":{"23":{"position":[[121,6]]},"133":{"position":[[722,7]]}},"keywords":{}}],["messag",{"_index":298,"title":{"111":{"position":[[8,9]]}},"content":{"22":{"position":[[248,8]]},"247":{"position":[[369,8]]},"252":{"position":[[1791,9]]},"256":{"position":[[150,8]]},"267":{"position":[[797,8]]},"296":{"position":[[78,9]]}},"keywords":{}}],["messagescheck",{"_index":2614,"title":{},"content":{"267":{"position":[[1060,13]]}},"keywords":{}}],["messagewhich",{"_index":2601,"title":{},"content":{"267":{"position":[[415,12]]}},"keywords":{}}],["met",{"_index":2355,"title":{},"content":{"247":{"position":[[355,4]]}},"keywords":{}}],["metadata",{"_index":560,"title":{},"content":{"37":{"position":[[1061,8]]},"99":{"position":[[30,9]]}},"keywords":{}}],["meteringpointdata",{"_index":1196,"title":{},"content":{"99":{"position":[[194,17]]}},"keywords":{}}],["method",{"_index":641,"title":{},"content":{"43":{"position":[[34,6],[81,7]]},"69":{"position":[[119,7]]},"181":{"position":[[5,7]]},"182":{"position":[[1,6]]},"278":{"position":[[283,6]]}},"keywords":{}}],["methodsorgan",{"_index":651,"title":{},"content":{"43":{"position":[[466,16]]}},"keywords":{}}],["methodtim",{"_index":2785,"title":{},"content":{"277":{"position":[[118,11]]}},"keywords":{}}],["metric",{"_index":1922,"title":{"221":{"position":[[16,8]]}},"content":{"198":{"position":[[8,8]]}},"keywords":{}}],["midnight",{"_index":454,"title":{"60":{"position":[[0,8]]},"65":{"position":[[6,8]]},"283":{"position":[[33,10]]},"284":{"position":[[12,8]]}},"content":{"33":{"position":[[168,8]]},"51":{"position":[[489,8],[649,8]]},"56":{"position":[[937,8],[1404,8]]},"57":{"position":[[445,8]]},"67":{"position":[[76,9]]},"73":{"position":[[48,8]]},"86":{"position":[[56,8]]},"93":{"position":[[162,8]]},"100":{"position":[[340,8]]},"111":{"position":[[224,8]]},"273":{"position":[[1514,8],[2148,8],[2576,9],[3038,8],[3748,8],[4572,8],[4711,8],[4837,8]]},"278":{"position":[[543,8],[739,8],[1311,8],[1426,8]]},"279":{"position":[[680,8],[914,8]]},"280":{"position":[[378,8]]},"284":{"position":[[38,9],[189,9],[207,9],[427,9]]},"288":{"position":[[690,9]]},"299":{"position":[[153,9]]},"300":{"position":[[98,8]]},"301":{"position":[[460,8]]}},"keywords":{}}],["midnight/config",{"_index":467,"title":{},"content":{"33":{"position":[[454,15]]},"62":{"position":[[558,15]]},"67":{"position":[[391,15],[425,17]]}},"keywords":{}}],["midnightus",{"_index":2009,"title":{},"content":{"212":{"position":[[41,12]]}},"keywords":{}}],["migrat",{"_index":291,"title":{},"content":{"21":{"position":[[357,9]]},"25":{"position":[[295,9]]},"143":{"position":[[295,11]]},"146":{"position":[[393,9]]}},"keywords":{}}],["millisecond",{"_index":616,"title":{},"content":{"42":{"position":[[238,12]]}},"keywords":{}}],["min",{"_index":921,"title":{"238":{"position":[[3,3]]}},"content":{"64":{"position":[[30,4]]},"122":{"position":[[280,3]]},"237":{"position":[[335,4]]},"241":{"position":[[120,4],[242,3]]},"242":{"position":[[119,3]]},"246":{"position":[[434,3],[967,3],[1095,3],[1917,4],[2090,4],[2208,3]]},"247":{"position":[[193,4]]},"283":{"position":[[154,3]]},"301":{"position":[[54,4]]}},"keywords":{}}],["min)with",{"_index":675,"title":{},"content":{"45":{"position":[[45,8]]}},"keywords":{}}],["min/max",{"_index":2099,"title":{},"content":{"237":{"position":[[58,8]]}},"keywords":{}}],["min/max/avg",{"_index":552,"title":{},"content":{"37":{"position":[[839,11]]},"255":{"position":[[2403,12]]},"273":{"position":[[1623,13]]}},"keywords":{}}],["min/max/avg_get_24h_window_value(stat_func",{"_index":648,"title":{},"content":{"43":{"position":[[294,43]]}},"keywords":{}}],["min=10ct",{"_index":2727,"title":{},"content":{"273":{"position":[[3106,9]]}},"keywords":{}}],["min=20ct",{"_index":2724,"title":{},"content":{"273":{"position":[[2835,11]]}},"keywords":{}}],["min=25ct",{"_index":2730,"title":{},"content":{"273":{"position":[[3174,9]]}},"keywords":{}}],["min_context_s",{"_index":2490,"title":{},"content":{"255":{"position":[[2259,16]]}},"keywords":{}}],["min_context_size)calcul",{"_index":2455,"title":{},"content":{"255":{"position":[[918,28]]}},"keywords":{}}],["min_dist",{"_index":2115,"title":{"240":{"position":[[11,12]]},"243":{"position":[[18,12]]},"259":{"position":[[23,13]]}},"content":{"238":{"position":[[154,13],[291,13]]},"241":{"position":[[431,12],[505,12]]},"242":{"position":[[139,12],[312,12]]},"243":{"position":[[18,12],[276,12],[324,12],[585,12],[1025,12],[1182,12],[1612,12],[1738,12],[2157,12]]},"256":{"position":[[464,12]]},"262":{"position":[[382,13]]},"263":{"position":[[235,13],[462,13]]},"264":{"position":[[503,13]]},"267":{"position":[[233,12],[770,12],[849,12]]}},"keywords":{}}],["min_distance/100",{"_index":2118,"title":{},"content":{"238":{"position":[[235,18],[372,18]]},"242":{"position":[[82,17]]}},"keywords":{}}],["min_distance=5",{"_index":2158,"title":{},"content":{"241":{"position":[[88,16]]}},"keywords":{}}],["min_distance_from_avg=min_distance_from_avg",{"_index":2713,"title":{},"content":{"273":{"position":[[2029,44]]}},"keywords":{}}],["min_length",{"_index":2328,"title":{},"content":{"246":{"position":[[1902,10]]},"247":{"position":[[339,11]]},"256":{"position":[[344,10]]}},"keywords":{}}],["mind",{"_index":1899,"title":{},"content":{"193":{"position":[[52,5]]}},"keywords":{}}],["minim",{"_index":668,"title":{"212":{"position":[[0,8]]}},"content":{"43":{"position":[[1018,7]]},"179":{"position":[[1240,8]]},"216":{"position":[[17,8]]},"243":{"position":[[522,7]]},"273":{"position":[[3765,7]]}},"keywords":{}}],["minimum",{"_index":1667,"title":{},"content":{"156":{"position":[[1,7]]},"235":{"position":[[184,7]]},"237":{"position":[[129,7]]},"243":{"position":[[2135,8]]},"245":{"position":[[750,7],[817,7]]},"246":{"position":[[438,7],[1099,7]]},"250":{"position":[[8,7]]},"255":{"position":[[2282,7]]},"273":{"position":[[3372,7]]}},"keywords":{}}],["minor",{"_index":2308,"title":{},"content":{"246":{"position":[[1332,5]]}},"keywords":{}}],["minut",{"_index":385,"title":{"280":{"position":[[10,6]]},"294":{"position":[[9,7]]},"298":{"position":[[15,9]]}},"content":{"31":{"position":[[163,8]]},"42":{"position":[[23,7],[87,6]]},"53":{"position":[[176,9]]},"101":{"position":[[101,6],[168,7]]},"154":{"position":[[394,7]]},"159":{"position":[[181,7]]},"245":{"position":[[637,7],[692,7]]},"277":{"position":[[148,7],[303,6]]},"278":{"position":[[144,7],[1279,7]]},"279":{"position":[[312,7]]},"280":{"position":[[147,7],[313,6],[739,7],[776,6],[786,6],[888,6],[1021,6]]},"287":{"position":[[410,8]]},"290":{"position":[[108,7]]},"292":{"position":[[20,7]]},"298":{"position":[[44,6],[81,6]]},"301":{"position":[[194,7]]}},"keywords":{}}],["minute)process",{"_index":2961,"title":{},"content":{"294":{"position":[[33,18]]}},"keywords":{}}],["minute_update_entity_key",{"_index":1090,"title":{},"content":{"81":{"position":[[119,25]]}},"keywords":{}}],["minutes")if",{"_index":2839,"title":{},"content":{"279":{"position":[[1538,16]]}},"keywords":{}}],["minutesexampl",{"_index":2821,"title":{},"content":{"279":{"position":[[460,15]]}},"keywords":{}}],["minutesnot",{"_index":2791,"title":{},"content":{"278":{"position":[[299,10]]}},"keywords":{}}],["misconfigurationsimplifi",{"_index":2406,"title":{},"content":{"252":{"position":[[933,26]]}},"keywords":{}}],["mismatch",{"_index":853,"title":{},"content":{"56":{"position":[[1153,10]]},"60":{"position":[[310,8]]},"61":{"position":[[218,9]]},"67":{"position":[[328,9]]}},"keywords":{}}],["mismatch)transform",{"_index":911,"title":{},"content":{"62":{"position":[[498,23]]}},"keywords":{}}],["miss",{"_index":47,"title":{"72":{"position":[[9,7]]}},"content":{"3":{"position":[[265,7]]},"52":{"position":[[587,8]]},"56":{"position":[[1270,4]]},"65":{"position":[[177,5]]},"133":{"position":[[977,4]]},"246":{"position":[[760,5],[1242,4],[1856,4],[2117,6]]},"285":{"position":[[145,7]]}},"keywords":{}}],["missing/invalid",{"_index":908,"title":{},"content":{"61":{"position":[[87,15]]},"288":{"position":[[647,15]]}},"keywords":{}}],["mitig",{"_index":1589,"title":{},"content":{"146":{"position":[[553,10]]}},"keywords":{}}],["mitigation"",{"_index":1751,"title":{},"content":{"171":{"position":[[230,16]]}},"keywords":{}}],["mkdir",{"_index":1623,"title":{},"content":{"149":{"position":[[509,5]]}},"keywords":{}}],["mm",{"_index":1578,"title":{},"content":{"146":{"position":[[164,2],[193,2]]}},"keywords":{}}],["mno7890](link",{"_index":1871,"title":{},"content":{"181":{"position":[[412,15]]}},"keywords":{}}],["mode",{"_index":1491,"title":{},"content":{"135":{"position":[[142,4]]},"232":{"position":[[33,4]]},"233":{"position":[[56,5]]},"245":{"position":[[328,4]]},"252":{"position":[[571,4],[1927,5]]}},"keywords":{}}],["mode!"recommend",{"_index":2375,"title":{},"content":{"248":{"position":[[333,26]]}},"keywords":{}}],["mode)hassfest",{"_index":1499,"title":{},"content":{"135":{"position":[[298,13]]}},"keywords":{}}],["model",{"_index":919,"title":{},"content":{"62":{"position":[[777,6]]},"252":{"position":[[967,5]]}},"keywords":{}}],["modelne",{"_index":2643,"title":{},"content":{"272":{"position":[[699,10]]}},"keywords":{}}],["moder",{"_index":2200,"title":{},"content":{"243":{"position":[[440,8]]}},"keywords":{}}],["modern",{"_index":950,"title":{},"content":{"67":{"position":[[876,6]]},"231":{"position":[[100,6]]}},"keywords":{}}],["modif",{"_index":1497,"title":{},"content":{"135":{"position":[[280,13]]}},"keywords":{}}],["modifi",{"_index":1664,"title":{},"content":{"154":{"position":[[179,6]]},"160":{"position":[[106,9]]}},"keywords":{}}],["modified)until",{"_index":847,"title":{},"content":{"56":{"position":[[864,14]]}},"keywords":{}}],["modul",{"_index":67,"title":{},"content":{"3":{"position":[[590,6],[791,6],[1014,7],[1178,6],[1430,6]]},"37":{"position":[[377,8]]},"46":{"position":[[221,6]]},"143":{"position":[[127,7],[229,6]]},"146":{"position":[[366,6]]},"150":{"position":[[173,6],[697,6]]}},"keywords":{}}],["module."""",{"_index":81,"title":{},"content":{"3":{"position":[[945,25]]}},"keywords":{}}],["modules)planning/binari",{"_index":1722,"title":{},"content":{"166":{"position":[[136,23]]}},"keywords":{}}],["modules)planning/coordin",{"_index":1724,"title":{},"content":{"166":{"position":[[215,28]]}},"keywords":{}}],["modulesal",{"_index":53,"title":{},"content":{"3":{"position":[[399,10]]}},"keywords":{}}],["modulescomprehens",{"_index":1459,"title":{},"content":{"133":{"position":[[829,20]]}},"keywords":{}}],["moduleseach",{"_index":1631,"title":{},"content":{"150":{"position":[[161,11]]}},"keywords":{}}],["monitor",{"_index":1166,"title":{"220":{"position":[[0,10]]}},"content":{"94":{"position":[[502,7]]},"212":{"position":[[112,7]]}},"keywords":{}}],["more",{"_index":793,"title":{},"content":{"54":{"position":[[200,4]]},"152":{"position":[[204,4]]},"196":{"position":[[405,4]]},"246":{"position":[[1003,4],[1152,4],[1390,5],[1963,4]]},"262":{"position":[[169,5]]},"267":{"position":[[167,4]]},"272":{"position":[[2008,4],[2141,4]]}},"keywords":{}}],["morn",{"_index":2515,"title":{},"content":{"255":{"position":[[3193,8]]}},"keywords":{}}],["morning/even",{"_index":2470,"title":{},"content":{"255":{"position":[[1361,16]]}},"keywords":{}}],["morning/evening)short",{"_index":2316,"title":{},"content":{"246":{"position":[[1545,24]]}},"keywords":{}}],["move",{"_index":1554,"title":{},"content":{"143":{"position":[[392,6]]},"154":{"position":[[61,4],[270,4],[447,5]]},"162":{"position":[[231,4]]},"194":{"position":[[423,4]]},"255":{"position":[[3151,6]]}},"keywords":{}}],["moved)architectur",{"_index":1551,"title":{},"content":{"143":{"position":[[186,19]]}},"keywords":{}}],["much",{"_index":2224,"title":{},"content":{"243":{"position":[[1365,4]]},"272":{"position":[[2136,4]]}},"keywords":{}}],["multi",{"_index":2095,"title":{"251":{"position":[[0,5]]}},"content":{"235":{"position":[[527,5]]},"269":{"position":[[312,5]]},"272":{"position":[[1509,5]]}},"keywords":{}}],["multi_replace_string_in_fil",{"_index":101,"title":{},"content":{"3":{"position":[[1358,28]]}},"keywords":{}}],["multipl",{"_index":52,"title":{},"content":{"3":{"position":[[390,8]]},"55":{"position":[[817,8]]},"80":{"position":[[364,8]]},"94":{"position":[[581,8]]},"143":{"position":[[383,8]]},"147":{"position":[[40,8]]},"206":{"position":[[9,8]]},"264":{"position":[[100,8]]},"272":{"position":[[1573,8]]},"273":{"position":[[1367,8]]}},"keywords":{}}],["mv",{"_index":1612,"title":{},"content":{"149":{"position":[[111,2],[535,2]]},"179":{"position":[[1797,2]]}},"keywords":{}}],["n",{"_index":1168,"title":{},"content":{"94":{"position":[[522,1]]},"250":{"position":[[180,1]]}},"keywords":{}}],["name",{"_index":30,"title":{"2":{"position":[[0,6]]},"3":{"position":[[6,6]]}},"content":{"3":{"position":[[45,4],[105,6],[1333,6]]},"14":{"position":[[38,4],[99,7]]},"19":{"position":[[29,4]]}},"keywords":{}}],["namedtupl",{"_index":60,"title":{},"content":{"3":{"position":[[488,12],[692,11]]}},"keywords":{}}],["namescustom",{"_index":581,"title":{},"content":{"40":{"position":[[78,11]]},"52":{"position":[[282,11]]}},"keywords":{}}],["natur",{"_index":2466,"title":{},"content":{"255":{"position":[[1216,7]]},"273":{"position":[[1523,9],[4759,7]]},"278":{"position":[[1130,7]]},"287":{"position":[[380,7]]}},"keywords":{}}],["navig",{"_index":1629,"title":{},"content":{"150":{"position":[[112,8]]}},"keywords":{}}],["nb",{"_index":1532,"title":{},"content":{"137":{"position":[[532,3]]}},"keywords":{}}],["nderungen",{"_index":2921,"title":{},"content":{"286":{"position":[[118,10]]}},"keywords":{}}],["necessari",{"_index":2793,"title":{},"content":{"278":{"position":[[442,9]]}},"keywords":{}}],["need",{"_index":110,"title":{},"content":{"3":{"position":[[1481,7]]},"22":{"position":[[193,7]]},"51":{"position":[[1258,6]]},"62":{"position":[[743,6]]},"83":{"position":[[199,7],[338,7]]},"133":{"position":[[1048,4]]},"143":{"position":[[23,5],[533,7]]},"146":{"position":[[254,4]]},"147":{"position":[[131,4]]},"169":{"position":[[49,4]]},"171":{"position":[[147,6]]},"178":{"position":[[170,6]]},"182":{"position":[[161,4],[364,5]]},"194":{"position":[[96,4]]},"195":{"position":[[225,6]]},"196":{"position":[[487,6]]},"205":{"position":[[21,7]]},"213":{"position":[[18,7]]},"246":{"position":[[214,4],[2334,4],[2641,4]]},"252":{"position":[[1040,7],[1246,4]]},"253":{"position":[[274,5]]},"265":{"position":[[195,5]]},"266":{"position":[[189,5]]},"267":{"position":[[162,4]]},"269":{"position":[[145,6]]},"272":{"position":[[283,4],[490,4],[600,7],[2216,4]]},"273":{"position":[[895,4],[1418,5]]},"278":{"position":[[425,7],[811,4],[1444,6]]},"279":{"position":[[1984,4]]},"280":{"position":[[771,4]]},"283":{"position":[[190,6]]},"284":{"position":[[109,6],[275,7]]},"288":{"position":[[243,6],[336,6]]}},"keywords":{}}],["needed)"",{"_index":2968,"title":{},"content":{"296":{"position":[[194,13]]}},"keywords":{}}],["needed)catch",{"_index":2486,"title":{},"content":{"255":{"position":[[1948,14]]}},"keywords":{}}],["needed)tim",{"_index":2982,"title":{},"content":{"301":{"position":[[97,12]]}},"keywords":{}}],["neededlarg",{"_index":1757,"title":{},"content":{"172":{"position":[[159,11]]}},"keywords":{}}],["neededlow",{"_index":2620,"title":{},"content":{"269":{"position":[[107,9]]}},"keywords":{}}],["neededmedium",{"_index":1754,"title":{},"content":{"172":{"position":[[90,12]]}},"keywords":{}}],["neededprev",{"_index":2242,"title":{},"content":{"243":{"position":[[2231,14]]}},"keywords":{}}],["neededtyp",{"_index":2498,"title":{},"content":{"255":{"position":[[2656,13]]}},"keywords":{}}],["needscould",{"_index":2668,"title":{},"content":{"272":{"position":[[2073,10]]}},"keywords":{}}],["neg",{"_index":2256,"title":{},"content":{"245":{"position":[[392,9]]}},"keywords":{}}],["neglig",{"_index":949,"title":{},"content":{"67":{"position":[[860,11]]}},"keywords":{}}],["nest",{"_index":2028,"title":{},"content":{"216":{"position":[[37,6]]}},"keywords":{}}],["net",{"_index":1875,"title":{"185":{"position":[[41,5]]}},"content":{"182":{"position":[[132,4]]}},"keywords":{}}],["never",{"_index":457,"title":{},"content":{"33":{"position":[[245,5]]},"62":{"position":[[602,5]]},"67":{"position":[[159,5]]}},"keywords":{}}],["new",{"_index":195,"title":{},"content":{"14":{"position":[[119,3]]},"17":{"position":[[26,3],[135,3]]},"18":{"position":[[108,3],[324,3]]},"25":{"position":[[258,3]]},"31":{"position":[[1021,3]]},"42":{"position":[[418,3]]},"51":{"position":[[826,3]]},"56":{"position":[[946,4],[1413,4]]},"59":{"position":[[469,3]]},"60":{"position":[[322,3],[367,3]]},"61":{"position":[[120,3],[164,4]]},"65":{"position":[[75,3]]},"66":{"position":[[199,4]]},"84":{"position":[[99,3]]},"131":{"position":[[389,3]]},"135":{"position":[[472,3]]},"143":{"position":[[214,4]]},"176":{"position":[[412,3]]},"178":{"position":[[83,3]]},"180":{"position":[[257,3]]},"181":{"position":[[76,3]]},"185":{"position":[[482,3]]},"194":{"position":[[218,3]]},"196":{"position":[[83,3]]},"213":{"position":[[228,3]]},"272":{"position":[[1423,4]]},"273":{"position":[[3270,3]]},"279":{"position":[[482,3],[1280,3]]},"285":{"position":[[274,4]]}},"keywords":{}}],["new=%s"",{"_index":1366,"title":{},"content":{"121":{"position":[[227,13]]}},"keywords":{}}],["new_valu",{"_index":1369,"title":{},"content":{"121":{"position":[[282,10]]}},"keywords":{}}],["newli",{"_index":2908,"title":{},"content":{"285":{"position":[[360,5]]}},"keywords":{}}],["next",{"_index":637,"title":{},"content":{"42":{"position":[[648,4],[745,4]]},"174":{"position":[[451,4]]},"273":{"position":[[3502,4],[4810,4]]},"279":{"position":[[521,4],[1579,4]]}},"keywords":{}}],["next_interval_price)binari",{"_index":2842,"title":{},"content":{"279":{"position":[[1756,26]]}},"keywords":{}}],["nice",{"_index":1095,"title":{"82":{"position":[[23,5]]},"90":{"position":[[32,5]]},"93":{"position":[[3,4]]}},"content":{},"keywords":{}}],["nl",{"_index":1533,"title":{},"content":{"137":{"position":[[536,3]]}},"keywords":{}}],["node",{"_index":1204,"title":{"103":{"position":[[6,4]]}},"content":{"100":{"position":[[166,5]]}},"keywords":{}}],["node.j",{"_index":2085,"title":{},"content":{"231":{"position":[[199,8]]}},"keywords":{}}],["non",{"_index":774,"title":{},"content":{"52":{"position":[[640,3],[968,3]]},"207":{"position":[[328,3]]},"255":{"position":[[3296,3]]},"270":{"position":[[118,3]]},"272":{"position":[[1215,3]]},"273":{"position":[[613,3],[869,3]]}},"keywords":{}}],["none",{"_index":732,"title":{},"content":{"51":{"position":[[765,5],[797,4],[860,4]]},"55":{"position":[[487,5]]},"56":{"position":[[1050,5],[1079,4],[1110,4]]},"59":{"position":[[181,4],[245,4],[325,4],[376,4],[402,4]]},"60":{"position":[[129,4],[157,4],[232,4],[267,4]]},"77":{"position":[[1125,4]]},"204":{"position":[[639,4],[646,4],[709,5],[839,4]]},"205":{"position":[[86,5],[291,4]]},"209":{"position":[[167,4],[186,4]]},"215":{"position":[[154,4]]},"279":{"position":[[658,5]]},"280":{"position":[[293,5]]}},"keywords":{}}],["normal",{"_index":858,"title":{"262":{"position":[[12,6]]},"283":{"position":[[12,6]]}},"content":{"56":{"position":[[1321,6]]},"67":{"position":[[672,6]]},"103":{"position":[[313,7]]},"182":{"position":[[40,6]]},"239":{"position":[[81,7]]},"255":{"position":[[3840,6]]},"272":{"position":[[418,6]]},"279":{"position":[[949,6]]},"285":{"position":[[32,6],[326,6]]},"297":{"position":[[101,6]]}},"keywords":{}}],["normal/flat/volatile/bimodal)appli",{"_index":2623,"title":{},"content":{"269":{"position":[[250,35]]},"272":{"position":[[1021,35]]}},"keywords":{}}],["norwegian",{"_index":1238,"title":{},"content":{"104":{"position":[[104,10]]}},"keywords":{}}],["notabl",{"_index":2246,"title":{},"content":{"243":{"position":[[2349,7]]}},"keywords":{}}],["note",{"_index":84,"title":{"175":{"position":[[8,5]]},"254":{"position":[[15,6]]}},"content":{"3":{"position":[[1084,5]]},"135":{"position":[[527,5],[552,5]]},"141":{"position":[[59,5]]},"145":{"position":[[136,5]]},"150":{"position":[[678,5]]},"176":{"position":[[442,5]]},"178":{"position":[[31,5]]},"179":{"position":[[32,5],[170,5],[236,5],[311,5],[443,5],[541,5],[644,5],[724,5]]},"180":{"position":[[19,5],[287,5]]},"182":{"position":[[283,5]]},"184":{"position":[[376,5]]},"192":{"position":[[9,5]]},"196":{"position":[[286,5]]},"224":{"position":[[377,5]]},"247":{"position":[[854,5]]}},"keywords":{}}],["notes"",{"_index":1803,"title":{},"content":{"178":{"position":[[144,11]]}},"keywords":{}}],["notifi",{"_index":2798,"title":{},"content":{"278":{"position":[[713,6]]},"279":{"position":[[888,6],[1003,6]]},"280":{"position":[[306,6]]},"281":{"position":[[322,8],[937,6],[1115,6]]},"284":{"position":[[350,6]]},"285":{"position":[[254,6],[513,8]]},"293":{"position":[[59,7]]},"294":{"position":[[57,7]]},"301":{"position":[[644,8]]}},"keywords":{}}],["notifications/alert",{"_index":2306,"title":{},"content":{"246":{"position":[[1282,20]]}},"keywords":{}}],["nov",{"_index":86,"title":{},"content":{"3":{"position":[[1100,4]]},"37":{"position":[[90,3]]},"43":{"position":[[53,3]]},"150":{"position":[[33,4]]},"239":{"position":[[1614,4]]},"273":{"position":[[3811,4]]}},"keywords":{}}],["novemb",{"_index":2388,"title":{},"content":{"252":{"position":[[24,9],[1373,8]]}},"keywords":{}}],["now",{"_index":136,"title":{},"content":{"6":{"position":[[205,3]]},"150":{"position":[[275,4]]},"196":{"position":[[151,3]]},"279":{"position":[[637,4],[1811,3]]},"280":{"position":[[272,4]]}},"keywords":{}}],["o",{"_index":1392,"title":{},"content":{"126":{"position":[[21,1]]}},"keywords":{}}],["o(1",{"_index":2005,"title":{},"content":{"210":{"position":[[109,6]]}},"keywords":{}}],["o(n",{"_index":2003,"title":{},"content":{"210":{"position":[[46,6]]}},"keywords":{}}],["object",{"_index":825,"title":{},"content":{"56":{"position":[[266,7]]},"269":{"position":[[318,9]]},"272":{"position":[[1515,9]]}},"keywords":{}}],["observ",{"_index":1119,"title":{},"content":{"86":{"position":[[90,9]]},"283":{"position":[[447,12]]},"284":{"position":[[556,12]]},"285":{"position":[[419,12]]}},"keywords":{}}],["obviou",{"_index":2648,"title":{},"content":{"272":{"position":[[1219,7]]}},"keywords":{}}],["occasion",{"_index":1463,"title":{},"content":{"133":{"position":[[964,12]]}},"keywords":{}}],["occur",{"_index":2174,"title":{},"content":{"242":{"position":[[165,6]]}},"keywords":{}}],["off",{"_index":948,"title":{},"content":{"67":{"position":[[823,5]]}},"keywords":{}}],["offlin",{"_index":756,"title":{},"content":{"51":{"position":[[1377,7]]}},"keywords":{}}],["old",{"_index":1060,"title":{"186":{"position":[[23,4]]}},"content":{"78":{"position":[[301,3]]},"79":{"position":[[256,3]]},"80":{"position":[[199,3]]},"161":{"position":[[70,3]]},"279":{"position":[[554,3]]}},"keywords":{}}],["old=%",{"_index":1365,"title":{},"content":{"121":{"position":[[220,6]]}},"keywords":{}}],["omit",{"_index":62,"title":{},"content":{"3":{"position":[[541,8]]}},"keywords":{}}],["on",{"_index":1133,"title":{},"content":{"87":{"position":[[124,3]]},"152":{"position":[[186,3]]},"184":{"position":[[35,4]]},"246":{"position":[[630,4]]},"270":{"position":[[201,3]]},"273":{"position":[[994,3],[1428,3]]}},"keywords":{}}],["onc",{"_index":773,"title":{"160":{"position":[[26,5]]}},"content":{"52":{"position":[[615,4]]},"55":{"position":[[302,4]]},"65":{"position":[[330,4]]},"67":{"position":[[599,4]]},"148":{"position":[[1,4]]},"206":{"position":[[27,5]]},"278":{"position":[[1305,4]]}},"keywords":{}}],["onesmix",{"_index":327,"title":{},"content":{"25":{"position":[[212,10]]}},"keywords":{}}],["only)third",{"_index":117,"title":{},"content":{"4":{"position":[[31,10]]}},"keywords":{}}],["onlyperiodcalcul",{"_index":886,"title":{},"content":{"57":{"position":[[765,21]]}},"keywords":{}}],["onlyrefactor",{"_index":199,"title":{},"content":{"14":{"position":[[169,13]]}},"keywords":{}}],["open",{"_index":172,"title":{},"content":{"12":{"position":[[135,4]]},"19":{"position":[[41,4]]},"75":{"position":[[366,4]]},"230":{"position":[[111,4]]}},"keywords":{}}],["oper",{"_index":685,"title":{"64":{"position":[[8,9]]},"191":{"position":[[10,11]]},"206":{"position":[[5,11]]},"283":{"position":[[19,9]]}},"content":{"46":{"position":[[190,10]]},"51":{"position":[[1385,9]]},"56":{"position":[[1328,9]]},"206":{"position":[[66,10]]}},"keywords":{}}],["operation)98",{"_index":944,"title":{},"content":{"67":{"position":[[679,13]]}},"keywords":{}}],["optim",{"_index":447,"title":{"46":{"position":[[4,13]]},"197":{"position":[[12,12]]},"203":{"position":[[0,12]]},"211":{"position":[[12,13]]}},"content":{"33":{"position":[[55,7]]},"46":{"position":[[1,12],[208,12]]},"245":{"position":[[305,7]]},"246":{"position":[[110,12]]},"248":{"position":[[41,8],[398,8]]},"252":{"position":[[2180,7]]},"269":{"position":[[185,7],[328,13]]},"272":{"position":[[883,7],[1525,12],[1871,12]]},"273":{"position":[[497,12]]}},"keywords":{}}],["optimizedboth",{"_index":1711,"title":{},"content":{"163":{"position":[[579,13]]}},"keywords":{}}],["optimizeddocs/develop",{"_index":1710,"title":{},"content":{"163":{"position":[[525,27]]}},"keywords":{}}],["option",{"_index":765,"title":{"59":{"position":[[13,7]]},"93":{"position":[[22,11]]},"177":{"position":[[11,8]]}},"content":{"52":{"position":[[266,8]]},"55":{"position":[[373,7]]},"59":{"position":[[12,7]]},"62":{"position":[[306,8],[434,7]]},"66":{"position":[[1,7]]},"67":{"position":[[199,7],[231,8]]},"77":{"position":[[1496,7]]},"78":{"position":[[135,7]]},"149":{"position":[[1,6],[298,6],[424,6]]},"157":{"position":[[122,7]]},"179":{"position":[[1052,8]]},"204":{"position":[[551,7]]},"246":{"position":[[2041,6],[2232,6],[2424,6]]}},"keywords":{}}],["options.get",{"_index":781,"title":{},"content":{"53":{"position":[[118,13]]}},"keywords":{}}],["optionsaffect",{"_index":2130,"title":{},"content":{"239":{"position":[[514,15]]}},"keywords":{}}],["optionsdiffer",{"_index":2342,"title":{},"content":{"246":{"position":[[2507,16]]}},"keywords":{}}],["orchestr",{"_index":493,"title":{},"content":{"36":{"position":[[137,14]]},"235":{"position":[[601,13]]},"255":{"position":[[404,14]]}},"keywords":{}}],["order",{"_index":113,"title":{"4":{"position":[[7,6]]}},"content":{"253":{"position":[[24,6]]}},"keywords":{}}],["organ",{"_index":640,"title":{},"content":{"43":{"position":[[9,9]]},"149":{"position":[[622,9]]}},"keywords":{}}],["origin",{"_index":269,"title":{},"content":{"19":{"position":[[10,6]]},"41":{"position":[[73,8]]},"176":{"position":[[351,6]]},"180":{"position":[[204,6]]},"184":{"position":[[166,6]]},"186":{"position":[[193,6]]},"194":{"position":[[123,6],[466,6]]},"243":{"position":[[266,9],[574,9]]},"253":{"position":[[32,8]]},"255":{"position":[[2334,8],[2420,8]]},"265":{"position":[[233,8]]}},"keywords":{}}],["original_min_dist",{"_index":2191,"title":{},"content":{"243":{"position":[[213,21]]}},"keywords":{}}],["os",{"_index":2057,"title":{},"content":{"222":{"position":[[22,2]]}},"keywords":{}}],["otherwis",{"_index":2955,"title":{},"content":{"292":{"position":[[206,10]]}},"keywords":{}}],["out",{"_index":1892,"title":{},"content":{"187":{"position":[[302,3]]},"246":{"position":[[2277,3]]},"279":{"position":[[1880,3]]}},"keywords":{}}],["outcom",{"_index":2495,"title":{},"content":{"255":{"position":[[2538,7]]}},"keywords":{}}],["outdat",{"_index":1064,"title":{},"content":{"78":{"position":[[392,8]]},"161":{"position":[[120,8]]}},"keywords":{}}],["outlier",{"_index":2252,"title":{},"content":{"245":{"position":[[177,7]]},"247":{"position":[[519,7],[578,7],[628,7],[927,7]]},"255":{"position":[[583,7],[1294,8],[2771,7],[3098,7]]},"264":{"position":[[290,7]]},"267":{"position":[[1004,7]]}},"keywords":{}}],["outlin",{"_index":1755,"title":{},"content":{"172":{"position":[[140,8]]}},"keywords":{}}],["output",{"_index":1325,"title":{"116":{"position":[[21,7]]},"181":{"position":[[3,6]]}},"content":{"116":{"position":[[114,6]]},"255":{"position":[[2727,7]]}},"keywords":{}}],["outsid",{"_index":1841,"title":{},"content":{"179":{"position":[[1452,8]]}},"keywords":{}}],["over",{"_index":997,"title":{},"content":{"75":{"position":[[120,4]]},"86":{"position":[[100,4]]},"246":{"position":[[780,4],[1396,4]]},"252":{"position":[[139,4]]},"255":{"position":[[3146,4],[3339,4],[3527,4]]},"272":{"position":[[1109,4]]},"273":{"position":[[482,4]]},"278":{"position":[[1270,4]]},"287":{"position":[[401,4]]}},"keywords":{}}],["overal",{"_index":988,"title":{},"content":{"73":{"position":[[84,7]]},"300":{"position":[[16,7]]}},"keywords":{}}],["overhead",{"_index":470,"title":{},"content":{"33":{"position":[[498,9]]},"67":{"position":[[477,9]]}},"keywords":{}}],["overhead)us",{"_index":2277,"title":{},"content":{"246":{"position":[[332,13]]}},"keywords":{}}],["overheadtyp",{"_index":689,"title":{},"content":{"47":{"position":[[40,15]]}},"keywords":{}}],["overkil",{"_index":2534,"title":{},"content":{"255":{"position":[[3878,8]]}},"keywords":{}}],["overlap)sensor",{"_index":1093,"title":{},"content":{"81":{"position":[[194,14]]}},"keywords":{}}],["overload",{"_index":2926,"title":{},"content":{"287":{"position":[[93,9],[145,9]]},"299":{"position":[[257,9]]}},"keywords":{}}],["overrid",{"_index":844,"title":{},"content":{"56":{"position":[[777,9]]},"80":{"position":[[189,9],[338,8]]}},"keywords":{}}],["overview",{"_index":444,"title":{"33":{"position":[[0,9]]},"50":{"position":[[0,9]]},"235":{"position":[[0,9]]},"277":{"position":[[0,9]]}},"content":{},"keywords":{}}],["overviewcach",{"_index":2782,"title":{},"content":{"274":{"position":[[52,15]]}},"keywords":{}}],["p",{"_index":1624,"title":{},"content":{"149":{"position":[[516,1]]},"255":{"position":[[1573,2]]}},"keywords":{}}],["packag",{"_index":541,"title":{},"content":{"37":{"position":[[611,7]]},"136":{"position":[[298,9]]},"143":{"position":[[140,8],[219,9]]},"150":{"position":[[13,7],[138,7],[515,7]]},"231":{"position":[[77,7]]}},"keywords":{}}],["packages"",{"_index":1314,"title":{},"content":{"113":{"position":[[472,14]]}},"keywords":{}}],["pain",{"_index":1581,"title":{},"content":{"146":{"position":[[277,4]]}},"keywords":{}}],["parallel",{"_index":1085,"title":{},"content":{"80":{"position":[[373,8]]}},"keywords":{}}],["paramet",{"_index":1083,"title":{},"content":{"80":{"position":[[281,10]]},"100":{"position":[[211,11]]},"273":{"position":[[1184,9]]}},"keywords":{}}],["parametersminut",{"_index":1079,"title":{},"content":{"80":{"position":[[102,16]]}},"keywords":{}}],["parameterstim",{"_index":1080,"title":{},"content":{"80":{"position":[[152,16]]}},"keywords":{}}],["pareto",{"_index":2660,"title":{},"content":{"272":{"position":[[1864,6]]}},"keywords":{}}],["pars",{"_index":536,"title":{},"content":{"37":{"position":[[528,7]]},"179":{"position":[[41,5],[560,7],[951,7]]}},"keywords":{}}],["part",{"_index":2480,"title":{},"content":{"255":{"position":[[1749,5]]},"270":{"position":[[205,4]]},"273":{"position":[[998,4]]}},"keywords":{}}],["parti",{"_index":118,"title":{},"content":{"4":{"position":[[42,5]]}},"keywords":{}}],["particularli",{"_index":2091,"title":{},"content":{"235":{"position":[[115,12]]}},"keywords":{}}],["partschang",{"_index":1555,"title":{},"content":{"143":{"position":[[399,12]]}},"keywords":{}}],["pass",{"_index":82,"title":{},"content":{"3":{"position":[[971,4],[1077,4]]},"21":{"position":[[290,6],[311,6]]},"22":{"position":[[63,4],[99,6],[137,6]]},"31":{"position":[[437,6],[819,6]]},"77":{"position":[[1585,6]]},"154":{"position":[[480,6]]},"156":{"position":[[42,6]]},"173":{"position":[[100,5]]},"236":{"position":[[59,6]]},"241":{"position":[[371,7]]},"255":{"position":[[1919,4],[2568,4],[3522,4]]},"273":{"position":[[2637,6],[2691,5],[2949,6]]},"288":{"position":[[385,7]]}},"keywords":{}}],["past",{"_index":333,"title":{},"content":{"25":{"position":[[314,6]]}},"keywords":{}}],["path",{"_index":292,"title":{},"content":{"21":{"position":[[367,5]]},"79":{"position":[[356,5]]},"252":{"position":[[718,4]]},"278":{"position":[[1013,4]]},"279":{"position":[[990,5]]},"283":{"position":[[243,5]]},"284":{"position":[[544,5]]},"288":{"position":[[558,4]]},"292":{"position":[[49,5],[100,5]]},"296":{"position":[[215,4]]}},"keywords":{}}],["pathcopi",{"_index":332,"title":{},"content":{"25":{"position":[[305,8]]}},"keywords":{}}],["patient",{"_index":367,"title":{},"content":{"28":{"position":[[150,8]]}},"keywords":{}}],["pattern",{"_index":123,"title":{"5":{"position":[[9,9]]},"37":{"position":[[32,9]]},"39":{"position":[[4,9]]},"43":{"position":[[14,7]]},"74":{"position":[[18,8]]},"82":{"position":[[37,10]]},"92":{"position":[[15,8]]},"118":{"position":[[12,9]]},"203":{"position":[[13,9]]},"258":{"position":[[7,7]]},"259":{"position":[[7,7]]},"260":{"position":[[7,7]]},"281":{"position":[[9,7]]}},"content":{"22":{"position":[[223,8]]},"25":{"position":[[145,8]]},"37":{"position":[[37,7],[1275,8]]},"43":{"position":[[1155,7]]},"52":{"position":[[628,8]]},"82":{"position":[[7,8]]},"83":{"position":[[33,7]]},"90":{"position":[[67,7],[126,7],[415,7]]},"92":{"position":[[38,8]]},"93":{"position":[[85,7],[352,9]]},"94":{"position":[[113,7]]},"95":{"position":[[24,9]]},"116":{"position":[[149,7],[178,7]]},"131":{"position":[[89,9]]},"132":{"position":[[266,8],[327,8]]},"133":{"position":[[123,7],[809,8],[1035,8],[1286,8]]},"137":{"position":[[23,8]]},"149":{"position":[[81,8]]},"163":{"position":[[149,9],[325,8]]},"233":{"position":[[172,8]]},"255":{"position":[[1963,8]]},"269":{"position":[[242,7],[286,7]]},"272":{"position":[[1013,7],[1057,7],[1227,8]]},"273":{"position":[[1293,8]]},"274":{"position":[[124,9]]},"281":{"position":[[271,7],[1052,8],[1205,7]]},"289":{"position":[[15,8]]},"301":{"position":[[603,7]]}},"keywords":{}}],["patternhandl",{"_index":2813,"title":{},"content":{"278":{"position":[[1668,14]]}},"keywords":{}}],["patterns)complex",{"_index":2651,"title":{},"content":{"272":{"position":[[1332,19]]}},"keywords":{}}],["patternscod",{"_index":1431,"title":{},"content":{"132":{"position":[[145,12]]}},"keywords":{}}],["patternscould",{"_index":2647,"title":{},"content":{"272":{"position":[[1192,13]]}},"keywords":{}}],["patternspreserv",{"_index":2522,"title":{},"content":{"255":{"position":[[3439,17]]}},"keywords":{}}],["patternsproject",{"_index":1437,"title":{},"content":{"132":{"position":[[241,15]]}},"keywords":{}}],["peak",{"_index":841,"title":{},"content":{"56":{"position":[[725,4]]},"125":{"position":[[69,4],[171,5]]},"201":{"position":[[65,4],[184,4]]},"237":{"position":[[192,4]]},"238":{"position":[[256,4]]},"243":{"position":[[1924,4]]},"245":{"position":[[406,4]]},"246":{"position":[[18,4],[815,4],[1231,5],[1462,4],[1534,4],[1628,4],[1839,4],[1992,4],[2565,4]]},"255":{"position":[[3498,4]]}},"keywords":{}}],["peak=%.2fmb"",{"_index":1949,"title":{},"content":{"201":{"position":[[146,18]]}},"keywords":{}}],["peak=%d"",{"_index":1389,"title":{},"content":{"125":{"position":[[147,14]]}},"keywords":{}}],["peak_level_filt",{"_index":845,"title":{},"content":{"56":{"position":[[787,17]]}},"keywords":{}}],["peaks)algorithm",{"_index":2471,"title":{},"content":{"255":{"position":[[1378,16]]}},"keywords":{}}],["peaksmov",{"_index":2529,"title":{},"content":{"255":{"position":[[3743,11]]}},"keywords":{}}],["per",{"_index":472,"title":{},"content":{"33":{"position":[[515,3]]},"47":{"position":[[1,3],[148,3]]},"51":{"position":[[1334,3]]},"52":{"position":[[882,3],[891,3]]},"53":{"position":[[73,4]]},"55":{"position":[[320,3],[694,3],[765,3],[832,3]]},"56":{"position":[[1843,3]]},"57":{"position":[[969,3]]},"65":{"position":[[335,3]]},"67":{"position":[[494,3],[604,3],[851,3]]},"87":{"position":[[133,3]]},"101":{"position":[[53,3],[62,3],[97,3],[258,3]]},"137":{"position":[[295,3]]},"170":{"position":[[229,3]]},"198":{"position":[[92,3],[177,3],[204,3],[212,3]]},"216":{"position":[[59,3],[217,3]]},"245":{"position":[[496,3],[580,3]]},"250":{"position":[[24,3]]},"252":{"position":[[117,3],[188,3]]},"253":{"position":[[1,3]]},"272":{"position":[[1088,3]]},"273":{"position":[[2109,3],[3830,3],[4946,3]]}},"keywords":{}}],["percentag",{"_index":2420,"title":{},"content":{"252":{"position":[[1420,10]]},"262":{"position":[[335,10]]},"263":{"position":[[415,10]]},"273":{"position":[[218,10],[3940,10]]}},"keywords":{}}],["perfect",{"_index":2298,"title":{},"content":{"246":{"position":[[1022,7]]}},"keywords":{}}],["perform",{"_index":448,"title":{"44":{"position":[[0,11]]},"63":{"position":[[0,11]]},"123":{"position":[[0,11]]},"197":{"position":[[0,11]]},"198":{"position":[[0,11]]},"217":{"position":[[8,12]]},"221":{"position":[[4,11]]},"291":{"position":[[0,11]]}},"content":{"33":{"position":[[63,12]]},"55":{"position":[[629,11]]},"56":{"position":[[1476,11]]},"80":{"position":[[391,11]]},"81":{"position":[[349,11]]},"200":{"position":[[9,11]]},"255":{"position":[[2547,12]]},"278":{"position":[[1453,8]]},"284":{"position":[[283,7]]}},"keywords":{}}],["period",{"_index":418,"title":{"56":{"position":[[3,6]]},"70":{"position":[[9,6]]},"122":{"position":[[0,6]]},"234":{"position":[[0,6]]}},"content":{"31":{"position":[[788,6],[1008,7],[1162,6]]},"33":{"position":[[315,6]]},"36":{"position":[[321,6],[378,6],[512,6]]},"37":{"position":[[1020,6]]},"46":{"position":[[81,6],[127,6]]},"55":{"position":[[861,6]]},"56":{"position":[[95,6],[259,6],[323,7],[1497,6],[1710,6],[1825,7]]},"57":{"position":[[310,7],[320,7],[549,7],[569,6],[795,6],[942,6]]},"60":{"position":[[274,6]]},"61":{"position":[[182,6],[230,7]]},"62":{"position":[[221,6],[242,6]]},"64":{"position":[[119,6],[212,7]]},"65":{"position":[[143,6]]},"66":{"position":[[170,6]]},"67":{"position":[[267,6],[629,6]]},"70":{"position":[[139,6]]},"78":{"position":[[175,6],[324,6]]},"111":{"position":[[269,6],[367,8],[465,7],[527,6]]},"114":{"position":[[191,6]]},"118":{"position":[[201,6],[258,7],[319,6],[329,8]]},"122":{"position":[[17,6]]},"218":{"position":[[221,7]]},"235":{"position":[[85,6],[298,6],[583,6]]},"236":{"position":[[1,6]]},"238":{"position":[[17,7]]},"239":{"position":[[19,7],[559,6],[831,6],[1454,6],[1645,6]]},"243":{"position":[[606,7]]},"245":{"position":[[101,6]]},"246":{"position":[[286,7],[456,6],[603,7],[874,7],[1257,7],[1677,7],[1747,7],[1876,7]]},"247":{"position":[[118,6],[304,7],[331,7],[836,6],[889,6]]},"248":{"position":[[560,6]]},"250":{"position":[[16,7]]},"251":{"position":[[55,7],[97,7]]},"253":{"position":[[267,6],[318,6],[358,7]]},"255":{"position":[[1,6],[730,6],[2458,6],[2531,6]]},"256":{"position":[[307,7],[329,7]]},"259":{"position":[[206,7]]},"262":{"position":[[161,7],[464,7]]},"263":{"position":[[113,7],[551,6]]},"264":{"position":[[120,7],[580,7]]},"265":{"position":[[33,7],[99,8],[188,6],[265,6],[341,7],[417,8]]},"266":{"position":[[92,8],[181,7],[332,6],[351,6]]},"267":{"position":[[16,6],[938,7],[1134,7]]},"269":{"position":[[350,6],[383,6]]},"270":{"position":[[190,7]]},"272":{"position":[[948,7],[1612,6],[2027,6]]},"273":{"position":[[983,7],[1050,7],[1080,7],[1229,7],[1451,6],[1496,7],[2130,7],[2290,6],[2560,6],[2712,6],[3017,7],[3080,6],[3247,6],[3274,6],[3834,6],[4385,6],[4855,6]]},"274":{"position":[[21,6]]},"279":{"position":[[2017,8]]},"285":{"position":[[235,7]]}},"keywords":{}}],["period"",{"_index":2214,"title":{},"content":{"243":{"position":[[825,12],[2272,12]]}},"keywords":{}}],["period?"",{"_index":2843,"title":{},"content":{"279":{"position":[[1818,13]]}},"keywords":{}}],["period?"cold",{"_index":2652,"title":{},"content":{"272":{"position":[[1391,17]]}},"keywords":{}}],["period['end']}"",{"_index":1347,"title":{},"content":{"118":{"position":[[380,22]]}},"keywords":{}}],["period['start",{"_index":1346,"title":{},"content":{"118":{"position":[[359,17]]}},"keywords":{}}],["period_build",{"_index":1376,"title":{},"content":{"122":{"position":[[210,17],[262,17],[315,17]]}},"keywords":{}}],["period_building.pi",{"_index":2701,"title":{},"content":{"273":{"position":[[1660,18]]}},"keywords":{}}],["period_interval_smoothed_count",{"_index":2615,"title":{},"content":{"267":{"position":[[1074,30]]}},"keywords":{}}],["period_low_threshold",{"_index":2153,"title":{},"content":{"239":{"position":[[1489,20]]}},"keywords":{}}],["period_start_d",{"_index":2707,"title":{},"content":{"273":{"position":[[1841,17]]}},"keywords":{}}],["periodcalcul",{"_index":794,"title":{"55":{"position":[[0,16]]}},"content":{"57":{"position":[[355,16]]}},"keywords":{}}],["periodcalculator._cached_period",{"_index":818,"title":{},"content":{"56":{"position":[[36,32]]}},"keywords":{}}],["periodcalculator.invalidate_config_cach",{"_index":896,"title":{},"content":{"59":{"position":[[259,42]]}},"keywords":{}}],["periodcalculatorcalcul",{"_index":419,"title":{},"content":{"31":{"position":[[843,26]]}},"keywords":{}}],["periodconfig",{"_index":2442,"title":{},"content":{"255":{"position":[[127,13]]}},"keywords":{}}],["periods"",{"_index":973,"title":{},"content":{"70":{"position":[[185,13]]}},"keywords":{}}],["periods)sensor",{"_index":429,"title":{},"content":{"31":{"position":[[1090,15]]}},"keywords":{}}],["periods)weight",{"_index":2693,"title":{},"content":{"273":{"position":[[1214,14]]}},"keywords":{}}],["periods."""",{"_index":1323,"title":{},"content":{"114":{"position":[[339,26]]}},"keywords":{}}],["periods/day",{"_index":2382,"title":{},"content":{"250":{"position":[[182,11]]},"253":{"position":[[206,13]]}},"keywords":{}}],["periodsflex",{"_index":2563,"title":{},"content":{"262":{"position":[[128,11]]}},"keywords":{}}],["periodsif",{"_index":424,"title":{},"content":{"31":{"position":[[942,9]]}},"keywords":{}}],["periodsreject",{"_index":2769,"title":{},"content":{"273":{"position":[[4767,16]]}},"keywords":{}}],["periodsstal",{"_index":1063,"title":{},"content":{"78":{"position":[[365,12]]}},"keywords":{}}],["periodsstor",{"_index":427,"title":{},"content":{"31":{"position":[[995,12]]}},"keywords":{}}],["perman",{"_index":1050,"title":{},"content":{"77":{"position":[[1667,9]]}},"keywords":{}}],["permiss",{"_index":1358,"title":{},"content":{"120":{"position":[[181,11]]},"245":{"position":[[228,10]]},"246":{"position":[[1157,11]]}},"keywords":{}}],["permissiverelax",{"_index":2548,"title":{},"content":{"258":{"position":[[105,20]]}},"keywords":{}}],["permit",{"_index":2169,"title":{},"content":{"241":{"position":[[583,7]]}},"keywords":{}}],["persist",{"_index":390,"title":{"51":{"position":[[3,10]]}},"content":{"31":{"position":[[228,10],[369,10]]},"50":{"position":[[88,10]]},"51":{"position":[[605,10]]},"60":{"position":[[82,10]]},"62":{"position":[[28,10]]},"77":{"position":[[1249,10]]},"79":{"position":[[80,10]]},"89":{"position":[[301,11]]},"204":{"position":[[4,10]]}},"keywords":{}}],["person",{"_index":338,"title":{},"content":{"26":{"position":[[15,10]]},"272":{"position":[[1131,12]]}},"keywords":{}}],["phase",{"_index":1583,"title":{"148":{"position":[[18,6]]},"151":{"position":[[0,5],[9,5]]},"152":{"position":[[4,6]]},"153":{"position":[[0,5]]},"154":{"position":[[8,5]]},"156":{"position":[[11,6]]},"157":{"position":[[29,7]]},"160":{"position":[[16,6]]},"251":{"position":[[6,5]]}},"content":{"146":{"position":[[414,5],[423,5],[509,6]]},"148":{"position":[[36,6],[78,5],[152,5]]},"150":{"position":[[311,6],[355,5],[549,5],[640,5]]},"152":{"position":[[28,7]]},"153":{"position":[[6,5]]},"154":{"position":[[5,5]]},"157":{"position":[[22,7]]},"160":{"position":[[28,7],[179,6],[215,6]]},"170":{"position":[[161,6],[233,5],[376,5]]},"171":{"position":[[140,6]]},"174":{"position":[[154,6]]},"235":{"position":[[533,5]]},"265":{"position":[[211,5],[294,5],[408,5]]},"266":{"position":[[205,5],[301,6]]},"267":{"position":[[428,5],[459,6],[497,6],[556,6]]}},"keywords":{}}],["phase"",{"_index":1698,"title":{},"content":{"161":{"position":[[183,11]]}},"keywords":{}}],["phasedocu",{"_index":1638,"title":{},"content":{"150":{"position":[[387,15]]},"174":{"position":[[181,13]]}},"keywords":{}}],["phasetest",{"_index":1637,"title":{},"content":{"150":{"position":[[364,11]]}},"keywords":{}}],["pip",{"_index":1409,"title":{},"content":{"129":{"position":[[27,3]]},"202":{"position":[[22,3]]}},"keywords":{}}],["pitfal",{"_index":1435,"title":{"158":{"position":[[7,9]]},"257":{"position":[[21,9]]}},"content":{"132":{"position":[[223,8]]}},"keywords":{}}],["plan",{"_index":98,"title":{"143":{"position":[[8,4]]},"144":{"position":[[4,8]]},"145":{"position":[[12,8]]},"146":{"position":[[11,8]]},"159":{"position":[[7,8]]},"162":{"position":[[13,8]]},"165":{"position":[[0,8]]},"166":{"position":[[8,6]]},"169":{"position":[[26,4]]},"170":{"position":[[27,4]]},"171":{"position":[[15,4]]}},"content":{"3":{"position":[[1309,4]]},"42":{"position":[[543,5]]},"131":{"position":[[550,4]]},"143":{"position":[[40,5],[67,4],[106,9],[350,9],[524,8]]},"145":{"position":[[22,9],[146,9]]},"146":{"position":[[7,8],[72,4],[92,8]]},"147":{"position":[[7,9],[115,4]]},"148":{"position":[[6,4],[104,4]]},"149":{"position":[[46,4],[321,4]]},"150":{"position":[[421,4],[714,4]]},"159":{"position":[[200,5],[216,4]]},"161":{"position":[[227,5]]},"162":{"position":[[37,4],[199,9]]},"163":{"position":[[60,8],[271,5]]},"165":{"position":[[1,9],[75,8],[132,5]]},"166":{"position":[[112,7],[192,7],[269,7]]},"169":{"position":[[56,5],[144,5]]},"170":{"position":[[93,4]]},"171":{"position":[[15,5],[21,8],[265,4]]},"172":{"position":[[85,4],[214,8]]},"173":{"position":[[53,5]]},"174":{"position":[[17,4],[94,9],[313,4],[355,8],[580,9],[613,5]]},"239":{"position":[[1629,5]]},"272":{"position":[[1496,8],[2303,8]]},"279":{"position":[[1447,5]]}},"keywords":{}}],["plan"",{"_index":1616,"title":{},"content":{"149":{"position":[[285,10]]}},"keywords":{}}],["plan.md",{"_index":1571,"title":{},"content":{"145":{"position":[[126,7]]},"149":{"position":[[146,7],[220,7],[414,7],[570,7]]},"150":{"position":[[267,7]]},"166":{"position":[[35,7],[99,7],[179,7],[256,7]]},"174":{"position":[[549,7]]}},"keywords":{}}],["planning/arch",{"_index":1625,"title":{},"content":{"149":{"position":[[518,16],[578,17]]}},"keywords":{}}],["planning/class",{"_index":99,"title":{},"content":{"3":{"position":[[1317,15]]}},"keywords":{}}],["planning/mi",{"_index":1570,"title":{},"content":{"145":{"position":[[94,11]]},"149":{"position":[[114,11],[382,11],[538,11]]}},"keywords":{}}],["planning/modul",{"_index":1634,"title":{},"content":{"150":{"position":[[241,15]]}},"keywords":{}}],["planning/readme.md",{"_index":1596,"title":{},"content":{"146":{"position":[[724,18]]},"174":{"position":[[469,18]]}},"keywords":{}}],["plantest",{"_index":1605,"title":{},"content":{"148":{"position":[[58,8]]}},"keywords":{}}],["platform",{"_index":379,"title":{"43":{"position":[[30,10]]}},"content":{"31":{"position":[[85,9]]},"37":{"position":[[12,8]]},"81":{"position":[[227,9]]},"136":{"position":[[289,8],[328,8],[546,8]]},"179":{"position":[[1597,10]]}},"keywords":{}}],["platformfix(coordin",{"_index":264,"title":{},"content":{"18":{"position":[[492,25]]}},"keywords":{}}],["plu",{"_index":2936,"title":{},"content":{"287":{"position":[[419,5]]}},"keywords":{}}],["point",{"_index":952,"title":{},"content":{"67":{"position":[[929,6]]},"146":{"position":[[282,6]]},"252":{"position":[[1775,6]]},"255":{"position":[[26,6]]},"272":{"position":[[1922,5]]}},"keywords":{}}],["pointcoordinator/period_handlers/level_filtering.pi",{"_index":2093,"title":{},"content":{"235":{"position":[[402,51]]}},"keywords":{}}],["poll",{"_index":608,"title":{},"content":{"42":{"position":[[5,8],[754,4]]},"101":{"position":[[153,5]]},"212":{"position":[[78,4]]},"279":{"position":[[263,4]]}},"keywords":{}}],["pollut",{"_index":1573,"title":{},"content":{"145":{"position":[[216,9]]},"162":{"position":[[90,8]]}},"keywords":{}}],["poor",{"_index":2569,"title":{"263":{"position":[[21,5]]}},"content":{"263":{"position":[[428,4]]}},"keywords":{}}],["popul",{"_index":770,"title":{},"content":{"52":{"position":[[464,10]]},"72":{"position":[[127,11]]}},"keywords":{}}],["port",{"_index":1403,"title":{},"content":{"128":{"position":[[113,4]]}},"keywords":{}}],["posit",{"_index":2292,"title":{},"content":{"246":{"position":[[803,10]]},"255":{"position":[[1017,9],[3376,9]]}},"keywords":{}}],["possibl",{"_index":2675,"title":{},"content":{"273":{"position":[[198,8],[1141,8]]}},"keywords":{}}],["postalcod",{"_index":1190,"title":{},"content":{"99":{"position":[[100,10]]}},"keywords":{}}],["postcreatecommand)start",{"_index":1481,"title":{},"content":{"134":{"position":[[153,23]]}},"keywords":{}}],["potenti",{"_index":2617,"title":{"269":{"position":[[0,9]]},"272":{"position":[[0,9]]}},"content":{},"keywords":{}}],["power",{"_index":1828,"title":{},"content":{"179":{"position":[[837,8]]}},"keywords":{}}],["pr",{"_index":268,"title":{"19":{"position":[[19,3]]},"21":{"position":[[0,2]]},"22":{"position":[[0,2]]}},"content":{"25":{"position":[[171,3]]},"178":{"position":[[266,3]]}},"keywords":{}}],["practic",{"_index":1175,"title":{"207":{"position":[[11,10]]},"289":{"position":[[30,10]]}},"content":{"95":{"position":[[122,10]]},"163":{"position":[[553,10]]},"246":{"position":[[142,9],[2604,9]]},"280":{"position":[[1001,8]]}},"keywords":{}}],["practicescod",{"_index":1445,"title":{},"content":{"133":{"position":[[191,13]]}},"keywords":{}}],["practicesrefactor",{"_index":1427,"title":{},"content":{"131":{"position":[[514,20]]}},"keywords":{}}],["practicesus",{"_index":2337,"title":{},"content":{"246":{"position":[[2313,14]]}},"keywords":{}}],["pre",{"_index":2418,"title":{},"content":{"252":{"position":[[1368,4]]}},"keywords":{}}],["precis",{"_index":607,"title":{"42":{"position":[[16,10]]}},"content":{"280":{"position":[[895,9]]}},"keywords":{}}],["pred",{"_index":2477,"title":{},"content":{"255":{"position":[[1563,5],[1576,4]]}},"keywords":{}}],["predict",{"_index":251,"title":{},"content":{"18":{"position":[[233,7]]},"252":{"position":[[695,11]]},"255":{"position":[[828,11],[870,7],[990,9],[1178,10],[1419,10],[2971,10],[3248,7],[3543,11]]},"264":{"position":[[371,11]]},"272":{"position":[[632,7]]}},"keywords":{}}],["predictableno",{"_index":2233,"title":{},"content":{"243":{"position":[[1971,13]]}},"keywords":{}}],["prefer",{"_index":2139,"title":{},"content":{"239":{"position":[[914,10]]},"272":{"position":[[793,7],[1097,11]]},"273":{"position":[[472,9],[1194,7]]}},"keywords":{}}],["preferencesconsid",{"_index":2694,"title":{},"content":{"273":{"position":[[1252,19]]}},"keywords":{}}],["preferencesgenet",{"_index":2663,"title":{},"content":{"272":{"position":[[1944,18]]}},"keywords":{}}],["prefix",{"_index":35,"title":{},"content":{"3":{"position":[[53,7],[273,6],[342,6],[527,6],[597,7],[804,6],[991,6],[1267,7]]}},"keywords":{}}],["premiumearli",{"_index":2748,"title":{},"content":{"273":{"position":[[3606,12]]}},"keywords":{}}],["prepar",{"_index":1503,"title":{"176":{"position":[[16,9]]}},"content":{"135":{"position":[[462,7]]},"176":{"position":[[82,7]]},"184":{"position":[[11,7]]}},"keywords":{}}],["prerequisit",{"_index":158,"title":{"11":{"position":[[0,14]]},"229":{"position":[[0,14]]}},"content":{},"keywords":{}}],["present",{"_index":525,"title":{},"content":{"37":{"position":[[349,12]]}},"keywords":{}}],["presentation)easi",{"_index":670,"title":{},"content":{"43":{"position":[[1106,17]]}},"keywords":{}}],["presentation)independ",{"_index":567,"title":{},"content":{"37":{"position":[[1178,25]]}},"keywords":{}}],["presentationbuild",{"_index":661,"title":{},"content":{"43":{"position":[[864,18]]}},"keywords":{}}],["pressur",{"_index":1700,"title":{},"content":{"162":{"position":[[125,8]]}},"keywords":{}}],["pressurerefin",{"_index":1600,"title":{},"content":{"147":{"position":[[90,14]]}},"keywords":{}}],["prevent",{"_index":635,"title":{"77":{"position":[[33,12]]}},"content":{"42":{"position":[[597,8]]},"92":{"position":[[27,10]]},"146":{"position":[[596,7]]},"174":{"position":[[364,8]]},"243":{"position":[[669,8]]},"252":{"position":[[919,8]]},"255":{"position":[[755,7],[3361,8]]},"278":{"position":[[567,9],[1196,8]]},"279":{"position":[[1618,9]]},"284":{"position":[[592,8]]}},"keywords":{}}],["preview",{"_index":1878,"title":{},"content":{"182":{"position":[[289,7]]}},"keywords":{}}],["previou",{"_index":740,"title":{},"content":{"51":{"position":[[1026,8]]},"107":{"position":[[72,8]]},"278":{"position":[[1715,8]]},"289":{"position":[[169,8]]}},"keywords":{}}],["previous",{"_index":2419,"title":{},"content":{"252":{"position":[[1404,10]]}},"keywords":{}}],["price",{"_index":146,"title":{"8":{"position":[[0,5]]},"41":{"position":[[3,5]]},"57":{"position":[[24,6]]},"71":{"position":[[21,6]]},"100":{"position":[[0,5]]},"103":{"position":[[0,5]]},"237":{"position":[[15,6]]},"239":{"position":[[16,6]]}},"content":{"18":{"position":[[246,6]]},"31":{"position":[[408,5],[448,6],[671,5],[889,6],[989,5],[1080,7]]},"33":{"position":[[177,8]]},"36":{"position":[[271,5],[372,5],[446,7],[541,5]]},"37":{"position":[[921,5],[1014,5]]},"41":{"position":[[20,5]]},"42":{"position":[[704,5]]},"50":{"position":[[294,5]]},"51":{"position":[[149,5],[199,5],[270,5],[471,5],[1005,5]]},"56":{"position":[[133,5],[682,5],[730,5],[826,5],[1115,5],[1372,5]]},"57":{"position":[[249,5],[404,5],[503,5],[514,6],[748,5]]},"61":{"position":[[140,5]]},"78":{"position":[[359,5]]},"94":{"position":[[632,6]]},"100":{"position":[[24,7]]},"103":{"position":[[153,5]]},"111":{"position":[[90,5],[361,5]]},"114":{"position":[[333,5]]},"136":{"position":[[188,5]]},"137":{"position":[[180,5]]},"156":{"position":[[225,6]]},"215":{"position":[[60,6],[163,6]]},"237":{"position":[[24,6],[83,6],[90,5],[147,5],[197,6],[204,5],[261,5],[320,7]]},"238":{"position":[[124,6],[131,5],[205,5],[261,6],[268,5],[342,5],[407,7]]},"239":{"position":[[39,5]]},"241":{"position":[[67,5]]},"242":{"position":[[29,6]]},"243":{"position":[[708,5],[819,5],[1792,5],[1855,5],[1866,5],[1929,5],[2337,5]]},"246":{"position":[[10,5],[23,6],[103,6],[820,6],[929,5],[1467,5],[1486,5],[2212,5],[2555,5]]},"247":{"position":[[158,6],[246,6],[734,5],[797,5]]},"255":{"position":[[291,6],[710,5],[1224,5],[1348,5],[2343,6],[2581,5],[3180,5],[3311,5],[3400,5]]},"259":{"position":[[95,5]]},"262":{"position":[[1,5],[122,5]]},"263":{"position":[[1,5]]},"264":{"position":[[1,5]]},"265":{"position":[[93,5]]},"266":{"position":[[86,5]]},"267":{"position":[[599,5],[1190,5]]},"269":{"position":[[60,5],[403,5]]},"272":{"position":[[95,5],[1679,5]]},"273":{"position":[[1609,6],[2215,6],[2407,5],[2531,5],[3414,5],[3474,6],[3543,6],[3638,6],[3733,6],[4026,5],[4668,5],[5107,5]]},"279":{"position":[[378,5],[486,6],[558,5]]},"283":{"position":[[72,5]]}},"keywords":{}}],["price"",{"_index":2575,"title":{},"content":{"263":{"position":[[294,11]]},"273":{"position":[[1038,11]]}},"keywords":{}}],["price_data",{"_index":713,"title":{},"content":{"51":{"position":[[210,13]]},"62":{"position":[[77,12]]},"207":{"position":[[85,10],[156,10]]},"273":{"position":[[1700,10]]}},"keywords":{}}],["price_info_data",{"_index":152,"title":{},"content":{"8":{"position":[[137,16]]}},"keywords":{}}],["price_level_threshold",{"_index":2134,"title":{},"content":{"239":{"position":[[689,22]]}},"keywords":{}}],["price_level_thresholds["volatility_low"",{"_index":2154,"title":{},"content":{"239":{"position":[[1512,50]]}},"keywords":{}}],["price_tim",{"_index":130,"title":{},"content":{"6":{"position":[[91,10],[138,10]]}},"keywords":{}}],["price_util",{"_index":150,"title":{},"content":{"8":{"position":[[35,12]]}},"keywords":{}}],["price_utils.pi",{"_index":406,"title":{},"content":{"31":{"position":[[588,14]]},"136":{"position":[[171,14]]},"137":{"position":[[368,14]]}},"keywords":{}}],["pricedefault",{"_index":2343,"title":{},"content":{"246":{"position":[[2570,13]]}},"keywords":{}}],["priceinfo",{"_index":1194,"title":{},"content":{"99":{"position":[[157,9]]},"100":{"position":[[106,9]]}},"keywords":{}}],["pricessmooth",{"_index":2493,"title":{},"content":{"255":{"position":[[2429,15]]}},"keywords":{}}],["pricewindow",{"_index":2454,"title":{},"content":{"255":{"position":[[887,11]]}},"keywords":{}}],["principl",{"_index":2700,"title":{},"content":{"273":{"position":[[1541,10],[4538,9]]},"277":{"position":[[364,10]]}},"keywords":{}}],["print",{"_index":1331,"title":{},"content":{"116":{"position":[[130,5]]},"118":{"position":[[1,5]]}},"keywords":{}}],["print(f"",{"_index":1348,"title":{},"content":{"118":{"position":[[403,13]]}},"keywords":{}}],["print(f"coordin",{"_index":1338,"title":{},"content":{"118":{"position":[[59,24]]}},"keywords":{}}],["print(f"period",{"_index":1345,"title":{},"content":{"118":{"position":[[338,20]]}},"keywords":{}}],["print(f"pric",{"_index":1340,"title":{},"content":{"118":{"position":[[116,18]]}},"keywords":{}}],["priorit",{"_index":2773,"title":{},"content":{"273":{"position":[[4987,12]]}},"keywords":{}}],["prioriti",{"_index":1151,"title":{},"content":{"90":{"position":[[458,8]]},"179":{"position":[[740,9]]}},"keywords":{}}],["privat",{"_index":63,"title":{},"content":{"3":{"position":[[551,7],[726,7],[836,7],[1132,7]]}},"keywords":{}}],["pro",{"_index":1872,"title":{},"content":{"182":{"position":[[17,4]]}},"keywords":{}}],["probabl",{"_index":1729,"title":{},"content":{"169":{"position":[[40,8]]}},"keywords":{}}],["problem",{"_index":280,"title":{"241":{"position":[[0,7]]}},"content":{"21":{"position":[[116,7]]},"80":{"position":[[403,7]]},"81":{"position":[[361,7]]},"93":{"position":[[4,8]]},"146":{"position":[[202,7]]},"159":{"position":[[1,8]]},"160":{"position":[[1,8]]},"161":{"position":[[1,8]]},"162":{"position":[[1,8]]},"258":{"position":[[68,8]]},"259":{"position":[[55,8]]},"260":{"position":[[76,8]]},"272":{"position":[[1415,7]]},"273":{"position":[[2277,7],[4420,8],[4581,8],[4727,8],[4846,8]]},"279":{"position":[[269,7]]},"287":{"position":[[183,7]]}},"keywords":{}}],["process",{"_index":300,"title":{"23":{"position":[[7,8]]},"144":{"position":[[13,8]]},"172":{"position":[[40,9]]}},"content":{"140":{"position":[[93,8]]},"150":{"position":[[223,8]]},"163":{"position":[[69,7]]},"172":{"position":[[223,7]]},"182":{"position":[[319,7]]},"206":{"position":[[1,7],[189,10]]},"222":{"position":[[25,7]]},"251":{"position":[[10,9]]},"255":{"position":[[2670,10]]},"280":{"position":[[826,11]]},"294":{"position":[[99,10]]}},"keywords":{}}],["process.memory_info().rss",{"_index":2060,"title":{},"content":{"222":{"position":[[75,25]]}},"keywords":{}}],["processcod",{"_index":1426,"title":{},"content":{"131":{"position":[[456,13]]}},"keywords":{}}],["produc",{"_index":1863,"title":{},"content":{"181":{"position":[[13,7]]}},"keywords":{}}],["product",{"_index":1160,"title":{"220":{"position":[[14,11]]}},"content":{"93":{"position":[[288,10]]}},"keywords":{}}],["profil",{"_index":1177,"title":{"123":{"position":[[12,10]]},"126":{"position":[[0,7]]},"199":{"position":[[0,10]]},"201":{"position":[[7,10]]},"202":{"position":[[6,10]]}},"content":{"95":{"position":[[194,10]]},"202":{"position":[[53,9]]},"222":{"position":[[267,9]]}},"keywords":{}}],["profile)git",{"_index":1837,"title":{},"content":{"179":{"position":[[1249,11]]}},"keywords":{}}],["profile.stat",{"_index":1393,"title":{},"content":{"126":{"position":[[23,13],[81,13]]}},"keywords":{}}],["progress",{"_index":1576,"title":{},"content":{"146":{"position":[[109,8]]},"148":{"position":[[135,8]]},"152":{"position":[[135,8]]},"162":{"position":[[221,9]]},"251":{"position":[[137,13]]},"280":{"position":[[186,8],[591,8],[634,8]]}},"keywords":{}}],["project",{"_index":88,"title":{"136":{"position":[[3,7]]}},"content":{"3":{"position":[[1117,7]]},"133":{"position":[[1233,8]]},"135":{"position":[[5,7]]},"141":{"position":[[6,7]]},"163":{"position":[[6,7]]}},"keywords":{}}],["prompt",{"_index":177,"title":{},"content":{"12":{"position":[[193,8]]},"230":{"position":[[173,7]]}},"keywords":{}}],["prone",{"_index":2150,"title":{},"content":{"239":{"position":[[1306,5]]}},"keywords":{}}],["proper",{"_index":1446,"title":{},"content":{"133":{"position":[[244,6],[910,6]]},"196":{"position":[[27,6]]}},"keywords":{}}],["properli",{"_index":2977,"title":{},"content":{"299":{"position":[[118,8]]}},"keywords":{}}],["properti",{"_index":1969,"title":{},"content":{"205":{"position":[[30,9]]}},"keywords":{}}],["proportion",{"_index":2181,"title":{},"content":{"243":{"position":[[31,14]]}},"keywords":{}}],["propos",{"_index":1438,"title":{},"content":{"132":{"position":[[306,9]]},"146":{"position":[[292,8]]}},"keywords":{}}],["provid",{"_index":428,"title":{},"content":{"31":{"position":[[1057,8]]},"133":{"position":[[1261,8]]},"196":{"position":[[351,8]]},"252":{"position":[[1708,9]]},"278":{"position":[[169,8]]}},"keywords":{}}],["ps",{"_index":1169,"title":{},"content":{"94":{"position":[[526,3]]}},"keywords":{}}],["pseudo",{"_index":2634,"title":{},"content":{"272":{"position":[[126,6]]}},"keywords":{}}],["pstat",{"_index":1395,"title":{},"content":{"126":{"position":[[74,6]]}},"keywords":{}}],["psutil",{"_index":2056,"title":{},"content":{"222":{"position":[[8,6]]}},"keywords":{}}],["psutil.process(os.getpid",{"_index":2058,"title":{},"content":{"222":{"position":[[35,27]]}},"keywords":{}}],["public",{"_index":33,"title":{},"content":{"3":{"position":[[5,6],[363,6],[509,6]]}},"keywords":{}}],["publish",{"_index":1805,"title":{},"content":{"178":{"position":[[181,7]]}},"keywords":{}}],["pull",{"_index":270,"title":{"20":{"position":[[0,4]]}},"content":{"19":{"position":[[46,4]]},"134":{"position":[[446,4]]},"140":{"position":[[80,4]]}},"keywords":{}}],["pump",{"_index":2628,"title":{},"content":{"269":{"position":[[472,5]]},"272":{"position":[[1830,4]]}},"keywords":{}}],["pure",{"_index":1509,"title":{},"content":{"136":{"position":[[446,4]]},"137":{"position":[[350,4]]},"154":{"position":[[66,4],[275,4],[432,4]]}},"keywords":{}}],["purpos",{"_index":704,"title":{"250":{"position":[[0,8]]}},"content":{"50":{"position":[[63,8]]},"51":{"position":[[88,8]]},"52":{"position":[[94,8]]},"53":{"position":[[96,8]]},"56":{"position":[[70,8]]},"57":{"position":[[376,8]]},"149":{"position":[[337,7]]},"237":{"position":[[1,8]]},"238":{"position":[[1,8]]},"239":{"position":[[1,8],[367,8],[602,8]]},"241":{"position":[[608,7]]},"255":{"position":[[674,8]]},"277":{"position":[[71,9],[102,7]]},"278":{"position":[[389,8]]},"279":{"position":[[171,8]]},"280":{"position":[[156,8]]}},"keywords":{}}],["purposeapi",{"_index":939,"title":{},"content":{"67":{"position":[[39,10]]}},"keywords":{}}],["purposepric",{"_index":571,"title":{},"content":{"38":{"position":[[14,12]]}},"keywords":{}}],["push",{"_index":267,"title":{"19":{"position":[[3,4]]}},"content":{"19":{"position":[[5,4]]},"176":{"position":[[303,6],[326,4],[346,4],[753,4]]},"180":{"position":[[32,5],[140,4],[199,4]]},"182":{"position":[[343,4]]},"184":{"position":[[141,4],[161,4],[312,4]]},"185":{"position":[[218,4],[375,4]]},"186":{"position":[[188,4],[279,4]]},"191":{"position":[[64,5]]},"194":{"position":[[118,4],[458,4],[678,6]]},"196":{"position":[[430,4]]},"224":{"position":[[434,5]]}},"keywords":{}}],["push.github/release.yml",{"_index":1890,"title":{},"content":{"187":{"position":[[205,23]]}},"keywords":{}}],["pyright",{"_index":211,"title":{},"content":{"15":{"position":[[89,7]]}},"keywords":{}}],["pytest",{"_index":1324,"title":{"115":{"position":[[0,6]]}},"content":{"116":{"position":[[21,6]]},"138":{"position":[[77,6],[116,6],[169,6]]},"218":{"position":[[8,6]]},"225":{"position":[[17,6],[56,6],[109,6]]}},"keywords":{}}],["pytest.mark.benchmark",{"_index":2036,"title":{},"content":{"218":{"position":[[27,22]]}},"keywords":{}}],["pytest.mark.integr",{"_index":2044,"title":{},"content":{"219":{"position":[[1,24]]}},"keywords":{}}],["pytest.mark.unit",{"_index":222,"title":{},"content":{"17":{"position":[[41,17]]}},"keywords":{}}],["python",{"_index":16,"title":{},"content":{"1":{"position":[[121,6]]},"4":{"position":[[1,6]]},"120":{"position":[[100,6]]},"126":{"position":[[1,6],[64,6]]},"135":{"position":[[352,6]]},"150":{"position":[[508,6]]},"202":{"position":[[63,6]]},"224":{"position":[[119,6],[333,6]]},"231":{"position":[[29,6],[107,6]]}},"keywords":{}}],["python/ha",{"_index":2864,"title":{"281":{"position":[[17,10]]}},"content":{},"keywords":{}}],["q",{"_index":1727,"title":{"169":{"position":[[0,2]]},"170":{"position":[[0,2]]},"171":{"position":[[0,2]]},"172":{"position":[[0,2]]},"173":{"position":[[0,2]]}},"content":{},"keywords":{}}],["qualifi",{"_index":2350,"title":{},"content":{"247":{"position":[[183,9]]}},"keywords":{}}],["qualifywithout",{"_index":2573,"title":{},"content":{"263":{"position":[[220,14]]}},"keywords":{}}],["qualiti",{"_index":1161,"title":{},"content":{"93":{"position":[[299,7]]},"132":{"position":[[158,7]]},"133":{"position":[[510,7],[1077,7]]},"167":{"position":[[36,7]]},"243":{"position":[[2216,7]]},"246":{"position":[[595,7]]},"272":{"position":[[1629,7]]}},"keywords":{}}],["quality)git",{"_index":1830,"title":{},"content":{"179":{"position":[[866,11]]}},"keywords":{}}],["qualityconsid",{"_index":2625,"title":{},"content":{"269":{"position":[[367,15]]}},"keywords":{}}],["qualityconsist",{"_index":1458,"title":{},"content":{"133":{"position":[[786,17]]}},"keywords":{}}],["quarter",{"_index":436,"title":{"42":{"position":[[3,7]]},"279":{"position":[[10,7]]},"293":{"position":[[9,8]]},"297":{"position":[[15,8]]}},"content":{"31":{"position":[[1194,7]]},"41":{"position":[[5,7]]},"77":{"position":[[956,7]]},"80":{"position":[[56,7]]},"100":{"position":[[9,7]]},"157":{"position":[[307,8]]},"279":{"position":[[956,7]]},"285":{"position":[[39,7],[333,7]]},"297":{"position":[[71,7]]}},"keywords":{}}],["quarter_hourli",{"_index":1203,"title":{},"content":{"100":{"position":[[136,15]]}},"keywords":{}}],["quarter_hourlyfirst",{"_index":1206,"title":{},"content":{"100":{"position":[[273,20]]}},"keywords":{}}],["queri",{"_index":395,"title":{"98":{"position":[[0,7]]},"99":{"position":[[10,6]]},"100":{"position":[[11,6]]}},"content":{"31":{"position":[[325,5]]},"36":{"position":[[56,7]]},"99":{"position":[[41,5]]}},"keywords":{}}],["query($homeid",{"_index":1199,"title":{},"content":{"100":{"position":[[33,14]]}},"keywords":{}}],["querytimestamp",{"_index":721,"title":{},"content":{"51":{"position":[[409,16]]}},"keywords":{}}],["question",{"_index":341,"title":{},"content":{"26":{"position":[[61,9]]},"28":{"position":[[99,10]]},"169":{"position":[[26,9]]},"281":{"position":[[6,9]]},"286":{"position":[[6,9]]}},"keywords":{}}],["queue",{"_index":2816,"title":{},"content":{"278":{"position":[[1703,5]]},"289":{"position":[[152,5]]}},"keywords":{}}],["quick",{"_index":1475,"title":{"134":{"position":[[3,5]]},"176":{"position":[[3,5]]},"230":{"position":[[0,5]]}},"content":{"178":{"position":[[239,5]]},"182":{"position":[[201,5]]}},"keywords":{}}],["quickli",{"_index":2553,"title":{},"content":{"258":{"position":[[161,11]]}},"keywords":{}}],["quot",{"_index":1306,"title":{},"content":{"113":{"position":[[288,7],[325,6]]},"252":{"position":[[1933,6],[2146,6]]}},"keywords":{}}],["quot;${workspacefolder}/.venv/lib/python3.13/sit",{"_index":1313,"title":{},"content":{"113":{"position":[[421,50]]}},"keywords":{}}],["quot;""calcul",{"_index":1322,"title":{},"content":{"114":{"position":[[295,27]]}},"keywords":{}}],["quot;""clean",{"_index":1990,"title":{},"content":{"209":{"position":[[74,23]]}},"keywords":{}}],["quot;""fetch",{"_index":1317,"title":{},"content":{"114":{"position":[[91,23]]},"213":{"position":[[74,23]]},"221":{"position":[[56,23]]}},"keywords":{}}],["quot;""help",{"_index":80,"title":{},"content":{"3":{"position":[[898,24]]}},"keywords":{}}],["quot;""period",{"_index":2038,"title":{},"content":{"218":{"position":[[104,24]]}},"keywords":{}}],["quot;""return",{"_index":1971,"title":{},"content":{"205":{"position":[[92,24]]}},"keywords":{}}],["quot;""test",{"_index":226,"title":{},"content":{"17":{"position":[[107,22]]},"219":{"position":[[75,22]]}},"keywords":{}}],["quot;..."",{"_index":2033,"title":{},"content":{"216":{"position":[[267,16],[310,16],[354,16]]}},"keywords":{}}],["quot;0.2.0"",{"_index":1295,"title":{},"content":{"113":{"position":[[46,18]]}},"keywords":{}}],["quot;0.3.0"",{"_index":1792,"title":{},"content":{"176":{"position":[[666,17]]},"185":{"position":[[114,17]]}},"keywords":{}}],["quot;2024",{"_index":1216,"title":{},"content":{"103":{"position":[[52,10]]}},"keywords":{}}],["quot;2025",{"_index":591,"title":{},"content":{"41":{"position":[[122,10],[288,10]]}},"keywords":{}}],["quot;all_intervals"",{"_index":2030,"title":{},"content":{"216":{"position":[[86,26]]}},"keywords":{}}],["quot;any"",{"_index":2432,"title":{},"content":{"253":{"position":[[68,15]]}},"keywords":{}}],["quot;args"",{"_index":1305,"title":{},"content":{"113":{"position":[[270,17]]}},"keywords":{}}],["quot;bas",{"_index":2372,"title":{},"content":{"248":{"position":[[209,10],[289,10]]},"252":{"position":[[1876,10],[2102,10]]}},"keywords":{}}],["quot;baselin",{"_index":2599,"title":{},"content":{"267":{"position":[[381,14]]}},"keywords":{}}],["quot;best",{"_index":2574,"title":{},"content":{"263":{"position":[[283,10]]},"273":{"position":[[1027,10]]}},"keywords":{}}],["quot;best"",{"_index":795,"title":{},"content":{"55":{"position":[[3,17]]}},"keywords":{}}],["quot;best/peak",{"_index":2245,"title":{},"content":{"243":{"position":[[2321,15]]}},"keywords":{}}],["quot;best_price"",{"_index":823,"title":{},"content":{"56":{"position":[[192,23]]}},"keywords":{}}],["quot;best_price_relaxation"",{"_index":829,"title":{},"content":{"56":{"position":[[380,34]]}},"keywords":{}}],["quot;cached"",{"_index":2941,"title":{},"content":{"288":{"position":[[306,18],[442,18]]}},"keywords":{}}],["quot;calcul",{"_index":972,"title":{},"content":{"70":{"position":[[167,17]]}},"keywords":{}}],["quot;chore(releas",{"_index":1783,"title":{},"content":{"176":{"position":[[204,21],[699,21]]},"185":{"position":[[164,21]]},"186":{"position":[[89,21]]},"194":{"position":[[368,21]]}},"keywords":{}}],["quot;code"",{"_index":1249,"title":{},"content":{"106":{"position":[[115,17],[295,17],[471,17]]}},"keywords":{}}],["quot;commit",{"_index":1701,"title":{},"content":{"162":{"position":[[137,12]]}},"keywords":{}}],["quot;complex_sensor"",{"_index":1974,"title":{},"content":{"205":{"position":[[212,27]]}},"keywords":{}}],["quot;config"",{"_index":1308,"title":{},"content":{"113":{"position":[[305,19]]}},"keywords":{}}],["quot;configurations"",{"_index":1296,"title":{},"content":{"113":{"position":[[65,27]]}},"keywords":{}}],["quot;consid",{"_index":2426,"title":{},"content":{"252":{"position":[[1940,14],[2153,14]]}},"keywords":{}}],["quot;curr",{"_index":2840,"title":{},"content":{"279":{"position":[[1696,13]]}},"keywords":{}}],["quot;currency"",{"_index":1125,"title":{},"content":{"86":{"position":[[350,21]]},"104":{"position":[[3,21]]}},"keywords":{}}],["quot;debug",{"_index":1334,"title":{},"content":{"117":{"position":[[34,11]]}},"keywords":{}}],["quot;debugpy"",{"_index":1300,"title":{},"content":{"113":{"position":[[161,20]]}},"keywords":{}}],["quot;dev",{"_index":1840,"title":{},"content":{"179":{"position":[[1351,9]]},"230":{"position":[[211,9]]}},"keywords":{}}],["quot;difference"",{"_index":602,"title":{},"content":{"41":{"position":[[463,23]]}},"keywords":{}}],["quot;doc",{"_index":1615,"title":{},"content":{"149":{"position":[[242,11]]}},"keywords":{}}],["quot;document",{"_index":1697,"title":{},"content":{"161":{"position":[[163,19]]}},"keywords":{}}],["quot;draft",{"_index":1799,"title":{},"content":{"178":{"position":[[69,11]]}},"keywords":{}}],["quot;en"",{"_index":144,"title":{},"content":{"7":{"position":[[73,15],[134,15]]},"52":{"position":[[528,15],[776,15]]}},"keywords":{}}],["quot;env"",{"_index":1311,"title":{},"content":{"113":{"position":[[378,16]]}},"keywords":{}}],["quot;errors"",{"_index":1245,"title":{},"content":{"106":{"position":[[19,19],[194,19],[373,19]]}},"keywords":{}}],["quot;eur"",{"_index":1126,"title":{},"content":{"86":{"position":[[372,15]]},"104":{"position":[[25,15]]}},"keywords":{}}],["quot;everi",{"_index":2243,"title":{},"content":{"243":{"position":[[2246,11]]}},"keywords":{}}],["quot;expens",{"_index":2523,"title":{},"content":{"255":{"position":[[3475,15]]}},"keywords":{}}],["quot;extensions"",{"_index":1248,"title":{},"content":{"106":{"position":[[89,23],[269,23],[445,23]]}},"keywords":{}}],["quot;feat(sensor",{"_index":239,"title":{},"content":{"18":{"position":[[55,20]]}},"keywords":{}}],["quot;fetch",{"_index":2966,"title":{},"content":{"296":{"position":[[88,14]]}},"keywords":{}}],["quot;filt",{"_index":2537,"title":{},"content":{"256":{"position":[[170,12]]}},"keywords":{}}],["quot;flat",{"_index":2206,"title":{},"content":{"243":{"position":[[678,10]]},"259":{"position":[[65,10]]}},"keywords":{}}],["quot;flex"",{"_index":796,"title":{},"content":{"55":{"position":[[21,18],[140,18]]}},"keywords":{}}],["quot;full_history"",{"_index":2031,"title":{},"content":{"216":{"position":[[136,25]]}},"keywords":{}}],["quot;gener",{"_index":1802,"title":{},"content":{"178":{"position":[[121,14]]}},"keywords":{}}],["quot;high",{"_index":2226,"title":{},"content":{"243":{"position":[[1570,10]]},"267":{"position":[[811,10]]}},"keywords":{}}],["quot;high"",{"_index":785,"title":{},"content":{"54":{"position":[[49,17],[136,17]]}},"keywords":{}}],["quot;hom",{"_index":1256,"title":{},"content":{"106":{"position":[[417,10]]},"113":{"position":[[115,10]]}},"keywords":{}}],["quot;homeassistant"",{"_index":1304,"title":{},"content":{"113":{"position":[[243,26]]}},"keywords":{}}],["quot;homes"",{"_index":875,"title":{},"content":{"57":{"position":[[182,18]]}},"keywords":{}}],["quot;i",{"_index":2140,"title":{},"content":{"239":{"position":[[925,8]]},"279":{"position":[[1802,8]]}},"keywords":{}}],["quot;i'l",{"_index":1691,"title":{},"content":{"160":{"position":[[10,10]]},"162":{"position":[[10,10]]}},"keywords":{}}],["quot;in",{"_index":2838,"title":{},"content":{"279":{"position":[[1525,9]]}},"keywords":{}}],["quot;intervals"",{"_index":826,"title":{},"content":{"56":{"position":[[274,22]]}},"keywords":{}}],["quot;justmycode"",{"_index":1310,"title":{},"content":{"113":{"position":[[347,23]]}},"keywords":{}}],["quot;launch"",{"_index":1302,"title":{},"content":{"113":{"position":[[203,19]]}},"keywords":{}}],["quot;level"",{"_index":596,"title":{},"content":{"41":{"position":[[188,18],[354,18]]},"103":{"position":[[95,18]]}},"keywords":{}}],["quot;listener"",{"_index":2988,"title":{},"content":{"301":{"position":[[492,20]]}},"keywords":{}}],["quot;low"",{"_index":784,"title":{},"content":{"54":{"position":[[27,17]]}},"keywords":{}}],["quot;message"",{"_index":1246,"title":{},"content":{"106":{"position":[[42,20],[217,20],[396,20]]}},"keywords":{}}],["quot;metadata"",{"_index":827,"title":{},"content":{"56":{"position":[[331,21]]}},"keywords":{}}],["quot;midnight",{"_index":2776,"title":{},"content":{"273":{"position":[[5092,14]]},"296":{"position":[[220,14]]},"297":{"position":[[108,14]]}},"keywords":{}}],["quot;migr",{"_index":1748,"title":{},"content":{"171":{"position":[[163,15]]}},"keywords":{}}],["quot;min_distance_from_avg"",{"_index":798,"title":{},"content":{"55":{"position":[[46,34],[165,34]]}},"keywords":{}}],["quot;min_period_length"",{"_index":800,"title":{},"content":{"55":{"position":[[86,30],[205,30]]}},"keywords":{}}],["quot;moderate"",{"_index":788,"title":{},"content":{"54":{"position":[[107,22]]}},"keywords":{}}],["quot;module"",{"_index":1303,"title":{},"content":{"113":{"position":[[223,19]]}},"keywords":{}}],["quot;name"",{"_index":1297,"title":{},"content":{"113":{"position":[[97,17]]}},"keywords":{}}],["quot;next_interval"",{"_index":2034,"title":{},"content":{"216":{"position":[[327,26]]}},"keywords":{}}],["quot;normal"",{"_index":597,"title":{},"content":{"41":{"position":[[207,18],[373,19],[554,18]]},"103":{"position":[[114,18]]}},"keywords":{}}],["quot;not_found"",{"_index":1258,"title":{},"content":{"106":{"position":[[489,21]]}},"keywords":{}}],["quot;opt",{"_index":959,"title":{},"content":{"69":{"position":[[57,13]]}},"keywords":{}}],["quot;oth",{"_index":1809,"title":{},"content":{"178":{"position":[[317,11]]}},"keywords":{}}],["quot;outli",{"_index":2612,"title":{},"content":{"267":{"position":[[1031,13]]}},"keywords":{}}],["quot;peak"",{"_index":802,"title":{},"content":{"55":{"position":[[122,17]]}},"keywords":{}}],["quot;peak_price"",{"_index":831,"title":{},"content":{"56":{"position":[[459,23]]}},"keywords":{}}],["quot;peak_price_relaxation"",{"_index":832,"title":{},"content":{"56":{"position":[[490,34]]}},"keywords":{}}],["quot;periods"",{"_index":824,"title":{},"content":{"56":{"position":[[218,20]]}},"keywords":{}}],["quot;plan",{"_index":1714,"title":{},"content":{"163":{"position":[[659,14]]}},"keywords":{}}],["quot;priceinfo"",{"_index":876,"title":{},"content":{"57":{"position":[[208,22]]},"86":{"position":[[282,22]]}},"keywords":{}}],["quot;propos",{"_index":1746,"title":{},"content":{"171":{"position":[[106,14]]}},"keywords":{}}],["quot;pythonpath"",{"_index":1312,"title":{},"content":{"113":{"position":[[397,23]]}},"keywords":{}}],["quot;rate_limit_exceeded"",{"_index":1254,"title":{},"content":{"106":{"position":[[313,31]]}},"keywords":{}}],["quot;rating_level"",{"_index":606,"title":{},"content":{"41":{"position":[[528,25]]},"216":{"position":[[284,25]]}},"keywords":{}}],["quot;refactor",{"_index":1743,"title":{},"content":{"170":{"position":[[330,14]]}},"keywords":{}}],["quot;relaxation_active"",{"_index":830,"title":{},"content":{"56":{"position":[[415,31]]}},"keywords":{}}],["quot;reopen",{"_index":175,"title":{},"content":{"12":{"position":[[156,12]]},"134":{"position":[[61,12]]}},"keywords":{}}],["quot;request"",{"_index":1301,"title":{},"content":{"113":{"position":[[182,20]]}},"keywords":{}}],["quot;risk",{"_index":1750,"title":{},"content":{"171":{"position":[[212,11]]}},"keywords":{}}],["quot;significantli",{"_index":2557,"title":{},"content":{"259":{"position":[[162,20]]}},"keywords":{}}],["quot;sind",{"_index":2866,"title":{},"content":{"281":{"position":[[16,10]]}},"keywords":{}}],["quot;slightli",{"_index":2279,"title":{},"content":{"246":{"position":[[384,14]]}},"keywords":{}}],["quot;spread"",{"_index":2692,"title":{},"content":{"273":{"position":[[1165,18]]}},"keywords":{}}],["quot;stabl",{"_index":2359,"title":{},"content":{"247":{"position":[[669,12]]}},"keywords":{}}],["quot;stable"result",{"_index":2363,"title":{},"content":{"247":{"position":[[760,25]]}},"keywords":{}}],["quot;startsat"",{"_index":590,"title":{},"content":{"41":{"position":[[100,21],[266,21]]},"103":{"position":[[30,21]]}},"keywords":{}}],["quot;success",{"_index":1760,"title":{},"content":{"173":{"position":[[14,13]]}},"keywords":{}}],["quot;tag",{"_index":1901,"title":{},"content":{"194":{"position":[[1,9]]}},"keywords":{}}],["quot;thi",{"_index":1677,"title":{},"content":{"159":{"position":[[10,10]]},"243":{"position":[[782,10]]}},"keywords":{}}],["quot;thresholds"",{"_index":783,"title":{},"content":{"54":{"position":[[3,23]]}},"keywords":{}}],["quot;thund",{"_index":2803,"title":{},"content":{"278":{"position":[[1205,16]]},"287":{"position":[[155,16]]}},"keywords":{}}],["quot;tibber_prices"",{"_index":1350,"title":{},"content":{"120":{"position":[[14,25]]}},"keywords":{}}],["quot;timestamp"",{"_index":874,"title":{},"content":{"57":{"position":[[154,22]]},"216":{"position":[[244,22]]}},"keywords":{}}],["quot;today"",{"_index":906,"title":{},"content":{"60":{"position":[[326,18]]}},"keywords":{}}],["quot;tomorrow_check"",{"_index":751,"title":{},"content":{"51":{"position":[[1222,26]]},"278":{"position":[[883,27]]},"288":{"position":[[208,26]]}},"keywords":{}}],["quot;too",{"_index":1252,"title":{},"content":{"106":{"position":[[238,9]]}},"keywords":{}}],["quot;total"",{"_index":594,"title":{},"content":{"41":{"position":[[161,18],[327,18]]},"103":{"position":[[3,18]]}},"keywords":{}}],["quot;trailing_avg_24h"",{"_index":598,"title":{},"content":{"41":{"position":[[393,29]]}},"keywords":{}}],["quot;type"",{"_index":1299,"title":{},"content":{"113":{"position":[[143,17]]}},"keywords":{}}],["quot;unauthenticated"",{"_index":1250,"title":{},"content":{"106":{"position":[[133,27]]}},"keywords":{}}],["quot;unauthorized"",{"_index":1247,"title":{},"content":{"106":{"position":[[63,25]]}},"keywords":{}}],["quot;upd",{"_index":2970,"title":{},"content":{"297":{"position":[[27,13]]},"298":{"position":[[27,13]]}},"keywords":{}}],["quot;update_needed"",{"_index":2943,"title":{},"content":{"288":{"position":[[491,25]]}},"keywords":{}}],["quot;us",{"_index":970,"title":{},"content":{"70":{"position":[[120,11]]},"296":{"position":[[159,11]]}},"keywords":{}}],["quot;user_data"",{"_index":1123,"title":{},"content":{"86":{"position":[[252,22]]}},"keywords":{}}],["quot;version"",{"_index":1294,"title":{},"content":{"113":{"position":[[25,20]]},"176":{"position":[[645,20]]},"185":{"position":[[93,20]]}},"keywords":{}}],["quot;very_high"",{"_index":791,"title":{},"content":{"54":{"position":[[160,22]]}},"keywords":{}}],["quot;volatility_thresholds"",{"_index":787,"title":{},"content":{"54":{"position":[[72,34]]}},"keywords":{}}],["quot;warum",{"_index":2909,"title":{},"content":{"286":{"position":[[16,11]]}},"keywords":{}}],["quot;whi",{"_index":1620,"title":{},"content":{"149":{"position":[[466,9]]},"246":{"position":[[2165,9]]},"272":{"position":[[1376,9]]}},"keywords":{}}],["race",{"_index":2795,"title":{},"content":{"278":{"position":[[577,4]]}},"keywords":{}}],["ram",{"_index":995,"title":{},"content":{"75":{"position":[[104,3]]},"94":{"position":[[510,4],[654,3]]}},"keywords":{}}],["ramp",{"_index":2516,"title":{},"content":{"255":{"position":[[3202,4]]}},"keywords":{}}],["ran",{"_index":2822,"title":{},"content":{"279":{"position":[[506,3]]}},"keywords":{}}],["random",{"_index":2802,"title":{},"content":{"278":{"position":[[1181,6]]},"287":{"position":[[425,6]]},"299":{"position":[[274,6]]}},"keywords":{}}],["rang",{"_index":2107,"title":{"248":{"position":[[12,6]]}},"content":{"237":{"position":[[369,6]]},"238":{"position":[[463,6]]},"252":{"position":[[822,5]]},"255":{"position":[[3813,6]]},"262":{"position":[[7,6],[221,5]]},"263":{"position":[[7,6]]},"264":{"position":[[7,6]]},"273":{"position":[[4032,5]]}},"keywords":{}}],["range(10",{"_index":2047,"title":{},"content":{"219":{"position":[[158,10]]}},"keywords":{}}],["range(max_relaxation_attempt",{"_index":2394,"title":{},"content":{"252":{"position":[[264,31]]}},"keywords":{}}],["range(resolut",{"_index":1202,"title":{},"content":{"100":{"position":[[118,17]]}},"keywords":{}}],["rapid",{"_index":1457,"title":{},"content":{"133":{"position":[[742,5]]}},"keywords":{}}],["rare",{"_index":2944,"title":{},"content":{"288":{"position":[[519,4]]}},"keywords":{}}],["rate",{"_index":414,"title":{"101":{"position":[[0,4]]}},"content":{"31":{"position":[[712,6]]},"36":{"position":[[299,8],[462,8]]},"38":{"position":[[48,6]]},"56":{"position":[[1301,5]]},"101":{"position":[[12,4]]},"106":{"position":[[170,4]]},"107":{"position":[[194,6]]},"137":{"position":[[329,7]]}},"keywords":{}}],["rating_level",{"_index":837,"title":{},"content":{"56":{"position":[[615,13]]},"57":{"position":[[291,13]]},"62":{"position":[[126,13]]}},"keywords":{}}],["ratio",{"_index":2512,"title":{},"content":{"255":{"position":[[3055,6]]}},"keywords":{}}],["rational",{"_index":283,"title":{"246":{"position":[[0,9]]}},"content":{"21":{"position":[[148,9]]},"239":{"position":[[859,9]]},"247":{"position":[[95,10],[616,10]]}},"keywords":{}}],["rationaleasync",{"_index":1145,"title":{},"content":{"90":{"position":[[17,14]]}},"keywords":{}}],["rationale≀20",{"_index":2193,"title":{},"content":{"243":{"position":[[337,13]]}},"keywords":{}}],["raw",{"_index":149,"title":{},"content":{"8":{"position":[[15,3]]},"31":{"position":[[444,3]]},"107":{"position":[[1,3]]},"137":{"position":[[204,3]]},"256":{"position":[[303,3]]},"262":{"position":[[460,3]]},"263":{"position":[[547,3]]},"264":{"position":[[576,3]]}},"keywords":{}}],["re",{"_index":879,"title":{},"content":{"57":{"position":[[391,2]]},"62":{"position":[[295,2]]},"65":{"position":[[225,3]]},"66":{"position":[[225,2]]},"67":{"position":[[449,2]]},"72":{"position":[[170,2]]},"80":{"position":[[176,2],[350,2]]},"85":{"position":[[99,2]]}},"keywords":{}}],["re/kwh",{"_index":1243,"title":{},"content":{"104":{"position":[[179,7]]}},"keywords":{}}],["re/kwhsek",{"_index":1240,"title":{},"content":{"104":{"position":[[137,10]]}},"keywords":{}}],["reach",{"_index":2387,"title":{},"content":{"251":{"position":[[195,7]]},"252":{"position":[[1166,7]]},"253":{"position":[[137,7]]},"266":{"position":[[390,7]]}},"keywords":{}}],["react",{"_index":2301,"title":{},"content":{"246":{"position":[[1074,5]]}},"keywords":{}}],["read",{"_index":430,"title":{},"content":{"31":{"position":[[1106,4]]},"55":{"position":[[812,4]]},"62":{"position":[[298,7],[620,5]]},"163":{"position":[[106,5]]},"174":{"position":[[464,4]]}},"keywords":{}}],["readabl",{"_index":1706,"title":{},"content":{"163":{"position":[[209,8]]}},"keywords":{}}],["readi",{"_index":1787,"title":{},"content":{"176":{"position":[[336,5]]},"184":{"position":[[151,5]]}},"keywords":{}}],["real",{"_index":1147,"title":{"150":{"position":[[0,4]]}},"content":{"90":{"position":[[305,4]]},"133":{"position":[[1174,4]]},"174":{"position":[[561,4]]},"246":{"position":[[1861,4]]}},"keywords":{}}],["realist",{"_index":1661,"title":{},"content":{"153":{"position":[[216,9]]}},"keywords":{}}],["realiti",{"_index":2735,"title":{},"content":{"273":{"position":[[3397,7]]}},"keywords":{}}],["realityreject",{"_index":2767,"title":{},"content":{"273":{"position":[[4627,16]]}},"keywords":{}}],["realiz",{"_index":1682,"title":{},"content":{"159":{"position":[[102,7]]}},"keywords":{}}],["reason",{"_index":2236,"title":{"287":{"position":[[0,6]]},"288":{"position":[[0,6]]},"289":{"position":[[0,6]]}},"content":{"243":{"position":[[2016,6]]},"255":{"position":[[3629,6]]},"273":{"position":[[840,6]]},"296":{"position":[[117,8]]}},"keywords":{}}],["rebuild",{"_index":480,"title":{},"content":{"34":{"position":[[75,8]]},"65":{"position":[[116,9],[237,8]]},"66":{"position":[[146,8]]},"179":{"position":[[1319,7],[1373,7]]}},"keywords":{}}],["recalcul",{"_index":425,"title":{},"content":{"31":{"position":[[967,11]]},"46":{"position":[[134,13]]},"56":{"position":[[1277,11],[1801,13]]},"61":{"position":[[238,12]]},"65":{"position":[[183,12]]},"66":{"position":[[177,14]]},"280":{"position":[[849,14]]}},"keywords":{}}],["recognit",{"_index":1444,"title":{},"content":{"133":{"position":[[131,12]]}},"keywords":{}}],["recommend",{"_index":1778,"title":{"184":{"position":[[32,14]]},"248":{"position":[[0,11]]}},"content":{"176":{"position":[[1,11]]},"246":{"position":[[2592,11]]},"247":{"position":[[432,15]]},"248":{"position":[[25,14]]},"289":{"position":[[49,11]]}},"keywords":{}}],["reconfigur",{"_index":806,"title":{},"content":{"55":{"position":[[394,12]]},"66":{"position":[[317,16]]}},"keywords":{}}],["records/year",{"_index":2023,"title":{},"content":{"215":{"position":[[137,12]]}},"keywords":{}}],["recreat",{"_index":1904,"title":{},"content":{"194":{"position":[[104,9]]}},"keywords":{}}],["reduc",{"_index":712,"title":{},"content":{"51":{"position":[[97,6],[1291,7]]},"67":{"position":[[97,6]]},"152":{"position":[[153,7]]},"243":{"position":[[11,6],[1603,8]]},"256":{"position":[[455,8]]},"267":{"position":[[840,8]]}},"keywords":{}}],["reduct",{"_index":563,"title":{"45":{"position":[[9,10]]}},"content":{"37":{"position":[[1086,9]]},"47":{"position":[[126,9]]},"57":{"position":[[990,11]]},"67":{"position":[[555,9],[616,9],[693,9]]},"243":{"position":[[415,9],[449,9],[480,9],[1086,9]]},"246":{"position":[[898,9]]},"267":{"position":[[904,11]]}},"keywords":{}}],["redund",{"_index":817,"title":{},"content":{"55":{"position":[[914,9]]},"57":{"position":[[123,10],[932,9]]}},"keywords":{}}],["ref_dat",{"_index":2708,"title":{},"content":{"273":{"position":[[1859,8],[5216,8]]}},"keywords":{}}],["ref_price=ref_prices[ref_d",{"_index":2710,"title":{},"content":{"273":{"position":[[1920,31]]}},"keywords":{}}],["refactor",{"_index":96,"title":{"142":{"position":[[0,11]]},"143":{"position":[[15,12]]},"172":{"position":[[16,11]]},"173":{"position":[[24,11]]}},"content":{"3":{"position":[[1282,12]]},"25":{"position":[[326,9]]},"37":{"position":[[78,11]]},"43":{"position":[[41,11]]},"131":{"position":[[573,12]]},"143":{"position":[[55,11]]},"145":{"position":[[114,11]]},"146":{"position":[[60,11]]},"149":{"position":[[134,11],[208,11],[273,11],[402,11],[558,11]]},"150":{"position":[[21,11]]},"152":{"position":[[10,12]]},"161":{"position":[[18,11],[215,11]]},"163":{"position":[[259,11],[363,11]]},"165":{"position":[[120,11]]},"166":{"position":[[87,11],[167,11],[244,11]]},"171":{"position":[[292,14]]},"173":{"position":[[288,11]]},"174":{"position":[[387,12],[601,11]]},"181":{"position":[[308,11]]}},"keywords":{}}],["refactoring.mdus",{"_index":100,"title":{},"content":{"3":{"position":[[1340,17]]}},"keywords":{}}],["refactorings"",{"_index":1715,"title":{},"content":{"163":{"position":[[680,18]]}},"keywords":{}}],["refer",{"_index":701,"title":{"95":{"position":[[3,11]]},"96":{"position":[[4,9]]},"237":{"position":[[36,11]]},"274":{"position":[[0,11]]}},"content":{"48":{"position":[[301,9]]},"73":{"position":[[137,9]]},"77":{"position":[[474,10],[992,9],[1039,9]]},"141":{"position":[[120,5]]},"149":{"position":[[497,10]]},"150":{"position":[[450,9]]},"161":{"position":[[60,9]]},"209":{"position":[[10,11],[205,10]]},"273":{"position":[[1599,9],[2205,9],[4821,9]]},"300":{"position":[[136,9]]}},"keywords":{}}],["refin",{"_index":1756,"title":{},"content":{"172":{"position":[[149,6]]},"255":{"position":[[2645,10]]}},"keywords":{}}],["reflect",{"_index":2266,"title":{},"content":{"246":{"position":[[54,7],[2584,7]]}},"keywords":{}}],["refresh",{"_index":727,"title":{"279":{"position":[[23,7]]},"280":{"position":[[17,7]]},"293":{"position":[[23,9]]},"294":{"position":[[17,9]]}},"content":{"51":{"position":[[562,10]]},"66":{"position":[[72,8]]},"83":{"position":[[86,7]]},"137":{"position":[[160,7]]},"157":{"position":[[321,8]]},"277":{"position":[[243,7]]},"279":{"position":[[969,7]]},"285":{"position":[[52,7],[346,7]]},"288":{"position":[[723,7]]},"289":{"position":[[250,9]]}},"keywords":{}}],["refresh_user_data",{"_index":508,"title":{},"content":{"36":{"position":[[636,18]]}},"keywords":{}}],["refs/tags/v0.3.0",{"_index":1905,"title":{},"content":{"194":{"position":[[130,17]]}},"keywords":{}}],["regardless",{"_index":2424,"title":{},"content":{"252":{"position":[[1752,10]]}},"keywords":{}}],["regist",{"_index":965,"title":{},"content":{"69":{"position":[[225,10]]},"75":{"position":[[194,10]]},"77":{"position":[[352,10],[406,10],[448,10],[1523,10],[1657,9]]},"80":{"position":[[78,10],[128,10]]},"281":{"position":[[290,8],[361,9],[475,8]]},"301":{"position":[[622,9]]}},"keywords":{}}],["register(self",{"_index":1999,"title":{},"content":{"209":{"position":[[326,14]]}},"keywords":{}}],["register_lifecycle_callback())sensor",{"_index":1018,"title":{},"content":{"77":{"position":[[294,37]]}},"keywords":{}}],["register_lifecycle_callback()sensor/core.pi",{"_index":1030,"title":{},"content":{"77":{"position":[[787,43]]}},"keywords":{}}],["registr",{"_index":981,"title":{},"content":{"71":{"position":[[193,13]]}},"keywords":{}}],["registration)__init__.pi",{"_index":1055,"title":{},"content":{"77":{"position":[[1896,24]]}},"keywords":{}}],["regress",{"_index":1762,"title":{},"content":{"173":{"position":[[160,11]]},"255":{"position":[[817,10],[2304,10],[2998,11],[3135,10]]}},"keywords":{}}],["regular",{"_index":2901,"title":{},"content":{"284":{"position":[[404,7]]}},"keywords":{}}],["reject",{"_index":2166,"title":{},"content":{"241":{"position":[[419,8]]},"243":{"position":[[2097,9]]},"246":{"position":[[2070,10],[2281,10]]},"255":{"position":[[1275,7],[3698,9],[3765,9],[3822,9],[3868,9]]},"273":{"position":[[4370,9]]}},"keywords":{}}],["rel",{"_index":633,"title":{},"content":{"42":{"position":[[580,8]]},"255":{"position":[[1829,8]]},"273":{"position":[[2986,8],[3147,9],[3219,9],[4518,8]]},"279":{"position":[[1509,8]]}},"keywords":{}}],["relat",{"_index":293,"title":{"48":{"position":[[0,7]]},"73":{"position":[[0,7]]},"300":{"position":[[0,7]]}},"content":{"21":{"position":[[376,7]]},"28":{"position":[[190,8]]},"129":{"position":[[138,8]]},"222":{"position":[[186,8]]},"235":{"position":[[325,7]]}},"keywords":{}}],["relative_volatility_threshold",{"_index":2489,"title":{},"content":{"255":{"position":[[2198,29]]}},"keywords":{}}],["relative_volatility_threshold)singl",{"_index":2485,"title":{},"content":{"255":{"position":[[1881,37]]}},"keywords":{}}],["relax",{"_index":498,"title":{"249":{"position":[[0,10]]},"252":{"position":[[0,10]]},"258":{"position":[[33,11]]},"265":{"position":[[12,10]]},"266":{"position":[[12,10]]}},"content":{"36":{"position":[[402,10]]},"56":{"position":[[1556,10],[1773,12]]},"131":{"position":[[195,10]]},"235":{"position":[[219,10],[539,10]]},"245":{"position":[[317,10]]},"247":{"position":[[464,10],[502,11]]},"248":{"position":[[6,10],[58,10],[141,10],[322,10],[385,11],[505,10]]},"251":{"position":[[118,10],[151,7]]},"252":{"position":[[560,10],[1150,10],[1251,10],[1337,10],[1916,10],[2188,10]]},"255":{"position":[[393,10]]},"256":{"position":[[406,10]]},"258":{"position":[[255,10]]},"263":{"position":[[630,10]]},"265":{"position":[[397,10]]},"266":{"position":[[290,10]]},"267":{"position":[[326,10],[350,10]]},"272":{"position":[[499,10],[810,11]]},"275":{"position":[[68,10]]}},"keywords":{}}],["relax_single_day",{"_index":2448,"title":{},"content":{"255":{"position":[[535,21]]}},"keywords":{}}],["relaxation."",{"_index":2427,"title":{},"content":{"252":{"position":[[1988,18]]}},"keywords":{}}],["relaxation=on",{"_index":2589,"title":{},"content":{"265":{"position":[[108,14]]},"266":{"position":[[101,14]]}},"keywords":{}}],["relaxationhigh",{"_index":2596,"title":{},"content":{"267":{"position":[[187,14]]}},"keywords":{}}],["relaxationif",{"_index":2608,"title":{},"content":{"267":{"position":[[711,12]]}},"keywords":{}}],["relaxationsimpl",{"_index":2682,"title":{},"content":{"273":{"position":[[451,20]]}},"keywords":{}}],["releas",{"_index":374,"title":{"175":{"position":[[0,7]]},"176":{"position":[[28,8]]},"177":{"position":[[3,7]]},"183":{"position":[[12,7]]}},"content":{"28":{"position":[[311,8]]},"48":{"position":[[249,7]]},"131":{"position":[[424,7]]},"135":{"position":[[452,7],[476,7],[519,7],[544,7]]},"176":{"position":[[90,7],[434,7],[499,7],[845,7],[894,7]]},"178":{"position":[[23,7],[136,7],[245,9]]},"180":{"position":[[11,7],[172,7],[279,7],[330,7]]},"182":{"position":[[47,8],[207,7],[275,7],[304,7]]},"184":{"position":[[19,7],[211,7],[392,7]]},"185":{"position":[[317,7],[346,7],[500,7]]},"186":{"position":[[214,7],[239,7]]},"187":{"position":[[190,7]]},"192":{"position":[[1,7]]},"195":{"position":[[48,8]]},"196":{"position":[[308,7],[454,7]]}},"keywords":{}}],["release"select",{"_index":1800,"title":{},"content":{"178":{"position":[[87,19]]}},"keywords":{}}],["release_notes_backend=copilot",{"_index":1819,"title":{},"content":{"179":{"position":[[386,29]]}},"keywords":{}}],["release_notes_backend=git",{"_index":1820,"title":{},"content":{"179":{"position":[[482,25]]}},"keywords":{}}],["release_notes_backend=manu",{"_index":1823,"title":{},"content":{"179":{"position":[[588,28]]}},"keywords":{}}],["releaseauto",{"_index":1885,"title":{},"content":{"186":{"position":[[321,11]]}},"keywords":{}}],["releasesclick",{"_index":1798,"title":{},"content":{"178":{"position":[[55,13]]}},"keywords":{}}],["relev",{"_index":262,"title":{},"content":{"18":{"position":[[457,9]]},"56":{"position":[[554,8]]},"70":{"position":[[244,8]]},"243":{"position":[[385,8]]},"288":{"position":[[137,8]]}},"keywords":{}}],["reliabl",{"_index":1862,"title":{},"content":{"180":{"position":[[401,12]]},"196":{"position":[[410,8]]},"250":{"position":[[209,12]]},"252":{"position":[[126,12]]}},"keywords":{}}],["reliable)manu",{"_index":1833,"title":{},"content":{"179":{"position":[[916,16]]}},"keywords":{}}],["reload",{"_index":986,"title":{},"content":{"72":{"position":[[210,6]]},"77":{"position":[[1742,6]]},"94":{"position":[[562,6],[641,7]]}},"keywords":{}}],["remain",{"_index":1002,"title":{},"content":{"75":{"position":[[187,6],[359,6]]},"77":{"position":[[1721,7]]},"79":{"position":[[266,6]]}},"keywords":{}}],["rememb",{"_index":1773,"title":{},"content":{"174":{"position":[[340,9]]}},"keywords":{}}],["remot",{"_index":160,"title":{"128":{"position":[[0,6]]}},"content":{"11":{"position":[[17,6]]},"128":{"position":[[184,6]]},"194":{"position":[[72,6]]}},"keywords":{}}],["remote)auto",{"_index":1894,"title":{},"content":{"190":{"position":[[45,11]]}},"keywords":{}}],["remotelyinvalid",{"_index":1909,"title":{},"content":{"194":{"position":[[590,15]]}},"keywords":{}}],["remov",{"_index":1003,"title":{},"content":{"75":{"position":[[218,7]]},"77":{"position":[[120,7],[203,7],[340,7],[394,7],[641,7]]},"79":{"position":[[99,8],[247,8]]},"92":{"position":[[99,7]]},"135":{"position":[[178,6]]},"252":{"position":[[1520,7]]},"255":{"position":[[3724,7]]},"281":{"position":[[1176,7]]}},"keywords":{}}],["removalcach",{"_index":1071,"title":{},"content":{"79":{"position":[[166,12]]}},"keywords":{}}],["renam",{"_index":111,"title":{},"content":{"3":{"position":[[1489,7]]},"143":{"position":[[679,9]]}},"keywords":{}}],["renamestest",{"_index":103,"title":{},"content":{"3":{"position":[[1396,11]]}},"keywords":{}}],["reopen",{"_index":2078,"title":{},"content":{"230":{"position":[[136,6],[233,6]]}},"keywords":{}}],["repeat",{"_index":760,"title":{},"content":{"52":{"position":[[109,8]]}},"keywords":{}}],["repl",{"_index":1408,"title":{"129":{"position":[[8,5]]}},"content":{},"keywords":{}}],["replac",{"_index":5,"title":{},"content":{"1":{"position":[[24,9]]}},"keywords":{}}],["report",{"_index":360,"title":{},"content":{"28":{"position":[[21,8]]}},"keywords":{}}],["report=html",{"_index":1164,"title":{},"content":{"94":{"position":[[382,11]]}},"keywords":{}}],["repositori",{"_index":166,"title":{},"content":{"12":{"position":[[10,10]]},"230":{"position":[[13,10]]}},"keywords":{}}],["repositoryopen",{"_index":1477,"title":{},"content":{"134":{"position":[[20,14]]}},"keywords":{}}],["request",{"_index":271,"title":{"20":{"position":[[5,7]]}},"content":{"19":{"position":[[51,7]]},"28":{"position":[[51,8]]},"101":{"position":[[44,8],[88,8]]},"111":{"position":[[621,7]]},"134":{"position":[[451,7]]},"140":{"position":[[85,7]]}},"keywords":{}}],["request/daytot",{"_index":1213,"title":{},"content":{"101":{"position":[[222,17]]}},"keywords":{}}],["requestedapprov",{"_index":306,"title":{},"content":{"23":{"position":[[90,17]]}},"keywords":{}}],["requests"",{"_index":1253,"title":{},"content":{"106":{"position":[[253,15]]}},"keywords":{}}],["requests/day",{"_index":1214,"title":{},"content":{"101":{"position":[[245,12]]}},"keywords":{}}],["requests/dayus",{"_index":1212,"title":{},"content":{"101":{"position":[[181,16]]}},"keywords":{}}],["requestspul",{"_index":361,"title":{},"content":{"28":{"position":[[38,12]]}},"keywords":{}}],["requir",{"_index":51,"title":{"195":{"position":[[10,13]]}},"content":{"3":{"position":[[352,9]]},"135":{"position":[[367,8]]},"143":{"position":[[96,9]]},"146":{"position":[[684,12]]},"182":{"position":[[77,8]]},"195":{"position":[[26,9],[97,8]]},"224":{"position":[[134,8],[270,8]]},"272":{"position":[[1250,8],[2109,12]]},"273":{"position":[[423,12]]}},"keywords":{}}],["research",{"_index":2654,"title":{},"content":{"272":{"position":[[1538,9],[2279,8]]}},"keywords":{}}],["residu",{"_index":2472,"title":{},"content":{"255":{"position":[[1395,8],[1468,8],[1643,8],[2852,9]]}},"keywords":{}}],["resolv",{"_index":347,"title":{},"content":{"26":{"position":[[155,8]]}},"keywords":{}}],["resourc",{"_index":992,"title":{"77":{"position":[[3,8]]},"164":{"position":[[10,10]]}},"content":{"75":{"position":[[65,8],[380,9]]},"93":{"position":[[338,8]]},"94":{"position":[[11,8]]},"107":{"position":[[317,10]]}},"keywords":{}}],["resources."""",{"_index":1991,"title":{},"content":{"209":{"position":[[101,28]]}},"keywords":{}}],["respect",{"_index":365,"title":{},"content":{"28":{"position":[[120,11]]}},"keywords":{}}],["respond",{"_index":335,"title":{"26":{"position":[[0,10]]}},"content":{},"keywords":{}}],["respons",{"_index":441,"title":{"35":{"position":[[10,17]]},"87":{"position":[[12,8]]},"102":{"position":[[0,8]]},"106":{"position":[[13,10]]}},"content":{"31":{"position":[[1311,9]]},"43":{"position":[[660,15]]},"87":{"position":[[22,8],[73,9],[112,8],[144,8]]},"90":{"position":[[325,8],[375,9]]},"93":{"position":[[203,8],[226,8]]},"146":{"position":[[373,16]]}},"keywords":{}}],["responsibilityapi",{"_index":487,"title":{},"content":{"36":{"position":[[16,17]]}},"keywords":{}}],["responsibilityent",{"_index":512,"title":{},"content":{"37":{"position":[[124,20]]}},"keywords":{}}],["restart",{"_index":401,"title":{},"content":{"31":{"position":[[399,8]]},"33":{"position":[[237,7]]},"42":{"position":[[442,8]]},"51":{"position":[[171,9],[592,8],[1359,9]]},"62":{"position":[[51,8]]},"67":{"position":[[145,8]]},"72":{"position":[[196,7]]},"110":{"position":[[98,7]]},"157":{"position":[[251,8]]},"278":{"position":[[1577,7]]},"279":{"position":[[1296,7]]}},"keywords":{}}],["restart)config",{"_index":708,"title":{},"content":{"50":{"position":[[189,14]]}},"keywords":{}}],["restart)no",{"_index":767,"title":{},"content":{"52":{"position":[[419,10]]}},"keywords":{}}],["restartbuilt",{"_index":2811,"title":{},"content":{"278":{"position":[[1594,12]]}},"keywords":{}}],["restartstorag",{"_index":1075,"title":{},"content":{"79":{"position":[[341,14]]}},"keywords":{}}],["restrict",{"_index":2123,"title":{},"content":{"239":{"position":[[10,8]]},"250":{"position":[[138,11]]},"267":{"position":[[308,11]]}},"keywords":{}}],["restructuring)break",{"_index":1552,"title":{},"content":{"143":{"position":[[236,22]]}},"keywords":{}}],["restructuringtest",{"_index":200,"title":{},"content":{"14":{"position":[[190,18]]},"18":{"position":[[387,18]]}},"keywords":{}}],["result",{"_index":231,"title":{},"content":{"17":{"position":[[207,6],[264,6]]},"42":{"position":[[688,7]]},"124":{"position":[[41,6]]},"159":{"position":[[77,7]]},"160":{"position":[[67,7]]},"161":{"position":[[86,7]]},"162":{"position":[[70,7]]},"196":{"position":[[57,8]]},"200":{"position":[[170,6],[321,6]]},"206":{"position":[[200,7]]},"207":{"position":[[274,6],[341,6]]},"210":{"position":[[186,7],[264,7]]},"221":{"position":[[116,6],[226,6]]},"273":{"position":[[3239,7]]},"287":{"position":[[464,7]]}},"keywords":{}}],["results.append(enrich",{"_index":1980,"title":{},"content":{"206":{"position":[[148,24]]}},"keywords":{}}],["retri",{"_index":489,"title":{},"content":{"36":{"position":[[75,5]]},"106":{"position":[[573,5]]},"111":{"position":[[688,8]]},"278":{"position":[[1610,5]]},"289":{"position":[[83,5]]}},"keywords":{}}],["return",{"_index":76,"title":{},"content":{"3":{"position":[[717,7]]},"31":{"position":[[290,6],[538,6],[928,6]]},"51":{"position":[[1095,6],[1215,6]]},"200":{"position":[[314,6],[328,6]]},"204":{"position":[[480,6],[757,6]]},"205":{"position":[[240,6],[284,6]]},"213":{"position":[[203,6],[237,6]]},"221":{"position":[[219,6]]},"252":{"position":[[1209,7]]},"258":{"position":[[209,7]]},"278":{"position":[[757,6],[782,6],[964,6],[1033,6],[1469,7]]},"279":{"position":[[932,6]]},"283":{"position":[[218,6]]},"284":{"position":[[118,6],[517,6]]},"288":{"position":[[201,6],[299,6],[435,6],[484,6],[589,7]]},"292":{"position":[[74,6]]}},"keywords":{}}],["returnapexchart",{"_index":1131,"title":{},"content":{"87":{"position":[[89,16]]}},"keywords":{}}],["reusabl",{"_index":1611,"title":{},"content":{"149":{"position":[[90,8]]}},"keywords":{}}],["reverse_sort=reverse_sort",{"_index":2714,"title":{},"content":{"273":{"position":[[2074,26]]}},"keywords":{}}],["review",{"_index":299,"title":{"23":{"position":[[0,6]]},"24":{"position":[[5,6]]},"25":{"position":[[5,9]]}},"content":{"23":{"position":[[40,6]]},"70":{"position":[[259,6]]},"133":{"position":[[694,6]]},"176":{"position":[[315,6]]},"184":{"position":[[82,6]]}},"keywords":{}}],["reviewtransl",{"_index":1468,"title":{},"content":{"133":{"position":[[1059,17]]}},"keywords":{}}],["risk",{"_index":1587,"title":{},"content":{"146":{"position":[[541,5]]},"171":{"position":[[197,5]]},"273":{"position":[[3601,4],[3693,4]]}},"keywords":{}}],["rm",{"_index":1618,"title":{},"content":{"149":{"position":[[379,2]]}},"keywords":{}}],["roll",{"_index":548,"title":{},"content":{"37":{"position":[[795,7]]},"43":{"position":[[226,7],[514,7]]}},"keywords":{}}],["rollback",{"_index":1590,"title":{"193":{"position":[[3,8]]}},"content":{"146":{"position":[[610,8]]},"150":{"position":[[668,8]]},"152":{"position":[[100,8]]},"174":{"position":[[410,8]]}},"keywords":{}}],["room",{"_index":2371,"title":{},"content":{"248":{"position":[[156,4]]}},"keywords":{}}],["rotat",{"_index":1157,"title":{},"content":{"93":{"position":[[171,8]]},"284":{"position":[[291,9]]}},"keywords":{}}],["rough",{"_index":1687,"title":{},"content":{"159":{"position":[[194,5]]},"172":{"position":[[134,5]]}},"keywords":{}}],["round",{"_index":624,"title":{},"content":{"42":{"position":[[392,6]]},"279":{"position":[[1254,6]]}},"keywords":{}}],["round_to_nearest_quarter_hour",{"_index":2831,"title":{},"content":{"279":{"position":[[1162,31]]}},"keywords":{}}],["rout",{"_index":526,"title":{},"content":{"37":{"position":[[386,7],[1291,7]]},"43":{"position":[[369,7]]}},"keywords":{}}],["routingindepend",{"_index":671,"title":{},"content":{"43":{"position":[[1172,18]]}},"keywords":{}}],["ruff",{"_index":4,"title":{},"content":{"1":{"position":[[19,4]]},"15":{"position":[[128,4]]},"133":{"position":[[553,4]]}},"keywords":{}}],["rufflint",{"_index":1496,"title":{},"content":{"135":{"position":[[244,8]]}},"keywords":{}}],["rule",{"_index":1432,"title":{},"content":{"132":{"position":[[166,5]]},"169":{"position":[[73,5]]}},"keywords":{}}],["run",{"_index":18,"title":{"94":{"position":[[10,3]]},"116":{"position":[[0,3]]},"127":{"position":[[18,7]]},"225":{"position":[[0,7]]},"232":{"position":[[0,7]]}},"content":{"1":{"position":[[134,3]]},"15":{"position":[[42,3],[169,3]]},"17":{"position":[[291,3]]},"23":{"position":[[18,3]]},"75":{"position":[[29,3],[275,7]]},"77":{"position":[[1174,7]]},"83":{"position":[[216,7]]},"90":{"position":[[89,7]]},"94":{"position":[[3,3],[96,3],[295,3]]},"116":{"position":[[159,3]]},"120":{"position":[[159,3]]},"129":{"position":[[176,7]]},"131":{"position":[[369,3]]},"134":{"position":[[368,7]]},"138":{"position":[[63,3],[93,3],[151,3]]},"179":{"position":[[1,3]]},"194":{"position":[[531,4]]},"196":{"position":[[255,3]]},"201":{"position":[[42,3]]},"202":{"position":[[44,3]]},"224":{"position":[[8,7],[84,3],[408,4]]},"225":{"position":[[3,3],[33,3],[91,3]]},"246":{"position":[[169,7]]},"273":{"position":[[1124,3]]},"278":{"position":[[1737,8]]},"279":{"position":[[298,4]]},"283":{"position":[[482,3]]},"284":{"position":[[626,4]]},"289":{"position":[[184,9]]}},"keywords":{}}],["runninggithub",{"_index":2075,"title":{},"content":{"229":{"position":[[56,13]]}},"keywords":{}}],["runtim",{"_index":769,"title":{},"content":{"52":{"position":[[450,7]]},"67":{"position":[[775,7]]}},"keywords":{}}],["rust",{"_index":1832,"title":{},"content":{"179":{"position":[[891,4],[1172,4]]},"231":{"position":[[208,4]]}},"keywords":{}}],["s",{"_index":1328,"title":{},"content":{"116":{"position":[[89,1],[121,1]]},"121":{"position":[[216,3]]},"212":{"position":[[162,2]]}},"keywords":{}}],["s"",{"_index":1372,"title":{},"content":{"122":{"position":[[121,9]]}},"keywords":{}}],["safe",{"_index":1645,"title":{},"content":{"150":{"position":[[663,4]]},"247":{"position":[[404,4]]}},"keywords":{}}],["safeti",{"_index":914,"title":{"185":{"position":[[34,6]]},"188":{"position":[[4,6]]},"244":{"position":[[16,6]]},"247":{"position":[[16,6]]}},"content":{"62":{"position":[[651,7]]},"182":{"position":[[125,6]]}},"keywords":{}}],["same",{"_index":2136,"title":{},"content":{"239":{"position":[[731,4]]},"246":{"position":[[2242,4]]},"299":{"position":[[225,4]]}},"keywords":{}}],["save",{"_index":694,"title":{},"content":{"47":{"position":[[142,5]]},"57":{"position":[[911,8],[957,5]]},"59":{"position":[[6,5]]},"79":{"position":[[182,5],[307,4]]},"92":{"position":[[287,5]]},"246":{"position":[[771,8]]},"284":{"position":[[301,4]]}},"keywords":{}}],["savingsconfig",{"_index":679,"title":{},"content":{"46":{"position":[[23,13]]}},"keywords":{}}],["scale",{"_index":2180,"title":{"243":{"position":[[31,8]]}},"content":{"243":{"position":[[252,7],[302,5],[1195,7],[1950,8],[2089,7]]},"252":{"position":[[1453,6]]},"256":{"position":[[502,7]]},"260":{"position":[[143,7]]},"267":{"position":[[783,7],[878,5],[990,7]]},"270":{"position":[[90,8]]},"273":{"position":[[530,8],[556,7],[654,7],[729,7]]}},"keywords":{}}],["scale_factor",{"_index":2186,"title":{},"content":{"243":{"position":[[137,12],[237,12],[1380,12],[1489,12],[1505,12]]},"273":{"position":[[662,12],[737,12]]}},"keywords":{}}],["scale_factor_warning_threshold",{"_index":2218,"title":{},"content":{"243":{"position":[[1038,30],[1523,31]]}},"keywords":{}}],["scenario",{"_index":2156,"title":{"261":{"position":[[8,10]]},"262":{"position":[[0,8]]},"263":{"position":[[0,8]]},"264":{"position":[[0,8]]},"265":{"position":[[0,8]]},"266":{"position":[[0,8]]},"282":{"position":[[19,10]]},"283":{"position":[[0,8]]},"284":{"position":[[0,8]]},"285":{"position":[[0,8]]}},"content":{"241":{"position":[[52,9]]}},"keywords":{}}],["scenariomaintain",{"_index":2244,"title":{},"content":{"243":{"position":[[2285,17]]}},"keywords":{}}],["schedul",{"_index":495,"title":{"80":{"position":[[9,10]]}},"content":{"36":{"position":[[184,10]]},"42":{"position":[[139,11],[324,10],[368,9]]},"48":{"position":[[36,11]]},"73":{"position":[[36,11]]},"80":{"position":[[179,9],[353,8]]},"89":{"position":[[357,10]]},"92":{"position":[[330,10]]},"131":{"position":[[249,11]]},"137":{"position":[[168,10]]},"279":{"position":[[1225,8],[1404,11]]}},"keywords":{}}],["schedule_quarter_hour_refresh",{"_index":2974,"title":{},"content":{"299":{"position":[[33,31]]}},"keywords":{}}],["schema",{"_index":580,"title":{},"content":{"40":{"position":[[60,6]]},"137":{"position":[[437,7]]}},"keywords":{}}],["scope",{"_index":261,"title":{},"content":{"18":{"position":[[446,5]]},"143":{"position":[[495,5]]},"172":{"position":[[120,7]]},"174":{"position":[[27,5]]},"181":{"position":[[91,10],[160,10],[233,10],[322,10],[389,10]]}},"keywords":{}}],["script",{"_index":1361,"title":{"167":{"position":[[7,8]]},"179":{"position":[[9,6]]},"184":{"position":[[25,6]]}},"content":{"120":{"position":[[204,9]]},"135":{"position":[[37,7],[48,11]]},"170":{"position":[[79,7]]},"176":{"position":[[72,6]]},"179":{"position":[[755,6]]},"182":{"position":[[33,6],[86,6],[118,6],[224,6],[260,6]]},"184":{"position":[[250,6]]},"187":{"position":[[34,6]]},"189":{"position":[[13,6]]},"190":{"position":[[8,6]]},"191":{"position":[[8,6]]},"193":{"position":[[8,6]]},"224":{"position":[[196,6]]}},"keywords":{}}],["scripts/check",{"_index":1165,"title":{},"content":{"94":{"position":[[422,15]]}},"keywords":{}}],["scripts/develop",{"_index":216,"title":{},"content":{"16":{"position":[[1,17]]},"86":{"position":[[37,17]]},"94":{"position":[[479,17]]},"156":{"position":[[97,17]]},"167":{"position":[[44,17]]},"226":{"position":[[33,17]]},"232":{"position":[[38,17]]}},"keywords":{}}],["scripts/developmak",{"_index":1482,"title":{},"content":{"134":{"position":[[202,21]]}},"keywords":{}}],["scripts/lint",{"_index":21,"title":{},"content":{"1":{"position":[[158,14]]},"15":{"position":[[111,14]]},"22":{"position":[[144,15]]},"154":{"position":[[457,15]]},"156":{"position":[[49,14]]},"167":{"position":[[1,14],[85,14]]},"233":{"position":[[24,14],[62,14]]}},"keywords":{}}],["scripts/lintvalid",{"_index":1484,"title":{},"content":{"134":{"position":[[281,22]]}},"keywords":{}}],["scripts/release/gener",{"_index":1812,"title":{},"content":{"179":{"position":[[5,26],[143,26],[209,26],[284,26],[416,26],[514,26],[617,26],[697,26]]},"196":{"position":[[259,26]]}},"keywords":{}}],["scripts/release/hassfest",{"_index":26,"title":{},"content":{"1":{"position":[[191,26]]},"138":{"position":[[34,26]]},"224":{"position":[[150,26]]},"233":{"position":[[116,26]]}},"keywords":{}}],["scripts/release/hassfesttest",{"_index":1485,"title":{},"content":{"134":{"position":[[317,30]]}},"keywords":{}}],["scripts/release/prepar",{"_index":1780,"title":{},"content":{"176":{"position":[[98,25]]},"184":{"position":[[40,25]]},"187":{"position":[[1,23]]}},"keywords":{}}],["scripts/setup/setup",{"_index":1479,"title":{},"content":{"134":{"position":[[104,21]]},"179":{"position":[[1291,19]]}},"keywords":{}}],["scripts/test",{"_index":213,"title":{},"content":{"15":{"position":[[152,14]]},"17":{"position":[[307,14]]},"22":{"position":[[68,16]]},"94":{"position":[[45,14],[138,14],[323,14]]}},"keywords":{}}],["scripts/typ",{"_index":210,"title":{},"content":{"15":{"position":[[66,14]]},"22":{"position":[[106,15]]}},"keywords":{}}],["second",{"_index":620,"title":{},"content":{"42":{"position":[[307,8]]},"207":{"position":[[316,7]]},"279":{"position":[[1202,6]]},"280":{"position":[[879,7]]}},"keywords":{}}],["second=0",{"_index":614,"title":{},"content":{"42":{"position":[[208,9]]},"279":{"position":[[160,9]]}},"keywords":{}}],["seconds)coordinator/core.pi",{"_index":1101,"title":{},"content":{"83":{"position":[[116,27]]}},"keywords":{}}],["seconds)ha'",{"_index":1103,"title":{},"content":{"83":{"position":[[242,12]]}},"keywords":{}}],["seconds)hom",{"_index":2862,"title":{},"content":{"280":{"position":[[973,12]]}},"keywords":{}}],["seconds/day",{"_index":2964,"title":{},"content":{"294":{"position":[[172,11]]}},"keywords":{}}],["section",{"_index":1713,"title":{},"content":{"163":{"position":[[651,7]]},"196":{"position":[[174,8]]}},"keywords":{}}],["see",{"_index":106,"title":{},"content":{"3":{"position":[[1438,3]]},"8":{"position":[[170,3]]},"34":{"position":[[125,3]]},"69":{"position":[[53,3]]},"107":{"position":[[261,3]]},"140":{"position":[[1,3]]},"146":{"position":[[720,3]]},"163":{"position":[[637,3]]},"179":{"position":[[1508,4]]},"184":{"position":[[355,4]]},"185":{"position":[[477,4]]},"233":{"position":[[145,3]]},"239":{"position":[[125,3],[942,3]]},"243":{"position":[[855,3]]},"248":{"position":[[586,4]]},"267":{"position":[[724,6]]},"273":{"position":[[5027,3]]},"278":{"position":[[1496,3]]},"279":{"position":[[550,3]]},"301":{"position":[[340,4]]}},"keywords":{}}],["seem",{"_index":1678,"title":{},"content":{"159":{"position":[[21,5]]}},"keywords":{}}],["select",{"_index":1826,"title":{"215":{"position":[[12,10]]}},"content":{"179":{"position":[[776,7]]},"239":{"position":[[848,9]]},"246":{"position":[[516,10]]},"264":{"position":[[474,9]]}},"keywords":{}}],["selectionbett",{"_index":2667,"title":{},"content":{"272":{"position":[[2034,15]]}},"keywords":{}}],["selector",{"_index":764,"title":{},"content":{"52":{"position":[[257,8]]}},"keywords":{}}],["self",{"_index":313,"title":{},"content":{"25":{"position":[[17,4]]},"154":{"position":[[304,5]]}},"keywords":{}}],["self._attr_native_valu",{"_index":1368,"title":{},"content":{"121":{"position":[[257,24]]}},"keywords":{}}],["self._build_config",{"_index":1967,"title":{},"content":{"204":{"position":[[736,20]]}},"keywords":{}}],["self._cach",{"_index":1994,"title":{},"content":{"209":{"position":[[172,11]]}},"keywords":{}}],["self._cached_period",{"_index":851,"title":{},"content":{"56":{"position":[[1056,20]]}},"keywords":{}}],["self._cached_price_data",{"_index":733,"title":{},"content":{"51":{"position":[[771,23]]}},"keywords":{}}],["self._calculate_complex_attribut",{"_index":1975,"title":{},"content":{"205":{"position":[[247,36]]}},"keywords":{}}],["self._callback",{"_index":1997,"title":{},"content":{"209":{"position":[[282,16]]}},"keywords":{}}],["self._callbacks.append(weakref.ref(callback",{"_index":2000,"title":{},"content":{"209":{"position":[[352,45]]}},"keywords":{}}],["self._check_midnight_turnover_needed(dt_util.now",{"_index":2796,"title":{},"content":{"278":{"position":[[600,52]]}},"keywords":{}}],["self._check_midnight_turnover_needed(now",{"_index":2827,"title":{},"content":{"279":{"position":[[729,42]]}},"keywords":{}}],["self._compute_periods_hash(price_info",{"_index":855,"title":{},"content":{"56":{"position":[[1179,38]]}},"keywords":{}}],["self._config_cach",{"_index":1965,"title":{},"content":{"204":{"position":[[612,19],[687,18],[715,18],[764,18],[818,18]]}},"keywords":{}}],["self._data",{"_index":1993,"title":{},"content":{"209":{"position":[[154,10]]}},"keywords":{}}],["self._data_transformer.invalidate_config_cach",{"_index":809,"title":{},"content":{"55":{"position":[[493,48]]}},"keywords":{}}],["self._fetch_and_update_data",{"_index":2800,"title":{},"content":{"278":{"position":[[917,29]]}},"keywords":{}}],["self._fetch_data",{"_index":2019,"title":{},"content":{"213":{"position":[[250,18]]},"221":{"position":[[131,18]]}},"keywords":{}}],["self._handle_coordinator_upd",{"_index":2879,"title":{},"content":{"281":{"position":[[590,31]]}},"keywords":{}}],["self._is_cache_valid",{"_index":2015,"title":{},"content":{"213":{"position":[[134,23]]}},"keywords":{}}],["self._last_periods_hash",{"_index":852,"title":{},"content":{"56":{"position":[[1084,23],[1221,23]]}},"keywords":{}}],["self._last_price_upd",{"_index":735,"title":{},"content":{"51":{"position":[[834,23]]}},"keywords":{}}],["self._listener_manager.async_update_minute_listen",{"_index":2852,"title":{},"content":{"280":{"position":[[396,54]]}},"keywords":{}}],["self._listener_manager.async_update_time_sensitive_listen",{"_index":2830,"title":{},"content":{"279":{"position":[[1065,62]]}},"keywords":{}}],["self._listeners.clear",{"_index":1992,"title":{},"content":{"209":{"position":[[130,23]]}},"keywords":{}}],["self._perform_midnight_data_rotation(dt_util.now",{"_index":2797,"title":{},"content":{"278":{"position":[[659,51]]}},"keywords":{}}],["self._perform_midnight_data_rotation(now",{"_index":2828,"title":{},"content":{"279":{"position":[[844,41]]}},"keywords":{}}],["self._period_calculator.invalidate_config_cach",{"_index":810,"title":{},"content":{"55":{"position":[[542,49]]}},"keywords":{}}],["self._remove_listen",{"_index":2877,"title":{},"content":{"281":{"position":[[514,21]]}},"keywords":{}}],["self._should_update_price_data",{"_index":2799,"title":{},"content":{"278":{"position":[[847,32]]}},"keywords":{}}],["self._time_sensitive_listen",{"_index":2881,"title":{},"content":{"281":{"position":[[709,30],[974,31]]}},"keywords":{}}],["self._time_sensitive_listeners.append(callback",{"_index":2883,"title":{},"content":{"281":{"position":[[820,47]]}},"keywords":{}}],["self.async_request_refresh",{"_index":811,"title":{},"content":{"55":{"position":[[598,28]]}},"keywords":{}}],["self.coordinator.async_add_time_sensitive_listen",{"_index":2878,"title":{},"content":{"281":{"position":[[538,51]]}},"keywords":{}}],["self.data",{"_index":2018,"title":{},"content":{"213":{"position":[[210,9]]},"278":{"position":[[764,9],[971,9],[1040,9]]}},"keywords":{}}],["self.entity_description.key",{"_index":1973,"title":{},"content":{"205":{"position":[[181,27]]}},"keywords":{}}],["self.entity_id",{"_index":1367,"title":{},"content":{"121":{"position":[[241,15]]}},"keywords":{}}],["self.store_cach",{"_index":736,"title":{},"content":{"51":{"position":[[871,18]]}},"keywords":{}}],["semant",{"_index":2211,"title":{},"content":{"243":{"position":[[764,8],[2176,8]]},"259":{"position":[[145,8]]}},"keywords":{}}],["sensibl",{"_index":2346,"title":{},"content":{"246":{"position":[[2699,8]]}},"keywords":{}}],["sensit",{"_index":1013,"title":{},"content":{"77":{"position":[[86,9]]},"246":{"position":[[1373,9]]},"279":{"position":[[192,9],[1015,9]]},"283":{"position":[[44,9],[298,9]]},"285":{"position":[[74,9],[394,9]]},"297":{"position":[[49,9]]}},"keywords":{}}],["sensor",{"_index":242,"title":{"37":{"position":[[0,6]]},"43":{"position":[[22,7]]},"81":{"position":[[3,6]]},"121":{"position":[[0,7]]}},"content":{"18":{"position":[[97,6],[112,6],[485,6]]},"31":{"position":[[95,8],[1145,7]]},"36":{"position":[[413,7],[421,7],[489,7]]},"37":{"position":[[5,6],[434,6],[1247,8]]},"42":{"position":[[710,7]]},"43":{"position":[[1,7],[1139,6]]},"77":{"position":[[379,6],[576,7]]},"78":{"position":[[289,7]]},"81":{"position":[[220,6],[290,7]]},"86":{"position":[[171,7]]},"89":{"position":[[402,6]]},"92":{"position":[[377,6]]},"121":{"position":[[209,6]]},"136":{"position":[[272,7],[282,6],[539,6]]},"150":{"position":[[5,7],[130,7]]},"157":{"position":[[49,9]]},"166":{"position":[[160,6]]},"239":{"position":[[297,6],[530,6],[739,6],[886,6],[1070,6],[1173,6],[1332,6]]},"279":{"position":[[1673,7],[1783,7]]},"280":{"position":[[195,7]]}},"keywords":{}}],["sensor.pi",{"_index":1626,"title":{},"content":{"150":{"position":[[79,9]]},"170":{"position":[[345,9]]}},"keywords":{}}],["sensor.tibber_home_volatility_*default",{"_index":2127,"title":{},"content":{"239":{"position":[[402,39]]}},"keywords":{}}],["sensor/attribut",{"_index":522,"title":{},"content":{"37":{"position":[[318,18]]},"43":{"position":[[797,21]]}},"keywords":{}}],["sensor/calcul",{"_index":517,"title":{},"content":{"37":{"position":[[238,19],[619,22]]},"43":{"position":[[560,22]]}},"keywords":{}}],["sensor/chart_data.pi",{"_index":533,"title":{},"content":{"37":{"position":[[475,20]]}},"keywords":{}}],["sensor/core.pi",{"_index":513,"title":{},"content":{"37":{"position":[[151,14]]},"43":{"position":[[89,17]]},"83":{"position":[[58,14]]},"121":{"position":[[165,14]]},"154":{"position":[[186,16]]}},"keywords":{}}],["sensor/helpers.pi",{"_index":537,"title":{},"content":{"37":{"position":[[544,17]]},"154":{"position":[[134,19],[249,17]]}},"keywords":{}}],["sensor/helpers.pyif",{"_index":622,"title":{},"content":{"42":{"position":[[345,19]]}},"keywords":{}}],["sensor/value_getters.pi",{"_index":527,"title":{},"content":{"37":{"position":[[394,23]]},"43":{"position":[[377,26]]}},"keywords":{}}],["sensorperiod",{"_index":1927,"title":{},"content":{"198":{"position":[[96,12]]}},"keywords":{}}],["sensors)test",{"_index":1670,"title":{},"content":{"157":{"position":[[66,12]]}},"keywords":{}}],["sensorsclear",{"_index":669,"title":{},"content":{"43":{"position":[[1054,12]]}},"keywords":{}}],["sentenc",{"_index":1733,"title":{},"content":{"169":{"position":[[124,10]]}},"keywords":{}}],["separ",{"_index":510,"title":{},"content":{"37":{"position":[[55,10],[1132,11]]},"43":{"position":[[820,8],[1067,10]]},"57":{"position":[[90,10]]},"150":{"position":[[199,10]]},"163":{"position":[[442,8]]},"239":{"position":[[210,11],[873,11]]},"264":{"position":[[231,10]]}},"keywords":{}}],["sequenti",{"_index":1983,"title":{},"content":{"207":{"position":[[31,10]]}},"keywords":{}}],["serv",{"_index":1429,"title":{},"content":{"132":{"position":[[62,6]]},"149":{"position":[[326,6]]},"163":{"position":[[610,5]]}},"keywords":{}}],["servic",{"_index":382,"title":{"87":{"position":[[4,7]]}},"content":{"31":{"position":[[133,8],[1232,7],[1253,8]]},"36":{"position":[[555,8],[564,9],[581,7]]},"37":{"position":[[500,7]]},"87":{"position":[[65,7]]},"90":{"position":[[317,7],[367,7]]},"136":{"position":[[744,8]]},"156":{"position":[[207,8]]},"157":{"position":[[157,8],[174,7]]}},"keywords":{}}],["services.pi",{"_index":1516,"title":{},"content":{"136":{"position":[[723,11]]}},"keywords":{}}],["services/apexcharts.pi",{"_index":1136,"title":{},"content":{"87":{"position":[[193,22]]}},"keywords":{}}],["session",{"_index":1108,"title":{"84":{"position":[[7,7]]}},"content":{"84":{"position":[[103,8],[134,7]]},"90":{"position":[[108,7]]},"154":{"position":[[39,8]]}},"keywords":{}}],["session)no",{"_index":1110,"title":{},"content":{"84":{"position":[[88,10]]}},"keywords":{}}],["set",{"_index":179,"title":{"114":{"position":[[0,3]]}},"content":{"12":{"position":[[225,3]]},"94":{"position":[[604,8]]},"114":{"position":[[166,3]]},"117":{"position":[[1,3]]},"156":{"position":[[182,8]]},"210":{"position":[[93,3]]},"239":{"position":[[265,4]]},"273":{"position":[[3470,3]]}},"keywords":{}}],["settings)test",{"_index":1672,"title":{},"content":{"157":{"position":[[143,13]]}},"keywords":{}}],["settingsstal",{"_index":1061,"title":{},"content":{"78":{"position":[[310,13]]}},"keywords":{}}],["setup",{"_index":369,"title":{"228":{"position":[[12,5]]},"230":{"position":[[6,6]]}},"content":{"28":{"position":[[200,5]]},"31":{"position":[[1,5]]},"40":{"position":[[194,6]]},"47":{"position":[[56,6]]},"52":{"position":[[491,6]]},"131":{"position":[[1,5],[35,6]]},"134":{"position":[[97,6]]},"135":{"position":[[81,5]]},"136":{"position":[[64,5],[337,5]]},"137":{"position":[[572,5]]}},"keywords":{}}],["setupcod",{"_index":370,"title":{},"content":{"28":{"position":[[227,11]]}},"keywords":{}}],["setuptest",{"_index":698,"title":{},"content":{"48":{"position":[[188,12]]}},"keywords":{}}],["sever",{"_index":1120,"title":{},"content":{"86":{"position":[[105,7]]},"135":{"position":[[22,7]]}},"keywords":{}}],["share",{"_index":334,"title":{},"content":{"25":{"position":[[341,6]]},"38":{"position":[[198,6]]},"84":{"position":[[80,7]]},"136":{"position":[[575,6]]},"163":{"position":[[277,7]]}},"keywords":{}}],["sharp",{"_index":2315,"title":{},"content":{"246":{"position":[[1514,5],[1793,6]]}},"keywords":{}}],["shell",{"_index":1413,"title":{},"content":{"129":{"position":[[125,5]]}},"keywords":{}}],["shift",{"_index":2364,"title":{},"content":{"247":{"position":[[803,6]]},"255":{"position":[[1354,6]]}},"keywords":{}}],["shiftsadapt",{"_index":2521,"title":{},"content":{"255":{"position":[[3406,12]]}},"keywords":{}}],["short",{"_index":275,"title":{},"content":{"21":{"position":[[8,6]]},"83":{"position":[[45,5],[94,6],[160,6],[274,5]]},"93":{"position":[[123,5]]},"246":{"position":[[2124,5]]},"272":{"position":[[1710,5]]}},"keywords":{}}],["shorter",{"_index":2302,"title":{},"content":{"246":{"position":[[1117,7]]}},"keywords":{}}],["should_update_price_data",{"_index":907,"title":{},"content":{"61":{"position":[[28,26]]}},"keywords":{}}],["shouldn't",{"_index":1906,"title":{},"content":{"194":{"position":[[192,9]]}},"keywords":{}}],["show",{"_index":243,"title":{},"content":{"18":{"position":[[119,7]]},"42":{"position":[[411,6],[483,6]]},"116":{"position":[[125,4]]},"176":{"position":[[281,4]]},"184":{"position":[[119,4]]},"193":{"position":[[15,5]]},"256":{"position":[[223,5]]},"267":{"position":[[806,4]]},"273":{"position":[[2265,7]]},"279":{"position":[[431,4],[1273,6],[1336,6]]},"289":{"position":[[284,6]]}},"keywords":{}}],["shown",{"_index":975,"title":{"71":{"position":[[28,5]]}},"content":{},"keywords":{}}],["shutdown",{"_index":1072,"title":{},"content":{"79":{"position":[[191,8],[315,9]]}},"keywords":{}}],["side",{"_index":2146,"title":{},"content":{"239":{"position":[[1142,4]]},"252":{"position":[[2140,5]]},"278":{"position":[[1410,4]]}},"keywords":{}}],["side"",{"_index":2373,"title":{},"content":{"248":{"position":[[240,10]]}},"keywords":{}}],["sidewarn",{"_index":2607,"title":{},"content":{"267":{"position":[[667,11]]}},"keywords":{}}],["sigmoid",{"_index":2685,"title":{},"content":{"273":{"position":[[721,7]]}},"keywords":{}}],["signific",{"_index":2762,"title":{},"content":{"273":{"position":[[4333,12]]}},"keywords":{}}],["significantli",{"_index":2112,"title":{},"content":{"238":{"position":[[29,13]]},"243":{"position":[[618,13]]},"273":{"position":[[3065,14]]}},"keywords":{}}],["similar",{"_index":2352,"title":{},"content":{"247":{"position":[[253,7]]}},"keywords":{}}],["simpl",{"_index":1730,"title":{},"content":{"169":{"position":[[66,6]]},"179":{"position":[[935,6]]},"243":{"position":[[1960,6]]}},"keywords":{}}],["simpli",{"_index":1839,"title":{},"content":{"179":{"position":[[1312,6]]}},"keywords":{}}],["simul",{"_index":2664,"title":{},"content":{"272":{"position":[[1976,9]]}},"keywords":{}}],["simultan",{"_index":2655,"title":{},"content":{"272":{"position":[[1588,14]]}},"keywords":{}}],["singl",{"_index":66,"title":{"116":{"position":[[4,6]]}},"content":{"3":{"position":[[583,6],[784,6]]},"37":{"position":[[714,6]]},"43":{"position":[[405,6]]},"62":{"position":[[750,7]]},"255":{"position":[[2561,6],[3515,6]]}},"keywords":{}}],["size",{"_index":938,"title":{"216":{"position":[[10,5]]}},"content":{"67":{"position":[[21,4]]},"90":{"position":[[199,4]]},"255":{"position":[[899,5]]},"273":{"position":[[1432,4]]}},"keywords":{}}],["skip",{"_index":922,"title":{"159":{"position":[[2,4]]}},"content":{"64":{"position":[[53,4]]},"66":{"position":[[108,4]]},"186":{"position":[[346,5]]},"278":{"position":[[1526,4]]},"284":{"position":[[510,4]]},"288":{"position":[[473,4]]}},"keywords":{}}],["skip!)upd",{"_index":1606,"title":{},"content":{"148":{"position":[[91,12]]}},"keywords":{}}],["slight",{"_index":2197,"title":{},"content":{"243":{"position":[[408,6]]}},"keywords":{}}],["slope",{"_index":2456,"title":{},"content":{"255":{"position":[[953,5],[1009,5],[2922,6]]}},"keywords":{}}],["slow",{"_index":1977,"title":{},"content":{"206":{"position":[[38,4]]},"207":{"position":[[42,6]]},"218":{"position":[[343,5]]},"252":{"position":[[856,4]]},"255":{"position":[[3900,4]]}},"keywords":{}}],["small",{"_index":1559,"title":{},"content":{"143":{"position":[[505,5]]},"172":{"position":[[23,5]]},"255":{"position":[[2612,5]]},"263":{"position":[[107,5]]}},"keywords":{}}],["smaller",{"_index":326,"title":{},"content":{"25":{"position":[[204,7]]}},"keywords":{}}],["smart",{"_index":2014,"title":{"213":{"position":[[0,5]]}},"content":{"279":{"position":[[1130,5]]}},"keywords":{}}],["smooth",{"_index":2366,"title":{},"content":{"247":{"position":[[817,9]]},"255":{"position":[[694,6],[1721,6],[2508,9],[3017,8]]},"264":{"position":[[159,6],[343,8]]},"267":{"position":[[1120,9]]},"280":{"position":[[207,6],[705,6]]},"301":{"position":[[399,7]]}},"keywords":{}}],["snapshot",{"_index":828,"title":{},"content":{"56":{"position":[[368,8]]}},"keywords":{}}],["snippet",{"_index":1739,"title":{},"content":{"170":{"position":[[266,8]]}},"keywords":{}}],["snippetskeep",{"_index":1543,"title":{},"content":{"139":{"position":[[129,12]]}},"keywords":{}}],["solidno",{"_index":1601,"title":{},"content":{"147":{"position":[[123,7]]}},"keywords":{}}],["solut",{"_index":1582,"title":{"243":{"position":[[0,9]]}},"content":{"146":{"position":[[301,8]]},"159":{"position":[[151,9]]},"160":{"position":[[152,9]]},"161":{"position":[[145,9]]},"162":{"position":[[178,9]]},"258":{"position":[[218,9]]},"259":{"position":[[249,9]]},"260":{"position":[[179,9]]},"273":{"position":[[207,9],[1150,9],[3802,8]]}},"keywords":{}}],["solution"mor",{"_index":1747,"title":{},"content":{"171":{"position":[[121,18]]}},"keywords":{}}],["solv",{"_index":282,"title":{},"content":{"21":{"position":[[130,6]]},"252":{"position":[[1693,6]]},"279":{"position":[[280,7]]}},"keywords":{}}],["someth",{"_index":1694,"title":{},"content":{"160":{"position":[[133,9]]}},"keywords":{}}],["something"",{"_index":1702,"title":{},"content":{"162":{"position":[[150,15]]}},"keywords":{}}],["soon",{"_index":2072,"title":{},"content":{"227":{"position":[[8,7]]},"288":{"position":[[467,5]]}},"keywords":{}}],["sophist",{"_index":2666,"title":{},"content":{"272":{"position":[[2013,13]]}},"keywords":{}}],["sort",{"_index":1396,"title":{},"content":{"126":{"position":[[103,4]]}},"keywords":{}}],["sourc",{"_index":649,"title":{},"content":{"43":{"position":[[412,6]]},"149":{"position":[[361,6]]}},"keywords":{}}],["span/avg",{"_index":2753,"title":{},"content":{"273":{"position":[[3958,9]]}},"keywords":{}}],["special",{"_index":521,"title":{},"content":{"37":{"position":[[282,11],[365,11]]}},"keywords":{}}],["specif",{"_index":115,"title":{},"content":{"4":{"position":[[15,9]]},"132":{"position":[[257,8]]},"138":{"position":[[97,8]]},"163":{"position":[[706,8]]},"179":{"position":[[195,8],[337,8]]},"195":{"position":[[10,8],[81,8]]},"225":{"position":[[37,8]]},"239":{"position":[[30,8]]},"246":{"position":[[1401,8]]},"269":{"position":[[294,8]]},"272":{"position":[[1065,8]]},"281":{"position":[[151,8]]}},"keywords":{}}],["speed",{"_index":754,"title":{},"content":{"51":{"position":[[1346,6]]}},"keywords":{}}],["spend",{"_index":1686,"title":{},"content":{"159":{"position":[[172,5]]}},"keywords":{}}],["spike",{"_index":2253,"title":{},"content":{"245":{"position":[[208,5]]},"246":{"position":[[935,6],[1520,6]]},"255":{"position":[[716,6],[1504,5],[1713,5],[1810,5],[2010,7],[2243,5]]},"264":{"position":[[175,6]]},"267":{"position":[[1167,7]]},"287":{"position":[[499,7]]}},"keywords":{}}],["spike?"",{"_index":2335,"title":{},"content":{"246":{"position":[[2218,12]]}},"keywords":{}}],["spikes20",{"_index":2303,"title":{},"content":{"246":{"position":[[1135,9]]}},"keywords":{}}],["spikessolut",{"_index":2330,"title":{},"content":{"246":{"position":[[1947,15]]}},"keywords":{}}],["spikesus",{"_index":2334,"title":{},"content":{"246":{"position":[[2144,10]]}},"keywords":{}}],["split",{"_index":325,"title":{},"content":{"25":{"position":[[193,5]]},"143":{"position":[[117,9]]},"150":{"position":[[257,9],[704,9]]},"166":{"position":[[25,9]]},"174":{"position":[[539,9]]},"273":{"position":[[3091,6],[4702,5]]}},"keywords":{}}],["spot",{"_index":2740,"title":{},"content":{"273":{"position":[[3464,5]]}},"keywords":{}}],["spread",{"_index":2658,"title":{},"content":{"272":{"position":[[1748,7]]},"273":{"position":[[3951,6]]},"278":{"position":[[1263,6]]},"287":{"position":[[481,6]]}},"keywords":{}}],["stabil",{"_index":252,"title":{},"content":{"18":{"position":[[258,9]]},"94":{"position":[[665,9]]}},"keywords":{}}],["stabl",{"_index":2322,"title":{},"content":{"246":{"position":[[1730,6]]}},"keywords":{}}],["stale",{"_index":394,"title":{"69":{"position":[[9,5]]}},"content":{"31":{"position":[[317,5]]},"67":{"position":[[1022,5]]},"78":{"position":[[274,5]]},"92":{"position":[[256,5]]},"279":{"position":[[436,5]]}},"keywords":{}}],["standard",{"_index":38,"title":{"139":{"position":[[17,10]]}},"content":{"3":{"position":[[87,8]]},"40":{"position":[[1,8]]},"52":{"position":[[198,8]]},"136":{"position":[[853,8]]},"195":{"position":[[139,8]]},"243":{"position":[[361,8]]},"255":{"position":[[963,8],[1083,8]]},"272":{"position":[[452,8]]},"289":{"position":[[3,8]]}},"keywords":{}}],["start",{"_index":157,"title":{"10":{"position":[[8,8]]},"134":{"position":[[9,5]]},"169":{"position":[[40,5]]},"176":{"position":[[9,6]]}},"content":{"16":{"position":[[21,5]]},"27":{"position":[[175,8]]},"94":{"position":[[469,5]]},"124":{"position":[[13,5],[104,5]]},"135":{"position":[[112,5]]},"154":{"position":[[494,6]]},"156":{"position":[[90,6]]},"159":{"position":[[54,5]]},"167":{"position":[[64,5]]},"173":{"position":[[109,6]]},"200":{"position":[[142,5],[234,5]]},"218":{"position":[[193,5],[300,5]]},"226":{"position":[[3,5]]},"232":{"position":[[3,5]]},"243":{"position":[[1009,5]]},"252":{"position":[[1766,8]]},"263":{"position":[[621,8]]},"272":{"position":[[1409,5]]},"273":{"position":[[2297,5],[2719,5],[3281,6],[4392,5]]},"278":{"position":[[376,5],[1093,6]]}},"keywords":{}}],["starthigh",{"_index":2378,"title":{},"content":{"248":{"position":[[464,11]]}},"keywords":{}}],["starts_at",{"_index":2702,"title":{},"content":{"273":{"position":[[1726,9]]}},"keywords":{}}],["starts_at.d",{"_index":2705,"title":{},"content":{"273":{"position":[[1784,16]]}},"keywords":{}}],["startsat",{"_index":836,"title":{},"content":{"56":{"position":[[604,10]]},"100":{"position":[[180,8]]}},"keywords":{}}],["startup",{"_index":946,"title":{},"content":{"67":{"position":[[807,8]]},"156":{"position":[[127,7]]}},"keywords":{}}],["startup?transl",{"_index":983,"title":{},"content":{"72":{"position":[[45,19]]}},"keywords":{}}],["stat",{"_index":653,"title":{},"content":{"43":{"position":[[534,6]]},"126":{"position":[[117,5]]},"184":{"position":[[110,4]]},"215":{"position":[[184,6]]}},"keywords":{}}],["stat_func",{"_index":647,"title":{},"content":{"43":{"position":[[268,10]]}},"keywords":{}}],["state",{"_index":524,"title":{"215":{"position":[[0,5]]}},"content":{"37":{"position":[[343,5]]},"43":{"position":[[858,5]]},"52":{"position":[[858,5]]},"121":{"position":[[19,6]]},"152":{"position":[[122,6]]},"154":{"position":[[294,6]]},"156":{"position":[[339,6]]},"215":{"position":[[223,5]]},"226":{"position":[[111,6]]},"265":{"position":[[9,6]]},"266":{"position":[[9,6]]},"269":{"position":[[434,6]]},"272":{"position":[[1792,6]]},"277":{"position":[[237,5]]},"279":{"position":[[209,6]]},"280":{"position":[[843,5]]},"290":{"position":[[20,5]]},"293":{"position":[[152,5]]},"301":{"position":[[148,5]]}},"keywords":{}}],["state/attribut",{"_index":2131,"title":{},"content":{"239":{"position":[[537,16]]}},"keywords":{}}],["state_attr('binary_sensor.tibber_home_best_price_period",{"_index":2759,"title":{},"content":{"273":{"position":[[4154,57]]}},"keywords":{}}],["state_class=non",{"_index":2024,"title":{},"content":{"215":{"position":[[191,16]]}},"keywords":{}}],["state_class=sensorstateclass.measur",{"_index":2021,"title":{},"content":{"215":{"position":[[89,40]]}},"keywords":{}}],["state_class=sensorstateclass.tot",{"_index":2026,"title":{},"content":{"215":{"position":[[257,34]]}},"keywords":{}}],["statement",{"_index":1332,"title":{"241":{"position":[[8,10]]}},"content":{"116":{"position":[[136,10]]},"146":{"position":[[210,9]]}},"keywords":{}}],["states.sensor.tibber_home_current_interval_price.last_upd",{"_index":1363,"title":{},"content":{"121":{"position":[[65,61]]}},"keywords":{}}],["statesent",{"_index":435,"title":{},"content":{"31":{"position":[[1169,14]]}},"keywords":{}}],["stationari",{"_index":2520,"title":{},"content":{"255":{"position":[[3300,10]]}},"keywords":{}}],["statist",{"_index":500,"title":{},"content":{"36":{"position":[[471,10]]},"43":{"position":[[357,10]]},"122":{"position":[[197,11]]},"137":{"position":[[234,11]]},"215":{"position":[[19,10]]},"255":{"position":[[2385,10]]},"256":{"position":[[183,11]]},"262":{"position":[[257,11]]},"263":{"position":[[336,11]]},"264":{"position":[[397,11]]},"267":{"position":[[57,10]]}},"keywords":{}}],["statistics)do",{"_index":880,"title":{},"content":{"57":{"position":[[523,15]]}},"keywords":{}}],["statisticswindow_24h.pi",{"_index":553,"title":{},"content":{"37":{"position":[[851,23]]}},"keywords":{}}],["statu",{"_index":873,"title":{"88":{"position":[[17,7]]},"91":{"position":[[15,7]]}},"content":{"57":{"position":[[74,7]]},"83":{"position":[[9,7]]},"84":{"position":[[9,7]]},"85":{"position":[[9,7]]},"86":{"position":[[9,7]]},"87":{"position":[[9,7]]},"89":{"position":[[10,6]]},"90":{"position":[[10,6]]},"146":{"position":[[77,11]]},"148":{"position":[[158,6]]},"239":{"position":[[1578,7]]},"272":{"position":[[754,7],[1452,7],[2271,7]]},"273":{"position":[[4938,7]]}},"keywords":{}}],["stay",{"_index":628,"title":{},"content":{"42":{"position":[[465,5]]},"101":{"position":[[121,5]]},"137":{"position":[[489,4]]},"163":{"position":[[593,4]]},"279":{"position":[[1318,5]]}},"keywords":{}}],["std",{"_index":2468,"title":{},"content":{"255":{"position":[[1319,3],[2125,3],[2900,3]]}},"keywords":{}}],["std_dev",{"_index":2462,"title":{},"content":{"255":{"position":[[1121,7],[1457,7]]}},"keywords":{}}],["stdlib",{"_index":114,"title":{},"content":{"4":{"position":[[8,6]]}},"keywords":{}}],["step",{"_index":1595,"title":{},"content":{"146":{"position":[[712,5]]},"153":{"position":[[179,5]]},"154":{"position":[[228,10]]},"174":{"position":[[456,6]]},"184":{"position":[[3,4],[74,4],[133,4]]},"185":{"position":[[3,4],[134,4],[225,4]]},"186":{"position":[[3,4],[141,4]]},"245":{"position":[[465,6],[500,5],[549,6],[584,5]]},"252":{"position":[[121,4],[192,4],[1097,6],[1161,4],[1631,7]]},"270":{"position":[[17,5]]},"273":{"position":[[20,5]]},"278":{"position":[[529,4],[791,4],[983,4]]},"279":{"position":[[666,4],[941,4]]}},"keywords":{}}],["step_pct",{"_index":2421,"title":{},"content":{"252":{"position":[[1501,9]]}},"keywords":{}}],["stick",{"_index":2340,"title":{},"content":{"246":{"position":[[2383,5]]}},"keywords":{}}],["still",{"_index":932,"title":{},"content":{"65":{"position":[[293,5]]},"149":{"position":[[598,5]]},"161":{"position":[[54,5]]},"182":{"position":[[155,5]]},"246":{"position":[[942,5]]},"247":{"position":[[872,5]]},"260":{"position":[[161,5]]},"266":{"position":[[319,5]]},"267":{"position":[[946,5]]},"278":{"position":[[1731,5]]},"283":{"position":[[202,5]]},"288":{"position":[[270,5]]},"289":{"position":[[178,5]]}},"keywords":{}}],["stop",{"_index":2204,"title":{},"content":{"243":{"position":[[559,4]]},"253":{"position":[[108,4],[376,6]]},"273":{"position":[[3254,5]]}},"keywords":{}}],["storag",{"_index":705,"title":{"79":{"position":[[3,7]]}},"content":{"50":{"position":[[118,8]]},"51":{"position":[[37,7],[616,7]]},"57":{"position":[[949,7]]},"62":{"position":[[39,7]]},"75":{"position":[[345,7]]},"79":{"position":[[91,7],[126,7],[239,7]]},"83":{"position":[[152,7]]},"89":{"position":[[243,7],[293,7]]},"92":{"position":[[276,7]]},"137":{"position":[[121,7]]},"215":{"position":[[30,8]]}},"keywords":{}}],["storage/tibber_prices.<entry_id>",{"_index":711,"title":{},"content":{"51":{"position":[[45,41]]}},"keywords":{}}],["storage/tibber_prices.{entry_id",{"_index":1076,"title":{},"content":{"79":{"position":[[362,33]]}},"keywords":{}}],["storage_key",{"_index":1954,"title":{},"content":{"204":{"position":[[117,12]]}},"keywords":{}}],["storage_vers",{"_index":1953,"title":{},"content":{"204":{"position":[[100,16]]}},"keywords":{}}],["store",{"_index":417,"title":{},"content":{"31":{"position":[[744,5]]},"204":{"position":[[80,5]]},"215":{"position":[[67,7]]},"255":{"position":[[2350,6]]},"272":{"position":[[1317,8]]},"299":{"position":[[127,7]]}},"keywords":{}}],["store(hass",{"_index":1952,"title":{},"content":{"204":{"position":[[88,11]]}},"keywords":{}}],["store.async_load",{"_index":1955,"title":{},"content":{"204":{"position":[[143,18]]}},"keywords":{}}],["storequart",{"_index":1524,"title":{},"content":{"137":{"position":[[133,12]]}},"keywords":{}}],["str",{"_index":1959,"title":{},"content":{"204":{"position":[[300,4],[315,4]]},"288":{"position":[[89,4]]}},"keywords":{}}],["straightforward",{"_index":1560,"title":{},"content":{"143":{"position":[[552,17]]},"159":{"position":[[27,16]]}},"keywords":{}}],["strategi",{"_index":484,"title":{"49":{"position":[[8,8]]},"155":{"position":[[8,9]]},"249":{"position":[[11,9]]},"253":{"position":[[19,9]]}},"content":{"34":{"position":[[137,9]]},"48":{"position":[[91,8]]},"131":{"position":[[304,8]]},"146":{"position":[[403,8],[619,8]]},"170":{"position":[[402,8]]},"222":{"position":[[204,8]]},"235":{"position":[[230,9]]},"275":{"position":[[79,8]]},"300":{"position":[[56,8]]}},"keywords":{}}],["strategy"new",{"_index":1749,"title":{},"content":{"171":{"position":[[179,17]]}},"keywords":{}}],["strategyagents.md",{"_index":2783,"title":{},"content":{"274":{"position":[[68,17]]}},"keywords":{}}],["strategycoordinator/periods.pi",{"_index":2096,"title":{},"content":{"235":{"position":[[550,30]]}},"keywords":{}}],["strategyestim",{"_index":1738,"title":{},"content":{"170":{"position":[[206,17]]}},"keywords":{}}],["strategytim",{"_index":1422,"title":{},"content":{"131":{"position":[[206,13]]}},"keywords":{}}],["strict",{"_index":2380,"title":{},"content":{"250":{"position":[[77,7],[112,6]]},"266":{"position":[[16,6]]},"267":{"position":[[250,6]]},"273":{"position":[[416,6]]}},"keywords":{}}],["stricter",{"_index":2282,"title":{},"content":{"246":{"position":[[507,8],[1822,8]]}},"keywords":{}}],["string",{"_index":763,"title":{},"content":{"52":{"position":[[166,8]]},"226":{"position":[[152,7]]}},"keywords":{}}],["strong",{"_index":2201,"title":{},"content":{"243":{"position":[[473,6]]}},"keywords":{}}],["structur",{"_index":29,"title":{"86":{"position":[[20,9]]},"103":{"position":[[11,10]]},"136":{"position":[[11,10]]},"153":{"position":[[6,10]]},"210":{"position":[[15,11]]}},"content":{"1":{"position":[[241,9]]},"46":{"position":[[228,9]]},"86":{"position":[[219,10]]},"90":{"position":[[246,9]]},"93":{"position":[[140,9]]},"129":{"position":[[246,9]]},"131":{"position":[[78,10]]},"133":{"position":[[360,10]]},"135":{"position":[[335,9]]},"138":{"position":[[24,9]]},"146":{"position":[[339,9]]},"150":{"position":[[799,10]]},"161":{"position":[[74,10]]},"216":{"position":[[44,10]]},"224":{"position":[[70,10]]},"233":{"position":[[106,9]]}},"keywords":{}}],["stuck",{"_index":1690,"title":{},"content":{"159":{"position":[[242,6]]}},"keywords":{}}],["style",{"_index":2,"title":{"1":{"position":[[5,6]]}},"content":{"28":{"position":[[252,5]]},"131":{"position":[[483,5]]}},"keywords":{}}],["sub",{"_index":2863,"title":{},"content":{"280":{"position":[[1017,3]]}},"keywords":{}}],["subentri",{"_index":476,"title":{},"content":{"33":{"position":[[554,11]]},"47":{"position":[[74,10]]},"67":{"position":[[527,11]]}},"keywords":{}}],["submit",{"_index":296,"title":{},"content":{"22":{"position":[[8,11]]}},"keywords":{}}],["suboptim",{"_index":2561,"title":{},"content":{"260":{"position":[[167,10]]}},"keywords":{}}],["subscript",{"_index":719,"title":{},"content":{"51":{"position":[[358,14]]}},"keywords":{}}],["subtl",{"_index":1465,"title":{},"content":{"133":{"position":[[996,6]]}},"keywords":{}}],["succeed",{"_index":2602,"title":{},"content":{"267":{"position":[[434,10]]}},"keywords":{}}],["succeeded"high",{"_index":2543,"title":{},"content":{"256":{"position":[[417,19]]}},"keywords":{}}],["success",{"_index":1591,"title":{"173":{"position":[[39,12]]},"265":{"position":[[23,8]]}},"content":{"146":{"position":[[631,7]]},"149":{"position":[[69,11],[262,10]]},"150":{"position":[[49,10]]},"153":{"position":[[120,7]]},"154":{"position":[[402,9]]},"160":{"position":[[204,10]]},"163":{"position":[[415,10]]},"253":{"position":[[368,7]]},"256":{"position":[[377,7]]},"265":{"position":[[351,7],[381,7]]},"267":{"position":[[451,7],[489,7]]}},"keywords":{}}],["success/failur",{"_index":2948,"title":{},"content":{"289":{"position":[[309,16]]}},"keywords":{}}],["successfulli",{"_index":1280,"title":{},"content":{"111":{"position":[[69,12]]},"154":{"position":[[501,12]]}},"keywords":{}}],["such",{"_index":2416,"title":{},"content":{"252":{"position":[[1267,4]]}},"keywords":{}}],["sudo",{"_index":1857,"title":{},"content":{"179":{"position":[[1792,4]]}},"keywords":{}}],["suffici",{"_index":2377,"title":{},"content":{"248":{"position":[[448,10]]},"272":{"position":[[399,10]]},"280":{"position":[[905,10]]}},"keywords":{}}],["suggest",{"_index":2399,"title":{},"content":{"252":{"position":[[464,7]]}},"keywords":{}}],["summari",{"_index":936,"title":{"67":{"position":[[0,7]]},"174":{"position":[[0,8]]},"301":{"position":[[0,8]]}},"content":{},"keywords":{}}],["supersed",{"_index":1646,"title":{},"content":{"150":{"position":[[769,10]]}},"keywords":{}}],["support",{"_index":1233,"title":{},"content":{"104":{"position":[[45,9]]},"163":{"position":[[77,8]]},"279":{"position":[[1952,7]]}},"keywords":{}}],["supportdock",{"_index":2074,"title":{},"content":{"229":{"position":[[28,13]]}},"keywords":{}}],["supportedhtml",{"_index":1914,"title":{},"content":{"195":{"position":[[173,14]]}},"keywords":{}}],["surpris",{"_index":1735,"title":{},"content":{"170":{"position":[[45,10]]}},"keywords":{}}],["surround",{"_index":2453,"title":{},"content":{"255":{"position":[[845,11]]}},"keywords":{}}],["surviv",{"_index":400,"title":{},"content":{"31":{"position":[[386,9]]}},"keywords":{}}],["sv)async",{"_index":1534,"title":{},"content":{"137":{"position":[[540,8]]}},"keywords":{}}],["swedish",{"_index":1241,"title":{},"content":{"104":{"position":[[148,8]]}},"keywords":{}}],["swing",{"_index":2362,"title":{},"content":{"247":{"position":[[740,5]]}},"keywords":{}}],["symmetr",{"_index":2332,"title":{},"content":{"246":{"position":[[2051,9]]},"255":{"position":[[1513,9],[1739,9]]}},"keywords":{}}],["symmetri",{"_index":2467,"title":{},"content":{"255":{"position":[[1259,8],[3324,8]]}},"keywords":{}}],["symmetry_threshold",{"_index":2474,"title":{},"content":{"255":{"position":[[1430,18],[1657,18],[2141,18]]}},"keywords":{}}],["symptom",{"_index":958,"title":{"69":{"position":[[0,8]]},"70":{"position":[[0,8]]},"71":{"position":[[0,8]]},"72":{"position":[[0,8]]}},"content":{},"keywords":{}}],["sync",{"_index":1529,"title":{},"content":{"137":{"position":[[497,4]]},"163":{"position":[[601,4]]}},"keywords":{}}],["synchron",{"_index":776,"title":{"290":{"position":[[11,12]]}},"content":{"52":{"position":[[653,11],[955,12]]},"278":{"position":[[310,12]]},"279":{"position":[[328,12]]},"284":{"position":[[172,13]]},"286":{"position":[[182,13]]},"287":{"position":[[27,12]]},"301":{"position":[[314,12],[379,12]]}},"keywords":{}}],["synchronizeddocument",{"_index":1449,"title":{},"content":{"133":{"position":[[427,26]]}},"keywords":{}}],["syncwrong",{"_index":1357,"title":{},"content":{"120":{"position":[[166,9]]}},"keywords":{}}],["syntax",{"_index":1354,"title":{},"content":{"120":{"position":[[84,6]]},"135":{"position":[[359,7]]},"224":{"position":[[111,7],[126,7],[321,7],[362,6]]}},"keywords":{}}],["system",{"_index":577,"title":{"40":{"position":[[20,7]]}},"content":{"48":{"position":[[28,7]]},"73":{"position":[[28,7],[92,6]]},"75":{"position":[[373,6]]},"131":{"position":[[241,7]]},"137":{"position":[[396,7],[410,7]]},"222":{"position":[[242,6]]},"278":{"position":[[189,6]]},"300":{"position":[[24,6]]}},"keywords":{}}],["systems)cod",{"_index":951,"title":{},"content":{"67":{"position":[[883,12]]}},"keywords":{}}],["tabl",{"_index":937,"title":{"67":{"position":[[8,6]]}},"content":{"243":{"position":[[260,5]]}},"keywords":{}}],["tag",{"_index":1785,"title":{"185":{"position":[[30,3]]},"186":{"position":[[19,3]]},"190":{"position":[[16,5]]}},"content":{"176":{"position":[[265,4],[416,3],[765,3],[819,3]]},"179":{"position":[[131,3],[204,4],[272,3]]},"180":{"position":[[28,3],[98,4],[147,3],[184,3],[261,3]]},"182":{"position":[[98,3],[147,7],[339,3],[370,3]]},"184":{"position":[[297,3],[326,3],[360,3]]},"185":{"position":[[247,3],[306,3],[405,3],[443,3],[486,3]]},"186":{"position":[[156,3],[173,3],[284,3],[333,3],[352,4]]},"187":{"position":[[112,3],[201,3]]},"189":{"position":[[29,3]]},"190":{"position":[[25,3],[57,3],[80,3]]},"191":{"position":[[32,3]]},"194":{"position":[[48,3],[56,3],[79,3],[181,4],[432,3],[440,3],[492,3],[510,4],[571,3]]},"195":{"position":[[217,4]]},"196":{"position":[[426,3]]}},"keywords":{}}],["tag)gener",{"_index":1505,"title":{},"content":{"135":{"position":[[506,12]]}},"keywords":{}}],["tag.github/workflows/auto",{"_index":1886,"title":{},"content":{"187":{"position":[[66,25]]}},"keywords":{}}],["tag.yml",{"_index":1887,"title":{},"content":{"187":{"position":[[92,7]]}},"keywords":{}}],["tagclick",{"_index":1801,"title":{},"content":{"178":{"position":[[112,8]]}},"keywords":{}}],["take",{"_index":337,"title":{},"content":{"26":{"position":[[7,4]]},"152":{"position":[[198,5]]}},"keywords":{}}],["takeaway",{"_index":1768,"title":{},"content":{"174":{"position":[[5,10]]}},"keywords":{}}],["tar",{"_index":1854,"title":{},"content":{"179":{"position":[[1764,3]]}},"keywords":{}}],["tar.gz",{"_index":1856,"title":{},"content":{"179":{"position":[[1783,8]]}},"keywords":{}}],["target",{"_index":1470,"title":{},"content":{"133":{"position":[[1118,6]]},"198":{"position":[[1,6]]},"235":{"position":[[241,6]]},"251":{"position":[[188,6]]},"253":{"position":[[130,6]]},"265":{"position":[[41,6]]},"266":{"position":[[398,6]]},"267":{"position":[[577,6]]}},"keywords":{}}],["target=2",{"_index":2435,"title":{},"content":{"253":{"position":[[196,9]]}},"keywords":{}}],["target=2/day",{"_index":2590,"title":{},"content":{"265":{"position":[[123,13]]},"266":{"position":[[116,13]]}},"keywords":{}}],["task",{"_index":1098,"title":{"83":{"position":[[9,4]]}},"content":{"83":{"position":[[51,5],[224,5],[280,5]]},"90":{"position":[[32,4],[97,6]]},"92":{"position":[[164,4]]},"93":{"position":[[67,4]]}},"keywords":{}}],["tasks)data",{"_index":1156,"title":{},"content":{"93":{"position":[[129,10]]}},"keywords":{}}],["tasksfil",{"_index":1007,"title":{},"content":{"75":{"position":[[321,9]]}},"keywords":{}}],["technic",{"_index":90,"title":{},"content":{"3":{"position":[[1206,9]]},"163":{"position":[[496,10]]}},"keywords":{}}],["templat",{"_index":273,"title":{"21":{"position":[[3,9]]},"146":{"position":[[20,9]]}},"content":{"121":{"position":[[53,8]]},"146":{"position":[[756,8]]},"179":{"position":[[465,9],[906,9],[1487,9]]},"187":{"position":[[284,8]]},"196":{"position":[[322,9]]},"273":{"position":[[4121,8]]}},"keywords":{}}],["templatecheck",{"_index":1776,"title":{},"content":{"174":{"position":[[501,13]]}},"keywords":{}}],["tempor",{"_index":2632,"title":{},"content":{"270":{"position":[[154,8]]},"273":{"position":[[925,8]]}},"keywords":{}}],["temporari",{"_index":1264,"title":{},"content":{"106":{"position":[[652,9]]},"150":{"position":[[477,9]]},"278":{"position":[[1626,9]]},"289":{"position":[[99,9]]}},"keywords":{}}],["tend",{"_index":2314,"title":{},"content":{"246":{"position":[[1499,4]]}},"keywords":{}}],["term",{"_index":1430,"title":{},"content":{"132":{"position":[[77,4]]},"163":{"position":[[136,4]]},"215":{"position":[[14,4],[179,4]]}},"keywords":{}}],["terminolog",{"_index":2865,"title":{"281":{"position":[[28,13]]}},"content":{"281":{"position":[[98,12]]},"301":{"position":[[513,12]]}},"keywords":{}}],["territoryus",{"_index":2415,"title":{},"content":{"252":{"position":[[1217,13]]}},"keywords":{}}],["test",{"_index":201,"title":{"16":{"position":[[3,4]]},"17":{"position":[[9,6]]},"74":{"position":[[29,7]]},"75":{"position":[[17,5]]},"76":{"position":[[2,4]]},"88":{"position":[[3,4]]},"89":{"position":[[14,5]]},"92":{"position":[[24,7]]},"93":{"position":[[16,5]]},"94":{"position":[[14,6]]},"116":{"position":[[11,4]]},"117":{"position":[[6,4]]},"118":{"position":[[7,4]]},"138":{"position":[[3,8]]},"155":{"position":[[0,7]]},"157":{"position":[[14,7]]},"217":{"position":[[0,7]]},"218":{"position":[[10,6]]},"219":{"position":[[5,8]]},"223":{"position":[[0,7]]},"225":{"position":[[8,6]]},"226":{"position":[[7,8]]},"227":{"position":[[0,4]]},"261":{"position":[[0,7]]}},"content":{"14":{"position":[[211,4]]},"15":{"position":[[173,5]]},"17":{"position":[[5,5],[14,7],[300,5]]},"18":{"position":[[408,4]]},"21":{"position":[[192,7],[213,7],[250,5]]},"22":{"position":[[57,5]]},"25":{"position":[[248,5]]},"48":{"position":[[216,4]]},"67":{"position":[[942,7]]},"77":{"position":[[72,7],[947,7],[1487,7]]},"78":{"position":[[79,7]]},"79":{"position":[[117,7]]},"80":{"position":[[47,7]]},"81":{"position":[[54,7]]},"83":{"position":[[193,5]]},"86":{"position":[[26,6]]},"89":{"position":[[17,5]]},"90":{"position":[[279,4],[405,6],[471,7]]},"92":{"position":[[65,6]]},"93":{"position":[[40,5],[307,4]]},"94":{"position":[[28,5],[38,6],[121,5],[131,6],[303,5],[459,4]]},"116":{"position":[[163,5]]},"117":{"position":[[19,4]]},"129":{"position":[[148,7]]},"131":{"position":[[373,5],[393,4]]},"133":{"position":[[655,7]]},"138":{"position":[[71,5],[84,6],[106,4],[214,6]]},"146":{"position":[[518,7],[676,7]]},"152":{"position":[[47,7]]},"153":{"position":[[171,7]]},"156":{"position":[[9,7],[289,5]]},"157":{"position":[[31,4]]},"160":{"position":[[41,4],[162,4]]},"167":{"position":[[77,7]]},"170":{"position":[[198,7],[394,7]]},"174":{"position":[[165,4]]},"181":{"position":[[379,7]]},"182":{"position":[[267,7]]},"196":{"position":[[241,4]]},"224":{"position":[[16,5]]},"225":{"position":[[11,5],[24,6],[46,4],[154,6]]},"226":{"position":[[58,4]]},"239":{"position":[[1022,7]]},"272":{"position":[[720,7]]},"273":{"position":[[910,7]]}},"keywords":{}}],["test"",{"_index":1335,"title":{},"content":{"117":{"position":[[46,10]]}},"keywords":{}}],["test?estim",{"_index":1660,"title":{},"content":{"153":{"position":[[195,13]]}},"keywords":{}}],["test_coordinator_shutdown.pi",{"_index":1141,"title":{},"content":{"89":{"position":[[317,28]]}},"keywords":{}}],["test_multiple_homes_performance(hass",{"_index":2045,"title":{},"content":{"219":{"position":[[36,38]]}},"keywords":{}}],["test_period_calculation_performance(coordin",{"_index":2037,"title":{},"content":{"218":{"position":[[54,49]]}},"keywords":{}}],["test_periods(hass",{"_index":1343,"title":{},"content":{"118":{"position":[[225,18]]}},"keywords":{}}],["test_resource_cleanup.pi",{"_index":1140,"title":{},"content":{"89":{"position":[[57,24],[105,24],[160,24],[213,24],[263,24]]}},"keywords":{}}],["test_sensor_timer_assignment.pi",{"_index":1144,"title":{},"content":{"89":{"position":[[431,31]]}},"keywords":{}}],["test_something(coordin",{"_index":1337,"title":{},"content":{"118":{"position":[[30,28]]}},"keywords":{}}],["test_timer_scheduling.pi",{"_index":1142,"title":{},"content":{"89":{"position":[[372,24]]}},"keywords":{}}],["test_your_feature(hass",{"_index":225,"title":{},"content":{"17":{"position":[[69,23]]}},"keywords":{}}],["testabl",{"_index":568,"title":{},"content":{"37":{"position":[[1204,11]]},"43":{"position":[[1191,11]]}},"keywords":{}}],["testedservic",{"_index":1158,"title":{},"content":{"93":{"position":[[189,13]]}},"keywords":{}}],["tests/test_coordinator.pi",{"_index":1535,"title":{},"content":{"138":{"position":[[123,25]]},"225":{"position":[[63,25]]}},"keywords":{}}],["tests/test_coordinator_shutdown.pi",{"_index":1068,"title":{},"content":{"79":{"position":[[40,34]]},"94":{"position":[[184,34]]}},"keywords":{}}],["tests/test_period_calculation.py::test_midnight_cross",{"_index":1327,"title":{},"content":{"116":{"position":[[28,56]]}},"keywords":{}}],["tests/test_resource_cleanup.pi",{"_index":1011,"title":{},"content":{"77":{"position":[[7,30]]},"78":{"position":[[7,30]]},"79":{"position":[[7,30]]},"94":{"position":[[60,30],[153,30]]}},"keywords":{}}],["tests/test_sensor_timer_assignment.pi",{"_index":1087,"title":{},"content":{"81":{"position":[[7,37]]},"94":{"position":[[252,37]]}},"keywords":{}}],["tests/test_timer_scheduling.pi",{"_index":1078,"title":{},"content":{"80":{"position":[[7,30]]},"94":{"position":[[221,30]]}},"keywords":{}}],["tests/test_your_feature.pi",{"_index":235,"title":{},"content":{"17":{"position":[[322,26]]}},"keywords":{}}],["testsreleas",{"_index":372,"title":{},"content":{"28":{"position":[[281,12]]}},"keywords":{}}],["testssetup",{"_index":1414,"title":{},"content":{"129":{"position":[[184,10]]}},"keywords":{}}],["that'",{"_index":2924,"title":{},"content":{"286":{"position":[[200,6]]}},"keywords":{}}],["theoret",{"_index":2653,"title":{},"content":{"272":{"position":[[1460,11]]}},"keywords":{}}],["theori",{"_index":1418,"title":{"234":{"position":[[19,6]]}},"content":{"131":{"position":[[133,6]]}},"keywords":{}}],["theseaffect",{"_index":2138,"title":{},"content":{"239":{"position":[[817,13]]}},"keywords":{}}],["thing",{"_index":1654,"title":{},"content":{"152":{"position":[[190,7]]},"174":{"position":[[431,6]]}},"keywords":{}}],["thoroughli",{"_index":104,"title":{},"content":{"3":{"position":[[1408,10]]}},"keywords":{}}],["though",{"_index":2167,"title":{},"content":{"241":{"position":[[449,6]]}},"keywords":{}}],["thread",{"_index":913,"title":{},"content":{"62":{"position":[[644,6],[758,8]]}},"keywords":{}}],["three",{"_index":2097,"title":{},"content":{"236":{"position":[[23,5]]},"277":{"position":[[22,5]]},"301":{"position":[[1,5],[424,5]]}},"keywords":{}}],["threshold",{"_index":153,"title":{},"content":{"8":{"position":[[154,11]]},"41":{"position":[[609,10]]},"56":{"position":[[901,11]]},"57":{"position":[[627,11]]},"66":{"position":[[204,11]]},"107":{"position":[[217,10]]},"239":{"position":[[187,10],[284,11],[304,10],[573,10],[893,10],[985,10],[1652,10]]},"243":{"position":[[101,9]]},"246":{"position":[[1977,10]]},"248":{"position":[[178,10]]},"255":{"position":[[1303,11],[2188,9],[3075,10],[3350,10]]},"264":{"position":[[316,11]]},"273":{"position":[[2771,9],[2923,9]]},"288":{"position":[[424,10]]}},"keywords":{}}],["thresholdat",{"_index":2361,"title":{},"content":{"247":{"position":[[696,11]]}},"keywords":{}}],["through",{"_index":1608,"title":{},"content":{"148":{"position":[[144,7]]},"159":{"position":[[93,8]]},"255":{"position":[[2573,7]]}},"keywords":{}}],["throughout",{"_index":683,"title":{},"content":{"46":{"position":[[161,10]]},"262":{"position":[[210,10]]},"272":{"position":[[1756,10]]}},"keywords":{}}],["tibber",{"_index":396,"title":{"287":{"position":[[31,6]]}},"content":{"31":{"position":[[331,6]]},"36":{"position":[[67,7]]},"41":{"position":[[87,6]]},"51":{"position":[[117,6],[387,6],[1311,6]]},"94":{"position":[[625,6]]},"100":{"position":[[232,6]]},"101":{"position":[[1,6]]},"107":{"position":[[329,6]]},"136":{"position":[[141,6]]},"156":{"position":[[218,6]]},"229":{"position":[[83,6]]},"278":{"position":[[1236,6]]},"285":{"position":[[177,6]]},"287":{"position":[[82,6],[134,6]]}},"keywords":{}}],["tibber'",{"_index":1228,"title":{},"content":{"103":{"position":[[265,8]]},"107":{"position":[[244,8]]}},"keywords":{}}],["tibberpric",{"_index":95,"title":{},"content":{"3":{"position":[[1254,12]]}},"keywords":{}}],["tibberpricesapicli",{"_index":43,"title":{},"content":{"3":{"position":[[163,22]]}},"keywords":{}}],["tibberpricesdata",{"_index":2794,"title":{},"content":{"278":{"position":[[509,17]]}},"keywords":{}}],["tibberpricesdatafetch",{"_index":83,"title":{},"content":{"3":{"position":[[1053,23]]}},"keywords":{}}],["tibberpricesdataupdatecoordin",{"_index":44,"title":{},"content":{"3":{"position":[[192,34]]},"278":{"position":[[29,33]]}},"keywords":{}}],["tibberpricesintervalcriteria",{"_index":2709,"title":{},"content":{"273":{"position":[[1890,29]]}},"keywords":{}}],["tibberpricessensor",{"_index":45,"title":{},"content":{"3":{"position":[[233,19]]},"136":{"position":[[359,18]]}},"keywords":{}}],["tibberpricessensor(coordinatorent",{"_index":2874,"title":{},"content":{"281":{"position":[[397,38]]}},"keywords":{}}],["tick",{"_index":1765,"title":{},"content":{"173":{"position":[[268,4]]}},"keywords":{}}],["time",{"_index":124,"title":{"6":{"position":[[0,4]]},"124":{"position":[[0,4]]},"200":{"position":[[0,6]]}},"content":{"36":{"position":[[179,4]]},"42":{"position":[[522,4]]},"51":{"position":[[438,5]]},"52":{"position":[[876,5]]},"55":{"position":[[826,5]]},"56":{"position":[[1655,4],[1837,5]]},"67":{"position":[[648,4],[720,4]]},"77":{"position":[[81,4]]},"87":{"position":[[128,4]]},"90":{"position":[[284,4]]},"94":{"position":[[590,5]]},"100":{"position":[[355,4]]},"124":{"position":[[8,4]]},"152":{"position":[[209,4]]},"153":{"position":[[209,4],[226,4]]},"154":{"position":[[383,7]]},"157":{"position":[[288,4]]},"159":{"position":[[144,5]]},"170":{"position":[[224,4]]},"200":{"position":[[49,4],[343,7]]},"218":{"position":[[22,4]]},"219":{"position":[[344,5]]},"221":{"position":[[1,7]]},"246":{"position":[[152,4],[219,4],[368,6],[1633,5],[1650,5]]},"255":{"position":[[141,5],[2681,5]]},"259":{"position":[[242,5]]},"272":{"position":[[1114,4]]},"273":{"position":[[1240,4]]},"277":{"position":[[465,6]]},"278":{"position":[[382,5],[1122,5]]},"279":{"position":[[187,4],[1010,4],[1399,4],[1998,4]]},"281":{"position":[[160,5]]},"283":{"position":[[39,4],[293,4]]},"285":{"position":[[69,4],[389,4]]},"288":{"position":[[380,4]]},"289":{"position":[[303,5]]},"290":{"position":[[152,6]]},"297":{"position":[[44,4]]}},"keywords":{}}],["time)progress",{"_index":2859,"title":{},"content":{"280":{"position":[[752,13]]}},"keywords":{}}],["time)us",{"_index":725,"title":{},"content":{"51":{"position":[[537,9]]}},"keywords":{}}],["time.get_interval_time(price_data",{"_index":2703,"title":{},"content":{"273":{"position":[[1738,34]]}},"keywords":{}}],["time.perf_count",{"_index":1378,"title":{},"content":{"124":{"position":[[21,19],[82,19]]},"200":{"position":[[150,19],[212,19]]},"218":{"position":[[201,19],[278,19]]}},"keywords":{}}],["time_sensitive_entity_key",{"_index":1088,"title":{},"content":{"81":{"position":[[67,26]]}},"keywords":{}}],["time_since_last_upd",{"_index":2942,"title":{},"content":{"288":{"position":[[396,22]]}},"keywords":{}}],["timer",{"_index":631,"title":{"80":{"position":[[3,5]]},"81":{"position":[[13,5]]},"276":{"position":[[0,5]]},"278":{"position":[[0,5]]},"279":{"position":[[0,5]]},"280":{"position":[[0,5]]},"282":{"position":[[0,5]]},"286":{"position":[[17,5],[23,6]]},"288":{"position":[[15,5]]},"292":{"position":[[0,5]]},"293":{"position":[[0,5]]},"294":{"position":[[0,5]]},"295":{"position":[[10,5]]},"296":{"position":[[6,5]]},"297":{"position":[[6,5]]},"298":{"position":[[6,5]]}},"content":{"42":{"position":[[537,5]]},"48":{"position":[[1,5],[22,5]]},"51":{"position":[[667,6]]},"60":{"position":[[1,5]]},"71":{"position":[[83,6],[132,5]]},"73":{"position":[[1,5],[22,5]]},"75":{"position":[[259,6]]},"77":{"position":[[921,5],[969,5],[1016,5],[1061,6],[1114,6],[1158,6],[1286,6]]},"80":{"position":[[69,5],[119,5],[275,5],[332,5],[382,6]]},"81":{"position":[[271,5]]},"89":{"position":[[87,5],[351,5],[409,5]]},"92":{"position":[[128,6],[324,5],[384,5]]},"131":{"position":[[235,5]]},"277":{"position":[[40,5],[82,5],[195,5],[281,5],[375,5],[413,5],[447,5]]},"278":{"position":[[183,5],[587,5],[1100,5],[1559,6]]},"279":{"position":[[96,5],[289,5],[497,5],[716,5],[774,5],[1234,5],[1910,6]]},"280":{"position":[[90,5],[686,6]]},"281":{"position":[[27,5],[112,5],[248,5],[919,5],[1072,5],[1105,5]]},"283":{"position":[[12,5],[127,5],[266,5],[357,5],[460,5],[473,5]]},"284":{"position":[[12,5],[148,5],[381,5]]},"285":{"position":[[12,5],[104,5],[306,5],[432,5],[480,5]]},"286":{"position":[[39,5]]},"287":{"position":[[40,7],[217,6]]},"288":{"position":[[1,5],[536,5]]},"290":{"position":[[3,5],[70,5],[132,5]]},"294":{"position":[[192,6]]},"296":{"position":[[253,6]]},"297":{"position":[[141,6]]},"299":{"position":[[1,5],[214,6]]},"301":{"position":[[19,7],[28,5],[248,5],[527,5]]}},"keywords":{}}],["timer)midnight",{"_index":1081,"title":{},"content":{"80":{"position":[[203,14]]}},"keywords":{}}],["timerbest_price_progress",{"_index":2855,"title":{},"content":{"280":{"position":[[564,24]]}},"keywords":{}}],["timerpeak_price_remaining_minut",{"_index":2854,"title":{},"content":{"280":{"position":[[518,33]]}},"keywords":{}}],["timers)cach",{"_index":695,"title":{},"content":{"48":{"position":[[76,14]]},"131":{"position":[[289,14]]}},"keywords":{}}],["times/day",{"_index":2954,"title":{},"content":{"292":{"position":[[188,9]]},"293":{"position":[[14,9]]},"294":{"position":[[16,9]]}},"keywords":{}}],["times/dayapi",{"_index":2953,"title":{},"content":{"292":{"position":[[163,12]]}},"keywords":{}}],["timeservic",{"_index":50,"title":{},"content":{"3":{"position":[[322,12]]},"255":{"position":[[147,12]]}},"keywords":{}}],["timeservicecallback)smal",{"_index":73,"title":{},"content":{"3":{"position":[[657,25]]}},"keywords":{}}],["timesoverlap",{"_index":1094,"title":{},"content":{"81":{"position":[[314,12]]}},"keywords":{}}],["timesreason",{"_index":2284,"title":{},"content":{"246":{"position":[[550,15]]}},"keywords":{}}],["timestamp",{"_index":1226,"title":{},"content":{"103":{"position":[[235,9]]},"210":{"position":[[56,9],[119,9]]}},"keywords":{}}],["timestamp_list",{"_index":2004,"title":{},"content":{"210":{"position":[[69,15]]}},"keywords":{}}],["timestamp_set",{"_index":2006,"title":{},"content":{"210":{"position":[[132,14]]}},"keywords":{}}],["timeswithout",{"_index":1084,"title":{},"content":{"80":{"position":[[319,12]]}},"keywords":{}}],["timezon",{"_index":135,"title":{},"content":{"6":{"position":[[196,8]]},"99":{"position":[[126,8]]}},"keywords":{}}],["timezonelevel",{"_index":1227,"title":{},"content":{"103":{"position":[[250,14]]}},"keywords":{}}],["timing(func",{"_index":1935,"title":{},"content":{"200":{"position":[[75,13]]}},"keywords":{}}],["timing."""",{"_index":2052,"title":{},"content":{"221":{"position":[[90,25]]}},"keywords":{}}],["timing_dur",{"_index":2055,"title":{},"content":{"221":{"position":[[202,16]]}},"keywords":{}}],["timingmetadata.pi",{"_index":558,"title":{},"content":{"37":{"position":[[1027,17]]}},"keywords":{}}],["timingw",{"_index":2845,"title":{},"content":{"279":{"position":[[1975,8]]}},"keywords":{}}],["tip",{"_index":309,"title":{"24":{"position":[[12,5]]},"196":{"position":[[3,5]]},"256":{"position":[[10,5]]}},"content":{"52":{"position":[[365,5]]}},"keywords":{}}],["tipsboth",{"_index":585,"title":{},"content":{"40":{"position":[[163,8]]}},"keywords":{}}],["titl",{"_index":274,"title":{},"content":{"21":{"position":[[1,6]]}},"keywords":{}}],["today",{"_index":850,"title":{"71":{"position":[[37,6]]}},"content":{"56":{"position":[[951,5],[1418,5]]}},"keywords":{}}],["today'",{"_index":846,"title":{},"content":{"56":{"position":[[845,8]]}},"keywords":{}}],["today_d",{"_index":741,"title":{},"content":{"51":{"position":[[1042,10]]}},"keywords":{}}],["today_signatur",{"_index":835,"title":{},"content":{"56":{"position":[[585,16]]}},"keywords":{}}],["togeth",{"_index":909,"title":{},"content":{"62":{"position":[[17,9]]}},"keywords":{}}],["togetherask",{"_index":340,"title":{},"content":{"26":{"position":[[49,11]]}},"keywords":{}}],["togethercleanup",{"_index":1037,"title":{},"content":{"77":{"position":[[1082,15]]}},"keywords":{}}],["togetherreleas",{"_index":1880,"title":{},"content":{"184":{"position":[[330,15]]}},"keywords":{}}],["token",{"_index":1183,"title":{},"content":{"97":{"position":[[61,5]]},"106":{"position":[[9,6]]},"107":{"position":[[377,5]]},"229":{"position":[[94,6]]}},"keywords":{}}],["tokenburst",{"_index":1210,"title":{},"content":{"101":{"position":[[66,10]]}},"keywords":{}}],["toler",{"_index":496,"title":{},"content":{"36":{"position":[[209,9]]},"42":{"position":[[293,9]]},"56":{"position":[[1762,10]]},"239":{"position":[[156,9]]},"255":{"position":[[1482,10],[2875,10]]},"279":{"position":[[1145,10]]}},"keywords":{}}],["toleranceaccount",{"_index":2465,"title":{},"content":{"255":{"position":[[1194,17]]}},"keywords":{}}],["toleranceha",{"_index":2832,"title":{},"content":{"279":{"position":[[1209,11]]}},"keywords":{}}],["tomorrow",{"_index":746,"title":{"61":{"position":[[0,8]]},"285":{"position":[[12,8]]}},"content":{"51":{"position":[[1108,8]]},"56":{"position":[[1438,8]]},"61":{"position":[[62,8],[73,8],[124,8],[256,8]]},"212":{"position":[[88,8]]},"278":{"position":[[816,8]]},"283":{"position":[[176,8]]},"285":{"position":[[130,8]]},"287":{"position":[[447,8]]},"288":{"position":[[116,8],[633,8]]},"299":{"position":[[313,8]]}},"keywords":{}}],["tomorrow_check)"",{"_index":2967,"title":{},"content":{"296":{"position":[[126,21]]}},"keywords":{}}],["tomorrow_invalid",{"_index":750,"title":{},"content":{"51":{"position":[[1197,17]]},"288":{"position":[[183,17]]}},"keywords":{}}],["tomorrow_miss",{"_index":749,"title":{},"content":{"51":{"position":[[1177,16]]},"288":{"position":[[163,16]]}},"keywords":{}}],["took",{"_index":1382,"title":{},"content":{"124":{"position":[[139,4]]},"200":{"position":[[263,4]]}},"keywords":{}}],["tool",{"_index":1362,"title":{"135":{"position":[[16,6]]},"164":{"position":[[0,5]]}},"content":{"121":{"position":[[42,5]]},"133":{"position":[[98,7],[1219,5]]},"135":{"position":[[410,5]]},"179":{"position":[[896,4]]},"222":{"position":[[277,5]]},"289":{"position":[[204,5]]}},"keywords":{}}],["toolchain",{"_index":1835,"title":{},"content":{"179":{"position":[[1177,10]]},"231":{"position":[[213,9]]}},"keywords":{}}],["tooling)hom",{"_index":2082,"title":{},"content":{"231":{"position":[[114,12]]}},"keywords":{}}],["top",{"_index":1127,"title":{},"content":{"86":{"position":[[390,3]]}},"keywords":{}}],["total",{"_index":469,"title":{"89":{"position":[[24,7]]}},"content":{"33":{"position":[[486,5]]},"64":{"position":[[280,6]]},"65":{"position":[[306,6]]},"66":{"position":[[283,6]]},"67":{"position":[[464,5]]},"89":{"position":[[468,5]]},"100":{"position":[[174,5]]},"103":{"position":[[146,6]]},"215":{"position":[[233,5]]},"279":{"position":[[1892,5]]},"280":{"position":[[668,5]]},"294":{"position":[[150,5]]}},"keywords":{}}],["total)us",{"_index":717,"title":{},"content":{"51":{"position":[[322,10]]}},"keywords":{}}],["totalmodul",{"_index":1116,"title":{},"content":{"85":{"position":[[67,11]]}},"keywords":{}}],["totalredund",{"_index":691,"title":{},"content":{"47":{"position":[[94,15]]}},"keywords":{}}],["touch",{"_index":1569,"title":{},"content":{"145":{"position":[[88,5]]}},"keywords":{}}],["tracebackmiss",{"_index":1355,"title":{},"content":{"120":{"position":[[129,16]]}},"keywords":{}}],["tracemalloc",{"_index":1384,"title":{},"content":{"125":{"position":[[8,11]]},"201":{"position":[[8,11]]}},"keywords":{}}],["tracemalloc.get_traced_memori",{"_index":1386,"title":{},"content":{"125":{"position":[[76,31]]},"201":{"position":[[72,31]]}},"keywords":{}}],["tracemalloc.start",{"_index":1385,"title":{},"content":{"125":{"position":[[20,19]]},"201":{"position":[[20,19]]}},"keywords":{}}],["tracemalloc.stop",{"_index":1390,"title":{},"content":{"125":{"position":[[177,18]]},"201":{"position":[[200,18]]}},"keywords":{}}],["track",{"_index":630,"title":{"222":{"position":[[7,9]]}},"content":{"42":{"position":[[527,9]]},"83":{"position":[[366,8]]},"272":{"position":[[936,5]]}},"keywords":{}}],["trade",{"_index":947,"title":{},"content":{"67":{"position":[[817,5]]},"272":{"position":[[1890,5]]},"273":{"position":[[3006,5]]}},"keywords":{}}],["trail",{"_index":601,"title":{},"content":{"41":{"position":[[446,8],[515,8]]},"107":{"position":[[33,8]]}},"keywords":{}}],["trailing/lead",{"_index":410,"title":{},"content":{"31":{"position":[[636,16]]},"37":{"position":[[877,16]]},"38":{"position":[[129,16]]},"43":{"position":[[340,16]]}},"keywords":{}}],["trailing_avg_24h",{"_index":877,"title":{},"content":{"57":{"position":[[260,18]]}},"keywords":{}}],["transform",{"_index":403,"title":{"57":{"position":[[3,14]]},"107":{"position":[[5,15]]}},"content":{"31":{"position":[[492,14],[767,14]]},"33":{"position":[[392,14]]},"36":{"position":[[224,11]]},"55":{"position":[[843,15]]},"60":{"position":[[177,14]]},"62":{"position":[[164,14]]},"64":{"position":[[172,15]]},"65":{"position":[[203,15]]},"67":{"position":[[370,14]]},"279":{"position":[[2085,14]]},"280":{"position":[[359,15]]},"285":{"position":[[199,9],[468,11]]},"292":{"position":[[126,9]]},"293":{"position":[[124,15]]}},"keywords":{}}],["transit",{"_index":900,"title":{"60":{"position":[[23,12]]}},"content":{},"keywords":{}}],["translat",{"_index":138,"title":{"7":{"position":[[0,11]]},"40":{"position":[[8,11]]},"52":{"position":[[3,11]]},"72":{"position":[[17,13]]},"85":{"position":[[3,11]]}},"content":{"33":{"position":[[201,11]]},"38":{"position":[[232,12],[254,11]]},"40":{"position":[[10,12],[90,12]]},"52":{"position":[[207,12],[294,12],[575,11]]},"62":{"position":[[317,11]]},"64":{"position":[[256,12]]},"65":{"position":[[274,12]]},"67":{"position":[[114,12],[783,13]]},"72":{"position":[[80,14],[217,11]]},"90":{"position":[[173,11]]},"136":{"position":[[837,13],[865,12],[914,12]]},"137":{"position":[[384,11],[418,14]]},"204":{"position":[[167,11]]},"224":{"position":[[287,11]]}},"keywords":{}}],["translations/*.json",{"_index":578,"title":{},"content":{"40":{"position":[[23,23]]},"52":{"position":[[220,23]]}},"keywords":{}}],["transparent)may",{"_index":2642,"title":{},"content":{"272":{"position":[[655,15]]}},"keywords":{}}],["trend",{"_index":241,"title":{},"content":{"18":{"position":[[91,5],[145,5]]},"37":{"position":[[965,5]]},"78":{"position":[[378,5],[401,5]]},"255":{"position":[[947,5],[1758,6],[2916,5],[3186,6]]},"264":{"position":[[364,6]]}},"keywords":{}}],["trendcalcul",{"_index":658,"title":{},"content":{"43":{"position":[[696,16],[747,15]]}},"keywords":{}}],["trendsiqr",{"_index":2530,"title":{},"content":{"255":{"position":[[3788,9]]}},"keywords":{}}],["tri",{"_index":2396,"title":{},"content":{"252":{"position":[[350,3]]},"253":{"position":[[17,3],[152,3]]},"266":{"position":[[255,5]]}},"keywords":{}}],["trigger",{"_index":386,"title":{},"content":{"31":{"position":[[184,8]]},"42":{"position":[[225,7],[625,9],[653,7]]},"51":{"position":[[638,9]]},"55":{"position":[[363,8]]},"56":{"position":[[977,9]]},"59":{"position":[[57,8]]},"69":{"position":[[165,8]]},"180":{"position":[[80,9],[154,7]]},"196":{"position":[[435,8]]},"246":{"position":[[664,7]]},"277":{"position":[[110,7]]},"279":{"position":[[1555,9],[1584,7],[2003,9]]},"281":{"position":[[139,8],[925,9]]},"283":{"position":[[21,8],[136,8],[275,8],[366,8]]},"284":{"position":[[21,8],[157,8],[390,8]]},"285":{"position":[[21,8],[113,8],[315,8]]},"289":{"position":[[242,7]]},"292":{"position":[[1,9]]},"293":{"position":[[1,9]]},"294":{"position":[[1,9]]},"299":{"position":[[14,11]]}},"keywords":{}}],["triggers)classifi",{"_index":2644,"title":{},"content":{"272":{"position":[[987,17]]}},"keywords":{}}],["triggerslisten",{"_index":2989,"title":{},"content":{"301":{"position":[[550,16]]}},"keywords":{}}],["triggersobserv",{"_index":2873,"title":{},"content":{"281":{"position":[[254,16]]}},"keywords":{}}],["triggert"",{"_index":2922,"title":{},"content":{"286":{"position":[[129,14]]}},"keywords":{}}],["trotzdem",{"_index":2912,"title":{},"content":{"286":{"position":[[45,8]]}},"keywords":{}}],["troubleshoot",{"_index":1900,"title":{"194":{"position":[[3,16]]}},"content":{},"keywords":{}}],["true",{"_index":2547,"title":{},"content":{"258":{"position":[[61,4],[302,4]]}},"keywords":{}}],["truli",{"_index":2283,"title":{},"content":{"246":{"position":[[538,5]]},"263":{"position":[[196,5]]}},"keywords":{}}],["truth",{"_index":650,"title":{},"content":{"43":{"position":[[422,5]]},"149":{"position":[[371,6]]}},"keywords":{}}],["tuple(best_config.item",{"_index":838,"title":{},"content":{"56":{"position":[[647,27]]}},"keywords":{}}],["tuple(peak_config.item",{"_index":840,"title":{},"content":{"56":{"position":[[695,27]]}},"keywords":{}}],["tuple[bool",{"_index":2445,"title":{},"content":{"255":{"position":[[341,11]]}},"keywords":{}}],["tuple[dict",{"_index":2447,"title":{},"content":{"255":{"position":[[513,11],[563,11]]}},"keywords":{}}],["turn",{"_index":2288,"title":{},"content":{"246":{"position":[[680,5]]}},"keywords":{}}],["turn)reli",{"_index":2409,"title":{},"content":{"252":{"position":[[989,13]]}},"keywords":{}}],["turnov",{"_index":723,"title":{"60":{"position":[[9,8]]},"65":{"position":[[15,9]]},"284":{"position":[[21,9]]}},"content":{"51":{"position":[[498,8],[658,8]]},"57":{"position":[[666,8]]},"71":{"position":[[64,8]]},"80":{"position":[[218,8]]},"86":{"position":[[65,8]]},"111":{"position":[[233,8]]},"278":{"position":[[552,8],[748,8],[1435,8],[1500,8]]},"279":{"position":[[689,8],[923,8]]},"284":{"position":[[100,8],[266,8],[486,8],[608,9]]},"296":{"position":[[235,8],[272,8]]},"297":{"position":[[123,8],[160,8]]}},"keywords":{}}],["turnover)explicit",{"_index":2946,"title":{},"content":{"288":{"position":[[700,17]]}},"keywords":{}}],["turnoveragents.md",{"_index":2981,"title":{},"content":{"300":{"position":[[107,17]]}},"keywords":{}}],["two",{"_index":2125,"title":{},"content":{"239":{"position":[[249,3]]},"241":{"position":[[7,3]]}},"keywords":{}}],["type",{"_index":116,"title":{},"content":{"4":{"position":[[25,5]]},"15":{"position":[[97,4]]},"18":{"position":[[308,6]]},"21":{"position":[[276,4]]},"22":{"position":[[85,4]]},"43":{"position":[[136,5],[207,5],[498,4]]},"55":{"position":[[677,4]]},"67":{"position":[[7,4]]},"77":{"position":[[597,5]]},"94":{"position":[[396,4]]},"133":{"position":[[251,4],[616,4]]},"210":{"position":[[17,6]]},"277":{"position":[[88,4]]},"278":{"position":[[64,5]]},"279":{"position":[[83,5]]},"280":{"position":[[77,5]]}},"keywords":{}}],["typic",{"_index":920,"title":{"64":{"position":[[0,7]]}},"content":{"173":{"position":[[60,7]]},"198":{"position":[[48,9],[132,9]]},"242":{"position":[[102,7]]},"247":{"position":[[204,9]]},"273":{"position":[[1279,7]]}},"keywords":{}}],["typical)high",{"_index":2317,"title":{},"content":{"246":{"position":[[1601,14]]}},"keywords":{}}],["ui",{"_index":762,"title":{"178":{"position":[[10,2]]}},"content":{"52":{"position":[[163,2]]},"94":{"position":[[600,3]]},"136":{"position":[[774,2]]},"187":{"position":[[238,2]]},"226":{"position":[[81,3]]}},"keywords":{}}],["un",{"_index":2918,"title":{},"content":{"286":{"position":[[84,3]]}},"keywords":{}}],["unauthor",{"_index":1288,"title":{},"content":{"111":{"position":[[637,12]]}},"keywords":{}}],["uncancel",{"_index":1039,"title":{},"content":{"77":{"position":[[1146,11]]}},"keywords":{}}],["uncertainti",{"_index":2747,"title":{},"content":{"273":{"position":[[3587,11]]}},"keywords":{}}],["unchang",{"_index":871,"title":{},"content":{"56":{"position":[[1815,9]]},"57":{"position":[[427,9]]},"66":{"position":[[119,10]]}},"keywords":{}}],["unchanged)low",{"_index":860,"title":{},"content":{"56":{"position":[[1383,14]]}},"keywords":{}}],["unclear",{"_index":1557,"title":{},"content":{"143":{"position":[[447,7],[487,7]]},"172":{"position":[[111,8]]},"174":{"position":[[36,7]]}},"keywords":{}}],["unclearpush",{"_index":342,"title":{},"content":{"26":{"position":[[83,11]]}},"keywords":{}}],["under",{"_index":1548,"title":{},"content":{"141":{"position":[[26,5]]}},"keywords":{}}],["underscor",{"_index":78,"title":{},"content":{"3":{"position":[[819,11]]}},"keywords":{}}],["underscore)typ",{"_index":69,"title":{},"content":{"3":{"position":[[612,15]]}},"keywords":{}}],["understand",{"_index":955,"title":{},"content":{"67":{"position":[[977,10]]},"133":{"position":[[144,13],[917,13],[1101,13]]},"272":{"position":[[1365,10]]},"273":{"position":[[4657,10]]}},"keywords":{}}],["understand/modifi",{"_index":1764,"title":{},"content":{"173":{"position":[[213,18]]}},"keywords":{}}],["undo",{"_index":1898,"title":{},"content":{"193":{"position":[[28,4]]}},"keywords":{}}],["unexpect",{"_index":2145,"title":{},"content":{"239":{"position":[[1131,10]]}},"keywords":{}}],["unifi",{"_index":432,"title":{},"content":{"31":{"position":[[1122,7]]},"43":{"position":[[65,7]]}},"keywords":{}}],["uninstallationwithout",{"_index":1074,"title":{},"content":{"79":{"position":[[279,21]]}},"keywords":{}}],["unit",{"_index":287,"title":{},"content":{"21":{"position":[[245,4]]},"103":{"position":[[200,5]]}},"keywords":{}}],["unknown",{"_index":1851,"title":{},"content":{"179":{"position":[[1739,7]]}},"keywords":{}}],["unkontrolliert",{"_index":2919,"title":{},"content":{"286":{"position":[[88,15]]}},"keywords":{}}],["unload",{"_index":1005,"title":{},"content":{"75":{"position":[[289,6]]}},"keywords":{}}],["unloadha'",{"_index":1040,"title":{},"content":{"77":{"position":[[1200,10]]}},"keywords":{}}],["unnecessari",{"_index":1006,"title":{},"content":{"75":{"position":[[298,11]]},"77":{"position":[[1318,11]]},"253":{"position":[[156,11]]}},"keywords":{}}],["unpredict",{"_index":2422,"title":{},"content":{"252":{"position":[[1655,14]]},"273":{"position":[[4599,14],[4923,13]]}},"keywords":{}}],["unrealist",{"_index":2605,"title":{},"content":{"267":{"position":[[565,11]]}},"keywords":{}}],["unregist",{"_index":1017,"title":{},"content":{"77":{"position":[[281,12]]},"281":{"position":[[1160,10]]}},"keywords":{}}],["unrel",{"_index":328,"title":{},"content":{"25":{"position":[[223,9]]}},"keywords":{}}],["unreli",{"_index":2250,"title":{},"content":{"245":{"position":[[126,10]]}},"keywords":{}}],["unreliablebest",{"_index":2349,"title":{},"content":{"247":{"position":[[143,14]]}},"keywords":{}}],["unstablecallback",{"_index":1000,"title":{},"content":{"75":{"position":[[153,16]]}},"keywords":{}}],["unsur",{"_index":1685,"title":{},"content":{"159":{"position":[[164,7]]}},"keywords":{}}],["unsynchron",{"_index":2927,"title":{},"content":{"287":{"position":[[202,14]]},"301":{"position":[[59,15],[257,14]]}},"keywords":{}}],["unsynchronized)fast",{"_index":2950,"title":{},"content":{"292":{"position":[[28,20]]}},"keywords":{}}],["until",{"_index":453,"title":{},"content":{"33":{"position":[[162,5],[228,5],[282,5],[351,5],[448,5]]},"50":{"position":[[179,6],[232,5],[288,5]]},"51":{"position":[[483,5],[1395,5]]},"52":{"position":[[409,6]]},"55":{"position":[[255,5]]},"56":{"position":[[820,5]]},"67":{"position":[[135,6],[193,5],[286,5],[385,5]]},"75":{"position":[[136,5]]},"100":{"position":[[333,6]]},"147":{"position":[[105,5]]},"212":{"position":[[35,5]]},"279":{"position":[[564,5]]}},"keywords":{}}],["unusualus",{"_index":2681,"title":{},"content":{"273":{"position":[[398,12]]}},"keywords":{}}],["up",{"_index":180,"title":{},"content":{"12":{"position":[[229,2]]},"31":{"position":[[123,2]]},"51":{"position":[[1353,2]]},"92":{"position":[[305,2]]},"139":{"position":[[147,2]]},"147":{"position":[[145,2]]},"209":{"position":[[98,2]]},"255":{"position":[[3207,3]]},"278":{"position":[[1709,2]]},"279":{"position":[[451,2]]}},"keywords":{}}],["updat",{"_index":297,"title":{"70":{"position":[[32,9]]},"121":{"position":[[12,9]]},"161":{"position":[[12,6]]},"213":{"position":[[6,8]]}},"content":{"22":{"position":[[181,7],[211,7]]},"31":{"position":[[193,6],[1037,7],[1184,6]]},"36":{"position":[[130,6]]},"42":{"position":[[63,8],[613,7],[718,6]]},"51":{"position":[[431,6],[1251,6]]},"52":{"position":[[864,6]]},"53":{"position":[[159,6]]},"55":{"position":[[336,6],[698,6],[769,7],[836,6]]},"56":{"position":[[1351,7],[1666,7]]},"57":{"position":[[687,6]]},"61":{"position":[[13,6]]},"64":{"position":[[13,6],[242,8]]},"65":{"position":[[13,6],[260,8]]},"66":{"position":[[9,6],[262,8]]},"67":{"position":[[240,7]]},"77":{"position":[[172,6],[1342,7],[1504,6]]},"78":{"position":[[251,6]]},"80":{"position":[[303,6]]},"81":{"position":[[298,6],[339,7]]},"92":{"position":[[361,6],[422,8]]},"111":{"position":[[13,8]]},"114":{"position":[[13,7]]},"132":{"position":[[359,6]]},"136":{"position":[[96,6]]},"137":{"position":[[87,7]]},"146":{"position":[[177,10]]},"154":{"position":[[345,6]]},"156":{"position":[[300,7],[346,6]]},"157":{"position":[[299,7]]},"163":{"position":[[298,8]]},"171":{"position":[[4,6],[99,6],[205,6]]},"173":{"position":[[246,7]]},"176":{"position":[[147,6]]},"198":{"position":[[30,7],[75,7]]},"213":{"position":[[6,6]]},"216":{"position":[[63,7],[221,7]]},"219":{"position":[[337,6]]},"277":{"position":[[165,7],[438,8]]},"278":{"position":[[1724,6]]},"279":{"position":[[180,6],[526,6],[1635,8],[2054,7]]},"280":{"position":[[165,6],[320,6],[960,7],[1028,8]]},"281":{"position":[[498,6],[1026,7]]},"283":{"position":[[32,6],[101,7],[286,6],[331,7],[377,6],[426,7]]},"285":{"position":[[62,6],[382,6]]},"288":{"position":[[27,7]]},"289":{"position":[[158,7],[296,6]]},"290":{"position":[[26,7]]},"293":{"position":[[158,7]]},"296":{"position":[[187,6]]},"298":{"position":[[51,6]]},"299":{"position":[[142,7]]},"301":{"position":[[154,7]]}},"keywords":{}}],["update)period",{"_index":910,"title":{},"content":{"62":{"position":[[442,13]]}},"keywords":{}}],["update_interv",{"_index":2788,"title":{},"content":{"278":{"position":[[123,15]]}},"keywords":{}}],["updated"",{"_index":960,"title":{},"content":{"69":{"position":[[71,13]]}},"keywords":{}}],["updatescosmet",{"_index":1565,"title":{},"content":{"143":{"position":[[642,15]]}},"keywords":{}}],["updatespattern",{"_index":1052,"title":{},"content":{"77":{"position":[[1761,15]]}},"keywords":{}}],["updatesveri",{"_index":2860,"title":{},"content":{"280":{"position":[[793,11]]}},"keywords":{}}],["us",{"_index":34,"title":{"98":{"position":[[8,5]]},"118":{"position":[[0,6]]},"146":{"position":[[3,3]]},"182":{"position":[[11,3]]},"184":{"position":[[12,5]]}},"content":{"3":{"position":[[25,3],[378,4],[501,4],[770,4],[852,4],[923,4],[1002,4],[1166,4]]},"6":{"position":[[8,3]]},"33":{"position":[[17,4]]},"37":{"position":[[21,4]]},"42":{"position":[[151,4]]},"50":{"position":[[17,4]]},"55":{"position":[[316,3]]},"78":{"position":[[297,3]]},"84":{"position":[[75,4]]},"90":{"position":[[75,4],[167,5]]},"111":{"position":[[160,5]]},"117":{"position":[[30,3]]},"134":{"position":[[406,5]]},"162":{"position":[[195,3]]},"163":{"position":[[14,4]]},"172":{"position":[[8,3]]},"176":{"position":[[57,3]]},"178":{"position":[[1,3],[190,5]]},"179":{"position":[[358,3],[451,3],[549,3],[663,7]]},"180":{"position":[[293,5],[363,4]]},"182":{"position":[[8,3]]},"195":{"position":[[36,4]]},"196":{"position":[[23,3]]},"200":{"position":[[1,3]]},"209":{"position":[[196,3]]},"210":{"position":[[1,3]]},"236":{"position":[[18,4]]},"239":{"position":[[638,5],[1354,4],[1468,4]]},"246":{"position":[[86,3],[2623,3]]},"247":{"position":[[448,3],[646,4]]},"248":{"position":[[534,7]]},"250":{"position":[[86,3]]},"252":{"position":[[815,6],[1415,4]]},"255":{"position":[[840,4],[2416,3]]},"259":{"position":[[298,3]]},"269":{"position":[[441,3]]},"272":{"position":[[970,4],[1799,3]]},"273":{"position":[[1579,5],[1813,3],[2705,6],[2857,6],[4381,3],[4806,3]]},"277":{"position":[[17,4]]},"278":{"position":[[991,3],[1550,3]]},"279":{"position":[[102,5],[1157,4]]},"280":{"position":[[96,5]]},"285":{"position":[[354,5]]},"287":{"position":[[22,4]]},"293":{"position":[[93,4]]},"299":{"position":[[221,3]]}},"keywords":{}}],["usag",{"_index":584,"title":{"47":{"position":[[7,6]]},"125":{"position":[[7,6]]}},"content":{"40":{"position":[[157,5]]},"52":{"position":[[359,5]]},"67":{"position":[[837,6]]},"75":{"position":[[108,5]]},"212":{"position":[[124,6]]},"219":{"position":[[322,5]]},"222":{"position":[[146,6]]},"272":{"position":[[1326,5]]},"273":{"position":[[1287,5]]}},"keywords":{}}],["use15",{"_index":2281,"title":{},"content":{"246":{"position":[[493,6]]}},"keywords":{}}],["use_ai=fals",{"_index":1825,"title":{},"content":{"179":{"position":[[684,12]]}},"keywords":{}}],["user",{"_index":250,"title":{"59":{"position":[[0,4]]},"99":{"position":[[0,4]]},"248":{"position":[[19,5]]}},"content":{"18":{"position":[[223,5],[550,4]]},"33":{"position":[[155,6]]},"51":{"position":[[135,4]]},"55":{"position":[[388,5]]},"59":{"position":[[1,4]]},"78":{"position":[[305,4]]},"107":{"position":[[212,4]]},"139":{"position":[[1,4]]},"141":{"position":[[107,5],[133,4]]},"196":{"position":[[141,5],[214,4]]},"239":{"position":[[315,5],[1160,4],[1359,4],[1666,6]]},"243":{"position":[[2033,5],[2303,4]]},"246":{"position":[[636,4],[855,5],[1266,4],[2261,5],[2377,5],[2473,4],[2680,5]]},"250":{"position":[[96,4]]},"252":{"position":[[928,4],[1048,4]]},"255":{"position":[[3457,4]]},"269":{"position":[[212,4]]},"272":{"position":[[564,4],[910,4],[956,4],[1092,4],[1259,4],[1356,5],[1428,5]]},"273":{"position":[[1105,4],[1397,5],[3790,4],[4644,5],[4790,4],[5038,4]]},"274":{"position":[[1,4]]},"279":{"position":[[544,5]]},"280":{"position":[[694,5]]},"288":{"position":[[718,4]]},"289":{"position":[[222,6]]},"290":{"position":[[54,5],[116,5],[173,5]]},"301":{"position":[[334,5]]}},"keywords":{}}],["user'",{"_index":2367,"title":{},"content":{"247":{"position":[[860,6]]},"251":{"position":[[68,6]]},"269":{"position":[[427,6]]},"272":{"position":[[685,6],[1147,6],[2059,6]]},"273":{"position":[[1272,6]]}},"keywords":{}}],["user_data",{"_index":718,"title":{},"content":{"51":{"position":[[338,12]]},"62":{"position":[[90,10]]},"207":{"position":[[49,9],[145,10]]}},"keywords":{}}],["user_low_threshold",{"_index":2151,"title":{},"content":{"239":{"position":[[1371,18]]}},"keywords":{}}],["userscomput",{"_index":2670,"title":{},"content":{"272":{"position":[[2187,18]]}},"keywords":{}}],["usr/local/bin",{"_index":1858,"title":{},"content":{"179":{"position":[[1822,15]]}},"keywords":{}}],["usual",{"_index":303,"title":{},"content":{"23":{"position":[[47,8]]}},"keywords":{}}],["util",{"_index":540,"title":{"38":{"position":[[7,10]]}},"content":{"37":{"position":[[589,9]]},"38":{"position":[[1,7],[27,5],[106,5],[178,5]]},"132":{"position":[[279,9]]},"136":{"position":[[258,9]]},"154":{"position":[[71,7],[154,8]]}},"keywords":{}}],["utils/average.pi",{"_index":573,"title":{},"content":{"38":{"position":[[112,16]]}},"keywords":{}}],["utils/price.pi",{"_index":572,"title":{},"content":{"38":{"position":[[33,14]]},"41":{"position":[[54,15],[247,16]]},"107":{"position":[[265,14]]}},"keywords":{}}],["uv",{"_index":1356,"title":{},"content":{"120":{"position":[[163,2]]},"129":{"position":[[24,2]]},"202":{"position":[[19,2]]}},"keywords":{}}],["ux",{"_index":2850,"title":{},"content":{"280":{"position":[[214,2]]}},"keywords":{}}],["ux)al",{"_index":2987,"title":{},"content":{"301":{"position":[[417,6]]}},"keywords":{}}],["uxreduc",{"_index":2861,"title":{},"content":{"280":{"position":[[930,9]]}},"keywords":{}}],["v",{"_index":236,"title":{},"content":{"17":{"position":[[350,1]]},"94":{"position":[[92,1],[291,1]]},"116":{"position":[[86,1],[102,1]]}},"keywords":{}}],["v0.3.0",{"_index":1786,"title":{},"content":{"176":{"position":[[270,6],[363,6]]},"184":{"position":[[124,6],[178,6]]},"185":{"position":[[299,6]]},"186":{"position":[[177,6],[205,6]]},"194":{"position":[[63,6],[447,6],[478,6]]}},"keywords":{}}],["v1.0.0",{"_index":1816,"title":{},"content":{"179":{"position":[[242,6],[317,6]]},"180":{"position":[[103,8],[188,6],[211,6]]}},"keywords":{}}],["v1.1.0",{"_index":1817,"title":{},"content":{"179":{"position":[[249,6]]}},"keywords":{}}],["v2.1.3",{"_index":1860,"title":{},"content":{"180":{"position":[[112,7]]}},"keywords":{}}],["vagu",{"_index":1742,"title":{},"content":{"170":{"position":[[322,6]]}},"keywords":{}}],["valid",{"_index":27,"title":{"189":{"position":[[11,11]]},"224":{"position":[[12,11]]}},"content":{"1":{"position":[[220,8]]},"31":{"position":[[282,5],[530,5]]},"51":{"position":[[448,10],[896,10]]},"55":{"position":[[882,12]]},"64":{"position":[[65,6]]},"65":{"position":[[299,6]]},"67":{"position":[[86,10]]},"81":{"position":[[98,5],[149,5]]},"111":{"position":[[153,6]]},"135":{"position":[[314,8]]},"138":{"position":[[3,8]]},"189":{"position":[[42,8]]},"212":{"position":[[29,5]]},"224":{"position":[[45,8],[94,10],[254,5],[310,5],[397,10]]},"233":{"position":[[85,8]]},"288":{"position":[[276,6]]},"299":{"position":[[341,10]]}},"keywords":{}}],["validationr",{"_index":1454,"title":{},"content":{"133":{"position":[[634,14]]}},"keywords":{}}],["valu",{"_index":431,"title":{},"content":{"31":{"position":[[1111,6]]},"149":{"position":[[63,5]]},"215":{"position":[[309,6]]},"241":{"position":[[497,7]]},"242":{"position":[[110,7]]},"246":{"position":[[2466,6]]},"247":{"position":[[409,6]]},"252":{"position":[[1585,6]]}},"keywords":{}}],["valuabl",{"_index":2297,"title":{},"content":{"246":{"position":[[1008,8]]}},"keywords":{}}],["value_templ",{"_index":2758,"title":{},"content":{"273":{"position":[[4130,15]]}},"keywords":{}}],["valuesmost",{"_index":2339,"title":{},"content":{"246":{"position":[[2366,10]]}},"keywords":{}}],["varianc",{"_index":2318,"title":{},"content":{"246":{"position":[[1616,8]]}},"keywords":{}}],["variat",{"_index":2209,"title":{"262":{"position":[[29,11]]},"263":{"position":[[27,11]]}},"content":{"243":{"position":[[714,10]]},"259":{"position":[[101,10]]},"262":{"position":[[353,9]]},"263":{"position":[[433,9]]},"269":{"position":[[80,9],[117,9]]},"272":{"position":[[101,9],[156,9],[207,9],[249,10],[305,9],[354,10]]}},"keywords":{}}],["variation)averag",{"_index":2562,"title":{},"content":{"262":{"position":[[35,18]]},"263":{"position":[[34,18]]},"264":{"position":[[34,18]]}},"keywords":{}}],["variationhigh",{"_index":2619,"title":{},"content":{"269":{"position":[[66,13]]}},"keywords":{}}],["vat",{"_index":1219,"title":{},"content":{"103":{"position":[[169,3]]}},"keywords":{}}],["venv",{"_index":2080,"title":{},"content":{"231":{"position":[[46,5]]}},"keywords":{}}],["venv/bin/python",{"_index":1326,"title":{},"content":{"116":{"position":[[1,16]]}},"keywords":{}}],["verbos",{"_index":1330,"title":{},"content":{"116":{"position":[[106,7]]}},"keywords":{}}],["veri",{"_index":2374,"title":{},"content":{"248":{"position":[[308,4]]},"252":{"position":[[546,4],[1902,4]]},"258":{"position":[[100,4]]},"264":{"position":[[109,4],[469,4]]},"266":{"position":[[32,4]]},"270":{"position":[[56,4]]},"272":{"position":[[1648,4]]},"273":{"position":[[69,4],[369,4]]}},"keywords":{}}],["verif",{"_index":1594,"title":{},"content":{"146":{"position":[[699,12]]}},"keywords":{}}],["verifi",{"_index":967,"title":{},"content":{"70":{"position":[[9,6]]},"90":{"position":[[423,8]]},"153":{"position":[[146,6]]},"156":{"position":[[234,7]]},"157":{"position":[[264,6]]},"167":{"position":[[24,6]]},"219":{"position":[[308,6],[330,6]]}},"keywords":{}}],["version",{"_index":1425,"title":{"189":{"position":[[3,7]]},"192":{"position":[[3,7]]}},"content":{"131":{"position":[[445,10]]},"135":{"position":[[490,8]]},"147":{"position":[[161,8]]},"176":{"position":[[168,7],[231,7],[459,7],[726,7]]},"180":{"position":[[90,7]]},"185":{"position":[[16,7],[191,7]]},"186":{"position":[[16,7],[116,7]]},"187":{"position":[[49,7],[306,7]]},"189":{"position":[[51,7]]},"192":{"position":[[58,7]]},"194":{"position":[[159,7],[395,7],[606,7]]}},"keywords":{}}],["versioningagents.md",{"_index":700,"title":{},"content":{"48":{"position":[[270,19]]}},"keywords":{}}],["versionsget",{"_index":1599,"title":{},"content":{"147":{"position":[[49,11]]}},"keywords":{}}],["very_cheap",{"_index":1230,"title":{},"content":{"103":{"position":[[293,12]]},"239":{"position":[[61,12]]}},"keywords":{}}],["very_expens",{"_index":1232,"title":{},"content":{"103":{"position":[[332,15]]},"239":{"position":[[100,16]]}},"keywords":{}}],["via",{"_index":387,"title":{},"content":{"31":{"position":[[200,3],[584,3],[1118,3]]},"40":{"position":[[224,3]]},"41":{"position":[[50,3]]},"42":{"position":[[105,3]]},"51":{"position":[[601,3]]},"56":{"position":[[1144,3]]},"62":{"position":[[488,4]]},"77":{"position":[[1534,3]]},"86":{"position":[[33,3],[143,3]]},"134":{"position":[[149,3]]},"137":{"position":[[129,3],[346,3]]},"179":{"position":[[1198,3],[1278,3]]},"239":{"position":[[334,3]]},"246":{"position":[[2491,3]]},"255":{"position":[[1825,3]]},"272":{"position":[[1940,3]]}},"keywords":{}}],["viewer",{"_index":720,"title":{},"content":{"51":{"position":[[402,6]]},"99":{"position":[[49,6]]},"100":{"position":[[55,6]]}},"keywords":{}}],["vim",{"_index":1790,"title":{},"content":{"176":{"position":[[593,3]]},"185":{"position":[[33,3]]},"186":{"position":[[24,3]]},"194":{"position":[[273,3]]}},"keywords":{}}],["violat",{"_index":2765,"title":{},"content":{"273":{"position":[[4509,8]]}},"keywords":{}}],["visibl",{"_index":1651,"title":{},"content":{"152":{"position":[[144,8]]},"290":{"position":[[60,9],[122,9]]}},"keywords":{}}],["visit",{"_index":2086,"title":{},"content":{"232":{"position":[[58,5]]}},"keywords":{}}],["volatil",{"_index":240,"title":{"264":{"position":[[30,12]]}},"content":{"18":{"position":[[80,10],[134,10],[198,10]]},"37":{"position":[[927,10]]},"239":{"position":[[176,10],[273,10]]},"246":{"position":[[1473,11]]},"255":{"position":[[1230,10],[1870,10],[3428,10]]},"272":{"position":[[333,10]]},"273":{"position":[[3845,10],[4070,10],[4260,10],[5302,10]]}},"keywords":{}}],["volatilitythreshold",{"_index":2484,"title":{},"content":{"255":{"position":[[1838,20]]}},"keywords":{}}],["volunt",{"_index":368,"title":{},"content":{"28":{"position":[[169,11]]}},"keywords":{}}],["vs",{"_index":173,"title":{"112":{"position":[[0,2]]},"117":{"position":[[14,2]]},"169":{"position":[[31,3]]}},"content":{"12":{"position":[[143,2]]},"37":{"position":[[1164,2]]},"43":{"position":[[1103,2]]},"70":{"position":[[96,2],[164,2]]},"114":{"position":[[170,2]]},"128":{"position":[[171,2]]},"134":{"position":[[51,3]]},"179":{"position":[[1341,3]]},"196":{"position":[[319,2]]},"229":{"position":[[1,2]]},"230":{"position":[[119,2],[159,3]]},"246":{"position":[[2561,3]]},"269":{"position":[[363,3],[399,3],[463,3]]},"272":{"position":[[1625,3],[1644,3],[1675,3],[1706,3],[1771,3],[1821,3],[1835,3]]}},"keywords":{}}],["vscode/launch.json",{"_index":1293,"title":{},"content":{"113":{"position":[[1,20]]}},"keywords":{}}],["wait",{"_index":639,"title":{},"content":{"42":{"position":[[733,7]]},"185":{"position":[[233,4]]},"279":{"position":[[247,7]]}},"keywords":{}}],["want",{"_index":354,"title":{},"content":{"27":{"position":[[74,6]]},"239":{"position":[[934,4]]},"273":{"position":[[1116,4]]},"280":{"position":[[700,4]]},"290":{"position":[[192,7]]}},"keywords":{}}],["warn",{"_index":2293,"title":{},"content":{"246":{"position":[[827,7],[995,7],[1207,4],[2188,6]]},"247":{"position":[[361,7]]},"248":{"position":[[170,7],[257,8],[276,7]]},"252":{"position":[[537,8],[1108,4],[1783,7]]},"266":{"position":[[261,8]]},"267":{"position":[[622,8]]}},"keywords":{}}],["wast",{"_index":1684,"title":{},"content":{"159":{"position":[[137,6]]},"246":{"position":[[716,6]]}},"keywords":{}}],["watch",{"_index":1167,"title":{},"content":{"94":{"position":[[515,5]]},"156":{"position":[[117,5]]},"256":{"position":[[162,6]]},"296":{"position":[[58,5]]},"297":{"position":[[3,5]]},"298":{"position":[[3,5]]}},"keywords":{}}],["way",{"_index":1883,"title":{"186":{"position":[[28,5]]}},"content":{},"keywords":{}}],["we'r",{"_index":339,"title":{},"content":{"26":{"position":[[28,5]]},"28":{"position":[[159,5]]}},"keywords":{}}],["weak",{"_index":1995,"title":{},"content":{"209":{"position":[[200,4]]}},"keywords":{}}],["weakref",{"_index":1996,"title":{},"content":{"209":{"position":[[239,7]]}},"keywords":{}}],["weiter",{"_index":2913,"title":{},"content":{"286":{"position":[[54,6]]}},"keywords":{}}],["welcom",{"_index":355,"title":{},"content":{"27":{"position":[[95,7]]}},"keywords":{}}],["well",{"_index":953,"title":{},"content":{"67":{"position":[[936,5]]},"101":{"position":[[127,4]]}},"keywords":{}}],["wget",{"_index":1847,"title":{},"content":{"179":{"position":[[1657,4]]}},"keywords":{}}],["what'",{"_index":1580,"title":{},"content":{"146":{"position":[[222,6]]},"153":{"position":[[39,6]]}},"keywords":{}}],["whether",{"_index":2300,"title":{},"content":{"246":{"position":[[1063,7]]}},"keywords":{}}],["whoever",{"_index":2902,"title":{},"content":{"284":{"position":[[618,7]]}},"keywords":{}}],["win",{"_index":2903,"title":{},"content":{"284":{"position":[[637,5]]}},"keywords":{}}],["window",{"_index":2268,"title":{},"content":{"246":{"position":[[157,7]]},"255":{"position":[[1252,6]]}},"keywords":{}}],["windowno",{"_index":2497,"title":{},"content":{"255":{"position":[[2626,8]]}},"keywords":{}}],["windows_get_daily_stat_value(day",{"_index":646,"title":{},"content":{"43":{"position":[[234,33]]}},"keywords":{}}],["windowsdaily_stat.pi",{"_index":549,"title":{},"content":{"37":{"position":[[803,20]]}},"keywords":{}}],["windowsvolatility.pi",{"_index":554,"title":{},"content":{"37":{"position":[[898,20]]}},"keywords":{}}],["winners)min_dist",{"_index":2571,"title":{},"content":{"263":{"position":[[142,20]]}},"keywords":{}}],["wir",{"_index":2910,"title":{},"content":{"286":{"position":[[28,3]]}},"keywords":{}}],["within",{"_index":65,"title":{},"content":{"3":{"position":[[574,6],[775,6],[933,6]]},"23":{"position":[[56,6]]},"237":{"position":[[104,6],[218,6]]}},"keywords":{}}],["without",{"_index":331,"title":{},"content":{"25":{"position":[[287,7]]},"42":{"position":[[725,7]]},"45":{"position":[[1,7]]},"55":{"position":[[932,7]]},"64":{"position":[[311,7]]},"79":{"position":[[231,7]]},"85":{"position":[[91,7]]},"86":{"position":[[203,7]]},"90":{"position":[[289,7]]},"135":{"position":[[272,7]]},"145":{"position":[[208,7]]},"147":{"position":[[75,7]]},"156":{"position":[[308,7]]},"170":{"position":[[31,7]]},"173":{"position":[[116,7]]},"224":{"position":[[354,7]]},"246":{"position":[[2717,7]]},"247":{"position":[[494,7]]},"248":{"position":[[377,7]]},"279":{"position":[[239,7],[2062,7]]}},"keywords":{}}],["won't",{"_index":2815,"title":{},"content":{"278":{"position":[[1696,6]]},"289":{"position":[[145,6]]}},"keywords":{}}],["work",{"_index":349,"title":{"27":{"position":[[18,4]]}},"content":{"27":{"position":[[184,4]]},"28":{"position":[[320,4]]},"62":{"position":[[12,4]]},"77":{"position":[[1098,5]]},"80":{"position":[[237,5]]},"86":{"position":[[74,5]]},"92":{"position":[[198,5],[341,5]]},"133":{"position":[[1203,7]]},"154":{"position":[[531,4]]},"159":{"position":[[131,5]]},"162":{"position":[[213,4]]},"173":{"position":[[191,6]]},"178":{"position":[[255,5]]},"179":{"position":[[967,6]]},"248":{"position":[[164,4]]},"252":{"position":[[771,6]]},"272":{"position":[[860,6]]},"273":{"position":[[1350,4]]},"281":{"position":[[344,6]]},"285":{"position":[[456,4],[500,4]]},"299":{"position":[[287,8]]}},"keywords":{}}],["worked?includ",{"_index":1659,"title":{},"content":{"153":{"position":[[156,14]]}},"keywords":{}}],["workflow",{"_index":184,"title":{"13":{"position":[[12,9]]},"183":{"position":[[20,10]]},"184":{"position":[[0,8]]},"185":{"position":[[0,8]]},"186":{"position":[[0,8]]}},"content":{"48":{"position":[[257,8]]},"131":{"position":[[432,8]]},"132":{"position":[[199,8]]},"176":{"position":[[13,8],[769,8],[853,8]]},"180":{"position":[[39,9]]},"182":{"position":[[102,8]]},"184":{"position":[[346,8]]},"185":{"position":[[251,8],[325,8],[409,8],[468,8]]},"186":{"position":[[222,8],[304,8],[337,8]]},"189":{"position":[[33,8]]},"190":{"position":[[61,8]]},"194":{"position":[[222,10],[522,8]]}},"keywords":{}}],["workspac",{"_index":1716,"title":{},"content":{"165":{"position":[[25,9]]}},"keywords":{}}],["world",{"_index":1455,"title":{"150":{"position":[[5,5]]}},"content":{"133":{"position":[[649,5],[1179,5]]}},"keywords":{}}],["wors",{"_index":2770,"title":{},"content":{"273":{"position":[[4784,5]]}},"keywords":{}}],["worth",{"_index":1655,"title":{},"content":{"152":{"position":[[219,5]]},"246":{"position":[[315,5],[974,5]]}},"keywords":{}}],["wrapper",{"_index":1944,"title":{},"content":{"200":{"position":[[335,7]]}},"keywords":{}}],["wrapper(*arg",{"_index":1937,"title":{},"content":{"200":{"position":[[116,14]]}},"keywords":{}}],["write",{"_index":220,"title":{"17":{"position":[[3,5]]}},"content":{"28":{"position":[[273,7]]},"129":{"position":[[164,7]]},"131":{"position":[[383,5]]},"172":{"position":[[128,5]]}},"keywords":{}}],["wrong",{"_index":46,"title":{"122":{"position":[[19,6]]}},"content":{"3":{"position":[[257,5],[980,5]]},"80":{"position":[[269,5],[313,5]]},"81":{"position":[[265,5],[308,5]]},"92":{"position":[[416,5]]},"146":{"position":[[580,6]]},"174":{"position":[[441,6]]},"273":{"position":[[2699,5]]}},"keywords":{}}],["x",{"_index":1360,"title":{},"content":{"120":{"position":[[201,2]]},"196":{"position":[[158,1]]},"210":{"position":[[196,2],[203,1],[274,2],[281,1]]},"256":{"position":[[195,1],[301,1],[374,2],[442,2]]},"267":{"position":[[827,2]]}},"keywords":{}}],["x"",{"_index":1622,"title":{},"content":{"149":{"position":[[489,7]]}},"keywords":{}}],["x.y.z",{"_index":1893,"title":{},"content":{"189":{"position":[[66,8]]}},"keywords":{}}],["x86_64",{"_index":1850,"title":{},"content":{"179":{"position":[[1732,6]]}},"keywords":{}}],["xx",{"_index":2356,"title":{},"content":{"247":{"position":[[384,3]]}},"keywords":{}}],["xzf",{"_index":1855,"title":{},"content":{"179":{"position":[[1769,3]]}},"keywords":{}}],["y",{"_index":1918,"title":{},"content":{"196":{"position":[[164,2]]},"256":{"position":[[477,2]]},"267":{"position":[[862,2]]}},"keywords":{}}],["yaml",{"_index":535,"title":{},"content":{"37":{"position":[[523,4]]}},"keywords":{}}],["yesterday'",{"_index":744,"title":{"71":{"position":[[9,11]]}},"content":{"51":{"position":[[1078,11]]}},"keywords":{}}],["yesterday/yesterday/today/tomorrow",{"_index":714,"title":{},"content":{"51":{"position":[[235,34]]}},"keywords":{}}],["you'r",{"_index":1474,"title":{},"content":{"133":{"position":[[1196,6]]},"169":{"position":[[7,6]]},"286":{"position":[[153,6]]}},"keywords":{}}],["your_function(coordinator.data",{"_index":232,"title":{},"content":{"17":{"position":[[216,31]]}},"keywords":{}}],["yyyi",{"_index":1577,"title":{},"content":{"146":{"position":[[159,4],[188,4]]}},"keywords":{}}],["z%"",{"_index":2544,"title":{},"content":{"256":{"position":[[482,8]]}},"keywords":{}}],["z%"if",{"_index":2609,"title":{},"content":{"267":{"position":[[867,10]]}},"keywords":{}}],["zero",{"_index":2554,"title":{"259":{"position":[[18,4]]}},"content":{"263":{"position":[[125,4]]}},"keywords":{}}],["zigzag",{"_index":2482,"title":{},"content":{"255":{"position":[[1784,6],[2236,6]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/developer/markdown-page.html b/developer/markdown-page.html new file mode 100644 index 0000000..0a9ee68 --- /dev/null +++ b/developer/markdown-page.html @@ -0,0 +1,19 @@ + + + + + +Markdown page example | Tibber Prices - Developer Guide + + + + + + + + + +

    Markdown page example

    +

    You don't need React to write simple standalone pages.

    + + \ No newline at end of file diff --git a/developer/performance.html b/developer/performance.html new file mode 100644 index 0000000..b2242a7 --- /dev/null +++ b/developer/performance.html @@ -0,0 +1,101 @@ + + + + + +Performance Optimization | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Performance Optimization

    +

    Guidelines for maintaining and improving integration performance.

    +

    Performance Goals​

    +

    Target metrics:

    +
      +
    • Coordinator update: <500ms (typical: 200-300ms)
    • +
    • Sensor update: <10ms per sensor
    • +
    • Period calculation: <100ms (typical: 20-50ms)
    • +
    • Memory footprint: <10MB per home
    • +
    • API calls: <100 per day per home
    • +
    +

    Profiling​

    +

    Timing Decorator​

    +

    Use for performance-critical functions:

    +
    import time
    import functools

    def timing(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
    start = time.perf_counter()
    result = func(*args, **kwargs)
    duration = time.perf_counter() - start
    _LOGGER.debug("%s took %.3fms", func.__name__, duration * 1000)
    return result
    return wrapper

    @timing
    def expensive_calculation():
    # Your code here
    +

    Memory Profiling​

    +
    import tracemalloc

    tracemalloc.start()
    # Run your code
    current, peak = tracemalloc.get_traced_memory()
    _LOGGER.info("Memory: current=%.2fMB peak=%.2fMB",
    current / 1024**2, peak / 1024**2)
    tracemalloc.stop()
    +

    Async Profiling​

    +
    # Install aioprof
    uv pip install aioprof

    # Run with profiling
    python -m aioprof homeassistant -c config
    +

    Optimization Patterns​

    +

    Caching​

    +

    1. Persistent Cache (API data):

    +
    # Already implemented in coordinator/cache.py
    store = Store(hass, STORAGE_VERSION, STORAGE_KEY)
    data = await store.async_load()
    +

    2. Translation Cache (in-memory):

    +
    # Already implemented in const.py
    _TRANSLATION_CACHE: dict[str, dict] = {}

    def get_translation(path: str, language: str) -> dict:
    cache_key = f"{path}_{language}"
    if cache_key not in _TRANSLATION_CACHE:
    _TRANSLATION_CACHE[cache_key] = load_translation(path, language)
    return _TRANSLATION_CACHE[cache_key]
    +

    3. Config Cache (invalidated on options change):

    +
    class DataTransformer:
    def __init__(self):
    self._config_cache: dict | None = None

    def get_config(self) -> dict:
    if self._config_cache is None:
    self._config_cache = self._build_config()
    return self._config_cache

    def invalidate_config_cache(self):
    self._config_cache = None
    +

    Lazy Loading​

    +

    Load data only when needed:

    +
    @property
    def extra_state_attributes(self) -> dict | None:
    """Return attributes."""
    # Calculate only when accessed
    if self.entity_description.key == "complex_sensor":
    return self._calculate_complex_attributes()
    return None
    +

    Bulk Operations​

    +

    Process multiple items at once:

    +
    # ❌ Slow - loop with individual operations
    for interval in intervals:
    enriched = enrich_single_interval(interval)
    results.append(enriched)

    # βœ… Fast - bulk processing
    results = enrich_intervals_bulk(intervals)
    +

    Async Best Practices​

    +

    1. Concurrent API calls:

    +
    # ❌ Sequential (slow)
    user_data = await fetch_user_data()
    price_data = await fetch_price_data()

    # βœ… Concurrent (fast)
    user_data, price_data = await asyncio.gather(
    fetch_user_data(),
    fetch_price_data()
    )
    +

    2. Don't block event loop:

    +
    # ❌ Blocking
    result = heavy_computation() # Blocks for seconds

    # βœ… Non-blocking
    result = await hass.async_add_executor_job(heavy_computation)
    +

    Memory Management​

    +

    Avoid Memory Leaks​

    +

    1. Clear references:

    +
    class Coordinator:
    async def async_shutdown(self):
    """Clean up resources."""
    self._listeners.clear()
    self._data = None
    self._cache = None
    +

    2. Use weak references for callbacks:

    +
    import weakref

    class Manager:
    def __init__(self):
    self._callbacks: list[weakref.ref] = []

    def register(self, callback):
    self._callbacks.append(weakref.ref(callback))
    +

    Efficient Data Structures​

    +

    Use appropriate types:

    +
    # ❌ List for lookups (O(n))
    if timestamp in timestamp_list:
    ...

    # βœ… Set for lookups (O(1))
    if timestamp in timestamp_set:
    ...

    # ❌ List comprehension with filter
    results = [x for x in items if condition(x)]

    # βœ… Generator for large datasets
    results = (x for x in items if condition(x))
    +

    Coordinator Optimization​

    +

    Minimize API Calls​

    +

    Already implemented:

    +
      +
    • Cache valid until midnight
    • +
    • User data cached for 24h
    • +
    • Only poll when tomorrow data expected
    • +
    +

    Monitor API usage:

    +
    _LOGGER.debug("API call: %s (cache_age=%s)",
    endpoint, cache_age)
    +

    Smart Updates​

    +

    Only update when needed:

    +
    async def _async_update_data(self) -> dict:
    """Fetch data from API."""
    if self._is_cache_valid():
    _LOGGER.debug("Using cached data")
    return self.data

    # Fetch new data
    return await self._fetch_data()
    +

    Database Impact​

    +

    State Class Selection​

    +

    Affects long-term statistics storage:

    +
    # ❌ MEASUREMENT for prices (stores every change)
    state_class=SensorStateClass.MEASUREMENT # ~35K records/year

    # βœ… None for prices (no long-term stats)
    state_class=None # Only current state

    # βœ… TOTAL for counters only
    state_class=SensorStateClass.TOTAL # For cumulative values
    +

    Attribute Size​

    +

    Keep attributes minimal:

    +
    # ❌ Large nested structures (KB per update)
    attributes = {
    "all_intervals": [...], # 384 intervals
    "full_history": [...], # Days of data
    }

    # βœ… Essential data only (bytes per update)
    attributes = {
    "timestamp": "...",
    "rating_level": "...",
    "next_interval": "...",
    }
    +

    Testing Performance​

    +

    Benchmark Tests​

    +
    import pytest
    import time

    @pytest.mark.benchmark
    def test_period_calculation_performance(coordinator):
    """Period calculation should complete in &lt;100ms."""
    start = time.perf_counter()

    periods = calculate_periods(coordinator.data)

    duration = time.perf_counter() - start
    assert duration < 0.1, f"Too slow: {duration:.3f}s"
    +

    Load Testing​

    +
    @pytest.mark.integration
    async def test_multiple_homes_performance(hass):
    """Test with 10 homes."""
    coordinators = []
    for i in range(10):
    coordinator = create_coordinator(hass, home_id=f"home_{i}")
    await coordinator.async_refresh()
    coordinators.append(coordinator)

    # Verify memory usage
    # Verify update times
    +

    Monitoring in Production​

    +

    Log Performance Metrics​

    +
    @timing
    async def _async_update_data(self) -> dict:
    """Fetch data with timing."""
    result = await self._fetch_data()
    _LOGGER.info("Update completed in %.2fs", timing_duration)
    return result
    +

    Memory Tracking​

    +
    import psutil
    import os

    process = psutil.Process(os.getpid())
    memory_mb = process.memory_info().rss / 1024**2
    _LOGGER.debug("Current memory usage: %.2f MB", memory_mb)
    +
    +

    πŸ’‘ Related:

    +
    + + \ No newline at end of file diff --git a/developer/period-calculation-theory.html b/developer/period-calculation-theory.html new file mode 100644 index 0000000..23bffc2 --- /dev/null +++ b/developer/period-calculation-theory.html @@ -0,0 +1,825 @@ + + + + + +Period Calculation Theory | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Period Calculation Theory

    +

    Overview​

    +

    This document explains the mathematical foundations and design decisions behind the period calculation algorithm, particularly focusing on the interaction between Flexibility (Flex), Minimum Distance from Average, and Relaxation Strategy.

    +

    Target Audience: Developers maintaining or extending the period calculation logic.

    +

    Related Files:

    +
      +
    • coordinator/period_handlers/core.py - Main calculation entry point
    • +
    • coordinator/period_handlers/level_filtering.py - Flex and distance filtering
    • +
    • coordinator/period_handlers/relaxation.py - Multi-phase relaxation strategy
    • +
    • coordinator/periods.py - Period calculator orchestration
    • +
    +
    +

    Core Filtering Criteria​

    +

    Period detection uses three independent filters (all must pass):

    +

    1. Flex Filter (Price Distance from Reference)​

    +

    Purpose: Limit how far prices can deviate from the daily min/max.

    +

    Logic:

    +
    # Best Price: Price must be within flex% ABOVE daily minimum
    in_flex = price <= (daily_min + daily_min Γ— flex)

    # Peak Price: Price must be within flex% BELOW daily maximum
    in_flex = price >= (daily_max - daily_max Γ— flex)
    +

    Example (Best Price):

    +
      +
    • Daily Min: 10 ct/kWh
    • +
    • Flex: 15%
    • +
    • Acceptance Range: 0 - 11.5 ct/kWh (10 + 10Γ—0.15)
    • +
    +

    2. Min Distance Filter (Distance from Daily Average)​

    +

    Purpose: Ensure periods are significantly cheaper/more expensive than average, not just marginally better.

    +

    Logic:

    +
    # Best Price: Price must be at least min_distance% BELOW daily average
    meets_distance = price <= (daily_avg Γ— (1 - min_distance/100))

    # Peak Price: Price must be at least min_distance% ABOVE daily average
    meets_distance = price >= (daily_avg Γ— (1 + min_distance/100))
    +

    Example (Best Price):

    +
      +
    • Daily Avg: 15 ct/kWh
    • +
    • Min Distance: 5%
    • +
    • Acceptance Range: 0 - 14.25 ct/kWh (15 Γ— 0.95)
    • +
    +

    3. Level Filter (Price Level Classification)​

    +

    Purpose: Restrict periods to specific price classifications (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE).

    +

    Logic: See level_filtering.py for gap tolerance details.

    +

    Volatility Thresholds - Important Separation:

    +

    The integration maintains two independent sets of volatility thresholds:

    +
      +
    1. +

      Sensor Thresholds (user-configurable via CONF_VOLATILITY_*_THRESHOLD)

      +
        +
      • Purpose: Display classification in sensor.tibber_home_volatility_*
      • +
      • Default: LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%
      • +
      • User can adjust in config flow options
      • +
      • Affects: Sensor state/attributes only
      • +
      +
    2. +
    3. +

      Period Filter Thresholds (internal, fixed)

      +
        +
      • Purpose: Level filter criteria when using level="volatility_low" etc.
      • +
      • Source: PRICE_LEVEL_THRESHOLDS in const.py
      • +
      • Values: Same as sensor defaults (LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%)
      • +
      • User cannot adjust these
      • +
      • Affects: Period candidate selection
      • +
      +
    4. +
    +

    Rationale for Separation:

    +
      +
    • Sensor thresholds = Display preference ("I want to see LOW at 15% instead of 10%")
    • +
    • Period thresholds = Algorithm configuration (tested defaults, complex interactions)
    • +
    • Changing sensor display should not affect automation behavior
    • +
    • Prevents unexpected side effects when user adjusts sensor classification
    • +
    • Period calculation has many interacting filters (Flex, Distance, Level) - exposing all internals would be error-prone
    • +
    +

    Implementation:

    +
    # Sensor classification uses user config
    user_low_threshold = config_entry.options.get(CONF_VOLATILITY_LOW_THRESHOLD, 10)

    # Period filter uses fixed constants
    period_low_threshold = PRICE_LEVEL_THRESHOLDS["volatility_low"] # Always 10%
    +

    Status: Intentional design decision (Nov 2025). No plans to expose period thresholds to users.

    +
    +

    The Flex Γ— Min_Distance Conflict​

    +

    Problem Statement​

    +

    These two filters can conflict when Flex is high!

    +

    Scenario: Best Price with Flex=50%, Min_Distance=5%​

    +

    Given:

    +
      +
    • Daily Min: 10 ct/kWh
    • +
    • Daily Avg: 15 ct/kWh
    • +
    • Daily Max: 20 ct/kWh
    • +
    +

    Flex Filter (50%):

    +
    Max accepted = 10 + (10 Γ— 0.50) = 15 ct/kWh
    +

    Min Distance Filter (5%):

    +
    Max accepted = 15 Γ— (1 - 0.05) = 14.25 ct/kWh
    +

    Conflict:

    +
      +
    • Interval at 14.8 ct/kWh: +
        +
      • βœ… Flex: 14.8 ≀ 15 (PASS)
      • +
      • ❌ Distance: 14.8 > 14.25 (FAIL)
      • +
      • Result: Rejected by Min_Distance even though Flex allows it!
      • +
      +
    • +
    +

    The Issue: At high Flex values, Min_Distance becomes the dominant filter and blocks intervals that Flex would permit. This defeats the purpose of having high Flex.

    +

    Mathematical Analysis​

    +

    Conflict condition for Best Price:

    +
    daily_min Γ— (1 + flex) > daily_avg Γ— (1 - min_distance/100)
    +

    Typical values:

    +
      +
    • Min = 10, Avg = 15, Min_Distance = 5%
    • +
    • Conflict occurs when: 10 Γ— (1 + flex) > 14.25
    • +
    • Simplify: flex > 0.425 (42.5%)
    • +
    +

    Below 42.5% Flex: Both filters contribute meaningfully. +Above 42.5% Flex: Min_Distance dominates and blocks intervals.

    +

    Solution: Dynamic Min_Distance Scaling​

    +

    Approach: Reduce Min_Distance proportionally as Flex increases.

    +

    Formula:

    +
    if flex > 0.20:  # 20% threshold
    flex_excess = flex - 0.20
    scale_factor = max(0.25, 1.0 - (flex_excess Γ— 2.5))
    adjusted_min_distance = original_min_distance Γ— scale_factor
    +

    Scaling Table (Original Min_Distance = 5%):

    +
    FlexScale FactorAdjusted Min_DistanceRationale
    ≀20%1.005.0%Standard - both filters relevant
    25%0.884.4%Slight reduction
    30%0.753.75%Moderate reduction
    40%0.502.5%Strong reduction - Flex dominates
    50%0.251.25%Minimal distance - Flex decides
    +

    Why stop at 25% of original?

    +
      +
    • Min_Distance ensures periods are significantly different from average
    • +
    • Even at 1.25%, prevents "flat days" (little price variation) from accepting every interval
    • +
    • Maintains semantic meaning: "this is a meaningful best/peak price period"
    • +
    +

    Implementation: See level_filtering.py β†’ check_interval_criteria()

    +

    Code Extract:

    +
    # coordinator/period_handlers/level_filtering.py

    FLEX_SCALING_THRESHOLD = 0.20 # 20% - start adjusting min_distance
    SCALE_FACTOR_WARNING_THRESHOLD = 0.8 # Log when reduction > 20%

    def check_interval_criteria(price, criteria):
    # ... flex check ...

    # Dynamic min_distance scaling
    adjusted_min_distance = criteria.min_distance_from_avg
    flex_abs = abs(criteria.flex)

    if flex_abs > FLEX_SCALING_THRESHOLD:
    flex_excess = flex_abs - 0.20 # How much above 20%
    scale_factor = max(0.25, 1.0 - (flex_excess Γ— 2.5))
    adjusted_min_distance = criteria.min_distance_from_avg Γ— scale_factor

    if scale_factor < SCALE_FACTOR_WARNING_THRESHOLD:
    _LOGGER.debug(
    "High flex %.1f%% detected: Reducing min_distance %.1f%% β†’ %.1f%%",
    flex_abs Γ— 100,
    criteria.min_distance_from_avg,
    adjusted_min_distance,
    )

    # Apply adjusted min_distance in distance check
    meets_min_distance = (
    price <= avg_price Γ— (1 - adjusted_min_distance/100) # Best Price
    # OR
    price >= avg_price Γ— (1 + adjusted_min_distance/100) # Peak Price
    )
    +

    Why Linear Scaling?

    +
      +
    • Simple and predictable
    • +
    • No abrupt behavior changes
    • +
    • Easy to reason about for users and developers
    • +
    • Alternative considered: Exponential scaling (rejected as too aggressive)
    • +
    +

    Why 25% Minimum?

    +
      +
    • Below this, min_distance loses semantic meaning
    • +
    • Even on flat days, some quality filter needed
    • +
    • Prevents "every interval is a period" scenario
    • +
    • Maintains user expectation: "best/peak price means notably different"
    • +
    +
    +

    Flex Limits and Safety Caps​

    +

    Implementation Constants​

    +

    Defined in coordinator/period_handlers/core.py:

    +
    MAX_SAFE_FLEX = 0.50  # 50% - hard cap: above this, period detection becomes unreliable
    MAX_OUTLIER_FLEX = 0.25 # 25% - cap for outlier filtering: above this, spike detection too permissive
    +

    Defined in const.py:

    +
    DEFAULT_BEST_PRICE_FLEX = 15  # 15% base - optimal for relaxation mode (default enabled)
    DEFAULT_PEAK_PRICE_FLEX = -20 # 20% base (negative for peak detection)
    DEFAULT_RELAXATION_ATTEMPTS_BEST = 11 # 11 steps: 15% β†’ 48% (3% increment per step)
    DEFAULT_RELAXATION_ATTEMPTS_PEAK = 11 # 11 steps: 20% β†’ 50% (3% increment per step)
    DEFAULT_BEST_PRICE_MIN_PERIOD_LENGTH = 60 # 60 minutes
    DEFAULT_PEAK_PRICE_MIN_PERIOD_LENGTH = 30 # 30 minutes
    DEFAULT_BEST_PRICE_MIN_DISTANCE_FROM_AVG = 5 # 5% minimum distance
    DEFAULT_PEAK_PRICE_MIN_DISTANCE_FROM_AVG = 5 # 5% minimum distance
    +

    Rationale for Asymmetric Defaults​

    +

    Why Best Price β‰  Peak Price?

    +

    The different defaults reflect fundamentally different use cases:

    +

    Best Price: Optimization Focus​

    +

    Goal: Find practical time windows for running appliances

    +

    Constraints:

    +
      +
    • Appliances need time to complete cycles (dishwasher: 2-3h, EV charging: 4-8h)
    • +
    • Short periods are impractical (not worth automation overhead)
    • +
    • User wants genuinely cheap times, not just "slightly below average"
    • +
    +

    Defaults:

    +
      +
    • 60 min minimum - Ensures period is long enough for meaningful use
    • +
    • 15% flex - Stricter selection, focuses on truly cheap times
    • +
    • Reasoning: Better to find fewer, higher-quality periods than many mediocre ones
    • +
    +

    User behavior:

    +
      +
    • Automations trigger actions (turn on devices)
    • +
    • Wrong automation = wasted energy/money
    • +
    • Preference: Conservative (miss some savings) over aggressive (false positives)
    • +
    +

    Peak Price: Warning Focus​

    +

    Goal: Alert users to expensive periods for consumption reduction

    +

    Constraints:

    +
      +
    • Brief price spikes still matter (even 15-30 min is worth avoiding)
    • +
    • Early warning more valuable than perfect accuracy
    • +
    • User can manually decide whether to react
    • +
    +

    Defaults:

    +
      +
    • 30 min minimum - Catches shorter expensive spikes
    • +
    • 20% flex - More permissive, earlier detection
    • +
    • Reasoning: Better to warn early (even if not peak) than miss expensive periods
    • +
    +

    User behavior:

    +
      +
    • Notifications/alerts (informational)
    • +
    • Wrong alert = minor inconvenience, not cost
    • +
    • Preference: Sensitive (catch more) over specific (catch only extremes)
    • +
    +

    Mathematical Justification​

    +

    Peak Price Volatility:

    +

    Price curves tend to have:

    +
      +
    • Sharp spikes during peak hours (morning/evening)
    • +
    • Shorter duration at maximum (1-2 hours typical)
    • +
    • Higher variance in peak times than cheap times
    • +
    +

    Example day:

    +
    Cheap period:     02:00-07:00 (5 hours at 10-12 ct)  ← Gradual, stable
    Expensive period: 17:00-18:30 (1.5 hours at 35-40 ct) ← Sharp, brief
    +

    Implication:

    +
      +
    • Stricter flex on peak (15%) might miss real expensive periods (too brief)
    • +
    • Longer min_length (60 min) might exclude legitimate spikes
    • +
    • Solution: More flexible thresholds for peak detection
    • +
    +

    Design Alternatives Considered​

    +

    Option 1: Symmetric defaults (rejected)

    +
      +
    • Both 60 min, both 15% flex
    • +
    • Problem: Misses short but expensive spikes
    • +
    • User feedback: "Why didn't I get warned about the 30-min price spike?"
    • +
    +

    Option 2: Same defaults, let users figure it out (rejected)

    +
      +
    • No guidance on best practices
    • +
    • Users would need to experiment to find good values
    • +
    • Most users stick with defaults, so defaults matter
    • +
    +

    Option 3: Current approach (adopted)

    +
      +
    • All values user-configurable via config flow options
    • +
    • Different installation defaults for Best Price vs. Peak Price
    • +
    • Defaults reflect recommended practices for each use case
    • +
    • Users who need different behavior can adjust
    • +
    • Most users benefit from sensible defaults without configuration
    • +
    +
    +

    Flex Limits and Safety Caps​

    +

    1. Absolute Maximum: 50% (MAX_SAFE_FLEX)​

    +

    Enforcement: core.py caps abs(flex) at 0.50 (50%)

    +

    Rationale:

    +
      +
    • Above 50%, period detection becomes unreliable
    • +
    • Best Price: Almost entire day qualifies (Min + 50% typically covers 60-80% of intervals)
    • +
    • Peak Price: Similar issue with Max - 50%
    • +
    • Result: Either massive periods (entire day) or no periods (min_length not met)
    • +
    +

    Warning Message:

    +
    Flex XX% exceeds maximum safe value! Capping at 50%.
    Recommendation: Use 15-20% with relaxation enabled, or 25-35% without relaxation.
    +

    2. Outlier Filtering Maximum: 25%​

    +

    Enforcement: core.py caps outlier filtering flex at 0.25 (25%)

    +

    Rationale:

    +
      +
    • Outlier filtering uses Flex to determine "stable context" threshold
    • +
    • At > 25% Flex, almost any price swing is considered "stable"
    • +
    • Result: Legitimate price shifts aren't smoothed, breaking period formation
    • +
    +

    Note: User's Flex still applies to period criteria (in_flex check), only outlier filtering is capped.

    + + +

    Optimal: 10-20%

    +
      +
    • Relaxation increases Flex incrementally: 15% β†’ 18% β†’ 21% β†’ ...
    • +
    • Low baseline ensures relaxation has room to work
    • +
    +

    Warning Threshold: > 25%

    +
      +
    • INFO log: "Base flex is on the high side"
    • +
    +

    High Warning: > 30%

    +
      +
    • WARNING log: "Base flex is very high for relaxation mode!"
    • +
    • Recommendation: Lower to 15-20%
    • +
    +

    Without Relaxation​

    +

    Optimal: 20-35%

    +
      +
    • No automatic adjustment, must be sufficient from start
    • +
    • Higher baseline acceptable since no relaxation fallback
    • +
    +

    Maximum Useful: ~50%

    +
      +
    • Above this, period detection degrades (see Hard Limits)
    • +
    +
    +

    Relaxation Strategy​

    +

    Purpose​

    +

    Ensure minimum periods per day are found even when baseline filters are too strict.

    +

    Use Case: User configures strict filters (low Flex, restrictive Level) but wants guarantee of N periods/day for automation reliability.

    +

    Multi-Phase Approach​

    +

    Each day processed independently:

    +
      +
    1. Calculate baseline periods with user's config
    2. +
    3. If insufficient periods found, enter relaxation loop
    4. +
    5. Try progressively relaxed filter combinations
    6. +
    7. Stop when target reached or all attempts exhausted
    8. +
    +

    Relaxation Increments​

    +

    Current Implementation (November 2025):

    +

    File: coordinator/period_handlers/relaxation.py

    +
    # Hard-coded 3% increment per step (reliability over configurability)
    flex_increment = 0.03 # 3% per step
    base_flex = abs(config.flex)

    # Generate flex levels
    for attempt in range(max_relaxation_attempts):
    flex_level = base_flex + (attempt Γ— flex_increment)
    # Try flex_level with both filter combinations
    +

    Constants:

    +
    FLEX_WARNING_THRESHOLD_RELAXATION = 0.25  # 25% - INFO: suggest lowering to 15-20%
    FLEX_HIGH_THRESHOLD_RELAXATION = 0.30 # 30% - WARNING: very high for relaxation mode
    MAX_FLEX_HARD_LIMIT = 0.50 # 50% - absolute maximum (enforced in core.py)
    +

    Design Decisions:

    +
      +
    1. +

      Why 3% fixed increment?

      +
        +
      • Predictable escalation path (15% β†’ 18% β†’ 21% β†’ ...)
      • +
      • Independent of base flex (works consistently)
      • +
      • 11 attempts covers full useful range (15% β†’ 48%)
      • +
      • Balance: Not too slow (2%), not too fast (5%)
      • +
      +
    2. +
    3. +

      Why hard-coded, not configurable?

      +
        +
      • Prevents user misconfiguration
      • +
      • Simplifies mental model (fewer knobs to turn)
      • +
      • Reliable behavior across all configurations
      • +
      • If needed, user adjusts max_relaxation_attempts (fewer/more steps)
      • +
      +
    4. +
    5. +

      Why warn at 25% base flex?

      +
        +
      • At 25% base, first relaxation step reaches 28%
      • +
      • Above 30%, entering diminishing returns territory
      • +
      • User likely doesn't need relaxation with such high base flex
      • +
      • Should either: (a) lower base flex, or (b) disable relaxation
      • +
      +
    6. +
    +

    Historical Context (Pre-November 2025):

    +

    The algorithm previously used percentage-based increments that scaled with base flex:

    +
    increment = base_flex Γ— (step_pct / 100)  # REMOVED
    +

    This caused exponential escalation with high base flex values (e.g., 40% β†’ 50% β†’ 60% β†’ 70% in just 6 steps), making behavior unpredictable. The fixed 3% increment solves this by providing consistent, controlled escalation regardless of starting point.

    +

    Warning Messages:

    +
    if base_flex >= FLEX_HIGH_THRESHOLD_RELAXATION:  # 30%
    _LOGGER.warning(
    "Base flex %.1f%% is very high for relaxation mode! "
    "Consider lowering to 15-20%% or disabling relaxation.",
    base_flex Γ— 100,
    )
    elif base_flex >= FLEX_WARNING_THRESHOLD_RELAXATION: # 25%
    _LOGGER.info(
    "Base flex %.1f%% is on the high side. "
    "Consider 15-20%% for optimal relaxation effectiveness.",
    base_flex Γ— 100,
    )
    +

    Filter Combination Strategy​

    +

    Per Flex level, try in order:

    +
      +
    1. Original Level filter
    2. +
    3. Level filter = "any" (disabled)
    4. +
    +

    Early Exit: Stop immediately when target reached (don't try unnecessary combinations)

    +

    Example Flow (target=2 periods/day):

    +
    Day 2025-11-19:
    1. Baseline flex=15%: Found 1 period (need 2)
    2. Flex=18% + level=cheap: Found 1 period
    3. Flex=18% + level=any: Found 2 periods β†’ SUCCESS (stop)
    +
    +

    Implementation Notes​

    +

    Key Files and Functions​

    +

    Period Calculation Entry Point:

    +
    # coordinator/period_handlers/core.py
    def calculate_periods(
    all_prices: list[dict],
    config: PeriodConfig,
    time: TimeService,
    ) -> dict[str, Any]
    +

    Flex + Distance Filtering:

    +
    # coordinator/period_handlers/level_filtering.py
    def check_interval_criteria(
    price: float,
    criteria: IntervalCriteria,
    ) -> tuple[bool, bool] # (in_flex, meets_min_distance)
    +

    Relaxation Orchestration:

    +
    # coordinator/period_handlers/relaxation.py
    def calculate_periods_with_relaxation(...) -> tuple[dict, dict]
    def relax_single_day(...) -> tuple[dict, dict]
    +

    Outlier Filtering Implementation​

    +

    File: coordinator/period_handlers/outlier_filtering.py

    +

    Purpose: Detect and smooth isolated price spikes before period identification to prevent artificial fragmentation.

    +

    Algorithm Details:

    +
      +
    1. +

      Linear Regression Prediction:

      +
        +
      • Uses surrounding intervals to predict expected price
      • +
      • Window size: 3+ intervals (MIN_CONTEXT_SIZE)
      • +
      • Calculates trend slope and standard deviation
      • +
      • Formula: predicted = mean + slope Γ— (position - center)
      • +
      +
    2. +
    3. +

      Confidence Intervals:

      +
        +
      • 95% confidence level (2 standard deviations)
      • +
      • Tolerance = 2.0 Γ— std_dev (CONFIDENCE_LEVEL constant)
      • +
      • Outlier if: |actual - predicted| > tolerance
      • +
      • Accounts for natural price volatility in context window
      • +
      +
    4. +
    5. +

      Symmetry Check:

      +
        +
      • Rejects asymmetric outliers (threshold: 1.5 std dev)
      • +
      • Preserves legitimate price shifts (morning/evening peaks)
      • +
      • Algorithm: +
        residual = abs(actual - predicted)
        symmetry_threshold = 1.5 Γ— std_dev

        if residual > tolerance:
        # Check if spike is symmetric in context
        context_residuals = [abs(p - pred) for p, pred in context]
        avg_context_residual = mean(context_residuals)

        if residual > symmetry_threshold Γ— avg_context_residual:
        # Asymmetric spike β†’ smooth it
        else:
        # Symmetric (part of trend) β†’ keep it
        +
      • +
      +
    6. +
    7. +

      Enhanced Zigzag Detection:

      +
        +
      • Detects spike clusters via relative volatility
      • +
      • Threshold: 2.0Γ— local volatility (RELATIVE_VOLATILITY_THRESHOLD)
      • +
      • Single-pass algorithm (no iteration needed)
      • +
      • Catches patterns like: 18, 35, 19, 34, 18 (alternating spikes)
      • +
      +
    8. +
    +

    Constants:

    +
    # coordinator/period_handlers/outlier_filtering.py

    CONFIDENCE_LEVEL = 2.0 # 95% confidence (2 std deviations)
    SYMMETRY_THRESHOLD = 1.5 # Asymmetry detection threshold
    RELATIVE_VOLATILITY_THRESHOLD = 2.0 # Zigzag spike detection
    MIN_CONTEXT_SIZE = 3 # Minimum intervals for regression
    +

    Data Integrity:

    +
      +
    • Original prices stored in _original_price field
    • +
    • All statistics (daily min/max/avg) use original prices
    • +
    • Smoothing only affects period formation logic
    • +
    • Smart counting: Only counts smoothing that changed period outcome
    • +
    +

    Performance:

    +
      +
    • Single pass through price data
    • +
    • O(n) complexity with small context window
    • +
    • No iterative refinement needed
    • +
    • Typical processing time: <1ms for 96 intervals
    • +
    +

    Example Debug Output:

    +
    DEBUG: [2025-11-11T14:30:00+01:00] Outlier detected: 35.2 ct
    DEBUG: Context: 18.5, 19.1, 19.3, 19.8, 20.2 ct
    DEBUG: Residual: 14.5 ct > tolerance: 4.8 ct (2Γ—2.4 std dev)
    DEBUG: Trend slope: 0.3 ct/interval (gradual increase)
    DEBUG: Predicted: 20.7 ct (linear regression)
    DEBUG: Smoothed to: 20.7 ct
    DEBUG: Asymmetry ratio: 3.2 (>1.5 threshold) β†’ confirmed outlier
    +

    Why This Approach?

    +
      +
    1. +

      Linear regression over moving average:

      +
        +
      • Accounts for price trends (morning ramp-up, evening decline)
      • +
      • Moving average can't predict direction, only level
      • +
      • Better accuracy on non-stationary price curves
      • +
      +
    2. +
    3. +

      Symmetry check over fixed threshold:

      +
        +
      • Prevents false positives on legitimate price shifts
      • +
      • Adapts to local volatility patterns
      • +
      • Preserves user expectation: "expensive during peak hours"
      • +
      +
    4. +
    5. +

      Single-pass over iterative:

      +
        +
      • Predictable behavior (no convergence issues)
      • +
      • Fast and deterministic
      • +
      • Easier to debug and reason about
      • +
      +
    6. +
    +

    Alternative Approaches Considered:

    +
      +
    1. Median filtering - Rejected: Too aggressive, removes legitimate peaks
    2. +
    3. Moving average - Rejected: Can't handle trends
    4. +
    5. IQR (Interquartile Range) - Rejected: Assumes normal distribution
    6. +
    7. RANSAC - Rejected: Overkill for 1D data, slow
    8. +
    +
    +

    Debugging Tips​

    +

    Enable DEBUG logging:

    +
    # configuration.yaml
    logger:
    default: info
    logs:
    custom_components.tibber_prices.coordinator.period_handlers: debug
    +

    Key log messages to watch:

    +
      +
    1. "Filter statistics: X intervals checked" - Shows how many intervals filtered by each criterion
    2. +
    3. "After build_periods: X raw periods found" - Periods before min_length filtering
    4. +
    5. "Day X: Success with flex=Y%" - Relaxation succeeded
    6. +
    7. "High flex X% detected: Reducing min_distance Y% β†’ Z%" - Distance scaling active
    8. +
    +
    +

    Common Configuration Pitfalls​

    +

    ❌ Anti-Pattern 1: High Flex with Relaxation​

    +

    Configuration:

    +
    best_price_flex: 40
    enable_relaxation_best: true
    +

    Problem:

    +
      +
    • Base Flex 40% already very permissive
    • +
    • Relaxation increments further (43%, 46%, 49%, ...)
    • +
    • Quickly approaches 50% cap with diminishing returns
    • +
    +

    Solution:

    +
    best_price_flex: 15  # Let relaxation increase it
    enable_relaxation_best: true
    +

    ❌ Anti-Pattern 2: Zero Min_Distance​

    +

    Configuration:

    +
    best_price_min_distance_from_avg: 0
    +

    Problem:

    +
      +
    • "Flat days" (little price variation) accept all intervals
    • +
    • Periods lose semantic meaning ("significantly cheap")
    • +
    • May create periods during barely-below-average times
    • +
    +

    Solution:

    +
    best_price_min_distance_from_avg: 5  # Use default 5%
    +

    ❌ Anti-Pattern 3: Conflicting Flex + Distance​

    +

    Configuration:

    +
    best_price_flex: 45
    best_price_min_distance_from_avg: 10
    +

    Problem:

    +
      +
    • Distance filter dominates, making Flex irrelevant
    • +
    • Dynamic scaling helps but still suboptimal
    • +
    +

    Solution:

    +
    best_price_flex: 20
    best_price_min_distance_from_avg: 5
    +
    +

    Testing Scenarios​

    +

    Scenario 1: Normal Day (Good Variation)​

    +

    Price Range: 10 - 20 ct/kWh (100% variation) +Average: 15 ct/kWh

    +

    Expected Behavior:

    +
      +
    • Flex 15%: Should find 2-4 clear best price periods
    • +
    • Flex 30%: Should find 4-8 periods (more lenient)
    • +
    • Min_Distance 5%: Effective throughout range
    • +
    +

    Debug Checks:

    +
    DEBUG: Filter statistics: 96 intervals checked
    DEBUG: Filtered by FLEX: 12/96 (12.5%) ← Low percentage = good variation
    DEBUG: Filtered by MIN_DISTANCE: 8/96 (8.3%) ← Both filters active
    DEBUG: After build_periods: 3 raw periods found
    +

    Scenario 2: Flat Day (Poor Variation)​

    +

    Price Range: 14 - 16 ct/kWh (14% variation) +Average: 15 ct/kWh

    +

    Expected Behavior:

    +
      +
    • Flex 15%: May find 1-2 small periods (or zero if no clear winners)
    • +
    • Min_Distance 5%: Critical here - ensures only truly cheaper intervals qualify
    • +
    • Without Min_Distance: Would accept almost entire day as "best price"
    • +
    +

    Debug Checks:

    +
    DEBUG: Filter statistics: 96 intervals checked
    DEBUG: Filtered by FLEX: 45/96 (46.9%) ← High percentage = poor variation
    DEBUG: Filtered by MIN_DISTANCE: 52/96 (54.2%) ← Distance filter dominant
    DEBUG: After build_periods: 1 raw period found
    DEBUG: Day 2025-11-11: Baseline insufficient (1 < 2), starting relaxation
    +

    Scenario 3: Extreme Day (High Volatility)​

    +

    Price Range: 5 - 40 ct/kWh (700% variation) +Average: 18 ct/kWh

    +

    Expected Behavior:

    +
      +
    • Flex 15%: Finds multiple very cheap periods (5-6 ct)
    • +
    • Outlier filtering: May smooth isolated spikes (30-40 ct)
    • +
    • Distance filter: Less impactful (clear separation between cheap/expensive)
    • +
    +

    Debug Checks:

    +
    DEBUG: Outlier detected: 38.5 ct (threshold: 4.2 ct)
    DEBUG: Smoothed to: 20.1 ct (trend prediction)
    DEBUG: Filter statistics: 96 intervals checked
    DEBUG: Filtered by FLEX: 8/96 (8.3%) ← Very selective
    DEBUG: Filtered by MIN_DISTANCE: 4/96 (4.2%) ← Flex dominates
    DEBUG: After build_periods: 4 raw periods found
    +

    Scenario 4: Relaxation Success​

    +

    Initial State: Baseline finds 1 period, target is 2

    +

    Expected Flow:

    +
    INFO: Calculating BEST PRICE periods: relaxation=ON, target=2/day, flex=15.0%
    DEBUG: Day 2025-11-11: Baseline found 1 period (need 2)
    DEBUG: Phase 1: flex 18.0% + original filters
    DEBUG: Found 1 period (insufficient)
    DEBUG: Phase 2: flex 18.0% + level=any
    DEBUG: Found 2 periods β†’ SUCCESS
    INFO: Day 2025-11-11: Success after 1 relaxation phase (2 periods)
    +

    Scenario 5: Relaxation Exhausted​

    +

    Initial State: Strict filters, very flat day

    +

    Expected Flow:

    +
    INFO: Calculating BEST PRICE periods: relaxation=ON, target=2/day, flex=15.0%
    DEBUG: Day 2025-11-11: Baseline found 0 periods (need 2)
    DEBUG: Phase 1-11: flex 15%β†’48%, all filter combinations tried
    WARNING: Day 2025-11-11: All relaxation phases exhausted, still only 1 period found
    INFO: Period calculation completed: 1/2 days reached target
    +

    Debugging Checklist​

    +

    When debugging period calculation issues:

    +
      +
    1. +

      Check Filter Statistics

      +
        +
      • Which filter blocks most intervals? (flex, distance, or level)
      • +
      • High flex filtering (>30%) = Need more flexibility or relaxation
      • +
      • High distance filtering (>50%) = Min_distance too strict or flat day
      • +
      • High level filtering = Level filter too restrictive
      • +
      +
    2. +
    3. +

      Check Relaxation Behavior

      +
        +
      • Did relaxation activate? Check for "Baseline insufficient" message
      • +
      • Which phase succeeded? Early success (phase 1-3) = good config
      • +
      • Late success (phase 8-11) = Consider adjusting base config
      • +
      • Exhausted all phases = Unrealistic target for this day's price curve
      • +
      +
    4. +
    5. +

      Check Flex Warnings

      +
        +
      • INFO at 25% base flex = On the high side
      • +
      • WARNING at 30% base flex = Too high for relaxation
      • +
      • If seeing these: Lower base flex to 15-20%
      • +
      +
    6. +
    7. +

      Check Min_Distance Scaling

      +
        +
      • Debug messages show "High flex X% detected: Reducing min_distance Y% β†’ Z%"
      • +
      • If scale factor <0.8 (20% reduction): High flex is active
      • +
      • If periods still not found: Filters conflict even with scaling
      • +
      +
    8. +
    9. +

      Check Outlier Filtering

      +
        +
      • Look for "Outlier detected" messages
      • +
      • Check period_interval_smoothed_count attribute
      • +
      • If no smoothing but periods fragmented: Not isolated spikes, but legitimate price levels
      • +
      +
    10. +
    +
    +

    Future Enhancements​

    +

    Potential Improvements​

    +
      +
    1. +

      Adaptive Flex Calculation:

      +
        +
      • Auto-adjust Flex based on daily price variation
      • +
      • High variation days: Lower Flex needed
      • +
      • Low variation days: Higher Flex needed
      • +
      +
    2. +
    3. +

      Machine Learning Approach:

      +
        +
      • Learn optimal Flex/Distance from user feedback
      • +
      • Classify days by pattern (normal/flat/volatile/bimodal)
      • +
      • Apply pattern-specific defaults
      • +
      +
    4. +
    5. +

      Multi-Objective Optimization:

      +
        +
      • Balance period count vs. quality
      • +
      • Consider period duration vs. price level
      • +
      • Optimize for user's stated use case (EV charging vs. heat pump)
      • +
      +
    6. +
    +

    Known Limitations​

    +
      +
    1. Fixed increment step: 3% cap may be too aggressive for very low base Flex
    2. +
    3. Linear distance scaling: Could benefit from non-linear curve
    4. +
    5. No consideration of temporal distribution: May find all periods in one part of day
    6. +
    +
    +

    Future Enhancements​

    +

    Potential Improvements​

    +

    1. Adaptive Flex Calculation (Not Yet Implemented)​

    +

    Concept: Auto-adjust Flex based on daily price variation

    +

    Algorithm:

    +
    # Pseudo-code for adaptive flex
    variation = (daily_max - daily_min) / daily_avg

    if variation < 0.15: # Flat day (< 15% variation)
    adaptive_flex = 0.30 # Need higher flex
    elif variation > 0.50: # High volatility (> 50% variation)
    adaptive_flex = 0.10 # Lower flex sufficient
    else: # Normal day
    adaptive_flex = 0.15 # Standard flex
    +

    Benefits:

    +
      +
    • Eliminates need for relaxation on most days
    • +
    • Self-adjusting to market conditions
    • +
    • Better user experience (less configuration needed)
    • +
    +

    Challenges:

    +
      +
    • Harder to predict behavior (less transparent)
    • +
    • May conflict with user's mental model
    • +
    • Needs extensive testing across different markets
    • +
    +

    Status: Considered but not implemented (prefer explicit relaxation)

    +

    2. Machine Learning Approach (Future Work)​

    +

    Concept: Learn optimal Flex/Distance from user feedback

    +

    Approach:

    +
      +
    • Track which periods user actually uses (automation triggers)
    • +
    • Classify days by pattern (normal/flat/volatile/bimodal)
    • +
    • Apply pattern-specific defaults
    • +
    • Learn per-user preferences over time
    • +
    +

    Benefits:

    +
      +
    • Personalized to user's actual behavior
    • +
    • Adapts to local market patterns
    • +
    • Could discover non-obvious patterns
    • +
    +

    Challenges:

    +
      +
    • Requires user feedback mechanism (not implemented)
    • +
    • Privacy concerns (storing usage patterns)
    • +
    • Complexity for users to understand "why this period?"
    • +
    • Cold start problem (new users have no history)
    • +
    +

    Status: Theoretical only (no implementation planned)

    +

    3. Multi-Objective Optimization (Research Idea)​

    +

    Concept: Balance multiple goals simultaneously

    +

    Goals:

    +
      +
    • Period count vs. quality (cheap vs. very cheap)
    • +
    • Period duration vs. price level (long mediocre vs. short excellent)
    • +
    • Temporal distribution (spread throughout day vs. clustered)
    • +
    • User's stated use case (EV charging vs. heat pump vs. dishwasher)
    • +
    +

    Algorithm:

    +
      +
    • Pareto optimization (find trade-off frontier)
    • +
    • User chooses point on frontier via preferences
    • +
    • Genetic algorithm or simulated annealing
    • +
    +

    Benefits:

    +
      +
    • More sophisticated period selection
    • +
    • Better match to user's actual needs
    • +
    • Could handle complex appliance requirements
    • +
    +

    Challenges:

    +
      +
    • Much more complex to implement
    • +
    • Harder to explain to users
    • +
    • Computational cost (may need caching)
    • +
    • Configuration explosion (too many knobs)
    • +
    +

    Status: Research idea only (not planned)

    +

    Known Limitations​

    +

    1. Fixed Increment Step​

    +

    Current: 3% cap may be too aggressive for very low base Flex

    +

    Example:

    +
      +
    • Base flex 5% + 3% increment = 8% (60% increase!)
    • +
    • Base flex 15% + 3% increment = 18% (20% increase)
    • +
    +

    Possible Solution:

    +
      +
    • Percentage-based increment: increment = max(base_flex Γ— 0.20, 0.03)
    • +
    • This gives: 5% β†’ 6% (20%), 15% β†’ 18% (20%), 40% β†’ 43% (7.5%)
    • +
    +

    Why Not Implemented:

    +
      +
    • Very low base flex (<10%) unusual
    • +
    • Users with strict requirements likely disable relaxation
    • +
    • Simplicity preferred over edge case optimization
    • +
    +

    2. Linear Distance Scaling​

    +

    Current: Linear scaling may be too aggressive/conservative

    +

    Alternative: Non-linear curve

    +
    # Example: Exponential scaling
    scale_factor = 0.25 + 0.75 Γ— exp(-5 Γ— (flex - 0.20))

    # Or: Sigmoid scaling
    scale_factor = 0.25 + 0.75 / (1 + exp(10 Γ— (flex - 0.35)))
    +

    Why Not Implemented:

    +
      +
    • Linear is easier to reason about
    • +
    • No evidence that non-linear is better
    • +
    • Would need extensive testing
    • +
    +

    3. No Temporal Distribution Consideration​

    +

    Issue: May find all periods in one part of day

    +

    Example:

    +
      +
    • All 3 "best price" periods between 02:00-08:00
    • +
    • No periods in evening (when user might want to run appliances)
    • +
    +

    Possible Solution:

    +
      +
    • Add "spread" parameter (prefer distributed periods)
    • +
    • Weight periods by time-of-day preferences
    • +
    • Consider user's typical usage patterns
    • +
    +

    Why Not Implemented:

    +
      +
    • Adds complexity
    • +
    • Users can work around with multiple automations
    • +
    • Different users have different needs (no one-size-fits-all)
    • +
    +

    4. Period Boundary Handling​

    +

    Current Behavior: Periods can cross midnight naturally

    +

    Design Principle: Each interval is evaluated using its own day's reference prices (daily min/max/avg).

    +

    Implementation:

    +
    # In period_building.py build_periods():
    for price_data in all_prices:
    starts_at = time.get_interval_time(price_data)
    date_key = starts_at.date()

    # CRITICAL: Use interval's own day, not period_start_date
    ref_date = date_key

    criteria = TibberPricesIntervalCriteria(
    ref_price=ref_prices[ref_date], # Interval's day
    avg_price=avg_prices[ref_date], # Interval's day
    flex=flex,
    min_distance_from_avg=min_distance_from_avg,
    reverse_sort=reverse_sort,
    )
    +

    Why Per-Day Evaluation?

    +

    Periods can cross midnight (e.g., 23:45 β†’ 01:00). Each day has independent reference prices calculated from its 96 intervals.

    +

    Example showing the problem with period-start-day approach:

    +
    Day 1 (2025-11-21): Cheap day
    daily_min = 10 ct, daily_avg = 20 ct, flex = 15%
    Criteria: price ≀ 11.5 ct (10 + 10Γ—0.15)

    Day 2 (2025-11-22): Expensive day
    daily_min = 20 ct, daily_avg = 30 ct, flex = 15%
    Criteria: price ≀ 23 ct (20 + 20Γ—0.15)

    Period crossing midnight: 23:45 Day 1 β†’ 00:15 Day 2
    23:45 (Day 1): 11 ct β†’ βœ… Passes (11 ≀ 11.5)
    00:00 (Day 2): 21 ct β†’ Should this pass?

    ❌ WRONG (using period start day):
    00:00 evaluated against Day 1's 11.5 ct threshold
    21 ct > 11.5 ct β†’ Fails
    But 21ct IS cheap on Day 2 (min=20ct)!

    βœ… CORRECT (using interval's own day):
    00:00 evaluated against Day 2's 23 ct threshold
    21 ct ≀ 23 ct β†’ Passes
    Correctly identified as cheap relative to Day 2
    +

    Trade-off: Periods May Break at Midnight

    +

    When days differ significantly, period can split:

    +
    Day 1: Min=10ct, Avg=20ct, 23:45=11ct β†’ βœ… Cheap (relative to Day 1)
    Day 2: Min=25ct, Avg=35ct, 00:00=21ct β†’ ❌ Expensive (relative to Day 2)
    Result: Period stops at 23:45, new period starts later
    +

    This is mathematically correct - 21ct is genuinely expensive on a day where minimum is 25ct.

    +

    Market Reality Explains Price Jumps:

    +

    Day-ahead electricity markets (EPEX SPOT) set prices at 12:00 CET for all next-day hours:

    +
      +
    • Late intervals (23:45): Priced ~36h before delivery β†’ high forecast uncertainty β†’ risk premium
    • +
    • Early intervals (00:00): Priced ~12h before delivery β†’ better forecasts β†’ lower risk buffer
    • +
    +

    This explains why absolute prices jump at midnight despite minimal demand changes.

    +

    User-Facing Solution (Nov 2025):

    +

    Added per-period day volatility attributes to detect when classification changes are meaningful:

    +
      +
    • day_volatility_%: Percentage spread (span/avg Γ— 100)
    • +
    • day_price_min, day_price_max, day_price_span: Daily price range (ct/ΓΈre)
    • +
    +

    Automations can check volatility before acting:

    +
    condition:
    - condition: template
    value_template: >
    {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }}
    +

    Low volatility (< 15%) means classification changes are less economically significant.

    +

    Alternative Approaches Rejected:

    +
      +
    1. +

      Use period start day for all intervals

      +
        +
      • Problem: Mathematically incorrect - lends cheap day's criteria to expensive day
      • +
      • Rejected: Violates relative evaluation principle
      • +
      +
    2. +
    3. +

      Adjust flex/distance at midnight

      +
        +
      • Problem: Complex, unpredictable, hides market reality
      • +
      • Rejected: Users should understand price context, not have it hidden
      • +
      +
    4. +
    5. +

      Split at midnight always

      +
        +
      • Problem: Artificially fragments natural periods
      • +
      • Rejected: Worse user experience
      • +
      +
    6. +
    7. +

      Use next day's reference after midnight

      +
        +
      • Problem: Period criteria inconsistent across duration
      • +
      • Rejected: Confusing and unpredictable
      • +
      +
    8. +
    +

    Status: Per-day evaluation is intentional design prioritizing mathematical correctness.

    +

    See Also:

    +
      +
    • User documentation: docs/user/period-calculation.md β†’ "Midnight Price Classification Changes"
    • +
    • Implementation: coordinator/period_handlers/period_building.py (line ~126: ref_date = date_key)
    • +
    • Attributes: coordinator/period_handlers/period_statistics.py (day volatility calculation)
    • +
    +
    +

    References​

    + +

    Changelog​

    +
      +
    • 2025-11-19: Initial documentation of Flex/Distance interaction and Relaxation strategy fixes
    • +
    + + \ No newline at end of file diff --git a/developer/refactoring-guide.html b/developer/refactoring-guide.html new file mode 100644 index 0000000..a5bec33 --- /dev/null +++ b/developer/refactoring-guide.html @@ -0,0 +1,264 @@ + + + + + +Refactoring Guide | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Refactoring Guide

    +

    This guide explains how to plan and execute major refactorings in this project.

    +

    When to Plan a Refactoring​

    +

    Not every code change needs a detailed plan. Create a refactoring plan when:

    +

    πŸ”΄ Major changes requiring planning:

    +
      +
    • Splitting modules into packages (>5 files affected, >500 lines moved)
    • +
    • Architectural changes (new packages, module restructuring)
    • +
    • Breaking changes (API changes, config format migrations)
    • +
    +

    🟑 Medium changes that might benefit from planning:

    +
      +
    • Complex features with multiple moving parts
    • +
    • Changes affecting many files (>3 files, unclear best approach)
    • +
    • Refactorings with unclear scope
    • +
    +

    🟒 Small changes - no planning needed:

    +
      +
    • Bug fixes (straightforward, <100 lines)
    • +
    • Small features (<3 files, clear approach)
    • +
    • Documentation updates
    • +
    • Cosmetic changes (formatting, renaming)
    • +
    +

    The Planning Process​

    +

    1. Create a Planning Document​

    +

    Create a file in the planning/ directory (git-ignored for free iteration):

    +
    # Example:
    touch planning/my-feature-refactoring-plan.md
    +

    Note: The planning/ directory is git-ignored, so you can iterate freely without polluting git history.

    +

    2. Use the Planning Template​

    +

    Every planning document should include:

    +
    # <Feature> Refactoring Plan

    **Status**: πŸ”„ PLANNING | 🚧 IN PROGRESS | βœ… COMPLETED | ❌ CANCELLED
    **Created**: YYYY-MM-DD
    **Last Updated**: YYYY-MM-DD

    ## Problem Statement

    - What's the issue?
    - Why does it need fixing?
    - Current pain points

    ## Proposed Solution

    - High-level approach
    - File structure (before/after)
    - Module responsibilities

    ## Migration Strategy

    - Phase-by-phase breakdown
    - File lifecycle (CREATE/MODIFY/DELETE/RENAME)
    - Dependencies between phases
    - Testing checkpoints

    ## Risks & Mitigation

    - What could go wrong?
    - How to prevent it?
    - Rollback strategy

    ## Success Criteria

    - Measurable improvements
    - Testing requirements
    - Verification steps
    +

    See planning/README.md for detailed template explanation.

    +

    3. Iterate Freely​

    +

    Since planning/ is git-ignored:

    +
      +
    • Draft multiple versions
    • +
    • Get AI assistance without commit pressure
    • +
    • Refine until the plan is solid
    • +
    • No need to clean up intermediate versions
    • +
    +

    4. Implementation Phase​

    +

    Once plan is approved:

    +
      +
    • Follow the phases defined in the plan
    • +
    • Test after each phase (don't skip!)
    • +
    • Update plan if issues discovered
    • +
    • Track progress through phase status
    • +
    +

    5. After Completion​

    +

    Option A: Archive in docs/development/ +If the plan has lasting value (successful pattern, reusable approach):

    +
    mv planning/my-feature-refactoring-plan.md docs/development/
    git add docs/development/my-feature-refactoring-plan.md
    git commit -m "docs: archive successful refactoring plan"
    +

    Option B: Delete +If the plan served its purpose and code is the source of truth:

    +
    rm planning/my-feature-refactoring-plan.md
    +

    Option C: Keep locally (not committed) +For "why we didn't do X" reference:

    +
    mkdir -p planning/archive
    mv planning/my-feature-refactoring-plan.md planning/archive/
    # Still git-ignored, just organized
    +

    Real-World Example​

    +

    The sensor/ package refactoring (Nov 2025) is a successful example:

    +

    Before:

    +
      +
    • sensor.py - 2,574 lines, hard to navigate
    • +
    +

    After:

    +
      +
    • sensor/ package with 5 focused modules
    • +
    • Each module <800 lines
    • +
    • Clear separation of concerns
    • +
    +

    Process:

    +
      +
    1. Created planning/module-splitting-plan.md (now in docs/development/)
    2. +
    3. Defined 6 phases with clear file lifecycle
    4. +
    5. Implemented phase by phase
    6. +
    7. Tested after each phase
    8. +
    9. Documented in AGENTS.md
    10. +
    11. Moved plan to docs/development/ as reference
    12. +
    +

    Key learnings:

    +
      +
    • Temporary _impl.py files avoid Python package conflicts
    • +
    • Test after EVERY phase (don't accumulate changes)
    • +
    • Clear file lifecycle (CREATE/MODIFY/DELETE/RENAME)
    • +
    • Phase-by-phase approach enables safe rollback
    • +
    +

    Note: The complete module splitting plan was documented during implementation but has been superseded by the actual code structure.

    +

    Phase-by-Phase Implementation​

    +

    Why Phases Matter​

    +

    Breaking refactorings into phases:

    +
      +
    • βœ… Enables testing after each change (catch bugs early)
    • +
    • βœ… Allows rollback to last good state
    • +
    • βœ… Makes progress visible
    • +
    • βœ… Reduces cognitive load (focus on one thing)
    • +
    • ❌ Takes more time (but worth it!)
    • +
    +

    Phase Structure​

    +

    Each phase should:

    +
      +
    1. Have clear goal - What's being changed?
    2. +
    3. Document file lifecycle - CREATE/MODIFY/DELETE/RENAME
    4. +
    5. Define success criteria - How to verify it worked?
    6. +
    7. Include testing steps - What to test?
    8. +
    9. Estimate time - Realistic time budget
    10. +
    +

    Example Phase Documentation​

    +
    ### Phase 3: Extract Helper Functions (Session 3)

    **Goal**: Move pure utility functions to helpers.py

    **File Lifecycle**:

    - ✨ CREATE `sensor/helpers.py` (utility functions)
    - ✏️ MODIFY `sensor/core.py` (import from helpers.py)

    **Steps**:

    1. Create sensor/helpers.py
    2. Move pure functions (no state, no self)
    3. Add comprehensive docstrings
    4. Update imports in core.py

    **Estimated time**: 45 minutes

    **Success criteria**:

    - βœ… All pure functions moved
    - βœ… `./scripts/lint-check` passes
    - βœ… HA starts successfully
    - βœ… All entities work correctly
    +

    Testing Strategy​

    +

    After Each Phase​

    +

    Minimum testing checklist:

    +
    # 1. Linting passes
    ./scripts/lint-check

    # 2. Home Assistant starts
    ./scripts/develop
    # Watch for startup errors in logs

    # 3. Integration loads
    # Check: Settings β†’ Devices & Services β†’ Tibber Prices
    # Verify: All entities appear

    # 4. Basic functionality
    # Test: Data updates without errors
    # Check: Entity states update correctly
    +

    Comprehensive Testing (Final Phase)​

    +

    After completing all phases:

    +
      +
    • Test all entities (sensors, binary sensors)
    • +
    • Test configuration flow (add/modify/remove)
    • +
    • Test options flow (change settings)
    • +
    • Test services (custom service calls)
    • +
    • Test error handling (disconnect API, invalid data)
    • +
    • Test caching (restart HA, verify cache loads)
    • +
    • Test time-based updates (quarter-hour refresh)
    • +
    +

    Common Pitfalls​

    +

    ❌ Skip Planning for Large Changes​

    +

    Problem: "This seems straightforward, I'll just start coding..."

    +

    Result: Halfway through, realize the approach doesn't work. Wasted time.

    +

    Solution: If unsure, spend 30 minutes on a rough plan. Better to plan and discard than get stuck.

    +

    ❌ Implement All Phases at Once​

    +

    Problem: "I'll do all phases, then test everything..."

    +

    Result: 10+ files changed, 2000+ lines modified, hard to debug if something breaks.

    +

    Solution: Test after EVERY phase. Commit after each successful phase.

    +

    ❌ Forget to Update Documentation​

    +

    Problem: Code is refactored, but AGENTS.md and docs/ still reference old structure.

    +

    Result: AI/humans get confused by outdated documentation.

    +

    Solution: Include "Documentation Phase" at the end of every refactoring plan.

    +

    ❌ Ignore the Planning Directory​

    +

    Problem: "I'll just create the plan in docs/ directly..."

    +

    Result: Git history polluted with draft iterations, or pressure to "commit something" too early.

    +

    Solution: Always use planning/ for work-in-progress. Move to docs/ only when done.

    +

    Integration with AI Development​

    +

    This project uses AI heavily (GitHub Copilot, Claude). The planning process supports AI development:

    +

    AI reads from:

    +
      +
    • AGENTS.md - Long-term memory, patterns, conventions (AI-focused)
    • +
    • docs/development/ - Human-readable guides (human-focused)
    • +
    • planning/ - Active refactoring plans (shared context)
    • +
    +

    AI updates:

    +
      +
    • AGENTS.md - When patterns change
    • +
    • planning/*.md - During refactoring implementation
    • +
    • docs/development/ - After successful completion
    • +
    +

    Why separate AGENTS.md and docs/development/?

    +
      +
    • AGENTS.md: Technical, comprehensive, AI-optimized
    • +
    • docs/development/: Practical, focused, human-optimized
    • +
    • Both stay in sync but serve different audiences
    • +
    +

    See AGENTS.md section "Planning Major Refactorings" for AI-specific guidance.

    +

    Tools and Resources​

    +

    Planning Directory​

    +
      +
    • planning/ - Git-ignored workspace for drafts
    • +
    • planning/README.md - Detailed planning documentation
    • +
    • planning/*.md - Active refactoring plans
    • +
    +

    Example Plans​

    +
      +
    • docs/development/module-splitting-plan.md - βœ… Completed, archived
    • +
    • planning/config-flow-refactoring-plan.md - πŸ”„ Planned (1013 lines β†’ 4 modules)
    • +
    • planning/binary-sensor-refactoring-plan.md - πŸ”„ Planned (644 lines β†’ 4 modules)
    • +
    • planning/coordinator-refactoring-plan.md - πŸ”„ Planned (1446 lines, high complexity)
    • +
    +

    Helper Scripts​

    +
    ./scripts/lint-check   # Verify code quality
    ./scripts/develop # Start HA for testing
    ./scripts/lint # Auto-fix issues
    +

    FAQ​

    +

    Q: When should I create a plan vs. just start coding?​

    +

    A: If you're asking this question, you probably need a plan. 😊

    +

    Simple rule: If you can't describe the entire change in 3 sentences, create a plan.

    +

    Q: How detailed should the plan be?​

    +

    A: Detailed enough to execute without major surprises, but not a line-by-line script.

    +

    Good plan level:

    +
      +
    • Lists all files affected (CREATE/MODIFY/DELETE)
    • +
    • Defines phases with clear boundaries
    • +
    • Includes testing strategy
    • +
    • Estimates time per phase
    • +
    +

    Too detailed:

    +
      +
    • Exact code snippets for every change
    • +
    • Line-by-line instructions
    • +
    +

    Too vague:

    +
      +
    • "Refactor sensor.py to be better"
    • +
    • No phase breakdown
    • +
    • No testing strategy
    • +
    +

    Q: What if the plan changes during implementation?​

    +

    A: Update the plan! Planning documents are living documents.

    +

    If you discover:

    +
      +
    • Better approach β†’ Update "Proposed Solution"
    • +
    • More phases needed β†’ Add to "Migration Strategy"
    • +
    • New risks β†’ Update "Risks & Mitigation"
    • +
    +

    Document WHY the plan changed (helps future refactorings).

    +

    Q: Should every refactoring follow this process?​

    +

    A: No! Use judgment:

    +
      +
    • Small changes (<100 lines, clear approach): Just do it, no plan needed
    • +
    • Medium changes (unclear scope): Write rough outline, refine if needed
    • +
    • Large changes (>500 lines, >5 files): Full planning process
    • +
    +

    Q: How do I know when a refactoring is successful?​

    +

    A: Check the "Success Criteria" from your plan:

    +

    Typical criteria:

    +
      +
    • βœ… All linting checks pass
    • +
    • βœ… HA starts without errors
    • +
    • βœ… All entities functional
    • +
    • βœ… No regressions (existing features work)
    • +
    • βœ… Code easier to understand/modify
    • +
    • βœ… Documentation updated
    • +
    +

    If you can't tick all boxes, the refactoring isn't done.

    +

    Summary​

    +

    Key takeaways:

    +
      +
    1. Plan when scope is unclear (>500 lines, >5 files, breaking changes)
    2. +
    3. Use planning/ directory for free iteration (git-ignored)
    4. +
    5. Work in phases and test after each phase
    6. +
    7. Document file lifecycle (CREATE/MODIFY/DELETE/RENAME)
    8. +
    9. Update documentation after completion (AGENTS.md, docs/)
    10. +
    11. Archive or delete plan after implementation
    12. +
    +

    Remember: Good planning prevents half-finished refactorings and makes rollback easier when things go wrong.

    +
    +

    Next steps:

    +
      +
    • Read planning/README.md for detailed template
    • +
    • Check docs/development/module-splitting-plan.md for real example
    • +
    • Browse planning/ for active refactoring plans
    • +
    + + \ No newline at end of file diff --git a/developer/release-management.html b/developer/release-management.html new file mode 100644 index 0000000..ca88868 --- /dev/null +++ b/developer/release-management.html @@ -0,0 +1,172 @@ + + + + + +Release Notes Generation | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Release Notes Generation

    +

    This project supports three ways to generate release notes from conventional commits, plus automatic version management.

    +

    πŸš€ Quick Start: Preparing a Release​

    +

    Recommended workflow (automatic & foolproof):

    +
    # 1. Use the helper script to prepare release
    ./scripts/release/prepare 0.3.0

    # This will:
    # - Update manifest.json version to 0.3.0
    # - Create commit: "chore(release): bump version to 0.3.0"
    # - Create tag: v0.3.0
    # - Show you what will be pushed

    # 2. Review and push when ready
    git push origin main v0.3.0

    # 3. CI/CD automatically:
    # - Detects the new tag
    # - Generates release notes (excluding version bump commit)
    # - Creates GitHub release
    +

    If you forget to bump manifest.json:

    +
    # Just edit manifest.json manually and commit
    vim custom_components/tibber_prices/manifest.json # "version": "0.3.0"
    git commit -am "chore(release): bump version to 0.3.0"
    git push

    # Auto-Tag workflow detects manifest.json change and creates tag automatically!
    # Then Release workflow kicks in and creates the GitHub release
    +
    +

    πŸ“‹ Release Options​

    +

    1. GitHub UI Button (Easiest)​

    +

    Use GitHub's built-in release notes generator:

    +
      +
    1. Go to Releases
    2. +
    3. Click "Draft a new release"
    4. +
    5. Select your tag
    6. +
    7. Click "Generate release notes" button
    8. +
    9. Edit if needed and publish
    10. +
    +

    Uses: .github/release.yml configuration +Best for: Quick releases, works with PRs that have labels +Note: Direct commits appear in "Other Changes" category

    +
    +

    2. Local Script (Intelligent)​

    +

    Run ./scripts/release/generate-notes to parse conventional commits locally.

    +

    Automatic backend detection:

    +
    # Generate from latest tag to HEAD
    ./scripts/release/generate-notes

    # Generate between specific tags
    ./scripts/release/generate-notes v1.0.0 v1.1.0

    # Generate from tag to HEAD
    ./scripts/release/generate-notes v1.0.0 HEAD
    +

    Force specific backend:

    +
    # Use AI (GitHub Copilot CLI)
    RELEASE_NOTES_BACKEND=copilot ./scripts/release/generate-notes

    # Use git-cliff (template-based)
    RELEASE_NOTES_BACKEND=git-cliff ./scripts/release/generate-notes

    # Use manual parsing (grep/awk fallback)
    RELEASE_NOTES_BACKEND=manual ./scripts/release/generate-notes
    +

    Disable AI (useful for CI/CD):

    +
    USE_AI=false ./scripts/release/generate-notes
    +

    Backend Priority​

    +

    The script automatically selects the best available backend:

    +
      +
    1. GitHub Copilot CLI - AI-powered, context-aware (best quality)
    2. +
    3. git-cliff - Fast Rust tool with templates (reliable)
    4. +
    5. Manual - Simple grep/awk parsing (always works)
    6. +
    +

    In CI/CD ($CI or $GITHUB_ACTIONS), AI is automatically disabled.

    +

    Installing Optional Backends​

    +

    In DevContainer (automatic):

    +

    git-cliff is automatically installed when the DevContainer is built:

    +
      +
    • Rust toolchain: Installed via ghcr.io/devcontainers/features/rust:1 (minimal profile)
    • +
    • git-cliff: Installed via cargo in scripts/setup/setup
    • +
    +

    Simply rebuild the container (VS Code: "Dev Containers: Rebuild Container") and git-cliff will be available.

    +

    Manual installation (outside DevContainer):

    +

    git-cliff (template-based):

    +
    # See: https://git-cliff.org/docs/installation

    # macOS
    brew install git-cliff

    # Cargo (all platforms)
    cargo install git-cliff

    # Manual binary download
    wget https://github.com/orhun/git-cliff/releases/latest/download/git-cliff-x86_64-unknown-linux-gnu.tar.gz
    tar -xzf git-cliff-*.tar.gz
    sudo mv git-cliff-*/git-cliff /usr/local/bin/
    +
    +

    3. CI/CD Automation​

    +

    Automatic release notes on tag push.

    +

    Workflow: .github/workflows/release.yml

    +

    Triggers: Version tags (v1.0.0, v2.1.3, etc.)

    +
    # Create and push a tag to trigger automatic release
    git tag v1.0.0
    git push origin v1.0.0

    # GitHub Actions will:
    # 1. Detect the new tag
    # 2. Generate release notes using git-cliff
    # 3. Create a GitHub release automatically
    +

    Backend: Uses git-cliff (AI disabled in CI for reliability)

    +
    +

    πŸ“ Output Format​

    +

    All methods produce GitHub-flavored Markdown with emoji categories:

    +
    ## πŸŽ‰ New Features

    - **scope**: Description ([abc1234](link-to-commit))

    ## πŸ› Bug Fixes

    - **scope**: Description ([def5678](link-to-commit))

    ## πŸ“š Documentation

    - **scope**: Description ([ghi9012](link-to-commit))

    ## πŸ”§ Maintenance & Refactoring

    - **scope**: Description ([jkl3456](link-to-commit))

    ## πŸ§ͺ Testing

    - **scope**: Description ([mno7890](link-to-commit))
    +
    +

    🎯 When to Use Which​

    +
    MethodUse CaseProsCons
    Helper ScriptNormal releasesFoolproof, automaticRequires script
    Auto-Tag WorkflowForgot scriptSafety net, automatic taggingStill need manifest bump
    GitHub ButtonManual quick releaseEasy, no scriptLimited categorization
    Local ScriptTesting release notesPreview before releaseManual process
    CI/CDAfter tag pushFully automaticNeeds tag first
    +
    +

    πŸ”„ Complete Release Workflows​

    + +
    # Step 1: Prepare release (all-in-one)
    ./scripts/release/prepare 0.3.0

    # Step 2: Review changes
    git log -1 --stat
    git show v0.3.0

    # Step 3: Push when ready
    git push origin main v0.3.0

    # Done! CI/CD creates the release automatically
    +

    What happens:

    +
      +
    1. Script bumps manifest.json β†’ commits β†’ creates tag locally
    2. +
    3. You push commit + tag together
    4. +
    5. Release workflow sees tag β†’ generates notes β†’ creates release
    6. +
    +
    +

    Workflow B: Manual (with Auto-Tag Safety Net)​

    +
    # Step 1: Bump version manually
    vim custom_components/tibber_prices/manifest.json
    # Change: "version": "0.3.0"

    # Step 2: Commit
    git commit -am "chore(release): bump version to 0.3.0"
    git push

    # Step 3: Wait for Auto-Tag workflow
    # GitHub Actions automatically creates v0.3.0 tag
    # Then Release workflow creates the release
    +

    What happens:

    +
      +
    1. You push manifest.json change
    2. +
    3. Auto-Tag workflow detects change β†’ creates tag automatically
    4. +
    5. Release workflow sees new tag β†’ creates release
    6. +
    +
    +

    Workflow C: Manual Tag (Old Way)​

    +
    # Step 1: Bump version
    vim custom_components/tibber_prices/manifest.json
    git commit -am "chore(release): bump version to 0.3.0"

    # Step 2: Create tag manually
    git tag v0.3.0
    git push origin main v0.3.0

    # Release workflow creates release
    +

    What happens:

    +
      +
    1. You create and push tag manually
    2. +
    3. Release workflow creates release
    4. +
    5. Auto-Tag workflow skips (tag already exists)
    6. +
    +
    +

    βš™οΈ Configuration Files​

    +
      +
    • scripts/release/prepare - Helper script to bump version + create tag
    • +
    • .github/workflows/auto-tag.yml - Automatic tag creation on manifest.json change
    • +
    • .github/workflows/release.yml - Automatic release on tag push
    • +
    • .github/release.yml - GitHub UI button configuration
    • +
    • cliff.toml - git-cliff template (filters out version bumps)
    • +
    +
    +

    πŸ›‘οΈ Safety Features​

    +

    1. Version Validation​

    +

    Both helper script and auto-tag workflow validate version format (X.Y.Z).

    +

    2. No Duplicate Tags​

    +
      +
    • Helper script checks if tag exists (local + remote)
    • +
    • Auto-tag workflow checks if tag exists before creating
    • +
    +

    3. Atomic Operations​

    +

    Helper script creates commit + tag locally. You decide when to push.

    +

    4. Version Bumps Filtered​

    +

    Release notes automatically exclude chore(release): bump version commits.

    +

    5. Rollback Instructions​

    +

    Helper script shows how to undo if you change your mind.

    +
    +

    πŸ› Troubleshooting​

    +

    "Tag already exists" error:

    +
    # Local tag
    git tag -d v0.3.0

    # Remote tag (only if you need to recreate)
    git push origin :refs/tags/v0.3.0
    +

    Manifest version doesn't match tag:

    +

    This shouldn't happen with the new workflows, but if it does:

    +
    # 1. Fix manifest.json
    vim custom_components/tibber_prices/manifest.json

    # 2. Amend the commit
    git commit --amend -am "chore(release): bump version to 0.3.0"

    # 3. Move the tag
    git tag -f v0.3.0
    git push -f origin main v0.3.0
    +

    Auto-tag didn't create tag:

    +

    Check workflow runs in GitHub Actions. Common causes:

    +
      +
    • Tag already exists remotely
    • +
    • Invalid version format in manifest.json
    • +
    • manifest.json not in the commit that was pushed
    • +
    +
    +

    πŸ” Format Requirements​

    +

    HACS: No specific format required, uses GitHub releases as-is +Home Assistant: No specific format required for custom integrations +Markdown: Standard GitHub-flavored Markdown supported +HTML: Can include <ha-alert> tags if needed

    +
    +

    πŸ’‘ Tips​

    +
      +
    1. +

      Conventional Commits: Use proper commit format for best results:

      +
      feat(scope): Add new feature

      Detailed description of what changed.

      Impact: Users can now do X and Y.
      +
    2. +
    3. +

      Impact Section: Add Impact: in commit body for user-friendly descriptions

      +
    4. +
    5. +

      Test Locally: Run ./scripts/release/generate-notes before creating release

      +
    6. +
    7. +

      AI vs Template: GitHub Copilot CLI provides better descriptions, git-cliff is faster and more reliable

      +
    8. +
    9. +

      CI/CD: Tag push triggers automatic release - no manual intervention needed

      +
    10. +
    + + \ No newline at end of file diff --git a/developer/search-doc-1764985317891.json b/developer/search-doc-1764985317891.json new file mode 100644 index 0000000..7638a30 --- /dev/null +++ b/developer/search-doc-1764985317891.json @@ -0,0 +1 @@ +{"searchDocs":[{"title":"Coding Guidelines","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/coding-guidelines","content":"","keywords":"","version":"Next 🚧"},{"title":"Code Style​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#code-style","content":" Formatter/Linter: Ruff (replaces Black, Flake8, isort)Max line length: 120 charactersMax complexity: 25 (McCabe)Target: Python 3.13 Run before committing: ./scripts/lint # Auto-fix issues ./scripts/release/hassfest # Validate integration structure ","version":"Next 🚧","tagName":"h2"},{"title":"Naming Conventions​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#naming-conventions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Class Names​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#class-names","content":" All public classes MUST use the integration name as prefix. This is a Home Assistant standard to avoid naming conflicts between integrations. # βœ… CORRECT class TibberPricesApiClient: class TibberPricesDataUpdateCoordinator: class TibberPricesSensor: # ❌ WRONG - Missing prefix class ApiClient: class DataFetcher: class TimeService: When prefix is required: Public classes used across multiple modulesAll exception classesAll coordinator and entity classesData classes (dataclasses, NamedTuples) used as public APIs When prefix can be omitted: Private helper classes within a single module (prefix with _ underscore)Type aliases and callbacks (e.g., TimeServiceCallback)Small internal NamedTuples for function returns Private Classes: If a helper class is ONLY used within a single module file, prefix it with underscore: # βœ… Private class - used only in this file class _InternalHelper: """Helper used only within this module.""" pass # ❌ Wrong - no prefix but used across modules class DataFetcher: # Should be TibberPricesDataFetcher pass Note: Currently (Nov 2025), this project has NO private classes - all classes are used across module boundaries. Current Technical Debt: Many existing classes lack the TibberPrices prefix. Before refactoring: Document the plan in /planning/class-naming-refactoring.mdUse multi_replace_string_in_file for bulk renamesTest thoroughly after each module See AGENTS.md for complete list of classes needing rename. ","version":"Next 🚧","tagName":"h3"},{"title":"Import Order​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#import-order","content":" Python stdlib (specific types only)Third-party (homeassistant.*, aiohttp)Local (.api, .const) ","version":"Next 🚧","tagName":"h2"},{"title":"Critical Patterns​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#critical-patterns","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Time Handling​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#time-handling","content":" Always use dt_util from homeassistant.util: from homeassistant.util import dt as dt_util price_time = dt_util.parse_datetime(starts_at) price_time = dt_util.as_local(price_time) # Convert to HA timezone now = dt_util.now() ","version":"Next 🚧","tagName":"h3"},{"title":"Translation Loading​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#translation-loading","content":" # In __init__.py async_setup_entry: await async_load_translations(hass, "en") await async_load_standard_translations(hass, "en") ","version":"Next 🚧","tagName":"h3"},{"title":"Price Data Enrichment​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#price-data-enrichment","content":" Always enrich raw API data: from .price_utils import enrich_price_info_with_differences enriched = enrich_price_info_with_differences( price_info_data, thresholds, ) See AGENTS.md for complete guidelines. ","version":"Next 🚧","tagName":"h3"},{"title":"Contributing Guide","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/contributing","content":"","keywords":"","version":"Next 🚧"},{"title":"Getting Started​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#getting-started","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Prerequisites​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#prerequisites","content":" GitVS Code with Remote Containers extensionDocker Desktop ","version":"Next 🚧","tagName":"h3"},{"title":"Fork and Clone​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#fork-and-clone","content":" Fork the repository on GitHubClone your fork: git clone https://github.com/YOUR_USERNAME/hass.tibber_prices.git cd hass.tibber_prices Open in VS CodeClick "Reopen in Container" when prompted The DevContainer will set up everything automatically. ","version":"Next 🚧","tagName":"h3"},{"title":"Development Workflow​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#development-workflow","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Create a Branch​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#1-create-a-branch","content":" git checkout -b feature/your-feature-name # or git checkout -b fix/issue-123-description Branch naming: feature/ - New featuresfix/ - Bug fixesdocs/ - Documentation onlyrefactor/ - Code restructuringtest/ - Test improvements ","version":"Next 🚧","tagName":"h3"},{"title":"2. Make Changes​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#2-make-changes","content":" Edit code, following Coding Guidelines. Run checks frequently: ./scripts/type-check # Pyright type checking ./scripts/lint # Ruff linting (auto-fix) ./scripts/test # Run tests ","version":"Next 🚧","tagName":"h3"},{"title":"3. Test Locally​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#3-test-locally","content":" ./scripts/develop # Start HA with integration loaded Access at http://localhost:8123 ","version":"Next 🚧","tagName":"h3"},{"title":"4. Write Tests​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#4-write-tests","content":" Add tests in /tests/ for new features: @pytest.mark.unit async def test_your_feature(hass, coordinator): """Test your new feature.""" # Arrange coordinator.data = {...} # Act result = your_function(coordinator.data) # Assert assert result == expected_value Run your test: ./scripts/test tests/test_your_feature.py -v ","version":"Next 🚧","tagName":"h3"},{"title":"5. Commit Changes​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#5-commit-changes","content":" Follow Conventional Commits: git add . git commit -m "feat(sensors): add volatility trend sensor Add new sensor showing 3-hour volatility trend direction. Includes attributes with historical volatility data. Impact: Users can predict when prices will stabilize or continue fluctuating." Commit types: feat: - New featurefix: - Bug fixdocs: - Documentationrefactor: - Code restructuringtest: - Test changeschore: - Maintenance Add scope when relevant: feat(sensors): - Sensor platformfix(coordinator): - Data coordinatordocs(user): - User documentation ","version":"Next 🚧","tagName":"h3"},{"title":"6. Push and Create PR​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#6-push-and-create-pr","content":" git push origin your-branch-name Then open Pull Request on GitHub. ","version":"Next 🚧","tagName":"h3"},{"title":"Pull Request Guidelines​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#pull-request-guidelines","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"PR Template​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#pr-template","content":" Title: Short, descriptive (50 chars max) Description should include: ## What Brief description of changes ## Why Problem being solved or feature rationale ## How Implementation approach ## Testing - [ ] Manual testing in Home Assistant - [ ] Unit tests added/updated - [ ] Type checking passes - [ ] Linting passes ## Breaking Changes (If any - describe migration path) ## Related Issues Closes #123 ","version":"Next 🚧","tagName":"h3"},{"title":"PR Checklist​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#pr-checklist","content":" Before submitting: Code follows Coding Guidelines All tests pass (./scripts/test) Type checking passes (./scripts/type-check) Linting passes (./scripts/lint-check) Documentation updated (if needed) AGENTS.md updated (if patterns changed) Commit messages follow Conventional Commits ","version":"Next 🚧","tagName":"h3"},{"title":"Review Process​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#review-process","content":" Automated checks run (CI/CD)Maintainer review (usually within 3 days)Address feedback if requestedApproval β†’ Maintainer merges ","version":"Next 🚧","tagName":"h3"},{"title":"Code Review Tips​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#code-review-tips","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"What Reviewers Look For​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#what-reviewers-look-for","content":" βœ… Good: Clear, self-explanatory codeAppropriate comments for complex logicTests covering edge casesType hints on all functionsFollows existing patterns ❌ Avoid: Large PRs (>500 lines) - split into smaller onesMixing unrelated changesMissing tests for new featuresBreaking changes without migration pathCopy-pasted code (refactor into shared functions) ","version":"Next 🚧","tagName":"h3"},{"title":"Responding to Feedback​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#responding-to-feedback","content":" Don't take it personally - we're improving code togetherAsk questions if feedback unclearPush additional commits to address commentsMark conversations as resolved when fixed ","version":"Next 🚧","tagName":"h3"},{"title":"Finding Issues to Work On​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#finding-issues-to-work-on","content":" Good first issues are labeled: good first issue - Beginner-friendlyhelp wanted - Maintainers welcome contributionsdocumentation - Docs improvements Comment on issue before starting work to avoid duplicates. ","version":"Next 🚧","tagName":"h2"},{"title":"Communication​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#communication","content":" GitHub Issues - Bug reports, feature requestsPull Requests - Code discussionDiscussions - General questions, ideas Be respectful, constructive, and patient. We're all volunteers! πŸ™ πŸ’‘ Related: Setup Guide - DevContainer setupCoding Guidelines - Style guideTesting - Writing testsRelease Management - How releases work ","version":"Next 🚧","tagName":"h2"},{"title":"Architecture","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/architecture","content":"","keywords":"","version":"Next 🚧"},{"title":"End-to-End Data Flow​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#end-to-end-data-flow","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Flow Description​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#flow-description","content":" Setup (__init__.py) Integration loads, creates coordinator instanceRegisters entity platforms (sensor, binary_sensor)Sets up custom services Data Fetch (every 15 minutes) Coordinator triggers update via api.pyAPI client checks persistent cache first (coordinator/cache.py)If cache valid β†’ return cached dataIf cache stale β†’ query Tibber GraphQL APIStore fresh data in persistent cache (survives HA restart) Price Enrichment Coordinator passes raw prices to DataTransformerTransformer checks transformation cache (memory)If cache valid β†’ return enriched dataIf cache invalid β†’ enrich via price_utils.py + average_utils.py Calculate 24h trailing/leading averagesCalculate price differences (% from average)Assign rating levels (LOW/NORMAL/HIGH) Store enriched data in transformation cache Period Calculation Coordinator passes enriched data to PeriodCalculatorCalculator computes hash from prices + configIf hash matches cache β†’ return cached periodsIf hash differs β†’ recalculate best/peak price periodsStore periods with new hash Entity Updates Coordinator provides complete data (prices + periods)Sensors read values via unified handlersBinary sensors evaluate period statesEntities update on quarter-hour boundaries (00/15/30/45) Service Calls Custom services access coordinator data directlyReturn formatted responses (JSON, ApexCharts format) ","version":"Next 🚧","tagName":"h3"},{"title":"Caching Architecture​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#caching-architecture","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Overview​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#overview","content":" The integration uses 5 independent caching layers for optimal performance: Layer\tLocation\tLifetime\tInvalidation\tMemoryAPI Cache\tcoordinator/cache.py\t24h (user) Until midnight (prices)\tAutomatic\t50KB Translation Cache\tconst.py\tUntil HA restart\tNever\t5KB Config Cache\tcoordinator/*\tUntil config change\tExplicit\t1KB Period Cache\tcoordinator/periods.py\tUntil data/config change\tHash-based\t10KB Transformation Cache\tcoordinator/data_transformation.py\tUntil midnight/config\tAutomatic\t60KB Total cache overhead: ~126KB per coordinator instance (main entry + subentries) ","version":"Next 🚧","tagName":"h3"},{"title":"Cache Coordination​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#cache-coordination","content":" Key insight: No cascading invalidations - each cache is independent and rebuilds on-demand. For detailed cache behavior, see Caching Strategy. ","version":"Next 🚧","tagName":"h3"},{"title":"Component Responsibilities​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#component-responsibilities","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Core Components​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#core-components","content":" Component\tFile\tResponsibilityAPI Client\tapi.py\tGraphQL queries to Tibber, retry logic, error handling Coordinator\tcoordinator.py\tUpdate orchestration, cache management, absolute-time scheduling with boundary tolerance Data Transformer\tcoordinator/data_transformation.py\tPrice enrichment (averages, ratings, differences) Period Calculator\tcoordinator/periods.py\tBest/peak price period calculation with relaxation Sensors\tsensor/\t80+ entities for prices, levels, ratings, statistics Binary Sensors\tbinary_sensor/\tPeriod indicators (best/peak price active) Services\tservices/\tCustom service endpoints (get_chartdata, get_apexcharts_yaml, refresh_user_data) ","version":"Next 🚧","tagName":"h3"},{"title":"Sensor Architecture (Calculator Pattern)​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#sensor-architecture-calculator-pattern","content":" The sensor platform uses Calculator Pattern for clean separation of concerns (refactored Nov 2025): Component\tFiles\tLines\tResponsibilityEntity Class\tsensor/core.py\t909\tEntity lifecycle, coordinator, delegates to calculators Calculators\tsensor/calculators/\t1,838\tBusiness logic (8 specialized calculators) Attributes\tsensor/attributes/\t1,209\tState presentation (8 specialized modules) Routing\tsensor/value_getters.py\t276\tCentralized sensor β†’ calculator mapping Chart Export\tsensor/chart_data.py\t144\tService call handling, YAML parsing Helpers\tsensor/helpers.py\t188\tAggregation functions, utilities Calculator Package (sensor/calculators/): base.py - Abstract BaseCalculator with coordinator accessinterval.py - Single interval calculations (current/next/previous)rolling_hour.py - 5-interval rolling windowsdaily_stat.py - Calendar day min/max/avg statisticswindow_24h.py - Trailing/leading 24h windowsvolatility.py - Price volatility analysistrend.py - Complex trend analysis with cachingtiming.py - Best/peak price period timingmetadata.py - Home/metering metadata Benefits: 58% reduction in core.py (2,170 β†’ 909 lines)Clear separation: Calculators (logic) vs Attributes (presentation)Independent testability for each calculatorEasy to add sensors: Choose calculation pattern, add to routing ","version":"Next 🚧","tagName":"h3"},{"title":"Helper Utilities​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#helper-utilities","content":" Utility\tFile\tPurposePrice Utils\tutils/price.py\tRating calculation, enrichment, level aggregation Average Utils\tutils/average.py\tTrailing/leading 24h average calculations Entity Utils\tentity_utils/\tShared icon/color/attribute logic Translations\tconst.py\tTranslation loading and caching ","version":"Next 🚧","tagName":"h3"},{"title":"Key Patterns​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#key-patterns","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Dual Translation System​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#1-dual-translation-system","content":" Standard translations (/translations/*.json): HA-compliant schema for entity namesCustom translations (/custom_translations/*.json): Extended descriptions, usage tipsBoth loaded at integration setup, cached in memoryAccess via get_translation() helper function ","version":"Next 🚧","tagName":"h3"},{"title":"2. Price Data Enrichment​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#2-price-data-enrichment","content":" All quarter-hourly price intervals get augmented via utils/price.py: # Original from Tibber API { "startsAt": "2025-11-03T14:00:00+01:00", "total": 0.2534, "level": "NORMAL" } # After enrichment (utils/price.py) { "startsAt": "2025-11-03T14:00:00+01:00", "total": 0.2534, "level": "NORMAL", "trailing_avg_24h": 0.2312, # ← Added: 24h trailing average "difference": 9.6, # ← Added: % diff from trailing avg "rating_level": "NORMAL" # ← Added: LOW/NORMAL/HIGH based on thresholds } ","version":"Next 🚧","tagName":"h3"},{"title":"3. Quarter-Hour Precision​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#3-quarter-hour-precision","content":" API polling: Every 15 minutes (coordinator fetch cycle)Entity updates: On 00/15/30/45-minute boundaries via coordinator/listeners.pyTimer scheduling: Uses async_track_utc_time_change(minute=[0, 15, 30, 45], second=0) HA may trigger Β±few milliseconds before/after exact boundarySmart boundary tolerance (Β±2 seconds) handles scheduling jitter in sensor/helpers.pyIf HA schedules at 14:59:58 β†’ rounds to 15:00:00 (shows new interval data)If HA restarts at 14:59:30 β†’ stays at 14:45:00 (shows current interval data) Absolute time tracking: Timer plans for all future boundaries (not relative delays) Prevents double-updates (if triggered at 14:59:58, next trigger is 15:15:00, not 15:00:00) Result: Current price sensors update without waiting for next API poll ","version":"Next 🚧","tagName":"h3"},{"title":"4. Calculator Pattern (Sensor Platform)​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#4-calculator-pattern-sensor-platform","content":" Sensors organized by calculation method (refactored Nov 2025): Unified Handler Methods (sensor/core.py): _get_interval_value(offset, type) - current/next/previous intervals_get_rolling_hour_value(offset, type) - 5-interval rolling windows_get_daily_stat_value(day, stat_func) - calendar day min/max/avg_get_24h_window_value(stat_func) - trailing/leading statistics Routing (sensor/value_getters.py): Single source of truth mapping 80+ entity keys to calculator methodsOrganized by calculation type (Interval, Rolling Hour, Daily Stats, etc.) Calculators (sensor/calculators/): Each calculator inherits from BaseCalculator with coordinator accessFocused responsibility: IntervalCalculator, TrendCalculator, etc.Complex logic isolated (e.g., TrendCalculator has internal caching) Attributes (sensor/attributes/): Separate from business logic, handles state presentationBuilds extra_state_attributes dicts for entity classesUnified builders: build_sensor_attributes(), build_extra_state_attributes() Benefits: Minimal code duplication across 80+ sensorsClear separation of concerns (calculation vs presentation)Easy to extend: Add sensor β†’ choose pattern β†’ add to routingIndependent testability for each component ","version":"Next 🚧","tagName":"h3"},{"title":"Performance Characteristics​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#performance-characteristics","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"API Call Reduction​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#api-call-reduction","content":" Without caching: 96 API calls/day (every 15 min)With caching: ~1-2 API calls/day (only when cache expires)Reduction: ~98% ","version":"Next 🚧","tagName":"h3"},{"title":"CPU Optimization​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#cpu-optimization","content":" Optimization\tLocation\tSavingsConfig caching\tcoordinator/*\t~50% on config checks Period caching\tcoordinator/periods.py\t~70% on period recalculation Lazy logging\tThroughout\t~15% on log-heavy operations Import optimization\tModule structure\t~20% faster loading ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Usage​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#memory-usage","content":" Per coordinator instance: ~126KB cache overheadTypical setup: 1 main + 2 subentries = ~378KB totalRedundancy eliminated: 14% reduction (10KB saved per coordinator) ","version":"Next 🚧","tagName":"h3"},{"title":"Related Documentation​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#related-documentation","content":" Timer Architecture - Timer system, scheduling, coordination (3 independent timers)Caching Strategy - Detailed cache behavior, invalidation, debuggingSetup Guide - Development environment setupTesting Guide - How to test changesRelease Management - Release workflow and versioningAGENTS.md - Complete reference for AI development ","version":"Next 🚧","tagName":"h2"},{"title":"Caching Strategy","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/caching-strategy","content":"","keywords":"","version":"Next 🚧"},{"title":"Overview​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#overview","content":" The integration uses 4 distinct caching layers with different purposes and lifetimes: Persistent API Data Cache (HA Storage) - Hours to daysTranslation Cache (Memory) - Forever (until HA restart)Config Dictionary Cache (Memory) - Until config changesPeriod Calculation Cache (Memory) - Until price data or config changes ","version":"Next 🚧","tagName":"h2"},{"title":"1. Persistent API Data Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#1-persistent-api-data-cache","content":" Location: coordinator/cache.py β†’ HA Storage (.storage/tibber_prices.<entry_id>) Purpose: Reduce API calls to Tibber by caching user data and price data between HA restarts. What is cached: Price data (price_data): Day before yesterday/yesterday/today/tomorrow price intervals with enriched fields (384 intervals total)User data (user_data): Homes, subscriptions, features from Tibber GraphQL viewer queryTimestamps: Last update times for validation Lifetime: Price data: Until midnight turnover (cleared daily at 00:00 local time)User data: 24 hours (refreshed daily)Survives: HA restarts via persistent Storage Invalidation triggers: Midnight turnover (Timer #2 in coordinator): # coordinator/day_transitions.py def _handle_midnight_turnover() -> None: self._cached_price_data = None # Force fresh fetch for new day self._last_price_update = None await self.store_cache() Cache validation on load: # coordinator/cache.py def is_cache_valid(cache_data: CacheData) -> bool: # Checks if price data is from a previous day if today_date < local_now.date(): # Yesterday's data return False Tomorrow data check (after 13:00): # coordinator/data_fetching.py if tomorrow_missing or tomorrow_invalid: return "tomorrow_check" # Update needed Why this cache matters: Reduces API load on Tibber (~192 intervals per fetch), speeds up HA restarts, enables offline operation until cache expires. ","version":"Next 🚧","tagName":"h2"},{"title":"2. Translation Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#2-translation-cache","content":" Location: const.py β†’ _TRANSLATIONS_CACHE and _STANDARD_TRANSLATIONS_CACHE (in-memory dicts) Purpose: Avoid repeated file I/O when accessing entity descriptions, UI strings, etc. What is cached: Standard translations (/translations/*.json): Config flow, selector options, entity namesCustom translations (/custom_translations/*.json): Entity descriptions, usage tips, long descriptions Lifetime: Forever (until HA restart)No invalidation during runtime When populated: At integration setup: async_load_translations(hass, "en") in __init__.pyLazy loading: If translation missing, attempts file load once Access pattern: # Non-blocking synchronous access from cached data description = get_translation("binary_sensor.best_price_period.description", "en") Why this cache matters: Entity attributes are accessed on every state update (~15 times per hour per entity). File I/O would block the event loop. Cache enables synchronous, non-blocking attribute generation. ","version":"Next 🚧","tagName":"h2"},{"title":"3. Config Dictionary Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#3-config-dictionary-cache","content":" Location: coordinator/data_transformation.py and coordinator/periods.py (per-instance fields) Purpose: Avoid ~30-40 options.get() calls on every coordinator update (every 15 minutes). What is cached: ","version":"Next 🚧","tagName":"h2"},{"title":"DataTransformer Config Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#datatransformer-config-cache","content":" { "thresholds": {"low": 15, "high": 35}, "volatility_thresholds": {"moderate": 15.0, "high": 25.0, "very_high": 40.0}, # ... 20+ more config fields } ","version":"Next 🚧","tagName":"h3"},{"title":"PeriodCalculator Config Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#periodcalculator-config-cache","content":" { "best": {"flex": 0.15, "min_distance_from_avg": 5.0, "min_period_length": 60}, "peak": {"flex": 0.15, "min_distance_from_avg": 5.0, "min_period_length": 60} } Lifetime: Until invalidate_config_cache() is calledBuilt once on first use per coordinator update cycle Invalidation trigger: Options change (user reconfigures integration): # coordinator/core.py async def _handle_options_update(...) -> None: self._data_transformer.invalidate_config_cache() self._period_calculator.invalidate_config_cache() await self.async_request_refresh() Performance impact: Before: ~30 dict lookups + type conversions per update = ~50ΞΌsAfter: 1 cache check = ~1ΞΌsSavings: ~98% (50ΞΌs β†’ 1ΞΌs per update) Why this cache matters: Config is read multiple times per update (transformation + period calculation + validation). Caching eliminates redundant lookups without changing behavior. ","version":"Next 🚧","tagName":"h3"},{"title":"4. Period Calculation Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#4-period-calculation-cache","content":" Location: coordinator/periods.py β†’ PeriodCalculator._cached_periods Purpose: Avoid expensive period calculations (~100-500ms) when price data and config haven't changed. What is cached: { "best_price": { "periods": [...], # Calculated period objects "intervals": [...], # All intervals in periods "metadata": {...} # Config snapshot }, "best_price_relaxation": {"relaxation_active": bool, ...}, "peak_price": {...}, "peak_price_relaxation": {...} } Cache key: Hash of relevant inputs hash_data = ( today_signature, # (startsAt, rating_level) for each interval tuple(best_config.items()), # Best price config tuple(peak_config.items()), # Peak price config best_level_filter, # Level filter overrides peak_level_filter ) Lifetime: Until price data changes (today's intervals modified)Until config changes (flex, thresholds, filters)Recalculated at midnight (new today data) Invalidation triggers: Config change (explicit): def invalidate_config_cache() -> None: self._cached_periods = None self._last_periods_hash = None Price data change (automatic via hash mismatch): current_hash = self._compute_periods_hash(price_info) if self._last_periods_hash != current_hash: # Cache miss - recalculate Cache hit rate: High: During normal operation (coordinator updates every 15min, price data unchanged)Low: After midnight (new today data) or when tomorrow data arrives (~13:00-14:00) Performance impact: Period calculation: ~100-500ms (depends on interval count, relaxation attempts)Cache hit: <1ms (hash comparison + dict lookup)Savings: ~70% of calculation time (most updates hit cache) Why this cache matters: Period calculation is CPU-intensive (filtering, gap tolerance, relaxation). Caching avoids recalculating unchanged periods 3-4 times per hour. ","version":"Next 🚧","tagName":"h2"},{"title":"5. Transformation Cache (Price Enrichment Only)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#5-transformation-cache-price-enrichment-only","content":" Location: coordinator/data_transformation.py β†’ _cached_transformed_data Status: βœ… Clean separation - enrichment only, no redundancy What is cached: { "timestamp": ..., "homes": {...}, "priceInfo": {...}, # Enriched price data (trailing_avg_24h, difference, rating_level) # NO periods - periods are exclusively managed by PeriodCalculator } Purpose: Avoid re-enriching price data when config unchanged between midnight checks. Current behavior: Caches only enriched price data (price + statistics)Does NOT cache periods (handled by Period Calculation Cache)Invalidated when: Config changes (thresholds affect enrichment)Midnight turnover detectedNew update cycle begins Architecture: DataTransformer: Handles price enrichment onlyPeriodCalculator: Handles period calculation only (with hash-based cache)Coordinator: Assembles final data on-demand from both caches Memory savings: Eliminating redundant period storage saves ~10KB per coordinator (14% reduction). ","version":"Next 🚧","tagName":"h2"},{"title":"Cache Invalidation Flow​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#cache-invalidation-flow","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"User Changes Options (Config Flow)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#user-changes-options-config-flow","content":" User saves options ↓ config_entry.add_update_listener() triggers ↓ coordinator._handle_options_update() ↓ β”œβ”€> DataTransformer.invalidate_config_cache() β”‚ └─> _config_cache = None β”‚ _config_cache_valid = False β”‚ _cached_transformed_data = None β”‚ └─> PeriodCalculator.invalidate_config_cache() └─> _config_cache = None _config_cache_valid = False _cached_periods = None _last_periods_hash = None ↓ coordinator.async_request_refresh() ↓ Fresh data fetch with new config ","version":"Next 🚧","tagName":"h3"},{"title":"Midnight Turnover (Day Transition)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#midnight-turnover-day-transition","content":" Timer #2 fires at 00:00 ↓ coordinator._handle_midnight_turnover() ↓ β”œβ”€> Clear persistent cache β”‚ └─> _cached_price_data = None β”‚ _last_price_update = None β”‚ └─> Clear transformation cache └─> _cached_transformed_data = None _last_transformation_config = None ↓ Period cache auto-invalidates (hash mismatch on new "today") ↓ Fresh API fetch for new day ","version":"Next 🚧","tagName":"h3"},{"title":"Tomorrow Data Arrives (~13:00)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#tomorrow-data-arrives-1300","content":" Coordinator update cycle ↓ should_update_price_data() checks tomorrow ↓ Tomorrow data missing/invalid ↓ API fetch with new tomorrow data ↓ Price data hash changes (new intervals) ↓ Period cache auto-invalidates (hash mismatch) ↓ Periods recalculated with tomorrow included ","version":"Next 🚧","tagName":"h3"},{"title":"Cache Coordination​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#cache-coordination","content":" All caches work together: Persistent Storage (HA restart) ↓ API Data Cache (price_data, user_data) ↓ β”œβ”€> Enrichment (add rating_level, difference, etc.) β”‚ ↓ β”‚ Transformation Cache (_cached_transformed_data) β”‚ └─> Period Calculation ↓ Period Cache (_cached_periods) ↓ Config Cache (avoid re-reading options) ↓ Translation Cache (entity descriptions) No cache invalidation cascades: Config cache invalidation is explicit (on options update)Period cache invalidation is automatic (via hash mismatch)Transformation cache invalidation is automatic (on midnight/config change)Translation cache is never invalidated (read-only after load) Thread safety: All caches are accessed from MainThread only (Home Assistant event loop)No locking needed (single-threaded execution model) ","version":"Next 🚧","tagName":"h2"},{"title":"Performance Characteristics​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#performance-characteristics","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Typical Operation (No Changes)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#typical-operation-no-changes","content":" Coordinator Update (every 15 min) β”œβ”€> API fetch: SKIP (cache valid) β”œβ”€> Config dict build: ~1ΞΌs (cached) β”œβ”€> Period calculation: ~1ms (cached, hash match) β”œβ”€> Transformation: ~10ms (enrichment only, periods cached) └─> Entity updates: ~5ms (translation cache hit) Total: ~16ms (down from ~600ms without caching) ","version":"Next 🚧","tagName":"h3"},{"title":"After Midnight Turnover​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#after-midnight-turnover","content":" Coordinator Update (00:00) β”œβ”€> API fetch: ~500ms (cache cleared, fetch new day) β”œβ”€> Config dict build: ~50ΞΌs (rebuild, no cache) β”œβ”€> Period calculation: ~200ms (cache miss, recalculate) β”œβ”€> Transformation: ~50ms (re-enrich, rebuild) └─> Entity updates: ~5ms (translation cache still valid) Total: ~755ms (expected once per day) ","version":"Next 🚧","tagName":"h3"},{"title":"After Config Change​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#after-config-change","content":" Options Update β”œβ”€> Cache invalidation: `<`1ms β”œβ”€> Coordinator refresh: ~600ms β”‚ β”œβ”€> API fetch: SKIP (data unchanged) β”‚ β”œβ”€> Config rebuild: ~50ΞΌs β”‚ β”œβ”€> Period recalculation: ~200ms (new thresholds) β”‚ β”œβ”€> Re-enrichment: ~50ms β”‚ └─> Entity updates: ~5ms └─> Total: ~600ms (expected on manual reconfiguration) ","version":"Next 🚧","tagName":"h3"},{"title":"Summary Table​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#summary-table","content":" Cache Type\tLifetime\tSize\tInvalidation\tPurposeAPI Data\tHours to 1 day\t~50KB\tMidnight, validation\tReduce API calls Translations\tForever (until HA restart)\t~5KB\tNever\tAvoid file I/O Config Dicts\tUntil options change\t<1KB\tExplicit (options update)\tAvoid dict lookups Period Calculation\tUntil data/config change\t~10KB\tAuto (hash mismatch)\tAvoid CPU-intensive calculation Transformation\tUntil midnight/config change\t~50KB\tAuto (midnight/config)\tAvoid re-enrichment Total memory overhead: ~116KB per coordinator instance (main + subentries) Benefits: 97% reduction in API calls (from every 15min to once per day)70% reduction in period calculation time (cache hits during normal operation)98% reduction in config access time (30+ lookups β†’ 1 cache check)Zero file I/O during runtime (translations cached at startup) Trade-offs: Memory usage: ~116KB per home (negligible for modern systems)Code complexity: 5 cache invalidation points (well-tested, documented)Debugging: Must understand cache lifetime when investigating stale data issues ","version":"Next 🚧","tagName":"h2"},{"title":"Debugging Cache Issues​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#debugging-cache-issues","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Symptom: Stale data after config change​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#symptom-stale-data-after-config-change","content":" Check: Is _handle_options_update() called? (should see "Options updated" log)Are invalidate_config_cache() methods executed?Does async_request_refresh() trigger? Fix: Ensure config_entry.add_update_listener() is registered in coordinator init. ","version":"Next 🚧","tagName":"h3"},{"title":"Symptom: Period calculation not updating​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#symptom-period-calculation-not-updating","content":" Check: Verify hash changes when data changes: _compute_periods_hash()Check _last_periods_hash vs current_hashLook for "Using cached period calculation" vs "Calculating periods" logs Fix: Hash function may not include all relevant data. Review _compute_periods_hash() inputs. ","version":"Next 🚧","tagName":"h3"},{"title":"Symptom: Yesterday's prices shown as today​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#symptom-yesterdays-prices-shown-as-today","content":" Check: is_cache_valid() logic in coordinator/cache.pyMidnight turnover execution (Timer #2)Cache clear confirmation in logs Fix: Timer may not be firing. Check _schedule_midnight_turnover() registration. ","version":"Next 🚧","tagName":"h3"},{"title":"Symptom: Missing translations​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#symptom-missing-translations","content":" Check: async_load_translations() called at startup?Translation files exist in /translations/ and /custom_translations/?Cache population: _TRANSLATIONS_CACHE keys Fix: Re-install integration or restart HA to reload translation files. ","version":"Next 🚧","tagName":"h3"},{"title":"Related Documentation​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#related-documentation","content":" Timer Architecture - Timer system, scheduling, midnight coordinationArchitecture - Overall system design, data flowAGENTS.md - Complete reference for AI development ","version":"Next 🚧","tagName":"h2"},{"title":"Critical Behavior Patterns - Testing Guide","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/critical-patterns","content":"","keywords":"","version":"Next 🚧"},{"title":"🎯 Why Are These Tests Critical?​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-why-are-these-tests-critical","content":" Home Assistant integrations run continuously in the background. Resource leaks lead to: Memory Leaks: RAM usage grows over days/weeks until HA becomes unstableCallback Leaks: Listeners remain registered after entity removal β†’ CPU load increasesTimer Leaks: Timers continue running after unload β†’ unnecessary background tasksFile Handle Leaks: Storage files remain open β†’ system resources exhausted ","version":"Next 🚧","tagName":"h2"},{"title":"βœ… Test Categories​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-test-categories","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Resource Cleanup (Memory Leak Prevention)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#1-resource-cleanup-memory-leak-prevention","content":" File: tests/test_resource_cleanup.py 1.1 Listener Cleanup βœ…β€‹ What is tested: Time-sensitive listeners are correctly removed (async_add_time_sensitive_listener())Minute-update listeners are correctly removed (async_add_minute_update_listener())Lifecycle callbacks are correctly unregistered (register_lifecycle_callback())Sensor cleanup removes ALL registered listenersBinary sensor cleanup removes ALL registered listeners Why critical: Each registered listener holds references to Entity + CoordinatorWithout cleanup: Entities are not freed by GC β†’ Memory LeakWith 80+ sensors Γ— 3 listener types = 240+ callbacks that must be cleanly removed Code Locations: coordinator/listeners.py β†’ async_add_time_sensitive_listener(), async_add_minute_update_listener()coordinator/core.py β†’ register_lifecycle_callback()sensor/core.py β†’ async_will_remove_from_hass()binary_sensor/core.py β†’ async_will_remove_from_hass() 1.2 Timer Cleanup βœ…β€‹ What is tested: Quarter-hour timer is cancelled and reference clearedMinute timer is cancelled and reference clearedBoth timers are cancelled togetherCleanup works even when timers are None Why critical: Uncancelled timers continue running after integration unloadHA's async_track_utc_time_change() creates persistent callbacksWithout cleanup: Timers keep firing β†’ CPU load + unnecessary coordinator updates Code Locations: coordinator/listeners.py β†’ cancel_timers()coordinator/core.py β†’ async_shutdown() 1.3 Config Entry Cleanup βœ…β€‹ What is tested: Options update listener is registered via async_on_unload()Cleanup function is correctly passed to async_on_unload() Why critical: entry.add_update_listener() registers permanent callbackWithout async_on_unload(): Listener remains active after reload β†’ duplicate updatesPattern: entry.async_on_unload(entry.add_update_listener(handler)) Code Locations: coordinator/core.py β†’ __init__() (listener registration)__init__.py β†’ async_unload_entry() ","version":"Next 🚧","tagName":"h3"},{"title":"2. Cache Invalidation βœ…β€‹","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#2-cache-invalidation-","content":" File: tests/test_resource_cleanup.py 2.1 Config Cache Invalidation​ What is tested: DataTransformer config cache is invalidated on options changePeriodCalculator config + period cache is invalidatedTrend calculator cache is cleared on coordinator update Why critical: Stale config β†’ Sensors use old user settingsStale period cache β†’ Incorrect best/peak price periodsStale trend cache β†’ Outdated trend analysis Code Locations: coordinator/data_transformation.py β†’ invalidate_config_cache()coordinator/periods.py β†’ invalidate_config_cache()sensor/calculators/trend.py β†’ clear_trend_cache() ","version":"Next 🚧","tagName":"h3"},{"title":"3. Storage Cleanup βœ…β€‹","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#3-storage-cleanup-","content":" File: tests/test_resource_cleanup.py + tests/test_coordinator_shutdown.py 3.1 Persistent Storage Removal​ What is tested: Storage file is deleted on config entry removalCache is saved on shutdown (no data loss) Why critical: Without storage removal: Old files remain after uninstallationWithout cache save on shutdown: Data loss on HA restartStorage path: .storage/tibber_prices.{entry_id} Code Locations: __init__.py β†’ async_remove_entry()coordinator/core.py β†’ async_shutdown() ","version":"Next 🚧","tagName":"h3"},{"title":"4. Timer Scheduling βœ…β€‹","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#4-timer-scheduling-","content":" File: tests/test_timer_scheduling.py What is tested: Quarter-hour timer is registered with correct parametersMinute timer is registered with correct parametersTimers can be re-scheduled (override old timer)Midnight turnover detection works correctly Why critical: Wrong timer parameters β†’ Entities update at wrong timesWithout timer override on re-schedule β†’ Multiple parallel timers β†’ Performance problem ","version":"Next 🚧","tagName":"h3"},{"title":"5. Sensor-to-Timer Assignment βœ…β€‹","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#5-sensor-to-timer-assignment-","content":" File: tests/test_sensor_timer_assignment.py What is tested: All TIME_SENSITIVE_ENTITY_KEYS are valid entity keysAll MINUTE_UPDATE_ENTITY_KEYS are valid entity keysBoth lists are disjoint (no overlap)Sensor and binary sensor platforms are checked Why critical: Wrong timer assignment β†’ Sensors update at wrong timesOverlap β†’ Duplicate updates β†’ Performance problem ","version":"Next 🚧","tagName":"h3"},{"title":"🚨 Additional Analysis (Nice-to-Have Patterns)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-additional-analysis-nice-to-have-patterns","content":" These patterns were analyzed and classified as not critical: ","version":"Next 🚧","tagName":"h2"},{"title":"6. Async Task Management​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#6-async-task-management","content":" Current Status: Fire-and-forget pattern for short tasks sensor/core.py β†’ Chart data refresh (short-lived, max 1-2 seconds)coordinator/core.py β†’ Cache storage (short-lived, max 100ms) Why no tests needed: No long-running tasks (all < 2 seconds)HA's event loop handles short tasks automaticallyTask exceptions are already logged If needed: _chart_refresh_task tracking + cancel in async_will_remove_from_hass() ","version":"Next 🚧","tagName":"h3"},{"title":"7. API Session Cleanup​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#7-api-session-cleanup","content":" Current Status: βœ… Correctly implemented async_get_clientsession(hass) is used (shared session)No new sessions are createdHA manages session lifecycle automatically Code: api/client.py + __init__.py ","version":"Next 🚧","tagName":"h3"},{"title":"8. Translation Cache Memory​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#8-translation-cache-memory","content":" Current Status: βœ… Bounded cache Max ~5-10 languages Γ— 5KB = 50KB totalModule-level cache without re-loadingPractically no memory issue Code: const.py β†’ _TRANSLATIONS_CACHE, _STANDARD_TRANSLATIONS_CACHE ","version":"Next 🚧","tagName":"h3"},{"title":"9. Coordinator Data Structure Integrity​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#9-coordinator-data-structure-integrity","content":" Current Status: Manually tested via ./scripts/develop Midnight turnover works correctly (observed over several days)Missing keys are handled via .get() with defaults80+ sensors access coordinator.data without errors Structure: coordinator.data = { "user_data": {...}, "priceInfo": [...], # Flat list of all enriched intervals "currency": "EUR" # Top-level for easy access } ","version":"Next 🚧","tagName":"h3"},{"title":"10. Service Response Memory​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#10-service-response-memory","content":" Current Status: HA's response lifecycle HA automatically frees service responses after returnApexCharts ~20KB response is one-time per callNo response accumulation in integration code Code: services/apexcharts.py ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ“Š Test Coverage Status​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-test-coverage-status","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"βœ… Implemented Tests (41 total)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-implemented-tests-41-total","content":" Category\tStatus\tTests\tFile\tCoverageListener Cleanup\tβœ…\t5\ttest_resource_cleanup.py\t100% Timer Cleanup\tβœ…\t4\ttest_resource_cleanup.py\t100% Config Entry Cleanup\tβœ…\t1\ttest_resource_cleanup.py\t100% Cache Invalidation\tβœ…\t3\ttest_resource_cleanup.py\t100% Storage Cleanup\tβœ…\t1\ttest_resource_cleanup.py\t100% Storage Persistence\tβœ…\t2\ttest_coordinator_shutdown.py\t100% Timer Scheduling\tβœ…\t8\ttest_timer_scheduling.py\t100% Sensor-Timer Assignment\tβœ…\t17\ttest_sensor_timer_assignment.py\t100% TOTAL\tβœ…\t41 100% (critical) ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ“‹ Analyzed but Not Implemented (Nice-to-Have)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-analyzed-but-not-implemented-nice-to-have","content":" Category\tStatus\tRationaleAsync Task Management\tπŸ“‹\tFire-and-forget pattern used (no long-running tasks) API Session Cleanup\tβœ…\tPattern correct (async_get_clientsession used) Translation Cache\tβœ…\tCache size bounded (~50KB max for 10 languages) Data Structure Integrity\tπŸ“‹\tWould add test time without finding real issues Service Response Memory\tπŸ“‹\tHA automatically frees service responses Legend: βœ… = Fully tested or pattern verified correctπŸ“‹ = Analyzed, low priority for testing (no known issues) ","version":"Next 🚧","tagName":"h3"},{"title":"🎯 Development Status​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-development-status","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"βœ… All Critical Patterns Tested​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-all-critical-patterns-tested","content":" All essential memory leak prevention patterns are covered by 41 tests: βœ… Listeners are correctly removed (no callback leaks)βœ… Timers are cancelled (no background task leaks)βœ… Config entry cleanup works (no dangling listeners)βœ… Caches are invalidated (no stale data issues)βœ… Storage is saved and cleaned up (no data loss)βœ… Timer scheduling works correctly (no update issues)βœ… Sensor-timer assignment is correct (no wrong updates) ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ“‹ Nice-to-Have Tests (Optional)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-nice-to-have-tests-optional","content":" If problems arise in the future, these tests can be added: Async Task Management - Pattern analyzed (fire-and-forget for short tasks)Data Structure Integrity - Midnight rotation manually testedService Response Memory - HA's response lifecycle automatic Conclusion: The integration has production-quality test coverage for all critical resource leak patterns. ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ” How to Run Tests​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-how-to-run-tests","content":" # Run all resource cleanup tests (14 tests) ./scripts/test tests/test_resource_cleanup.py -v # Run all critical pattern tests (41 tests) ./scripts/test tests/test_resource_cleanup.py tests/test_coordinator_shutdown.py \\ tests/test_timer_scheduling.py tests/test_sensor_timer_assignment.py -v # Run all tests with coverage ./scripts/test --cov=custom_components.tibber_prices --cov-report=html # Type checking and linting ./scripts/check # Manual memory leak test # 1. Start HA: ./scripts/develop # 2. Monitor RAM: watch -n 1 'ps aux | grep home-assistant' # 3. Reload integration multiple times (HA UI: Settings β†’ Devices β†’ Tibber Prices β†’ Reload) # 4. RAM should stabilize (not grow continuously) ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“š References​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-references","content":" Home Assistant Cleanup Patterns: https://developers.home-assistant.io/docs/integration_setup_failures/#cleanupAsync Best Practices: https://developers.home-assistant.io/docs/asyncio_101/Memory Profiling: https://docs.python.org/3/library/tracemalloc.html ","version":"Next 🚧","tagName":"h2"},{"title":"API Reference","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/api-reference","content":"","keywords":"","version":"Next 🚧"},{"title":"GraphQL Endpoint​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#graphql-endpoint","content":" https://api.tibber.com/v1-beta/gql Authentication: Bearer token in Authorization header ","version":"Next 🚧","tagName":"h2"},{"title":"Queries Used​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#queries-used","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"User Data Query​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#user-data-query","content":" Fetches home information and metadata: query { viewer { homes { id appNickname address { address1 postalCode city country } timeZone currentSubscription { priceInfo { current { currency } } } meteringPointData { consumptionEan gridAreaCode } } } } Cached for: 24 hours ","version":"Next 🚧","tagName":"h3"},{"title":"Price Data Query​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#price-data-query","content":" Fetches quarter-hourly prices: query($homeId: ID!) { viewer { home(id: $homeId) { currentSubscription { priceInfo { range(resolution: QUARTER_HOURLY, first: 384) { nodes { total startsAt level } } } } } } } Parameters: homeId: Tibber home identifierresolution: Always QUARTER_HOURLYfirst: 384 intervals (4 days of data) Cached until: Midnight local time ","version":"Next 🚧","tagName":"h3"},{"title":"Rate Limits​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#rate-limits","content":" Tibber API rate limits (as of 2024): 5000 requests per hour per tokenBurst limit: 100 requests per minute Integration stays well below these limits: Polls every 15 minutes = 96 requests/dayUser data cached for 24h = 1 request/dayTotal: ~100 requests/day per home ","version":"Next 🚧","tagName":"h2"},{"title":"Response Format​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#response-format","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Price Node Structure​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#price-node-structure","content":" { "total": 0.2456, "startsAt": "2024-12-06T14:00:00.000+01:00", "level": "NORMAL" } Fields: total: Price including VAT and fees (currency's major unit, e.g., EUR)startsAt: ISO 8601 timestamp with timezonelevel: Tibber's own classification (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) ","version":"Next 🚧","tagName":"h3"},{"title":"Currency Information​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#currency-information","content":" { "currency": "EUR" } Supported currencies: EUR (Euro) - displayed as ct/kWhNOK (Norwegian Krone) - displayed as ΓΈre/kWhSEK (Swedish Krona) - displayed as ΓΆre/kWh ","version":"Next 🚧","tagName":"h3"},{"title":"Error Handling​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#error-handling","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Common Error Responses​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#common-error-responses","content":" Invalid Token: { "errors": [{ "message": "Unauthorized", "extensions": { "code": "UNAUTHENTICATED" } }] } Rate Limit Exceeded: { "errors": [{ "message": "Too Many Requests", "extensions": { "code": "RATE_LIMIT_EXCEEDED" } }] } Home Not Found: { "errors": [{ "message": "Home not found", "extensions": { "code": "NOT_FOUND" } }] } Integration handles these with: Exponential backoff retry (3 attempts)ConfigEntryAuthFailed for auth errorsConfigEntryNotReady for temporary failures ","version":"Next 🚧","tagName":"h3"},{"title":"Data Transformation​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#data-transformation","content":" Raw API data is enriched with: Trailing 24h average - Calculated from previous intervalsLeading 24h average - Calculated from future intervalsPrice difference % - Deviation from averageCustom rating - Based on user thresholds (different from Tibber's level) See utils/price.py for enrichment logic. πŸ’‘ External Resources: Tibber API DocumentationGraphQL ExplorerGet API Token ","version":"Next 🚧","tagName":"h2"},{"title":"Debugging Guide","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/debugging","content":"","keywords":"","version":"Next 🚧"},{"title":"Logging​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#logging","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Enable Debug Logging​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#enable-debug-logging","content":" Add to configuration.yaml: logger: default: info logs: custom_components.tibber_prices: debug Restart Home Assistant to apply. ","version":"Next 🚧","tagName":"h3"},{"title":"Key Log Messages​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#key-log-messages","content":" Coordinator Updates: [custom_components.tibber_prices.coordinator] Successfully fetched price data [custom_components.tibber_prices.coordinator] Cache valid, using cached data [custom_components.tibber_prices.coordinator] Midnight turnover detected, clearing cache Period Calculation: [custom_components.tibber_prices.coordinator.periods] Calculating BEST PRICE periods: flex=15.0% [custom_components.tibber_prices.coordinator.periods] Day 2024-12-06: Found 2 periods [custom_components.tibber_prices.coordinator.periods] Period 1: 02:00-05:00 (12 intervals) API Errors: [custom_components.tibber_prices.api] API request failed: Unauthorized [custom_components.tibber_prices.api] Retrying (attempt 2/3) after 2.0s ","version":"Next 🚧","tagName":"h3"},{"title":"VS Code Debugging​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#vs-code-debugging","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Launch Configuration​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#launch-configuration","content":" .vscode/launch.json: { "version": "0.2.0", "configurations": [ { "name": "Home Assistant", "type": "debugpy", "request": "launch", "module": "homeassistant", "args": ["-c", "config", "--debug"], "justMyCode": false, "env": { "PYTHONPATH": "${workspaceFolder}/.venv/lib/python3.13/site-packages" } } ] } ","version":"Next 🚧","tagName":"h3"},{"title":"Set Breakpoints​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#set-breakpoints","content":" Coordinator update: # coordinator/core.py async def _async_update_data(self) -> dict: """Fetch data from API.""" breakpoint() # Or set VS Code breakpoint Period calculation: # coordinator/period_handlers/core.py def calculate_periods(...) -> list[dict]: """Calculate best/peak price periods.""" breakpoint() ","version":"Next 🚧","tagName":"h3"},{"title":"pytest Debugging​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#pytest-debugging","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Run Single Test with Output​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#run-single-test-with-output","content":" .venv/bin/python -m pytest tests/test_period_calculation.py::test_midnight_crossing -v -s Flags: -v - Verbose output-s - Show print statements-k pattern - Run tests matching pattern ","version":"Next 🚧","tagName":"h3"},{"title":"Debug Test in VS Code​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#debug-test-in-vs-code","content":" Set breakpoint in test file, use "Debug Test" CodeLens. ","version":"Next 🚧","tagName":"h3"},{"title":"Useful Test Patterns​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#useful-test-patterns","content":" Print coordinator data: def test_something(coordinator): print(f"Coordinator data: {coordinator.data}") print(f"Price info count: {len(coordinator.data['priceInfo'])}") Inspect period attributes: def test_periods(hass, coordinator): periods = coordinator.data.get('best_price_periods', []) for period in periods: print(f"Period: {period['start']} to {period['end']}") print(f" Intervals: {len(period['intervals'])}") ","version":"Next 🚧","tagName":"h3"},{"title":"Common Issues​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#common-issues","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Integration Not Loading​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#integration-not-loading","content":" Check: grep "tibber_prices" config/home-assistant.log Common causes: Syntax error in Python code β†’ Check logs for tracebackMissing dependency β†’ Run uv syncWrong file permissions β†’ chmod +x scripts/* ","version":"Next 🚧","tagName":"h3"},{"title":"Sensors Not Updating​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#sensors-not-updating","content":" Check coordinator state: # In Developer Tools > Template {{ states.sensor.tibber_home_current_interval_price.last_updated }} Debug in code: # Add logging in sensor/core.py _LOGGER.debug("Updating sensor %s: old=%s new=%s", self.entity_id, self._attr_native_value, new_value) ","version":"Next 🚧","tagName":"h3"},{"title":"Period Calculation Wrong​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#period-calculation-wrong","content":" Enable detailed period logs: # coordinator/period_handlers/period_building.py _LOGGER.debug("Candidate intervals: %s", [(i['startsAt'], i['total']) for i in candidates]) Check filter statistics: [period_building] Flex filter blocked: 45 intervals [period_building] Min distance blocked: 12 intervals [period_building] Level filter blocked: 8 intervals ","version":"Next 🚧","tagName":"h3"},{"title":"Performance Profiling​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#performance-profiling","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Time Execution​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#time-execution","content":" import time start = time.perf_counter() result = expensive_function() duration = time.perf_counter() - start _LOGGER.debug("Function took %.3fs", duration) ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Usage​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#memory-usage","content":" import tracemalloc tracemalloc.start() # ... your code ... current, peak = tracemalloc.get_traced_memory() _LOGGER.debug("Memory: current=%d peak=%d", current, peak) tracemalloc.stop() ","version":"Next 🚧","tagName":"h3"},{"title":"Profile with cProfile​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#profile-with-cprofile","content":" python -m cProfile -o profile.stats -m homeassistant -c config python -m pstats profile.stats # Then: sort cumtime, stats 20 ","version":"Next 🚧","tagName":"h3"},{"title":"Live Debugging in Running HA​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#live-debugging-in-running-ha","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Remote Debugging with debugpy​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#remote-debugging-with-debugpy","content":" Add to coordinator code: import debugpy debugpy.listen(5678) _LOGGER.info("Waiting for debugger attach on port 5678") debugpy.wait_for_client() Connect from VS Code with remote attach configuration. ","version":"Next 🚧","tagName":"h3"},{"title":"IPython REPL​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#ipython-repl","content":" Install in container: uv pip install ipython Add breakpoint: from IPython import embed embed() # Drops into interactive shell πŸ’‘ Related: Testing Guide - Writing and running testsSetup Guide - Development environmentArchitecture - Code structure ","version":"Next 🚧","tagName":"h3"},{"title":"Developer Documentation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/intro","content":"","keywords":"","version":"Next 🚧"},{"title":"πŸ“š Developer Guides​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-developer-guides","content":" Setup - DevContainer, environment setup, and dependenciesArchitecture - Code structure, patterns, and conventionsPeriod Calculation Theory - Mathematical foundations, Flex/Distance interaction, Relaxation strategyTimer Architecture - Timer system, scheduling, coordination (3 independent timers)Caching Strategy - Cache layers, invalidation, debuggingTesting - How to run tests and write new test casesRelease Management - Release workflow and versioning processCoding Guidelines - Style guide, linting, and best practicesRefactoring Guide - How to plan and execute major refactorings ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ€– AI Documentation​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-ai-documentation","content":" The main AI/Copilot documentation is in AGENTS.md. This file serves as long-term memory for AI assistants and contains: Detailed architectural patternsCode quality rules and conventionsDevelopment workflow guidanceCommon pitfalls and anti-patternsProject-specific patterns and utilities Important: When proposing changes to patterns or conventions, always update AGENTS.md to keep AI guidance consistent. ","version":"Next 🚧","tagName":"h2"},{"title":"AI-Assisted Development​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#ai-assisted-development","content":" This integration is developed with extensive AI assistance (GitHub Copilot, Claude, and other AI tools). The AI handles: Pattern Recognition: Understanding and applying Home Assistant best practicesCode Generation: Implementing features with proper type hints, error handling, and documentationRefactoring: Maintaining consistency across the codebase during structural changesTranslation Management: Keeping 5 language files synchronizedDocumentation: Generating and maintaining comprehensive documentation Quality Assurance: Automated linting with Ruff (120-char line length, max complexity 25)Home Assistant's type checking and validationReal-world testing in development environmentCode review by maintainer before merging Benefits: Rapid feature development while maintaining qualityConsistent code patterns across all modulesComprehensive documentation maintained alongside codeQuick bug fixes with proper understanding of context Limitations: AI may occasionally miss edge cases or subtle bugsSome complex Home Assistant patterns may need human reviewTranslation quality depends on AI's understanding of target languageUser feedback is crucial for discovering real-world issues If you're working with AI tools on this project, the AGENTS.md file provides the context and patterns that ensure consistency. ","version":"Next 🚧","tagName":"h3"},{"title":"πŸš€ Quick Start for Contributors​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-quick-start-for-contributors","content":" Fork and clone the repositoryOpen in DevContainer (VS Code: "Reopen in Container")Run setup: ./scripts/setup/setup (happens automatically via postCreateCommand)Start development environment: ./scripts/developMake your changes following the Coding GuidelinesRun linting: ./scripts/lintValidate integration: ./scripts/release/hassfestTest your changes in the running Home Assistant instanceCommit using Conventional Commits formatOpen a Pull Request with clear description ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ› οΈ Development Tools​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#️-development-tools","content":" The project includes several helper scripts in ./scripts/: bootstrap - Initial setup of dependenciesdevelop - Start Home Assistant in debug mode (auto-cleans .egg-info)clean - Remove build artifacts and cacheslint - Auto-fix code issues with rufflint-check - Check code without modifications (CI mode)hassfest - Validate integration structure (JSON, Python syntax, required files)setup - Install development tools (git-cliff, @github/copilot)prepare-release - Prepare a new release (bump version, create tag)generate-release-notes - Generate release notes from commits ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“¦ Project Structure​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-project-structure","content":" custom_components/tibber_prices/ β”œβ”€β”€ __init__.py # Integration setup β”œβ”€β”€ coordinator.py # Data update coordinator with caching β”œβ”€β”€ api.py # Tibber GraphQL API client β”œβ”€β”€ price_utils.py # Price enrichment functions β”œβ”€β”€ average_utils.py # Average calculation utilities β”œβ”€β”€ sensor/ # Sensor platform (package) β”‚ β”œβ”€β”€ __init__.py # Platform setup β”‚ β”œβ”€β”€ core.py # TibberPricesSensor class β”‚ β”œβ”€β”€ definitions.py # Entity descriptions β”‚ β”œβ”€β”€ helpers.py # Pure helper functions β”‚ └── attributes.py # Attribute builders β”œβ”€β”€ binary_sensor.py # Binary sensor platform β”œβ”€β”€ entity_utils/ # Shared entity helpers β”‚ β”œβ”€β”€ icons.py # Icon mapping logic β”‚ β”œβ”€β”€ colors.py # Color mapping logic β”‚ └── attributes.py # Common attribute builders β”œβ”€β”€ services.py # Custom services β”œβ”€β”€ config_flow.py # UI configuration flow β”œβ”€β”€ const.py # Constants and helpers β”œβ”€β”€ translations/ # Standard HA translations └── custom_translations/ # Extended translations (descriptions) ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ” Key Concepts​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-key-concepts","content":" DataUpdateCoordinator Pattern: Centralized data fetching and cachingAutomatic entity updates on data changesPersistent storage via StoreQuarter-hour boundary refresh scheduling Price Data Enrichment: Raw API data is enriched with statistical analysisTrailing/leading 24h averages calculated per intervalPrice differences and ratings addedAll via pure functions in price_utils.py Translation System: Dual system: /translations/ (HA schema) + /custom_translations/ (extended)Both must stay in sync across all languages (de, en, nb, nl, sv)Async loading at integration setup ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ§ͺ Testing​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-testing","content":" # Validate integration structure ./scripts/release/hassfest # Run all tests pytest tests/ # Run specific test file pytest tests/test_coordinator.py # Run with coverage pytest --cov=custom_components.tibber_prices tests/ ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“ Documentation Standards​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-documentation-standards","content":" User-facing docs go in docs/user/Developer docs go in docs/development/AI guidance goes in AGENTS.mdUse clear examples and code snippetsKeep docs up-to-date with code changes ","version":"Next 🚧","tagName":"h2"},{"title":"🀝 Contributing​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-contributing","content":" See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and pull request process. ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“„ License​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-license","content":" This project is licensed under the Apache License 2.0. Note: This documentation is for developers. End users should refer to the User Documentation. ","version":"Next 🚧","tagName":"h2"},{"title":"Refactoring Guide","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/refactoring-guide","content":"","keywords":"","version":"Next 🚧"},{"title":"When to Plan a Refactoring​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#when-to-plan-a-refactoring","content":" Not every code change needs a detailed plan. Create a refactoring plan when: πŸ”΄ Major changes requiring planning: Splitting modules into packages (>5 files affected, >500 lines moved)Architectural changes (new packages, module restructuring)Breaking changes (API changes, config format migrations) 🟑 Medium changes that might benefit from planning: Complex features with multiple moving partsChanges affecting many files (>3 files, unclear best approach)Refactorings with unclear scope 🟒 Small changes - no planning needed: Bug fixes (straightforward, <100 lines)Small features (<3 files, clear approach)Documentation updatesCosmetic changes (formatting, renaming) ","version":"Next 🚧","tagName":"h2"},{"title":"The Planning Process​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#the-planning-process","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Create a Planning Document​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#1-create-a-planning-document","content":" Create a file in the planning/ directory (git-ignored for free iteration): # Example: touch planning/my-feature-refactoring-plan.md Note: The planning/ directory is git-ignored, so you can iterate freely without polluting git history. ","version":"Next 🚧","tagName":"h3"},{"title":"2. Use the Planning Template​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#2-use-the-planning-template","content":" Every planning document should include: # <Feature> Refactoring Plan **Status**: πŸ”„ PLANNING | 🚧 IN PROGRESS | βœ… COMPLETED | ❌ CANCELLED **Created**: YYYY-MM-DD **Last Updated**: YYYY-MM-DD ## Problem Statement - What's the issue? - Why does it need fixing? - Current pain points ## Proposed Solution - High-level approach - File structure (before/after) - Module responsibilities ## Migration Strategy - Phase-by-phase breakdown - File lifecycle (CREATE/MODIFY/DELETE/RENAME) - Dependencies between phases - Testing checkpoints ## Risks & Mitigation - What could go wrong? - How to prevent it? - Rollback strategy ## Success Criteria - Measurable improvements - Testing requirements - Verification steps See planning/README.md for detailed template explanation. ","version":"Next 🚧","tagName":"h3"},{"title":"3. Iterate Freely​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#3-iterate-freely","content":" Since planning/ is git-ignored: Draft multiple versionsGet AI assistance without commit pressureRefine until the plan is solidNo need to clean up intermediate versions ","version":"Next 🚧","tagName":"h3"},{"title":"4. Implementation Phase​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#4-implementation-phase","content":" Once plan is approved: Follow the phases defined in the planTest after each phase (don't skip!)Update plan if issues discoveredTrack progress through phase status ","version":"Next 🚧","tagName":"h3"},{"title":"5. After Completion​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#5-after-completion","content":" Option A: Archive in docs/development/If the plan has lasting value (successful pattern, reusable approach): mv planning/my-feature-refactoring-plan.md docs/development/ git add docs/development/my-feature-refactoring-plan.md git commit -m "docs: archive successful refactoring plan" Option B: DeleteIf the plan served its purpose and code is the source of truth: rm planning/my-feature-refactoring-plan.md Option C: Keep locally (not committed)For "why we didn't do X" reference: mkdir -p planning/archive mv planning/my-feature-refactoring-plan.md planning/archive/ # Still git-ignored, just organized ","version":"Next 🚧","tagName":"h3"},{"title":"Real-World Example​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#real-world-example","content":" The sensor/ package refactoring (Nov 2025) is a successful example: Before: sensor.py - 2,574 lines, hard to navigate After: sensor/ package with 5 focused modulesEach module <800 linesClear separation of concerns Process: Created planning/module-splitting-plan.md (now in docs/development/)Defined 6 phases with clear file lifecycleImplemented phase by phaseTested after each phaseDocumented in AGENTS.mdMoved plan to docs/development/ as reference Key learnings: Temporary _impl.py files avoid Python package conflictsTest after EVERY phase (don't accumulate changes)Clear file lifecycle (CREATE/MODIFY/DELETE/RENAME)Phase-by-phase approach enables safe rollback Note: The complete module splitting plan was documented during implementation but has been superseded by the actual code structure. ","version":"Next 🚧","tagName":"h2"},{"title":"Phase-by-Phase Implementation​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#phase-by-phase-implementation","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Why Phases Matter​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#why-phases-matter","content":" Breaking refactorings into phases: βœ… Enables testing after each change (catch bugs early)βœ… Allows rollback to last good stateβœ… Makes progress visibleβœ… Reduces cognitive load (focus on one thing)❌ Takes more time (but worth it!) ","version":"Next 🚧","tagName":"h3"},{"title":"Phase Structure​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#phase-structure","content":" Each phase should: Have clear goal - What's being changed?Document file lifecycle - CREATE/MODIFY/DELETE/RENAMEDefine success criteria - How to verify it worked?Include testing steps - What to test?Estimate time - Realistic time budget ","version":"Next 🚧","tagName":"h3"},{"title":"Example Phase Documentation​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#example-phase-documentation","content":" ### Phase 3: Extract Helper Functions (Session 3) **Goal**: Move pure utility functions to helpers.py **File Lifecycle**: - ✨ CREATE `sensor/helpers.py` (utility functions) - ✏️ MODIFY `sensor/core.py` (import from helpers.py) **Steps**: 1. Create sensor/helpers.py 2. Move pure functions (no state, no self) 3. Add comprehensive docstrings 4. Update imports in core.py **Estimated time**: 45 minutes **Success criteria**: - βœ… All pure functions moved - βœ… `./scripts/lint-check` passes - βœ… HA starts successfully - βœ… All entities work correctly ","version":"Next 🚧","tagName":"h3"},{"title":"Testing Strategy​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#testing-strategy","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"After Each Phase​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#after-each-phase","content":" Minimum testing checklist: # 1. Linting passes ./scripts/lint-check # 2. Home Assistant starts ./scripts/develop # Watch for startup errors in logs # 3. Integration loads # Check: Settings β†’ Devices & Services β†’ Tibber Prices # Verify: All entities appear # 4. Basic functionality # Test: Data updates without errors # Check: Entity states update correctly ","version":"Next 🚧","tagName":"h3"},{"title":"Comprehensive Testing (Final Phase)​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#comprehensive-testing-final-phase","content":" After completing all phases: Test all entities (sensors, binary sensors)Test configuration flow (add/modify/remove)Test options flow (change settings)Test services (custom service calls)Test error handling (disconnect API, invalid data)Test caching (restart HA, verify cache loads)Test time-based updates (quarter-hour refresh) ","version":"Next 🚧","tagName":"h3"},{"title":"Common Pitfalls​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#common-pitfalls","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"❌ Skip Planning for Large Changes​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#-skip-planning-for-large-changes","content":" Problem: "This seems straightforward, I'll just start coding..." Result: Halfway through, realize the approach doesn't work. Wasted time. Solution: If unsure, spend 30 minutes on a rough plan. Better to plan and discard than get stuck. ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Implement All Phases at Once​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#-implement-all-phases-at-once","content":" Problem: "I'll do all phases, then test everything..." Result: 10+ files changed, 2000+ lines modified, hard to debug if something breaks. Solution: Test after EVERY phase. Commit after each successful phase. ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Forget to Update Documentation​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#-forget-to-update-documentation","content":" Problem: Code is refactored, but AGENTS.md and docs/ still reference old structure. Result: AI/humans get confused by outdated documentation. Solution: Include "Documentation Phase" at the end of every refactoring plan. ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Ignore the Planning Directory​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#-ignore-the-planning-directory","content":" Problem: "I'll just create the plan in docs/ directly..." Result: Git history polluted with draft iterations, or pressure to "commit something" too early. Solution: Always use planning/ for work-in-progress. Move to docs/ only when done. ","version":"Next 🚧","tagName":"h3"},{"title":"Integration with AI Development​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#integration-with-ai-development","content":" This project uses AI heavily (GitHub Copilot, Claude). The planning process supports AI development: AI reads from: AGENTS.md - Long-term memory, patterns, conventions (AI-focused)docs/development/ - Human-readable guides (human-focused)planning/ - Active refactoring plans (shared context) AI updates: AGENTS.md - When patterns changeplanning/*.md - During refactoring implementationdocs/development/ - After successful completion Why separate AGENTS.md and docs/development/? AGENTS.md: Technical, comprehensive, AI-optimizeddocs/development/: Practical, focused, human-optimizedBoth stay in sync but serve different audiences See AGENTS.md section "Planning Major Refactorings" for AI-specific guidance. ","version":"Next 🚧","tagName":"h2"},{"title":"Tools and Resources​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#tools-and-resources","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Planning Directory​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#planning-directory","content":" planning/ - Git-ignored workspace for draftsplanning/README.md - Detailed planning documentationplanning/*.md - Active refactoring plans ","version":"Next 🚧","tagName":"h3"},{"title":"Example Plans​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#example-plans","content":" docs/development/module-splitting-plan.md - βœ… Completed, archivedplanning/config-flow-refactoring-plan.md - πŸ”„ Planned (1013 lines β†’ 4 modules)planning/binary-sensor-refactoring-plan.md - πŸ”„ Planned (644 lines β†’ 4 modules)planning/coordinator-refactoring-plan.md - πŸ”„ Planned (1446 lines, high complexity) ","version":"Next 🚧","tagName":"h3"},{"title":"Helper Scripts​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#helper-scripts","content":" ./scripts/lint-check # Verify code quality ./scripts/develop # Start HA for testing ./scripts/lint # Auto-fix issues ","version":"Next 🚧","tagName":"h3"},{"title":"FAQ​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#faq","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Q: When should I create a plan vs. just start coding?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-when-should-i-create-a-plan-vs-just-start-coding","content":" A: If you're asking this question, you probably need a plan. 😊 Simple rule: If you can't describe the entire change in 3 sentences, create a plan. ","version":"Next 🚧","tagName":"h3"},{"title":"Q: How detailed should the plan be?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-how-detailed-should-the-plan-be","content":" A: Detailed enough to execute without major surprises, but not a line-by-line script. Good plan level: Lists all files affected (CREATE/MODIFY/DELETE)Defines phases with clear boundariesIncludes testing strategyEstimates time per phase Too detailed: Exact code snippets for every changeLine-by-line instructions Too vague: "Refactor sensor.py to be better"No phase breakdownNo testing strategy ","version":"Next 🚧","tagName":"h3"},{"title":"Q: What if the plan changes during implementation?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-what-if-the-plan-changes-during-implementation","content":" A: Update the plan! Planning documents are living documents. If you discover: Better approach β†’ Update "Proposed Solution"More phases needed β†’ Add to "Migration Strategy"New risks β†’ Update "Risks & Mitigation" Document WHY the plan changed (helps future refactorings). ","version":"Next 🚧","tagName":"h3"},{"title":"Q: Should every refactoring follow this process?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-should-every-refactoring-follow-this-process","content":" A: No! Use judgment: Small changes (<100 lines, clear approach): Just do it, no plan neededMedium changes (unclear scope): Write rough outline, refine if neededLarge changes (>500 lines, >5 files): Full planning process ","version":"Next 🚧","tagName":"h3"},{"title":"Q: How do I know when a refactoring is successful?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-how-do-i-know-when-a-refactoring-is-successful","content":" A: Check the "Success Criteria" from your plan: Typical criteria: βœ… All linting checks passβœ… HA starts without errorsβœ… All entities functionalβœ… No regressions (existing features work)βœ… Code easier to understand/modifyβœ… Documentation updated If you can't tick all boxes, the refactoring isn't done. ","version":"Next 🚧","tagName":"h3"},{"title":"Summary​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#summary","content":" Key takeaways: Plan when scope is unclear (>500 lines, >5 files, breaking changes)Use planning/ directory for free iteration (git-ignored)Work in phases and test after each phaseDocument file lifecycle (CREATE/MODIFY/DELETE/RENAME)Update documentation after completion (AGENTS.md, docs/)Archive or delete plan after implementation Remember: Good planning prevents half-finished refactorings and makes rollback easier when things go wrong. Next steps: Read planning/README.md for detailed templateCheck docs/development/module-splitting-plan.md for real exampleBrowse planning/ for active refactoring plans ","version":"Next 🚧","tagName":"h2"},{"title":"Release Notes Generation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/release-management","content":"","keywords":"","version":"Next 🚧"},{"title":"πŸš€ Quick Start: Preparing a Release​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-quick-start-preparing-a-release","content":" Recommended workflow (automatic & foolproof): # 1. Use the helper script to prepare release ./scripts/release/prepare 0.3.0 # This will: # - Update manifest.json version to 0.3.0 # - Create commit: "chore(release): bump version to 0.3.0" # - Create tag: v0.3.0 # - Show you what will be pushed # 2. Review and push when ready git push origin main v0.3.0 # 3. CI/CD automatically: # - Detects the new tag # - Generates release notes (excluding version bump commit) # - Creates GitHub release If you forget to bump manifest.json: # Just edit manifest.json manually and commit vim custom_components/tibber_prices/manifest.json # "version": "0.3.0" git commit -am "chore(release): bump version to 0.3.0" git push # Auto-Tag workflow detects manifest.json change and creates tag automatically! # Then Release workflow kicks in and creates the GitHub release ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“‹ Release Options​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-release-options","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. GitHub UI Button (Easiest)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#1-github-ui-button-easiest","content":" Use GitHub's built-in release notes generator: Go to ReleasesClick "Draft a new release"Select your tagClick "Generate release notes" buttonEdit if needed and publish Uses: .github/release.yml configurationBest for: Quick releases, works with PRs that have labelsNote: Direct commits appear in "Other Changes" category ","version":"Next 🚧","tagName":"h3"},{"title":"2. Local Script (Intelligent)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#2-local-script-intelligent","content":" Run ./scripts/release/generate-notes to parse conventional commits locally. Automatic backend detection: # Generate from latest tag to HEAD ./scripts/release/generate-notes # Generate between specific tags ./scripts/release/generate-notes v1.0.0 v1.1.0 # Generate from tag to HEAD ./scripts/release/generate-notes v1.0.0 HEAD Force specific backend: # Use AI (GitHub Copilot CLI) RELEASE_NOTES_BACKEND=copilot ./scripts/release/generate-notes # Use git-cliff (template-based) RELEASE_NOTES_BACKEND=git-cliff ./scripts/release/generate-notes # Use manual parsing (grep/awk fallback) RELEASE_NOTES_BACKEND=manual ./scripts/release/generate-notes Disable AI (useful for CI/CD): USE_AI=false ./scripts/release/generate-notes Backend Priority​ The script automatically selects the best available backend: GitHub Copilot CLI - AI-powered, context-aware (best quality)git-cliff - Fast Rust tool with templates (reliable)Manual - Simple grep/awk parsing (always works) In CI/CD ($CI or $GITHUB_ACTIONS), AI is automatically disabled. Installing Optional Backends​ In DevContainer (automatic): git-cliff is automatically installed when the DevContainer is built: Rust toolchain: Installed via ghcr.io/devcontainers/features/rust:1 (minimal profile)git-cliff: Installed via cargo in scripts/setup/setup Simply rebuild the container (VS Code: "Dev Containers: Rebuild Container") and git-cliff will be available. Manual installation (outside DevContainer): git-cliff (template-based): # See: https://git-cliff.org/docs/installation # macOS brew install git-cliff # Cargo (all platforms) cargo install git-cliff # Manual binary download wget https://github.com/orhun/git-cliff/releases/latest/download/git-cliff-x86_64-unknown-linux-gnu.tar.gz tar -xzf git-cliff-*.tar.gz sudo mv git-cliff-*/git-cliff /usr/local/bin/ ","version":"Next 🚧","tagName":"h3"},{"title":"3. CI/CD Automation​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#3-cicd-automation","content":" Automatic release notes on tag push. Workflow: .github/workflows/release.yml Triggers: Version tags (v1.0.0, v2.1.3, etc.) # Create and push a tag to trigger automatic release git tag v1.0.0 git push origin v1.0.0 # GitHub Actions will: # 1. Detect the new tag # 2. Generate release notes using git-cliff # 3. Create a GitHub release automatically Backend: Uses git-cliff (AI disabled in CI for reliability) ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ“ Output Format​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-output-format","content":" All methods produce GitHub-flavored Markdown with emoji categories: ## πŸŽ‰ New Features - **scope**: Description ([abc1234](link-to-commit)) ## πŸ› Bug Fixes - **scope**: Description ([def5678](link-to-commit)) ## πŸ“š Documentation - **scope**: Description ([ghi9012](link-to-commit)) ## πŸ”§ Maintenance & Refactoring - **scope**: Description ([jkl3456](link-to-commit)) ## πŸ§ͺ Testing - **scope**: Description ([mno7890](link-to-commit)) ","version":"Next 🚧","tagName":"h2"},{"title":"🎯 When to Use Which​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-when-to-use-which","content":" Method\tUse Case\tPros\tConsHelper Script\tNormal releases\tFoolproof, automatic\tRequires script Auto-Tag Workflow\tForgot script\tSafety net, automatic tagging\tStill need manifest bump GitHub Button\tManual quick release\tEasy, no script\tLimited categorization Local Script\tTesting release notes\tPreview before release\tManual process CI/CD\tAfter tag push\tFully automatic\tNeeds tag first ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ”„ Complete Release Workflows​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-complete-release-workflows","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Workflow A: Using Helper Script (Recommended)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#workflow-a-using-helper-script-recommended","content":" # Step 1: Prepare release (all-in-one) ./scripts/release/prepare 0.3.0 # Step 2: Review changes git log -1 --stat git show v0.3.0 # Step 3: Push when ready git push origin main v0.3.0 # Done! CI/CD creates the release automatically What happens: Script bumps manifest.json β†’ commits β†’ creates tag locallyYou push commit + tag togetherRelease workflow sees tag β†’ generates notes β†’ creates release ","version":"Next 🚧","tagName":"h3"},{"title":"Workflow B: Manual (with Auto-Tag Safety Net)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#workflow-b-manual-with-auto-tag-safety-net","content":" # Step 1: Bump version manually vim custom_components/tibber_prices/manifest.json # Change: "version": "0.3.0" # Step 2: Commit git commit -am "chore(release): bump version to 0.3.0" git push # Step 3: Wait for Auto-Tag workflow # GitHub Actions automatically creates v0.3.0 tag # Then Release workflow creates the release What happens: You push manifest.json changeAuto-Tag workflow detects change β†’ creates tag automaticallyRelease workflow sees new tag β†’ creates release ","version":"Next 🚧","tagName":"h3"},{"title":"Workflow C: Manual Tag (Old Way)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#workflow-c-manual-tag-old-way","content":" # Step 1: Bump version vim custom_components/tibber_prices/manifest.json git commit -am "chore(release): bump version to 0.3.0" # Step 2: Create tag manually git tag v0.3.0 git push origin main v0.3.0 # Release workflow creates release What happens: You create and push tag manuallyRelease workflow creates releaseAuto-Tag workflow skips (tag already exists) ","version":"Next 🚧","tagName":"h3"},{"title":"βš™οΈ Configuration Files​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#️-configuration-files","content":" scripts/release/prepare - Helper script to bump version + create tag.github/workflows/auto-tag.yml - Automatic tag creation on manifest.json change.github/workflows/release.yml - Automatic release on tag push.github/release.yml - GitHub UI button configurationcliff.toml - git-cliff template (filters out version bumps) ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ›‘οΈ Safety Features​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#️-safety-features","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Version Validation​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#1-version-validation","content":" Both helper script and auto-tag workflow validate version format (X.Y.Z). ","version":"Next 🚧","tagName":"h3"},{"title":"2. No Duplicate Tags​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#2-no-duplicate-tags","content":" Helper script checks if tag exists (local + remote)Auto-tag workflow checks if tag exists before creating ","version":"Next 🚧","tagName":"h3"},{"title":"3. Atomic Operations​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#3-atomic-operations","content":" Helper script creates commit + tag locally. You decide when to push. ","version":"Next 🚧","tagName":"h3"},{"title":"4. Version Bumps Filtered​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#4-version-bumps-filtered","content":" Release notes automatically exclude chore(release): bump version commits. ","version":"Next 🚧","tagName":"h3"},{"title":"5. Rollback Instructions​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#5-rollback-instructions","content":" Helper script shows how to undo if you change your mind. ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ› Troubleshooting​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-troubleshooting","content":" "Tag already exists" error: # Local tag git tag -d v0.3.0 # Remote tag (only if you need to recreate) git push origin :refs/tags/v0.3.0 Manifest version doesn't match tag: This shouldn't happen with the new workflows, but if it does: # 1. Fix manifest.json vim custom_components/tibber_prices/manifest.json # 2. Amend the commit git commit --amend -am "chore(release): bump version to 0.3.0" # 3. Move the tag git tag -f v0.3.0 git push -f origin main v0.3.0 Auto-tag didn't create tag: Check workflow runs in GitHub Actions. Common causes: Tag already exists remotelyInvalid version format in manifest.jsonmanifest.json not in the commit that was pushed ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ” Format Requirements​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-format-requirements","content":" HACS: No specific format required, uses GitHub releases as-isHome Assistant: No specific format required for custom integrationsMarkdown: Standard GitHub-flavored Markdown supportedHTML: Can include <ha-alert> tags if needed ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ’‘ Tips​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-tips","content":" Conventional Commits: Use proper commit format for best results: feat(scope): Add new feature Detailed description of what changed. Impact: Users can now do X and Y. Impact Section: Add Impact: in commit body for user-friendly descriptions Test Locally: Run ./scripts/release/generate-notes before creating release AI vs Template: GitHub Copilot CLI provides better descriptions, git-cliff is faster and more reliable CI/CD: Tag push triggers automatic release - no manual intervention needed ","version":"Next 🚧","tagName":"h2"},{"title":"Performance Optimization","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/performance","content":"","keywords":"","version":"Next 🚧"},{"title":"Performance Goals​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#performance-goals","content":" Target metrics: Coordinator update: <500ms (typical: 200-300ms)Sensor update: <10ms per sensorPeriod calculation: <100ms (typical: 20-50ms)Memory footprint: <10MB per homeAPI calls: <100 per day per home ","version":"Next 🚧","tagName":"h2"},{"title":"Profiling​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#profiling","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Timing Decorator​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#timing-decorator","content":" Use for performance-critical functions: import time import functools def timing(func): @functools.wraps(func) def wrapper(*args, **kwargs): start = time.perf_counter() result = func(*args, **kwargs) duration = time.perf_counter() - start _LOGGER.debug("%s took %.3fms", func.__name__, duration * 1000) return result return wrapper @timing def expensive_calculation(): # Your code here ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Profiling​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#memory-profiling","content":" import tracemalloc tracemalloc.start() # Run your code current, peak = tracemalloc.get_traced_memory() _LOGGER.info("Memory: current=%.2fMB peak=%.2fMB", current / 1024**2, peak / 1024**2) tracemalloc.stop() ","version":"Next 🚧","tagName":"h3"},{"title":"Async Profiling​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#async-profiling","content":" # Install aioprof uv pip install aioprof # Run with profiling python -m aioprof homeassistant -c config ","version":"Next 🚧","tagName":"h3"},{"title":"Optimization Patterns​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#optimization-patterns","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Caching​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#caching","content":" 1. Persistent Cache (API data): # Already implemented in coordinator/cache.py store = Store(hass, STORAGE_VERSION, STORAGE_KEY) data = await store.async_load() 2. Translation Cache (in-memory): # Already implemented in const.py _TRANSLATION_CACHE: dict[str, dict] = {} def get_translation(path: str, language: str) -> dict: cache_key = f"{path}_{language}" if cache_key not in _TRANSLATION_CACHE: _TRANSLATION_CACHE[cache_key] = load_translation(path, language) return _TRANSLATION_CACHE[cache_key] 3. Config Cache (invalidated on options change): class DataTransformer: def __init__(self): self._config_cache: dict | None = None def get_config(self) -> dict: if self._config_cache is None: self._config_cache = self._build_config() return self._config_cache def invalidate_config_cache(self): self._config_cache = None ","version":"Next 🚧","tagName":"h3"},{"title":"Lazy Loading​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#lazy-loading","content":" Load data only when needed: @property def extra_state_attributes(self) -> dict | None: """Return attributes.""" # Calculate only when accessed if self.entity_description.key == "complex_sensor": return self._calculate_complex_attributes() return None ","version":"Next 🚧","tagName":"h3"},{"title":"Bulk Operations​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#bulk-operations","content":" Process multiple items at once: # ❌ Slow - loop with individual operations for interval in intervals: enriched = enrich_single_interval(interval) results.append(enriched) # βœ… Fast - bulk processing results = enrich_intervals_bulk(intervals) ","version":"Next 🚧","tagName":"h3"},{"title":"Async Best Practices​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#async-best-practices","content":" 1. Concurrent API calls: # ❌ Sequential (slow) user_data = await fetch_user_data() price_data = await fetch_price_data() # βœ… Concurrent (fast) user_data, price_data = await asyncio.gather( fetch_user_data(), fetch_price_data() ) 2. Don't block event loop: # ❌ Blocking result = heavy_computation() # Blocks for seconds # βœ… Non-blocking result = await hass.async_add_executor_job(heavy_computation) ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Management​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#memory-management","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Avoid Memory Leaks​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#avoid-memory-leaks","content":" 1. Clear references: class Coordinator: async def async_shutdown(self): """Clean up resources.""" self._listeners.clear() self._data = None self._cache = None 2. Use weak references for callbacks: import weakref class Manager: def __init__(self): self._callbacks: list[weakref.ref] = [] def register(self, callback): self._callbacks.append(weakref.ref(callback)) ","version":"Next 🚧","tagName":"h3"},{"title":"Efficient Data Structures​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#efficient-data-structures","content":" Use appropriate types: # ❌ List for lookups (O(n)) if timestamp in timestamp_list: ... # βœ… Set for lookups (O(1)) if timestamp in timestamp_set: ... # ❌ List comprehension with filter results = [x for x in items if condition(x)] # βœ… Generator for large datasets results = (x for x in items if condition(x)) ","version":"Next 🚧","tagName":"h3"},{"title":"Coordinator Optimization​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#coordinator-optimization","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Minimize API Calls​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#minimize-api-calls","content":" Already implemented: Cache valid until midnightUser data cached for 24hOnly poll when tomorrow data expected Monitor API usage: _LOGGER.debug("API call: %s (cache_age=%s)", endpoint, cache_age) ","version":"Next 🚧","tagName":"h3"},{"title":"Smart Updates​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#smart-updates","content":" Only update when needed: async def _async_update_data(self) -> dict: """Fetch data from API.""" if self._is_cache_valid(): _LOGGER.debug("Using cached data") return self.data # Fetch new data return await self._fetch_data() ","version":"Next 🚧","tagName":"h3"},{"title":"Database Impact​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#database-impact","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"State Class Selection​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#state-class-selection","content":" Affects long-term statistics storage: # ❌ MEASUREMENT for prices (stores every change) state_class=SensorStateClass.MEASUREMENT # ~35K records/year # βœ… None for prices (no long-term stats) state_class=None # Only current state # βœ… TOTAL for counters only state_class=SensorStateClass.TOTAL # For cumulative values ","version":"Next 🚧","tagName":"h3"},{"title":"Attribute Size​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#attribute-size","content":" Keep attributes minimal: # ❌ Large nested structures (KB per update) attributes = { "all_intervals": [...], # 384 intervals "full_history": [...], # Days of data } # βœ… Essential data only (bytes per update) attributes = { "timestamp": "...", "rating_level": "...", "next_interval": "...", } ","version":"Next 🚧","tagName":"h3"},{"title":"Testing Performance​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#testing-performance","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Benchmark Tests​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#benchmark-tests","content":" import pytest import time @pytest.mark.benchmark def test_period_calculation_performance(coordinator): """Period calculation should complete in &lt;100ms.""" start = time.perf_counter() periods = calculate_periods(coordinator.data) duration = time.perf_counter() - start assert duration < 0.1, f"Too slow: {duration:.3f}s" ","version":"Next 🚧","tagName":"h3"},{"title":"Load Testing​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#load-testing","content":" @pytest.mark.integration async def test_multiple_homes_performance(hass): """Test with 10 homes.""" coordinators = [] for i in range(10): coordinator = create_coordinator(hass, home_id=f"home_{i}") await coordinator.async_refresh() coordinators.append(coordinator) # Verify memory usage # Verify update times ","version":"Next 🚧","tagName":"h3"},{"title":"Monitoring in Production​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#monitoring-in-production","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Log Performance Metrics​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#log-performance-metrics","content":" @timing async def _async_update_data(self) -> dict: """Fetch data with timing.""" result = await self._fetch_data() _LOGGER.info("Update completed in %.2fs", timing_duration) return result ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Tracking​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#memory-tracking","content":" import psutil import os process = psutil.Process(os.getpid()) memory_mb = process.memory_info().rss / 1024**2 _LOGGER.debug("Current memory usage: %.2f MB", memory_mb) πŸ’‘ Related: Caching Strategy - Cache layersArchitecture - System designDebugging - Profiling tools ","version":"Next 🚧","tagName":"h3"},{"title":"Testing","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/testing","content":"","keywords":"","version":"Next 🚧"},{"title":"Integration Validation​","type":1,"pageTitle":"Testing","url":"/hass.tibber_prices/developer/testing#integration-validation","content":" Before running tests or committing changes, validate the integration structure: # Run local validation (JSON syntax, Python syntax, required files) ./scripts/release/hassfest This lightweight script checks: βœ“ config_flow.py existsβœ“ manifest.json is valid JSON with required fieldsβœ“ Translation files have valid JSON syntaxβœ“ All Python files compile without syntax errors Note: Full hassfest validation runs in GitHub Actions on push. ","version":"Next 🚧","tagName":"h2"},{"title":"Running Tests​","type":1,"pageTitle":"Testing","url":"/hass.tibber_prices/developer/testing#running-tests","content":" # Run all tests pytest tests/ # Run specific test file pytest tests/test_coordinator.py # Run with coverage pytest --cov=custom_components.tibber_prices tests/ ","version":"Next 🚧","tagName":"h2"},{"title":"Manual Testing​","type":1,"pageTitle":"Testing","url":"/hass.tibber_prices/developer/testing#manual-testing","content":" # Start development environment ./scripts/develop Then test in Home Assistant UI: Configuration flowSensor states and attributesServicesTranslation strings ","version":"Next 🚧","tagName":"h2"},{"title":"Test Guidelines​","type":1,"pageTitle":"Testing","url":"/hass.tibber_prices/developer/testing#test-guidelines","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Development Setup","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/setup","content":"","keywords":"","version":"Next 🚧"},{"title":"Prerequisites​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#prerequisites","content":" VS Code with Dev Container supportDocker installed and runningGitHub account (for Tibber API token) ","version":"Next 🚧","tagName":"h2"},{"title":"Quick Setup​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#quick-setup","content":" # Clone the repository git clone https://github.com/jpawlowski/hass.tibber_prices.git cd hass.tibber_prices # Open in VS Code code . # Reopen in DevContainer (VS Code will prompt) # Or manually: Ctrl+Shift+P β†’ "Dev Containers: Reopen in Container" ","version":"Next 🚧","tagName":"h2"},{"title":"Development Environment​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#development-environment","content":" The DevContainer includes: Python 3.13 with .venv at /home/vscode/.venv/uv package manager (fast, modern Python tooling)Home Assistant development dependenciesRuff linter/formatterGit, GitHub CLI, Node.js, Rust toolchain ","version":"Next 🚧","tagName":"h2"},{"title":"Running the Integration​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#running-the-integration","content":" # Start Home Assistant in debug mode ./scripts/develop Visit http://localhost:8123 ","version":"Next 🚧","tagName":"h2"},{"title":"Making Changes​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#making-changes","content":" # Lint and format code ./scripts/lint # Check-only (CI mode) ./scripts/lint-check # Validate integration structure ./scripts/release/hassfest See AGENTS.md for detailed patterns and conventions. ","version":"Next 🚧","tagName":"h2"},{"title":"Period Calculation Theory","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/period-calculation-theory","content":"","keywords":"","version":"Next 🚧"},{"title":"Overview​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#overview","content":" This document explains the mathematical foundations and design decisions behind the period calculation algorithm, particularly focusing on the interaction between Flexibility (Flex), Minimum Distance from Average, and Relaxation Strategy. Target Audience: Developers maintaining or extending the period calculation logic. Related Files: coordinator/period_handlers/core.py - Main calculation entry pointcoordinator/period_handlers/level_filtering.py - Flex and distance filteringcoordinator/period_handlers/relaxation.py - Multi-phase relaxation strategycoordinator/periods.py - Period calculator orchestration ","version":"Next 🚧","tagName":"h2"},{"title":"Core Filtering Criteria​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#core-filtering-criteria","content":" Period detection uses three independent filters (all must pass): ","version":"Next 🚧","tagName":"h2"},{"title":"1. Flex Filter (Price Distance from Reference)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#1-flex-filter-price-distance-from-reference","content":" Purpose: Limit how far prices can deviate from the daily min/max. Logic: # Best Price: Price must be within flex% ABOVE daily minimum in_flex = price <= (daily_min + daily_min Γ— flex) # Peak Price: Price must be within flex% BELOW daily maximum in_flex = price >= (daily_max - daily_max Γ— flex) Example (Best Price): Daily Min: 10 ct/kWhFlex: 15%Acceptance Range: 0 - 11.5 ct/kWh (10 + 10Γ—0.15) ","version":"Next 🚧","tagName":"h3"},{"title":"2. Min Distance Filter (Distance from Daily Average)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#2-min-distance-filter-distance-from-daily-average","content":" Purpose: Ensure periods are significantly cheaper/more expensive than average, not just marginally better. Logic: # Best Price: Price must be at least min_distance% BELOW daily average meets_distance = price <= (daily_avg Γ— (1 - min_distance/100)) # Peak Price: Price must be at least min_distance% ABOVE daily average meets_distance = price >= (daily_avg Γ— (1 + min_distance/100)) Example (Best Price): Daily Avg: 15 ct/kWhMin Distance: 5%Acceptance Range: 0 - 14.25 ct/kWh (15 Γ— 0.95) ","version":"Next 🚧","tagName":"h3"},{"title":"3. Level Filter (Price Level Classification)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#3-level-filter-price-level-classification","content":" Purpose: Restrict periods to specific price classifications (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Logic: See level_filtering.py for gap tolerance details. Volatility Thresholds - Important Separation: The integration maintains two independent sets of volatility thresholds: Sensor Thresholds (user-configurable via CONF_VOLATILITY_*_THRESHOLD) Purpose: Display classification in sensor.tibber_home_volatility_*Default: LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%User can adjust in config flow optionsAffects: Sensor state/attributes only Period Filter Thresholds (internal, fixed) Purpose: Level filter criteria when using level="volatility_low" etc.Source: PRICE_LEVEL_THRESHOLDS in const.pyValues: Same as sensor defaults (LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%)User cannot adjust theseAffects: Period candidate selection Rationale for Separation: Sensor thresholds = Display preference ("I want to see LOW at 15% instead of 10%")Period thresholds = Algorithm configuration (tested defaults, complex interactions)Changing sensor display should not affect automation behaviorPrevents unexpected side effects when user adjusts sensor classificationPeriod calculation has many interacting filters (Flex, Distance, Level) - exposing all internals would be error-prone Implementation: # Sensor classification uses user config user_low_threshold = config_entry.options.get(CONF_VOLATILITY_LOW_THRESHOLD, 10) # Period filter uses fixed constants period_low_threshold = PRICE_LEVEL_THRESHOLDS["volatility_low"] # Always 10% Status: Intentional design decision (Nov 2025). No plans to expose period thresholds to users. ","version":"Next 🚧","tagName":"h3"},{"title":"The Flex Γ— Min_Distance Conflict​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#the-flex--min_distance-conflict","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Problem Statement​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#problem-statement","content":" These two filters can conflict when Flex is high! Scenario: Best Price with Flex=50%, Min_Distance=5%​ Given: Daily Min: 10 ct/kWhDaily Avg: 15 ct/kWhDaily Max: 20 ct/kWh Flex Filter (50%): Max accepted = 10 + (10 Γ— 0.50) = 15 ct/kWh Min Distance Filter (5%): Max accepted = 15 Γ— (1 - 0.05) = 14.25 ct/kWh Conflict: Interval at 14.8 ct/kWh: βœ… Flex: 14.8 ≀ 15 (PASS)❌ Distance: 14.8 > 14.25 (FAIL)Result: Rejected by Min_Distance even though Flex allows it! The Issue: At high Flex values, Min_Distance becomes the dominant filter and blocks intervals that Flex would permit. This defeats the purpose of having high Flex. ","version":"Next 🚧","tagName":"h3"},{"title":"Mathematical Analysis​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#mathematical-analysis","content":" Conflict condition for Best Price: daily_min Γ— (1 + flex) > daily_avg Γ— (1 - min_distance/100) Typical values: Min = 10, Avg = 15, Min_Distance = 5%Conflict occurs when: 10 Γ— (1 + flex) > 14.25Simplify: flex > 0.425 (42.5%) Below 42.5% Flex: Both filters contribute meaningfully.Above 42.5% Flex: Min_Distance dominates and blocks intervals. ","version":"Next 🚧","tagName":"h3"},{"title":"Solution: Dynamic Min_Distance Scaling​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#solution-dynamic-min_distance-scaling","content":" Approach: Reduce Min_Distance proportionally as Flex increases. Formula: if flex > 0.20: # 20% threshold flex_excess = flex - 0.20 scale_factor = max(0.25, 1.0 - (flex_excess Γ— 2.5)) adjusted_min_distance = original_min_distance Γ— scale_factor Scaling Table (Original Min_Distance = 5%): Flex\tScale Factor\tAdjusted Min_Distance\tRationale≀20%\t1.00\t5.0%\tStandard - both filters relevant 25%\t0.88\t4.4%\tSlight reduction 30%\t0.75\t3.75%\tModerate reduction 40%\t0.50\t2.5%\tStrong reduction - Flex dominates 50%\t0.25\t1.25%\tMinimal distance - Flex decides Why stop at 25% of original? Min_Distance ensures periods are significantly different from averageEven at 1.25%, prevents "flat days" (little price variation) from accepting every intervalMaintains semantic meaning: "this is a meaningful best/peak price period" Implementation: See level_filtering.py β†’ check_interval_criteria() Code Extract: # coordinator/period_handlers/level_filtering.py FLEX_SCALING_THRESHOLD = 0.20 # 20% - start adjusting min_distance SCALE_FACTOR_WARNING_THRESHOLD = 0.8 # Log when reduction > 20% def check_interval_criteria(price, criteria): # ... flex check ... # Dynamic min_distance scaling adjusted_min_distance = criteria.min_distance_from_avg flex_abs = abs(criteria.flex) if flex_abs > FLEX_SCALING_THRESHOLD: flex_excess = flex_abs - 0.20 # How much above 20% scale_factor = max(0.25, 1.0 - (flex_excess Γ— 2.5)) adjusted_min_distance = criteria.min_distance_from_avg Γ— scale_factor if scale_factor < SCALE_FACTOR_WARNING_THRESHOLD: _LOGGER.debug( "High flex %.1f%% detected: Reducing min_distance %.1f%% β†’ %.1f%%", flex_abs Γ— 100, criteria.min_distance_from_avg, adjusted_min_distance, ) # Apply adjusted min_distance in distance check meets_min_distance = ( price <= avg_price Γ— (1 - adjusted_min_distance/100) # Best Price # OR price >= avg_price Γ— (1 + adjusted_min_distance/100) # Peak Price ) Why Linear Scaling? Simple and predictableNo abrupt behavior changesEasy to reason about for users and developersAlternative considered: Exponential scaling (rejected as too aggressive) Why 25% Minimum? Below this, min_distance loses semantic meaningEven on flat days, some quality filter neededPrevents "every interval is a period" scenarioMaintains user expectation: "best/peak price means notably different" ","version":"Next 🚧","tagName":"h3"},{"title":"Flex Limits and Safety Caps​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#flex-limits-and-safety-caps","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Implementation Constants​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#implementation-constants","content":" Defined in coordinator/period_handlers/core.py: MAX_SAFE_FLEX = 0.50 # 50% - hard cap: above this, period detection becomes unreliable MAX_OUTLIER_FLEX = 0.25 # 25% - cap for outlier filtering: above this, spike detection too permissive Defined in const.py: DEFAULT_BEST_PRICE_FLEX = 15 # 15% base - optimal for relaxation mode (default enabled) DEFAULT_PEAK_PRICE_FLEX = -20 # 20% base (negative for peak detection) DEFAULT_RELAXATION_ATTEMPTS_BEST = 11 # 11 steps: 15% β†’ 48% (3% increment per step) DEFAULT_RELAXATION_ATTEMPTS_PEAK = 11 # 11 steps: 20% β†’ 50% (3% increment per step) DEFAULT_BEST_PRICE_MIN_PERIOD_LENGTH = 60 # 60 minutes DEFAULT_PEAK_PRICE_MIN_PERIOD_LENGTH = 30 # 30 minutes DEFAULT_BEST_PRICE_MIN_DISTANCE_FROM_AVG = 5 # 5% minimum distance DEFAULT_PEAK_PRICE_MIN_DISTANCE_FROM_AVG = 5 # 5% minimum distance ","version":"Next 🚧","tagName":"h3"},{"title":"Rationale for Asymmetric Defaults​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#rationale-for-asymmetric-defaults","content":" Why Best Price β‰  Peak Price? The different defaults reflect fundamentally different use cases: Best Price: Optimization Focus​ Goal: Find practical time windows for running appliances Constraints: Appliances need time to complete cycles (dishwasher: 2-3h, EV charging: 4-8h)Short periods are impractical (not worth automation overhead)User wants genuinely cheap times, not just "slightly below average" Defaults: 60 min minimum - Ensures period is long enough for meaningful use15% flex - Stricter selection, focuses on truly cheap timesReasoning: Better to find fewer, higher-quality periods than many mediocre ones User behavior: Automations trigger actions (turn on devices)Wrong automation = wasted energy/moneyPreference: Conservative (miss some savings) over aggressive (false positives) Peak Price: Warning Focus​ Goal: Alert users to expensive periods for consumption reduction Constraints: Brief price spikes still matter (even 15-30 min is worth avoiding)Early warning more valuable than perfect accuracyUser can manually decide whether to react Defaults: 30 min minimum - Catches shorter expensive spikes20% flex - More permissive, earlier detectionReasoning: Better to warn early (even if not peak) than miss expensive periods User behavior: Notifications/alerts (informational)Wrong alert = minor inconvenience, not costPreference: Sensitive (catch more) over specific (catch only extremes) Mathematical Justification​ Peak Price Volatility: Price curves tend to have: Sharp spikes during peak hours (morning/evening)Shorter duration at maximum (1-2 hours typical)Higher variance in peak times than cheap times Example day: Cheap period: 02:00-07:00 (5 hours at 10-12 ct) ← Gradual, stable Expensive period: 17:00-18:30 (1.5 hours at 35-40 ct) ← Sharp, brief Implication: Stricter flex on peak (15%) might miss real expensive periods (too brief)Longer min_length (60 min) might exclude legitimate spikesSolution: More flexible thresholds for peak detection Design Alternatives Considered​ Option 1: Symmetric defaults (rejected) Both 60 min, both 15% flexProblem: Misses short but expensive spikesUser feedback: "Why didn't I get warned about the 30-min price spike?" Option 2: Same defaults, let users figure it out (rejected) No guidance on best practicesUsers would need to experiment to find good valuesMost users stick with defaults, so defaults matter Option 3: Current approach (adopted) All values user-configurable via config flow optionsDifferent installation defaults for Best Price vs. Peak PriceDefaults reflect recommended practices for each use caseUsers who need different behavior can adjustMost users benefit from sensible defaults without configuration ","version":"Next 🚧","tagName":"h3"},{"title":"Flex Limits and Safety Caps​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#flex-limits-and-safety-caps-1","content":" 1. Absolute Maximum: 50% (MAX_SAFE_FLEX)​ Enforcement: core.py caps abs(flex) at 0.50 (50%) Rationale: Above 50%, period detection becomes unreliableBest Price: Almost entire day qualifies (Min + 50% typically covers 60-80% of intervals)Peak Price: Similar issue with Max - 50%Result: Either massive periods (entire day) or no periods (min_length not met) Warning Message: Flex XX% exceeds maximum safe value! Capping at 50%. Recommendation: Use 15-20% with relaxation enabled, or 25-35% without relaxation. 2. Outlier Filtering Maximum: 25%​ Enforcement: core.py caps outlier filtering flex at 0.25 (25%) Rationale: Outlier filtering uses Flex to determine "stable context" thresholdAt > 25% Flex, almost any price swing is considered "stable"Result: Legitimate price shifts aren't smoothed, breaking period formation Note: User's Flex still applies to period criteria (in_flex check), only outlier filtering is capped. ","version":"Next 🚧","tagName":"h2"},{"title":"Recommended Ranges (User Guidance)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#recommended-ranges-user-guidance","content":" With Relaxation Enabled (Recommended)​ Optimal: 10-20% Relaxation increases Flex incrementally: 15% β†’ 18% β†’ 21% β†’ ...Low baseline ensures relaxation has room to work Warning Threshold: > 25% INFO log: "Base flex is on the high side" High Warning: > 30% WARNING log: "Base flex is very high for relaxation mode!"Recommendation: Lower to 15-20% Without Relaxation​ Optimal: 20-35% No automatic adjustment, must be sufficient from startHigher baseline acceptable since no relaxation fallback Maximum Useful: ~50% Above this, period detection degrades (see Hard Limits) ","version":"Next 🚧","tagName":"h3"},{"title":"Relaxation Strategy​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#relaxation-strategy","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Purpose​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#purpose","content":" Ensure minimum periods per day are found even when baseline filters are too strict. Use Case: User configures strict filters (low Flex, restrictive Level) but wants guarantee of N periods/day for automation reliability. ","version":"Next 🚧","tagName":"h3"},{"title":"Multi-Phase Approach​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#multi-phase-approach","content":" Each day processed independently: Calculate baseline periods with user's configIf insufficient periods found, enter relaxation loopTry progressively relaxed filter combinationsStop when target reached or all attempts exhausted ","version":"Next 🚧","tagName":"h3"},{"title":"Relaxation Increments​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#relaxation-increments","content":" Current Implementation (November 2025): File: coordinator/period_handlers/relaxation.py # Hard-coded 3% increment per step (reliability over configurability) flex_increment = 0.03 # 3% per step base_flex = abs(config.flex) # Generate flex levels for attempt in range(max_relaxation_attempts): flex_level = base_flex + (attempt Γ— flex_increment) # Try flex_level with both filter combinations Constants: FLEX_WARNING_THRESHOLD_RELAXATION = 0.25 # 25% - INFO: suggest lowering to 15-20% FLEX_HIGH_THRESHOLD_RELAXATION = 0.30 # 30% - WARNING: very high for relaxation mode MAX_FLEX_HARD_LIMIT = 0.50 # 50% - absolute maximum (enforced in core.py) Design Decisions: Why 3% fixed increment? Predictable escalation path (15% β†’ 18% β†’ 21% β†’ ...)Independent of base flex (works consistently)11 attempts covers full useful range (15% β†’ 48%)Balance: Not too slow (2%), not too fast (5%) Why hard-coded, not configurable? Prevents user misconfigurationSimplifies mental model (fewer knobs to turn)Reliable behavior across all configurationsIf needed, user adjusts max_relaxation_attempts (fewer/more steps) Why warn at 25% base flex? At 25% base, first relaxation step reaches 28%Above 30%, entering diminishing returns territoryUser likely doesn't need relaxation with such high base flexShould either: (a) lower base flex, or (b) disable relaxation Historical Context (Pre-November 2025): The algorithm previously used percentage-based increments that scaled with base flex: increment = base_flex Γ— (step_pct / 100) # REMOVED This caused exponential escalation with high base flex values (e.g., 40% β†’ 50% β†’ 60% β†’ 70% in just 6 steps), making behavior unpredictable. The fixed 3% increment solves this by providing consistent, controlled escalation regardless of starting point. Warning Messages: if base_flex >= FLEX_HIGH_THRESHOLD_RELAXATION: # 30% _LOGGER.warning( "Base flex %.1f%% is very high for relaxation mode! " "Consider lowering to 15-20%% or disabling relaxation.", base_flex Γ— 100, ) elif base_flex >= FLEX_WARNING_THRESHOLD_RELAXATION: # 25% _LOGGER.info( "Base flex %.1f%% is on the high side. " "Consider 15-20%% for optimal relaxation effectiveness.", base_flex Γ— 100, ) ","version":"Next 🚧","tagName":"h3"},{"title":"Filter Combination Strategy​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#filter-combination-strategy","content":" Per Flex level, try in order: Original Level filterLevel filter = "any" (disabled) Early Exit: Stop immediately when target reached (don't try unnecessary combinations) Example Flow (target=2 periods/day): Day 2025-11-19: 1. Baseline flex=15%: Found 1 period (need 2) 2. Flex=18% + level=cheap: Found 1 period 3. Flex=18% + level=any: Found 2 periods β†’ SUCCESS (stop) ","version":"Next 🚧","tagName":"h3"},{"title":"Implementation Notes​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#implementation-notes","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Key Files and Functions​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#key-files-and-functions","content":" Period Calculation Entry Point: # coordinator/period_handlers/core.py def calculate_periods( all_prices: list[dict], config: PeriodConfig, time: TimeService, ) -> dict[str, Any] Flex + Distance Filtering: # coordinator/period_handlers/level_filtering.py def check_interval_criteria( price: float, criteria: IntervalCriteria, ) -> tuple[bool, bool] # (in_flex, meets_min_distance) Relaxation Orchestration: # coordinator/period_handlers/relaxation.py def calculate_periods_with_relaxation(...) -> tuple[dict, dict] def relax_single_day(...) -> tuple[dict, dict] Outlier Filtering Implementation​ File: coordinator/period_handlers/outlier_filtering.py Purpose: Detect and smooth isolated price spikes before period identification to prevent artificial fragmentation. Algorithm Details: Linear Regression Prediction: Uses surrounding intervals to predict expected priceWindow size: 3+ intervals (MIN_CONTEXT_SIZE)Calculates trend slope and standard deviationFormula: predicted = mean + slope Γ— (position - center) Confidence Intervals: 95% confidence level (2 standard deviations)Tolerance = 2.0 Γ— std_dev (CONFIDENCE_LEVEL constant)Outlier if: |actual - predicted| > toleranceAccounts for natural price volatility in context window Symmetry Check: Rejects asymmetric outliers (threshold: 1.5 std dev)Preserves legitimate price shifts (morning/evening peaks)Algorithm: residual = abs(actual - predicted) symmetry_threshold = 1.5 Γ— std_dev if residual > tolerance: # Check if spike is symmetric in context context_residuals = [abs(p - pred) for p, pred in context] avg_context_residual = mean(context_residuals) if residual > symmetry_threshold Γ— avg_context_residual: # Asymmetric spike β†’ smooth it else: # Symmetric (part of trend) β†’ keep it Enhanced Zigzag Detection: Detects spike clusters via relative volatilityThreshold: 2.0Γ— local volatility (RELATIVE_VOLATILITY_THRESHOLD)Single-pass algorithm (no iteration needed)Catches patterns like: 18, 35, 19, 34, 18 (alternating spikes) Constants: # coordinator/period_handlers/outlier_filtering.py CONFIDENCE_LEVEL = 2.0 # 95% confidence (2 std deviations) SYMMETRY_THRESHOLD = 1.5 # Asymmetry detection threshold RELATIVE_VOLATILITY_THRESHOLD = 2.0 # Zigzag spike detection MIN_CONTEXT_SIZE = 3 # Minimum intervals for regression Data Integrity: Original prices stored in _original_price fieldAll statistics (daily min/max/avg) use original pricesSmoothing only affects period formation logicSmart counting: Only counts smoothing that changed period outcome Performance: Single pass through price dataO(n) complexity with small context windowNo iterative refinement neededTypical processing time: <1ms for 96 intervals Example Debug Output: DEBUG: [2025-11-11T14:30:00+01:00] Outlier detected: 35.2 ct DEBUG: Context: 18.5, 19.1, 19.3, 19.8, 20.2 ct DEBUG: Residual: 14.5 ct > tolerance: 4.8 ct (2Γ—2.4 std dev) DEBUG: Trend slope: 0.3 ct/interval (gradual increase) DEBUG: Predicted: 20.7 ct (linear regression) DEBUG: Smoothed to: 20.7 ct DEBUG: Asymmetry ratio: 3.2 (>1.5 threshold) β†’ confirmed outlier Why This Approach? Linear regression over moving average: Accounts for price trends (morning ramp-up, evening decline)Moving average can't predict direction, only levelBetter accuracy on non-stationary price curves Symmetry check over fixed threshold: Prevents false positives on legitimate price shiftsAdapts to local volatility patternsPreserves user expectation: "expensive during peak hours" Single-pass over iterative: Predictable behavior (no convergence issues)Fast and deterministicEasier to debug and reason about Alternative Approaches Considered: Median filtering - Rejected: Too aggressive, removes legitimate peaksMoving average - Rejected: Can't handle trendsIQR (Interquartile Range) - Rejected: Assumes normal distributionRANSAC - Rejected: Overkill for 1D data, slow ","version":"Next 🚧","tagName":"h3"},{"title":"Debugging Tips​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#debugging-tips","content":" Enable DEBUG logging: # configuration.yaml logger: default: info logs: custom_components.tibber_prices.coordinator.period_handlers: debug Key log messages to watch: "Filter statistics: X intervals checked" - Shows how many intervals filtered by each criterion"After build_periods: X raw periods found" - Periods before min_length filtering"Day X: Success with flex=Y%" - Relaxation succeeded"High flex X% detected: Reducing min_distance Y% β†’ Z%" - Distance scaling active ","version":"Next 🚧","tagName":"h2"},{"title":"Common Configuration Pitfalls​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#common-configuration-pitfalls","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"❌ Anti-Pattern 1: High Flex with Relaxation​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#-anti-pattern-1-high-flex-with-relaxation","content":" Configuration: best_price_flex: 40 enable_relaxation_best: true Problem: Base Flex 40% already very permissiveRelaxation increments further (43%, 46%, 49%, ...)Quickly approaches 50% cap with diminishing returns Solution: best_price_flex: 15 # Let relaxation increase it enable_relaxation_best: true ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Anti-Pattern 2: Zero Min_Distance​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#-anti-pattern-2-zero-min_distance","content":" Configuration: best_price_min_distance_from_avg: 0 Problem: "Flat days" (little price variation) accept all intervalsPeriods lose semantic meaning ("significantly cheap")May create periods during barely-below-average times Solution: best_price_min_distance_from_avg: 5 # Use default 5% ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Anti-Pattern 3: Conflicting Flex + Distance​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#-anti-pattern-3-conflicting-flex--distance","content":" Configuration: best_price_flex: 45 best_price_min_distance_from_avg: 10 Problem: Distance filter dominates, making Flex irrelevantDynamic scaling helps but still suboptimal Solution: best_price_flex: 20 best_price_min_distance_from_avg: 5 ","version":"Next 🚧","tagName":"h3"},{"title":"Testing Scenarios​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#testing-scenarios","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Scenario 1: Normal Day (Good Variation)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-1-normal-day-good-variation","content":" Price Range: 10 - 20 ct/kWh (100% variation)Average: 15 ct/kWh Expected Behavior: Flex 15%: Should find 2-4 clear best price periodsFlex 30%: Should find 4-8 periods (more lenient)Min_Distance 5%: Effective throughout range Debug Checks: DEBUG: Filter statistics: 96 intervals checked DEBUG: Filtered by FLEX: 12/96 (12.5%) ← Low percentage = good variation DEBUG: Filtered by MIN_DISTANCE: 8/96 (8.3%) ← Both filters active DEBUG: After build_periods: 3 raw periods found ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 2: Flat Day (Poor Variation)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-2-flat-day-poor-variation","content":" Price Range: 14 - 16 ct/kWh (14% variation)Average: 15 ct/kWh Expected Behavior: Flex 15%: May find 1-2 small periods (or zero if no clear winners)Min_Distance 5%: Critical here - ensures only truly cheaper intervals qualifyWithout Min_Distance: Would accept almost entire day as "best price" Debug Checks: DEBUG: Filter statistics: 96 intervals checked DEBUG: Filtered by FLEX: 45/96 (46.9%) ← High percentage = poor variation DEBUG: Filtered by MIN_DISTANCE: 52/96 (54.2%) ← Distance filter dominant DEBUG: After build_periods: 1 raw period found DEBUG: Day 2025-11-11: Baseline insufficient (1 < 2), starting relaxation ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 3: Extreme Day (High Volatility)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-3-extreme-day-high-volatility","content":" Price Range: 5 - 40 ct/kWh (700% variation)Average: 18 ct/kWh Expected Behavior: Flex 15%: Finds multiple very cheap periods (5-6 ct)Outlier filtering: May smooth isolated spikes (30-40 ct)Distance filter: Less impactful (clear separation between cheap/expensive) Debug Checks: DEBUG: Outlier detected: 38.5 ct (threshold: 4.2 ct) DEBUG: Smoothed to: 20.1 ct (trend prediction) DEBUG: Filter statistics: 96 intervals checked DEBUG: Filtered by FLEX: 8/96 (8.3%) ← Very selective DEBUG: Filtered by MIN_DISTANCE: 4/96 (4.2%) ← Flex dominates DEBUG: After build_periods: 4 raw periods found ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 4: Relaxation Success​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-4-relaxation-success","content":" Initial State: Baseline finds 1 period, target is 2 Expected Flow: INFO: Calculating BEST PRICE periods: relaxation=ON, target=2/day, flex=15.0% DEBUG: Day 2025-11-11: Baseline found 1 period (need 2) DEBUG: Phase 1: flex 18.0% + original filters DEBUG: Found 1 period (insufficient) DEBUG: Phase 2: flex 18.0% + level=any DEBUG: Found 2 periods β†’ SUCCESS INFO: Day 2025-11-11: Success after 1 relaxation phase (2 periods) ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 5: Relaxation Exhausted​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-5-relaxation-exhausted","content":" Initial State: Strict filters, very flat day Expected Flow: INFO: Calculating BEST PRICE periods: relaxation=ON, target=2/day, flex=15.0% DEBUG: Day 2025-11-11: Baseline found 0 periods (need 2) DEBUG: Phase 1-11: flex 15%β†’48%, all filter combinations tried WARNING: Day 2025-11-11: All relaxation phases exhausted, still only 1 period found INFO: Period calculation completed: 1/2 days reached target ","version":"Next 🚧","tagName":"h3"},{"title":"Debugging Checklist​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#debugging-checklist","content":" When debugging period calculation issues: Check Filter Statistics Which filter blocks most intervals? (flex, distance, or level)High flex filtering (>30%) = Need more flexibility or relaxationHigh distance filtering (>50%) = Min_distance too strict or flat dayHigh level filtering = Level filter too restrictive Check Relaxation Behavior Did relaxation activate? Check for "Baseline insufficient" messageWhich phase succeeded? Early success (phase 1-3) = good configLate success (phase 8-11) = Consider adjusting base configExhausted all phases = Unrealistic target for this day's price curve Check Flex Warnings INFO at 25% base flex = On the high sideWARNING at 30% base flex = Too high for relaxationIf seeing these: Lower base flex to 15-20% Check Min_Distance Scaling Debug messages show "High flex X% detected: Reducing min_distance Y% β†’ Z%"If scale factor <0.8 (20% reduction): High flex is activeIf periods still not found: Filters conflict even with scaling Check Outlier Filtering Look for "Outlier detected" messagesCheck period_interval_smoothed_count attributeIf no smoothing but periods fragmented: Not isolated spikes, but legitimate price levels ","version":"Next 🚧","tagName":"h3"},{"title":"Future Enhancements​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#future-enhancements","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Potential Improvements​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#potential-improvements","content":" Adaptive Flex Calculation: Auto-adjust Flex based on daily price variationHigh variation days: Lower Flex neededLow variation days: Higher Flex needed Machine Learning Approach: Learn optimal Flex/Distance from user feedbackClassify days by pattern (normal/flat/volatile/bimodal)Apply pattern-specific defaults Multi-Objective Optimization: Balance period count vs. qualityConsider period duration vs. price levelOptimize for user's stated use case (EV charging vs. heat pump) ","version":"Next 🚧","tagName":"h3"},{"title":"Known Limitations​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#known-limitations","content":" Fixed increment step: 3% cap may be too aggressive for very low base FlexLinear distance scaling: Could benefit from non-linear curveNo consideration of temporal distribution: May find all periods in one part of day ","version":"Next 🚧","tagName":"h3"},{"title":"Future Enhancements​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#future-enhancements-1","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Potential Improvements​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#potential-improvements-1","content":" 1. Adaptive Flex Calculation (Not Yet Implemented)​ Concept: Auto-adjust Flex based on daily price variation Algorithm: # Pseudo-code for adaptive flex variation = (daily_max - daily_min) / daily_avg if variation < 0.15: # Flat day (< 15% variation) adaptive_flex = 0.30 # Need higher flex elif variation > 0.50: # High volatility (> 50% variation) adaptive_flex = 0.10 # Lower flex sufficient else: # Normal day adaptive_flex = 0.15 # Standard flex Benefits: Eliminates need for relaxation on most daysSelf-adjusting to market conditionsBetter user experience (less configuration needed) Challenges: Harder to predict behavior (less transparent)May conflict with user's mental modelNeeds extensive testing across different markets Status: Considered but not implemented (prefer explicit relaxation) 2. Machine Learning Approach (Future Work)​ Concept: Learn optimal Flex/Distance from user feedback Approach: Track which periods user actually uses (automation triggers)Classify days by pattern (normal/flat/volatile/bimodal)Apply pattern-specific defaultsLearn per-user preferences over time Benefits: Personalized to user's actual behaviorAdapts to local market patternsCould discover non-obvious patterns Challenges: Requires user feedback mechanism (not implemented)Privacy concerns (storing usage patterns)Complexity for users to understand "why this period?"Cold start problem (new users have no history) Status: Theoretical only (no implementation planned) 3. Multi-Objective Optimization (Research Idea)​ Concept: Balance multiple goals simultaneously Goals: Period count vs. quality (cheap vs. very cheap)Period duration vs. price level (long mediocre vs. short excellent)Temporal distribution (spread throughout day vs. clustered)User's stated use case (EV charging vs. heat pump vs. dishwasher) Algorithm: Pareto optimization (find trade-off frontier)User chooses point on frontier via preferencesGenetic algorithm or simulated annealing Benefits: More sophisticated period selectionBetter match to user's actual needsCould handle complex appliance requirements Challenges: Much more complex to implementHarder to explain to usersComputational cost (may need caching)Configuration explosion (too many knobs) Status: Research idea only (not planned) ","version":"Next 🚧","tagName":"h3"},{"title":"Known Limitations​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#known-limitations-1","content":" 1. Fixed Increment Step​ Current: 3% cap may be too aggressive for very low base Flex Example: Base flex 5% + 3% increment = 8% (60% increase!)Base flex 15% + 3% increment = 18% (20% increase) Possible Solution: Percentage-based increment: increment = max(base_flex Γ— 0.20, 0.03)This gives: 5% β†’ 6% (20%), 15% β†’ 18% (20%), 40% β†’ 43% (7.5%) Why Not Implemented: Very low base flex (<10%) unusualUsers with strict requirements likely disable relaxationSimplicity preferred over edge case optimization 2. Linear Distance Scaling​ Current: Linear scaling may be too aggressive/conservative Alternative: Non-linear curve # Example: Exponential scaling scale_factor = 0.25 + 0.75 Γ— exp(-5 Γ— (flex - 0.20)) # Or: Sigmoid scaling scale_factor = 0.25 + 0.75 / (1 + exp(10 Γ— (flex - 0.35))) Why Not Implemented: Linear is easier to reason aboutNo evidence that non-linear is betterWould need extensive testing 3. No Temporal Distribution Consideration​ Issue: May find all periods in one part of day Example: All 3 "best price" periods between 02:00-08:00No periods in evening (when user might want to run appliances) Possible Solution: Add "spread" parameter (prefer distributed periods)Weight periods by time-of-day preferencesConsider user's typical usage patterns Why Not Implemented: Adds complexityUsers can work around with multiple automationsDifferent users have different needs (no one-size-fits-all) 4. Period Boundary Handling​ Current Behavior: Periods can cross midnight naturally Design Principle: Each interval is evaluated using its own day's reference prices (daily min/max/avg). Implementation: # In period_building.py build_periods(): for price_data in all_prices: starts_at = time.get_interval_time(price_data) date_key = starts_at.date() # CRITICAL: Use interval's own day, not period_start_date ref_date = date_key criteria = TibberPricesIntervalCriteria( ref_price=ref_prices[ref_date], # Interval's day avg_price=avg_prices[ref_date], # Interval's day flex=flex, min_distance_from_avg=min_distance_from_avg, reverse_sort=reverse_sort, ) Why Per-Day Evaluation? Periods can cross midnight (e.g., 23:45 β†’ 01:00). Each day has independent reference prices calculated from its 96 intervals. Example showing the problem with period-start-day approach: Day 1 (2025-11-21): Cheap day daily_min = 10 ct, daily_avg = 20 ct, flex = 15% Criteria: price ≀ 11.5 ct (10 + 10Γ—0.15) Day 2 (2025-11-22): Expensive day daily_min = 20 ct, daily_avg = 30 ct, flex = 15% Criteria: price ≀ 23 ct (20 + 20Γ—0.15) Period crossing midnight: 23:45 Day 1 β†’ 00:15 Day 2 23:45 (Day 1): 11 ct β†’ βœ… Passes (11 ≀ 11.5) 00:00 (Day 2): 21 ct β†’ Should this pass? ❌ WRONG (using period start day): 00:00 evaluated against Day 1's 11.5 ct threshold 21 ct > 11.5 ct β†’ Fails But 21ct IS cheap on Day 2 (min=20ct)! βœ… CORRECT (using interval's own day): 00:00 evaluated against Day 2's 23 ct threshold 21 ct ≀ 23 ct β†’ Passes Correctly identified as cheap relative to Day 2 Trade-off: Periods May Break at Midnight When days differ significantly, period can split: Day 1: Min=10ct, Avg=20ct, 23:45=11ct β†’ βœ… Cheap (relative to Day 1) Day 2: Min=25ct, Avg=35ct, 00:00=21ct β†’ ❌ Expensive (relative to Day 2) Result: Period stops at 23:45, new period starts later This is mathematically correct - 21ct is genuinely expensive on a day where minimum is 25ct. Market Reality Explains Price Jumps: Day-ahead electricity markets (EPEX SPOT) set prices at 12:00 CET for all next-day hours: Late intervals (23:45): Priced ~36h before delivery β†’ high forecast uncertainty β†’ risk premiumEarly intervals (00:00): Priced ~12h before delivery β†’ better forecasts β†’ lower risk buffer This explains why absolute prices jump at midnight despite minimal demand changes. User-Facing Solution (Nov 2025): Added per-period day volatility attributes to detect when classification changes are meaningful: day_volatility_%: Percentage spread (span/avg Γ— 100)day_price_min, day_price_max, day_price_span: Daily price range (ct/ΓΈre) Automations can check volatility before acting: condition: - condition: template value_template: > {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }} Low volatility (< 15%) means classification changes are less economically significant. Alternative Approaches Rejected: Use period start day for all intervals Problem: Mathematically incorrect - lends cheap day's criteria to expensive dayRejected: Violates relative evaluation principle Adjust flex/distance at midnight Problem: Complex, unpredictable, hides market realityRejected: Users should understand price context, not have it hidden Split at midnight always Problem: Artificially fragments natural periodsRejected: Worse user experience Use next day's reference after midnight Problem: Period criteria inconsistent across durationRejected: Confusing and unpredictable Status: Per-day evaluation is intentional design prioritizing mathematical correctness. See Also: User documentation: docs/user/period-calculation.md β†’ "Midnight Price Classification Changes"Implementation: coordinator/period_handlers/period_building.py (line ~126: ref_date = date_key)Attributes: coordinator/period_handlers/period_statistics.py (day volatility calculation) ","version":"Next 🚧","tagName":"h3"},{"title":"References​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#references","content":" User Documentation: Period CalculationArchitecture OverviewCaching StrategyAGENTS.md - AI assistant memory (implementation patterns) ","version":"Next 🚧","tagName":"h2"},{"title":"Changelog​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#changelog","content":" 2025-11-19: Initial documentation of Flex/Distance interaction and Relaxation strategy fixes ","version":"Next 🚧","tagName":"h2"},{"title":"Timer Architecture","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/timer-architecture","content":"","keywords":"","version":"Next 🚧"},{"title":"Overview​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#overview","content":" The integration uses three independent timer mechanisms for different purposes: Timer\tType\tInterval\tPurpose\tTrigger MethodTimer #1\tHA built-in\t15 minutes\tAPI data updates\tDataUpdateCoordinator Timer #2\tCustom\t:00, :15, :30, :45\tEntity state refresh\tasync_track_utc_time_change() Timer #3\tCustom\tEvery minute\tCountdown/progress\tasync_track_utc_time_change() Key principle: Timer #1 (HA) controls data fetching, Timer #2 controls entity updates, Timer #3 controls timing displays. ","version":"Next 🚧","tagName":"h2"},{"title":"Timer #1: DataUpdateCoordinator (HA Built-in)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-1-dataupdatecoordinator-ha-built-in","content":" File: coordinator/core.py β†’ TibberPricesDataUpdateCoordinator Type: Home Assistant's built-in DataUpdateCoordinator with UPDATE_INTERVAL = 15 minutes What it is: HA provides this timer system automatically when you inherit from DataUpdateCoordinatorTriggers _async_update_data() method every 15 minutesNot synchronized to clock boundaries (each installation has different start time) Purpose: Check if fresh API data is needed, fetch if necessary What it does: async def _async_update_data(self) -> TibberPricesData: # Step 1: Check midnight turnover FIRST (prevents race with Timer #2) if self._check_midnight_turnover_needed(dt_util.now()): await self._perform_midnight_data_rotation(dt_util.now()) # Notify ALL entities after midnight turnover return self.data # Early return # Step 2: Check if we need tomorrow data (after 13:00) if self._should_update_price_data() == "tomorrow_check": await self._fetch_and_update_data() # Fetch from API return self.data # Step 3: Use cached data (fast path - most common) return self.data Load Distribution: Each HA installation starts Timer #1 at different times β†’ natural distributionTomorrow data check adds 0-30s random delay β†’ prevents "thundering herd" on Tibber APIResult: API load spread over ~30 minutes instead of all at once Midnight Coordination: Atomic check: _check_midnight_turnover_needed(now) compares dates only (no side effects)If midnight turnover needed β†’ performs it and returns earlyTimer #2 will see turnover already done and skip gracefully Why we use HA's timer: Automatic restart after HA restartBuilt-in retry logic for temporary failuresStandard HA integration patternHandles backpressure (won't queue up if previous update still running) ","version":"Next 🚧","tagName":"h2"},{"title":"Timer #2: Quarter-Hour Refresh (Custom)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-2-quarter-hour-refresh-custom","content":" File: coordinator/listeners.py β†’ ListenerManager.schedule_quarter_hour_refresh() Type: Custom timer using async_track_utc_time_change(minute=[0, 15, 30, 45], second=0) Purpose: Update time-sensitive entity states at interval boundaries without waiting for API poll Problem it solves: Timer #1 runs every 15 minutes but NOT synchronized to clock (:03, :18, :33, :48)Current price changes at :00, :15, :30, :45 β†’ entities would show stale data for up to 15 minutesExample: 14:00 new price, but Timer #1 ran at 13:58 β†’ next update at 14:13 β†’ users see old price until 14:13 What it does: async def _handle_quarter_hour_refresh(self, now: datetime) -> None: # Step 1: Check midnight turnover (coordinates with Timer #1) if self._check_midnight_turnover_needed(now): # Timer #1 might have already done this β†’ atomic check handles it await self._perform_midnight_data_rotation(now) # Notify ALL entities after midnight turnover return # Step 2: Normal quarter-hour refresh (most common path) # Only notify time-sensitive entities (current_interval_price, etc.) self._listener_manager.async_update_time_sensitive_listeners() Smart Boundary Tolerance: Uses round_to_nearest_quarter_hour() with Β±2 second toleranceHA may schedule timer at 14:59:58 β†’ rounds to 15:00:00 (shows new interval)HA restart at 14:59:30 β†’ stays at 14:45:00 (shows current interval)See Architecture for details Absolute Time Scheduling: async_track_utc_time_change() plans for all future boundaries (15:00, 15:15, 15:30, ...)NOT relative delays ("in 15 minutes")If triggered at 14:59:58 β†’ next trigger is 15:15:00, NOT 15:00:00 (prevents double updates) Which entities listen: All sensors that depend on "current interval" (e.g., current_interval_price, next_interval_price)Binary sensors that check "is now in period?" (e.g., best_price_period_active)~50-60 entities out of 120+ total Why custom timer: HA's built-in coordinator doesn't support exact boundary timingWe need absolute time triggers, not periodic intervalsAllows fast entity updates without expensive data transformation ","version":"Next 🚧","tagName":"h2"},{"title":"Timer #3: Minute Refresh (Custom)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-3-minute-refresh-custom","content":" File: coordinator/listeners.py β†’ ListenerManager.schedule_minute_refresh() Type: Custom timer using async_track_utc_time_change(second=0) (every minute) Purpose: Update countdown and progress sensors for smooth UX What it does: async def _handle_minute_refresh(self, now: datetime) -> None: # Only notify minute-update entities # No data fetching, no transformation, no midnight handling self._listener_manager.async_update_minute_listeners() Which entities listen: best_price_remaining_minutes - Countdown timerpeak_price_remaining_minutes - Countdown timerbest_price_progress - Progress bar (0-100%)peak_price_progress - Progress bar (0-100%)~10 entities total Why custom timer: Users want smooth countdowns (not jumping 15 minutes at a time)Progress bars need minute-by-minute updatesVery lightweight (no data processing, just state recalculation) Why NOT every second: Minute precision sufficient for countdown UXReduces CPU load (60Γ— fewer updates than seconds)Home Assistant best practice (avoid sub-minute updates) ","version":"Next 🚧","tagName":"h2"},{"title":"Listener Pattern (Python/HA Terminology)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#listener-pattern-pythonha-terminology","content":" Your question: "Sind Timer fΓΌr dich eigentlich 'Listener'?" Answer: In Home Assistant terminology: Timer = The mechanism that triggers at specific times (async_track_utc_time_change)Listener = A callback function that gets called when timer triggersObserver Pattern = Entities register callbacks, coordinator notifies them How it works: # Entity registers a listener callback class TibberPricesSensor(CoordinatorEntity): async def async_added_to_hass(self): # Register this entity's update callback self._remove_listener = self.coordinator.async_add_time_sensitive_listener( self._handle_coordinator_update ) # Coordinator maintains list of listeners class ListenerManager: def __init__(self): self._time_sensitive_listeners = [] # List of callbacks def async_add_time_sensitive_listener(self, callback): self._time_sensitive_listeners.append(callback) def async_update_time_sensitive_listeners(self): # Timer triggered β†’ notify all listeners for callback in self._time_sensitive_listeners: callback() # Entity updates itself Why this pattern: Decouples timer logic from entity logicOne timer can notify many entities efficientlyEntities can unregister when removed (cleanup)Standard HA pattern for coordinator-based integrations ","version":"Next 🚧","tagName":"h2"},{"title":"Timer Coordination Scenarios​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-coordination-scenarios","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Scenario 1: Normal Operation (No Midnight)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#scenario-1-normal-operation-no-midnight","content":" 14:00:00 β†’ Timer #2 triggers β†’ Update time-sensitive entities (current price changed) β†’ 60 entities updated (~5ms) 14:03:12 β†’ Timer #1 triggers (HA's 15-min cycle) β†’ Check if tomorrow data needed (no, still cached) β†’ Return cached data (fast path, ~2ms) 14:15:00 β†’ Timer #2 triggers β†’ Update time-sensitive entities β†’ 60 entities updated (~5ms) 14:16:00 β†’ Timer #3 triggers β†’ Update countdown/progress entities β†’ 10 entities updated (~1ms) Key observation: Timer #1 and Timer #2 run independently, no conflicts. ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 2: Midnight Turnover​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#scenario-2-midnight-turnover","content":" 23:45:12 β†’ Timer #1 triggers β†’ Check midnight: current_date=2025-11-17, last_check=2025-11-17 β†’ No turnover needed β†’ Return cached data 00:00:00 β†’ Timer #2 triggers FIRST (synchronized to midnight) β†’ Check midnight: current_date=2025-11-18, last_check=2025-11-17 β†’ Turnover needed! Perform rotation, save cache β†’ _last_midnight_check = 2025-11-18 β†’ Notify ALL entities 00:03:12 β†’ Timer #1 triggers (its regular cycle) β†’ Check midnight: current_date=2025-11-18, last_check=2025-11-18 β†’ Turnover already done β†’ skip β†’ Return existing data (fast path) Key observation: Atomic date comparison prevents double-turnover, whoever runs first wins. ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 3: Tomorrow Data Check (After 13:00)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#scenario-3-tomorrow-data-check-after-1300","content":" 13:00:00 β†’ Timer #2 triggers β†’ Normal quarter-hour refresh β†’ Update time-sensitive entities 13:03:12 β†’ Timer #1 triggers β†’ Check tomorrow data: missing or invalid β†’ Fetch from Tibber API (~300ms) β†’ Transform data (~200ms) β†’ Calculate periods (~100ms) β†’ Notify ALL entities (new data available) 13:15:00 β†’ Timer #2 triggers β†’ Normal quarter-hour refresh (uses newly fetched data) β†’ Update time-sensitive entities Key observation: Timer #1 does expensive work (API + transform), Timer #2 does cheap work (entity notify). ","version":"Next 🚧","tagName":"h3"},{"title":"Why We Keep HA's Timer (Timer #1)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#why-we-keep-has-timer-timer-1","content":" Your question: "warum wir den HA timer trotzdem weiter benutzen, da er ja fΓΌr uns unkontrollierte aktualisierte Γ€nderungen triggert" Answer: You're correct that it's not synchronized, but that's actually intentional: ","version":"Next 🚧","tagName":"h2"},{"title":"Reason 1: Load Distribution on Tibber API​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#reason-1-load-distribution-on-tibber-api","content":" If all installations used synchronized timers: ❌ Everyone fetches at 13:00:00 β†’ Tibber API overload❌ Everyone fetches at 14:00:00 β†’ Tibber API overload❌ "Thundering herd" problem With HA's unsynchronized timer: βœ… Installation A: 13:03:12, 13:18:12, 13:33:12, ...βœ… Installation B: 13:07:45, 13:22:45, 13:37:45, ...βœ… Installation C: 13:11:28, 13:26:28, 13:41:28, ...βœ… Natural distribution over ~30 minutesβœ… Plus: Random 0-30s delay on tomorrow checks Result: API load spread evenly, no spikes. ","version":"Next 🚧","tagName":"h3"},{"title":"Reason 2: What Timer #1 Actually Checks​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#reason-2-what-timer-1-actually-checks","content":" Timer #1 does NOT blindly update. It checks: def _should_update_price_data(self) -> str: # Check 1: Do we have tomorrow data? (only relevant after ~13:00) if tomorrow_missing or tomorrow_invalid: return "tomorrow_check" # Fetch needed # Check 2: Is cache still valid? if cache_valid: return "cached" # No fetch needed (most common!) # Check 3: Has enough time passed? if time_since_last_update < threshold: return "cached" # Too soon, skip fetch return "update_needed" # Rare case Most Timer #1 cycles: Fast path (~2ms), no API call, just returns cached data. API fetch only when: Tomorrow data missing/invalid (after 13:00)Cache expired (midnight turnover)Explicit user refresh ","version":"Next 🚧","tagName":"h3"},{"title":"Reason 3: HA Integration Best Practices​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#reason-3-ha-integration-best-practices","content":" βœ… Standard HA pattern: DataUpdateCoordinator is recommended by HA docsβœ… Automatic retry logic for temporary API failuresβœ… Backpressure handling (won't queue updates if previous still running)βœ… Developer tools integration (users can manually trigger refresh)βœ… Diagnostics integration (shows last update time, success/failure) ","version":"Next 🚧","tagName":"h3"},{"title":"What We DO Synchronize​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#what-we-do-synchronize","content":" βœ… Timer #2: Entity state updates at exact boundaries (user-visible)βœ… Timer #3: Countdown/progress at exact minutes (user-visible)❌ Timer #1: API fetch timing (invisible to user, distribution wanted) ","version":"Next 🚧","tagName":"h3"},{"title":"Performance Characteristics​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#performance-characteristics","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Timer #1 (DataUpdateCoordinator)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-1-dataupdatecoordinator","content":" Triggers: Every 15 minutes (unsynchronized)Fast path: ~2ms (cache check, return existing data)Slow path: ~600ms (API fetch + transform + calculate)Frequency: ~96 times/dayAPI calls: ~1-2 times/day (cached otherwise) ","version":"Next 🚧","tagName":"h3"},{"title":"Timer #2 (Quarter-Hour Refresh)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-2-quarter-hour-refresh","content":" Triggers: 96 times/day (exact boundaries)Processing: ~5ms (notify 60 entities)No API calls: Uses cached/transformed dataNo transformation: Just entity state updates ","version":"Next 🚧","tagName":"h3"},{"title":"Timer #3 (Minute Refresh)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-3-minute-refresh","content":" Triggers: 1440 times/day (every minute)Processing: ~1ms (notify 10 entities)No API calls: No data processing at allLightweight: Just countdown math Total CPU budget: ~15 seconds/day for all timers combined. ","version":"Next 🚧","tagName":"h3"},{"title":"Debugging Timer Issues​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#debugging-timer-issues","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Check Timer #1 (HA Coordinator)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#check-timer-1-ha-coordinator","content":" # Enable debug logging _LOGGER.setLevel(logging.DEBUG) # Watch for these log messages: "Fetching data from API (reason: tomorrow_check)" # API call "Using cached data (no update needed)" # Fast path "Midnight turnover detected (Timer #1)" # Turnover ","version":"Next 🚧","tagName":"h3"},{"title":"Check Timer #2 (Quarter-Hour)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#check-timer-2-quarter-hour","content":" # Watch coordinator logs: "Updated 60 time-sensitive entities at quarter-hour boundary" # Normal "Midnight turnover detected (Timer #2)" # Turnover ","version":"Next 🚧","tagName":"h3"},{"title":"Check Timer #3 (Minute)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#check-timer-3-minute","content":" # Watch coordinator logs: "Updated 10 minute-update entities" # Every minute ","version":"Next 🚧","tagName":"h3"},{"title":"Common Issues​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#common-issues","content":" Timer #2 not triggering: Check: schedule_quarter_hour_refresh() called in __init__?Check: _quarter_hour_timer_cancel properly stored? Double updates at midnight: Should NOT happen (atomic coordination)Check: Both timers use same date comparison logic? API overload: Check: Random delay working? (0-30s jitter on tomorrow check)Check: Cache validation logic correct? ","version":"Next 🚧","tagName":"h3"},{"title":"Related Documentation​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#related-documentation","content":" Architecture - Overall system design, data flowCaching Strategy - Cache lifetimes, invalidation, midnight turnoverAGENTS.md - Complete reference for AI development ","version":"Next 🚧","tagName":"h2"},{"title":"Summary​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#summary","content":" Three independent timers: Timer #1 (HA built-in, 15 min, unsynchronized) β†’ Data fetching (when needed)Timer #2 (Custom, :00/:15/:30/:45) β†’ Entity state updates (always)Timer #3 (Custom, every minute) β†’ Countdown/progress (always) Key insights: Timer #1 unsynchronized = good (load distribution on API)Timer #2 synchronized = good (user sees correct data immediately)Timer #3 synchronized = good (smooth countdown UX)All three coordinate gracefully (atomic midnight checks, no conflicts) "Listener" terminology: Timer = mechanism that triggersListener = callback that gets calledObserver pattern = entities register, coordinator notifies ","version":"Next 🚧","tagName":"h2"}],"options":{"id":"default"}} \ No newline at end of file diff --git a/developer/search-doc.json b/developer/search-doc.json new file mode 100644 index 0000000..7638a30 --- /dev/null +++ b/developer/search-doc.json @@ -0,0 +1 @@ +{"searchDocs":[{"title":"Coding Guidelines","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/coding-guidelines","content":"","keywords":"","version":"Next 🚧"},{"title":"Code Style​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#code-style","content":" Formatter/Linter: Ruff (replaces Black, Flake8, isort)Max line length: 120 charactersMax complexity: 25 (McCabe)Target: Python 3.13 Run before committing: ./scripts/lint # Auto-fix issues ./scripts/release/hassfest # Validate integration structure ","version":"Next 🚧","tagName":"h2"},{"title":"Naming Conventions​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#naming-conventions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Class Names​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#class-names","content":" All public classes MUST use the integration name as prefix. This is a Home Assistant standard to avoid naming conflicts between integrations. # βœ… CORRECT class TibberPricesApiClient: class TibberPricesDataUpdateCoordinator: class TibberPricesSensor: # ❌ WRONG - Missing prefix class ApiClient: class DataFetcher: class TimeService: When prefix is required: Public classes used across multiple modulesAll exception classesAll coordinator and entity classesData classes (dataclasses, NamedTuples) used as public APIs When prefix can be omitted: Private helper classes within a single module (prefix with _ underscore)Type aliases and callbacks (e.g., TimeServiceCallback)Small internal NamedTuples for function returns Private Classes: If a helper class is ONLY used within a single module file, prefix it with underscore: # βœ… Private class - used only in this file class _InternalHelper: """Helper used only within this module.""" pass # ❌ Wrong - no prefix but used across modules class DataFetcher: # Should be TibberPricesDataFetcher pass Note: Currently (Nov 2025), this project has NO private classes - all classes are used across module boundaries. Current Technical Debt: Many existing classes lack the TibberPrices prefix. Before refactoring: Document the plan in /planning/class-naming-refactoring.mdUse multi_replace_string_in_file for bulk renamesTest thoroughly after each module See AGENTS.md for complete list of classes needing rename. ","version":"Next 🚧","tagName":"h3"},{"title":"Import Order​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#import-order","content":" Python stdlib (specific types only)Third-party (homeassistant.*, aiohttp)Local (.api, .const) ","version":"Next 🚧","tagName":"h2"},{"title":"Critical Patterns​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#critical-patterns","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Time Handling​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#time-handling","content":" Always use dt_util from homeassistant.util: from homeassistant.util import dt as dt_util price_time = dt_util.parse_datetime(starts_at) price_time = dt_util.as_local(price_time) # Convert to HA timezone now = dt_util.now() ","version":"Next 🚧","tagName":"h3"},{"title":"Translation Loading​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#translation-loading","content":" # In __init__.py async_setup_entry: await async_load_translations(hass, "en") await async_load_standard_translations(hass, "en") ","version":"Next 🚧","tagName":"h3"},{"title":"Price Data Enrichment​","type":1,"pageTitle":"Coding Guidelines","url":"/hass.tibber_prices/developer/coding-guidelines#price-data-enrichment","content":" Always enrich raw API data: from .price_utils import enrich_price_info_with_differences enriched = enrich_price_info_with_differences( price_info_data, thresholds, ) See AGENTS.md for complete guidelines. ","version":"Next 🚧","tagName":"h3"},{"title":"Contributing Guide","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/contributing","content":"","keywords":"","version":"Next 🚧"},{"title":"Getting Started​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#getting-started","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Prerequisites​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#prerequisites","content":" GitVS Code with Remote Containers extensionDocker Desktop ","version":"Next 🚧","tagName":"h3"},{"title":"Fork and Clone​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#fork-and-clone","content":" Fork the repository on GitHubClone your fork: git clone https://github.com/YOUR_USERNAME/hass.tibber_prices.git cd hass.tibber_prices Open in VS CodeClick "Reopen in Container" when prompted The DevContainer will set up everything automatically. ","version":"Next 🚧","tagName":"h3"},{"title":"Development Workflow​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#development-workflow","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Create a Branch​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#1-create-a-branch","content":" git checkout -b feature/your-feature-name # or git checkout -b fix/issue-123-description Branch naming: feature/ - New featuresfix/ - Bug fixesdocs/ - Documentation onlyrefactor/ - Code restructuringtest/ - Test improvements ","version":"Next 🚧","tagName":"h3"},{"title":"2. Make Changes​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#2-make-changes","content":" Edit code, following Coding Guidelines. Run checks frequently: ./scripts/type-check # Pyright type checking ./scripts/lint # Ruff linting (auto-fix) ./scripts/test # Run tests ","version":"Next 🚧","tagName":"h3"},{"title":"3. Test Locally​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#3-test-locally","content":" ./scripts/develop # Start HA with integration loaded Access at http://localhost:8123 ","version":"Next 🚧","tagName":"h3"},{"title":"4. Write Tests​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#4-write-tests","content":" Add tests in /tests/ for new features: @pytest.mark.unit async def test_your_feature(hass, coordinator): """Test your new feature.""" # Arrange coordinator.data = {...} # Act result = your_function(coordinator.data) # Assert assert result == expected_value Run your test: ./scripts/test tests/test_your_feature.py -v ","version":"Next 🚧","tagName":"h3"},{"title":"5. Commit Changes​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#5-commit-changes","content":" Follow Conventional Commits: git add . git commit -m "feat(sensors): add volatility trend sensor Add new sensor showing 3-hour volatility trend direction. Includes attributes with historical volatility data. Impact: Users can predict when prices will stabilize or continue fluctuating." Commit types: feat: - New featurefix: - Bug fixdocs: - Documentationrefactor: - Code restructuringtest: - Test changeschore: - Maintenance Add scope when relevant: feat(sensors): - Sensor platformfix(coordinator): - Data coordinatordocs(user): - User documentation ","version":"Next 🚧","tagName":"h3"},{"title":"6. Push and Create PR​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#6-push-and-create-pr","content":" git push origin your-branch-name Then open Pull Request on GitHub. ","version":"Next 🚧","tagName":"h3"},{"title":"Pull Request Guidelines​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#pull-request-guidelines","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"PR Template​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#pr-template","content":" Title: Short, descriptive (50 chars max) Description should include: ## What Brief description of changes ## Why Problem being solved or feature rationale ## How Implementation approach ## Testing - [ ] Manual testing in Home Assistant - [ ] Unit tests added/updated - [ ] Type checking passes - [ ] Linting passes ## Breaking Changes (If any - describe migration path) ## Related Issues Closes #123 ","version":"Next 🚧","tagName":"h3"},{"title":"PR Checklist​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#pr-checklist","content":" Before submitting: Code follows Coding Guidelines All tests pass (./scripts/test) Type checking passes (./scripts/type-check) Linting passes (./scripts/lint-check) Documentation updated (if needed) AGENTS.md updated (if patterns changed) Commit messages follow Conventional Commits ","version":"Next 🚧","tagName":"h3"},{"title":"Review Process​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#review-process","content":" Automated checks run (CI/CD)Maintainer review (usually within 3 days)Address feedback if requestedApproval β†’ Maintainer merges ","version":"Next 🚧","tagName":"h3"},{"title":"Code Review Tips​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#code-review-tips","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"What Reviewers Look For​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#what-reviewers-look-for","content":" βœ… Good: Clear, self-explanatory codeAppropriate comments for complex logicTests covering edge casesType hints on all functionsFollows existing patterns ❌ Avoid: Large PRs (>500 lines) - split into smaller onesMixing unrelated changesMissing tests for new featuresBreaking changes without migration pathCopy-pasted code (refactor into shared functions) ","version":"Next 🚧","tagName":"h3"},{"title":"Responding to Feedback​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#responding-to-feedback","content":" Don't take it personally - we're improving code togetherAsk questions if feedback unclearPush additional commits to address commentsMark conversations as resolved when fixed ","version":"Next 🚧","tagName":"h3"},{"title":"Finding Issues to Work On​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#finding-issues-to-work-on","content":" Good first issues are labeled: good first issue - Beginner-friendlyhelp wanted - Maintainers welcome contributionsdocumentation - Docs improvements Comment on issue before starting work to avoid duplicates. ","version":"Next 🚧","tagName":"h2"},{"title":"Communication​","type":1,"pageTitle":"Contributing Guide","url":"/hass.tibber_prices/developer/contributing#communication","content":" GitHub Issues - Bug reports, feature requestsPull Requests - Code discussionDiscussions - General questions, ideas Be respectful, constructive, and patient. We're all volunteers! πŸ™ πŸ’‘ Related: Setup Guide - DevContainer setupCoding Guidelines - Style guideTesting - Writing testsRelease Management - How releases work ","version":"Next 🚧","tagName":"h2"},{"title":"Architecture","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/architecture","content":"","keywords":"","version":"Next 🚧"},{"title":"End-to-End Data Flow​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#end-to-end-data-flow","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Flow Description​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#flow-description","content":" Setup (__init__.py) Integration loads, creates coordinator instanceRegisters entity platforms (sensor, binary_sensor)Sets up custom services Data Fetch (every 15 minutes) Coordinator triggers update via api.pyAPI client checks persistent cache first (coordinator/cache.py)If cache valid β†’ return cached dataIf cache stale β†’ query Tibber GraphQL APIStore fresh data in persistent cache (survives HA restart) Price Enrichment Coordinator passes raw prices to DataTransformerTransformer checks transformation cache (memory)If cache valid β†’ return enriched dataIf cache invalid β†’ enrich via price_utils.py + average_utils.py Calculate 24h trailing/leading averagesCalculate price differences (% from average)Assign rating levels (LOW/NORMAL/HIGH) Store enriched data in transformation cache Period Calculation Coordinator passes enriched data to PeriodCalculatorCalculator computes hash from prices + configIf hash matches cache β†’ return cached periodsIf hash differs β†’ recalculate best/peak price periodsStore periods with new hash Entity Updates Coordinator provides complete data (prices + periods)Sensors read values via unified handlersBinary sensors evaluate period statesEntities update on quarter-hour boundaries (00/15/30/45) Service Calls Custom services access coordinator data directlyReturn formatted responses (JSON, ApexCharts format) ","version":"Next 🚧","tagName":"h3"},{"title":"Caching Architecture​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#caching-architecture","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Overview​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#overview","content":" The integration uses 5 independent caching layers for optimal performance: Layer\tLocation\tLifetime\tInvalidation\tMemoryAPI Cache\tcoordinator/cache.py\t24h (user) Until midnight (prices)\tAutomatic\t50KB Translation Cache\tconst.py\tUntil HA restart\tNever\t5KB Config Cache\tcoordinator/*\tUntil config change\tExplicit\t1KB Period Cache\tcoordinator/periods.py\tUntil data/config change\tHash-based\t10KB Transformation Cache\tcoordinator/data_transformation.py\tUntil midnight/config\tAutomatic\t60KB Total cache overhead: ~126KB per coordinator instance (main entry + subentries) ","version":"Next 🚧","tagName":"h3"},{"title":"Cache Coordination​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#cache-coordination","content":" Key insight: No cascading invalidations - each cache is independent and rebuilds on-demand. For detailed cache behavior, see Caching Strategy. ","version":"Next 🚧","tagName":"h3"},{"title":"Component Responsibilities​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#component-responsibilities","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Core Components​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#core-components","content":" Component\tFile\tResponsibilityAPI Client\tapi.py\tGraphQL queries to Tibber, retry logic, error handling Coordinator\tcoordinator.py\tUpdate orchestration, cache management, absolute-time scheduling with boundary tolerance Data Transformer\tcoordinator/data_transformation.py\tPrice enrichment (averages, ratings, differences) Period Calculator\tcoordinator/periods.py\tBest/peak price period calculation with relaxation Sensors\tsensor/\t80+ entities for prices, levels, ratings, statistics Binary Sensors\tbinary_sensor/\tPeriod indicators (best/peak price active) Services\tservices/\tCustom service endpoints (get_chartdata, get_apexcharts_yaml, refresh_user_data) ","version":"Next 🚧","tagName":"h3"},{"title":"Sensor Architecture (Calculator Pattern)​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#sensor-architecture-calculator-pattern","content":" The sensor platform uses Calculator Pattern for clean separation of concerns (refactored Nov 2025): Component\tFiles\tLines\tResponsibilityEntity Class\tsensor/core.py\t909\tEntity lifecycle, coordinator, delegates to calculators Calculators\tsensor/calculators/\t1,838\tBusiness logic (8 specialized calculators) Attributes\tsensor/attributes/\t1,209\tState presentation (8 specialized modules) Routing\tsensor/value_getters.py\t276\tCentralized sensor β†’ calculator mapping Chart Export\tsensor/chart_data.py\t144\tService call handling, YAML parsing Helpers\tsensor/helpers.py\t188\tAggregation functions, utilities Calculator Package (sensor/calculators/): base.py - Abstract BaseCalculator with coordinator accessinterval.py - Single interval calculations (current/next/previous)rolling_hour.py - 5-interval rolling windowsdaily_stat.py - Calendar day min/max/avg statisticswindow_24h.py - Trailing/leading 24h windowsvolatility.py - Price volatility analysistrend.py - Complex trend analysis with cachingtiming.py - Best/peak price period timingmetadata.py - Home/metering metadata Benefits: 58% reduction in core.py (2,170 β†’ 909 lines)Clear separation: Calculators (logic) vs Attributes (presentation)Independent testability for each calculatorEasy to add sensors: Choose calculation pattern, add to routing ","version":"Next 🚧","tagName":"h3"},{"title":"Helper Utilities​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#helper-utilities","content":" Utility\tFile\tPurposePrice Utils\tutils/price.py\tRating calculation, enrichment, level aggregation Average Utils\tutils/average.py\tTrailing/leading 24h average calculations Entity Utils\tentity_utils/\tShared icon/color/attribute logic Translations\tconst.py\tTranslation loading and caching ","version":"Next 🚧","tagName":"h3"},{"title":"Key Patterns​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#key-patterns","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Dual Translation System​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#1-dual-translation-system","content":" Standard translations (/translations/*.json): HA-compliant schema for entity namesCustom translations (/custom_translations/*.json): Extended descriptions, usage tipsBoth loaded at integration setup, cached in memoryAccess via get_translation() helper function ","version":"Next 🚧","tagName":"h3"},{"title":"2. Price Data Enrichment​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#2-price-data-enrichment","content":" All quarter-hourly price intervals get augmented via utils/price.py: # Original from Tibber API { "startsAt": "2025-11-03T14:00:00+01:00", "total": 0.2534, "level": "NORMAL" } # After enrichment (utils/price.py) { "startsAt": "2025-11-03T14:00:00+01:00", "total": 0.2534, "level": "NORMAL", "trailing_avg_24h": 0.2312, # ← Added: 24h trailing average "difference": 9.6, # ← Added: % diff from trailing avg "rating_level": "NORMAL" # ← Added: LOW/NORMAL/HIGH based on thresholds } ","version":"Next 🚧","tagName":"h3"},{"title":"3. Quarter-Hour Precision​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#3-quarter-hour-precision","content":" API polling: Every 15 minutes (coordinator fetch cycle)Entity updates: On 00/15/30/45-minute boundaries via coordinator/listeners.pyTimer scheduling: Uses async_track_utc_time_change(minute=[0, 15, 30, 45], second=0) HA may trigger Β±few milliseconds before/after exact boundarySmart boundary tolerance (Β±2 seconds) handles scheduling jitter in sensor/helpers.pyIf HA schedules at 14:59:58 β†’ rounds to 15:00:00 (shows new interval data)If HA restarts at 14:59:30 β†’ stays at 14:45:00 (shows current interval data) Absolute time tracking: Timer plans for all future boundaries (not relative delays) Prevents double-updates (if triggered at 14:59:58, next trigger is 15:15:00, not 15:00:00) Result: Current price sensors update without waiting for next API poll ","version":"Next 🚧","tagName":"h3"},{"title":"4. Calculator Pattern (Sensor Platform)​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#4-calculator-pattern-sensor-platform","content":" Sensors organized by calculation method (refactored Nov 2025): Unified Handler Methods (sensor/core.py): _get_interval_value(offset, type) - current/next/previous intervals_get_rolling_hour_value(offset, type) - 5-interval rolling windows_get_daily_stat_value(day, stat_func) - calendar day min/max/avg_get_24h_window_value(stat_func) - trailing/leading statistics Routing (sensor/value_getters.py): Single source of truth mapping 80+ entity keys to calculator methodsOrganized by calculation type (Interval, Rolling Hour, Daily Stats, etc.) Calculators (sensor/calculators/): Each calculator inherits from BaseCalculator with coordinator accessFocused responsibility: IntervalCalculator, TrendCalculator, etc.Complex logic isolated (e.g., TrendCalculator has internal caching) Attributes (sensor/attributes/): Separate from business logic, handles state presentationBuilds extra_state_attributes dicts for entity classesUnified builders: build_sensor_attributes(), build_extra_state_attributes() Benefits: Minimal code duplication across 80+ sensorsClear separation of concerns (calculation vs presentation)Easy to extend: Add sensor β†’ choose pattern β†’ add to routingIndependent testability for each component ","version":"Next 🚧","tagName":"h3"},{"title":"Performance Characteristics​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#performance-characteristics","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"API Call Reduction​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#api-call-reduction","content":" Without caching: 96 API calls/day (every 15 min)With caching: ~1-2 API calls/day (only when cache expires)Reduction: ~98% ","version":"Next 🚧","tagName":"h3"},{"title":"CPU Optimization​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#cpu-optimization","content":" Optimization\tLocation\tSavingsConfig caching\tcoordinator/*\t~50% on config checks Period caching\tcoordinator/periods.py\t~70% on period recalculation Lazy logging\tThroughout\t~15% on log-heavy operations Import optimization\tModule structure\t~20% faster loading ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Usage​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#memory-usage","content":" Per coordinator instance: ~126KB cache overheadTypical setup: 1 main + 2 subentries = ~378KB totalRedundancy eliminated: 14% reduction (10KB saved per coordinator) ","version":"Next 🚧","tagName":"h3"},{"title":"Related Documentation​","type":1,"pageTitle":"Architecture","url":"/hass.tibber_prices/developer/architecture#related-documentation","content":" Timer Architecture - Timer system, scheduling, coordination (3 independent timers)Caching Strategy - Detailed cache behavior, invalidation, debuggingSetup Guide - Development environment setupTesting Guide - How to test changesRelease Management - Release workflow and versioningAGENTS.md - Complete reference for AI development ","version":"Next 🚧","tagName":"h2"},{"title":"Caching Strategy","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/caching-strategy","content":"","keywords":"","version":"Next 🚧"},{"title":"Overview​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#overview","content":" The integration uses 4 distinct caching layers with different purposes and lifetimes: Persistent API Data Cache (HA Storage) - Hours to daysTranslation Cache (Memory) - Forever (until HA restart)Config Dictionary Cache (Memory) - Until config changesPeriod Calculation Cache (Memory) - Until price data or config changes ","version":"Next 🚧","tagName":"h2"},{"title":"1. Persistent API Data Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#1-persistent-api-data-cache","content":" Location: coordinator/cache.py β†’ HA Storage (.storage/tibber_prices.<entry_id>) Purpose: Reduce API calls to Tibber by caching user data and price data between HA restarts. What is cached: Price data (price_data): Day before yesterday/yesterday/today/tomorrow price intervals with enriched fields (384 intervals total)User data (user_data): Homes, subscriptions, features from Tibber GraphQL viewer queryTimestamps: Last update times for validation Lifetime: Price data: Until midnight turnover (cleared daily at 00:00 local time)User data: 24 hours (refreshed daily)Survives: HA restarts via persistent Storage Invalidation triggers: Midnight turnover (Timer #2 in coordinator): # coordinator/day_transitions.py def _handle_midnight_turnover() -> None: self._cached_price_data = None # Force fresh fetch for new day self._last_price_update = None await self.store_cache() Cache validation on load: # coordinator/cache.py def is_cache_valid(cache_data: CacheData) -> bool: # Checks if price data is from a previous day if today_date < local_now.date(): # Yesterday's data return False Tomorrow data check (after 13:00): # coordinator/data_fetching.py if tomorrow_missing or tomorrow_invalid: return "tomorrow_check" # Update needed Why this cache matters: Reduces API load on Tibber (~192 intervals per fetch), speeds up HA restarts, enables offline operation until cache expires. ","version":"Next 🚧","tagName":"h2"},{"title":"2. Translation Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#2-translation-cache","content":" Location: const.py β†’ _TRANSLATIONS_CACHE and _STANDARD_TRANSLATIONS_CACHE (in-memory dicts) Purpose: Avoid repeated file I/O when accessing entity descriptions, UI strings, etc. What is cached: Standard translations (/translations/*.json): Config flow, selector options, entity namesCustom translations (/custom_translations/*.json): Entity descriptions, usage tips, long descriptions Lifetime: Forever (until HA restart)No invalidation during runtime When populated: At integration setup: async_load_translations(hass, "en") in __init__.pyLazy loading: If translation missing, attempts file load once Access pattern: # Non-blocking synchronous access from cached data description = get_translation("binary_sensor.best_price_period.description", "en") Why this cache matters: Entity attributes are accessed on every state update (~15 times per hour per entity). File I/O would block the event loop. Cache enables synchronous, non-blocking attribute generation. ","version":"Next 🚧","tagName":"h2"},{"title":"3. Config Dictionary Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#3-config-dictionary-cache","content":" Location: coordinator/data_transformation.py and coordinator/periods.py (per-instance fields) Purpose: Avoid ~30-40 options.get() calls on every coordinator update (every 15 minutes). What is cached: ","version":"Next 🚧","tagName":"h2"},{"title":"DataTransformer Config Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#datatransformer-config-cache","content":" { "thresholds": {"low": 15, "high": 35}, "volatility_thresholds": {"moderate": 15.0, "high": 25.0, "very_high": 40.0}, # ... 20+ more config fields } ","version":"Next 🚧","tagName":"h3"},{"title":"PeriodCalculator Config Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#periodcalculator-config-cache","content":" { "best": {"flex": 0.15, "min_distance_from_avg": 5.0, "min_period_length": 60}, "peak": {"flex": 0.15, "min_distance_from_avg": 5.0, "min_period_length": 60} } Lifetime: Until invalidate_config_cache() is calledBuilt once on first use per coordinator update cycle Invalidation trigger: Options change (user reconfigures integration): # coordinator/core.py async def _handle_options_update(...) -> None: self._data_transformer.invalidate_config_cache() self._period_calculator.invalidate_config_cache() await self.async_request_refresh() Performance impact: Before: ~30 dict lookups + type conversions per update = ~50ΞΌsAfter: 1 cache check = ~1ΞΌsSavings: ~98% (50ΞΌs β†’ 1ΞΌs per update) Why this cache matters: Config is read multiple times per update (transformation + period calculation + validation). Caching eliminates redundant lookups without changing behavior. ","version":"Next 🚧","tagName":"h3"},{"title":"4. Period Calculation Cache​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#4-period-calculation-cache","content":" Location: coordinator/periods.py β†’ PeriodCalculator._cached_periods Purpose: Avoid expensive period calculations (~100-500ms) when price data and config haven't changed. What is cached: { "best_price": { "periods": [...], # Calculated period objects "intervals": [...], # All intervals in periods "metadata": {...} # Config snapshot }, "best_price_relaxation": {"relaxation_active": bool, ...}, "peak_price": {...}, "peak_price_relaxation": {...} } Cache key: Hash of relevant inputs hash_data = ( today_signature, # (startsAt, rating_level) for each interval tuple(best_config.items()), # Best price config tuple(peak_config.items()), # Peak price config best_level_filter, # Level filter overrides peak_level_filter ) Lifetime: Until price data changes (today's intervals modified)Until config changes (flex, thresholds, filters)Recalculated at midnight (new today data) Invalidation triggers: Config change (explicit): def invalidate_config_cache() -> None: self._cached_periods = None self._last_periods_hash = None Price data change (automatic via hash mismatch): current_hash = self._compute_periods_hash(price_info) if self._last_periods_hash != current_hash: # Cache miss - recalculate Cache hit rate: High: During normal operation (coordinator updates every 15min, price data unchanged)Low: After midnight (new today data) or when tomorrow data arrives (~13:00-14:00) Performance impact: Period calculation: ~100-500ms (depends on interval count, relaxation attempts)Cache hit: <1ms (hash comparison + dict lookup)Savings: ~70% of calculation time (most updates hit cache) Why this cache matters: Period calculation is CPU-intensive (filtering, gap tolerance, relaxation). Caching avoids recalculating unchanged periods 3-4 times per hour. ","version":"Next 🚧","tagName":"h2"},{"title":"5. Transformation Cache (Price Enrichment Only)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#5-transformation-cache-price-enrichment-only","content":" Location: coordinator/data_transformation.py β†’ _cached_transformed_data Status: βœ… Clean separation - enrichment only, no redundancy What is cached: { "timestamp": ..., "homes": {...}, "priceInfo": {...}, # Enriched price data (trailing_avg_24h, difference, rating_level) # NO periods - periods are exclusively managed by PeriodCalculator } Purpose: Avoid re-enriching price data when config unchanged between midnight checks. Current behavior: Caches only enriched price data (price + statistics)Does NOT cache periods (handled by Period Calculation Cache)Invalidated when: Config changes (thresholds affect enrichment)Midnight turnover detectedNew update cycle begins Architecture: DataTransformer: Handles price enrichment onlyPeriodCalculator: Handles period calculation only (with hash-based cache)Coordinator: Assembles final data on-demand from both caches Memory savings: Eliminating redundant period storage saves ~10KB per coordinator (14% reduction). ","version":"Next 🚧","tagName":"h2"},{"title":"Cache Invalidation Flow​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#cache-invalidation-flow","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"User Changes Options (Config Flow)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#user-changes-options-config-flow","content":" User saves options ↓ config_entry.add_update_listener() triggers ↓ coordinator._handle_options_update() ↓ β”œβ”€> DataTransformer.invalidate_config_cache() β”‚ └─> _config_cache = None β”‚ _config_cache_valid = False β”‚ _cached_transformed_data = None β”‚ └─> PeriodCalculator.invalidate_config_cache() └─> _config_cache = None _config_cache_valid = False _cached_periods = None _last_periods_hash = None ↓ coordinator.async_request_refresh() ↓ Fresh data fetch with new config ","version":"Next 🚧","tagName":"h3"},{"title":"Midnight Turnover (Day Transition)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#midnight-turnover-day-transition","content":" Timer #2 fires at 00:00 ↓ coordinator._handle_midnight_turnover() ↓ β”œβ”€> Clear persistent cache β”‚ └─> _cached_price_data = None β”‚ _last_price_update = None β”‚ └─> Clear transformation cache └─> _cached_transformed_data = None _last_transformation_config = None ↓ Period cache auto-invalidates (hash mismatch on new "today") ↓ Fresh API fetch for new day ","version":"Next 🚧","tagName":"h3"},{"title":"Tomorrow Data Arrives (~13:00)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#tomorrow-data-arrives-1300","content":" Coordinator update cycle ↓ should_update_price_data() checks tomorrow ↓ Tomorrow data missing/invalid ↓ API fetch with new tomorrow data ↓ Price data hash changes (new intervals) ↓ Period cache auto-invalidates (hash mismatch) ↓ Periods recalculated with tomorrow included ","version":"Next 🚧","tagName":"h3"},{"title":"Cache Coordination​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#cache-coordination","content":" All caches work together: Persistent Storage (HA restart) ↓ API Data Cache (price_data, user_data) ↓ β”œβ”€> Enrichment (add rating_level, difference, etc.) β”‚ ↓ β”‚ Transformation Cache (_cached_transformed_data) β”‚ └─> Period Calculation ↓ Period Cache (_cached_periods) ↓ Config Cache (avoid re-reading options) ↓ Translation Cache (entity descriptions) No cache invalidation cascades: Config cache invalidation is explicit (on options update)Period cache invalidation is automatic (via hash mismatch)Transformation cache invalidation is automatic (on midnight/config change)Translation cache is never invalidated (read-only after load) Thread safety: All caches are accessed from MainThread only (Home Assistant event loop)No locking needed (single-threaded execution model) ","version":"Next 🚧","tagName":"h2"},{"title":"Performance Characteristics​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#performance-characteristics","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Typical Operation (No Changes)​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#typical-operation-no-changes","content":" Coordinator Update (every 15 min) β”œβ”€> API fetch: SKIP (cache valid) β”œβ”€> Config dict build: ~1ΞΌs (cached) β”œβ”€> Period calculation: ~1ms (cached, hash match) β”œβ”€> Transformation: ~10ms (enrichment only, periods cached) └─> Entity updates: ~5ms (translation cache hit) Total: ~16ms (down from ~600ms without caching) ","version":"Next 🚧","tagName":"h3"},{"title":"After Midnight Turnover​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#after-midnight-turnover","content":" Coordinator Update (00:00) β”œβ”€> API fetch: ~500ms (cache cleared, fetch new day) β”œβ”€> Config dict build: ~50ΞΌs (rebuild, no cache) β”œβ”€> Period calculation: ~200ms (cache miss, recalculate) β”œβ”€> Transformation: ~50ms (re-enrich, rebuild) └─> Entity updates: ~5ms (translation cache still valid) Total: ~755ms (expected once per day) ","version":"Next 🚧","tagName":"h3"},{"title":"After Config Change​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#after-config-change","content":" Options Update β”œβ”€> Cache invalidation: `<`1ms β”œβ”€> Coordinator refresh: ~600ms β”‚ β”œβ”€> API fetch: SKIP (data unchanged) β”‚ β”œβ”€> Config rebuild: ~50ΞΌs β”‚ β”œβ”€> Period recalculation: ~200ms (new thresholds) β”‚ β”œβ”€> Re-enrichment: ~50ms β”‚ └─> Entity updates: ~5ms └─> Total: ~600ms (expected on manual reconfiguration) ","version":"Next 🚧","tagName":"h3"},{"title":"Summary Table​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#summary-table","content":" Cache Type\tLifetime\tSize\tInvalidation\tPurposeAPI Data\tHours to 1 day\t~50KB\tMidnight, validation\tReduce API calls Translations\tForever (until HA restart)\t~5KB\tNever\tAvoid file I/O Config Dicts\tUntil options change\t<1KB\tExplicit (options update)\tAvoid dict lookups Period Calculation\tUntil data/config change\t~10KB\tAuto (hash mismatch)\tAvoid CPU-intensive calculation Transformation\tUntil midnight/config change\t~50KB\tAuto (midnight/config)\tAvoid re-enrichment Total memory overhead: ~116KB per coordinator instance (main + subentries) Benefits: 97% reduction in API calls (from every 15min to once per day)70% reduction in period calculation time (cache hits during normal operation)98% reduction in config access time (30+ lookups β†’ 1 cache check)Zero file I/O during runtime (translations cached at startup) Trade-offs: Memory usage: ~116KB per home (negligible for modern systems)Code complexity: 5 cache invalidation points (well-tested, documented)Debugging: Must understand cache lifetime when investigating stale data issues ","version":"Next 🚧","tagName":"h2"},{"title":"Debugging Cache Issues​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#debugging-cache-issues","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Symptom: Stale data after config change​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#symptom-stale-data-after-config-change","content":" Check: Is _handle_options_update() called? (should see "Options updated" log)Are invalidate_config_cache() methods executed?Does async_request_refresh() trigger? Fix: Ensure config_entry.add_update_listener() is registered in coordinator init. ","version":"Next 🚧","tagName":"h3"},{"title":"Symptom: Period calculation not updating​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#symptom-period-calculation-not-updating","content":" Check: Verify hash changes when data changes: _compute_periods_hash()Check _last_periods_hash vs current_hashLook for "Using cached period calculation" vs "Calculating periods" logs Fix: Hash function may not include all relevant data. Review _compute_periods_hash() inputs. ","version":"Next 🚧","tagName":"h3"},{"title":"Symptom: Yesterday's prices shown as today​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#symptom-yesterdays-prices-shown-as-today","content":" Check: is_cache_valid() logic in coordinator/cache.pyMidnight turnover execution (Timer #2)Cache clear confirmation in logs Fix: Timer may not be firing. Check _schedule_midnight_turnover() registration. ","version":"Next 🚧","tagName":"h3"},{"title":"Symptom: Missing translations​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#symptom-missing-translations","content":" Check: async_load_translations() called at startup?Translation files exist in /translations/ and /custom_translations/?Cache population: _TRANSLATIONS_CACHE keys Fix: Re-install integration or restart HA to reload translation files. ","version":"Next 🚧","tagName":"h3"},{"title":"Related Documentation​","type":1,"pageTitle":"Caching Strategy","url":"/hass.tibber_prices/developer/caching-strategy#related-documentation","content":" Timer Architecture - Timer system, scheduling, midnight coordinationArchitecture - Overall system design, data flowAGENTS.md - Complete reference for AI development ","version":"Next 🚧","tagName":"h2"},{"title":"Critical Behavior Patterns - Testing Guide","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/critical-patterns","content":"","keywords":"","version":"Next 🚧"},{"title":"🎯 Why Are These Tests Critical?​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-why-are-these-tests-critical","content":" Home Assistant integrations run continuously in the background. Resource leaks lead to: Memory Leaks: RAM usage grows over days/weeks until HA becomes unstableCallback Leaks: Listeners remain registered after entity removal β†’ CPU load increasesTimer Leaks: Timers continue running after unload β†’ unnecessary background tasksFile Handle Leaks: Storage files remain open β†’ system resources exhausted ","version":"Next 🚧","tagName":"h2"},{"title":"βœ… Test Categories​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-test-categories","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Resource Cleanup (Memory Leak Prevention)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#1-resource-cleanup-memory-leak-prevention","content":" File: tests/test_resource_cleanup.py 1.1 Listener Cleanup βœ…β€‹ What is tested: Time-sensitive listeners are correctly removed (async_add_time_sensitive_listener())Minute-update listeners are correctly removed (async_add_minute_update_listener())Lifecycle callbacks are correctly unregistered (register_lifecycle_callback())Sensor cleanup removes ALL registered listenersBinary sensor cleanup removes ALL registered listeners Why critical: Each registered listener holds references to Entity + CoordinatorWithout cleanup: Entities are not freed by GC β†’ Memory LeakWith 80+ sensors Γ— 3 listener types = 240+ callbacks that must be cleanly removed Code Locations: coordinator/listeners.py β†’ async_add_time_sensitive_listener(), async_add_minute_update_listener()coordinator/core.py β†’ register_lifecycle_callback()sensor/core.py β†’ async_will_remove_from_hass()binary_sensor/core.py β†’ async_will_remove_from_hass() 1.2 Timer Cleanup βœ…β€‹ What is tested: Quarter-hour timer is cancelled and reference clearedMinute timer is cancelled and reference clearedBoth timers are cancelled togetherCleanup works even when timers are None Why critical: Uncancelled timers continue running after integration unloadHA's async_track_utc_time_change() creates persistent callbacksWithout cleanup: Timers keep firing β†’ CPU load + unnecessary coordinator updates Code Locations: coordinator/listeners.py β†’ cancel_timers()coordinator/core.py β†’ async_shutdown() 1.3 Config Entry Cleanup βœ…β€‹ What is tested: Options update listener is registered via async_on_unload()Cleanup function is correctly passed to async_on_unload() Why critical: entry.add_update_listener() registers permanent callbackWithout async_on_unload(): Listener remains active after reload β†’ duplicate updatesPattern: entry.async_on_unload(entry.add_update_listener(handler)) Code Locations: coordinator/core.py β†’ __init__() (listener registration)__init__.py β†’ async_unload_entry() ","version":"Next 🚧","tagName":"h3"},{"title":"2. Cache Invalidation βœ…β€‹","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#2-cache-invalidation-","content":" File: tests/test_resource_cleanup.py 2.1 Config Cache Invalidation​ What is tested: DataTransformer config cache is invalidated on options changePeriodCalculator config + period cache is invalidatedTrend calculator cache is cleared on coordinator update Why critical: Stale config β†’ Sensors use old user settingsStale period cache β†’ Incorrect best/peak price periodsStale trend cache β†’ Outdated trend analysis Code Locations: coordinator/data_transformation.py β†’ invalidate_config_cache()coordinator/periods.py β†’ invalidate_config_cache()sensor/calculators/trend.py β†’ clear_trend_cache() ","version":"Next 🚧","tagName":"h3"},{"title":"3. Storage Cleanup βœ…β€‹","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#3-storage-cleanup-","content":" File: tests/test_resource_cleanup.py + tests/test_coordinator_shutdown.py 3.1 Persistent Storage Removal​ What is tested: Storage file is deleted on config entry removalCache is saved on shutdown (no data loss) Why critical: Without storage removal: Old files remain after uninstallationWithout cache save on shutdown: Data loss on HA restartStorage path: .storage/tibber_prices.{entry_id} Code Locations: __init__.py β†’ async_remove_entry()coordinator/core.py β†’ async_shutdown() ","version":"Next 🚧","tagName":"h3"},{"title":"4. Timer Scheduling βœ…β€‹","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#4-timer-scheduling-","content":" File: tests/test_timer_scheduling.py What is tested: Quarter-hour timer is registered with correct parametersMinute timer is registered with correct parametersTimers can be re-scheduled (override old timer)Midnight turnover detection works correctly Why critical: Wrong timer parameters β†’ Entities update at wrong timesWithout timer override on re-schedule β†’ Multiple parallel timers β†’ Performance problem ","version":"Next 🚧","tagName":"h3"},{"title":"5. Sensor-to-Timer Assignment βœ…β€‹","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#5-sensor-to-timer-assignment-","content":" File: tests/test_sensor_timer_assignment.py What is tested: All TIME_SENSITIVE_ENTITY_KEYS are valid entity keysAll MINUTE_UPDATE_ENTITY_KEYS are valid entity keysBoth lists are disjoint (no overlap)Sensor and binary sensor platforms are checked Why critical: Wrong timer assignment β†’ Sensors update at wrong timesOverlap β†’ Duplicate updates β†’ Performance problem ","version":"Next 🚧","tagName":"h3"},{"title":"🚨 Additional Analysis (Nice-to-Have Patterns)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-additional-analysis-nice-to-have-patterns","content":" These patterns were analyzed and classified as not critical: ","version":"Next 🚧","tagName":"h2"},{"title":"6. Async Task Management​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#6-async-task-management","content":" Current Status: Fire-and-forget pattern for short tasks sensor/core.py β†’ Chart data refresh (short-lived, max 1-2 seconds)coordinator/core.py β†’ Cache storage (short-lived, max 100ms) Why no tests needed: No long-running tasks (all < 2 seconds)HA's event loop handles short tasks automaticallyTask exceptions are already logged If needed: _chart_refresh_task tracking + cancel in async_will_remove_from_hass() ","version":"Next 🚧","tagName":"h3"},{"title":"7. API Session Cleanup​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#7-api-session-cleanup","content":" Current Status: βœ… Correctly implemented async_get_clientsession(hass) is used (shared session)No new sessions are createdHA manages session lifecycle automatically Code: api/client.py + __init__.py ","version":"Next 🚧","tagName":"h3"},{"title":"8. Translation Cache Memory​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#8-translation-cache-memory","content":" Current Status: βœ… Bounded cache Max ~5-10 languages Γ— 5KB = 50KB totalModule-level cache without re-loadingPractically no memory issue Code: const.py β†’ _TRANSLATIONS_CACHE, _STANDARD_TRANSLATIONS_CACHE ","version":"Next 🚧","tagName":"h3"},{"title":"9. Coordinator Data Structure Integrity​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#9-coordinator-data-structure-integrity","content":" Current Status: Manually tested via ./scripts/develop Midnight turnover works correctly (observed over several days)Missing keys are handled via .get() with defaults80+ sensors access coordinator.data without errors Structure: coordinator.data = { "user_data": {...}, "priceInfo": [...], # Flat list of all enriched intervals "currency": "EUR" # Top-level for easy access } ","version":"Next 🚧","tagName":"h3"},{"title":"10. Service Response Memory​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#10-service-response-memory","content":" Current Status: HA's response lifecycle HA automatically frees service responses after returnApexCharts ~20KB response is one-time per callNo response accumulation in integration code Code: services/apexcharts.py ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ“Š Test Coverage Status​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-test-coverage-status","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"βœ… Implemented Tests (41 total)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-implemented-tests-41-total","content":" Category\tStatus\tTests\tFile\tCoverageListener Cleanup\tβœ…\t5\ttest_resource_cleanup.py\t100% Timer Cleanup\tβœ…\t4\ttest_resource_cleanup.py\t100% Config Entry Cleanup\tβœ…\t1\ttest_resource_cleanup.py\t100% Cache Invalidation\tβœ…\t3\ttest_resource_cleanup.py\t100% Storage Cleanup\tβœ…\t1\ttest_resource_cleanup.py\t100% Storage Persistence\tβœ…\t2\ttest_coordinator_shutdown.py\t100% Timer Scheduling\tβœ…\t8\ttest_timer_scheduling.py\t100% Sensor-Timer Assignment\tβœ…\t17\ttest_sensor_timer_assignment.py\t100% TOTAL\tβœ…\t41 100% (critical) ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ“‹ Analyzed but Not Implemented (Nice-to-Have)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-analyzed-but-not-implemented-nice-to-have","content":" Category\tStatus\tRationaleAsync Task Management\tπŸ“‹\tFire-and-forget pattern used (no long-running tasks) API Session Cleanup\tβœ…\tPattern correct (async_get_clientsession used) Translation Cache\tβœ…\tCache size bounded (~50KB max for 10 languages) Data Structure Integrity\tπŸ“‹\tWould add test time without finding real issues Service Response Memory\tπŸ“‹\tHA automatically frees service responses Legend: βœ… = Fully tested or pattern verified correctπŸ“‹ = Analyzed, low priority for testing (no known issues) ","version":"Next 🚧","tagName":"h3"},{"title":"🎯 Development Status​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-development-status","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"βœ… All Critical Patterns Tested​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-all-critical-patterns-tested","content":" All essential memory leak prevention patterns are covered by 41 tests: βœ… Listeners are correctly removed (no callback leaks)βœ… Timers are cancelled (no background task leaks)βœ… Config entry cleanup works (no dangling listeners)βœ… Caches are invalidated (no stale data issues)βœ… Storage is saved and cleaned up (no data loss)βœ… Timer scheduling works correctly (no update issues)βœ… Sensor-timer assignment is correct (no wrong updates) ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ“‹ Nice-to-Have Tests (Optional)​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-nice-to-have-tests-optional","content":" If problems arise in the future, these tests can be added: Async Task Management - Pattern analyzed (fire-and-forget for short tasks)Data Structure Integrity - Midnight rotation manually testedService Response Memory - HA's response lifecycle automatic Conclusion: The integration has production-quality test coverage for all critical resource leak patterns. ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ” How to Run Tests​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-how-to-run-tests","content":" # Run all resource cleanup tests (14 tests) ./scripts/test tests/test_resource_cleanup.py -v # Run all critical pattern tests (41 tests) ./scripts/test tests/test_resource_cleanup.py tests/test_coordinator_shutdown.py \\ tests/test_timer_scheduling.py tests/test_sensor_timer_assignment.py -v # Run all tests with coverage ./scripts/test --cov=custom_components.tibber_prices --cov-report=html # Type checking and linting ./scripts/check # Manual memory leak test # 1. Start HA: ./scripts/develop # 2. Monitor RAM: watch -n 1 'ps aux | grep home-assistant' # 3. Reload integration multiple times (HA UI: Settings β†’ Devices β†’ Tibber Prices β†’ Reload) # 4. RAM should stabilize (not grow continuously) ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“š References​","type":1,"pageTitle":"Critical Behavior Patterns - Testing Guide","url":"/hass.tibber_prices/developer/critical-patterns#-references","content":" Home Assistant Cleanup Patterns: https://developers.home-assistant.io/docs/integration_setup_failures/#cleanupAsync Best Practices: https://developers.home-assistant.io/docs/asyncio_101/Memory Profiling: https://docs.python.org/3/library/tracemalloc.html ","version":"Next 🚧","tagName":"h2"},{"title":"API Reference","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/api-reference","content":"","keywords":"","version":"Next 🚧"},{"title":"GraphQL Endpoint​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#graphql-endpoint","content":" https://api.tibber.com/v1-beta/gql Authentication: Bearer token in Authorization header ","version":"Next 🚧","tagName":"h2"},{"title":"Queries Used​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#queries-used","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"User Data Query​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#user-data-query","content":" Fetches home information and metadata: query { viewer { homes { id appNickname address { address1 postalCode city country } timeZone currentSubscription { priceInfo { current { currency } } } meteringPointData { consumptionEan gridAreaCode } } } } Cached for: 24 hours ","version":"Next 🚧","tagName":"h3"},{"title":"Price Data Query​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#price-data-query","content":" Fetches quarter-hourly prices: query($homeId: ID!) { viewer { home(id: $homeId) { currentSubscription { priceInfo { range(resolution: QUARTER_HOURLY, first: 384) { nodes { total startsAt level } } } } } } } Parameters: homeId: Tibber home identifierresolution: Always QUARTER_HOURLYfirst: 384 intervals (4 days of data) Cached until: Midnight local time ","version":"Next 🚧","tagName":"h3"},{"title":"Rate Limits​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#rate-limits","content":" Tibber API rate limits (as of 2024): 5000 requests per hour per tokenBurst limit: 100 requests per minute Integration stays well below these limits: Polls every 15 minutes = 96 requests/dayUser data cached for 24h = 1 request/dayTotal: ~100 requests/day per home ","version":"Next 🚧","tagName":"h2"},{"title":"Response Format​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#response-format","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Price Node Structure​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#price-node-structure","content":" { "total": 0.2456, "startsAt": "2024-12-06T14:00:00.000+01:00", "level": "NORMAL" } Fields: total: Price including VAT and fees (currency's major unit, e.g., EUR)startsAt: ISO 8601 timestamp with timezonelevel: Tibber's own classification (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) ","version":"Next 🚧","tagName":"h3"},{"title":"Currency Information​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#currency-information","content":" { "currency": "EUR" } Supported currencies: EUR (Euro) - displayed as ct/kWhNOK (Norwegian Krone) - displayed as ΓΈre/kWhSEK (Swedish Krona) - displayed as ΓΆre/kWh ","version":"Next 🚧","tagName":"h3"},{"title":"Error Handling​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#error-handling","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Common Error Responses​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#common-error-responses","content":" Invalid Token: { "errors": [{ "message": "Unauthorized", "extensions": { "code": "UNAUTHENTICATED" } }] } Rate Limit Exceeded: { "errors": [{ "message": "Too Many Requests", "extensions": { "code": "RATE_LIMIT_EXCEEDED" } }] } Home Not Found: { "errors": [{ "message": "Home not found", "extensions": { "code": "NOT_FOUND" } }] } Integration handles these with: Exponential backoff retry (3 attempts)ConfigEntryAuthFailed for auth errorsConfigEntryNotReady for temporary failures ","version":"Next 🚧","tagName":"h3"},{"title":"Data Transformation​","type":1,"pageTitle":"API Reference","url":"/hass.tibber_prices/developer/api-reference#data-transformation","content":" Raw API data is enriched with: Trailing 24h average - Calculated from previous intervalsLeading 24h average - Calculated from future intervalsPrice difference % - Deviation from averageCustom rating - Based on user thresholds (different from Tibber's level) See utils/price.py for enrichment logic. πŸ’‘ External Resources: Tibber API DocumentationGraphQL ExplorerGet API Token ","version":"Next 🚧","tagName":"h2"},{"title":"Debugging Guide","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/debugging","content":"","keywords":"","version":"Next 🚧"},{"title":"Logging​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#logging","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Enable Debug Logging​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#enable-debug-logging","content":" Add to configuration.yaml: logger: default: info logs: custom_components.tibber_prices: debug Restart Home Assistant to apply. ","version":"Next 🚧","tagName":"h3"},{"title":"Key Log Messages​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#key-log-messages","content":" Coordinator Updates: [custom_components.tibber_prices.coordinator] Successfully fetched price data [custom_components.tibber_prices.coordinator] Cache valid, using cached data [custom_components.tibber_prices.coordinator] Midnight turnover detected, clearing cache Period Calculation: [custom_components.tibber_prices.coordinator.periods] Calculating BEST PRICE periods: flex=15.0% [custom_components.tibber_prices.coordinator.periods] Day 2024-12-06: Found 2 periods [custom_components.tibber_prices.coordinator.periods] Period 1: 02:00-05:00 (12 intervals) API Errors: [custom_components.tibber_prices.api] API request failed: Unauthorized [custom_components.tibber_prices.api] Retrying (attempt 2/3) after 2.0s ","version":"Next 🚧","tagName":"h3"},{"title":"VS Code Debugging​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#vs-code-debugging","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Launch Configuration​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#launch-configuration","content":" .vscode/launch.json: { "version": "0.2.0", "configurations": [ { "name": "Home Assistant", "type": "debugpy", "request": "launch", "module": "homeassistant", "args": ["-c", "config", "--debug"], "justMyCode": false, "env": { "PYTHONPATH": "${workspaceFolder}/.venv/lib/python3.13/site-packages" } } ] } ","version":"Next 🚧","tagName":"h3"},{"title":"Set Breakpoints​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#set-breakpoints","content":" Coordinator update: # coordinator/core.py async def _async_update_data(self) -> dict: """Fetch data from API.""" breakpoint() # Or set VS Code breakpoint Period calculation: # coordinator/period_handlers/core.py def calculate_periods(...) -> list[dict]: """Calculate best/peak price periods.""" breakpoint() ","version":"Next 🚧","tagName":"h3"},{"title":"pytest Debugging​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#pytest-debugging","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Run Single Test with Output​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#run-single-test-with-output","content":" .venv/bin/python -m pytest tests/test_period_calculation.py::test_midnight_crossing -v -s Flags: -v - Verbose output-s - Show print statements-k pattern - Run tests matching pattern ","version":"Next 🚧","tagName":"h3"},{"title":"Debug Test in VS Code​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#debug-test-in-vs-code","content":" Set breakpoint in test file, use "Debug Test" CodeLens. ","version":"Next 🚧","tagName":"h3"},{"title":"Useful Test Patterns​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#useful-test-patterns","content":" Print coordinator data: def test_something(coordinator): print(f"Coordinator data: {coordinator.data}") print(f"Price info count: {len(coordinator.data['priceInfo'])}") Inspect period attributes: def test_periods(hass, coordinator): periods = coordinator.data.get('best_price_periods', []) for period in periods: print(f"Period: {period['start']} to {period['end']}") print(f" Intervals: {len(period['intervals'])}") ","version":"Next 🚧","tagName":"h3"},{"title":"Common Issues​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#common-issues","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Integration Not Loading​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#integration-not-loading","content":" Check: grep "tibber_prices" config/home-assistant.log Common causes: Syntax error in Python code β†’ Check logs for tracebackMissing dependency β†’ Run uv syncWrong file permissions β†’ chmod +x scripts/* ","version":"Next 🚧","tagName":"h3"},{"title":"Sensors Not Updating​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#sensors-not-updating","content":" Check coordinator state: # In Developer Tools > Template {{ states.sensor.tibber_home_current_interval_price.last_updated }} Debug in code: # Add logging in sensor/core.py _LOGGER.debug("Updating sensor %s: old=%s new=%s", self.entity_id, self._attr_native_value, new_value) ","version":"Next 🚧","tagName":"h3"},{"title":"Period Calculation Wrong​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#period-calculation-wrong","content":" Enable detailed period logs: # coordinator/period_handlers/period_building.py _LOGGER.debug("Candidate intervals: %s", [(i['startsAt'], i['total']) for i in candidates]) Check filter statistics: [period_building] Flex filter blocked: 45 intervals [period_building] Min distance blocked: 12 intervals [period_building] Level filter blocked: 8 intervals ","version":"Next 🚧","tagName":"h3"},{"title":"Performance Profiling​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#performance-profiling","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Time Execution​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#time-execution","content":" import time start = time.perf_counter() result = expensive_function() duration = time.perf_counter() - start _LOGGER.debug("Function took %.3fs", duration) ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Usage​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#memory-usage","content":" import tracemalloc tracemalloc.start() # ... your code ... current, peak = tracemalloc.get_traced_memory() _LOGGER.debug("Memory: current=%d peak=%d", current, peak) tracemalloc.stop() ","version":"Next 🚧","tagName":"h3"},{"title":"Profile with cProfile​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#profile-with-cprofile","content":" python -m cProfile -o profile.stats -m homeassistant -c config python -m pstats profile.stats # Then: sort cumtime, stats 20 ","version":"Next 🚧","tagName":"h3"},{"title":"Live Debugging in Running HA​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#live-debugging-in-running-ha","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Remote Debugging with debugpy​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#remote-debugging-with-debugpy","content":" Add to coordinator code: import debugpy debugpy.listen(5678) _LOGGER.info("Waiting for debugger attach on port 5678") debugpy.wait_for_client() Connect from VS Code with remote attach configuration. ","version":"Next 🚧","tagName":"h3"},{"title":"IPython REPL​","type":1,"pageTitle":"Debugging Guide","url":"/hass.tibber_prices/developer/debugging#ipython-repl","content":" Install in container: uv pip install ipython Add breakpoint: from IPython import embed embed() # Drops into interactive shell πŸ’‘ Related: Testing Guide - Writing and running testsSetup Guide - Development environmentArchitecture - Code structure ","version":"Next 🚧","tagName":"h3"},{"title":"Developer Documentation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/intro","content":"","keywords":"","version":"Next 🚧"},{"title":"πŸ“š Developer Guides​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-developer-guides","content":" Setup - DevContainer, environment setup, and dependenciesArchitecture - Code structure, patterns, and conventionsPeriod Calculation Theory - Mathematical foundations, Flex/Distance interaction, Relaxation strategyTimer Architecture - Timer system, scheduling, coordination (3 independent timers)Caching Strategy - Cache layers, invalidation, debuggingTesting - How to run tests and write new test casesRelease Management - Release workflow and versioning processCoding Guidelines - Style guide, linting, and best practicesRefactoring Guide - How to plan and execute major refactorings ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ€– AI Documentation​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-ai-documentation","content":" The main AI/Copilot documentation is in AGENTS.md. This file serves as long-term memory for AI assistants and contains: Detailed architectural patternsCode quality rules and conventionsDevelopment workflow guidanceCommon pitfalls and anti-patternsProject-specific patterns and utilities Important: When proposing changes to patterns or conventions, always update AGENTS.md to keep AI guidance consistent. ","version":"Next 🚧","tagName":"h2"},{"title":"AI-Assisted Development​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#ai-assisted-development","content":" This integration is developed with extensive AI assistance (GitHub Copilot, Claude, and other AI tools). The AI handles: Pattern Recognition: Understanding and applying Home Assistant best practicesCode Generation: Implementing features with proper type hints, error handling, and documentationRefactoring: Maintaining consistency across the codebase during structural changesTranslation Management: Keeping 5 language files synchronizedDocumentation: Generating and maintaining comprehensive documentation Quality Assurance: Automated linting with Ruff (120-char line length, max complexity 25)Home Assistant's type checking and validationReal-world testing in development environmentCode review by maintainer before merging Benefits: Rapid feature development while maintaining qualityConsistent code patterns across all modulesComprehensive documentation maintained alongside codeQuick bug fixes with proper understanding of context Limitations: AI may occasionally miss edge cases or subtle bugsSome complex Home Assistant patterns may need human reviewTranslation quality depends on AI's understanding of target languageUser feedback is crucial for discovering real-world issues If you're working with AI tools on this project, the AGENTS.md file provides the context and patterns that ensure consistency. ","version":"Next 🚧","tagName":"h3"},{"title":"πŸš€ Quick Start for Contributors​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-quick-start-for-contributors","content":" Fork and clone the repositoryOpen in DevContainer (VS Code: "Reopen in Container")Run setup: ./scripts/setup/setup (happens automatically via postCreateCommand)Start development environment: ./scripts/developMake your changes following the Coding GuidelinesRun linting: ./scripts/lintValidate integration: ./scripts/release/hassfestTest your changes in the running Home Assistant instanceCommit using Conventional Commits formatOpen a Pull Request with clear description ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ› οΈ Development Tools​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#️-development-tools","content":" The project includes several helper scripts in ./scripts/: bootstrap - Initial setup of dependenciesdevelop - Start Home Assistant in debug mode (auto-cleans .egg-info)clean - Remove build artifacts and cacheslint - Auto-fix code issues with rufflint-check - Check code without modifications (CI mode)hassfest - Validate integration structure (JSON, Python syntax, required files)setup - Install development tools (git-cliff, @github/copilot)prepare-release - Prepare a new release (bump version, create tag)generate-release-notes - Generate release notes from commits ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“¦ Project Structure​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-project-structure","content":" custom_components/tibber_prices/ β”œβ”€β”€ __init__.py # Integration setup β”œβ”€β”€ coordinator.py # Data update coordinator with caching β”œβ”€β”€ api.py # Tibber GraphQL API client β”œβ”€β”€ price_utils.py # Price enrichment functions β”œβ”€β”€ average_utils.py # Average calculation utilities β”œβ”€β”€ sensor/ # Sensor platform (package) β”‚ β”œβ”€β”€ __init__.py # Platform setup β”‚ β”œβ”€β”€ core.py # TibberPricesSensor class β”‚ β”œβ”€β”€ definitions.py # Entity descriptions β”‚ β”œβ”€β”€ helpers.py # Pure helper functions β”‚ └── attributes.py # Attribute builders β”œβ”€β”€ binary_sensor.py # Binary sensor platform β”œβ”€β”€ entity_utils/ # Shared entity helpers β”‚ β”œβ”€β”€ icons.py # Icon mapping logic β”‚ β”œβ”€β”€ colors.py # Color mapping logic β”‚ └── attributes.py # Common attribute builders β”œβ”€β”€ services.py # Custom services β”œβ”€β”€ config_flow.py # UI configuration flow β”œβ”€β”€ const.py # Constants and helpers β”œβ”€β”€ translations/ # Standard HA translations └── custom_translations/ # Extended translations (descriptions) ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ” Key Concepts​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-key-concepts","content":" DataUpdateCoordinator Pattern: Centralized data fetching and cachingAutomatic entity updates on data changesPersistent storage via StoreQuarter-hour boundary refresh scheduling Price Data Enrichment: Raw API data is enriched with statistical analysisTrailing/leading 24h averages calculated per intervalPrice differences and ratings addedAll via pure functions in price_utils.py Translation System: Dual system: /translations/ (HA schema) + /custom_translations/ (extended)Both must stay in sync across all languages (de, en, nb, nl, sv)Async loading at integration setup ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ§ͺ Testing​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-testing","content":" # Validate integration structure ./scripts/release/hassfest # Run all tests pytest tests/ # Run specific test file pytest tests/test_coordinator.py # Run with coverage pytest --cov=custom_components.tibber_prices tests/ ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“ Documentation Standards​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-documentation-standards","content":" User-facing docs go in docs/user/Developer docs go in docs/development/AI guidance goes in AGENTS.mdUse clear examples and code snippetsKeep docs up-to-date with code changes ","version":"Next 🚧","tagName":"h2"},{"title":"🀝 Contributing​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-contributing","content":" See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and pull request process. ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“„ License​","type":1,"pageTitle":"Developer Documentation","url":"/hass.tibber_prices/developer/intro#-license","content":" This project is licensed under the Apache License 2.0. Note: This documentation is for developers. End users should refer to the User Documentation. ","version":"Next 🚧","tagName":"h2"},{"title":"Refactoring Guide","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/refactoring-guide","content":"","keywords":"","version":"Next 🚧"},{"title":"When to Plan a Refactoring​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#when-to-plan-a-refactoring","content":" Not every code change needs a detailed plan. Create a refactoring plan when: πŸ”΄ Major changes requiring planning: Splitting modules into packages (>5 files affected, >500 lines moved)Architectural changes (new packages, module restructuring)Breaking changes (API changes, config format migrations) 🟑 Medium changes that might benefit from planning: Complex features with multiple moving partsChanges affecting many files (>3 files, unclear best approach)Refactorings with unclear scope 🟒 Small changes - no planning needed: Bug fixes (straightforward, <100 lines)Small features (<3 files, clear approach)Documentation updatesCosmetic changes (formatting, renaming) ","version":"Next 🚧","tagName":"h2"},{"title":"The Planning Process​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#the-planning-process","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Create a Planning Document​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#1-create-a-planning-document","content":" Create a file in the planning/ directory (git-ignored for free iteration): # Example: touch planning/my-feature-refactoring-plan.md Note: The planning/ directory is git-ignored, so you can iterate freely without polluting git history. ","version":"Next 🚧","tagName":"h3"},{"title":"2. Use the Planning Template​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#2-use-the-planning-template","content":" Every planning document should include: # <Feature> Refactoring Plan **Status**: πŸ”„ PLANNING | 🚧 IN PROGRESS | βœ… COMPLETED | ❌ CANCELLED **Created**: YYYY-MM-DD **Last Updated**: YYYY-MM-DD ## Problem Statement - What's the issue? - Why does it need fixing? - Current pain points ## Proposed Solution - High-level approach - File structure (before/after) - Module responsibilities ## Migration Strategy - Phase-by-phase breakdown - File lifecycle (CREATE/MODIFY/DELETE/RENAME) - Dependencies between phases - Testing checkpoints ## Risks & Mitigation - What could go wrong? - How to prevent it? - Rollback strategy ## Success Criteria - Measurable improvements - Testing requirements - Verification steps See planning/README.md for detailed template explanation. ","version":"Next 🚧","tagName":"h3"},{"title":"3. Iterate Freely​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#3-iterate-freely","content":" Since planning/ is git-ignored: Draft multiple versionsGet AI assistance without commit pressureRefine until the plan is solidNo need to clean up intermediate versions ","version":"Next 🚧","tagName":"h3"},{"title":"4. Implementation Phase​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#4-implementation-phase","content":" Once plan is approved: Follow the phases defined in the planTest after each phase (don't skip!)Update plan if issues discoveredTrack progress through phase status ","version":"Next 🚧","tagName":"h3"},{"title":"5. After Completion​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#5-after-completion","content":" Option A: Archive in docs/development/If the plan has lasting value (successful pattern, reusable approach): mv planning/my-feature-refactoring-plan.md docs/development/ git add docs/development/my-feature-refactoring-plan.md git commit -m "docs: archive successful refactoring plan" Option B: DeleteIf the plan served its purpose and code is the source of truth: rm planning/my-feature-refactoring-plan.md Option C: Keep locally (not committed)For "why we didn't do X" reference: mkdir -p planning/archive mv planning/my-feature-refactoring-plan.md planning/archive/ # Still git-ignored, just organized ","version":"Next 🚧","tagName":"h3"},{"title":"Real-World Example​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#real-world-example","content":" The sensor/ package refactoring (Nov 2025) is a successful example: Before: sensor.py - 2,574 lines, hard to navigate After: sensor/ package with 5 focused modulesEach module <800 linesClear separation of concerns Process: Created planning/module-splitting-plan.md (now in docs/development/)Defined 6 phases with clear file lifecycleImplemented phase by phaseTested after each phaseDocumented in AGENTS.mdMoved plan to docs/development/ as reference Key learnings: Temporary _impl.py files avoid Python package conflictsTest after EVERY phase (don't accumulate changes)Clear file lifecycle (CREATE/MODIFY/DELETE/RENAME)Phase-by-phase approach enables safe rollback Note: The complete module splitting plan was documented during implementation but has been superseded by the actual code structure. ","version":"Next 🚧","tagName":"h2"},{"title":"Phase-by-Phase Implementation​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#phase-by-phase-implementation","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Why Phases Matter​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#why-phases-matter","content":" Breaking refactorings into phases: βœ… Enables testing after each change (catch bugs early)βœ… Allows rollback to last good stateβœ… Makes progress visibleβœ… Reduces cognitive load (focus on one thing)❌ Takes more time (but worth it!) ","version":"Next 🚧","tagName":"h3"},{"title":"Phase Structure​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#phase-structure","content":" Each phase should: Have clear goal - What's being changed?Document file lifecycle - CREATE/MODIFY/DELETE/RENAMEDefine success criteria - How to verify it worked?Include testing steps - What to test?Estimate time - Realistic time budget ","version":"Next 🚧","tagName":"h3"},{"title":"Example Phase Documentation​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#example-phase-documentation","content":" ### Phase 3: Extract Helper Functions (Session 3) **Goal**: Move pure utility functions to helpers.py **File Lifecycle**: - ✨ CREATE `sensor/helpers.py` (utility functions) - ✏️ MODIFY `sensor/core.py` (import from helpers.py) **Steps**: 1. Create sensor/helpers.py 2. Move pure functions (no state, no self) 3. Add comprehensive docstrings 4. Update imports in core.py **Estimated time**: 45 minutes **Success criteria**: - βœ… All pure functions moved - βœ… `./scripts/lint-check` passes - βœ… HA starts successfully - βœ… All entities work correctly ","version":"Next 🚧","tagName":"h3"},{"title":"Testing Strategy​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#testing-strategy","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"After Each Phase​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#after-each-phase","content":" Minimum testing checklist: # 1. Linting passes ./scripts/lint-check # 2. Home Assistant starts ./scripts/develop # Watch for startup errors in logs # 3. Integration loads # Check: Settings β†’ Devices & Services β†’ Tibber Prices # Verify: All entities appear # 4. Basic functionality # Test: Data updates without errors # Check: Entity states update correctly ","version":"Next 🚧","tagName":"h3"},{"title":"Comprehensive Testing (Final Phase)​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#comprehensive-testing-final-phase","content":" After completing all phases: Test all entities (sensors, binary sensors)Test configuration flow (add/modify/remove)Test options flow (change settings)Test services (custom service calls)Test error handling (disconnect API, invalid data)Test caching (restart HA, verify cache loads)Test time-based updates (quarter-hour refresh) ","version":"Next 🚧","tagName":"h3"},{"title":"Common Pitfalls​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#common-pitfalls","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"❌ Skip Planning for Large Changes​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#-skip-planning-for-large-changes","content":" Problem: "This seems straightforward, I'll just start coding..." Result: Halfway through, realize the approach doesn't work. Wasted time. Solution: If unsure, spend 30 minutes on a rough plan. Better to plan and discard than get stuck. ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Implement All Phases at Once​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#-implement-all-phases-at-once","content":" Problem: "I'll do all phases, then test everything..." Result: 10+ files changed, 2000+ lines modified, hard to debug if something breaks. Solution: Test after EVERY phase. Commit after each successful phase. ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Forget to Update Documentation​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#-forget-to-update-documentation","content":" Problem: Code is refactored, but AGENTS.md and docs/ still reference old structure. Result: AI/humans get confused by outdated documentation. Solution: Include "Documentation Phase" at the end of every refactoring plan. ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Ignore the Planning Directory​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#-ignore-the-planning-directory","content":" Problem: "I'll just create the plan in docs/ directly..." Result: Git history polluted with draft iterations, or pressure to "commit something" too early. Solution: Always use planning/ for work-in-progress. Move to docs/ only when done. ","version":"Next 🚧","tagName":"h3"},{"title":"Integration with AI Development​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#integration-with-ai-development","content":" This project uses AI heavily (GitHub Copilot, Claude). The planning process supports AI development: AI reads from: AGENTS.md - Long-term memory, patterns, conventions (AI-focused)docs/development/ - Human-readable guides (human-focused)planning/ - Active refactoring plans (shared context) AI updates: AGENTS.md - When patterns changeplanning/*.md - During refactoring implementationdocs/development/ - After successful completion Why separate AGENTS.md and docs/development/? AGENTS.md: Technical, comprehensive, AI-optimizeddocs/development/: Practical, focused, human-optimizedBoth stay in sync but serve different audiences See AGENTS.md section "Planning Major Refactorings" for AI-specific guidance. ","version":"Next 🚧","tagName":"h2"},{"title":"Tools and Resources​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#tools-and-resources","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Planning Directory​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#planning-directory","content":" planning/ - Git-ignored workspace for draftsplanning/README.md - Detailed planning documentationplanning/*.md - Active refactoring plans ","version":"Next 🚧","tagName":"h3"},{"title":"Example Plans​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#example-plans","content":" docs/development/module-splitting-plan.md - βœ… Completed, archivedplanning/config-flow-refactoring-plan.md - πŸ”„ Planned (1013 lines β†’ 4 modules)planning/binary-sensor-refactoring-plan.md - πŸ”„ Planned (644 lines β†’ 4 modules)planning/coordinator-refactoring-plan.md - πŸ”„ Planned (1446 lines, high complexity) ","version":"Next 🚧","tagName":"h3"},{"title":"Helper Scripts​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#helper-scripts","content":" ./scripts/lint-check # Verify code quality ./scripts/develop # Start HA for testing ./scripts/lint # Auto-fix issues ","version":"Next 🚧","tagName":"h3"},{"title":"FAQ​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#faq","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Q: When should I create a plan vs. just start coding?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-when-should-i-create-a-plan-vs-just-start-coding","content":" A: If you're asking this question, you probably need a plan. 😊 Simple rule: If you can't describe the entire change in 3 sentences, create a plan. ","version":"Next 🚧","tagName":"h3"},{"title":"Q: How detailed should the plan be?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-how-detailed-should-the-plan-be","content":" A: Detailed enough to execute without major surprises, but not a line-by-line script. Good plan level: Lists all files affected (CREATE/MODIFY/DELETE)Defines phases with clear boundariesIncludes testing strategyEstimates time per phase Too detailed: Exact code snippets for every changeLine-by-line instructions Too vague: "Refactor sensor.py to be better"No phase breakdownNo testing strategy ","version":"Next 🚧","tagName":"h3"},{"title":"Q: What if the plan changes during implementation?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-what-if-the-plan-changes-during-implementation","content":" A: Update the plan! Planning documents are living documents. If you discover: Better approach β†’ Update "Proposed Solution"More phases needed β†’ Add to "Migration Strategy"New risks β†’ Update "Risks & Mitigation" Document WHY the plan changed (helps future refactorings). ","version":"Next 🚧","tagName":"h3"},{"title":"Q: Should every refactoring follow this process?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-should-every-refactoring-follow-this-process","content":" A: No! Use judgment: Small changes (<100 lines, clear approach): Just do it, no plan neededMedium changes (unclear scope): Write rough outline, refine if neededLarge changes (>500 lines, >5 files): Full planning process ","version":"Next 🚧","tagName":"h3"},{"title":"Q: How do I know when a refactoring is successful?​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#q-how-do-i-know-when-a-refactoring-is-successful","content":" A: Check the "Success Criteria" from your plan: Typical criteria: βœ… All linting checks passβœ… HA starts without errorsβœ… All entities functionalβœ… No regressions (existing features work)βœ… Code easier to understand/modifyβœ… Documentation updated If you can't tick all boxes, the refactoring isn't done. ","version":"Next 🚧","tagName":"h3"},{"title":"Summary​","type":1,"pageTitle":"Refactoring Guide","url":"/hass.tibber_prices/developer/refactoring-guide#summary","content":" Key takeaways: Plan when scope is unclear (>500 lines, >5 files, breaking changes)Use planning/ directory for free iteration (git-ignored)Work in phases and test after each phaseDocument file lifecycle (CREATE/MODIFY/DELETE/RENAME)Update documentation after completion (AGENTS.md, docs/)Archive or delete plan after implementation Remember: Good planning prevents half-finished refactorings and makes rollback easier when things go wrong. Next steps: Read planning/README.md for detailed templateCheck docs/development/module-splitting-plan.md for real exampleBrowse planning/ for active refactoring plans ","version":"Next 🚧","tagName":"h2"},{"title":"Release Notes Generation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/release-management","content":"","keywords":"","version":"Next 🚧"},{"title":"πŸš€ Quick Start: Preparing a Release​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-quick-start-preparing-a-release","content":" Recommended workflow (automatic & foolproof): # 1. Use the helper script to prepare release ./scripts/release/prepare 0.3.0 # This will: # - Update manifest.json version to 0.3.0 # - Create commit: "chore(release): bump version to 0.3.0" # - Create tag: v0.3.0 # - Show you what will be pushed # 2. Review and push when ready git push origin main v0.3.0 # 3. CI/CD automatically: # - Detects the new tag # - Generates release notes (excluding version bump commit) # - Creates GitHub release If you forget to bump manifest.json: # Just edit manifest.json manually and commit vim custom_components/tibber_prices/manifest.json # "version": "0.3.0" git commit -am "chore(release): bump version to 0.3.0" git push # Auto-Tag workflow detects manifest.json change and creates tag automatically! # Then Release workflow kicks in and creates the GitHub release ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ“‹ Release Options​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-release-options","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. GitHub UI Button (Easiest)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#1-github-ui-button-easiest","content":" Use GitHub's built-in release notes generator: Go to ReleasesClick "Draft a new release"Select your tagClick "Generate release notes" buttonEdit if needed and publish Uses: .github/release.yml configurationBest for: Quick releases, works with PRs that have labelsNote: Direct commits appear in "Other Changes" category ","version":"Next 🚧","tagName":"h3"},{"title":"2. Local Script (Intelligent)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#2-local-script-intelligent","content":" Run ./scripts/release/generate-notes to parse conventional commits locally. Automatic backend detection: # Generate from latest tag to HEAD ./scripts/release/generate-notes # Generate between specific tags ./scripts/release/generate-notes v1.0.0 v1.1.0 # Generate from tag to HEAD ./scripts/release/generate-notes v1.0.0 HEAD Force specific backend: # Use AI (GitHub Copilot CLI) RELEASE_NOTES_BACKEND=copilot ./scripts/release/generate-notes # Use git-cliff (template-based) RELEASE_NOTES_BACKEND=git-cliff ./scripts/release/generate-notes # Use manual parsing (grep/awk fallback) RELEASE_NOTES_BACKEND=manual ./scripts/release/generate-notes Disable AI (useful for CI/CD): USE_AI=false ./scripts/release/generate-notes Backend Priority​ The script automatically selects the best available backend: GitHub Copilot CLI - AI-powered, context-aware (best quality)git-cliff - Fast Rust tool with templates (reliable)Manual - Simple grep/awk parsing (always works) In CI/CD ($CI or $GITHUB_ACTIONS), AI is automatically disabled. Installing Optional Backends​ In DevContainer (automatic): git-cliff is automatically installed when the DevContainer is built: Rust toolchain: Installed via ghcr.io/devcontainers/features/rust:1 (minimal profile)git-cliff: Installed via cargo in scripts/setup/setup Simply rebuild the container (VS Code: "Dev Containers: Rebuild Container") and git-cliff will be available. Manual installation (outside DevContainer): git-cliff (template-based): # See: https://git-cliff.org/docs/installation # macOS brew install git-cliff # Cargo (all platforms) cargo install git-cliff # Manual binary download wget https://github.com/orhun/git-cliff/releases/latest/download/git-cliff-x86_64-unknown-linux-gnu.tar.gz tar -xzf git-cliff-*.tar.gz sudo mv git-cliff-*/git-cliff /usr/local/bin/ ","version":"Next 🚧","tagName":"h3"},{"title":"3. CI/CD Automation​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#3-cicd-automation","content":" Automatic release notes on tag push. Workflow: .github/workflows/release.yml Triggers: Version tags (v1.0.0, v2.1.3, etc.) # Create and push a tag to trigger automatic release git tag v1.0.0 git push origin v1.0.0 # GitHub Actions will: # 1. Detect the new tag # 2. Generate release notes using git-cliff # 3. Create a GitHub release automatically Backend: Uses git-cliff (AI disabled in CI for reliability) ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ“ Output Format​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-output-format","content":" All methods produce GitHub-flavored Markdown with emoji categories: ## πŸŽ‰ New Features - **scope**: Description ([abc1234](link-to-commit)) ## πŸ› Bug Fixes - **scope**: Description ([def5678](link-to-commit)) ## πŸ“š Documentation - **scope**: Description ([ghi9012](link-to-commit)) ## πŸ”§ Maintenance & Refactoring - **scope**: Description ([jkl3456](link-to-commit)) ## πŸ§ͺ Testing - **scope**: Description ([mno7890](link-to-commit)) ","version":"Next 🚧","tagName":"h2"},{"title":"🎯 When to Use Which​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-when-to-use-which","content":" Method\tUse Case\tPros\tConsHelper Script\tNormal releases\tFoolproof, automatic\tRequires script Auto-Tag Workflow\tForgot script\tSafety net, automatic tagging\tStill need manifest bump GitHub Button\tManual quick release\tEasy, no script\tLimited categorization Local Script\tTesting release notes\tPreview before release\tManual process CI/CD\tAfter tag push\tFully automatic\tNeeds tag first ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ”„ Complete Release Workflows​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-complete-release-workflows","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Workflow A: Using Helper Script (Recommended)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#workflow-a-using-helper-script-recommended","content":" # Step 1: Prepare release (all-in-one) ./scripts/release/prepare 0.3.0 # Step 2: Review changes git log -1 --stat git show v0.3.0 # Step 3: Push when ready git push origin main v0.3.0 # Done! CI/CD creates the release automatically What happens: Script bumps manifest.json β†’ commits β†’ creates tag locallyYou push commit + tag togetherRelease workflow sees tag β†’ generates notes β†’ creates release ","version":"Next 🚧","tagName":"h3"},{"title":"Workflow B: Manual (with Auto-Tag Safety Net)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#workflow-b-manual-with-auto-tag-safety-net","content":" # Step 1: Bump version manually vim custom_components/tibber_prices/manifest.json # Change: "version": "0.3.0" # Step 2: Commit git commit -am "chore(release): bump version to 0.3.0" git push # Step 3: Wait for Auto-Tag workflow # GitHub Actions automatically creates v0.3.0 tag # Then Release workflow creates the release What happens: You push manifest.json changeAuto-Tag workflow detects change β†’ creates tag automaticallyRelease workflow sees new tag β†’ creates release ","version":"Next 🚧","tagName":"h3"},{"title":"Workflow C: Manual Tag (Old Way)​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#workflow-c-manual-tag-old-way","content":" # Step 1: Bump version vim custom_components/tibber_prices/manifest.json git commit -am "chore(release): bump version to 0.3.0" # Step 2: Create tag manually git tag v0.3.0 git push origin main v0.3.0 # Release workflow creates release What happens: You create and push tag manuallyRelease workflow creates releaseAuto-Tag workflow skips (tag already exists) ","version":"Next 🚧","tagName":"h3"},{"title":"βš™οΈ Configuration Files​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#️-configuration-files","content":" scripts/release/prepare - Helper script to bump version + create tag.github/workflows/auto-tag.yml - Automatic tag creation on manifest.json change.github/workflows/release.yml - Automatic release on tag push.github/release.yml - GitHub UI button configurationcliff.toml - git-cliff template (filters out version bumps) ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ›‘οΈ Safety Features​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#️-safety-features","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Version Validation​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#1-version-validation","content":" Both helper script and auto-tag workflow validate version format (X.Y.Z). ","version":"Next 🚧","tagName":"h3"},{"title":"2. No Duplicate Tags​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#2-no-duplicate-tags","content":" Helper script checks if tag exists (local + remote)Auto-tag workflow checks if tag exists before creating ","version":"Next 🚧","tagName":"h3"},{"title":"3. Atomic Operations​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#3-atomic-operations","content":" Helper script creates commit + tag locally. You decide when to push. ","version":"Next 🚧","tagName":"h3"},{"title":"4. Version Bumps Filtered​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#4-version-bumps-filtered","content":" Release notes automatically exclude chore(release): bump version commits. ","version":"Next 🚧","tagName":"h3"},{"title":"5. Rollback Instructions​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#5-rollback-instructions","content":" Helper script shows how to undo if you change your mind. ","version":"Next 🚧","tagName":"h3"},{"title":"πŸ› Troubleshooting​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-troubleshooting","content":" "Tag already exists" error: # Local tag git tag -d v0.3.0 # Remote tag (only if you need to recreate) git push origin :refs/tags/v0.3.0 Manifest version doesn't match tag: This shouldn't happen with the new workflows, but if it does: # 1. Fix manifest.json vim custom_components/tibber_prices/manifest.json # 2. Amend the commit git commit --amend -am "chore(release): bump version to 0.3.0" # 3. Move the tag git tag -f v0.3.0 git push -f origin main v0.3.0 Auto-tag didn't create tag: Check workflow runs in GitHub Actions. Common causes: Tag already exists remotelyInvalid version format in manifest.jsonmanifest.json not in the commit that was pushed ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ” Format Requirements​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-format-requirements","content":" HACS: No specific format required, uses GitHub releases as-isHome Assistant: No specific format required for custom integrationsMarkdown: Standard GitHub-flavored Markdown supportedHTML: Can include <ha-alert> tags if needed ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ’‘ Tips​","type":1,"pageTitle":"Release Notes Generation","url":"/hass.tibber_prices/developer/release-management#-tips","content":" Conventional Commits: Use proper commit format for best results: feat(scope): Add new feature Detailed description of what changed. Impact: Users can now do X and Y. Impact Section: Add Impact: in commit body for user-friendly descriptions Test Locally: Run ./scripts/release/generate-notes before creating release AI vs Template: GitHub Copilot CLI provides better descriptions, git-cliff is faster and more reliable CI/CD: Tag push triggers automatic release - no manual intervention needed ","version":"Next 🚧","tagName":"h2"},{"title":"Performance Optimization","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/performance","content":"","keywords":"","version":"Next 🚧"},{"title":"Performance Goals​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#performance-goals","content":" Target metrics: Coordinator update: <500ms (typical: 200-300ms)Sensor update: <10ms per sensorPeriod calculation: <100ms (typical: 20-50ms)Memory footprint: <10MB per homeAPI calls: <100 per day per home ","version":"Next 🚧","tagName":"h2"},{"title":"Profiling​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#profiling","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Timing Decorator​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#timing-decorator","content":" Use for performance-critical functions: import time import functools def timing(func): @functools.wraps(func) def wrapper(*args, **kwargs): start = time.perf_counter() result = func(*args, **kwargs) duration = time.perf_counter() - start _LOGGER.debug("%s took %.3fms", func.__name__, duration * 1000) return result return wrapper @timing def expensive_calculation(): # Your code here ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Profiling​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#memory-profiling","content":" import tracemalloc tracemalloc.start() # Run your code current, peak = tracemalloc.get_traced_memory() _LOGGER.info("Memory: current=%.2fMB peak=%.2fMB", current / 1024**2, peak / 1024**2) tracemalloc.stop() ","version":"Next 🚧","tagName":"h3"},{"title":"Async Profiling​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#async-profiling","content":" # Install aioprof uv pip install aioprof # Run with profiling python -m aioprof homeassistant -c config ","version":"Next 🚧","tagName":"h3"},{"title":"Optimization Patterns​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#optimization-patterns","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Caching​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#caching","content":" 1. Persistent Cache (API data): # Already implemented in coordinator/cache.py store = Store(hass, STORAGE_VERSION, STORAGE_KEY) data = await store.async_load() 2. Translation Cache (in-memory): # Already implemented in const.py _TRANSLATION_CACHE: dict[str, dict] = {} def get_translation(path: str, language: str) -> dict: cache_key = f"{path}_{language}" if cache_key not in _TRANSLATION_CACHE: _TRANSLATION_CACHE[cache_key] = load_translation(path, language) return _TRANSLATION_CACHE[cache_key] 3. Config Cache (invalidated on options change): class DataTransformer: def __init__(self): self._config_cache: dict | None = None def get_config(self) -> dict: if self._config_cache is None: self._config_cache = self._build_config() return self._config_cache def invalidate_config_cache(self): self._config_cache = None ","version":"Next 🚧","tagName":"h3"},{"title":"Lazy Loading​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#lazy-loading","content":" Load data only when needed: @property def extra_state_attributes(self) -> dict | None: """Return attributes.""" # Calculate only when accessed if self.entity_description.key == "complex_sensor": return self._calculate_complex_attributes() return None ","version":"Next 🚧","tagName":"h3"},{"title":"Bulk Operations​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#bulk-operations","content":" Process multiple items at once: # ❌ Slow - loop with individual operations for interval in intervals: enriched = enrich_single_interval(interval) results.append(enriched) # βœ… Fast - bulk processing results = enrich_intervals_bulk(intervals) ","version":"Next 🚧","tagName":"h3"},{"title":"Async Best Practices​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#async-best-practices","content":" 1. Concurrent API calls: # ❌ Sequential (slow) user_data = await fetch_user_data() price_data = await fetch_price_data() # βœ… Concurrent (fast) user_data, price_data = await asyncio.gather( fetch_user_data(), fetch_price_data() ) 2. Don't block event loop: # ❌ Blocking result = heavy_computation() # Blocks for seconds # βœ… Non-blocking result = await hass.async_add_executor_job(heavy_computation) ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Management​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#memory-management","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Avoid Memory Leaks​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#avoid-memory-leaks","content":" 1. Clear references: class Coordinator: async def async_shutdown(self): """Clean up resources.""" self._listeners.clear() self._data = None self._cache = None 2. Use weak references for callbacks: import weakref class Manager: def __init__(self): self._callbacks: list[weakref.ref] = [] def register(self, callback): self._callbacks.append(weakref.ref(callback)) ","version":"Next 🚧","tagName":"h3"},{"title":"Efficient Data Structures​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#efficient-data-structures","content":" Use appropriate types: # ❌ List for lookups (O(n)) if timestamp in timestamp_list: ... # βœ… Set for lookups (O(1)) if timestamp in timestamp_set: ... # ❌ List comprehension with filter results = [x for x in items if condition(x)] # βœ… Generator for large datasets results = (x for x in items if condition(x)) ","version":"Next 🚧","tagName":"h3"},{"title":"Coordinator Optimization​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#coordinator-optimization","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Minimize API Calls​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#minimize-api-calls","content":" Already implemented: Cache valid until midnightUser data cached for 24hOnly poll when tomorrow data expected Monitor API usage: _LOGGER.debug("API call: %s (cache_age=%s)", endpoint, cache_age) ","version":"Next 🚧","tagName":"h3"},{"title":"Smart Updates​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#smart-updates","content":" Only update when needed: async def _async_update_data(self) -> dict: """Fetch data from API.""" if self._is_cache_valid(): _LOGGER.debug("Using cached data") return self.data # Fetch new data return await self._fetch_data() ","version":"Next 🚧","tagName":"h3"},{"title":"Database Impact​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#database-impact","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"State Class Selection​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#state-class-selection","content":" Affects long-term statistics storage: # ❌ MEASUREMENT for prices (stores every change) state_class=SensorStateClass.MEASUREMENT # ~35K records/year # βœ… None for prices (no long-term stats) state_class=None # Only current state # βœ… TOTAL for counters only state_class=SensorStateClass.TOTAL # For cumulative values ","version":"Next 🚧","tagName":"h3"},{"title":"Attribute Size​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#attribute-size","content":" Keep attributes minimal: # ❌ Large nested structures (KB per update) attributes = { "all_intervals": [...], # 384 intervals "full_history": [...], # Days of data } # βœ… Essential data only (bytes per update) attributes = { "timestamp": "...", "rating_level": "...", "next_interval": "...", } ","version":"Next 🚧","tagName":"h3"},{"title":"Testing Performance​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#testing-performance","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Benchmark Tests​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#benchmark-tests","content":" import pytest import time @pytest.mark.benchmark def test_period_calculation_performance(coordinator): """Period calculation should complete in &lt;100ms.""" start = time.perf_counter() periods = calculate_periods(coordinator.data) duration = time.perf_counter() - start assert duration < 0.1, f"Too slow: {duration:.3f}s" ","version":"Next 🚧","tagName":"h3"},{"title":"Load Testing​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#load-testing","content":" @pytest.mark.integration async def test_multiple_homes_performance(hass): """Test with 10 homes.""" coordinators = [] for i in range(10): coordinator = create_coordinator(hass, home_id=f"home_{i}") await coordinator.async_refresh() coordinators.append(coordinator) # Verify memory usage # Verify update times ","version":"Next 🚧","tagName":"h3"},{"title":"Monitoring in Production​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#monitoring-in-production","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Log Performance Metrics​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#log-performance-metrics","content":" @timing async def _async_update_data(self) -> dict: """Fetch data with timing.""" result = await self._fetch_data() _LOGGER.info("Update completed in %.2fs", timing_duration) return result ","version":"Next 🚧","tagName":"h3"},{"title":"Memory Tracking​","type":1,"pageTitle":"Performance Optimization","url":"/hass.tibber_prices/developer/performance#memory-tracking","content":" import psutil import os process = psutil.Process(os.getpid()) memory_mb = process.memory_info().rss / 1024**2 _LOGGER.debug("Current memory usage: %.2f MB", memory_mb) πŸ’‘ Related: Caching Strategy - Cache layersArchitecture - System designDebugging - Profiling tools ","version":"Next 🚧","tagName":"h3"},{"title":"Testing","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/testing","content":"","keywords":"","version":"Next 🚧"},{"title":"Integration Validation​","type":1,"pageTitle":"Testing","url":"/hass.tibber_prices/developer/testing#integration-validation","content":" Before running tests or committing changes, validate the integration structure: # Run local validation (JSON syntax, Python syntax, required files) ./scripts/release/hassfest This lightweight script checks: βœ“ config_flow.py existsβœ“ manifest.json is valid JSON with required fieldsβœ“ Translation files have valid JSON syntaxβœ“ All Python files compile without syntax errors Note: Full hassfest validation runs in GitHub Actions on push. ","version":"Next 🚧","tagName":"h2"},{"title":"Running Tests​","type":1,"pageTitle":"Testing","url":"/hass.tibber_prices/developer/testing#running-tests","content":" # Run all tests pytest tests/ # Run specific test file pytest tests/test_coordinator.py # Run with coverage pytest --cov=custom_components.tibber_prices tests/ ","version":"Next 🚧","tagName":"h2"},{"title":"Manual Testing​","type":1,"pageTitle":"Testing","url":"/hass.tibber_prices/developer/testing#manual-testing","content":" # Start development environment ./scripts/develop Then test in Home Assistant UI: Configuration flowSensor states and attributesServicesTranslation strings ","version":"Next 🚧","tagName":"h2"},{"title":"Test Guidelines​","type":1,"pageTitle":"Testing","url":"/hass.tibber_prices/developer/testing#test-guidelines","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Development Setup","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/setup","content":"","keywords":"","version":"Next 🚧"},{"title":"Prerequisites​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#prerequisites","content":" VS Code with Dev Container supportDocker installed and runningGitHub account (for Tibber API token) ","version":"Next 🚧","tagName":"h2"},{"title":"Quick Setup​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#quick-setup","content":" # Clone the repository git clone https://github.com/jpawlowski/hass.tibber_prices.git cd hass.tibber_prices # Open in VS Code code . # Reopen in DevContainer (VS Code will prompt) # Or manually: Ctrl+Shift+P β†’ "Dev Containers: Reopen in Container" ","version":"Next 🚧","tagName":"h2"},{"title":"Development Environment​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#development-environment","content":" The DevContainer includes: Python 3.13 with .venv at /home/vscode/.venv/uv package manager (fast, modern Python tooling)Home Assistant development dependenciesRuff linter/formatterGit, GitHub CLI, Node.js, Rust toolchain ","version":"Next 🚧","tagName":"h2"},{"title":"Running the Integration​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#running-the-integration","content":" # Start Home Assistant in debug mode ./scripts/develop Visit http://localhost:8123 ","version":"Next 🚧","tagName":"h2"},{"title":"Making Changes​","type":1,"pageTitle":"Development Setup","url":"/hass.tibber_prices/developer/setup#making-changes","content":" # Lint and format code ./scripts/lint # Check-only (CI mode) ./scripts/lint-check # Validate integration structure ./scripts/release/hassfest See AGENTS.md for detailed patterns and conventions. ","version":"Next 🚧","tagName":"h2"},{"title":"Period Calculation Theory","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/period-calculation-theory","content":"","keywords":"","version":"Next 🚧"},{"title":"Overview​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#overview","content":" This document explains the mathematical foundations and design decisions behind the period calculation algorithm, particularly focusing on the interaction between Flexibility (Flex), Minimum Distance from Average, and Relaxation Strategy. Target Audience: Developers maintaining or extending the period calculation logic. Related Files: coordinator/period_handlers/core.py - Main calculation entry pointcoordinator/period_handlers/level_filtering.py - Flex and distance filteringcoordinator/period_handlers/relaxation.py - Multi-phase relaxation strategycoordinator/periods.py - Period calculator orchestration ","version":"Next 🚧","tagName":"h2"},{"title":"Core Filtering Criteria​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#core-filtering-criteria","content":" Period detection uses three independent filters (all must pass): ","version":"Next 🚧","tagName":"h2"},{"title":"1. Flex Filter (Price Distance from Reference)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#1-flex-filter-price-distance-from-reference","content":" Purpose: Limit how far prices can deviate from the daily min/max. Logic: # Best Price: Price must be within flex% ABOVE daily minimum in_flex = price <= (daily_min + daily_min Γ— flex) # Peak Price: Price must be within flex% BELOW daily maximum in_flex = price >= (daily_max - daily_max Γ— flex) Example (Best Price): Daily Min: 10 ct/kWhFlex: 15%Acceptance Range: 0 - 11.5 ct/kWh (10 + 10Γ—0.15) ","version":"Next 🚧","tagName":"h3"},{"title":"2. Min Distance Filter (Distance from Daily Average)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#2-min-distance-filter-distance-from-daily-average","content":" Purpose: Ensure periods are significantly cheaper/more expensive than average, not just marginally better. Logic: # Best Price: Price must be at least min_distance% BELOW daily average meets_distance = price <= (daily_avg Γ— (1 - min_distance/100)) # Peak Price: Price must be at least min_distance% ABOVE daily average meets_distance = price >= (daily_avg Γ— (1 + min_distance/100)) Example (Best Price): Daily Avg: 15 ct/kWhMin Distance: 5%Acceptance Range: 0 - 14.25 ct/kWh (15 Γ— 0.95) ","version":"Next 🚧","tagName":"h3"},{"title":"3. Level Filter (Price Level Classification)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#3-level-filter-price-level-classification","content":" Purpose: Restrict periods to specific price classifications (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Logic: See level_filtering.py for gap tolerance details. Volatility Thresholds - Important Separation: The integration maintains two independent sets of volatility thresholds: Sensor Thresholds (user-configurable via CONF_VOLATILITY_*_THRESHOLD) Purpose: Display classification in sensor.tibber_home_volatility_*Default: LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%User can adjust in config flow optionsAffects: Sensor state/attributes only Period Filter Thresholds (internal, fixed) Purpose: Level filter criteria when using level="volatility_low" etc.Source: PRICE_LEVEL_THRESHOLDS in const.pyValues: Same as sensor defaults (LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%)User cannot adjust theseAffects: Period candidate selection Rationale for Separation: Sensor thresholds = Display preference ("I want to see LOW at 15% instead of 10%")Period thresholds = Algorithm configuration (tested defaults, complex interactions)Changing sensor display should not affect automation behaviorPrevents unexpected side effects when user adjusts sensor classificationPeriod calculation has many interacting filters (Flex, Distance, Level) - exposing all internals would be error-prone Implementation: # Sensor classification uses user config user_low_threshold = config_entry.options.get(CONF_VOLATILITY_LOW_THRESHOLD, 10) # Period filter uses fixed constants period_low_threshold = PRICE_LEVEL_THRESHOLDS["volatility_low"] # Always 10% Status: Intentional design decision (Nov 2025). No plans to expose period thresholds to users. ","version":"Next 🚧","tagName":"h3"},{"title":"The Flex Γ— Min_Distance Conflict​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#the-flex--min_distance-conflict","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Problem Statement​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#problem-statement","content":" These two filters can conflict when Flex is high! Scenario: Best Price with Flex=50%, Min_Distance=5%​ Given: Daily Min: 10 ct/kWhDaily Avg: 15 ct/kWhDaily Max: 20 ct/kWh Flex Filter (50%): Max accepted = 10 + (10 Γ— 0.50) = 15 ct/kWh Min Distance Filter (5%): Max accepted = 15 Γ— (1 - 0.05) = 14.25 ct/kWh Conflict: Interval at 14.8 ct/kWh: βœ… Flex: 14.8 ≀ 15 (PASS)❌ Distance: 14.8 > 14.25 (FAIL)Result: Rejected by Min_Distance even though Flex allows it! The Issue: At high Flex values, Min_Distance becomes the dominant filter and blocks intervals that Flex would permit. This defeats the purpose of having high Flex. ","version":"Next 🚧","tagName":"h3"},{"title":"Mathematical Analysis​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#mathematical-analysis","content":" Conflict condition for Best Price: daily_min Γ— (1 + flex) > daily_avg Γ— (1 - min_distance/100) Typical values: Min = 10, Avg = 15, Min_Distance = 5%Conflict occurs when: 10 Γ— (1 + flex) > 14.25Simplify: flex > 0.425 (42.5%) Below 42.5% Flex: Both filters contribute meaningfully.Above 42.5% Flex: Min_Distance dominates and blocks intervals. ","version":"Next 🚧","tagName":"h3"},{"title":"Solution: Dynamic Min_Distance Scaling​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#solution-dynamic-min_distance-scaling","content":" Approach: Reduce Min_Distance proportionally as Flex increases. Formula: if flex > 0.20: # 20% threshold flex_excess = flex - 0.20 scale_factor = max(0.25, 1.0 - (flex_excess Γ— 2.5)) adjusted_min_distance = original_min_distance Γ— scale_factor Scaling Table (Original Min_Distance = 5%): Flex\tScale Factor\tAdjusted Min_Distance\tRationale≀20%\t1.00\t5.0%\tStandard - both filters relevant 25%\t0.88\t4.4%\tSlight reduction 30%\t0.75\t3.75%\tModerate reduction 40%\t0.50\t2.5%\tStrong reduction - Flex dominates 50%\t0.25\t1.25%\tMinimal distance - Flex decides Why stop at 25% of original? Min_Distance ensures periods are significantly different from averageEven at 1.25%, prevents "flat days" (little price variation) from accepting every intervalMaintains semantic meaning: "this is a meaningful best/peak price period" Implementation: See level_filtering.py β†’ check_interval_criteria() Code Extract: # coordinator/period_handlers/level_filtering.py FLEX_SCALING_THRESHOLD = 0.20 # 20% - start adjusting min_distance SCALE_FACTOR_WARNING_THRESHOLD = 0.8 # Log when reduction > 20% def check_interval_criteria(price, criteria): # ... flex check ... # Dynamic min_distance scaling adjusted_min_distance = criteria.min_distance_from_avg flex_abs = abs(criteria.flex) if flex_abs > FLEX_SCALING_THRESHOLD: flex_excess = flex_abs - 0.20 # How much above 20% scale_factor = max(0.25, 1.0 - (flex_excess Γ— 2.5)) adjusted_min_distance = criteria.min_distance_from_avg Γ— scale_factor if scale_factor < SCALE_FACTOR_WARNING_THRESHOLD: _LOGGER.debug( "High flex %.1f%% detected: Reducing min_distance %.1f%% β†’ %.1f%%", flex_abs Γ— 100, criteria.min_distance_from_avg, adjusted_min_distance, ) # Apply adjusted min_distance in distance check meets_min_distance = ( price <= avg_price Γ— (1 - adjusted_min_distance/100) # Best Price # OR price >= avg_price Γ— (1 + adjusted_min_distance/100) # Peak Price ) Why Linear Scaling? Simple and predictableNo abrupt behavior changesEasy to reason about for users and developersAlternative considered: Exponential scaling (rejected as too aggressive) Why 25% Minimum? Below this, min_distance loses semantic meaningEven on flat days, some quality filter neededPrevents "every interval is a period" scenarioMaintains user expectation: "best/peak price means notably different" ","version":"Next 🚧","tagName":"h3"},{"title":"Flex Limits and Safety Caps​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#flex-limits-and-safety-caps","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Implementation Constants​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#implementation-constants","content":" Defined in coordinator/period_handlers/core.py: MAX_SAFE_FLEX = 0.50 # 50% - hard cap: above this, period detection becomes unreliable MAX_OUTLIER_FLEX = 0.25 # 25% - cap for outlier filtering: above this, spike detection too permissive Defined in const.py: DEFAULT_BEST_PRICE_FLEX = 15 # 15% base - optimal for relaxation mode (default enabled) DEFAULT_PEAK_PRICE_FLEX = -20 # 20% base (negative for peak detection) DEFAULT_RELAXATION_ATTEMPTS_BEST = 11 # 11 steps: 15% β†’ 48% (3% increment per step) DEFAULT_RELAXATION_ATTEMPTS_PEAK = 11 # 11 steps: 20% β†’ 50% (3% increment per step) DEFAULT_BEST_PRICE_MIN_PERIOD_LENGTH = 60 # 60 minutes DEFAULT_PEAK_PRICE_MIN_PERIOD_LENGTH = 30 # 30 minutes DEFAULT_BEST_PRICE_MIN_DISTANCE_FROM_AVG = 5 # 5% minimum distance DEFAULT_PEAK_PRICE_MIN_DISTANCE_FROM_AVG = 5 # 5% minimum distance ","version":"Next 🚧","tagName":"h3"},{"title":"Rationale for Asymmetric Defaults​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#rationale-for-asymmetric-defaults","content":" Why Best Price β‰  Peak Price? The different defaults reflect fundamentally different use cases: Best Price: Optimization Focus​ Goal: Find practical time windows for running appliances Constraints: Appliances need time to complete cycles (dishwasher: 2-3h, EV charging: 4-8h)Short periods are impractical (not worth automation overhead)User wants genuinely cheap times, not just "slightly below average" Defaults: 60 min minimum - Ensures period is long enough for meaningful use15% flex - Stricter selection, focuses on truly cheap timesReasoning: Better to find fewer, higher-quality periods than many mediocre ones User behavior: Automations trigger actions (turn on devices)Wrong automation = wasted energy/moneyPreference: Conservative (miss some savings) over aggressive (false positives) Peak Price: Warning Focus​ Goal: Alert users to expensive periods for consumption reduction Constraints: Brief price spikes still matter (even 15-30 min is worth avoiding)Early warning more valuable than perfect accuracyUser can manually decide whether to react Defaults: 30 min minimum - Catches shorter expensive spikes20% flex - More permissive, earlier detectionReasoning: Better to warn early (even if not peak) than miss expensive periods User behavior: Notifications/alerts (informational)Wrong alert = minor inconvenience, not costPreference: Sensitive (catch more) over specific (catch only extremes) Mathematical Justification​ Peak Price Volatility: Price curves tend to have: Sharp spikes during peak hours (morning/evening)Shorter duration at maximum (1-2 hours typical)Higher variance in peak times than cheap times Example day: Cheap period: 02:00-07:00 (5 hours at 10-12 ct) ← Gradual, stable Expensive period: 17:00-18:30 (1.5 hours at 35-40 ct) ← Sharp, brief Implication: Stricter flex on peak (15%) might miss real expensive periods (too brief)Longer min_length (60 min) might exclude legitimate spikesSolution: More flexible thresholds for peak detection Design Alternatives Considered​ Option 1: Symmetric defaults (rejected) Both 60 min, both 15% flexProblem: Misses short but expensive spikesUser feedback: "Why didn't I get warned about the 30-min price spike?" Option 2: Same defaults, let users figure it out (rejected) No guidance on best practicesUsers would need to experiment to find good valuesMost users stick with defaults, so defaults matter Option 3: Current approach (adopted) All values user-configurable via config flow optionsDifferent installation defaults for Best Price vs. Peak PriceDefaults reflect recommended practices for each use caseUsers who need different behavior can adjustMost users benefit from sensible defaults without configuration ","version":"Next 🚧","tagName":"h3"},{"title":"Flex Limits and Safety Caps​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#flex-limits-and-safety-caps-1","content":" 1. Absolute Maximum: 50% (MAX_SAFE_FLEX)​ Enforcement: core.py caps abs(flex) at 0.50 (50%) Rationale: Above 50%, period detection becomes unreliableBest Price: Almost entire day qualifies (Min + 50% typically covers 60-80% of intervals)Peak Price: Similar issue with Max - 50%Result: Either massive periods (entire day) or no periods (min_length not met) Warning Message: Flex XX% exceeds maximum safe value! Capping at 50%. Recommendation: Use 15-20% with relaxation enabled, or 25-35% without relaxation. 2. Outlier Filtering Maximum: 25%​ Enforcement: core.py caps outlier filtering flex at 0.25 (25%) Rationale: Outlier filtering uses Flex to determine "stable context" thresholdAt > 25% Flex, almost any price swing is considered "stable"Result: Legitimate price shifts aren't smoothed, breaking period formation Note: User's Flex still applies to period criteria (in_flex check), only outlier filtering is capped. ","version":"Next 🚧","tagName":"h2"},{"title":"Recommended Ranges (User Guidance)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#recommended-ranges-user-guidance","content":" With Relaxation Enabled (Recommended)​ Optimal: 10-20% Relaxation increases Flex incrementally: 15% β†’ 18% β†’ 21% β†’ ...Low baseline ensures relaxation has room to work Warning Threshold: > 25% INFO log: "Base flex is on the high side" High Warning: > 30% WARNING log: "Base flex is very high for relaxation mode!"Recommendation: Lower to 15-20% Without Relaxation​ Optimal: 20-35% No automatic adjustment, must be sufficient from startHigher baseline acceptable since no relaxation fallback Maximum Useful: ~50% Above this, period detection degrades (see Hard Limits) ","version":"Next 🚧","tagName":"h3"},{"title":"Relaxation Strategy​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#relaxation-strategy","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Purpose​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#purpose","content":" Ensure minimum periods per day are found even when baseline filters are too strict. Use Case: User configures strict filters (low Flex, restrictive Level) but wants guarantee of N periods/day for automation reliability. ","version":"Next 🚧","tagName":"h3"},{"title":"Multi-Phase Approach​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#multi-phase-approach","content":" Each day processed independently: Calculate baseline periods with user's configIf insufficient periods found, enter relaxation loopTry progressively relaxed filter combinationsStop when target reached or all attempts exhausted ","version":"Next 🚧","tagName":"h3"},{"title":"Relaxation Increments​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#relaxation-increments","content":" Current Implementation (November 2025): File: coordinator/period_handlers/relaxation.py # Hard-coded 3% increment per step (reliability over configurability) flex_increment = 0.03 # 3% per step base_flex = abs(config.flex) # Generate flex levels for attempt in range(max_relaxation_attempts): flex_level = base_flex + (attempt Γ— flex_increment) # Try flex_level with both filter combinations Constants: FLEX_WARNING_THRESHOLD_RELAXATION = 0.25 # 25% - INFO: suggest lowering to 15-20% FLEX_HIGH_THRESHOLD_RELAXATION = 0.30 # 30% - WARNING: very high for relaxation mode MAX_FLEX_HARD_LIMIT = 0.50 # 50% - absolute maximum (enforced in core.py) Design Decisions: Why 3% fixed increment? Predictable escalation path (15% β†’ 18% β†’ 21% β†’ ...)Independent of base flex (works consistently)11 attempts covers full useful range (15% β†’ 48%)Balance: Not too slow (2%), not too fast (5%) Why hard-coded, not configurable? Prevents user misconfigurationSimplifies mental model (fewer knobs to turn)Reliable behavior across all configurationsIf needed, user adjusts max_relaxation_attempts (fewer/more steps) Why warn at 25% base flex? At 25% base, first relaxation step reaches 28%Above 30%, entering diminishing returns territoryUser likely doesn't need relaxation with such high base flexShould either: (a) lower base flex, or (b) disable relaxation Historical Context (Pre-November 2025): The algorithm previously used percentage-based increments that scaled with base flex: increment = base_flex Γ— (step_pct / 100) # REMOVED This caused exponential escalation with high base flex values (e.g., 40% β†’ 50% β†’ 60% β†’ 70% in just 6 steps), making behavior unpredictable. The fixed 3% increment solves this by providing consistent, controlled escalation regardless of starting point. Warning Messages: if base_flex >= FLEX_HIGH_THRESHOLD_RELAXATION: # 30% _LOGGER.warning( "Base flex %.1f%% is very high for relaxation mode! " "Consider lowering to 15-20%% or disabling relaxation.", base_flex Γ— 100, ) elif base_flex >= FLEX_WARNING_THRESHOLD_RELAXATION: # 25% _LOGGER.info( "Base flex %.1f%% is on the high side. " "Consider 15-20%% for optimal relaxation effectiveness.", base_flex Γ— 100, ) ","version":"Next 🚧","tagName":"h3"},{"title":"Filter Combination Strategy​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#filter-combination-strategy","content":" Per Flex level, try in order: Original Level filterLevel filter = "any" (disabled) Early Exit: Stop immediately when target reached (don't try unnecessary combinations) Example Flow (target=2 periods/day): Day 2025-11-19: 1. Baseline flex=15%: Found 1 period (need 2) 2. Flex=18% + level=cheap: Found 1 period 3. Flex=18% + level=any: Found 2 periods β†’ SUCCESS (stop) ","version":"Next 🚧","tagName":"h3"},{"title":"Implementation Notes​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#implementation-notes","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Key Files and Functions​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#key-files-and-functions","content":" Period Calculation Entry Point: # coordinator/period_handlers/core.py def calculate_periods( all_prices: list[dict], config: PeriodConfig, time: TimeService, ) -> dict[str, Any] Flex + Distance Filtering: # coordinator/period_handlers/level_filtering.py def check_interval_criteria( price: float, criteria: IntervalCriteria, ) -> tuple[bool, bool] # (in_flex, meets_min_distance) Relaxation Orchestration: # coordinator/period_handlers/relaxation.py def calculate_periods_with_relaxation(...) -> tuple[dict, dict] def relax_single_day(...) -> tuple[dict, dict] Outlier Filtering Implementation​ File: coordinator/period_handlers/outlier_filtering.py Purpose: Detect and smooth isolated price spikes before period identification to prevent artificial fragmentation. Algorithm Details: Linear Regression Prediction: Uses surrounding intervals to predict expected priceWindow size: 3+ intervals (MIN_CONTEXT_SIZE)Calculates trend slope and standard deviationFormula: predicted = mean + slope Γ— (position - center) Confidence Intervals: 95% confidence level (2 standard deviations)Tolerance = 2.0 Γ— std_dev (CONFIDENCE_LEVEL constant)Outlier if: |actual - predicted| > toleranceAccounts for natural price volatility in context window Symmetry Check: Rejects asymmetric outliers (threshold: 1.5 std dev)Preserves legitimate price shifts (morning/evening peaks)Algorithm: residual = abs(actual - predicted) symmetry_threshold = 1.5 Γ— std_dev if residual > tolerance: # Check if spike is symmetric in context context_residuals = [abs(p - pred) for p, pred in context] avg_context_residual = mean(context_residuals) if residual > symmetry_threshold Γ— avg_context_residual: # Asymmetric spike β†’ smooth it else: # Symmetric (part of trend) β†’ keep it Enhanced Zigzag Detection: Detects spike clusters via relative volatilityThreshold: 2.0Γ— local volatility (RELATIVE_VOLATILITY_THRESHOLD)Single-pass algorithm (no iteration needed)Catches patterns like: 18, 35, 19, 34, 18 (alternating spikes) Constants: # coordinator/period_handlers/outlier_filtering.py CONFIDENCE_LEVEL = 2.0 # 95% confidence (2 std deviations) SYMMETRY_THRESHOLD = 1.5 # Asymmetry detection threshold RELATIVE_VOLATILITY_THRESHOLD = 2.0 # Zigzag spike detection MIN_CONTEXT_SIZE = 3 # Minimum intervals for regression Data Integrity: Original prices stored in _original_price fieldAll statistics (daily min/max/avg) use original pricesSmoothing only affects period formation logicSmart counting: Only counts smoothing that changed period outcome Performance: Single pass through price dataO(n) complexity with small context windowNo iterative refinement neededTypical processing time: <1ms for 96 intervals Example Debug Output: DEBUG: [2025-11-11T14:30:00+01:00] Outlier detected: 35.2 ct DEBUG: Context: 18.5, 19.1, 19.3, 19.8, 20.2 ct DEBUG: Residual: 14.5 ct > tolerance: 4.8 ct (2Γ—2.4 std dev) DEBUG: Trend slope: 0.3 ct/interval (gradual increase) DEBUG: Predicted: 20.7 ct (linear regression) DEBUG: Smoothed to: 20.7 ct DEBUG: Asymmetry ratio: 3.2 (>1.5 threshold) β†’ confirmed outlier Why This Approach? Linear regression over moving average: Accounts for price trends (morning ramp-up, evening decline)Moving average can't predict direction, only levelBetter accuracy on non-stationary price curves Symmetry check over fixed threshold: Prevents false positives on legitimate price shiftsAdapts to local volatility patternsPreserves user expectation: "expensive during peak hours" Single-pass over iterative: Predictable behavior (no convergence issues)Fast and deterministicEasier to debug and reason about Alternative Approaches Considered: Median filtering - Rejected: Too aggressive, removes legitimate peaksMoving average - Rejected: Can't handle trendsIQR (Interquartile Range) - Rejected: Assumes normal distributionRANSAC - Rejected: Overkill for 1D data, slow ","version":"Next 🚧","tagName":"h3"},{"title":"Debugging Tips​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#debugging-tips","content":" Enable DEBUG logging: # configuration.yaml logger: default: info logs: custom_components.tibber_prices.coordinator.period_handlers: debug Key log messages to watch: "Filter statistics: X intervals checked" - Shows how many intervals filtered by each criterion"After build_periods: X raw periods found" - Periods before min_length filtering"Day X: Success with flex=Y%" - Relaxation succeeded"High flex X% detected: Reducing min_distance Y% β†’ Z%" - Distance scaling active ","version":"Next 🚧","tagName":"h2"},{"title":"Common Configuration Pitfalls​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#common-configuration-pitfalls","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"❌ Anti-Pattern 1: High Flex with Relaxation​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#-anti-pattern-1-high-flex-with-relaxation","content":" Configuration: best_price_flex: 40 enable_relaxation_best: true Problem: Base Flex 40% already very permissiveRelaxation increments further (43%, 46%, 49%, ...)Quickly approaches 50% cap with diminishing returns Solution: best_price_flex: 15 # Let relaxation increase it enable_relaxation_best: true ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Anti-Pattern 2: Zero Min_Distance​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#-anti-pattern-2-zero-min_distance","content":" Configuration: best_price_min_distance_from_avg: 0 Problem: "Flat days" (little price variation) accept all intervalsPeriods lose semantic meaning ("significantly cheap")May create periods during barely-below-average times Solution: best_price_min_distance_from_avg: 5 # Use default 5% ","version":"Next 🚧","tagName":"h3"},{"title":"❌ Anti-Pattern 3: Conflicting Flex + Distance​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#-anti-pattern-3-conflicting-flex--distance","content":" Configuration: best_price_flex: 45 best_price_min_distance_from_avg: 10 Problem: Distance filter dominates, making Flex irrelevantDynamic scaling helps but still suboptimal Solution: best_price_flex: 20 best_price_min_distance_from_avg: 5 ","version":"Next 🚧","tagName":"h3"},{"title":"Testing Scenarios​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#testing-scenarios","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Scenario 1: Normal Day (Good Variation)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-1-normal-day-good-variation","content":" Price Range: 10 - 20 ct/kWh (100% variation)Average: 15 ct/kWh Expected Behavior: Flex 15%: Should find 2-4 clear best price periodsFlex 30%: Should find 4-8 periods (more lenient)Min_Distance 5%: Effective throughout range Debug Checks: DEBUG: Filter statistics: 96 intervals checked DEBUG: Filtered by FLEX: 12/96 (12.5%) ← Low percentage = good variation DEBUG: Filtered by MIN_DISTANCE: 8/96 (8.3%) ← Both filters active DEBUG: After build_periods: 3 raw periods found ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 2: Flat Day (Poor Variation)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-2-flat-day-poor-variation","content":" Price Range: 14 - 16 ct/kWh (14% variation)Average: 15 ct/kWh Expected Behavior: Flex 15%: May find 1-2 small periods (or zero if no clear winners)Min_Distance 5%: Critical here - ensures only truly cheaper intervals qualifyWithout Min_Distance: Would accept almost entire day as "best price" Debug Checks: DEBUG: Filter statistics: 96 intervals checked DEBUG: Filtered by FLEX: 45/96 (46.9%) ← High percentage = poor variation DEBUG: Filtered by MIN_DISTANCE: 52/96 (54.2%) ← Distance filter dominant DEBUG: After build_periods: 1 raw period found DEBUG: Day 2025-11-11: Baseline insufficient (1 < 2), starting relaxation ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 3: Extreme Day (High Volatility)​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-3-extreme-day-high-volatility","content":" Price Range: 5 - 40 ct/kWh (700% variation)Average: 18 ct/kWh Expected Behavior: Flex 15%: Finds multiple very cheap periods (5-6 ct)Outlier filtering: May smooth isolated spikes (30-40 ct)Distance filter: Less impactful (clear separation between cheap/expensive) Debug Checks: DEBUG: Outlier detected: 38.5 ct (threshold: 4.2 ct) DEBUG: Smoothed to: 20.1 ct (trend prediction) DEBUG: Filter statistics: 96 intervals checked DEBUG: Filtered by FLEX: 8/96 (8.3%) ← Very selective DEBUG: Filtered by MIN_DISTANCE: 4/96 (4.2%) ← Flex dominates DEBUG: After build_periods: 4 raw periods found ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 4: Relaxation Success​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-4-relaxation-success","content":" Initial State: Baseline finds 1 period, target is 2 Expected Flow: INFO: Calculating BEST PRICE periods: relaxation=ON, target=2/day, flex=15.0% DEBUG: Day 2025-11-11: Baseline found 1 period (need 2) DEBUG: Phase 1: flex 18.0% + original filters DEBUG: Found 1 period (insufficient) DEBUG: Phase 2: flex 18.0% + level=any DEBUG: Found 2 periods β†’ SUCCESS INFO: Day 2025-11-11: Success after 1 relaxation phase (2 periods) ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 5: Relaxation Exhausted​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#scenario-5-relaxation-exhausted","content":" Initial State: Strict filters, very flat day Expected Flow: INFO: Calculating BEST PRICE periods: relaxation=ON, target=2/day, flex=15.0% DEBUG: Day 2025-11-11: Baseline found 0 periods (need 2) DEBUG: Phase 1-11: flex 15%β†’48%, all filter combinations tried WARNING: Day 2025-11-11: All relaxation phases exhausted, still only 1 period found INFO: Period calculation completed: 1/2 days reached target ","version":"Next 🚧","tagName":"h3"},{"title":"Debugging Checklist​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#debugging-checklist","content":" When debugging period calculation issues: Check Filter Statistics Which filter blocks most intervals? (flex, distance, or level)High flex filtering (>30%) = Need more flexibility or relaxationHigh distance filtering (>50%) = Min_distance too strict or flat dayHigh level filtering = Level filter too restrictive Check Relaxation Behavior Did relaxation activate? Check for "Baseline insufficient" messageWhich phase succeeded? Early success (phase 1-3) = good configLate success (phase 8-11) = Consider adjusting base configExhausted all phases = Unrealistic target for this day's price curve Check Flex Warnings INFO at 25% base flex = On the high sideWARNING at 30% base flex = Too high for relaxationIf seeing these: Lower base flex to 15-20% Check Min_Distance Scaling Debug messages show "High flex X% detected: Reducing min_distance Y% β†’ Z%"If scale factor <0.8 (20% reduction): High flex is activeIf periods still not found: Filters conflict even with scaling Check Outlier Filtering Look for "Outlier detected" messagesCheck period_interval_smoothed_count attributeIf no smoothing but periods fragmented: Not isolated spikes, but legitimate price levels ","version":"Next 🚧","tagName":"h3"},{"title":"Future Enhancements​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#future-enhancements","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Potential Improvements​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#potential-improvements","content":" Adaptive Flex Calculation: Auto-adjust Flex based on daily price variationHigh variation days: Lower Flex neededLow variation days: Higher Flex needed Machine Learning Approach: Learn optimal Flex/Distance from user feedbackClassify days by pattern (normal/flat/volatile/bimodal)Apply pattern-specific defaults Multi-Objective Optimization: Balance period count vs. qualityConsider period duration vs. price levelOptimize for user's stated use case (EV charging vs. heat pump) ","version":"Next 🚧","tagName":"h3"},{"title":"Known Limitations​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#known-limitations","content":" Fixed increment step: 3% cap may be too aggressive for very low base FlexLinear distance scaling: Could benefit from non-linear curveNo consideration of temporal distribution: May find all periods in one part of day ","version":"Next 🚧","tagName":"h3"},{"title":"Future Enhancements​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#future-enhancements-1","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Potential Improvements​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#potential-improvements-1","content":" 1. Adaptive Flex Calculation (Not Yet Implemented)​ Concept: Auto-adjust Flex based on daily price variation Algorithm: # Pseudo-code for adaptive flex variation = (daily_max - daily_min) / daily_avg if variation < 0.15: # Flat day (< 15% variation) adaptive_flex = 0.30 # Need higher flex elif variation > 0.50: # High volatility (> 50% variation) adaptive_flex = 0.10 # Lower flex sufficient else: # Normal day adaptive_flex = 0.15 # Standard flex Benefits: Eliminates need for relaxation on most daysSelf-adjusting to market conditionsBetter user experience (less configuration needed) Challenges: Harder to predict behavior (less transparent)May conflict with user's mental modelNeeds extensive testing across different markets Status: Considered but not implemented (prefer explicit relaxation) 2. Machine Learning Approach (Future Work)​ Concept: Learn optimal Flex/Distance from user feedback Approach: Track which periods user actually uses (automation triggers)Classify days by pattern (normal/flat/volatile/bimodal)Apply pattern-specific defaultsLearn per-user preferences over time Benefits: Personalized to user's actual behaviorAdapts to local market patternsCould discover non-obvious patterns Challenges: Requires user feedback mechanism (not implemented)Privacy concerns (storing usage patterns)Complexity for users to understand "why this period?"Cold start problem (new users have no history) Status: Theoretical only (no implementation planned) 3. Multi-Objective Optimization (Research Idea)​ Concept: Balance multiple goals simultaneously Goals: Period count vs. quality (cheap vs. very cheap)Period duration vs. price level (long mediocre vs. short excellent)Temporal distribution (spread throughout day vs. clustered)User's stated use case (EV charging vs. heat pump vs. dishwasher) Algorithm: Pareto optimization (find trade-off frontier)User chooses point on frontier via preferencesGenetic algorithm or simulated annealing Benefits: More sophisticated period selectionBetter match to user's actual needsCould handle complex appliance requirements Challenges: Much more complex to implementHarder to explain to usersComputational cost (may need caching)Configuration explosion (too many knobs) Status: Research idea only (not planned) ","version":"Next 🚧","tagName":"h3"},{"title":"Known Limitations​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#known-limitations-1","content":" 1. Fixed Increment Step​ Current: 3% cap may be too aggressive for very low base Flex Example: Base flex 5% + 3% increment = 8% (60% increase!)Base flex 15% + 3% increment = 18% (20% increase) Possible Solution: Percentage-based increment: increment = max(base_flex Γ— 0.20, 0.03)This gives: 5% β†’ 6% (20%), 15% β†’ 18% (20%), 40% β†’ 43% (7.5%) Why Not Implemented: Very low base flex (<10%) unusualUsers with strict requirements likely disable relaxationSimplicity preferred over edge case optimization 2. Linear Distance Scaling​ Current: Linear scaling may be too aggressive/conservative Alternative: Non-linear curve # Example: Exponential scaling scale_factor = 0.25 + 0.75 Γ— exp(-5 Γ— (flex - 0.20)) # Or: Sigmoid scaling scale_factor = 0.25 + 0.75 / (1 + exp(10 Γ— (flex - 0.35))) Why Not Implemented: Linear is easier to reason aboutNo evidence that non-linear is betterWould need extensive testing 3. No Temporal Distribution Consideration​ Issue: May find all periods in one part of day Example: All 3 "best price" periods between 02:00-08:00No periods in evening (when user might want to run appliances) Possible Solution: Add "spread" parameter (prefer distributed periods)Weight periods by time-of-day preferencesConsider user's typical usage patterns Why Not Implemented: Adds complexityUsers can work around with multiple automationsDifferent users have different needs (no one-size-fits-all) 4. Period Boundary Handling​ Current Behavior: Periods can cross midnight naturally Design Principle: Each interval is evaluated using its own day's reference prices (daily min/max/avg). Implementation: # In period_building.py build_periods(): for price_data in all_prices: starts_at = time.get_interval_time(price_data) date_key = starts_at.date() # CRITICAL: Use interval's own day, not period_start_date ref_date = date_key criteria = TibberPricesIntervalCriteria( ref_price=ref_prices[ref_date], # Interval's day avg_price=avg_prices[ref_date], # Interval's day flex=flex, min_distance_from_avg=min_distance_from_avg, reverse_sort=reverse_sort, ) Why Per-Day Evaluation? Periods can cross midnight (e.g., 23:45 β†’ 01:00). Each day has independent reference prices calculated from its 96 intervals. Example showing the problem with period-start-day approach: Day 1 (2025-11-21): Cheap day daily_min = 10 ct, daily_avg = 20 ct, flex = 15% Criteria: price ≀ 11.5 ct (10 + 10Γ—0.15) Day 2 (2025-11-22): Expensive day daily_min = 20 ct, daily_avg = 30 ct, flex = 15% Criteria: price ≀ 23 ct (20 + 20Γ—0.15) Period crossing midnight: 23:45 Day 1 β†’ 00:15 Day 2 23:45 (Day 1): 11 ct β†’ βœ… Passes (11 ≀ 11.5) 00:00 (Day 2): 21 ct β†’ Should this pass? ❌ WRONG (using period start day): 00:00 evaluated against Day 1's 11.5 ct threshold 21 ct > 11.5 ct β†’ Fails But 21ct IS cheap on Day 2 (min=20ct)! βœ… CORRECT (using interval's own day): 00:00 evaluated against Day 2's 23 ct threshold 21 ct ≀ 23 ct β†’ Passes Correctly identified as cheap relative to Day 2 Trade-off: Periods May Break at Midnight When days differ significantly, period can split: Day 1: Min=10ct, Avg=20ct, 23:45=11ct β†’ βœ… Cheap (relative to Day 1) Day 2: Min=25ct, Avg=35ct, 00:00=21ct β†’ ❌ Expensive (relative to Day 2) Result: Period stops at 23:45, new period starts later This is mathematically correct - 21ct is genuinely expensive on a day where minimum is 25ct. Market Reality Explains Price Jumps: Day-ahead electricity markets (EPEX SPOT) set prices at 12:00 CET for all next-day hours: Late intervals (23:45): Priced ~36h before delivery β†’ high forecast uncertainty β†’ risk premiumEarly intervals (00:00): Priced ~12h before delivery β†’ better forecasts β†’ lower risk buffer This explains why absolute prices jump at midnight despite minimal demand changes. User-Facing Solution (Nov 2025): Added per-period day volatility attributes to detect when classification changes are meaningful: day_volatility_%: Percentage spread (span/avg Γ— 100)day_price_min, day_price_max, day_price_span: Daily price range (ct/ΓΈre) Automations can check volatility before acting: condition: - condition: template value_template: > {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }} Low volatility (< 15%) means classification changes are less economically significant. Alternative Approaches Rejected: Use period start day for all intervals Problem: Mathematically incorrect - lends cheap day's criteria to expensive dayRejected: Violates relative evaluation principle Adjust flex/distance at midnight Problem: Complex, unpredictable, hides market realityRejected: Users should understand price context, not have it hidden Split at midnight always Problem: Artificially fragments natural periodsRejected: Worse user experience Use next day's reference after midnight Problem: Period criteria inconsistent across durationRejected: Confusing and unpredictable Status: Per-day evaluation is intentional design prioritizing mathematical correctness. See Also: User documentation: docs/user/period-calculation.md β†’ "Midnight Price Classification Changes"Implementation: coordinator/period_handlers/period_building.py (line ~126: ref_date = date_key)Attributes: coordinator/period_handlers/period_statistics.py (day volatility calculation) ","version":"Next 🚧","tagName":"h3"},{"title":"References​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#references","content":" User Documentation: Period CalculationArchitecture OverviewCaching StrategyAGENTS.md - AI assistant memory (implementation patterns) ","version":"Next 🚧","tagName":"h2"},{"title":"Changelog​","type":1,"pageTitle":"Period Calculation Theory","url":"/hass.tibber_prices/developer/period-calculation-theory#changelog","content":" 2025-11-19: Initial documentation of Flex/Distance interaction and Relaxation strategy fixes ","version":"Next 🚧","tagName":"h2"},{"title":"Timer Architecture","type":0,"sectionRef":"#","url":"/hass.tibber_prices/developer/timer-architecture","content":"","keywords":"","version":"Next 🚧"},{"title":"Overview​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#overview","content":" The integration uses three independent timer mechanisms for different purposes: Timer\tType\tInterval\tPurpose\tTrigger MethodTimer #1\tHA built-in\t15 minutes\tAPI data updates\tDataUpdateCoordinator Timer #2\tCustom\t:00, :15, :30, :45\tEntity state refresh\tasync_track_utc_time_change() Timer #3\tCustom\tEvery minute\tCountdown/progress\tasync_track_utc_time_change() Key principle: Timer #1 (HA) controls data fetching, Timer #2 controls entity updates, Timer #3 controls timing displays. ","version":"Next 🚧","tagName":"h2"},{"title":"Timer #1: DataUpdateCoordinator (HA Built-in)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-1-dataupdatecoordinator-ha-built-in","content":" File: coordinator/core.py β†’ TibberPricesDataUpdateCoordinator Type: Home Assistant's built-in DataUpdateCoordinator with UPDATE_INTERVAL = 15 minutes What it is: HA provides this timer system automatically when you inherit from DataUpdateCoordinatorTriggers _async_update_data() method every 15 minutesNot synchronized to clock boundaries (each installation has different start time) Purpose: Check if fresh API data is needed, fetch if necessary What it does: async def _async_update_data(self) -> TibberPricesData: # Step 1: Check midnight turnover FIRST (prevents race with Timer #2) if self._check_midnight_turnover_needed(dt_util.now()): await self._perform_midnight_data_rotation(dt_util.now()) # Notify ALL entities after midnight turnover return self.data # Early return # Step 2: Check if we need tomorrow data (after 13:00) if self._should_update_price_data() == "tomorrow_check": await self._fetch_and_update_data() # Fetch from API return self.data # Step 3: Use cached data (fast path - most common) return self.data Load Distribution: Each HA installation starts Timer #1 at different times β†’ natural distributionTomorrow data check adds 0-30s random delay β†’ prevents "thundering herd" on Tibber APIResult: API load spread over ~30 minutes instead of all at once Midnight Coordination: Atomic check: _check_midnight_turnover_needed(now) compares dates only (no side effects)If midnight turnover needed β†’ performs it and returns earlyTimer #2 will see turnover already done and skip gracefully Why we use HA's timer: Automatic restart after HA restartBuilt-in retry logic for temporary failuresStandard HA integration patternHandles backpressure (won't queue up if previous update still running) ","version":"Next 🚧","tagName":"h2"},{"title":"Timer #2: Quarter-Hour Refresh (Custom)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-2-quarter-hour-refresh-custom","content":" File: coordinator/listeners.py β†’ ListenerManager.schedule_quarter_hour_refresh() Type: Custom timer using async_track_utc_time_change(minute=[0, 15, 30, 45], second=0) Purpose: Update time-sensitive entity states at interval boundaries without waiting for API poll Problem it solves: Timer #1 runs every 15 minutes but NOT synchronized to clock (:03, :18, :33, :48)Current price changes at :00, :15, :30, :45 β†’ entities would show stale data for up to 15 minutesExample: 14:00 new price, but Timer #1 ran at 13:58 β†’ next update at 14:13 β†’ users see old price until 14:13 What it does: async def _handle_quarter_hour_refresh(self, now: datetime) -> None: # Step 1: Check midnight turnover (coordinates with Timer #1) if self._check_midnight_turnover_needed(now): # Timer #1 might have already done this β†’ atomic check handles it await self._perform_midnight_data_rotation(now) # Notify ALL entities after midnight turnover return # Step 2: Normal quarter-hour refresh (most common path) # Only notify time-sensitive entities (current_interval_price, etc.) self._listener_manager.async_update_time_sensitive_listeners() Smart Boundary Tolerance: Uses round_to_nearest_quarter_hour() with Β±2 second toleranceHA may schedule timer at 14:59:58 β†’ rounds to 15:00:00 (shows new interval)HA restart at 14:59:30 β†’ stays at 14:45:00 (shows current interval)See Architecture for details Absolute Time Scheduling: async_track_utc_time_change() plans for all future boundaries (15:00, 15:15, 15:30, ...)NOT relative delays ("in 15 minutes")If triggered at 14:59:58 β†’ next trigger is 15:15:00, NOT 15:00:00 (prevents double updates) Which entities listen: All sensors that depend on "current interval" (e.g., current_interval_price, next_interval_price)Binary sensors that check "is now in period?" (e.g., best_price_period_active)~50-60 entities out of 120+ total Why custom timer: HA's built-in coordinator doesn't support exact boundary timingWe need absolute time triggers, not periodic intervalsAllows fast entity updates without expensive data transformation ","version":"Next 🚧","tagName":"h2"},{"title":"Timer #3: Minute Refresh (Custom)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-3-minute-refresh-custom","content":" File: coordinator/listeners.py β†’ ListenerManager.schedule_minute_refresh() Type: Custom timer using async_track_utc_time_change(second=0) (every minute) Purpose: Update countdown and progress sensors for smooth UX What it does: async def _handle_minute_refresh(self, now: datetime) -> None: # Only notify minute-update entities # No data fetching, no transformation, no midnight handling self._listener_manager.async_update_minute_listeners() Which entities listen: best_price_remaining_minutes - Countdown timerpeak_price_remaining_minutes - Countdown timerbest_price_progress - Progress bar (0-100%)peak_price_progress - Progress bar (0-100%)~10 entities total Why custom timer: Users want smooth countdowns (not jumping 15 minutes at a time)Progress bars need minute-by-minute updatesVery lightweight (no data processing, just state recalculation) Why NOT every second: Minute precision sufficient for countdown UXReduces CPU load (60Γ— fewer updates than seconds)Home Assistant best practice (avoid sub-minute updates) ","version":"Next 🚧","tagName":"h2"},{"title":"Listener Pattern (Python/HA Terminology)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#listener-pattern-pythonha-terminology","content":" Your question: "Sind Timer fΓΌr dich eigentlich 'Listener'?" Answer: In Home Assistant terminology: Timer = The mechanism that triggers at specific times (async_track_utc_time_change)Listener = A callback function that gets called when timer triggersObserver Pattern = Entities register callbacks, coordinator notifies them How it works: # Entity registers a listener callback class TibberPricesSensor(CoordinatorEntity): async def async_added_to_hass(self): # Register this entity's update callback self._remove_listener = self.coordinator.async_add_time_sensitive_listener( self._handle_coordinator_update ) # Coordinator maintains list of listeners class ListenerManager: def __init__(self): self._time_sensitive_listeners = [] # List of callbacks def async_add_time_sensitive_listener(self, callback): self._time_sensitive_listeners.append(callback) def async_update_time_sensitive_listeners(self): # Timer triggered β†’ notify all listeners for callback in self._time_sensitive_listeners: callback() # Entity updates itself Why this pattern: Decouples timer logic from entity logicOne timer can notify many entities efficientlyEntities can unregister when removed (cleanup)Standard HA pattern for coordinator-based integrations ","version":"Next 🚧","tagName":"h2"},{"title":"Timer Coordination Scenarios​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-coordination-scenarios","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Scenario 1: Normal Operation (No Midnight)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#scenario-1-normal-operation-no-midnight","content":" 14:00:00 β†’ Timer #2 triggers β†’ Update time-sensitive entities (current price changed) β†’ 60 entities updated (~5ms) 14:03:12 β†’ Timer #1 triggers (HA's 15-min cycle) β†’ Check if tomorrow data needed (no, still cached) β†’ Return cached data (fast path, ~2ms) 14:15:00 β†’ Timer #2 triggers β†’ Update time-sensitive entities β†’ 60 entities updated (~5ms) 14:16:00 β†’ Timer #3 triggers β†’ Update countdown/progress entities β†’ 10 entities updated (~1ms) Key observation: Timer #1 and Timer #2 run independently, no conflicts. ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 2: Midnight Turnover​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#scenario-2-midnight-turnover","content":" 23:45:12 β†’ Timer #1 triggers β†’ Check midnight: current_date=2025-11-17, last_check=2025-11-17 β†’ No turnover needed β†’ Return cached data 00:00:00 β†’ Timer #2 triggers FIRST (synchronized to midnight) β†’ Check midnight: current_date=2025-11-18, last_check=2025-11-17 β†’ Turnover needed! Perform rotation, save cache β†’ _last_midnight_check = 2025-11-18 β†’ Notify ALL entities 00:03:12 β†’ Timer #1 triggers (its regular cycle) β†’ Check midnight: current_date=2025-11-18, last_check=2025-11-18 β†’ Turnover already done β†’ skip β†’ Return existing data (fast path) Key observation: Atomic date comparison prevents double-turnover, whoever runs first wins. ","version":"Next 🚧","tagName":"h3"},{"title":"Scenario 3: Tomorrow Data Check (After 13:00)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#scenario-3-tomorrow-data-check-after-1300","content":" 13:00:00 β†’ Timer #2 triggers β†’ Normal quarter-hour refresh β†’ Update time-sensitive entities 13:03:12 β†’ Timer #1 triggers β†’ Check tomorrow data: missing or invalid β†’ Fetch from Tibber API (~300ms) β†’ Transform data (~200ms) β†’ Calculate periods (~100ms) β†’ Notify ALL entities (new data available) 13:15:00 β†’ Timer #2 triggers β†’ Normal quarter-hour refresh (uses newly fetched data) β†’ Update time-sensitive entities Key observation: Timer #1 does expensive work (API + transform), Timer #2 does cheap work (entity notify). ","version":"Next 🚧","tagName":"h3"},{"title":"Why We Keep HA's Timer (Timer #1)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#why-we-keep-has-timer-timer-1","content":" Your question: "warum wir den HA timer trotzdem weiter benutzen, da er ja fΓΌr uns unkontrollierte aktualisierte Γ€nderungen triggert" Answer: You're correct that it's not synchronized, but that's actually intentional: ","version":"Next 🚧","tagName":"h2"},{"title":"Reason 1: Load Distribution on Tibber API​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#reason-1-load-distribution-on-tibber-api","content":" If all installations used synchronized timers: ❌ Everyone fetches at 13:00:00 β†’ Tibber API overload❌ Everyone fetches at 14:00:00 β†’ Tibber API overload❌ "Thundering herd" problem With HA's unsynchronized timer: βœ… Installation A: 13:03:12, 13:18:12, 13:33:12, ...βœ… Installation B: 13:07:45, 13:22:45, 13:37:45, ...βœ… Installation C: 13:11:28, 13:26:28, 13:41:28, ...βœ… Natural distribution over ~30 minutesβœ… Plus: Random 0-30s delay on tomorrow checks Result: API load spread evenly, no spikes. ","version":"Next 🚧","tagName":"h3"},{"title":"Reason 2: What Timer #1 Actually Checks​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#reason-2-what-timer-1-actually-checks","content":" Timer #1 does NOT blindly update. It checks: def _should_update_price_data(self) -> str: # Check 1: Do we have tomorrow data? (only relevant after ~13:00) if tomorrow_missing or tomorrow_invalid: return "tomorrow_check" # Fetch needed # Check 2: Is cache still valid? if cache_valid: return "cached" # No fetch needed (most common!) # Check 3: Has enough time passed? if time_since_last_update < threshold: return "cached" # Too soon, skip fetch return "update_needed" # Rare case Most Timer #1 cycles: Fast path (~2ms), no API call, just returns cached data. API fetch only when: Tomorrow data missing/invalid (after 13:00)Cache expired (midnight turnover)Explicit user refresh ","version":"Next 🚧","tagName":"h3"},{"title":"Reason 3: HA Integration Best Practices​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#reason-3-ha-integration-best-practices","content":" βœ… Standard HA pattern: DataUpdateCoordinator is recommended by HA docsβœ… Automatic retry logic for temporary API failuresβœ… Backpressure handling (won't queue updates if previous still running)βœ… Developer tools integration (users can manually trigger refresh)βœ… Diagnostics integration (shows last update time, success/failure) ","version":"Next 🚧","tagName":"h3"},{"title":"What We DO Synchronize​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#what-we-do-synchronize","content":" βœ… Timer #2: Entity state updates at exact boundaries (user-visible)βœ… Timer #3: Countdown/progress at exact minutes (user-visible)❌ Timer #1: API fetch timing (invisible to user, distribution wanted) ","version":"Next 🚧","tagName":"h3"},{"title":"Performance Characteristics​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#performance-characteristics","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Timer #1 (DataUpdateCoordinator)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-1-dataupdatecoordinator","content":" Triggers: Every 15 minutes (unsynchronized)Fast path: ~2ms (cache check, return existing data)Slow path: ~600ms (API fetch + transform + calculate)Frequency: ~96 times/dayAPI calls: ~1-2 times/day (cached otherwise) ","version":"Next 🚧","tagName":"h3"},{"title":"Timer #2 (Quarter-Hour Refresh)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-2-quarter-hour-refresh","content":" Triggers: 96 times/day (exact boundaries)Processing: ~5ms (notify 60 entities)No API calls: Uses cached/transformed dataNo transformation: Just entity state updates ","version":"Next 🚧","tagName":"h3"},{"title":"Timer #3 (Minute Refresh)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#timer-3-minute-refresh","content":" Triggers: 1440 times/day (every minute)Processing: ~1ms (notify 10 entities)No API calls: No data processing at allLightweight: Just countdown math Total CPU budget: ~15 seconds/day for all timers combined. ","version":"Next 🚧","tagName":"h3"},{"title":"Debugging Timer Issues​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#debugging-timer-issues","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Check Timer #1 (HA Coordinator)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#check-timer-1-ha-coordinator","content":" # Enable debug logging _LOGGER.setLevel(logging.DEBUG) # Watch for these log messages: "Fetching data from API (reason: tomorrow_check)" # API call "Using cached data (no update needed)" # Fast path "Midnight turnover detected (Timer #1)" # Turnover ","version":"Next 🚧","tagName":"h3"},{"title":"Check Timer #2 (Quarter-Hour)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#check-timer-2-quarter-hour","content":" # Watch coordinator logs: "Updated 60 time-sensitive entities at quarter-hour boundary" # Normal "Midnight turnover detected (Timer #2)" # Turnover ","version":"Next 🚧","tagName":"h3"},{"title":"Check Timer #3 (Minute)​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#check-timer-3-minute","content":" # Watch coordinator logs: "Updated 10 minute-update entities" # Every minute ","version":"Next 🚧","tagName":"h3"},{"title":"Common Issues​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#common-issues","content":" Timer #2 not triggering: Check: schedule_quarter_hour_refresh() called in __init__?Check: _quarter_hour_timer_cancel properly stored? Double updates at midnight: Should NOT happen (atomic coordination)Check: Both timers use same date comparison logic? API overload: Check: Random delay working? (0-30s jitter on tomorrow check)Check: Cache validation logic correct? ","version":"Next 🚧","tagName":"h3"},{"title":"Related Documentation​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#related-documentation","content":" Architecture - Overall system design, data flowCaching Strategy - Cache lifetimes, invalidation, midnight turnoverAGENTS.md - Complete reference for AI development ","version":"Next 🚧","tagName":"h2"},{"title":"Summary​","type":1,"pageTitle":"Timer Architecture","url":"/hass.tibber_prices/developer/timer-architecture#summary","content":" Three independent timers: Timer #1 (HA built-in, 15 min, unsynchronized) β†’ Data fetching (when needed)Timer #2 (Custom, :00/:15/:30/:45) β†’ Entity state updates (always)Timer #3 (Custom, every minute) β†’ Countdown/progress (always) Key insights: Timer #1 unsynchronized = good (load distribution on API)Timer #2 synchronized = good (user sees correct data immediately)Timer #3 synchronized = good (smooth countdown UX)All three coordinate gracefully (atomic midnight checks, no conflicts) "Listener" terminology: Timer = mechanism that triggersListener = callback that gets calledObserver pattern = entities register, coordinator notifies ","version":"Next 🚧","tagName":"h2"}],"options":{"id":"default"}} \ No newline at end of file diff --git a/developer/setup.html b/developer/setup.html new file mode 100644 index 0000000..f27d954 --- /dev/null +++ b/developer/setup.html @@ -0,0 +1,44 @@ + + + + + +Development Setup | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Development Setup

    +
    +

    Note: This guide is under construction. For now, please refer to AGENTS.md for detailed setup information.

    +
    +

    Prerequisites​

    +
      +
    • VS Code with Dev Container support
    • +
    • Docker installed and running
    • +
    • GitHub account (for Tibber API token)
    • +
    +

    Quick Setup​

    +
    # Clone the repository
    git clone https://github.com/jpawlowski/hass.tibber_prices.git
    cd hass.tibber_prices

    # Open in VS Code
    code .

    # Reopen in DevContainer (VS Code will prompt)
    # Or manually: Ctrl+Shift+P β†’ "Dev Containers: Reopen in Container"
    +

    Development Environment​

    +

    The DevContainer includes:

    +
      +
    • Python 3.13 with .venv at /home/vscode/.venv/
    • +
    • uv package manager (fast, modern Python tooling)
    • +
    • Home Assistant development dependencies
    • +
    • Ruff linter/formatter
    • +
    • Git, GitHub CLI, Node.js, Rust toolchain
    • +
    +

    Running the Integration​

    +
    # Start Home Assistant in debug mode
    ./scripts/develop
    +

    Visit http://localhost:8123

    +

    Making Changes​

    +
    # Lint and format code
    ./scripts/lint

    # Check-only (CI mode)
    ./scripts/lint-check

    # Validate integration structure
    ./scripts/release/hassfest
    +

    See AGENTS.md for detailed patterns and conventions.

    + + \ No newline at end of file diff --git a/developer/sitemap.xml b/developer/sitemap.xml new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/developer/sitemap.xml @@ -0,0 +1 @@ +https://jpawlowski.github.io/hass.tibber_prices/developer/markdown-pageweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/weekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/api-referenceweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/architectureweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/caching-strategyweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/coding-guidelinesweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/contributingweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/critical-patternsweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/debuggingweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/introweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/performanceweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/period-calculation-theoryweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/refactoring-guideweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/release-managementweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/setupweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/testingweekly0.5https://jpawlowski.github.io/hass.tibber_prices/developer/timer-architectureweekly0.5 \ No newline at end of file diff --git a/developer/testing.html b/developer/testing.html new file mode 100644 index 0000000..4702687 --- /dev/null +++ b/developer/testing.html @@ -0,0 +1,45 @@ + + + + + +Testing | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Testing

    +
    +

    Note: This guide is under construction.

    +
    +

    Integration Validation​

    +

    Before running tests or committing changes, validate the integration structure:

    +
    # Run local validation (JSON syntax, Python syntax, required files)
    ./scripts/release/hassfest
    +

    This lightweight script checks:

    +
      +
    • βœ“ config_flow.py exists
    • +
    • βœ“ manifest.json is valid JSON with required fields
    • +
    • βœ“ Translation files have valid JSON syntax
    • +
    • βœ“ All Python files compile without syntax errors
    • +
    +

    Note: Full hassfest validation runs in GitHub Actions on push.

    +

    Running Tests​

    +
    # Run all tests
    pytest tests/

    # Run specific test file
    pytest tests/test_coordinator.py

    # Run with coverage
    pytest --cov=custom_components.tibber_prices tests/
    +

    Manual Testing​

    +
    # Start development environment
    ./scripts/develop
    +

    Then test in Home Assistant UI:

    +
      +
    • Configuration flow
    • +
    • Sensor states and attributes
    • +
    • Services
    • +
    • Translation strings
    • +
    +

    Test Guidelines​

    +

    Coming soon...

    + + \ No newline at end of file diff --git a/developer/timer-architecture.html b/developer/timer-architecture.html new file mode 100644 index 0000000..0734732 --- /dev/null +++ b/developer/timer-architecture.html @@ -0,0 +1,278 @@ + + + + + +Timer Architecture | Tibber Prices - Developer Guide + + + + + + + + + +
    Version: Next 🚧

    Timer Architecture

    +

    This document explains the timer/scheduler system in the Tibber Prices integration - what runs when, why, and how they coordinate.

    +

    Overview​

    +

    The integration uses three independent timer mechanisms for different purposes:

    +
    TimerTypeIntervalPurposeTrigger Method
    Timer #1HA built-in15 minutesAPI data updatesDataUpdateCoordinator
    Timer #2Custom:00, :15, :30, :45Entity state refreshasync_track_utc_time_change()
    Timer #3CustomEvery minuteCountdown/progressasync_track_utc_time_change()
    +

    Key principle: Timer #1 (HA) controls data fetching, Timer #2 controls entity updates, Timer #3 controls timing displays.

    +
    +

    Timer #1: DataUpdateCoordinator (HA Built-in)​

    +

    File: coordinator/core.py β†’ TibberPricesDataUpdateCoordinator

    +

    Type: Home Assistant's built-in DataUpdateCoordinator with UPDATE_INTERVAL = 15 minutes

    +

    What it is:

    +
      +
    • HA provides this timer system automatically when you inherit from DataUpdateCoordinator
    • +
    • Triggers _async_update_data() method every 15 minutes
    • +
    • Not synchronized to clock boundaries (each installation has different start time)
    • +
    +

    Purpose: Check if fresh API data is needed, fetch if necessary

    +

    What it does:

    +
    async def _async_update_data(self) -> TibberPricesData:
    # Step 1: Check midnight turnover FIRST (prevents race with Timer #2)
    if self._check_midnight_turnover_needed(dt_util.now()):
    await self._perform_midnight_data_rotation(dt_util.now())
    # Notify ALL entities after midnight turnover
    return self.data # Early return

    # Step 2: Check if we need tomorrow data (after 13:00)
    if self._should_update_price_data() == "tomorrow_check":
    await self._fetch_and_update_data() # Fetch from API
    return self.data

    # Step 3: Use cached data (fast path - most common)
    return self.data
    +

    Load Distribution:

    +
      +
    • Each HA installation starts Timer #1 at different times β†’ natural distribution
    • +
    • Tomorrow data check adds 0-30s random delay β†’ prevents "thundering herd" on Tibber API
    • +
    • Result: API load spread over ~30 minutes instead of all at once
    • +
    +

    Midnight Coordination:

    +
      +
    • Atomic check: _check_midnight_turnover_needed(now) compares dates only (no side effects)
    • +
    • If midnight turnover needed β†’ performs it and returns early
    • +
    • Timer #2 will see turnover already done and skip gracefully
    • +
    +

    Why we use HA's timer:

    +
      +
    • Automatic restart after HA restart
    • +
    • Built-in retry logic for temporary failures
    • +
    • Standard HA integration pattern
    • +
    • Handles backpressure (won't queue up if previous update still running)
    • +
    +
    +

    Timer #2: Quarter-Hour Refresh (Custom)​

    +

    File: coordinator/listeners.py β†’ ListenerManager.schedule_quarter_hour_refresh()

    +

    Type: Custom timer using async_track_utc_time_change(minute=[0, 15, 30, 45], second=0)

    +

    Purpose: Update time-sensitive entity states at interval boundaries without waiting for API poll

    +

    Problem it solves:

    +
      +
    • Timer #1 runs every 15 minutes but NOT synchronized to clock (:03, :18, :33, :48)
    • +
    • Current price changes at :00, :15, :30, :45 β†’ entities would show stale data for up to 15 minutes
    • +
    • Example: 14:00 new price, but Timer #1 ran at 13:58 β†’ next update at 14:13 β†’ users see old price until 14:13
    • +
    +

    What it does:

    +
    async def _handle_quarter_hour_refresh(self, now: datetime) -> None:
    # Step 1: Check midnight turnover (coordinates with Timer #1)
    if self._check_midnight_turnover_needed(now):
    # Timer #1 might have already done this β†’ atomic check handles it
    await self._perform_midnight_data_rotation(now)
    # Notify ALL entities after midnight turnover
    return

    # Step 2: Normal quarter-hour refresh (most common path)
    # Only notify time-sensitive entities (current_interval_price, etc.)
    self._listener_manager.async_update_time_sensitive_listeners()
    +

    Smart Boundary Tolerance:

    +
      +
    • Uses round_to_nearest_quarter_hour() with Β±2 second tolerance
    • +
    • HA may schedule timer at 14:59:58 β†’ rounds to 15:00:00 (shows new interval)
    • +
    • HA restart at 14:59:30 β†’ stays at 14:45:00 (shows current interval)
    • +
    • See Architecture for details
    • +
    +

    Absolute Time Scheduling:

    +
      +
    • async_track_utc_time_change() plans for all future boundaries (15:00, 15:15, 15:30, ...)
    • +
    • NOT relative delays ("in 15 minutes")
    • +
    • If triggered at 14:59:58 β†’ next trigger is 15:15:00, NOT 15:00:00 (prevents double updates)
    • +
    +

    Which entities listen:

    +
      +
    • All sensors that depend on "current interval" (e.g., current_interval_price, next_interval_price)
    • +
    • Binary sensors that check "is now in period?" (e.g., best_price_period_active)
    • +
    • ~50-60 entities out of 120+ total
    • +
    +

    Why custom timer:

    +
      +
    • HA's built-in coordinator doesn't support exact boundary timing
    • +
    • We need absolute time triggers, not periodic intervals
    • +
    • Allows fast entity updates without expensive data transformation
    • +
    +
    +

    Timer #3: Minute Refresh (Custom)​

    +

    File: coordinator/listeners.py β†’ ListenerManager.schedule_minute_refresh()

    +

    Type: Custom timer using async_track_utc_time_change(second=0) (every minute)

    +

    Purpose: Update countdown and progress sensors for smooth UX

    +

    What it does:

    +
    async def _handle_minute_refresh(self, now: datetime) -> None:
    # Only notify minute-update entities
    # No data fetching, no transformation, no midnight handling
    self._listener_manager.async_update_minute_listeners()
    +

    Which entities listen:

    +
      +
    • best_price_remaining_minutes - Countdown timer
    • +
    • peak_price_remaining_minutes - Countdown timer
    • +
    • best_price_progress - Progress bar (0-100%)
    • +
    • peak_price_progress - Progress bar (0-100%)
    • +
    • ~10 entities total
    • +
    +

    Why custom timer:

    +
      +
    • Users want smooth countdowns (not jumping 15 minutes at a time)
    • +
    • Progress bars need minute-by-minute updates
    • +
    • Very lightweight (no data processing, just state recalculation)
    • +
    +

    Why NOT every second:

    +
      +
    • Minute precision sufficient for countdown UX
    • +
    • Reduces CPU load (60Γ— fewer updates than seconds)
    • +
    • Home Assistant best practice (avoid sub-minute updates)
    • +
    +
    +

    Listener Pattern (Python/HA Terminology)​

    +

    Your question: "Sind Timer fΓΌr dich eigentlich 'Listener'?"

    +

    Answer: In Home Assistant terminology:

    +
      +
    • Timer = The mechanism that triggers at specific times (async_track_utc_time_change)
    • +
    • Listener = A callback function that gets called when timer triggers
    • +
    • Observer Pattern = Entities register callbacks, coordinator notifies them
    • +
    +

    How it works:

    +
    # Entity registers a listener callback
    class TibberPricesSensor(CoordinatorEntity):
    async def async_added_to_hass(self):
    # Register this entity's update callback
    self._remove_listener = self.coordinator.async_add_time_sensitive_listener(
    self._handle_coordinator_update
    )

    # Coordinator maintains list of listeners
    class ListenerManager:
    def __init__(self):
    self._time_sensitive_listeners = [] # List of callbacks

    def async_add_time_sensitive_listener(self, callback):
    self._time_sensitive_listeners.append(callback)

    def async_update_time_sensitive_listeners(self):
    # Timer triggered β†’ notify all listeners
    for callback in self._time_sensitive_listeners:
    callback() # Entity updates itself
    +

    Why this pattern:

    +
      +
    • Decouples timer logic from entity logic
    • +
    • One timer can notify many entities efficiently
    • +
    • Entities can unregister when removed (cleanup)
    • +
    • Standard HA pattern for coordinator-based integrations
    • +
    +
    +

    Timer Coordination Scenarios​

    +

    Scenario 1: Normal Operation (No Midnight)​

    +
    14:00:00 β†’ Timer #2 triggers
    β†’ Update time-sensitive entities (current price changed)
    β†’ 60 entities updated (~5ms)

    14:03:12 β†’ Timer #1 triggers (HA's 15-min cycle)
    β†’ Check if tomorrow data needed (no, still cached)
    β†’ Return cached data (fast path, ~2ms)

    14:15:00 β†’ Timer #2 triggers
    β†’ Update time-sensitive entities
    β†’ 60 entities updated (~5ms)

    14:16:00 β†’ Timer #3 triggers
    β†’ Update countdown/progress entities
    β†’ 10 entities updated (~1ms)
    +

    Key observation: Timer #1 and Timer #2 run independently, no conflicts.

    +

    Scenario 2: Midnight Turnover​

    +
    23:45:12 β†’ Timer #1 triggers
    β†’ Check midnight: current_date=2025-11-17, last_check=2025-11-17
    β†’ No turnover needed
    β†’ Return cached data

    00:00:00 β†’ Timer #2 triggers FIRST (synchronized to midnight)
    β†’ Check midnight: current_date=2025-11-18, last_check=2025-11-17
    β†’ Turnover needed! Perform rotation, save cache
    β†’ _last_midnight_check = 2025-11-18
    β†’ Notify ALL entities

    00:03:12 β†’ Timer #1 triggers (its regular cycle)
    β†’ Check midnight: current_date=2025-11-18, last_check=2025-11-18
    β†’ Turnover already done β†’ skip
    β†’ Return existing data (fast path)
    +

    Key observation: Atomic date comparison prevents double-turnover, whoever runs first wins.

    +

    Scenario 3: Tomorrow Data Check (After 13:00)​

    +
    13:00:00 β†’ Timer #2 triggers
    β†’ Normal quarter-hour refresh
    β†’ Update time-sensitive entities

    13:03:12 β†’ Timer #1 triggers
    β†’ Check tomorrow data: missing or invalid
    β†’ Fetch from Tibber API (~300ms)
    β†’ Transform data (~200ms)
    β†’ Calculate periods (~100ms)
    β†’ Notify ALL entities (new data available)

    13:15:00 β†’ Timer #2 triggers
    β†’ Normal quarter-hour refresh (uses newly fetched data)
    β†’ Update time-sensitive entities
    +

    Key observation: Timer #1 does expensive work (API + transform), Timer #2 does cheap work (entity notify).

    +
    +

    Why We Keep HA's Timer (Timer #1)​

    +

    Your question: "warum wir den HA timer trotzdem weiter benutzen, da er ja fΓΌr uns unkontrollierte aktualisierte Γ€nderungen triggert"

    +

    Answer: You're correct that it's not synchronized, but that's actually intentional:

    +

    Reason 1: Load Distribution on Tibber API​

    +

    If all installations used synchronized timers:

    +
      +
    • ❌ Everyone fetches at 13:00:00 β†’ Tibber API overload
    • +
    • ❌ Everyone fetches at 14:00:00 β†’ Tibber API overload
    • +
    • ❌ "Thundering herd" problem
    • +
    +

    With HA's unsynchronized timer:

    +
      +
    • βœ… Installation A: 13:03:12, 13:18:12, 13:33:12, ...
    • +
    • βœ… Installation B: 13:07:45, 13:22:45, 13:37:45, ...
    • +
    • βœ… Installation C: 13:11:28, 13:26:28, 13:41:28, ...
    • +
    • βœ… Natural distribution over ~30 minutes
    • +
    • βœ… Plus: Random 0-30s delay on tomorrow checks
    • +
    +

    Result: API load spread evenly, no spikes.

    +

    Reason 2: What Timer #1 Actually Checks​

    +

    Timer #1 does NOT blindly update. It checks:

    +
    def _should_update_price_data(self) -> str:
    # Check 1: Do we have tomorrow data? (only relevant after ~13:00)
    if tomorrow_missing or tomorrow_invalid:
    return "tomorrow_check" # Fetch needed

    # Check 2: Is cache still valid?
    if cache_valid:
    return "cached" # No fetch needed (most common!)

    # Check 3: Has enough time passed?
    if time_since_last_update < threshold:
    return "cached" # Too soon, skip fetch

    return "update_needed" # Rare case
    +

    Most Timer #1 cycles: Fast path (~2ms), no API call, just returns cached data.

    +

    API fetch only when:

    +
      +
    • Tomorrow data missing/invalid (after 13:00)
    • +
    • Cache expired (midnight turnover)
    • +
    • Explicit user refresh
    • +
    +

    Reason 3: HA Integration Best Practices​

    +
      +
    • βœ… Standard HA pattern: DataUpdateCoordinator is recommended by HA docs
    • +
    • βœ… Automatic retry logic for temporary API failures
    • +
    • βœ… Backpressure handling (won't queue updates if previous still running)
    • +
    • βœ… Developer tools integration (users can manually trigger refresh)
    • +
    • βœ… Diagnostics integration (shows last update time, success/failure)
    • +
    +

    What We DO Synchronize​

    +
      +
    • βœ… Timer #2: Entity state updates at exact boundaries (user-visible)
    • +
    • βœ… Timer #3: Countdown/progress at exact minutes (user-visible)
    • +
    • ❌ Timer #1: API fetch timing (invisible to user, distribution wanted)
    • +
    +
    +

    Performance Characteristics​

    +

    Timer #1 (DataUpdateCoordinator)​

    +
      +
    • Triggers: Every 15 minutes (unsynchronized)
    • +
    • Fast path: ~2ms (cache check, return existing data)
    • +
    • Slow path: ~600ms (API fetch + transform + calculate)
    • +
    • Frequency: ~96 times/day
    • +
    • API calls: ~1-2 times/day (cached otherwise)
    • +
    +

    Timer #2 (Quarter-Hour Refresh)​

    +
      +
    • Triggers: 96 times/day (exact boundaries)
    • +
    • Processing: ~5ms (notify 60 entities)
    • +
    • No API calls: Uses cached/transformed data
    • +
    • No transformation: Just entity state updates
    • +
    +

    Timer #3 (Minute Refresh)​

    +
      +
    • Triggers: 1440 times/day (every minute)
    • +
    • Processing: ~1ms (notify 10 entities)
    • +
    • No API calls: No data processing at all
    • +
    • Lightweight: Just countdown math
    • +
    +

    Total CPU budget: ~15 seconds/day for all timers combined.

    +
    +

    Debugging Timer Issues​

    +

    Check Timer #1 (HA Coordinator)​

    +
    # Enable debug logging
    _LOGGER.setLevel(logging.DEBUG)

    # Watch for these log messages:
    "Fetching data from API (reason: tomorrow_check)" # API call
    "Using cached data (no update needed)" # Fast path
    "Midnight turnover detected (Timer #1)" # Turnover
    +

    Check Timer #2 (Quarter-Hour)​

    +
    # Watch coordinator logs:
    "Updated 60 time-sensitive entities at quarter-hour boundary" # Normal
    "Midnight turnover detected (Timer #2)" # Turnover
    +

    Check Timer #3 (Minute)​

    +
    # Watch coordinator logs:
    "Updated 10 minute-update entities" # Every minute
    +

    Common Issues​

    +
      +
    1. +

      Timer #2 not triggering:

      +
        +
      • Check: schedule_quarter_hour_refresh() called in __init__?
      • +
      • Check: _quarter_hour_timer_cancel properly stored?
      • +
      +
    2. +
    3. +

      Double updates at midnight:

      +
        +
      • Should NOT happen (atomic coordination)
      • +
      • Check: Both timers use same date comparison logic?
      • +
      +
    4. +
    5. +

      API overload:

      +
        +
      • Check: Random delay working? (0-30s jitter on tomorrow check)
      • +
      • Check: Cache validation logic correct?
      • +
      +
    6. +
    +
    + + +
    +

    Summary​

    +

    Three independent timers:

    +
      +
    1. Timer #1 (HA built-in, 15 min, unsynchronized) β†’ Data fetching (when needed)
    2. +
    3. Timer #2 (Custom, :00/:15/:30/:45) β†’ Entity state updates (always)
    4. +
    5. Timer #3 (Custom, every minute) β†’ Countdown/progress (always)
    6. +
    +

    Key insights:

    +
      +
    • Timer #1 unsynchronized = good (load distribution on API)
    • +
    • Timer #2 synchronized = good (user sees correct data immediately)
    • +
    • Timer #3 synchronized = good (smooth countdown UX)
    • +
    • All three coordinate gracefully (atomic midnight checks, no conflicts)
    • +
    +

    "Listener" terminology:

    +
      +
    • Timer = mechanism that triggers
    • +
    • Listener = callback that gets called
    • +
    • Observer pattern = entities register, coordinator notifies
    • +
    + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..3b1c847 --- /dev/null +++ b/index.html @@ -0,0 +1,217 @@ + + + + + + + Tibber Prices Documentation + + + + +
    + +

    Tibber Prices Documentation

    +

    Custom Home Assistant Integration

    + +
    + ⚠️ Not affiliated with Tibber + This is an independent, community-maintained custom integration. Not an official Tibber product. +
    + + + + +
    + + + diff --git a/user/404.html b/user/404.html new file mode 100644 index 0000000..80b3d65 --- /dev/null +++ b/user/404.html @@ -0,0 +1,18 @@ + + + + + +Tibber Prices Integration + + + + + + + + + +

    Page Not Found

    We could not find what you were looking for.

    Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

    + + \ No newline at end of file diff --git a/user/actions.html b/user/actions.html new file mode 100644 index 0000000..dad5271 --- /dev/null +++ b/user/actions.html @@ -0,0 +1,151 @@ + + + + + +Actions (Services) | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Actions (Services)

    +

    Home Assistant now surfaces these backend service endpoints as Actions in the UI (for example, Developer Tools β†’ Actions or the Action editor inside dashboards). Behind the scenes they are still Home Assistant services that use the service: key, but this guide uses the word β€œaction” whenever we refer to the user interface.

    +

    You can still call them from automations, scripts, and dashboards the same way as before (service: tibber_prices.get_chartdata, etc.), just remember that the frontend officially lists them as actions.

    +

    Available Actions​

    +

    tibber_prices.get_chartdata​

    +

    Purpose: Returns electricity price data in chart-friendly formats for visualization and analysis.

    +

    Key Features:

    +
      +
    • Flexible Output Formats: Array of objects or array of arrays
    • +
    • Time Range Selection: Filter by day (yesterday, today, tomorrow)
    • +
    • Price Filtering: Filter by price level or rating
    • +
    • Period Support: Return best/peak price period summaries instead of intervals
    • +
    • Resolution Control: Interval (15-minute) or hourly aggregation
    • +
    • Customizable Field Names: Rename output fields to match your chart library
    • +
    • Currency Control: Major (EUR/NOK) or minor (ct/ΓΈre) units
    • +
    +

    Basic Example:

    +
    service: tibber_prices.get_chartdata
    data:
    entry_id: YOUR_ENTRY_ID
    day: ["today", "tomorrow"]
    output_format: array_of_objects
    response_variable: chart_data
    +

    Response Format:

    +
    {
    "data": [
    {
    "start_time": "2025-11-17T00:00:00+01:00",
    "price_per_kwh": 0.2534
    },
    {
    "start_time": "2025-11-17T00:15:00+01:00",
    "price_per_kwh": 0.2498
    }
    ]
    }
    +

    Common Parameters:

    +
    ParameterDescriptionDefault
    entry_idIntegration entry ID (required)-
    dayDays to include: yesterday, today, tomorrow["today", "tomorrow"]
    output_formatarray_of_objects or array_of_arraysarray_of_objects
    resolutioninterval (15-min) or hourlyinterval
    minor_currencyReturn prices in ct/ΓΈre instead of EUR/NOKfalse
    round_decimalsDecimal places (0-10)4 (major) or 2 (minor)
    +

    Rolling Window Mode:

    +

    Omit the day parameter to get a dynamic 48-hour rolling window that automatically adapts to data availability:

    +
    service: tibber_prices.get_chartdata
    data:
    entry_id: YOUR_ENTRY_ID
    # Omit 'day' for rolling window
    output_format: array_of_objects
    response_variable: chart_data
    +

    Behavior:

    +
      +
    • When tomorrow data available (typically after ~13:00): Returns today + tomorrow
    • +
    • When tomorrow data not available: Returns yesterday + today
    • +
    +

    This is useful for charts that should always show a 48-hour window without manual day selection.

    +

    Period Filter Example:

    +

    Get best price periods as summaries instead of intervals:

    +
    service: tibber_prices.get_chartdata
    data:
    entry_id: YOUR_ENTRY_ID
    period_filter: best_price # or peak_price
    day: ["today", "tomorrow"]
    include_level: true
    include_rating_level: true
    response_variable: periods
    +

    Advanced Filtering:

    +
    service: tibber_prices.get_chartdata
    data:
    entry_id: YOUR_ENTRY_ID
    level_filter: ["VERY_CHEAP", "CHEAP"] # Only cheap periods
    rating_level_filter: ["LOW"] # Only low-rated prices
    insert_nulls: segments # Add nulls at segment boundaries
    +

    Complete Documentation:

    +

    For detailed parameter descriptions, open Developer Tools β†’ Actions (the UI label) and select tibber_prices.get_chartdata. The inline documentation is still stored in services.yaml because actions are backed by services.

    +
    +

    tibber_prices.get_apexcharts_yaml​

    +
    +

    ⚠️ IMPORTANT: This action generates a basic example configuration as a starting point, NOT a complete solution for all ApexCharts features.

    +

    This integration is primarily a data provider. The generated YAML demonstrates how to use the get_chartdata action to fetch price data. Due to the segmented nature of our data (different time periods per series) and the use of Home Assistant's service API instead of entity attributes, many advanced ApexCharts features (like in_header, certain transformations) are not compatible or require manual customization.

    +

    You are welcome to customize the generated YAML for your specific needs, but comprehensive ApexCharts configuration support is beyond the scope of this integration. Community contributions with improved configurations are always appreciated!

    +

    For custom solutions: Use the get_chartdata action directly to build your own charts with full control over the data format and visualization.

    +
    +

    Purpose: Generates a basic ApexCharts card YAML configuration example for visualizing electricity prices with automatic color-coding by price level.

    +

    Prerequisites:

    + +

    ✨ Key Features:

    +
      +
    • Automatic Color-Coded Series: Separate series for each price level (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) or rating (LOW, NORMAL, HIGH)
    • +
    • Dynamic Y-Axis Scaling: Rolling window modes automatically use chart_metadata sensor for optimal Y-axis bounds
    • +
    • Best Price Period Highlights: Optional vertical bands showing detected best price periods
    • +
    • Translated Labels: Automatically uses your Home Assistant language setting
    • +
    • Clean Gap Visualization: Proper NULL insertion for missing data segments
    • +
    +

    Quick Example:

    +
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    day: today # Optional: yesterday, today, tomorrow, rolling_window, rolling_window_autozoom
    level_type: rating_level # or "level" for 5-level classification
    highlight_best_price: true # Show best price period overlays
    response_variable: apexcharts_config
    +

    Day Parameter Options:

    +
      +
    • Fixed days (yesterday, today, tomorrow): Static 24-hour views, no additional dependencies
    • +
    • Rolling Window (default when omitted or rolling_window): Dynamic 48-hour window that automatically shifts between yesterday+today and today+tomorrow based on data availability +
        +
      • ✨ Includes dynamic Y-axis scaling via chart_metadata sensor
      • +
      +
    • +
    • Rolling Window (Auto-Zoom) (rolling_window_autozoom): Same as rolling window, but additionally zooms in progressively (2h lookback + remaining time until midnight, graph span decreases every 15 minutes) +
        +
      • ✨ Includes dynamic Y-axis scaling via chart_metadata sensor
      • +
      +
    • +
    +

    Dynamic Y-Axis Scaling (Rolling Window Modes):

    +

    Rolling window configurations automatically integrate with the chart_metadata sensor for optimal chart appearance:

    +
      +
    • Automatic bounds: Y-axis min/max adjust to data range
    • +
    • No manual configuration: Works out of the box if sensor is enabled
    • +
    • Fallback behavior: If sensor is disabled, uses ApexCharts auto-scaling
    • +
    • Real-time updates: Y-axis adapts when price data changes
    • +
    +

    Example: Today's Prices (Static View)

    +
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    day: today
    level_type: rating_level
    response_variable: config

    # Use in dashboard:
    type: custom:apexcharts-card
    # ... paste generated config
    +

    Example: Rolling 48h Window (Dynamic View)

    +
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    # Omit 'day' for rolling window (or use 'rolling_window')
    level_type: level # 5-level classification
    highlight_best_price: true
    response_variable: config

    # Use in dashboard:
    type: custom:config-template-card
    entities:
    - sensor.tibber_home_tomorrow_data
    - sensor.tibber_home_chart_metadata # For dynamic Y-axis
    card:
    # ... paste generated config
    +

    Screenshots:

    +

    Screenshots coming soon for all 4 modes: today, tomorrow, rolling_window, rolling_window_autozoom

    +

    Level Type Options:

    +
      +
    • rating_level (default): 3 series (LOW, NORMAL, HIGH) - based on your personal thresholds
    • +
    • level: 5 series (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) - absolute price ranges
    • +
    +

    Best Price Period Highlights:

    +

    When highlight_best_price: true:

    +
      +
    • Vertical bands overlay the chart showing detected best price periods
    • +
    • Tooltip shows "Best Price Period" label when hovering over highlighted areas
    • +
    • Only appears when best price periods are configured and detected
    • +
    +

    Important Notes:

    +
      +
    • Config Template Card is only required for rolling window modes (enables dynamic Y-axis)
    • +
    • Fixed day views (today, tomorrow, yesterday) work with ApexCharts Card alone
    • +
    • Generated YAML is a starting point - customize colors, styling, features as needed
    • +
    • All labels are automatically translated to your Home Assistant language
    • +
    +

    Use the response in Lovelace dashboards by copying the generated YAML.

    +

    Documentation: Refer to Developer Tools β†’ Actions for descriptions of the fields exposed by this action.

    +
    +

    tibber_prices.refresh_user_data​

    +

    Purpose: Forces an immediate refresh of user data (homes, subscriptions) from the Tibber API.

    +

    Example:

    +
    service: tibber_prices.refresh_user_data
    data:
    entry_id: YOUR_ENTRY_ID
    +

    Note: User data is cached for 24 hours. Trigger this action only when you need immediate updates (e.g., after changing Tibber subscriptions).

    +
    +

    Migration from Chart Data Export Sensor​

    +

    If you're still using the sensor.tibber_home_chart_data_export sensor, consider migrating to the tibber_prices.get_chartdata action:

    +

    Benefits:

    +
      +
    • No HA restart required for configuration changes
    • +
    • More flexible filtering and formatting options
    • +
    • Better performance (on-demand instead of polling)
    • +
    • Future-proof (active development)
    • +
    +

    Migration Steps:

    +
      +
    1. Note your current sensor configuration (Step 7 in Options Flow)
    2. +
    3. Create automation/script that calls tibber_prices.get_chartdata with the same parameters
    4. +
    5. Test the new approach
    6. +
    7. Disable the old sensor when satisfied
    8. +
    + + \ No newline at end of file diff --git a/user/assets/css/styles.be4f3d68.css b/user/assets/css/styles.be4f3d68.css new file mode 100644 index 0000000..e69ea48 --- /dev/null +++ b/user/assets/css/styles.be4f3d68.css @@ -0,0 +1 @@ +.searchbox__reset:focus,.searchbox__submit:focus{outline:0}@layer docusaurus.infima,docusaurus.theme-common,docusaurus.theme-classic,docusaurus.core,docusaurus.plugin-debug,docusaurus.theme-mermaid,docusaurus.theme-live-codeblock,docusaurus.theme-search-algolia.docsearch,docusaurus.theme-search-algolia;@layer docusaurus.infima{.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.dropdown__link--active,.dropdown__link:hover,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.footer__item{margin-top:0}.footer__items{margin-bottom:0}[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;left:0;opacity:0;position:fixed;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"Β« "}.pagination-nav__link--next .pagination-nav__label:after{content:" Β»"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}}:root{--ifm-font-family-base:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--ifm-heading-font-family:"Space Grotesk",var(--ifm-font-family-base);--ifm-font-family-monospace:"JetBrains Mono","Fira Code","Consolas",monospace;--ifm-color-primary:#00b9e7;--ifm-color-primary-dark:#00a7d0;--ifm-color-primary-darker:#009ec4;--ifm-color-primary-darkest:#0082a2;--ifm-color-primary-light:#00cbfe;--ifm-color-primary-lighter:#19d1ff;--ifm-color-primary-lightest:#4dddff;--ifm-color-success:#00ffa3;--ifm-color-warning:#ffb800;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#00b9e71a;--ifm-global-radius:0.75rem;--ifm-button-border-radius:0.75rem;--ifm-card-border-radius:1rem;--ifm-code-border-radius:0.5rem;--ifm-global-shadow-lw:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;--ifm-global-shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;--ifm-global-shadow-tl:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;--ifm-hero-background-color:linear-gradient(135deg,#00b9e7,#00ffa3)}[data-theme=dark]{--ifm-color-primary:#00d4ff;--ifm-color-primary-dark:#00c0e6;--ifm-color-primary-darker:#00b5d9;--ifm-color-primary-darkest:#0095b3;--ifm-color-primary-light:#19ddff;--ifm-color-primary-lighter:#33e1ff;--ifm-color-primary-lightest:#66e9ff;--ifm-color-success:#00ffb3;--docusaurus-highlighted-code-line-bg:#00d4ff26;--ifm-background-color:#1a1a1a;--ifm-background-surface-color:#242424;--ifm-global-shadow-lw:0 1px 3px 0 #0000004d,0 1px 2px 0 #0003;--ifm-global-shadow-md:0 4px 6px -1px #0000004d,0 2px 4px -1px #0003;--ifm-global-shadow-tl:0 10px 15px -3px #0006,0 4px 6px -2px #0003}.hero--primary{background:linear-gradient(135deg,#00b9e7,#09c 50%,#ffb800);color:#fff;position:relative}.hero--primary:before{background:linear-gradient(135deg,#00b9e7f2,#0099ccf2 50%,#ffb800d9);bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:0}.hero--primary .container{position:relative;z-index:1}[data-theme=dark] .hero--primary{background:linear-gradient(135deg,#00506b,#003d52 50%,#665000)}[data-theme=dark] .hero--primary:before{background:linear-gradient(135deg,#00506bf2,#003d52f2 50%,#665000d9)}[data-theme=light] .theme-doc-version-banner{background-color:#fff4e6;border-color:#ffb800}[data-theme=dark] .theme-doc-version-banner{background-color:#2d2000;border-color:#ffb800}.docusaurus-highlight-code-line{background-color:#00b9e733;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}[data-theme=dark] .docusaurus-highlight-code-line{background-color:#00d4ff33}.theme-doc-sidebar-container{border-right:1px solid var(--ifm-toc-border-color)}.table-of-contents__link--active{color:var(--ifm-color-primary);font-weight:700}.admonition{border-left-width:4px}.admonition-note{border-left-color:var(--ifm-color-primary)}.admonition-tip{border-left-color:var(--ifm-color-success)}.admonition-warning{border-left-color:var(--ifm-color-warning)}.features{padding:4rem 0}.features h3{color:var(--ifm-color-primary)}[data-theme=dark] .features h3{color:var(--ifm-color-primary-lighter)}.card{border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-md);transition:box-shadow .2s ease-in-out,transform .2s ease-in-out}.card:hover{box-shadow:var(--ifm-global-shadow-tl);transform:translateY(-2px)}.navbar{box-shadow:var(--ifm-global-shadow-lw)}code{border-radius:var(--ifm-code-border-radius)}.button{font-weight:600;letter-spacing:.025em;transition:.2s ease-in-out}.button:hover{box-shadow:var(--ifm-global-shadow-md);transform:translateY(-1px)}h1,h2,h3,h4,h5,h6{font-family:var(--ifm-heading-font-family);letter-spacing:-.02em}*{transition-duration:.15s;transition-property:background-color,border-color,color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.searchbox,.searchbox__input{display:inline-block;box-sizing:border-box}.algolia-docsearch-suggestion{border-bottom-color:#3a3dd1}.algolia-docsearch-suggestion--category-header{background-color:#4b54de}.algolia-docsearch-suggestion--highlight{color:#3a33d1}.algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight{background-color:#4d47d5}.aa-cursor .algolia-docsearch-suggestion--content{color:#272296}.aa-cursor .algolia-docsearch-suggestion{background:#ebebfb}.searchbox{height:32px!important;position:relative;visibility:visible!important;white-space:nowrap;width:200px}.searchbox .algolia-autocomplete{display:block;height:100%;width:100%}.searchbox__wrapper{height:100%;position:relative;width:100%;z-index:999}.searchbox__input{appearance:none;background:#fff!important;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;font-size:12px;height:100%;padding:0 26px 0 32px;transition:box-shadow .4s,background .4s;vertical-align:middle;white-space:normal;width:100%}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{background:#fff;box-shadow:inset 0 0 0 1px #aaa;outline:0}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{background-color:#458ee100;border:0;border-radius:16px 0 0 16px;font-size:inherit;height:100%;left:0;margin:0;padding:0;position:absolute;right:inherit;text-align:center;top:0;-webkit-user-select:none;user-select:none;vertical-align:middle;width:32px}.searchbox__submit:before{content:"";display:inline-block;height:100%;margin-right:-4px;vertical-align:middle}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion,.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit svg{fill:#6d7e96;height:14px;vertical-align:middle;width:14px}.searchbox__reset{background:none;border:0;cursor:pointer;display:block;fill:#00000080;font-size:inherit;margin:0;padding:0;position:absolute;right:8px;top:8px;-webkit-user-select:none;user-select:none}.searchbox__reset.hide{display:none}.searchbox__reset svg{display:block;height:8px;margin:4px;width:8px}.searchbox__input:valid~.searchbox__reset{animation-duration:.15s;animation-name:a;display:block}@keyframes a{0%{opacity:0;transform:translate3d(-20%,0,0)}to{opacity:1;transform:none}}.algolia-autocomplete .ds-dropdown-menu:before{background:#373940;border-radius:2px;border-right:1px solid #373940;border-top:1px solid #373940;content:"";display:block;height:14px;position:absolute;top:-7px;transform:rotate(-45deg);width:14px;z-index:1000}.algolia-autocomplete .ds-dropdown-menu{box-shadow:0 1px 0 0 #0003,0 2px 3px 0 #0000001a}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{background:#fff;border-radius:4px;overflow:auto;padding:0;position:relative}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;overflow:hidden;padding:0;position:relative;-webkit-text-decoration:none;text-decoration:none}.algolia-autocomplete .ds-cursor .algolia-docsearch-suggestion--wrapper{background:#f1f1f1;box-shadow:inset -2px 0 0 #61dafb}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{background:#ffe564;padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight{background:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{background:inherit;box-shadow:inset 0 -2px 0 0 #458ee1cc;color:inherit;padding:0 0 1px}.algolia-autocomplete .algolia-docsearch-suggestion--content{cursor:pointer;display:block;float:right;padding:5.33333px 0 5.33333px 10.66667px;position:relative;width:70%}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{background:#ececec;content:"";display:block;height:100%;left:-1px;position:absolute;top:0;width:1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{background-color:#373940;color:#fff;display:none;font-size:14px;font-weight:700;letter-spacing:.08em;margin:0;padding:5px 8px;position:relative;text-transform:uppercase}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{background-color:#fff;float:left;padding:8px 0 0;width:100%}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{color:#777;display:none;float:left;font-size:.9em;padding:5.33333px 10.66667px;position:relative;text-align:right;width:30%;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{background:#ececec;content:"";display:block;height:100%;position:absolute;right:0;top:0;width:1px}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before,.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column .algolia-docsearch-suggestion--highlight{background-color:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--title{color:#02060c;font-size:.9em;font-weight:700;margin-bottom:4px}.algolia-autocomplete .algolia-docsearch-suggestion--text{color:#63676d;display:block;font-size:.85em;line-height:1.2em;padding-right:2px}.algolia-autocomplete .algolia-docsearch-suggestion--version{color:#a6aab1;display:block;font-size:.65em;padding-right:2px;padding-top:2px}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{background-color:#373940;font-size:1.2em;margin-top:-8px;padding:8px 0;text-align:center;width:100%}.algolia-autocomplete .algolia-docsearch-suggestion--no-results .algolia-docsearch-suggestion--text{color:#fff;margin-top:4px}.algolia-autocomplete .algolia-docsearch-suggestion code{background-color:#ebebeb;border:none;border-radius:3px;color:#222;font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:90%;padding:1px 5px}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header{color:#fff;display:block}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column{display:block}.algolia-autocomplete .algolia-docsearch-footer{background-color:#fff;float:right;font-size:0;height:30px;line-height:0;width:100%;z-index:2000}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 130 18'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath fill='url(%2523a)' d='M59.4.02h13.3a2.37 2.37 0 0 1 2.38 2.37V15.6a2.37 2.37 0 0 1-2.38 2.36H59.4a2.37 2.37 0 0 1-2.38-2.36V2.38A2.37 2.37 0 0 1 59.4.02'/%3E%3Cpath fill='%2523FFF' d='M66.26 4.56c-2.82 0-5.1 2.27-5.1 5.08 0 2.8 2.28 5.07 5.1 5.07 2.8 0 5.1-2.26 5.1-5.07 0-2.8-2.28-5.07-5.1-5.07zm0 8.65c-2 0-3.6-1.6-3.6-3.56 0-1.97 1.6-3.58 3.6-3.58 1.98 0 3.6 1.6 3.6 3.58a3.58 3.58 0 0 1-3.6 3.57zm0-6.4v2.66c0 .07.08.13.15.1l2.4-1.24c.04-.02.06-.1.03-.14a2.96 2.96 0 0 0-2.46-1.5.1.1 0 0 0-.1.1zm-3.33-1.96-.3-.3a.78.78 0 0 0-1.12 0l-.36.36a.77.77 0 0 0 0 1.1l.3.3c.05.05.13.04.17 0 .2-.25.4-.5.6-.7.23-.23.46-.43.7-.6.07-.04.07-.1.03-.16zm5-.8V3.4a.78.78 0 0 0-.78-.78h-1.83a.78.78 0 0 0-.78.78v.63c0 .07.06.12.14.1a5.7 5.7 0 0 1 1.58-.22c.52 0 1.04.07 1.54.2a.1.1 0 0 0 .13-.1z'/%3E%3Cpath fill='%2523182359' d='M102.16 13.76c0 1.46-.37 2.52-1.12 3.2-.75.67-1.9 1-3.44 1-.56 0-1.74-.1-2.67-.3l.34-1.7c.78.17 1.82.2 2.36.2.86 0 1.48-.16 1.84-.5.37-.36.55-.88.55-1.57v-.35a6 6 0 0 1-.84.3 4.2 4.2 0 0 1-1.2.17 4.5 4.5 0 0 1-1.6-.28 3.4 3.4 0 0 1-1.26-.82 3.7 3.7 0 0 1-.8-1.35c-.2-.54-.3-1.5-.3-2.2 0-.67.1-1.5.3-2.06a3.9 3.9 0 0 1 .9-1.43 4.1 4.1 0 0 1 1.45-.92 5.3 5.3 0 0 1 1.94-.37c.7 0 1.35.1 1.97.2a16 16 0 0 1 1.6.33v8.46zm-5.95-4.2c0 .9.2 1.88.6 2.3.4.4.9.62 1.53.62q.51 0 .96-.15a2.8 2.8 0 0 0 .73-.33V6.7a8.5 8.5 0 0 0-1.42-.17c-.76-.02-1.36.3-1.77.8-.4.5-.62 1.4-.62 2.23zm16.13 0c0 .72-.1 1.26-.32 1.85a4.4 4.4 0 0 1-.9 1.53c-.38.42-.85.75-1.4.98-.54.24-1.4.37-1.8.37-.43 0-1.27-.13-1.8-.36a4.1 4.1 0 0 1-1.4-.97 4.5 4.5 0 0 1-.92-1.52 5 5 0 0 1-.33-1.84c0-.72.1-1.4.32-2s.53-1.1.92-1.5c.4-.43.86-.75 1.4-.98a4.55 4.55 0 0 1 1.78-.34 4.7 4.7 0 0 1 1.8.34c.54.23 1 .55 1.4.97q.57.63.9 1.5c.23.6.35 1.3.35 2zm-2.2 0c0-.92-.2-1.7-.6-2.22-.38-.54-.94-.8-1.64-.8-.72 0-1.27.26-1.67.8s-.58 1.3-.58 2.22c0 .93.2 1.56.6 2.1.38.54.94.8 1.64.8s1.25-.26 1.65-.8c.4-.55.6-1.17.6-2.1m6.97 4.7c-3.5.02-3.5-2.8-3.5-3.27L113.57.92l2.15-.34v10c0 .25 0 1.87 1.37 1.88v1.8zm3.77 0h-2.15v-9.2l2.15-.33v9.54zM119.8 3.74c.7 0 1.3-.58 1.3-1.3 0-.7-.58-1.3-1.3-1.3-.73 0-1.3.6-1.3 1.3 0 .72.58 1.3 1.3 1.3m6.43 1c.7 0 1.3.1 1.78.27.5.18.88.42 1.17.73.28.3.5.74.6 1.18.13.46.2.95.2 1.5v5.47a25 25 0 0 1-1.5.25q-1.005.15-2.25.15a6.8 6.8 0 0 1-1.52-.16 3.2 3.2 0 0 1-1.18-.5 2.46 2.46 0 0 1-.76-.9c-.18-.37-.27-.9-.27-1.44 0-.52.1-.85.3-1.2.2-.37.48-.67.83-.9a3.6 3.6 0 0 1 1.23-.5 7 7 0 0 1 2.2-.1l.83.16V8.4c0-.25-.03-.48-.1-.7a1.5 1.5 0 0 0-.3-.58c-.15-.18-.34-.3-.58-.4a2.5 2.5 0 0 0-.92-.17c-.5 0-.94.06-1.35.13-.4.08-.75.16-1 .25l-.27-1.74c.27-.1.67-.18 1.2-.28a9.3 9.3 0 0 1 1.65-.14zm.18 7.74c.66 0 1.15-.04 1.5-.1V10.2a5.1 5.1 0 0 0-2-.1c-.23.03-.45.1-.64.2a1.17 1.17 0 0 0-.47.38c-.13.17-.18.26-.18.52 0 .5.17.8.5.98.32.2.74.3 1.3.3zM84.1 4.8c.72 0 1.3.08 1.8.26.48.17.87.42 1.15.73.3.3.5.72.6 1.17.14.45.2.94.2 1.47v5.48a25 25 0 0 1-1.5.26c-.67.1-1.42.14-2.25.14a6.8 6.8 0 0 1-1.52-.16 3.2 3.2 0 0 1-1.18-.5 2.46 2.46 0 0 1-.76-.9c-.18-.38-.27-.9-.27-1.44 0-.53.1-.86.3-1.22s.5-.65.84-.88a3.6 3.6 0 0 1 1.24-.5 7 7 0 0 1 2.2-.1q.39.045.84.15v-.35c0-.24-.03-.48-.1-.7a1.5 1.5 0 0 0-.3-.58c-.15-.17-.34-.3-.58-.4a2.5 2.5 0 0 0-.9-.15c-.5 0-.96.05-1.37.12-.4.07-.75.15-1 .24l-.26-1.75c.27-.08.67-.17 1.18-.26a9 9 0 0 1 1.66-.15zm.2 7.73c.65 0 1.14-.04 1.48-.1v-2.17a5.1 5.1 0 0 0-1.98-.1c-.24.03-.46.1-.65.18a1.17 1.17 0 0 0-.47.4c-.12.17-.17.26-.17.52 0 .5.18.8.5.98.32.2.75.3 1.3.3zm8.68 1.74c-3.5 0-3.5-2.82-3.5-3.28L89.45.92 91.6.6v10c0 .25 0 1.87 1.38 1.88v1.8z'/%3E%3Cpath fill='%25231D3657' d='M5.03 11.03c0 .7-.26 1.24-.76 1.64q-.75.6-2.1.6c-.88 0-1.6-.14-2.17-.42v-1.2c.36.16.74.3 1.14.38.4.1.78.15 1.13.15.5 0 .88-.1 1.12-.3a.94.94 0 0 0 .35-.77.98.98 0 0 0-.33-.74c-.22-.2-.68-.44-1.37-.72-.72-.3-1.22-.62-1.52-1C.23 8.27.1 7.82.1 7.3c0-.65.22-1.17.7-1.55.46-.37 1.08-.56 1.86-.56.76 0 1.5.16 2.25.48l-.4 1.05c-.7-.3-1.32-.44-1.87-.44-.4 0-.73.08-.94.26a.9.9 0 0 0-.33.72c0 .2.04.38.12.52.08.15.22.3.42.4.2.14.55.3 1.06.52.58.24 1 .47 1.27.67s.47.44.6.7c.12.26.18.57.18.92zM9 13.27c-.92 0-1.64-.27-2.16-.8-.52-.55-.78-1.3-.78-2.24 0-.97.24-1.73.72-2.3.5-.54 1.15-.82 2-.82.78 0 1.4.25 1.85.72.46.48.7 1.14.7 1.97v.67H7.35c0 .58.17 1.02.46 1.33.3.3.7.47 1.24.47.36 0 .68-.04.98-.1a5 5 0 0 0 .98-.33v1.02a3.9 3.9 0 0 1-.94.32 5.7 5.7 0 0 1-1.08.1zm-.22-5.2c-.4 0-.73.12-.97.38s-.37.62-.42 1.1h2.7c0-.48-.13-.85-.36-1.1-.23-.26-.54-.38-.94-.38zm7.7 5.1-.26-.84h-.05c-.28.36-.57.6-.86.74-.28.13-.65.2-1.1.2-.6 0-1.05-.16-1.38-.48-.32-.32-.5-.77-.5-1.34 0-.62.24-1.08.7-1.4.45-.3 1.14-.47 2.07-.5l1.02-.03V9.2c0-.37-.1-.65-.27-.84-.17-.2-.45-.28-.82-.28-.3 0-.6.04-.88.13a7 7 0 0 0-.8.33l-.4-.9a4.4 4.4 0 0 1 1.05-.4 5 5 0 0 1 1.08-.12c.76 0 1.33.18 1.7.5q.6.495.6 1.56v4h-.9zm-1.9-.87c.47 0 .83-.13 1.1-.38.3-.26.43-.62.43-1.08v-.52l-.76.03c-.6.03-1.02.13-1.3.3s-.4.45-.4.82c0 .26.08.47.24.6.16.16.4.23.7.23zm7.57-5.2c.25 0 .46.03.62.06l-.12 1.18a2.4 2.4 0 0 0-.56-.06c-.5 0-.92.16-1.24.5-.3.32-.47.75-.47 1.27v3.1h-1.27V7.23h1l.16 1.05h.05c.2-.36.45-.64.77-.85a1.83 1.83 0 0 1 1.02-.3zm4.12 6.17c-.9 0-1.58-.27-2.05-.8-.47-.52-.7-1.27-.7-2.25 0-1 .24-1.77.73-2.3.5-.54 1.2-.8 2.12-.8.63 0 1.2.1 1.7.34l-.4 1c-.52-.2-.96-.3-1.3-.3-1.04 0-1.55.68-1.55 2.05 0 .67.13 1.17.38 1.5.26.34.64.5 1.13.5a3.23 3.23 0 0 0 1.6-.4v1.1a2.5 2.5 0 0 1-.73.28 4.4 4.4 0 0 1-.93.08m8.28-.1h-1.27V9.5c0-.45-.1-.8-.28-1.02-.18-.23-.47-.34-.88-.34-.53 0-.9.16-1.16.48-.25.3-.38.85-.38 1.6v2.94h-1.26V4.8h1.26v2.12c0 .34-.02.7-.06 1.1h.08a1.76 1.76 0 0 1 .72-.67c.3-.16.66-.24 1.07-.24 1.43 0 2.15.74 2.15 2.2v3.86zM42.2 7.1c.74 0 1.32.28 1.73.82.4.53.62 1.3.62 2.26 0 .97-.2 1.73-.63 2.27-.42.54-1 .82-1.75.82s-1.33-.27-1.75-.8h-.08l-.23.7h-.94V4.8h1.26v2l-.02.64-.03.56h.05c.4-.6 1-.9 1.78-.9zm-.33 1.04c-.5 0-.88.15-1.1.45s-.34.8-.35 1.5v.08c0 .72.12 1.24.35 1.57.23.32.6.48 1.12.48.44 0 .78-.17 1-.53.24-.35.36-.87.36-1.53 0-1.35-.47-2.03-1.4-2.03zm3.24-.92h1.4l1.2 3.37c.18.47.3.92.36 1.34h.04l.18-.72 1.37-4H51l-2.53 6.73c-.46 1.23-1.23 1.85-2.3 1.85-.3 0-.56-.03-.83-.1v-1c.2.05.4.08.65.08.6 0 1.03-.36 1.28-1.06l.22-.56-2.4-5.94z'/%3E%3C/g%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100%;display:block;height:100%;margin-left:auto;margin-right:5px;overflow:hidden;text-indent:-9000px;width:110px}html[data-theme=dark] .algolia-docsearch-footer,html[data-theme=dark] .algolia-docsearch-suggestion--category-header,html[data-theme=dark] .algolia-docsearch-suggestion--wrapper{background:var(--ifm-background-color)!important;color:var(--ifm-font-color-base)!important}html[data-theme=dark] .algolia-docsearch-suggestion--title{color:var(--ifm-font-color-base)!important}html[data-theme=dark] .ds-cursor .algolia-docsearch-suggestion--wrapper{background:var(--ifm-background-surface-color)!important}mark{background-color:#add8e6}@layer docusaurus.core{#__docusaurus-base-url-issue-banner-container{display:none}}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}@layer docusaurus.theme-common{body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.themedComponent_mlkZ{display:none}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}.anchorTargetStickyNavbar_Vzrq{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorTargetHideOnScrollNavbar_vjPI{scroll-margin-top:.5rem}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before{transform:rotate(90deg)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child{margin-bottom:0}}@layer docusaurus.theme-mermaid{.container_lyt7,.container_lyt7>svg{max-width:100%}}@layer docusaurus.theme-classic{:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}#nprogress{pointer-events:none}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);-webkit-text-decoration:none;text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;-webkit-text-decoration:underline;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.toggleIcon_g3eP,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.announcementBarContent_xLdY{flex:1 1 auto}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{-webkit-tap-highlight-color:transparent;align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}[data-theme-choice=dark] .darkToggleIcon_wfgR,[data-theme-choice=light] .lightToggleIcon_pyhR,[data-theme-choice=system] .systemToggleIcon_QzmC{display:initial}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.categoryLinkLabel_W154,.linkLabel_WmDU{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}.iconExternalLink_nPIU{margin-left:.3rem}.menuExternalLink_NmtK{align-items:center}.linkLabel_WmDU{line-clamp:2;-webkit-line-clamp:2}.categoryLink_byQd{overflow:hidden}.menu__link--sublist-caret:after{margin-left:var(--ifm-menu-link-padding-vertical)}.categoryLinkLabel_W154{flex:1;line-clamp:2;-webkit-line-clamp:2}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.dropdownNavbarItemMobile_J0Sd{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.navbar__items--right>:last-child{padding-right:0}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}body,html{height:100%}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_Ckt0{background:var(--prism-background-color);border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);color:var(--prism-color);margin-bottom:var(--ifm-leading)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockStandalone_MEMb{padding:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:line-count;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(line-count);opacity:.4}.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_Vdqa{opacity:1!important}.copyButtonIcons_IEyt{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_TrPX,.copyButtonSuccessIcon_cVMy{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_cVMy{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_Vdqa .copyButtonIcon_TrPX{opacity:0;transform:scale(.33)}.copyButtonCopied_Vdqa .copyButtonSuccessIcon_cVMy{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_b1P5{height:1.2rem;width:1.2rem}.wordWrapButtonEnabled_uzNF .wordWrapButtonIcon_b1P5{color:var(--ifm-color-primary)}.buttonGroup_M5ko{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_M5ko button{align-items:center;background:var(--prism-background-color);border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);color:var(--prism-color);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_M5ko button:focus-visible,.buttonGroup_M5ko button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_M5ko button{opacity:.4}.codeBlockContent_QJqH{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_OeMC{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_OeMC+.codeBlockContent_QJqH .codeBlock_a8dz{border-top-left-radius:0;border-top-right-radius:0}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);text-transform:uppercase}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;fill:var(--ifm-alert-foreground-color);height:1.6em;width:1.6em}.admonitionContent_BuS1>:last-child{margin-bottom:0}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*{margin-top:0}.mdxPageWrapper_j9I6{justify-content:center}}@media (min-width:601px){.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{left:inherit!important;right:0!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete .ds-dropdown-menu{background:#0000;border:none;border-radius:4px;height:auto;margin:6px 0 0;max-width:600px;min-width:500px;padding:0;position:relative;text-align:left;top:-6px;z-index:999}}@media (min-width:768px){.algolia-docsearch-suggestion{border-bottom-color:#7671df}.algolia-docsearch-suggestion--subcategory-column{border-right-color:#7671df;color:#4e4726}}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:0 var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:600px){.algolia-autocomplete .ds-dropdown-menu{display:block;left:auto!important;max-height:calc(100% - 5rem);max-width:calc(100% - 2rem);position:fixed!important;right:1rem!important;top:50px!important;width:600px;z-index:100}.algolia-autocomplete .ds-dropdown-menu:before{right:6rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.noPrint_WFHX,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/user/assets/images/rolling-window-6c8a36b71a45f05dce3a59a93a99b808.jpg b/user/assets/images/rolling-window-6c8a36b71a45f05dce3a59a93a99b808.jpg new file mode 100644 index 0000000..a113a34 Binary files /dev/null and b/user/assets/images/rolling-window-6c8a36b71a45f05dce3a59a93a99b808.jpg differ diff --git a/user/assets/images/rolling-window-autozoom-e0a26d16d446e133373ab07b8df6f42a.jpg b/user/assets/images/rolling-window-autozoom-e0a26d16d446e133373ab07b8df6f42a.jpg new file mode 100644 index 0000000..6cb2345 Binary files /dev/null and b/user/assets/images/rolling-window-autozoom-e0a26d16d446e133373ab07b8df6f42a.jpg differ diff --git a/user/assets/images/today-7df9c96ed3844407c55b5d71ce188ccf.jpg b/user/assets/images/today-7df9c96ed3844407c55b5d71ce188ccf.jpg new file mode 100644 index 0000000..8674bb4 Binary files /dev/null and b/user/assets/images/today-7df9c96ed3844407c55b5d71ce188ccf.jpg differ diff --git a/user/assets/js/0480b142.c165f9ac.js b/user/assets/js/0480b142.c165f9ac.js new file mode 100644 index 0000000..9dd0b77 --- /dev/null +++ b/user/assets/js/0480b142.c165f9ac.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8070],{7208:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>l,default:()=>c,frontMatter:()=>t,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"faq","title":"FAQ - Frequently Asked Questions","description":"Common questions about the Tibber Prices integration.","source":"@site/docs/faq.md","sourceDirName":".","slug":"/faq","permalink":"/hass.tibber_prices/user/faq","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/faq.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Automation Examples","permalink":"/hass.tibber_prices/user/automation-examples"},"next":{"title":"Troubleshooting","permalink":"/hass.tibber_prices/user/troubleshooting"}}');var r=n(4848),o=n(8453);const t={},l="FAQ - Frequently Asked Questions",a={},d=[{value:"General Questions",id:"general-questions",level:2},{value:"Why don't I see tomorrow's prices yet?",id:"why-dont-i-see-tomorrows-prices-yet",level:3},{value:"How often does the integration update data?",id:"how-often-does-the-integration-update-data",level:3},{value:"Can I use multiple Tibber homes?",id:"can-i-use-multiple-tibber-homes",level:3},{value:"Does this work without a Tibber subscription?",id:"does-this-work-without-a-tibber-subscription",level:3},{value:"Configuration Questions",id:"configuration-questions",level:2},{value:"What are good values for price thresholds?",id:"what-are-good-values-for-price-thresholds",level:3},{value:"How do I optimize Best Price Period detection?",id:"how-do-i-optimize-best-price-period-detection",level:3},{value:"Why do I sometimes only get 1 period instead of 2?",id:"why-do-i-sometimes-only-get-1-period-instead-of-2",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Sensors show "unavailable"",id:"sensors-show-unavailable",level:3},{value:"Best Price Period is ON all day",id:"best-price-period-is-on-all-day",level:3},{value:"Prices are in wrong currency",id:"prices-are-in-wrong-currency",level:3},{value:"Tomorrow data not appearing at all",id:"tomorrow-data-not-appearing-at-all",level:3},{value:"Automation Questions",id:"automation-questions",level:2},{value:"How do I run dishwasher during cheap period?",id:"how-do-i-run-dishwasher-during-cheap-period",level:3},{value:"Can I avoid peak prices automatically?",id:"can-i-avoid-peak-prices-automatically",level:3}];function h(e){const i={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.header,{children:(0,r.jsx)(i.h1,{id:"faq---frequently-asked-questions",children:"FAQ - Frequently Asked Questions"})}),"\n",(0,r.jsx)(i.p,{children:"Common questions about the Tibber Prices integration."}),"\n",(0,r.jsx)(i.h2,{id:"general-questions",children:"General Questions"}),"\n",(0,r.jsx)(i.h3,{id:"why-dont-i-see-tomorrows-prices-yet",children:"Why don't I see tomorrow's prices yet?"}),"\n",(0,r.jsxs)(i.p,{children:["Tomorrow's prices are published by Tibber around ",(0,r.jsx)(i.strong,{children:"13:00 CET"})," (12:00 UTC in winter, 11:00 UTC in summer)."]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Before publication"}),": Sensors show ",(0,r.jsx)(i.code,{children:"unavailable"})," or use today's data"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"After publication"}),": Integration automatically fetches new data within 15 minutes"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"No manual refresh needed"})," - polling happens automatically"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"how-often-does-the-integration-update-data",children:"How often does the integration update data?"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"API Polling"}),": Every 15 minutes"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Sensor Updates"}),": On quarter-hour boundaries (00, 15, 30, 45 minutes)"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Cache"}),": Price data cached until midnight (reduces API load)"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"can-i-use-multiple-tibber-homes",children:"Can I use multiple Tibber homes?"}),"\n",(0,r.jsxs)(i.p,{children:["Yes! Use the ",(0,r.jsx)(i.strong,{children:'"Add another home"'})," option:"]}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsx)(i.li,{children:"Settings \u2192 Devices & Services \u2192 Tibber Prices"}),"\n",(0,r.jsx)(i.li,{children:'Click "Configure" \u2192 "Add another home"'}),"\n",(0,r.jsx)(i.li,{children:"Select additional home from dropdown"}),"\n",(0,r.jsx)(i.li,{children:"Each home gets separate sensors with unique entity IDs"}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"does-this-work-without-a-tibber-subscription",children:"Does this work without a Tibber subscription?"}),"\n",(0,r.jsx)(i.p,{children:"No, you need:"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Active Tibber electricity contract"}),"\n",(0,r.jsxs)(i.li,{children:["API token from ",(0,r.jsx)(i.a,{href:"https://developer.tibber.com/",children:"developer.tibber.com"})]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:"The integration is free, but requires Tibber as your electricity provider."}),"\n",(0,r.jsx)(i.h2,{id:"configuration-questions",children:"Configuration Questions"}),"\n",(0,r.jsx)(i.h3,{id:"what-are-good-values-for-price-thresholds",children:"What are good values for price thresholds?"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Default values work for most users:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"High Price Threshold: 30% above average"}),"\n",(0,r.jsx)(i.li,{children:"Low Price Threshold: 15% below average"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Adjust if:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"You're in a market with high volatility \u2192 increase thresholds"}),"\n",(0,r.jsx)(i.li,{children:"You want more sensitive ratings \u2192 decrease thresholds"}),"\n",(0,r.jsx)(i.li,{children:"Seasonal changes \u2192 review every few months"}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"how-do-i-optimize-best-price-period-detection",children:"How do I optimize Best Price Period detection?"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Key parameters:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Flex"}),": 15-20% is optimal (default 15%)"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Min Distance"}),": 5-10% recommended (default 5%)"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Rating Levels"}),': Start with "CHEAP + VERY_CHEAP" (default)']}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Relaxation"}),": Keep enabled (helps find periods on expensive days)"]}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:["See ",(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/period-calculation",children:"Period Calculation"})," for detailed tuning guide."]}),"\n",(0,r.jsx)(i.h3,{id:"why-do-i-sometimes-only-get-1-period-instead-of-2",children:"Why do I sometimes only get 1 period instead of 2?"}),"\n",(0,r.jsxs)(i.p,{children:["This happens on ",(0,r.jsx)(i.strong,{children:"high-price days"})," when:"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Few intervals meet your criteria"}),"\n",(0,r.jsx)(i.li,{children:"Relaxation is disabled"}),"\n",(0,r.jsx)(i.li,{children:"Flex is too low"}),"\n",(0,r.jsx)(i.li,{children:"Min Distance is too strict"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Solutions:"})}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsx)(i.li,{children:"Enable relaxation (recommended)"}),"\n",(0,r.jsx)(i.li,{children:"Increase flex to 20-25%"}),"\n",(0,r.jsx)(i.li,{children:"Reduce min_distance to 3-5%"}),"\n",(0,r.jsx)(i.li,{children:'Add more rating levels (include "NORMAL")'}),"\n"]}),"\n",(0,r.jsx)(i.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,r.jsx)(i.h3,{id:"sensors-show-unavailable",children:'Sensors show "unavailable"'}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Common causes:"})}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"API Token invalid"})," \u2192 Check token at developer.tibber.com"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"No internet connection"})," \u2192 Check HA network"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Tibber API down"})," \u2192 Check ",(0,r.jsx)(i.a,{href:"https://status.tibber.com",children:"status.tibber.com"})]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Integration not loaded"})," \u2192 Restart Home Assistant"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"best-price-period-is-on-all-day",children:"Best Price Period is ON all day"}),"\n",(0,r.jsxs)(i.p,{children:["This means ",(0,r.jsx)(i.strong,{children:"all intervals meet your criteria"})," (very cheap day!):"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Not an error - enjoy the low prices!"}),"\n",(0,r.jsx)(i.li,{children:"Consider tightening filters (lower flex, higher min_distance)"}),"\n",(0,r.jsx)(i.li,{children:"Or add automation to only run during first detected period"}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"prices-are-in-wrong-currency",children:"Prices are in wrong currency"}),"\n",(0,r.jsx)(i.p,{children:"Integration uses currency from your Tibber subscription:"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"EUR \u2192 displays in ct/kWh"}),"\n",(0,r.jsx)(i.li,{children:"NOK/SEK \u2192 displays in \xf8re/kWh"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:"Cannot be changed (tied to your electricity contract)."}),"\n",(0,r.jsx)(i.h3,{id:"tomorrow-data-not-appearing-at-all",children:"Tomorrow data not appearing at all"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Check:"})}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsx)(i.li,{children:"Your Tibber home has hourly price contract (not fixed price)"}),"\n",(0,r.jsx)(i.li,{children:"API token has correct permissions"}),"\n",(0,r.jsxs)(i.li,{children:["Integration logs for API errors (",(0,r.jsx)(i.code,{children:"/config/home-assistant.log"}),")"]}),"\n",(0,r.jsx)(i.li,{children:"Tibber actually published data (check Tibber app)"}),"\n"]}),"\n",(0,r.jsx)(i.h2,{id:"automation-questions",children:"Automation Questions"}),"\n",(0,r.jsx)(i.h3,{id:"how-do-i-run-dishwasher-during-cheap-period",children:"How do I run dishwasher during cheap period?"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:'automation:\n - alias: "Dishwasher during Best Price"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n condition:\n - condition: time\n after: "20:00:00" # Only start after 8 PM\n action:\n - service: switch.turn_on\n target:\n entity_id: switch.dishwasher\n'})}),"\n",(0,r.jsxs)(i.p,{children:["See ",(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/automation-examples",children:"Automation Examples"})," for more recipes."]}),"\n",(0,r.jsx)(i.h3,{id:"can-i-avoid-peak-prices-automatically",children:"Can I avoid peak prices automatically?"}),"\n",(0,r.jsx)(i.p,{children:"Yes! Use Peak Price Period binary sensor:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:'automation:\n - alias: "Disable charging during peak prices"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_peak_price_period\n to: "on"\n action:\n - service: switch.turn_off\n target:\n entity_id: switch.ev_charger\n'})}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsxs)(i.p,{children:["\ud83d\udca1 ",(0,r.jsx)(i.strong,{children:"Still need help?"})]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/troubleshooting",children:"Troubleshooting Guide"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/issues",children:"GitHub Issues"})}),"\n"]})]})}function c(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/0546f6b4.1a94d170.js b/user/assets/js/0546f6b4.1a94d170.js new file mode 100644 index 0000000..832bb23 --- /dev/null +++ b/user/assets/js/0546f6b4.1a94d170.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[406],{8171:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"period-calculation","title":"Period Calculation","description":"Learn how Best Price and Peak Price periods work, and how to configure them for your needs.","source":"@site/docs/period-calculation.md","sourceDirName":".","slug":"/period-calculation","permalink":"/hass.tibber_prices/user/period-calculation","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/period-calculation.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Sensors","permalink":"/hass.tibber_prices/user/sensors"},"next":{"title":"Dynamic Icons","permalink":"/hass.tibber_prices/user/dynamic-icons"}}');var r=n(4848),t=n(8453);const l={},a="Period Calculation",o={},d=[{value:"Table of Contents",id:"table-of-contents",level:2},{value:"Quick Start",id:"quick-start",level:2},{value:"What Are Price Periods?",id:"what-are-price-periods",level:3},{value:"Default Behavior",id:"default-behavior",level:3},{value:"Example Timeline",id:"example-timeline",level:3},{value:"How It Works",id:"how-it-works",level:2},{value:"The Basic Idea",id:"the-basic-idea",level:3},{value:"Step-by-Step Process",id:"step-by-step-process",level:3},{value:"1. Define the Search Range (Flexibility)",id:"1-define-the-search-range-flexibility",level:4},{value:"2. Ensure Quality (Distance from Average)",id:"2-ensure-quality-distance-from-average",level:4},{value:"3. Check Duration",id:"3-check-duration",level:4},{value:"4. Apply Optional Filters",id:"4-apply-optional-filters",level:4},{value:"5. Automatic Price Spike Smoothing",id:"5-automatic-price-spike-smoothing",level:4},{value:"Visual Example",id:"visual-example",level:3},{value:"Configuration Guide",id:"configuration-guide",level:2},{value:"Basic Settings",id:"basic-settings",level:3},{value:"Flexibility",id:"flexibility",level:4},{value:"Minimum Period Length",id:"minimum-period-length",level:4},{value:"Distance from Average",id:"distance-from-average",level:4},{value:"Optional Filters",id:"optional-filters",level:3},{value:"Level Filter (Absolute Quality)",id:"level-filter-absolute-quality",level:4},{value:"Gap Tolerance (for Level Filter)",id:"gap-tolerance-for-level-filter",level:4},{value:"Tweaking Strategy: What to Adjust First?",id:"tweaking-strategy-what-to-adjust-first",level:3},{value:"1. Start with Relaxation (Easiest)",id:"1-start-with-relaxation-easiest",level:4},{value:"2. Adjust Period Length (Simple)",id:"2-adjust-period-length-simple",level:4},{value:"3. Fine-tune Flexibility (Moderate)",id:"3-fine-tune-flexibility-moderate",level:4},{value:"4. Adjust Distance from Average (Advanced)",id:"4-adjust-distance-from-average-advanced",level:4},{value:"5. Enable Level Filter (Expert)",id:"5-enable-level-filter-expert",level:4},{value:"Common Mistakes to Avoid",id:"common-mistakes-to-avoid",level:3},{value:"Understanding Relaxation",id:"understanding-relaxation",level:2},{value:"What Is Relaxation?",id:"what-is-relaxation",level:3},{value:"How to Enable",id:"how-to-enable",level:3},{value:"Why Relaxation Is Better Than Manual Tweaking",id:"why-relaxation-is-better-than-manual-tweaking",level:3},{value:"How It Works (Adaptive Matrix)",id:"how-it-works-adaptive-matrix",level:3},{value:"Phase Matrix",id:"phase-matrix",level:4},{value:"Choosing the Number of Attempts",id:"choosing-the-number-of-attempts",level:3},{value:"Per-Day Independence",id:"per-day-independence",level:4},{value:"Common Scenarios",id:"common-scenarios",level:2},{value:"Scenario 1: Simple Best Price (Default)",id:"scenario-1-simple-best-price-default",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"No Periods Found",id:"no-periods-found",level:3},{value:"Periods Split Into Small Pieces",id:"periods-split-into-small-pieces",level:3},{value:"Understanding Sensor Attributes",id:"understanding-sensor-attributes",level:3},{value:"Midnight Price Classification Changes",id:"midnight-price-classification-changes",level:3},{value:"Advanced Topics",id:"advanced-topics",level:2},{value:"Quick Reference",id:"quick-reference",level:3},{value:"Price Levels Reference",id:"price-levels-reference",level:3}];function c(e){const i={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components},{Details:n}=i;return n||function(e,i){throw new Error("Expected "+(i?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.header,{children:(0,r.jsx)(i.h1,{id:"period-calculation",children:"Period Calculation"})}),"\n",(0,r.jsx)(i.p,{children:"Learn how Best Price and Peak Price periods work, and how to configure them for your needs."}),"\n",(0,r.jsx)(i.h2,{id:"table-of-contents",children:"Table of Contents"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#quick-start",children:"Quick Start"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#how-it-works",children:"How It Works"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#configuration-guide",children:"Configuration Guide"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#understanding-relaxation",children:"Understanding Relaxation"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#common-scenarios",children:"Common Scenarios"})}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#troubleshooting",children:"Troubleshooting"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#no-periods-found",children:"No Periods Found"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#periods-split-into-small-pieces",children:"Periods Split Into Small Pieces"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#midnight-price-classification-changes",children:"Midnight Price Classification Changes"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#advanced-topics",children:"Advanced Topics"})}),"\n"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,r.jsx)(i.h3,{id:"what-are-price-periods",children:"What Are Price Periods?"}),"\n",(0,r.jsxs)(i.p,{children:["The integration finds time windows when electricity is especially ",(0,r.jsx)(i.strong,{children:"cheap"})," (Best Price) or ",(0,r.jsx)(i.strong,{children:"expensive"})," (Peak Price):"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Best Price Periods"})," \ud83d\udfe2 - When to run your dishwasher, charge your EV, or heat water"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Peak Price Periods"})," \ud83d\udd34 - When to reduce consumption or defer non-essential loads"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"default-behavior",children:"Default Behavior"}),"\n",(0,r.jsx)(i.p,{children:"Out of the box, the integration:"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Best Price"}),": Finds cheapest 1-hour+ windows that are at least 5% below the daily average"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Peak Price"}),": Finds most expensive 30-minute+ windows that are at least 5% above the daily average"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Relaxation"}),": Automatically loosens filters if not enough periods are found"]}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Most users don't need to change anything!"})," The defaults work well for typical use cases."]}),"\n",(0,r.jsxs)(n,{children:[(0,r.jsx)("summary",{children:"\u2139\ufe0f Why do Best Price and Peak Price have different defaults?"}),(0,r.jsxs)(i.p,{children:["The integration sets different ",(0,r.jsx)(i.strong,{children:"initial defaults"})," because the features serve different purposes:"]}),(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Best Price (60 min, 15% flex):"})}),(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Longer duration ensures appliances can complete their cycles"}),"\n",(0,r.jsx)(i.li,{children:"Stricter flex (15%) focuses on genuinely cheap times"}),"\n",(0,r.jsx)(i.li,{children:"Use case: Running dishwasher, EV charging, water heating"}),"\n"]}),(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Peak Price (30 min, 20% flex):"})}),(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Shorter duration acceptable for early warnings"}),"\n",(0,r.jsx)(i.li,{children:"More flexible (20%) catches price spikes earlier"}),"\n",(0,r.jsx)(i.li,{children:"Use case: Alerting to expensive periods, even brief ones"}),"\n"]}),(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"You can adjust all these values"})," in the configuration if the defaults don't fit your use case. The asymmetric defaults simply provide good starting points for typical scenarios."]})]}),"\n",(0,r.jsx)(i.h3,{id:"example-timeline",children:"Example Timeline"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"00:00 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 Best Price Period (cheap prices)\n04:00 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 Normal\n08:00 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 Peak Price Period (expensive prices)\n12:00 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 Normal\n16:00 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 Peak Price Period (expensive prices)\n20:00 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 Best Price Period (cheap prices)\n"})}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"how-it-works",children:"How It Works"}),"\n",(0,r.jsx)(i.h3,{id:"the-basic-idea",children:"The Basic Idea"}),"\n",(0,r.jsxs)(i.p,{children:["Each day, the integration analyzes all 96 quarter-hourly price intervals and identifies ",(0,r.jsx)(i.strong,{children:"continuous time ranges"})," that meet specific criteria."]}),"\n",(0,r.jsx)(i.p,{children:"Think of it like this:"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Find potential windows"})," - Times close to the daily MIN (Best Price) or MAX (Peak Price)"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Filter by quality"})," - Ensure they're meaningfully different from average"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Check duration"})," - Must be long enough to be useful"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Apply preferences"})," - Optional: only show stable prices, avoid mediocre times"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"step-by-step-process",children:"Step-by-Step Process"}),"\n",(0,r.jsx)(i.h4,{id:"1-define-the-search-range-flexibility",children:"1. Define the Search Range (Flexibility)"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Best Price:"})," How much MORE than the daily minimum can a price be?"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Daily MIN: 20 ct/kWh\nFlexibility: 15% (default)\n\u2192 Search for times \u2264 23 ct/kWh (20 + 15%)\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Peak Price:"})," How much LESS than the daily maximum can a price be?"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Daily MAX: 40 ct/kWh\nFlexibility: -15% (default)\n\u2192 Search for times \u2265 34 ct/kWh (40 - 15%)\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Why flexibility?"})," Prices rarely stay at exactly MIN/MAX. Flexibility lets you capture realistic time windows."]}),"\n",(0,r.jsx)(i.h4,{id:"2-ensure-quality-distance-from-average",children:"2. Ensure Quality (Distance from Average)"}),"\n",(0,r.jsx)(i.p,{children:"Periods must be meaningfully different from the daily average:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Daily AVG: 30 ct/kWh\nMinimum distance: 5% (default)\n\nBest Price: Must be \u2264 28.5 ct/kWh (30 - 5%)\nPeak Price: Must be \u2265 31.5 ct/kWh (30 + 5%)\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Why?"}),' This prevents marking mediocre times as "best" just because they\'re slightly below average.']}),"\n",(0,r.jsx)(i.h4,{id:"3-check-duration",children:"3. Check Duration"}),"\n",(0,r.jsx)(i.p,{children:"Periods must be long enough to be practical:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Default: 60 minutes minimum\n\n45-minute period \u2192 Discarded\n90-minute period \u2192 Kept \u2713\n"})}),"\n",(0,r.jsx)(i.h4,{id:"4-apply-optional-filters",children:"4. Apply Optional Filters"}),"\n",(0,r.jsx)(i.p,{children:"You can optionally require:"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Absolute quality"}),' (level filter) - "Only show if prices are CHEAP/EXPENSIVE (not just below/above average)"']}),"\n"]}),"\n",(0,r.jsx)(i.h4,{id:"5-automatic-price-spike-smoothing",children:"5. Automatic Price Spike Smoothing"}),"\n",(0,r.jsx)(i.p,{children:"Isolated price spikes are automatically detected and smoothed to prevent unnecessary period fragmentation:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Original prices: 18, 19, 35, 20, 19 ct \u2190 35 ct is an isolated outlier\nSmoothed: 18, 19, 19, 20, 19 ct \u2190 Spike replaced with trend prediction\n\nResult: Continuous period 00:00-01:15 instead of split periods\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Important:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Original prices are always preserved (min/max/avg show real values)"}),"\n",(0,r.jsx)(i.li,{children:"Smoothing only affects which intervals are combined into periods"}),"\n",(0,r.jsxs)(i.li,{children:["The attribute ",(0,r.jsx)(i.code,{children:"period_interval_smoothed_count"})," shows if smoothing was active"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"visual-example",children:"Visual Example"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Timeline for a typical day:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Hour: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23\nPrice: 18 19 20 28 29 30 35 34 33 32 30 28 25 24 26 28 30 32 31 22 21 20 19 18\n\nDaily MIN: 18 ct | Daily MAX: 35 ct | Daily AVG: 26 ct\n\nBest Price (15% flex = \u226420.7 ct):\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n 00:00-03:00 (3h) 19:00-24:00 (5h)\n\nPeak Price (-15% flex = \u226529.75 ct):\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n 06:00-11:00 (5h)\n"})}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"configuration-guide",children:"Configuration Guide"}),"\n",(0,r.jsx)(i.h3,{id:"basic-settings",children:"Basic Settings"}),"\n",(0,r.jsx)(i.h4,{id:"flexibility",children:"Flexibility"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"What:"})," How far from MIN/MAX to search for periods\n",(0,r.jsx)(i.strong,{children:"Default:"})," 15% (Best Price), -15% (Peak Price)\n",(0,r.jsx)(i.strong,{children:"Range:"})," 0-100%"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_flex: 15 # Can be up to 15% more expensive than daily MIN\npeak_price_flex: -15 # Can be up to 15% less expensive than daily MAX\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"When to adjust:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Increase (20-25%)"})," \u2192 Find more/longer periods"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Decrease (5-10%)"})," \u2192 Find only the very best/worst times"]}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"\ud83d\udca1 Tip:"})," Very high flexibility (>30%) is rarely useful. ",(0,r.jsx)(i.strong,{children:"Recommendation:"})," Start with 15-20% and enable relaxation \u2013 it adapts automatically to each day's price pattern."]}),"\n",(0,r.jsx)(i.h4,{id:"minimum-period-length",children:"Minimum Period Length"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"What:"})," How long a period must be to show it\n",(0,r.jsx)(i.strong,{children:"Default:"})," 60 minutes (Best Price), 30 minutes (Peak Price)\n",(0,r.jsx)(i.strong,{children:"Range:"})," 15-240 minutes"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_min_period_length: 60\npeak_price_min_period_length: 30\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"When to adjust:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Increase (90-120 min)"})," \u2192 Only show longer periods (e.g., for heat pump cycles)"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Decrease (30-45 min)"})," \u2192 Show shorter windows (e.g., for quick tasks)"]}),"\n"]}),"\n",(0,r.jsx)(i.h4,{id:"distance-from-average",children:"Distance from Average"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"What:"})," How much better than average a period must be\n",(0,r.jsx)(i.strong,{children:"Default:"})," 5%\n",(0,r.jsx)(i.strong,{children:"Range:"})," 0-20%"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_min_distance_from_avg: 5\npeak_price_min_distance_from_avg: 5\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"When to adjust:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Increase (5-10%)"})," \u2192 Only show clearly better times"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Decrease (0-1%)"})," \u2192 Show any time below/above average"]}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"\u2139\ufe0f Note:"})," Both flexibility and distance filters must be satisfied. When using high flexibility values (>30%), the distance filter may become the limiting factor. For best results, use moderate flexibility (15-20%) with relaxation enabled."]}),"\n",(0,r.jsx)(i.h3,{id:"optional-filters",children:"Optional Filters"}),"\n",(0,r.jsx)(i.h4,{id:"level-filter-absolute-quality",children:"Level Filter (Absolute Quality)"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"What:"})," Only show periods with CHEAP/EXPENSIVE intervals (not just below/above average)\n",(0,r.jsx)(i.strong,{children:"Default:"})," ",(0,r.jsx)(i.code,{children:"any"})," (disabled)\n",(0,r.jsx)(i.strong,{children:"Options:"})," ",(0,r.jsx)(i.code,{children:"any"})," | ",(0,r.jsx)(i.code,{children:"cheap"})," | ",(0,r.jsx)(i.code,{children:"very_cheap"})," (Best Price) | ",(0,r.jsx)(i.code,{children:"expensive"})," | ",(0,r.jsx)(i.code,{children:"very_expensive"})," (Peak Price)"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_max_level: any # Show any period below average\nbest_price_max_level: cheap # Only show if at least one interval is CHEAP\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Use case:"}),' "Only notify me when prices are objectively cheap/expensive"']}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"\u2139\ufe0f Volatility Thresholds:"})," The level filter also supports volatility-based levels (",(0,r.jsx)(i.code,{children:"volatility_low"}),", ",(0,r.jsx)(i.code,{children:"volatility_medium"}),", ",(0,r.jsx)(i.code,{children:"volatility_high"}),"). These use ",(0,r.jsx)(i.strong,{children:"fixed internal thresholds"})," (LOW < 10%, MEDIUM < 20%, HIGH \u2265 20%) that are separate from the sensor volatility thresholds you configure in the UI. This separation ensures that changing sensor display preferences doesn't affect period calculation behavior."]}),"\n",(0,r.jsx)(i.h4,{id:"gap-tolerance-for-level-filter",children:"Gap Tolerance (for Level Filter)"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"What:"}),' Allow some "mediocre" intervals within an otherwise good period\n',(0,r.jsx)(i.strong,{children:"Default:"})," 0 (strict)\n",(0,r.jsx)(i.strong,{children:"Range:"})," 0-10"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_max_level: cheap\nbest_price_max_level_gap_count: 2 # Allow up to 2 NORMAL intervals per period\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Use case:"})," \"Don't split periods just because one interval isn't perfectly CHEAP\""]}),"\n",(0,r.jsx)(i.h3,{id:"tweaking-strategy-what-to-adjust-first",children:"Tweaking Strategy: What to Adjust First?"}),"\n",(0,r.jsx)(i.p,{children:"When you're not happy with the default behavior, adjust settings in this order:"}),"\n",(0,r.jsxs)(i.h4,{id:"1-start-with-relaxation-easiest",children:["1. ",(0,r.jsx)(i.strong,{children:"Start with Relaxation (Easiest)"})]}),"\n",(0,r.jsx)(i.p,{children:"If you're not finding enough periods:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"enable_min_periods_best: true # Already default!\nmin_periods_best: 2 # Already default!\nrelaxation_attempts_best: 11 # Already default!\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Why start here?"})," Relaxation automatically finds the right balance for each day. Much easier than manual tuning."]}),"\n",(0,r.jsxs)(i.h4,{id:"2-adjust-period-length-simple",children:["2. ",(0,r.jsx)(i.strong,{children:"Adjust Period Length (Simple)"})]}),"\n",(0,r.jsx)(i.p,{children:"If periods are too short/long for your use case:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_min_period_length: 90 # Increase from 60 for longer periods\n# OR\nbest_price_min_period_length: 45 # Decrease from 60 for shorter periods\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Safe to change:"})," This only affects duration, not price selection logic."]}),"\n",(0,r.jsxs)(i.h4,{id:"3-fine-tune-flexibility-moderate",children:["3. ",(0,r.jsx)(i.strong,{children:"Fine-tune Flexibility (Moderate)"})]}),"\n",(0,r.jsx)(i.p,{children:"If you consistently want more/fewer periods:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_flex: 20 # Increase from 15% for more periods\n# OR\nbest_price_flex: 10 # Decrease from 15% for stricter selection\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"\u26a0\ufe0f Watch out:"})," Values >25% may conflict with distance filter. Use relaxation instead."]}),"\n",(0,r.jsxs)(i.h4,{id:"4-adjust-distance-from-average-advanced",children:["4. ",(0,r.jsx)(i.strong,{children:"Adjust Distance from Average (Advanced)"})]}),"\n",(0,r.jsx)(i.p,{children:'Only if periods seem "mediocre" (not really cheap/expensive):'}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_min_distance_from_avg: 10 # Increase from 5% for stricter quality\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"\u26a0\ufe0f Careful:"})," High values (>10%) can make it impossible to find periods on flat price days."]}),"\n",(0,r.jsxs)(i.h4,{id:"5-enable-level-filter-expert",children:["5. ",(0,r.jsx)(i.strong,{children:"Enable Level Filter (Expert)"})]}),"\n",(0,r.jsx)(i.p,{children:"Only if you want absolute quality requirements:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_max_level: cheap # Only show objectively CHEAP periods\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"\u26a0\ufe0f Very strict:"})," Many days may have zero qualifying periods. ",(0,r.jsx)(i.strong,{children:"Always enable relaxation when using this!"})]}),"\n",(0,r.jsx)(i.h3,{id:"common-mistakes-to-avoid",children:"Common Mistakes to Avoid"}),"\n",(0,r.jsxs)(i.p,{children:["\u274c ",(0,r.jsx)(i.strong,{children:"Don't increase flexibility to >30% manually"})," \u2192 Use relaxation instead\n\u274c ",(0,r.jsx)(i.strong,{children:"Don't combine high distance (>10%) with strict level filter"})," \u2192 Too restrictive\n\u274c ",(0,r.jsx)(i.strong,{children:"Don't disable relaxation with strict filters"})," \u2192 You'll get zero periods on some days\n\u274c ",(0,r.jsx)(i.strong,{children:"Don't change all settings at once"})," \u2192 Adjust one at a time and observe results"]}),"\n",(0,r.jsxs)(i.p,{children:["\u2705 ",(0,r.jsx)(i.strong,{children:"Do use defaults + relaxation"})," \u2192 Works for 90% of cases\n\u2705 ",(0,r.jsx)(i.strong,{children:"Do adjust one setting at a time"})," \u2192 Easier to understand impact\n\u2705 ",(0,r.jsx)(i.strong,{children:"Do check sensor attributes"})," \u2192 Shows why periods were/weren't found"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"understanding-relaxation",children:"Understanding Relaxation"}),"\n",(0,r.jsx)(i.h3,{id:"what-is-relaxation",children:"What Is Relaxation?"}),"\n",(0,r.jsxs)(i.p,{children:["Sometimes, strict filters find too few periods (or none). ",(0,r.jsx)(i.strong,{children:"Relaxation automatically loosens filters"})," until a minimum number of periods is found."]}),"\n",(0,r.jsx)(i.h3,{id:"how-to-enable",children:"How to Enable"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"enable_min_periods_best: true\nmin_periods_best: 2 # Try to find at least 2 periods per day\nrelaxation_attempts_best: 11 # Flex levels to test (default: 11 steps = 22 filter combinations)\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"\u2139\ufe0f Good news:"})," Relaxation is ",(0,r.jsx)(i.strong,{children:"enabled by default"})," with sensible settings. Most users don't need to change anything here!"]}),"\n",(0,r.jsxs)(i.p,{children:["Set the matching ",(0,r.jsx)(i.code,{children:"relaxation_attempts_peak"})," value when tuning Peak Price periods. Both sliders accept 1-12 attempts, and the default of 11 flex levels translates to 22 filter-combination tries (11 flex levels \xd7 2 filter combos) for each of Best and Peak calculations. Lower it for quick feedback, or raise it when either sensor struggles to hit the minimum-period target on volatile days."]}),"\n",(0,r.jsx)(i.h3,{id:"why-relaxation-is-better-than-manual-tweaking",children:"Why Relaxation Is Better Than Manual Tweaking"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Problem with manual settings:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"You set flex to 25% \u2192 Works great on Monday (volatile prices)"}),"\n",(0,r.jsx)(i.li,{children:'Same 25% flex on Tuesday (flat prices) \u2192 Finds "best price" periods that aren\'t really cheap'}),"\n",(0,r.jsx)(i.li,{children:"You're stuck with one setting for all days"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Solution with relaxation:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Monday (volatile): Uses flex 15% (original) \u2192 Finds 2 perfect periods \u2713"}),"\n",(0,r.jsx)(i.li,{children:"Tuesday (flat): Escalates to flex 21% \u2192 Finds 2 decent periods \u2713"}),"\n",(0,r.jsx)(i.li,{children:"Wednesday (mixed): Uses flex 18% \u2192 Finds 2 good periods \u2713"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Each day gets exactly the flexibility it needs!"})}),"\n",(0,r.jsx)(i.h3,{id:"how-it-works-adaptive-matrix",children:"How It Works (Adaptive Matrix)"}),"\n",(0,r.jsxs)(i.p,{children:["Relaxation uses a ",(0,r.jsx)(i.strong,{children:"matrix approach"})," - trying ",(0,r.jsx)(i.em,{children:"N"})," flexibility levels (your configured ",(0,r.jsx)(i.strong,{children:"relaxation attempts"}),") with 2 filter combinations per level. With the default of 11 attempts, that means 11 flex levels \xd7 2 filter combinations = ",(0,r.jsx)(i.strong,{children:"22 total filter-combination tries per day"}),"; fewer attempts mean fewer flex increases, while more attempts extend the search further before giving up."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Important:"})," The flexibility increment is ",(0,r.jsx)(i.strong,{children:"fixed at 3% per step"})," (hard-coded for reliability). This means:"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Base flex 15% \u2192 18% \u2192 21% \u2192 24% \u2192 ... \u2192 48% (with 11 attempts)"}),"\n",(0,r.jsx)(i.li,{children:"Base flex 20% \u2192 23% \u2192 26% \u2192 29% \u2192 ... \u2192 50% (with 11 attempts)"}),"\n"]}),"\n",(0,r.jsx)(i.h4,{id:"phase-matrix",children:"Phase Matrix"}),"\n",(0,r.jsx)(i.p,{children:"For each day, the system tries:"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Flexibility Levels (Attempts):"})}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsx)(i.li,{children:"Attempt 1 = Original flex (e.g., 15%)"}),"\n",(0,r.jsx)(i.li,{children:"Attempt 2 = +3% step (18%)"}),"\n",(0,r.jsx)(i.li,{children:"Attempt 3 = +3% step (21%)"}),"\n",(0,r.jsx)(i.li,{children:"Attempt 4 = +3% step (24%)"}),"\n",(0,r.jsx)(i.li,{children:"\u2026 Attempts 5-11 (default) continue adding +3% each time"}),"\n",(0,r.jsx)(i.li,{children:"\u2026 Additional attempts keep extending the same pattern up to the 12-attempt maximum (up to 51%)"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"2 Filter Combinations (per flexibility level):"})}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsx)(i.li,{children:"Original filters (your configured level filter)"}),"\n",(0,r.jsx)(i.li,{children:"Remove level filter (level=any)"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Example progression:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Flex 15% + Original filters \u2192 Not enough periods\nFlex 15% + Level=any \u2192 Not enough periods\nFlex 18% + Original filters \u2192 Not enough periods\nFlex 18% + Level=any \u2192 SUCCESS! Found 2 periods \u2713\n(stops here - no need to try more)\n"})}),"\n",(0,r.jsx)(i.h3,{id:"choosing-the-number-of-attempts",children:"Choosing the Number of Attempts"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Default (11 attempts)"})," balances speed and completeness for most grids (22 combinations per day for both Best and Peak)"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Lower (4-8 attempts)"})," if you only want mild relaxation and keep processing time minimal (reaches ~27-39% flex)"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Higher (12 attempts)"})," for extremely volatile days when you must reach near the 50% maximum (24 combinations)"]}),"\n",(0,r.jsx)(i.li,{children:"Remember: each additional attempt adds two more filter combinations because every new flex level still runs both filter overrides (original + level=any)"}),"\n"]}),"\n",(0,r.jsx)(i.h4,{id:"per-day-independence",children:"Per-Day Independence"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Critical:"})," Each day relaxes ",(0,r.jsx)(i.strong,{children:"independently"}),":"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Day 1: Finds 2 periods with flex 15% (original) \u2192 No relaxation needed\nDay 2: Needs flex 21% + level=any \u2192 Uses relaxed settings\nDay 3: Finds 2 periods with flex 15% (original) \u2192 No relaxation needed\n"})}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Why?"})," Price patterns vary daily. Some days have clear cheap/expensive windows (strict filters work), others don't (relaxation needed)."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"common-scenarios",children:"Common Scenarios"}),"\n",(0,r.jsx)(i.h3,{id:"scenario-1-simple-best-price-default",children:"Scenario 1: Simple Best Price (Default)"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Goal:"})," Find the cheapest time each day to run dishwasher"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Configuration:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"# Use defaults - no configuration needed!\nbest_price_flex: 15 # (default)\nbest_price_min_period_length: 60 # (default)\nbest_price_min_distance_from_avg: 5 # (default)\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"What you get:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"1-3 periods per day with prices \u2264 MIN + 15%"}),"\n",(0,r.jsx)(i.li,{children:"Each period at least 1 hour long"}),"\n",(0,r.jsx)(i.li,{children:"All periods at least 5% cheaper than daily average"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Automation example:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:'automation:\n - trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n action:\n - service: switch.turn_on\n target:\n entity_id: switch.dishwasher\n'})}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,r.jsx)(i.h3,{id:"no-periods-found",children:"No Periods Found"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Symptom:"})," ",(0,r.jsx)(i.code,{children:"binary_sensor.tibber_home_best_price_period"}),' never turns "on"']}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Common Solutions:"})}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Check if relaxation is enabled"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"enable_min_periods_best: true # Should be true (default)\nmin_periods_best: 2 # Try to find at least 2 periods\n"})}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"If still no periods, check filters"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:["Look at sensor attributes: ",(0,r.jsx)(i.code,{children:"relaxation_active"})," and ",(0,r.jsx)(i.code,{children:"relaxation_level"})]}),"\n",(0,r.jsx)(i.li,{children:"If relaxation exhausted all attempts: Filters too strict or flat price day"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Try increasing flexibility slightly"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_flex: 20 # Increase from default 15%\n"})}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Or reduce period length requirement"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_min_period_length: 45 # Reduce from default 60 minutes\n"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"periods-split-into-small-pieces",children:"Periods Split Into Small Pieces"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Symptom:"})," Many short periods instead of one long period"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Common Solutions:"})}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"If using level filter, add gap tolerance"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_max_level: cheap\nbest_price_max_level_gap_count: 2 # Allow 2 NORMAL intervals\n"})}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Slightly increase flexibility"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"best_price_flex: 20 # From 15% \u2192 captures wider price range\n"})}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Check for price spikes"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Automatic smoothing should handle this"}),"\n",(0,r.jsxs)(i.li,{children:["Check attribute: ",(0,r.jsx)(i.code,{children:"period_interval_smoothed_count"})]}),"\n",(0,r.jsx)(i.li,{children:"If 0: Not isolated spikes, but real price levels"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"understanding-sensor-attributes",children:"Understanding Sensor Attributes"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Key attributes to check:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:'# Entity: binary_sensor.tibber_home_best_price_period\n\n# When "on" (period active):\nstart: "2025-11-11T02:00:00+01:00" # Period start time\nend: "2025-11-11T05:00:00+01:00" # Period end time\nduration_minutes: 180 # Duration in minutes\nprice_avg: 18.5 # Average price in the period\nrating_level: "LOW" # All intervals have LOW rating\n\n# Relaxation info (shows if filter loosening was needed):\nrelaxation_active: true # This day needed relaxation\nrelaxation_level: "price_diff_18.0%+level_any" # Found at 18% flex, level filter removed\n\n# Optional (only shown when relevant):\nperiod_interval_smoothed_count: 2 # Number of price spikes smoothed\nperiod_interval_level_gap_count: 1 # Number of "mediocre" intervals tolerated\n'})}),"\n",(0,r.jsx)(i.h3,{id:"midnight-price-classification-changes",children:"Midnight Price Classification Changes"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Symptom:"})," A Best Price period at 23:45 suddenly changes to Peak Price at 00:00 (or vice versa), even though the absolute price barely changed."]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Why This Happens:"})}),"\n",(0,r.jsxs)(i.p,{children:["This is ",(0,r.jsx)(i.strong,{children:"mathematically correct behavior"})," caused by how electricity prices are set in the day-ahead market:"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Market Timing:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:["The EPEX SPOT Day-Ahead auction closes at ",(0,r.jsx)(i.strong,{children:"12:00 CET"})," each day"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"All prices"})," for the next day (00:00-23:45) are set at this moment"]}),"\n",(0,r.jsxs)(i.li,{children:["Late-day intervals (23:45) are priced ",(0,r.jsx)(i.strong,{children:"~36 hours before delivery"})]}),"\n",(0,r.jsxs)(i.li,{children:["Early-day intervals (00:00) are priced ",(0,r.jsx)(i.strong,{children:"~12 hours before delivery"})]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Why Prices Jump at Midnight:"})}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Forecast Uncertainty:"})," Weather, demand, and renewable generation forecasts are more uncertain 36 hours ahead than 12 hours ahead"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Risk Buffer:"})," Late-day prices include a risk premium for this uncertainty"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Independent Days:"})," Each day has its own min/max/avg calculated from its 96 intervals"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Relative Classification:"})," Periods are classified based on their ",(0,r.jsx)(i.strong,{children:"position within the day's price range"}),", not absolute prices"]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Example:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"# Day 1 (low volatility, narrow range)\nPrice range: 18-22 ct/kWh (4 ct span)\nDaily average: 20 ct/kWh\n23:45: 18.5 ct/kWh \u2192 7.5% below average \u2192 BEST PRICE \u2705\n\n# Day 2 (low volatility, narrow range)\nPrice range: 17-21 ct/kWh (4 ct span)\nDaily average: 19 ct/kWh\n00:00: 18.6 ct/kWh \u2192 2.1% below average \u2192 PEAK PRICE \u274c\n\n# Observation: Absolute price barely changed (18.5 \u2192 18.6 ct)\n# But relative position changed dramatically:\n# - Day 1: Near the bottom of the range\n# - Day 2: Near the middle/top of the range\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"When This Occurs:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Low-volatility days:"})," When price span is narrow (< 5 ct/kWh)"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Stable weather:"})," Similar conditions across multiple days"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"Market transitions:"})," Switching between high/low demand seasons"]}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"How to Detect:"})}),"\n",(0,r.jsx)(i.p,{children:"Check the volatility sensors to understand if a period flip is meaningful:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"# Check daily volatility (available in integration)\nsensor.tibber_home_volatility_today: 8.2% # Low volatility\nsensor.tibber_home_volatility_tomorrow: 7.9% # Also low\n\n# Low volatility (< 15%) means:\n# - Small absolute price differences between periods\n# - Classification changes may not be economically significant\n# - Consider ignoring period classification on such days\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Handling in Automations:"})}),"\n",(0,r.jsx)(i.p,{children:"You can make your automations volatility-aware:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:'# Option 1: Only act on high-volatility days\nautomation:\n - alias: "Dishwasher - Best Price (High Volatility Only)"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n condition:\n - condition: numeric_state\n entity_id: sensor.tibber_home_volatility_today\n above: 15 # Only act if volatility > 15%\n action:\n - service: switch.turn_on\n entity_id: switch.dishwasher\n\n# Option 2: Check absolute price, not just classification\nautomation:\n - alias: "Heat Water - Cheap Enough"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n condition:\n - condition: numeric_state\n entity_id: sensor.tibber_home_current_interval_price_ct\n below: 20 # Absolute threshold: < 20 ct/kWh\n action:\n - service: switch.turn_on\n entity_id: switch.water_heater\n\n# Option 3: Use per-period day volatility (available on period sensors)\nautomation:\n - alias: "EV Charging - Volatility-Aware"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n condition:\n # Check if the period\'s day has meaningful volatility\n - condition: template\n value_template: >\n {{ state_attr(\'binary_sensor.tibber_home_best_price_period\', \'day_volatility_%\') | float(0) > 15 }}\n action:\n - service: switch.turn_on\n entity_id: switch.ev_charger\n'})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Available Per-Period Attributes:"})}),"\n",(0,r.jsx)(i.p,{children:"Each period sensor exposes day volatility and price statistics:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"binary_sensor.tibber_home_best_price_period:\n day_volatility_%: 8.2 # Volatility % of the period's day\n day_price_min: 1800.0 # Minimum price of the day (ct/kWh)\n day_price_max: 2200.0 # Maximum price of the day (ct/kWh)\n day_price_span: 400.0 # Difference (max - min) in ct\n"})}),"\n",(0,r.jsx)(i.p,{children:'These attributes allow automations to check: "Is the classification meaningful on this particular day?"'}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Summary:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:["\u2705 ",(0,r.jsx)(i.strong,{children:"Expected behavior:"})," Periods are evaluated per-day, midnight is a natural boundary"]}),"\n",(0,r.jsxs)(i.li,{children:["\u2705 ",(0,r.jsx)(i.strong,{children:"Market reality:"})," Late-day prices have more uncertainty than early-day prices"]}),"\n",(0,r.jsxs)(i.li,{children:["\u2705 ",(0,r.jsx)(i.strong,{children:"Solution:"})," Use volatility sensors, absolute price thresholds, or per-period day volatility attributes"]}),"\n"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"advanced-topics",children:"Advanced Topics"}),"\n",(0,r.jsx)(i.p,{children:"For advanced configuration patterns and technical deep-dive, see:"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/automation-examples",children:"Automation Examples"})," - Real-world automation patterns"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/actions",children:"Actions"})," - Using the ",(0,r.jsx)(i.code,{children:"tibber_prices.get_chartdata"})," action for custom visualizations"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"quick-reference",children:"Quick Reference"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Configuration Parameters:"})}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Parameter"}),(0,r.jsx)(i.th,{children:"Default"}),(0,r.jsx)(i.th,{children:"Range"}),(0,r.jsx)(i.th,{children:"Purpose"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.code,{children:"best_price_flex"})}),(0,r.jsx)(i.td,{children:"15%"}),(0,r.jsx)(i.td,{children:"0-100%"}),(0,r.jsx)(i.td,{children:"Search range from daily MIN"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.code,{children:"best_price_min_period_length"})}),(0,r.jsx)(i.td,{children:"60 min"}),(0,r.jsx)(i.td,{children:"15-240"}),(0,r.jsx)(i.td,{children:"Minimum duration"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.code,{children:"best_price_min_distance_from_avg"})}),(0,r.jsx)(i.td,{children:"5%"}),(0,r.jsx)(i.td,{children:"0-20%"}),(0,r.jsx)(i.td,{children:"Quality threshold"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.code,{children:"best_price_max_level"})}),(0,r.jsx)(i.td,{children:"any"}),(0,r.jsx)(i.td,{children:"any/cheap/vcheap"}),(0,r.jsx)(i.td,{children:"Absolute quality"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.code,{children:"best_price_max_level_gap_count"})}),(0,r.jsx)(i.td,{children:"0"}),(0,r.jsx)(i.td,{children:"0-10"}),(0,r.jsx)(i.td,{children:"Gap tolerance"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.code,{children:"enable_min_periods_best"})}),(0,r.jsx)(i.td,{children:"true"}),(0,r.jsx)(i.td,{children:"true/false"}),(0,r.jsx)(i.td,{children:"Enable relaxation"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.code,{children:"min_periods_best"})}),(0,r.jsx)(i.td,{children:"2"}),(0,r.jsx)(i.td,{children:"1-10"}),(0,r.jsx)(i.td,{children:"Target periods per day"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.code,{children:"relaxation_attempts_best"})}),(0,r.jsx)(i.td,{children:"11"}),(0,r.jsx)(i.td,{children:"1-12"}),(0,r.jsx)(i.td,{children:"Flex levels (attempts) per day"})]})]})]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Peak Price:"})," Same parameters with ",(0,r.jsx)(i.code,{children:"peak_price_*"})," prefix (defaults: flex=-15%, same otherwise)"]}),"\n",(0,r.jsx)(i.h3,{id:"price-levels-reference",children:"Price Levels Reference"}),"\n",(0,r.jsx)(i.p,{children:"The Tibber API provides price levels for each 15-minute interval:"}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Levels (based on trailing 24h average):"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"VERY_CHEAP"})," - Significantly below average"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"CHEAP"})," - Below average"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"NORMAL"})," - Around average"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"EXPENSIVE"})," - Above average"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"VERY_EXPENSIVE"})," - Significantly above average"]}),"\n"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Last updated:"})," November 20, 2025\n",(0,r.jsx)(i.strong,{children:"Integration version:"})," 2.0+"]})]})}function h(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/0e384e19.ba6c1274.js b/user/assets/js/0e384e19.ba6c1274.js new file mode 100644 index 0000000..eecfa24 --- /dev/null +++ b/user/assets/js/0e384e19.ba6c1274.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[3976],{2053:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"intro","title":"User Documentation","description":"Welcome to the Tibber Prices custom integration for Home Assistant! This community-developed integration enhances your Home Assistant installation with detailed electricity price data from Tibber, featuring quarter-hourly precision, statistical analysis, and intelligent ratings.","source":"@site/docs/intro.md","sourceDirName":".","slug":"/intro","permalink":"/hass.tibber_prices/user/intro","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/intro.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","next":{"title":"Installation","permalink":"/hass.tibber_prices/user/installation"}}');var r=i(4848),t=i(8453);const o={comments:!1},a="User Documentation",l={},c=[{value:"\ud83d\udcda Documentation",id:"-documentation",level:2},{value:"\ud83d\ude80 Quick Start",id:"-quick-start",level:2},{value:"\u2728 Key Features",id:"-key-features",level:2},{value:"\ud83d\udd17 Useful Links",id:"-useful-links",level:2},{value:"\ud83e\udd1d Need Help?",id:"-need-help",level:2}];function h(e){const s={a:"a",admonition:"admonition",h1:"h1",h2:"h2",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.header,{children:(0,r.jsx)(s.h1,{id:"user-documentation",children:"User Documentation"})}),"\n",(0,r.jsxs)(s.p,{children:["Welcome to the ",(0,r.jsx)(s.strong,{children:"Tibber Prices custom integration for Home Assistant"}),"! This community-developed integration enhances your Home Assistant installation with detailed electricity price data from Tibber, featuring quarter-hourly precision, statistical analysis, and intelligent ratings."]}),"\n",(0,r.jsx)(s.admonition,{title:"Not affiliated with Tibber",type:"info",children:(0,r.jsxs)(s.p,{children:["This is an independent, community-maintained custom integration. It is ",(0,r.jsx)(s.strong,{children:"not"})," an official Tibber product and is ",(0,r.jsx)(s.strong,{children:"not"})," affiliated with or endorsed by Tibber AS."]})}),"\n",(0,r.jsx)(s.h2,{id:"-documentation",children:"\ud83d\udcda Documentation"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/installation",children:"Installation"})})," - How to install via HACS and configure the integration"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/configuration",children:"Configuration"})})," - Setting up your Tibber API token and price thresholds"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/period-calculation",children:"Period Calculation"})})," - How Best/Peak Price periods are calculated and configured"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/sensors",children:"Sensors"})})," - Available sensors, their states, and attributes"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/dynamic-icons",children:"Dynamic Icons"})})," - State-based automatic icon changes"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/icon-colors",children:"Dynamic Icon Colors"})})," - Using icon_color attribute for color-coded dashboards"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/actions",children:"Actions"})})," - Custom actions (service endpoints) and how to use them"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/chart-examples",children:"Chart Examples"})})," - \u2728 ApexCharts visualizations with screenshots"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/automation-examples",children:"Automation Examples"})})," - Ready-to-use automation recipes"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/troubleshooting",children:"Troubleshooting"})})," - Common issues and solutions"]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"-quick-start",children:"\ud83d\ude80 Quick Start"}),"\n",(0,r.jsxs)(s.ol,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Install via HACS"})," (add as custom repository)"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Add Integration"})," in Home Assistant \u2192 Settings \u2192 Devices & Services"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Enter Tibber API Token"})," (get yours at ",(0,r.jsx)(s.a,{href:"https://developer.tibber.com/",children:"developer.tibber.com"}),")"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Configure Price Thresholds"})," (optional, defaults work for most users)"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Start Using Sensors"})," in automations, dashboards, and scripts!"]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"-key-features",children:"\u2728 Key Features"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Quarter-hourly precision"})," - 15-minute intervals for accurate price tracking"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Statistical analysis"})," - Trailing/leading 24h averages for context"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Price ratings"})," - LOW/NORMAL/HIGH classification based on your thresholds"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Best/Peak hour detection"})," - Automatic detection of cheapest/peak periods with configurable filters (",(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/period-calculation",children:"learn how"}),")"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Beautiful ApexCharts"})," - Auto-generated chart configurations with dynamic Y-axis scaling (",(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/chart-examples",children:"see examples"}),")"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Chart metadata sensor"})," - Dynamic chart configuration for optimal visualization"]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.strong,{children:"Multi-currency support"})," - EUR, NOK, SEK with proper minor units (ct, \xf8re, \xf6re)"]}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"-useful-links",children:"\ud83d\udd17 Useful Links"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices",children:"GitHub Repository"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/issues",children:"Issue Tracker"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/releases",children:"Release Notes"})}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"https://community.home-assistant.io/",children:"Home Assistant Community"})}),"\n"]}),"\n",(0,r.jsx)(s.h2,{id:"-need-help",children:"\ud83e\udd1d Need Help?"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["Check the ",(0,r.jsx)(s.a,{href:"/hass.tibber_prices/user/troubleshooting",children:"Troubleshooting Guide"})]}),"\n",(0,r.jsxs)(s.li,{children:["Search ",(0,r.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/issues",children:"existing issues"})]}),"\n",(0,r.jsxs)(s.li,{children:["Open a ",(0,r.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/issues/new",children:"new issue"})," if needed"]}),"\n"]}),"\n",(0,r.jsx)(s.hr,{}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Note:"})," These guides are for end users. If you want to contribute to development, see the ",(0,r.jsx)(s.a,{href:"../development/",children:"Developer Documentation"}),"."]})]})}function d(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/1000.3595dc89.js b/user/assets/js/1000.3595dc89.js new file mode 100644 index 0000000..b509ed8 --- /dev/null +++ b/user/assets/js/1000.3595dc89.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[1e3],{1e3:(s,e,a)=>{a.d(e,{createRadarServices:()=>c.f});var c=a(7846);a(7960)}}]); \ No newline at end of file diff --git a/user/assets/js/1203.93c8e8b6.js b/user/assets/js/1203.93c8e8b6.js new file mode 100644 index 0000000..3f03dea --- /dev/null +++ b/user/assets/js/1203.93c8e8b6.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[1203],{1203:(t,e,i)=>{i.d(e,{diagram:()=>I});var a=i(7633),n=i(797),s=i(451),r=function(){var t=(0,n.K2)(function(t,e,i,a){for(i=i||{},a=t.length;a--;i[t[a]]=e);return i},"o"),e=[1,3],i=[1,4],a=[1,5],s=[1,6],r=[1,7],o=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],h=[55,56,57],c=[2,36],d=[1,37],u=[1,36],x=[1,38],g=[1,35],f=[1,43],p=[1,41],y=[1,14],T=[1,23],m=[1,18],q=[1,19],A=[1,20],_=[1,21],b=[1,22],S=[1,24],k=[1,25],F=[1,26],P=[1,27],C=[1,28],L=[1,29],v=[1,32],I=[1,33],E=[1,34],D=[1,39],z=[1,40],w=[1,42],K=[1,44],U=[1,62],N=[1,61],R=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],B=[1,65],W=[1,66],$=[1,67],Q=[1,68],O=[1,69],X=[1,70],H=[1,71],M=[1,72],Y=[1,73],j=[1,74],G=[1,75],V=[1,76],Z=[4,5,6,7,8,9,10,11,12,13,14,15,18],J=[1,90],tt=[1,91],et=[1,92],it=[1,99],at=[1,93],nt=[1,96],st=[1,94],rt=[1,95],ot=[1,97],lt=[1,98],ht=[1,102],ct=[10,55,56,57],dt=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ut={trace:(0,n.K2)(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:(0,n.K2)(function(t,e,i,a,n,s,r){var o=s.length-1;switch(n){case 23:case 68:this.$=s[o];break;case 24:case 69:this.$=s[o-1]+""+s[o];break;case 26:this.$=s[o-1]+s[o];break;case 27:this.$=[s[o].trim()];break;case 28:s[o-2].push(s[o].trim()),this.$=s[o-2];break;case 29:this.$=s[o-4],a.addClass(s[o-2],s[o]);break;case 37:this.$=[];break;case 42:this.$=s[o].trim(),a.setDiagramTitle(this.$);break;case 43:this.$=s[o].trim(),a.setAccTitle(this.$);break;case 44:case 45:this.$=s[o].trim(),a.setAccDescription(this.$);break;case 46:a.addSection(s[o].substr(8)),this.$=s[o].substr(8);break;case 47:a.addPoint(s[o-3],"",s[o-1],s[o],[]);break;case 48:a.addPoint(s[o-4],s[o-3],s[o-1],s[o],[]);break;case 49:a.addPoint(s[o-4],"",s[o-2],s[o-1],s[o]);break;case 50:a.addPoint(s[o-5],s[o-4],s[o-2],s[o-1],s[o]);break;case 51:a.setXAxisLeftText(s[o-2]),a.setXAxisRightText(s[o]);break;case 52:s[o-1].text+=" \u27f6 ",a.setXAxisLeftText(s[o-1]);break;case 53:a.setXAxisLeftText(s[o]);break;case 54:a.setYAxisBottomText(s[o-2]),a.setYAxisTopText(s[o]);break;case 55:s[o-1].text+=" \u27f6 ",a.setYAxisBottomText(s[o-1]);break;case 56:a.setYAxisBottomText(s[o]);break;case 57:a.setQuadrant1Text(s[o]);break;case 58:a.setQuadrant2Text(s[o]);break;case 59:a.setQuadrant3Text(s[o]);break;case 60:a.setQuadrant4Text(s[o]);break;case 64:case 66:this.$={text:s[o],type:"text"};break;case 65:this.$={text:s[o-1].text+""+s[o],type:s[o-1].type};break;case 67:this.$={text:s[o],type:"markdown"}}},"anonymous"),table:[{18:e,26:1,27:2,28:i,55:a,56:s,57:r},{1:[3]},{18:e,26:8,27:2,28:i,55:a,56:s,57:r},{18:e,26:9,27:2,28:i,55:a,56:s,57:r},t(o,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(h,c,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:u,10:x,12:g,13:f,14:p,18:y,25:T,35:m,37:q,39:A,41:_,42:b,48:S,50:k,51:F,52:P,53:C,54:L,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(o,[2,34]),{27:45,55:a,56:s,57:r},t(h,[2,37]),t(h,c,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:d,5:u,10:x,12:g,13:f,14:p,18:y,25:T,35:m,37:q,39:A,41:_,42:b,48:S,50:k,51:F,52:P,53:C,54:L,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(h,[2,39]),t(h,[2,40]),t(h,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(h,[2,45]),t(h,[2,46]),{18:[1,50]},{4:d,5:u,10:x,12:g,13:f,14:p,43:51,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:52,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:53,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:54,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:55,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:56,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,44:[1,57],47:[1,58],58:60,59:59,63:E,64:D,65:z,66:w,67:K},t(R,[2,64]),t(R,[2,66]),t(R,[2,67]),t(R,[2,70]),t(R,[2,71]),t(R,[2,72]),t(R,[2,73]),t(R,[2,74]),t(R,[2,75]),t(R,[2,76]),t(R,[2,77]),t(R,[2,78]),t(R,[2,79]),t(R,[2,80]),t(o,[2,35]),t(h,[2,38]),t(h,[2,42]),t(h,[2,43]),t(h,[2,44]),{3:64,4:B,5:W,6:$,7:Q,8:O,9:X,10:H,11:M,12:Y,13:j,14:G,15:V,21:63},t(h,[2,53],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,49:[1,77],63:E,64:D,65:z,66:w,67:K}),t(h,[2,56],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,49:[1,78],63:E,64:D,65:z,66:w,67:K}),t(h,[2,57],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,58],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,59],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,60],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),{45:[1,79]},{44:[1,80]},t(R,[2,65]),t(R,[2,81]),t(R,[2,82]),t(R,[2,83]),{3:82,4:B,5:W,6:$,7:Q,8:O,9:X,10:H,11:M,12:Y,13:j,14:G,15:V,18:[1,81]},t(Z,[2,23]),t(Z,[2,1]),t(Z,[2,2]),t(Z,[2,3]),t(Z,[2,4]),t(Z,[2,5]),t(Z,[2,6]),t(Z,[2,7]),t(Z,[2,8]),t(Z,[2,9]),t(Z,[2,10]),t(Z,[2,11]),t(Z,[2,12]),t(h,[2,52],{58:31,43:83,4:d,5:u,10:x,12:g,13:f,14:p,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(h,[2,55],{58:31,43:84,4:d,5:u,10:x,12:g,13:f,14:p,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),{46:[1,85]},{45:[1,86]},{4:J,5:tt,6:et,8:it,11:at,13:nt,16:89,17:st,18:rt,19:ot,20:lt,22:88,23:87},t(Z,[2,24]),t(h,[2,51],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,54],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,47],{22:88,16:89,23:100,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),{46:[1,101]},t(h,[2,29],{10:ht}),t(ct,[2,27],{16:103,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),t(dt,[2,25]),t(dt,[2,13]),t(dt,[2,14]),t(dt,[2,15]),t(dt,[2,16]),t(dt,[2,17]),t(dt,[2,18]),t(dt,[2,19]),t(dt,[2,20]),t(dt,[2,21]),t(dt,[2,22]),t(h,[2,49],{10:ht}),t(h,[2,48],{22:88,16:89,23:104,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),{4:J,5:tt,6:et,8:it,11:at,13:nt,16:89,17:st,18:rt,19:ot,20:lt,22:105},t(dt,[2,26]),t(h,[2,50],{10:ht}),t(ct,[2,28],{16:103,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt})],defaultActions:{8:[2,30],9:[2,31]},parseError:(0,n.K2)(function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},"parseError"),parse:(0,n.K2)(function(t){var e=this,i=[0],a=[],s=[null],r=[],o=this.table,l="",h=0,c=0,d=0,u=r.slice.call(arguments,1),x=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);x.setInput(t,g.yy),g.yy.lexer=x,g.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var p=x.yylloc;r.push(p);var y=x.options&&x.options.ranges;function T(){var t;return"number"!=typeof(t=a.pop()||x.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,n.K2)(function(t){i.length=i.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,n.K2)(T,"lex");for(var m,q,A,_,b,S,k,F,P,C={};;){if(A=i[i.length-1],this.defaultActions[A]?_=this.defaultActions[A]:(null==m&&(m=T()),_=o[A]&&o[A][m]),void 0===_||!_.length||!_[0]){var L="";for(S in P=[],o[A])this.terminals_[S]&&S>2&&P.push("'"+this.terminals_[S]+"'");L=x.showPosition?"Parse error on line "+(h+1)+":\n"+x.showPosition()+"\nExpecting "+P.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[m]||m,line:x.yylineno,loc:p,expected:P})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+m);switch(_[0]){case 1:i.push(m),s.push(x.yytext),r.push(x.yylloc),i.push(_[1]),m=null,q?(m=q,q=null):(c=x.yyleng,l=x.yytext,h=x.yylineno,p=x.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[_[1]][1],C.$=s[s.length-k],C._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},y&&(C._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[l,c,h,g.yy,_[1],s,r].concat(u))))return b;k&&(i=i.slice(0,-1*k*2),s=s.slice(0,-1*k),r=r.slice(0,-1*k)),i.push(this.productions_[_[1]][0]),s.push(C.$),r.push(C._$),F=o[i[i.length-2]][i[i.length-1]],i.push(F);break;case 3:return!0}}return!0},"parse")},xt=function(){return{EOF:1,parseError:(0,n.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,n.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,n.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,n.K2)(function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===a.length?this.yylloc.first_column:0)+a[a.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,n.K2)(function(){return this._more=!0,this},"more"),reject:(0,n.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,n.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,n.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,n.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,n.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,n.K2)(function(t,e){var i,a,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in n)this[s]=n[s];return!1}return!1},"test_match"),next:(0,n.K2)(function(){if(this.done)return this.EOF;var t,e,i,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),s=0;se[0].length)){if(e=i,a=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,n[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,n.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,n.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,n.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,n.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,n.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,n.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,n.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,n.K2)(function(t,e,i,a){switch(i){case 0:case 1:case 3:break;case 2:return 55;case 4:return this.begin("title"),35;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),37;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),39;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 23:case 25:case 31:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 24:this.begin("string");break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;case 29:return this.begin("point_start"),44;case 30:return this.begin("point_x"),45;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}}}();function gt(){this.yy={}}return ut.lexer=xt,(0,n.K2)(gt,"Parser"),gt.prototype=ut,ut.Parser=gt,new gt}();r.parser=r;var o=r,l=(0,a.P$)(),h=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{(0,n.K2)(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:a.UI.quadrantChart?.chartWidth||500,chartWidth:a.UI.quadrantChart?.chartHeight||500,titlePadding:a.UI.quadrantChart?.titlePadding||10,titleFontSize:a.UI.quadrantChart?.titleFontSize||20,quadrantPadding:a.UI.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:a.UI.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:a.UI.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:a.UI.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:a.UI.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:a.UI.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:a.UI.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:a.UI.quadrantChart?.pointTextPadding||5,pointLabelFontSize:a.UI.quadrantChart?.pointLabelFontSize||12,pointRadius:a.UI.quadrantChart?.pointRadius||5,xAxisPosition:a.UI.quadrantChart?.xAxisPosition||"top",yAxisPosition:a.UI.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:l.quadrant1Fill,quadrant2Fill:l.quadrant2Fill,quadrant3Fill:l.quadrant3Fill,quadrant4Fill:l.quadrant4Fill,quadrant1TextFill:l.quadrant1TextFill,quadrant2TextFill:l.quadrant2TextFill,quadrant3TextFill:l.quadrant3TextFill,quadrant4TextFill:l.quadrant4TextFill,quadrantPointFill:l.quadrantPointFill,quadrantPointTextFill:l.quadrantPointTextFill,quadrantXAxisTextFill:l.quadrantXAxisTextFill,quadrantYAxisTextFill:l.quadrantYAxisTextFill,quadrantTitleFill:l.quadrantTitleFill,quadrantInternalBorderStrokeFill:l.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:l.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,n.Rm.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){n.Rm.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){n.Rm.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,i,a){const n=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,s={top:"top"===t&&e?n:0,bottom:"bottom"===t&&e?n:0},r=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,o={left:"left"===this.config.yAxisPosition&&i?r:0,right:"right"===this.config.yAxisPosition&&i?r:0},l=this.config.titleFontSize+2*this.config.titlePadding,h={top:a?l:0},c=this.config.quadrantPadding+o.left,d=this.config.quadrantPadding+s.top+h.top,u=this.config.chartWidth-2*this.config.quadrantPadding-o.left-o.right,x=this.config.chartHeight-2*this.config.quadrantPadding-s.top-s.bottom-h.top;return{xAxisSpace:s,yAxisSpace:o,titleSpace:h,quadrantSpace:{quadrantLeft:c,quadrantTop:d,quadrantWidth:u,quadrantHalfWidth:u/2,quadrantHeight:x,quadrantHalfHeight:x/2}}}getAxisLabels(t,e,i,a){const{quadrantSpace:n,titleSpace:s}=a,{quadrantHalfHeight:r,quadrantHeight:o,quadrantLeft:l,quadrantHalfWidth:h,quadrantTop:c,quadrantWidth:d}=n,u=Boolean(this.data.xAxisRightText),x=Boolean(this.data.yAxisTopText),g=[];return this.data.xAxisLeftText&&e&&g.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&g.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+h+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&i&&g.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+o-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&i&&g.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+r-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),g}getQuadrants(t){const{quadrantSpace:e}=t,{quadrantHalfHeight:i,quadrantLeft:a,quadrantHalfWidth:n,quadrantTop:s}=e,r=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s,width:n,height:i,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s,width:n,height:i,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant4Fill}];for(const o of r)o.text.x=o.x+o.width/2,0===this.data.points.length?(o.text.y=o.y+o.height/2,o.text.horizontalPos="middle"):(o.text.y=o.y+this.config.quadrantTextTopPadding,o.text.horizontalPos="top");return r}getQuadrantPoints(t){const{quadrantSpace:e}=t,{quadrantHeight:i,quadrantLeft:a,quadrantTop:n,quadrantWidth:r}=e,o=(0,s.m4Y)().domain([0,1]).range([a,r+a]),l=(0,s.m4Y)().domain([0,1]).range([i+n,n]);return this.data.points.map(t=>{const e=this.classes.get(t.className);e&&(t={...e,...t});return{x:o(t.x),y:l(t.y),fill:t.color??this.themeConfig.quadrantPointFill,radius:t.radius??this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:o(t.x),y:l(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:t.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:t.strokeWidth??"0px"}})}getBorders(t){const e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:i}=t,{quadrantHalfHeight:a,quadrantHeight:n,quadrantLeft:s,quadrantHalfWidth:r,quadrantTop:o,quadrantWidth:l}=i;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o,x2:s+l+e,y2:o},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+l,y1:o+e,x2:s+l,y2:o+n-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o+n,x2:s+l+e,y2:o+n},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:o+e,x2:s,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:o+e,x2:s+r,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+e,y1:o+a,x2:s+l-e,y2:o+a}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),i=this.config.showTitle&&!!this.data.titleText,a=this.data.points.length>0?"bottom":this.config.xAxisPosition,n=this.calculateSpace(a,t,e,i);return{points:this.getQuadrantPoints(n),quadrants:this.getQuadrants(n),axisLabels:this.getAxisLabels(a,t,e,n),borderLines:this.getBorders(n),title:this.getTitle(i)}}},c=class extends Error{static{(0,n.K2)(this,"InvalidStyleError")}constructor(t,e,i){super(`value for ${t} ${e} is invalid, please use a valid ${i}`),this.name="InvalidStyleError"}};function d(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function u(t){return!/^\d+$/.test(t)}function x(t){return!/^\d+px$/.test(t)}(0,n.K2)(d,"validateHexCode"),(0,n.K2)(u,"validateNumber"),(0,n.K2)(x,"validateSizeInPixels");var g=(0,a.D7)();function f(t){return(0,a.jZ)(t.trim(),g)}(0,n.K2)(f,"textSanitizer");var p=new h;function y(t){p.setData({quadrant1Text:f(t.text)})}function T(t){p.setData({quadrant2Text:f(t.text)})}function m(t){p.setData({quadrant3Text:f(t.text)})}function q(t){p.setData({quadrant4Text:f(t.text)})}function A(t){p.setData({xAxisLeftText:f(t.text)})}function _(t){p.setData({xAxisRightText:f(t.text)})}function b(t){p.setData({yAxisTopText:f(t.text)})}function S(t){p.setData({yAxisBottomText:f(t.text)})}function k(t){const e={};for(const i of t){const[t,a]=i.trim().split(/\s*:\s*/);if("radius"===t){if(u(a))throw new c(t,a,"number");e.radius=parseInt(a)}else if("color"===t){if(d(a))throw new c(t,a,"hex code");e.color=a}else if("stroke-color"===t){if(d(a))throw new c(t,a,"hex code");e.strokeColor=a}else{if("stroke-width"!==t)throw new Error(`style named ${t} is not supported.`);if(x(a))throw new c(t,a,"number of pixels (eg. 10px)");e.strokeWidth=a}}return e}function F(t,e,i,a,n){const s=k(n);p.addPoints([{x:i,y:a,text:f(t.text),className:e,...s}])}function P(t,e){p.addClass(t,k(e))}function C(t){p.setConfig({chartWidth:t})}function L(t){p.setConfig({chartHeight:t})}function v(){const t=(0,a.D7)(),{themeVariables:e,quadrantChart:i}=t;return i&&p.setConfig(i),p.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),p.setData({titleText:(0,a.ab)()}),p.build()}(0,n.K2)(y,"setQuadrant1Text"),(0,n.K2)(T,"setQuadrant2Text"),(0,n.K2)(m,"setQuadrant3Text"),(0,n.K2)(q,"setQuadrant4Text"),(0,n.K2)(A,"setXAxisLeftText"),(0,n.K2)(_,"setXAxisRightText"),(0,n.K2)(b,"setYAxisTopText"),(0,n.K2)(S,"setYAxisBottomText"),(0,n.K2)(k,"parseStyles"),(0,n.K2)(F,"addPoint"),(0,n.K2)(P,"addClass"),(0,n.K2)(C,"setWidth"),(0,n.K2)(L,"setHeight"),(0,n.K2)(v,"getQuadrantData");var I={parser:o,db:{setWidth:C,setHeight:L,setQuadrant1Text:y,setQuadrant2Text:T,setQuadrant3Text:m,setQuadrant4Text:q,setXAxisLeftText:A,setXAxisRightText:_,setYAxisTopText:b,setYAxisBottomText:S,parseStyles:k,addPoint:F,addClass:P,getQuadrantData:v,clear:(0,n.K2)(function(){p.clear(),(0,a.IU)()},"clear"),setAccTitle:a.SV,getAccTitle:a.iN,setDiagramTitle:a.ke,getDiagramTitle:a.ab,getAccDescription:a.m7,setAccDescription:a.EI},renderer:{draw:(0,n.K2)((t,e,i,r)=>{function o(t){return"top"===t?"hanging":"middle"}function l(t){return"left"===t?"start":"middle"}function h(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,n.K2)(o,"getDominantBaseLine"),(0,n.K2)(l,"getTextAnchor"),(0,n.K2)(h,"getTransformation");const c=(0,a.D7)();n.Rm.debug("Rendering quadrant chart\n"+t);const d=c.securityLevel;let u;"sandbox"===d&&(u=(0,s.Ltv)("#i"+e));const x=("sandbox"===d?(0,s.Ltv)(u.nodes()[0].contentDocument.body):(0,s.Ltv)("body")).select(`[id="${e}"]`),g=x.append("g").attr("class","main"),f=c.quadrantChart?.chartWidth??500,p=c.quadrantChart?.chartHeight??500;(0,a.a$)(x,p,f,c.quadrantChart?.useMaxWidth??!0),x.attr("viewBox","0 0 "+f+" "+p),r.db.setHeight(p),r.db.setWidth(f);const y=r.db.getQuadrantData(),T=g.append("g").attr("class","quadrants"),m=g.append("g").attr("class","border"),q=g.append("g").attr("class","data-points"),A=g.append("g").attr("class","labels"),_=g.append("g").attr("class","title");y.title&&_.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",o(y.title.horizontalPos)).attr("text-anchor",l(y.title.verticalPos)).attr("transform",h(y.title)).text(y.title.text),y.borderLines&&m.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",t=>t.x1).attr("y1",t=>t.y1).attr("x2",t=>t.x2).attr("y2",t=>t.y2).style("stroke",t=>t.strokeFill).style("stroke-width",t=>t.strokeWidth);const b=T.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");b.append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill),b.append("text").attr("x",0).attr("y",0).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>o(t.text.horizontalPos)).attr("text-anchor",t=>l(t.text.verticalPos)).attr("transform",t=>h(t.text)).text(t=>t.text.text);A.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(t=>t.text).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>o(t.horizontalPos)).attr("text-anchor",t=>l(t.verticalPos)).attr("transform",t=>h(t));const S=q.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");S.append("circle").attr("cx",t=>t.x).attr("cy",t=>t.y).attr("r",t=>t.radius).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeColor).attr("stroke-width",t=>t.strokeWidth),S.append("text").attr("x",0).attr("y",0).text(t=>t.text.text).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>o(t.text.horizontalPos)).attr("text-anchor",t=>l(t.text.verticalPos)).attr("transform",t=>h(t.text))},"draw")},styles:(0,n.K2)(()=>"","styles")}}}]); \ No newline at end of file diff --git a/user/assets/js/165.9c21f102.js b/user/assets/js/165.9c21f102.js new file mode 100644 index 0000000..b1b1b4e --- /dev/null +++ b/user/assets/js/165.9c21f102.js @@ -0,0 +1,2 @@ +/*! For license information please see 165.9c21f102.js.LICENSE.txt */ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[165],{165:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw i}}}}function s(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,s=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||h(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||h(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function h(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}n.d(t,{A:()=>Kh});var f="undefined"==typeof window?null:window,p=f?f.navigator:null;f&&f.document;var v,g,y,m,b,x,w,E,k,T,C,P,S,B,D,_,A,M,R,I,N,L,z,O,V,F,X,j,Y=d(""),q=d({}),W=d(function(){}),U="undefined"==typeof HTMLElement?"undefined":d(HTMLElement),H=function(e){return e&&e.instanceString&&G(e.instanceString)?e.instanceString():null},K=function(e){return null!=e&&d(e)==Y},G=function(e){return null!=e&&d(e)===W},Z=function(e){return!ee(e)&&(Array.isArray?Array.isArray(e):null!=e&&e instanceof Array)},$=function(e){return null!=e&&d(e)===q&&!Z(e)&&e.constructor===Object},Q=function(e){return null!=e&&d(e)===d(1)&&!isNaN(e)},J=function(e){return"undefined"===U?void 0:null!=e&&e instanceof HTMLElement},ee=function(e){return te(e)||ne(e)},te=function(e){return"collection"===H(e)&&e._private.single},ne=function(e){return"collection"===H(e)&&!e._private.single},re=function(e){return"core"===H(e)},ae=function(e){return"stylesheet"===H(e)},ie=function(e){return null==e||!(""!==e&&!e.match(/^\s+$/))},oe=function(e){return function(e){return null!=e&&d(e)===q}(e)&&G(e.then)},se=function(e,t){t||(t=function(){if(1===arguments.length)return arguments[0];if(0===arguments.length)return"undefined";for(var e=[],t=0;tt?1:0},be=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n255)return;t.push(Math.floor(i))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t}(e)||function(e){var t,n,r,a,i,o,s,l;function u(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+ge+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(a=parseFloat(c[3]))<0||a>100)return;if(a/=100,void 0!==(i=c[4])&&((i=parseFloat(i))<0||i>1))return;if(0===r)o=s=l=Math.round(255*a);else{var d=a<.5?a*(1+r):a+r-a*r,h=2*a-d;o=Math.round(255*u(h,d,n+1/3)),s=Math.round(255*u(h,d,n)),l=Math.round(255*u(h,d,n-1/3))}t=[o,s,l,i]}return t}(e)},we={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Ee=function(e){for(var t=e.map,n=e.keys,r=n.length,a=0;a=o||t<0||g&&e-p>=c}function x(){var e=t();if(b(e))return w(e);h=setTimeout(x,function(e){var t=o-(e-f);return g?a(t,c-(e-p)):t}(e))}function w(e){return h=void 0,y&&l?m(e):(l=u=void 0,d)}function E(){var e=t(),n=b(e);if(l=arguments,u=this,f=e,n){if(void 0===h)return function(e){return p=e,h=setTimeout(x,o),v?m(e):d}(f);if(g)return clearTimeout(h),h=setTimeout(x,o),m(f)}return void 0===h&&(h=setTimeout(x,o)),d}return o=n(o)||0,e(s)&&(v=!!s.leading,c=(g="maxWait"in s)?r(n(s.maxWait)||0,o):c,y="trailing"in s?!!s.trailing:y),E.cancel=function(){void 0!==h&&clearTimeout(h),p=0,l=f=u=h=void 0},E.flush=function(){return void 0===h?d:w(t())},E}}()),Re=f?f.performance:null,Ie=Re&&Re.now?function(){return Re.now()}:function(){return Date.now()},Ne=function(){if(f){if(f.requestAnimationFrame)return function(e){f.requestAnimationFrame(e)};if(f.mozRequestAnimationFrame)return function(e){f.mozRequestAnimationFrame(e)};if(f.webkitRequestAnimationFrame)return function(e){f.webkitRequestAnimationFrame(e)};if(f.msRequestAnimationFrame)return function(e){f.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout(function(){e(Ie())},1e3/60)}}(),Le=function(e){return Ne(e)},ze=Ie,Oe=9261,Ve=5381,Fe=function(e){for(var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe;!(t=e.next()).done;)n=65599*n+t.value|0;return n},Xe=function(e){return 65599*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe)+e|0},je=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ve;return(t<<5)+t+e|0},Ye=function(e){return 2097152*e[0]+e[1]},qe=function(e,t){return[Xe(e[0],t[0]),je(e[1],t[1])]},We=function(e,t){var n={value:0,done:!1},r=0,a=e.length;return Fe({next:function(){return r=0;r--)e[r]===t&&e.splice(r,1)},ft=function(e){e.splice(0,e.length)},pt=function(e,t,n){return n&&(t=ce(n,t)),e[t]},vt=function(e,t,n,r){n&&(t=ce(n,t)),e[t]=r},gt="undefined"!=typeof Map?Map:function(){return i(function e(){a(this,e),this._obj={}},[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}])}(),yt=function(){return i(function e(t){if(a(this,e),this._obj=Object.create(null),this.size=0,null!=t){var n;n=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t;for(var r=0;r2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&re(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new mt,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:t.parent&&t.parent.isNode()?t.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==a.position.x&&(a.position.x=0),null==a.position.y&&(a.position.y=0),t.renderedPosition){var i=t.renderedPosition,o=e.pan(),s=e.zoom();a.position={x:(i.x-o.x)/s,y:(i.y-o.y)/s}}var l=[];Z(t.classes)?l=t.classes:K(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;ut?1:0},u=function(e,t,a,i,o){var s;if(null==a&&(a=0),null==o&&(o=n),a<0)throw new Error("lo must be non-negative");for(null==i&&(i=e.length);an;0<=n?t++:t--)u.push(t);return u}.apply(this).reverse()).length;iv;0<=v?++h:--h)g.push(i(e,r));return g},p=function(e,t,r,a){var i,o,s;for(null==a&&(a=n),i=e[r];r>t&&a(i,o=e[s=r-1>>1])<0;)e[r]=o,r=s;return e[r]=i},v=function(e,t,r){var a,i,o,s,l;for(null==r&&(r=n),i=e.length,l=t,o=e[t],a=2*t+1;a0;){var w=y.pop(),E=v(w),k=w.id();if(d[k]=E,E!==1/0)for(var T=w.neighborhood().intersect(f),C=0;C0)for(n.unshift(t);c[a];){var i=c[a];n.unshift(i.edge),n.unshift(i.node),a=(r=i.node).id()}return o.spawn(n)}}}},Mt={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,a=n.length,i=new Array(a),o=n,s=function(e){for(var t=0;t0;){if(x(),E++,u===d){for(var k=[],T=a,C=d,P=m[C];k.unshift(T),null!=P&&k.unshift(P),null!=(T=y[C]);)P=m[C=T.id()];return{found:!0,distance:h[u],path:this.spawn(k),steps:E}}p[u]=!0;for(var S=l._private.edges,B=0;BP&&(f[C]=P,y[C]=T,m[C]=x),!a){var S=T*u+k;!a&&f[S]>P&&(f[S]=P,y[S]=k,m[S]=x)}}}for(var B=0;B1&&void 0!==arguments[1]?arguments[1]:i,r=[],a=m(e);;){if(null==a)return t.spawn();var o=y(a),l=o.edge,u=o.pred;if(r.unshift(a[0]),a.same(n)&&r.length>0)break;null!=l&&r.unshift(l),a=u}return s.spawn(r)},hasNegativeWeightCycle:p,negativeWeightCycles:v}}},Vt=Math.sqrt(2),Ft=function(e,t,n){0===n.length&&at("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],a=r[1],i=r[2],o=t[a],s=t[i],l=n,u=l.length-1;u>=0;u--){var c=l[u],d=c[1],h=c[2];(t[d]===o&&t[h]===s||t[d]===s&&t[h]===o)&&l.splice(u,1)}for(var f=0;fr;){var a=Math.floor(Math.random()*t.length);t=Ft(a,e,t),n--}return t},jt={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy(function(e){return e.isLoop()});var a=n.length,i=r.length,o=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),s=Math.floor(a/Vt);if(!(a<2)){for(var l=[],u=0;u0?1:e<0?-1:0},Gt=function(e,t){return Math.sqrt(Zt(e,t))},Zt=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},$t=function(e){for(var t=e.length,n=0,r=0;r=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},nn=function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},rn=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},an=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},on=function(e){var t,n,r,a,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===i.length)t=n=r=a=i[0];else if(2===i.length)t=r=i[0],a=n=i[1];else if(4===i.length){var o=l(i,4);t=o[0],n=o[1],r=o[2],a=o[3]}return e.x1-=a,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},sn=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},ln=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},un=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},cn=function(e,t){return un(e,t.x,t.y)},dn=function(e,t){return un(e,t.x1,t.y1)&&un(e,t.x2,t.y2)},hn=null!==(Bt=Math.hypot)&&void 0!==Bt?Bt:function(e,t){return Math.sqrt(e*e+t*t)};function fn(e,t,n,r,a,i){var o=function(e,t){if(e.length<3)throw new Error("Need at least 3 vertices");var n=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},r=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},a=function(e,t){return{x:e.x*t,y:e.y*t}},i=function(e,t){return e.x*t.y-e.y*t.x},o=function(e){var t=hn(e.x,e.y);return 0===t?{x:0,y:0}:{x:e.x/t,y:e.y/t}},s=function(e,t,o,s){var l=r(t,e),u=r(s,o),c=i(l,u);if(Math.abs(c)<1e-9)return n(e,a(l,.5));var d=i(r(o,e),u)/c;return n(e,a(l,d))},l=e.map(function(e){return{x:e.x,y:e.y}});(function(e){for(var t=0,n=0;n7&&void 0!==arguments[7]?arguments[7]:"auto",c="auto"===u?Rn(a,i):u,d=a/2,h=i/2,f=(c=Math.min(c,d,h))!==d,p=c!==h;if(f){var v=r-h-o;if((s=Pn(e,t,n,r,n-d+c-o,v,n+d-c+o,v,!1)).length>0)return s}if(p){var g=n+d+o;if((s=Pn(e,t,n,r,g,r-h+c-o,g,r+h-c+o,!1)).length>0)return s}if(f){var y=r+h+o;if((s=Pn(e,t,n,r,n-d+c-o,y,n+d-c+o,y,!1)).length>0)return s}if(p){var m=n-d-o;if((s=Pn(e,t,n,r,m,r-h+c-o,m,r+h-c+o,!1)).length>0)return s}var b=n-d+c,x=r-h+c;if((l=Tn(e,t,n,r,b,x,c+o)).length>0&&l[0]<=b&&l[1]<=x)return[l[0],l[1]];var w=n+d-c,E=r-h+c;if((l=Tn(e,t,n,r,w,E,c+o)).length>0&&l[0]>=w&&l[1]<=E)return[l[0],l[1]];var k=n+d-c,T=r+h-c;if((l=Tn(e,t,n,r,k,T,c+o)).length>0&&l[0]>=k&&l[1]>=T)return[l[0],l[1]];var C=n-d+c,P=r+h-c;return(l=Tn(e,t,n,r,C,P,c+o)).length>0&&l[0]<=C&&l[1]>=P?[l[0],l[1]]:[]},vn=function(e,t,n,r,a,i,o){var s=o,l=Math.min(n,a),u=Math.max(n,a),c=Math.min(r,i),d=Math.max(r,i);return l-s<=e&&e<=u+s&&c-s<=t&&t<=d+s},gn=function(e,t,n,r,a,i,o,s,l){var u=Math.min(n,o,a)-l,c=Math.max(n,o,a)+l,d=Math.min(r,s,i)-l,h=Math.max(r,s,i)+l;return!(ec||th)},yn=function(e,t,n,r,a,i,o,s){var l=[];!function(e,t,n,r,a){var i,o,s,l,u,c,d,h;0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),i=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,a[1]=0,d=t/3,i>0?(u=(u=s+Math.sqrt(i))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(i))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),a[0]=-d+u+c,d+=(u+c)/2,a[4]=a[2]=-d,d=Math.sqrt(3)*(-c+u)/2,a[3]=d,a[5]=-d):(a[5]=a[3]=0,0===i?(h=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),a[0]=2*h-d,a[4]=a[2]=-(h+d)):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),h=2*Math.sqrt(o),a[0]=-d+h*Math.cos(l/3),a[2]=-d+h*Math.cos((l+2*Math.PI)/3),a[4]=-d+h*Math.cos((l+4*Math.PI)/3)))}(1*n*n-4*n*a+2*n*o+4*a*a-4*a*o+o*o+r*r-4*r*i+2*r*s+4*i*i-4*i*s+s*s,9*n*a-3*n*n-3*n*o-6*a*a+3*a*o+9*r*i-3*r*r-3*r*s-6*i*i+3*i*s,3*n*n-6*n*a+n*o-n*e+2*a*a+2*a*e-o*e+3*r*r-6*r*i+r*s-r*t+2*i*i+2*i*t-s*t,1*n*a-n*n+n*e-a*e+r*i-r*r+r*t-i*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var d,h,f,p=-1,v=0;v=0?fl?(e-a)*(e-a)+(t-i)*(t-i):u-d},bn=function(e,t,n){for(var r,a,i,o,s=0,l=0;l=e&&e>=i||r<=e&&e<=i))continue;(e-r)/(i-r)*(o-a)+a>t&&s++}return s%2!=0},xn=function(e,t,n,r,a,i,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var d,h=Math.cos(-u),f=Math.sin(-u),p=0;p0){var v=En(c,-l);d=wn(v)}else d=c;return bn(e,t,d)},wn=function(e){for(var t,n,r,a,i,o,s,l,u=new Array(e.length/2),c=0;c=0&&p<=1&&g.push(p),v>=0&&v<=1&&g.push(v),0===g.length)return[];var y=g[0]*s[0]+e,m=g[0]*s[1]+t;return g.length>1?g[0]==g[1]?[y,m]:[y,m,g[1]*s[0]+e,g[1]*s[1]+t]:[y,m]},Cn=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},Pn=function(e,t,n,r,a,i,o,s,l){var u=e-a,c=n-e,d=o-a,h=t-i,f=r-t,p=s-i,v=d*h-p*u,g=c*h-f*u,y=p*c-d*f;if(0!==y){var m=v/y,b=g/y,x=-.001;return x<=m&&m<=1.001&&x<=b&&b<=1.001||l?[e+m*c,t+m*f]:[]}return 0===v||0===g?Cn(e,n,o)===o?[o,s]:Cn(e,n,a)===a?[a,i]:Cn(a,o,n)===n?[n,r]:[]:[]},Sn=function(e,t,n,r,a){var i=[],o=r/2,s=a/2,l=t,u=n;i.push({x:l+o*e[0],y:u+s*e[1]});for(var c=1;c0){var m=En(v,-s);u=wn(m)}else u=v}else u=n;for(var b=0;bu&&(u=t)},d=function(e){return l[e]},h=0;h0?b.edgesTo(m)[0]:m.edgesTo(b)[0];var w=r(x);m=m.id(),u[m]>u[v]+w&&(u[m]=u[v]+w,h.nodes.indexOf(m)<0?h.push(m):h.updateItem(m),l[m]=0,n[m]=[]),u[m]==u[v]+w&&(l[m]=l[m]+l[v],n[m].push(v))}else for(var E=0;E0;){for(var P=t.pop(),S=0;S0&&o.push(n[s]);0!==o.length&&a.push(r.collection(o))}return a}(c,l,t,r);return b=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:tr,o=r,s=0;s=2?sr(e,t,n,0,ar,ir):sr(e,t,n,0,rr)},squaredEuclidean:function(e,t,n){return sr(e,t,n,0,ar)},manhattan:function(e,t,n){return sr(e,t,n,0,rr)},max:function(e,t,n){return sr(e,t,n,-1/0,or)}};function ur(e,t,n,r,a,i){var o;return o=G(e)?e:lr[e]||lr.euclidean,0===t&&G(e)?o(a,i):o(t,n,r,a,i)}lr["squared-euclidean"]=lr.squaredEuclidean,lr.squaredeuclidean=lr.squaredEuclidean;var cr=dt({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),dr=function(e){return cr(e)},hr=function(e,t,n,r,a){var i="kMedoids"!==a?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return ur(e,r.length,i,function(e){return r[e](t)},o,s)},fr=function(e,t,n){for(var r=n.length,a=new Array(r),i=new Array(r),o=new Array(t),s=null,l=0;ln)return!1}return!0},mr=function(e,t,n){for(var r=0;ra&&(a=t[l][u],i=u);o[i].push(e[l])}for(var c=0;c=a.threshold||"dendrogram"===a.mode&&1===e.length)return!1;var f,p=t[o],v=t[r[o]];f="dendrogram"===a.mode?{left:p,right:v,key:p.key}:{value:p.value.concat(v.value),key:p.key},e[p.index]=f,e.splice(v.index,1),t[p.key]=f;for(var g=0;gn[v.key][y.key]&&(i=n[v.key][y.key])):"max"===a.linkage?(i=n[p.key][y.key],n[p.key][y.key]1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n0&&e.splice(0,t)):e=e.slice(t,n);for(var i=0,o=e.length-1;o>=0;o--){var s=e[o];a?isFinite(s)||(e[o]=-1/0,i++):e.splice(o,1)}r&&e.sort(function(e,t){return e-t});var l=e.length,u=Math.floor(l/2);return l%2!=0?e[u+1+i]:(e[u-1+i]+e[u+i])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,a=0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,a=t;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,a=t;ao&&(i=l,o=t[a*e+l])}i>0&&r.push(i)}for(var u=0;u=P?(S=P,P=D,B=_):D>S&&(S=D);for(var A=0;A0?1:0;k[E%u.minIterations*t+z]=O,L+=O}if(L>0&&(E>=u.minIterations-1||E==u.maxIterations-1)){for(var V=0,F=0;F0&&r.push(a);return r}(t,i,o),Y=function(e,t,n){for(var r=Lr(e,t,n),a=0;al&&(s=u,l=c)}n[a]=i[s]}return Lr(e,t,n)}(t,r,j),q={},W=0;W1)}});var l=Object.keys(t).filter(function(e){return t[e].cutVertex}).map(function(t){return e.getElementById(t)});return{cut:e.spawn(l),components:a}},Xr=function(){var e=this,t={},n=0,r=[],a=[],i=e.spawn(e),o=function(s){if(a.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach(function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))}),t[s].index===t[s].low){for(var l=e.spawn();;){var u=a.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),d=l.merge(c);r.push(d),i=i.difference(d)}};return e.forEach(function(e){if(e.isNode()){var n=e.id();n in t||o(n)}}),{cut:i,components:r}},jr={};[wt,At,Mt,It,Lt,Ot,jt,On,Fn,jn,qn,er,Tr,Mr,Or,{hierholzer:function(e){if(!$(e)){var t=arguments;e={root:t[0],directed:t[1]}}var n,r,a,i=Vr(e),o=i.root,s=i.directed,l=this,u=!1;o&&(a=K(o)?this.filter(o)[0].id():o[0].id());var c={},d={};s?l.forEach(function(e){var t=e.id();if(e.isNode()){var a=e.indegree(!0),i=e.outdegree(!0),o=a-i,s=i-a;1==o?n?u=!0:n=t:1==s?r?u=!0:r=t:(s>1||o>1)&&(u=!0),c[t]=[],e.outgoers().forEach(function(e){e.isEdge()&&c[t].push(e.id())})}else d[t]=[void 0,e.target().id()]}):l.forEach(function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?u=!0:r=t:n=t),c[t]=[],e.connectedEdges().forEach(function(e){return c[t].push(e.id())})):d[t]=[e.source().id(),e.target().id()]});var h={found:!1,trail:void 0};if(u)return h;if(r&&n)if(s){if(a&&r!=a)return h;a=r}else{if(a&&r!=a&&n!=a)return h;a||(a=r)}else a||(a=l[0].id());var f=function(e){for(var t,n,r,a=e,i=[e];c[a].length;)t=c[a].shift(),n=d[t][0],a!=(r=d[t][1])?(c[r]=c[r].filter(function(e){return e!=t}),a=r):s||a==n||(c[n]=c[n].filter(function(e){return e!=t}),a=n),i.unshift(t),i.unshift(a);return i},p=[],v=[];for(v=f(a);1!=v.length;)0==c[v[0]].length?(p.unshift(l.getElementById(v.shift())),p.unshift(l.getElementById(v.shift()))):v=f(v.shift()).concat(v);for(var g in p.unshift(l.getElementById(v.shift())),c)if(c[g].length)return h;return h.found=!0,h.trail=this.spawn(p,!0),h}},{hopcroftTarjanBiconnected:Fr,htbc:Fr,htb:Fr,hopcroftTarjanBiconnectedComponents:Fr},{tarjanStronglyConnected:Xr,tsc:Xr,tscc:Xr,tarjanStronglyConnectedComponents:Xr}].forEach(function(e){be(jr,e)});var Yr=function(e){if(!(this instanceof Yr))return new Yr(e);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof e&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Yr.prototype={fulfill:function(e){return qr(this,1,"fulfillValue",e)},reject:function(e){return qr(this,2,"rejectReason",e)},then:function(e,t){var n=this,r=new Yr;return n.onFulfilled.push(Hr(e,r,"fulfill")),n.onRejected.push(Hr(t,r,"reject")),Wr(n),r.proxy}};var qr=function(e,t,n,r){return 0===e.state&&(e.state=t,e[n]=r,Wr(e)),e},Wr=function(e){1===e.state?Ur(e,"onFulfilled",e.fulfillValue):2===e.state&&Ur(e,"onRejected",e.rejectReason)},Ur=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var a=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n-1}}(),a=function(){if(Ya)return ja;Ya=1;var e=Oi();return ja=function(t,n){var r=this.__data__,a=e(r,t);return a<0?(++this.size,r.push([t,n])):r[a][1]=n,this},ja}();function i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&t%1==0&&t0&&this.spawn(r).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){Z(e)||(e=e.match(/\S+/g)||[]);for(var n=this,r=void 0===t,a=[],i=0,o=n.length;i0&&this.spawn(a).updateStyle().emit("class"),n},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},t),n}};To.className=To.classNames=To.classes;var Co={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:fe,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Co.variable="(?:[\\w-.]|(?:\\\\"+Co.metaChar+"))+",Co.className="(?:[\\w-]|(?:\\\\"+Co.metaChar+"))+",Co.value=Co.string+"|"+Co.number,Co.id=Co.variable,function(){var e,t,n;for(e=Co.comparatorOp.split("|"),n=0;n=0||"="!==t&&(Co.comparatorOp+="|\\!"+t)}();var Po=0,So=1,Bo=2,Do=3,_o=4,Ao=5,Mo=6,Ro=7,Io=8,No=9,Lo=10,zo=11,Oo=12,Vo=13,Fo=14,Xo=15,jo=16,Yo=17,qo=18,Wo=19,Uo=20,Ho=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(e,t){return function(e,t){return-1*me(e,t)}(e.selector,t.selector)}),Ko=function(){for(var e,t={},n=0;n0&&u.edgeCount>0)return ot("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return ot("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&ot("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return K(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,i){var o=r.type,s=r.value;switch(o){case Po:var l=e(s);return l.substring(0,l.length-1);case Do:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case Ao:var d=r.operator,h=r.field;return"["+e(d)+h+"]";case _o:return"["+r.field+"]";case Mo:var f=r.operator;return"[["+r.field+n(e(f))+t(s)+"]]";case Ro:return s;case Io:return"#"+s;case No:return"."+s;case Yo:case Xo:return a(r.parent,i)+n(">")+a(r.child,i);case qo:case jo:return a(r.ancestor,i)+" "+a(r.descendant,i);case Wo:var p=a(r.left,i),v=a(r.subject,i),g=a(r.right,i);return p+(p.length>0?" ":"")+v+g;case Uo:return""}},a=function(e,t){return e.checks.reduce(function(n,a,i){return n+(t===e&&0===i?"$":"")+r(a,t)},"")},i="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(a=o||s?""+e:"",i=""+n),u&&(e=a=a.toLowerCase(),n=i=i.toLowerCase()),t){case"*=":r=a.indexOf(i)>=0;break;case"$=":r=a.indexOf(i,a.length-i.length)>=0;break;case"^=":r=0===a.indexOf(i);break;case"=":r=e===n;break;case">":d=!0,r=e>n;break;case">=":d=!0,r=e>=n;break;case"<":d=!0,r=e0;){var u=a.shift();t(u),i.add(u.id()),o&&r(a,i,u)}return e}function ps(e,t,n){if(n.isParent())for(var r=n._private.children,a=0;a1&&void 0!==arguments[1])||arguments[1],ps)},hs.forEachUp=function(e){return fs(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],vs)},hs.forEachUpAndDown=function(e){return fs(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],gs)},hs.ancestors=hs.parents,(us=cs={data:Eo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Eo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Eo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Eo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Eo.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Eo.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=us.data,us.removeAttr=us.removeData;var ys,ms,bs=cs,xs={};function ws(e){return function(t){var n=this;if(void 0===t&&(t=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var r=0,a=n[0],i=a._private.edges,o=0;ot}),minIndegree:Es("indegree",function(e,t){return et}),minOutdegree:Es("outdegree",function(e,t){return et})}),be(xs,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,c=u;u&&(l=l[0]);var d=c?l.position():{x:0,y:0};return a={x:s.x-d.x,y:s.y-d.y},void 0===e?a:a[e]}for(var h=0;h0,g=v;v&&(p=p[0]);var y=g?p.position():{x:0,y:0};void 0!==t?f.position(e,t+y[e]):void 0!==a&&f.position({x:a.x+y.x,y:a.y+y.y})}}else if(!i)return;return this}},ys.modelPosition=ys.point=ys.position,ys.modelPositions=ys.points=ys.positions,ys.renderedPoint=ys.renderedPosition,ys.relativePoint=ys.relativePosition;var Cs,Ps,Ss=ms;Cs=Ps={},Ps.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),a=n.pan(),i=t.x1*r+a.x,o=t.x2*r+a.x,s=t.y1*r+a.y,l=t.y2*r+a.y;return{x1:i,x2:o,y1:s,y2:l,w:o-i,h:l-s}},Ps.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp(function(t){if(t.isParent()){var n=t._private;n.compoundBoundsClean=!1,n.bbCache=null,e||t.emitAndNotify("bounds")}}),this):this},Ps.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,a={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},i=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==i.w&&0!==i.h||((i={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-i.w/2,i.x2=o.x+i.w/2,i.y1=o.y-i.h/2,i.y2=o.y+i.h/2);var s=a.width.left.value;"px"===a.width.left.units&&a.width.val>0&&(s=100*s/a.width.val);var l=a.width.right.value;"px"===a.width.right.units&&a.width.val>0&&(l=100*l/a.width.val);var u=a.height.top.value;"px"===a.height.top.units&&a.height.val>0&&(u=100*u/a.height.val);var c=a.height.bottom.value;"px"===a.height.bottom.units&&a.height.val>0&&(c=100*c/a.height.val);var d=y(a.width.val-i.w,s,l),h=d.biasDiff,f=d.biasComplementDiff,p=y(a.height.val-i.h,u,c),v=p.biasDiff,g=p.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(i.w,i.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(i.w,a.width.val),o.x=(-h+i.x1+i.x2+f)/2,t.autoHeight=Math.max(i.h,a.height.val),o.y=(-v+i.y1+i.y2+g)/2}function y(e,t,n){var r=0,a=0,i=t+n;return e>0&&i>0&&(r=t/i*e,a=n/i*e),{biasDiff:r,biasComplementDiff:a}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},_s=function(e,t){return null==t?e:Ds(e,t.x1,t.y1,t.x2,t.y2)},As=function(e,t,n){return pt(e,t,n)},Ms=function(e,t,n){if(!t.cy().headless()){var r,a,i=t._private,o=i.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,a=o.srcY):"target"===n?(r=o.tgtX,a=o.tgtY):(r=o.midX,a=o.midY);var l=i.arrowBounds=i.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=a-s,u.x2=r+s,u.y2=a+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,an(u,1),Ds(e,u.x1,u.y1,u.x2,u.y2)}}},Rs=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var a=t._private,i=a.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),d=t.pstyle("text-valign"),h=As(i,"labelWidth",n),f=As(i,"labelHeight",n),p=As(i,"labelX",n),v=As(i,"labelY",n),g=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,k=f,T=h,C=T/2,P=k/2;if(m)o=p-C,s=p+C,l=v-P,u=v+P;else{switch(c.value){case"left":o=p-T,s=p;break;case"center":o=p-C,s=p+C;break;case"right":o=p,s=p+T}switch(d.value){case"top":l=v-k,u=v;break;case"center":l=v-P,u=v+P;break;case"bottom":l=v,u=v+k}}var S=g-Math.max(x,w)-E-2,B=g+Math.max(x,w)+E+2,D=y-Math.max(x,w)-E-2,_=y+Math.max(x,w)+E+2;o+=S,s+=B,l+=D,u+=_;var A=n||"main",M=a.labelBounds,R=M[A]=M[A]||{};R.x1=o,R.y1=l,R.x2=s,R.y2=u,R.w=s-o,R.h=u-l,R.leftPad=S,R.rightPad=B,R.topPad=D,R.botPad=_;var I=m&&"autorotate"===b.strValue,N=null!=b.pfValue&&0!==b.pfValue;if(I||N){var L=I?As(a.rstyle,"labelAngle",n):b.pfValue,z=Math.cos(L),O=Math.sin(L),V=(o+s)/2,F=(l+u)/2;if(!m){switch(c.value){case"left":V=s;break;case"right":V=o}switch(d.value){case"top":F=u;break;case"bottom":F=l}}var X=function(e,t){return{x:(e-=V)*z-(t-=F)*O+V,y:e*O+t*z+F}},j=X(o,l),Y=X(o,u),q=X(s,l),W=X(s,u);o=Math.min(j.x,Y.x,q.x,W.x),s=Math.max(j.x,Y.x,q.x,W.x),l=Math.min(j.y,Y.y,q.y,W.y),u=Math.max(j.y,Y.y,q.y,W.y)}var U=A+"Rot",H=M[U]=M[U]||{};H.x1=o,H.y1=l,H.x2=s,H.y2=u,H.w=s-o,H.h=u-l,Ds(e,o,l,s,u),Ds(a.labelBounds.all,o,l,s,u)}return e}},Is=function(e,t){if(!t.cy().headless()){var n=t.pstyle("outline-opacity").value,r=t.pstyle("outline-width").value+t.pstyle("outline-offset").value;Ns(e,t,n,r,"outside",r/2)}},Ns=function(e,t,n,r,a,i){if(!(0===n||r<=0||"inside"===a)){var o=t.cy(),s=t.pstyle("shape").value,l=o.renderer().nodeShapes[s],u=t.position(),c=u.x,d=u.y,h=t.width(),f=t.height();if(l.hasMiterBounds){"center"===a&&(r/=2);var p=l.miterBounds(c,d,h,f,r);_s(e,p)}else null!=i&&i>0&&on(e,[i,i,i,i])}},Ls=function(e,t){var n,r,a,i,o,s,l,u=e._private.cy,c=u.styleEnabled(),d=u.headless(),h=tn(),f=e._private,p=e.isNode(),v=e.isEdge(),g=f.rstyle,y=p&&c?e.pstyle("bounds-expansion").pfValue:[0],m=function(e){return"none"!==e.pstyle("display").value},b=!c||m(e)&&(!v||m(e.source())&&m(e.target()));if(b){var x=0;c&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(x=e.pstyle("overlay-padding").value);var w=0;c&&t.includeUnderlays&&0!==e.pstyle("underlay-opacity").value&&(w=e.pstyle("underlay-padding").value);var E=Math.max(x,w),k=0;if(c&&(k=e.pstyle("width").pfValue/2),p&&t.includeNodes){var T=e.position();o=T.x,s=T.y;var C=e.outerWidth()/2,P=e.outerHeight()/2;Ds(h,n=o-C,a=s-P,r=o+C,i=s+P),c&&Is(h,e),c&&t.includeOutlines&&!d&&Is(h,e),c&&function(e,t){if(!t.cy().headless()){var n=t.pstyle("border-opacity").value,r=t.pstyle("border-width").pfValue,a=t.pstyle("border-position").value;Ns(e,t,n,r,a)}}(h,e)}else if(v&&t.includeEdges)if(c&&!d){var S=e.pstyle("curve-style").strValue;if(n=Math.min(g.srcX,g.midX,g.tgtX),r=Math.max(g.srcX,g.midX,g.tgtX),a=Math.min(g.srcY,g.midY,g.tgtY),i=Math.max(g.srcY,g.midY,g.tgtY),Ds(h,n-=k,a-=k,r+=k,i+=k),"haystack"===S){var B=g.haystackPts;if(B&&2===B.length){if(n=B[0].x,a=B[0].y,n>(r=B[1].x)){var D=n;n=r,r=D}if(a>(i=B[1].y)){var _=a;a=i,i=_}Ds(h,n-k,a-k,r+k,i+k)}}else if("bezier"===S||"unbundled-bezier"===S||he(S,"segments")||he(S,"taxi")){var A;switch(S){case"bezier":case"unbundled-bezier":A=g.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":A=g.linePts}if(null!=A)for(var M=0;M(r=N.x)){var L=n;n=r,r=L}if((a=I.y)>(i=N.y)){var z=a;a=i,i=z}Ds(h,n-=k,a-=k,r+=k,i+=k)}if(c&&t.includeEdges&&v&&(Ms(h,e,"mid-source"),Ms(h,e,"mid-target"),Ms(h,e,"source"),Ms(h,e,"target")),c)if("yes"===e.pstyle("ghost").value){var O=e.pstyle("ghost-offset-x").pfValue,V=e.pstyle("ghost-offset-y").pfValue;Ds(h,h.x1+O,h.y1+V,h.x2+O,h.y2+V)}var F=f.bodyBounds=f.bodyBounds||{};sn(F,h),on(F,y),an(F,1),c&&(n=h.x1,r=h.x2,a=h.y1,i=h.y2,Ds(h,n-E,a-E,r+E,i+E));var X=f.overlayBounds=f.overlayBounds||{};sn(X,h),on(X,y),an(X,1);var j=f.labelBounds=f.labelBounds||{};null!=j.all?((l=j.all).x1=1/0,l.y1=1/0,l.x2=-1/0,l.y2=-1/0,l.w=0,l.h=0):j.all=tn(),c&&t.includeLabels&&(t.includeMainLabels&&Rs(h,e,null),v&&(t.includeSourceLabels&&Rs(h,e,"source"),t.includeTargetLabels&&Rs(h,e,"target")))}return h.x1=Bs(h.x1),h.y1=Bs(h.y1),h.x2=Bs(h.x2),h.y2=Bs(h.y2),h.w=Bs(h.x2-h.x1),h.h=Bs(h.y2-h.y1),h.w>0&&h.h>0&&b&&(on(h,y),an(h,1)),h},zs=function(e){var t=0,n=function(e){return(e?1:0)<0&&void 0!==arguments[0]?arguments[0]:rl,t=arguments.length>1?arguments[1]:void 0,n=0;n=0;s--)o(s);return this},il.removeAllListeners=function(){return this.removeListener("*")},il.emit=il.trigger=function(e,t,n){var r=this.listeners,a=r.length;return this.emitting++,Z(t)||(t=[t]),ll(this,function(e,i){null!=n&&(r=[{event:i.event,type:i.type,namespace:i.namespace,callback:n}],a=r.length);for(var o=function(){var n=r[s];if(n.type===i.type&&(!n.namespace||n.namespace===i.namespace||".*"===n.namespace)&&e.eventMatches(e.context,n,i)){var a=[i];null!=t&&function(e,t){for(var n=0;n1&&!r){var a=this.length-1,i=this[a],o=i._private.data.id;this[a]=void 0,this[e]=i,n.set(o,{ele:i,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var a=r.index;return this.unmergeAt(a),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&K(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=this,a=0;ar&&(r=s,n=o)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,a=this,i=0;i=0&&a1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,r.style().apply(n));var a=n._private.style[e];return null!=a?a:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=!1,a=n.style();if($(e)){var i=e;a.applyBypass(this,i,r),this.emitAndNotify("style")}else if(K(e)){if(void 0===t){var o=this[0];return o?a.getStylePropertyValue(o,e):void 0}a.applyBypass(this,e,t,r),this.emitAndNotify("style")}else if(void 0===e){var s=this[0];return s?a.getRawStyle(s):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=!1,r=t.style(),a=this;if(void 0===e)for(var i=0;i0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Rl.neighbourhood=Rl.neighborhood,Rl.closedNeighbourhood=Rl.closedNeighborhood,Rl.openNeighbourhood=Rl.openNeighborhood,be(Rl,{source:ds(function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t},"source"),target:ds(function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t},"target"),sources:zl({attr:"source"}),targets:zl({attr:"target"})}),be(Rl,{edgesWith:ds(Ol(),"edgesWith"),edgesTo:ds(Ol({thisIsSrc:!0}),"edgesTo")}),be(Rl,{connectedEdges:ds(function(e){for(var t=[],n=0;n0);return i},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Rl.componentsOf=Rl.components;var Fl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==e){var a=new gt,i=!1;if(t){if(t.length>0&&$(t[0])&&!te(t[0])){i=!0;for(var o=[],s=new mt,l=0,u=t.length;l0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=this,i=a.cy(),o=i._private,s=[],l=[],u=0,c=a.length;u0){for(var I=e.length===a.length?a:new Fl(i,e),N=0;N0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=[],a={},i=n._private.cy;function o(e){var n=a[e.id()];t&&e.removed()||n||(a[e.id()]=!0,e.isNode()?(r.push(e),function(e){for(var t=e._private.edges,n=0;n0&&(e?k.emitAndNotify("remove"):t&&k.emit("remove"));for(var T=0;T=.001?function(t,r){for(var a=0;a<4;++a){var i=h(r,e,n);if(0===i)return r;r-=(d(r,e,n)-t)/i}return r}(t,o):0===l?o:function(t,r,a){var i,o,s=0;do{(i=d(o=r+(a-r)/2,e,n)-t)>0?a=o:r=o}while(Math.abs(i)>1e-7&&++s<10);return o}(t,r,r+a)}var p=!1;function v(){p=!0,e===t&&n===r||function(){for(var t=0;t<11;++t)s[t]=d(t*a,e,n)}()}var g=function(a){return p||v(),e===t&&n===r?a:0===a?0:1===a?1:d(f(a),t,r)};g.getControlPoints=function(){return[{x:e,y:t},{x:n,y:r}]};var y="generateBezier("+[e,t,n,r]+")";return g.toString=function(){return y},g}var ql=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,n,r){var a={x:t.x+r.dx*n,v:t.v+r.dv*n,tension:t.tension,friction:t.friction};return{dx:a.v,dv:e(a)}}function n(n,r){var a={dx:n.v,dv:e(n)},i=t(n,.5*r,a),o=t(n,.5*r,i),s=t(n,r,o),l=1/6*(a.dx+2*(i.dx+o.dx)+s.dx),u=1/6*(a.dv+2*(i.dv+o.dv)+s.dv);return n.x=n.x+l*r,n.v=n.v+u*r,n}return function e(t,r,a){var i,o,s,l={x:-1,v:0,tension:null,friction:null},u=[0],c=0,d=1e-4;for(t=parseFloat(t)||500,r=parseFloat(r)||20,a=a||null,l.tension=t,l.friction=r,o=(i=null!==a)?(c=e(t,r))/a*.016:.016;s=n(s||l,o),u.push(1+s.x),c+=16,Math.abs(s.x)>d&&Math.abs(s.v)>d;);return i?function(e){return u[e*(u.length-1)|0]}:c}}(),Wl=function(e,t,n,r){var a=Yl(e,t,n,r);return function(e,t,n){return e+(t-e)*a(n)}},Ul={linear:function(e,t,n){return e+(t-e)*n},ease:Wl(.25,.1,.25,1),"ease-in":Wl(.42,0,1,1),"ease-out":Wl(0,0,.58,1),"ease-in-out":Wl(.42,0,.58,1),"ease-in-sine":Wl(.47,0,.745,.715),"ease-out-sine":Wl(.39,.575,.565,1),"ease-in-out-sine":Wl(.445,.05,.55,.95),"ease-in-quad":Wl(.55,.085,.68,.53),"ease-out-quad":Wl(.25,.46,.45,.94),"ease-in-out-quad":Wl(.455,.03,.515,.955),"ease-in-cubic":Wl(.55,.055,.675,.19),"ease-out-cubic":Wl(.215,.61,.355,1),"ease-in-out-cubic":Wl(.645,.045,.355,1),"ease-in-quart":Wl(.895,.03,.685,.22),"ease-out-quart":Wl(.165,.84,.44,1),"ease-in-out-quart":Wl(.77,0,.175,1),"ease-in-quint":Wl(.755,.05,.855,.06),"ease-out-quint":Wl(.23,1,.32,1),"ease-in-out-quint":Wl(.86,0,.07,1),"ease-in-expo":Wl(.95,.05,.795,.035),"ease-out-expo":Wl(.19,1,.22,1),"ease-in-out-expo":Wl(1,0,0,1),"ease-in-circ":Wl(.6,.04,.98,.335),"ease-out-circ":Wl(.075,.82,.165,1),"ease-in-out-circ":Wl(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return Ul.linear;var r=ql(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":Wl};function Hl(e,t,n,r,a){if(1===r)return n;if(t===n)return n;var i=a(t,n,r);return null==e||((e.roundValue||e.color)&&(i=Math.round(i)),void 0!==e.min&&(i=Math.max(i,e.min)),void 0!==e.max&&(i=Math.min(i,e.max))),i}function Kl(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function Gl(e,t,n,r,a){var i=null!=a?a.type:null;n<0?n=0:n>1&&(n=1);var o=Kl(e,a),s=Kl(t,a);if(Q(o)&&Q(s))return Hl(i,o,s,n,r);if(Z(o)&&Z(s)){for(var l=[],u=0;u0?("spring"===d&&h.push(o.duration),o.easingImpl=Ul[d].apply(null,h)):o.easingImpl=Ul[d]}var f,p=o.easingImpl;if(f=0===o.duration?1:(n-l)/o.duration,o.applying&&(f=o.progress),f<0?f=0:f>1&&(f=1),null==o.delay){var v=o.startPosition,g=o.position;if(g&&a&&!e.locked()){var y={};$l(v.x,g.x)&&(y.x=Gl(v.x,g.x,f,p)),$l(v.y,g.y)&&(y.y=Gl(v.y,g.y,f,p)),e.position(y)}var m=o.startPan,b=o.pan,x=i.pan,w=null!=b&&r;w&&($l(m.x,b.x)&&(x.x=Gl(m.x,b.x,f,p)),$l(m.y,b.y)&&(x.y=Gl(m.y,b.y,f,p)),e.emit("pan"));var E=o.startZoom,k=o.zoom,T=null!=k&&r;T&&($l(E,k)&&(i.zoom=en(i.minZoom,Gl(E,k,f,p),i.maxZoom)),e.emit("zoom")),(w||T)&&e.emit("viewport");var C=o.style;if(C&&C.length>0&&a){for(var P=0;P=0;t--){(0,e[t])()}e.splice(0,e.length)},c=i.length-1;c>=0;c--){var d=i[c],h=d._private;h.stopped?(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.frames)):(h.playing||h.applying)&&(h.playing&&h.applying&&(h.applying=!1),h.started||Ql(0,d,e),Zl(t,d,e,n),h.applying&&(h.applying=!1),u(h.frames),null!=h.step&&h.step(e),d.completed()&&(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.completes)),s=!0)}return n||0!==i.length||0!==o.length||r.push(t),s}for(var i=!1,o=0;o0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var eu={animate:Eo.animate(),animation:Eo.animation(),animated:Eo.animated(),clearQueue:Eo.clearQueue(),delay:Eo.delay(),delayAnimation:Eo.delayAnimation(),stop:Eo.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender(function(t,n){Jl(n,e)},t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&Le(function(n){Jl(n,e),t()})}()}}},tu={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&te(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},nu=function(e){return K(e)?new os(e):e},ru={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new al(tu,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,nu(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,nu(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,nu(t),n),this},once:function(e,t,n){return this.emitter().one(e,nu(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};Eo.eventAliasesOn(ru);var au={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};au.jpeg=au.jpg;var iu={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var n=e.name,r=t.extension("layout",n);if(null!=r){var a;a=K(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var i=new r(be({},e,{cy:t,eles:a}));return i}at("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else at("A `name` must be specified to make a layout");else at("Layout options must be specified to make a layout")}};iu.createLayout=iu.makeLayout=iu.layout;var ou={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var a=this.renderer();!this.destroyed()&&a&&a.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch(function(){for(var n=Object.keys(e),r=0;r0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};lu.invalidateDimensions=lu.resize;var uu={collection:function(e,t){return K(e)?this.$(e):ee(e)?e.collection():Z(e)?(t||(t={}),new Fl(this,e,t.unique,t.removed)):new Fl(this)},nodes:function(e){var t=this.$(function(e){return e.isNode()});return e?t.filter(e):t},edges:function(e){var t=this.$(function(e){return e.isEdge()});return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};uu.elements=uu.filter=uu.$;var cu={},du="t";cu.apply=function(e){for(var t=this,n=t._private.cy.collection(),r=0;r0;if(h||d&&f){var p=void 0;h&&f||h?p=u.properties:f&&(p=u.mappedProperties);for(var v=0;v1&&(g=1),s.color){var w=a.valueMin[0],E=a.valueMax[0],k=a.valueMin[1],T=a.valueMax[1],C=a.valueMin[2],P=a.valueMax[2],S=null==a.valueMin[3]?1:a.valueMin[3],B=null==a.valueMax[3]?1:a.valueMax[3],D=[Math.round(w+(E-w)*g),Math.round(k+(T-k)*g),Math.round(C+(P-C)*g),Math.round(S+(B-S)*g)];n={bypass:a.bypass,name:a.name,value:D,strValue:"rgb("+D[0]+", "+D[1]+", "+D[2]+")"}}else{if(!s.number)return!1;var _=a.valueMin+(a.valueMax-a.valueMin)*g;n=this.parse(a.name,_,a.bypass,h)}if(!n)return v(),!1;n.mapping=a,a=n;break;case o.data:for(var A=a.field.split("."),M=d.data,R=0;R0&&i>0){for(var s={},l=!1,u=0;u0?e.delayAnimation(o).play().promise().then(t):t()}).then(function(){return e.animation({style:s,duration:i,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){n.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1})}else r.transitioning&&(this.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1)},cu.checkTrigger=function(e,t,n,r,a,i){var o=this.properties[t],s=a(o);e.removed()||null!=s&&s(n,r,e)&&i(o)},cu.checkZOrderTrigger=function(e,t,n,r){var a=this;this.checkTrigger(e,t,n,r,function(e){return e.triggersZOrder},function(){a._private.cy.notify("zorder",e)})},cu.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBounds},function(t){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()})},cu.checkConnectedEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBoundsOfConnectedEdges},function(t){e.connectedEdges().forEach(function(e){e.dirtyBoundingBoxCache()})})},cu.checkParallelEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,function(e){return e.triggersBoundsOfParallelEdges},function(t){e.parallelEdges().forEach(function(e){e.dirtyBoundingBoxCache()})})},cu.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r),this.checkConnectedEdgesBoundsTrigger(e,t,n,r),this.checkParallelEdgesBoundsTrigger(e,t,n,r)};var hu={applyBypass:function(e,t,n,r){var a=[];if("*"===t||"**"===t){if(void 0!==n)for(var i=0;it.length?i.substr(t.length):""}function s(){n=n.length>r.length?n.substr(r.length):""}for(i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(i.match(/^\s*$/))break;var l=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){ot("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}t=l[0];var u=l[1];if("core"!==u)if(new os(u).invalid){ot("Skipping parsing of block: Invalid selector found in string stylesheet: "+u),o();continue}var c=l[2],d=!1;n=c;for(var h=[];;){if(n.match(/^\s*$/))break;var f=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!f){ot("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+c),d=!0;break}r=f[0];var p=f[1],v=f[2];if(this.properties[p])a.parse(p,v)?(h.push({name:p,val:v}),s()):(ot("Skipping property: Invalid property definition in: "+r),s());else ot("Skipping property: Invalid property name in: "+r),s()}if(d){o();break}a.selector(u);for(var g=0;g=7&&"d"===t[0]&&(u=new RegExp(s.data.regex).exec(t))){if(n)return!1;var h=s.data;return{name:e,value:u,strValue:""+t,mapped:h,field:u[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(c=new RegExp(s.mapData.regex).exec(t))){if(n)return!1;if(d.multiple)return!1;var f=s.mapData;if(!d.color&&!d.number)return!1;var p=this.parse(e,c[4]);if(!p||p.mapped)return!1;var v=this.parse(e,c[5]);if(!v||v.mapped)return!1;if(p.pfValue===v.pfValue||p.strValue===v.strValue)return ot("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+p.strValue+"`"),this.parse(e,p.strValue);if(d.color){var g=p.value,y=v.value;if(!(g[0]!==y[0]||g[1]!==y[1]||g[2]!==y[2]||g[3]!==y[3]&&(null!=g[3]&&1!==g[3]||null!=y[3]&&1!==y[3])))return!1}return{name:e,value:c,strValue:""+t,mapped:f,field:c[1],fieldMin:parseFloat(c[2]),fieldMax:parseFloat(c[3]),valueMin:p.value,valueMax:v.value,bypass:n}}}if(d.multiple&&"multiple"!==r){var m;if(m=l?t.split(/\s+/):Z(t)?t:[t],d.evenMultiple&&m.length%2!=0)return null;for(var b=[],x=[],w=[],E="",k=!1,T=0;T0?" ":"")+C.strValue}return d.validate&&!d.validate(b,x)?null:d.singleEnum&&k?1===b.length&&K(b[0])?{name:e,value:b[0],strValue:b[0],bypass:n}:null:{name:e,value:b,pfValue:w,strValue:E,bypass:n,units:x}}var P,S,B=function(){for(var r=0;rd.max||d.strictMax&&t===d.max))return null;var R={name:e,value:t,strValue:""+t+(D||""),units:D,bypass:n};return d.unitless||"px"!==D&&"em"!==D?R.pfValue=t:R.pfValue="px"!==D&&D?this.getEmSizeInPixels()*t:t,"ms"!==D&&"s"!==D||(R.pfValue="ms"===D?t:1e3*t),"deg"!==D&&"rad"!==D||(R.pfValue="rad"===D?t:(P=t,Math.PI*P/180)),"%"===D&&(R.pfValue=t/100),R}if(d.propList){var I=[],N=""+t;if("none"===N);else{for(var L=N.split(/\s*,\s*|\s+/),z=0;z0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:o=(o=(o=Math.min((s-2*t)/n.w,(l-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:o)=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,a=r.pan,i=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),Q(e)?n=e:$(e)&&(n=e.level,null!=e.position?t=Yt(e.position,i,a):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)t.maxZoom||!t.zoomingEnabled?i=!0:(t.zoom=s,a.push("zoom"))}if(r&&(!i||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;Q(l.x)&&(t.pan.x=l.x,o=!1),Q(l.y)&&(t.pan.y=l.y,o=!1),o||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(K(e)){var n=e;e=this.mutableElements().filter(n)}else ee(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),a=this.width(),i=this.height();return{x:(a-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(i-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container,a=this;return n.sizeCache=n.sizeCache||(r?(e=a.window().getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};Eu.centre=Eu.center,Eu.autolockNodes=Eu.autolock,Eu.autoungrabifyNodes=Eu.autoungrabify;var ku={data:Eo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Eo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Eo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Eo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};ku.attr=ku.data,ku.removeAttr=ku.removeData;var Tu=function(e){var t=this,n=(e=be({},e)).container;n&&!J(n)&&J(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var a=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var i=void 0!==f&&void 0!==n&&!e.headless,o=e;o.layout=be({name:i?"grid":"null"},o.layout),o.renderer=be({name:i?"canvas":"null"},o.renderer);var s=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},l=this._private={container:n,ready:!1,options:o,elements:new Fl(this),listeners:[],aniEles:new Fl(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?i:o.styleEnabled,zoom:Q(o.zoom)?o.zoom:1,pan:{x:$(o.pan)&&Q(o.pan.x)?o.pan.x:0,y:$(o.pan)&&Q(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});l.styleEnabled&&t.setStyle([]);var u=be({},o,o.renderer);t.initRenderer(u);!function(e,t){if(e.some(oe))return Gr.all(e).then(t);t(e)}([o.style,o.elements],function(e){var n=e[0],i=e[1];l.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var a=t.mutableElements();a.length>0&&a.remove(),null!=e&&($(e)||Z(e))&&t.add(e),t.one("layoutready",function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")}).one("layoutstop",function(){t.one("done",r),t.emit("done")});var i=be({},t._private.options.layout);i.eles=t.elements(),t.layout(i).run()}(i,function(){t.startAnimationLoop(),l.ready=!0,G(o.ready)&&t.on("ready",o.ready);for(var e=0;e0,l=!!t.boundingBox,u=tn(l?t.boundingBox:structuredClone(n.extent()));if(ee(t.roots))e=t.roots;else if(Z(t.roots)){for(var c=[],d=0;d0;){var D=B(),_=T(D,P);if(_)D.outgoers().filter(function(e){return e.isNode()&&r.has(e)}).forEach(S);else if(null===_){ot("Detected double maximal shift for node `"+D.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var A=0;if(t.avoidOverlap)for(var M=0;M0&&y[0].length<=3?i/2:0),s=2*Math.PI/y[r].length*a;return 0===r&&1===y[0].length&&(o=1),{x:W+o*Math.cos(s),y:U+o*Math.sin(s)}}var c=y[r].length,d=Math.max(1===c?0:l?(u.w-2*t.padding-H.w)/((t.grid?$:c)-1):(u.w-2*t.padding-H.w)/((t.grid?$:c)+1),A);return{x:W+(a+1-(c+1)/2)*d,y:U+(r+1-(V+1)/2)*G}}(e),u,Q[t.direction])}),this};var Au={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Mu(e){this.options=be({},Au,e)}Mu.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,i=r.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));for(var o,s=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/i.length:t.sweep)/Math.max(1,i.length-1),d=0,h=0;h1&&t.avoidOverlap){d*=1.75;var g=Math.cos(c)-Math.cos(0),y=Math.sin(c)-Math.sin(0),m=Math.sqrt(d*d/(g*g+y*y));o=Math.max(m,o)}return r.nodes().layoutPositions(this,t,function(e,n){var r=t.startAngle+n*c*(a?1:-1),i=o*Math.cos(r),s=o*Math.sin(r);return{x:l+i,y:u+s}}),this};var Ru,Iu={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Nu(e){this.options=be({},Iu,e)}Nu.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,a=t.eles,i=a.nodes().not(":parent"),o=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,l=o.y1+o.h/2,u=[],c=0,d=0;d0)Math.abs(m[0].value-x.value)>=g&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var E=y.length>0&&y[0].length>1,k=(Math.min(o.w,o.h)/2-w)/(y.length+E?1:0);w=Math.min(w,k)}for(var T=0,C=0;C1&&t.avoidOverlap){var D=Math.cos(B)-Math.cos(0),_=Math.sin(B)-Math.sin(0),A=Math.sqrt(w*w/(D*D+_*_));T=Math.max(A,T)}P.r=T,T+=w}if(t.equidistant){for(var M=0,R=0,I=0;I=e.numIter)&&(qu(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature=e.animationThreshold&&i(),Le(c)):(nc(r,e),s())};c()}else{for(;u;)u=o(l),l++;nc(r,e),s()}return this},zu.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},zu.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Ou=function(e,t,n){for(var r=n.eles.edges(),a=n.eles.nodes(),i=tn(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:i.w,clientHeight:i.h,boundingBox:i},s=n.eles.components(),l={},u=0;u0){o.graphSet.push(w);for(u=0;ur.count?0:r.graph},Fu=function(e,t,n,r){var a=r.graphSet[n];if(-10)var s=(u=r.nodeOverlap*o)*a/(v=Math.sqrt(a*a+i*i)),l=u*i/v;else{var u,c=Gu(e,a,i),d=Gu(t,-1*a,-1*i),h=d.x-c.x,f=d.y-c.y,p=h*h+f*f,v=Math.sqrt(p);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/p)*h/v,l=u*f/v}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},Ku=function(e,t,n,r){if(n>0)var a=e.maxX-t.minX;else a=t.maxX-e.minX;if(r>0)var i=e.maxY-t.minY;else i=t.maxY-e.minY;return a>=0&&i>=0?Math.sqrt(a*a+i*i):0},Gu=function(e,t,n){var r=e.positionX,a=e.positionY,i=e.height||1,o=e.width||1,s=n/t,l=i/o,u={};return 0===t&&0n?(u.x=r,u.y=a+i/2,u):0t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=a-o*n/2/t,u):0=l)?(u.x=r+i*t/2/n,u.y=a+i/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-i*t/2/n,u.y=a-i/2,u):u},Zu=function(e,t){for(var n=0;n1){var p=t.gravity*d/f,v=t.gravity*h/f;c.offsetX+=p,c.offsetY+=v}}}}},Qu=function(e,t){var n=[],r=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;r<=a;){var i=n[r++],o=e.idToIndex[i],s=e.layoutNodes[o],l=s.children;if(0n)var a={x:n*e/r,y:n*t/r};else a={x:e,y:t};return a},tc=function(e,t){var n=e.parentId;if(null!=n){var r=t.layoutNodes[t.idToIndex[n]],a=!1;return(null==r.maxX||e.maxX+r.padRight>r.maxX)&&(r.maxX=e.maxX+r.padRight,a=!0),(null==r.minX||e.minX-r.padLeftr.maxY)&&(r.maxY=e.maxY+r.padBottom,a=!0),(null==r.minY||e.minY-r.padTopp&&(d+=f+t.componentSpacing,c=0,h=0,f=0)}}},rc={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function ac(e){this.options=be({},rc,e)}ac.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));var i=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===i.h||0===i.w)r.nodes().layoutPositions(this,t,function(e){return{x:i.x1,y:i.y1}});else{var o=a.size(),s=Math.sqrt(o*i.h/i.w),l=Math.round(s),u=Math.round(i.w/i.h*s),c=function(e){if(null==e)return Math.min(l,u);Math.min(l,u)==l?l=e:u=e},d=function(e){if(null==e)return Math.max(l,u);Math.max(l,u)==l?l=e:u=e},h=t.rows,f=null!=t.cols?t.cols:t.columns;if(null!=h&&null!=f)l=h,u=f;else if(null!=h&&null==f)l=h,u=Math.ceil(o/l);else if(null==h&&null!=f)u=f,l=Math.ceil(o/u);else if(u*l>o){var p=c(),v=d();(p-1)*v>=o?c(p-1):(v-1)*p>=o&&d(v-1)}else for(;u*l=o?d(y+1):c(g+1)}var m=i.w/u,b=i.h/l;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=u&&(A=0,_++)},R={},I=0;I(r=mn(e,t,x[w],x[w+1],x[w+2],x[w+3])))return g(n,r),!0}else if("bezier"===i.edgeType||"multibezier"===i.edgeType||"self"===i.edgeType||"compound"===i.edgeType)for(x=i.allpts,w=0;w+5(r=yn(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return g(n,r),!0;m=m||a.source,b=b||a.target;var E=o.getArrowWidth(l,c),k=[{name:"source",x:i.arrowStartX,y:i.arrowStartY,angle:i.srcArrowAngle},{name:"target",x:i.arrowEndX,y:i.arrowEndY,angle:i.tgtArrowAngle},{name:"mid-source",x:i.midX,y:i.midY,angle:i.midsrcArrowAngle},{name:"mid-target",x:i.midX,y:i.midY,angle:i.midtgtArrowAngle}];for(w=0;w0&&(y(m),y(b))}function b(e,t,n){return pt(e,t,n)}function x(n,r){var a,i=n._private,o=p;a=r?r+"-":"",n.boundingBox();var s=i.labelBounds[r||"main"],l=n.pstyle(a+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=b(i.rscratch,"labelX",r),c=b(i.rscratch,"labelY",r),d=b(i.rscratch,"labelAngle",r),h=n.pstyle(a+"text-margin-x").pfValue,f=n.pstyle(a+"text-margin-y").pfValue,v=s.x1-o-h,y=s.x2+o-h,m=s.y1-o-f,x=s.y2+o-f;if(d){var w=Math.cos(d),E=Math.sin(d),k=function(e,t){return{x:(e-=u)*w-(t-=c)*E+u,y:e*E+t*w+c}},T=k(v,m),C=k(v,x),P=k(y,m),S=k(y,x),B=[T.x+h,T.y+f,P.x+h,P.y+f,S.x+h,S.y+f,C.x+h,C.y+f];if(bn(e,t,B))return g(n),!0}else if(un(s,e,t))return g(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){var a=this.getCachedZSortedEles().interactive,i=2/this.cy.zoom(),o=[],s=Math.min(e,n),u=Math.max(e,n),c=Math.min(t,r),d=Math.max(t,r),h=tn({x1:e=s,y1:t=c,x2:n=u,y2:r=d}),f=[{x:h.x1,y:h.y1},{x:h.x2,y:h.y1},{x:h.x2,y:h.y2},{x:h.x1,y:h.y2}],p=[[f[0],f[1]],[f[1],f[2]],[f[2],f[3]],[f[3],f[0]]];function v(e,t,n){return pt(e,t,n)}function g(e,t){var n=e._private,r=i;e.boundingBox();var a=n.labelBounds.main;if(!a)return null;var o=v(n.rscratch,"labelX",t),s=v(n.rscratch,"labelY",t),l=v(n.rscratch,"labelAngle",t),u=e.pstyle("text-margin-x").pfValue,c=e.pstyle("text-margin-y").pfValue,d=a.x1-r-u,h=a.x2+r-u,f=a.y1-r-c,p=a.y2+r-c;if(l){var g=Math.cos(l),y=Math.sin(l),m=function(e,t){return{x:(e-=o)*g-(t-=s)*y+o,y:e*y+t*g+s}};return[m(d,f),m(h,f),m(h,p),m(d,p)]}return[{x:d,y:f},{x:h,y:f},{x:h,y:p},{x:d,y:p}]}function y(e,t,n,r){function a(e,t,n){return(n.y-e.y)*(t.x-e.x)>(t.y-e.y)*(n.x-e.x)}return a(e,n,r)!==a(t,n,r)&&a(e,t,n)!==a(e,t,r)}for(var m=0;m0?-(Math.PI-i.ang):Math.PI+i.ang),zc(t,n,Lc),xc=Nc.nx*Lc.ny-Nc.ny*Lc.nx,wc=Nc.nx*Lc.nx-Nc.ny*-Lc.ny,Tc=Math.asin(Math.max(-1,Math.min(1,xc))),Math.abs(Tc)<1e-6)return mc=t.x,bc=t.y,void(Pc=Bc=0);Ec=1,kc=!1,wc<0?Tc<0?Tc=Math.PI+Tc:(Tc=Math.PI-Tc,Ec=-1,kc=!0):Tc>0&&(Ec=-1,kc=!0),Bc=void 0!==t.radius?t.radius:r,Cc=Tc/2,Dc=Math.min(Nc.len/2,Lc.len/2),a?(Sc=Math.abs(Math.cos(Cc)*Bc/Math.sin(Cc)))>Dc?(Sc=Dc,Pc=Math.abs(Sc*Math.sin(Cc)/Math.cos(Cc))):Pc=Bc:(Sc=Math.min(Dc,Bc),Pc=Math.abs(Sc*Math.sin(Cc)/Math.cos(Cc))),Mc=t.x+Lc.nx*Sc,Rc=t.y+Lc.ny*Sc,mc=Mc-Lc.ny*Pc*Ec,bc=Rc+Lc.nx*Pc*Ec,_c=t.x+Nc.nx*Sc,Ac=t.y+Nc.ny*Sc,Ic=t};function Vc(e,t){0===t.radius?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function Fc(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return 0===r||0===t.radius?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(Oc(e,t,n,r,a),{cx:mc,cy:bc,radius:Pc,startX:_c,startY:Ac,stopX:Mc,stopY:Rc,startAngle:Nc.ang+Math.PI/2*Ec,endAngle:Lc.ang-Math.PI/2*Ec,counterClockwise:kc})}var Xc=.01,jc=Math.sqrt(.02),Yc={};function qc(e){var t=[];if(null!=e){for(var n=0;n0?Math.max(e-t,0):Math.min(e+t,0)},S=P(T,E),B=P(C,k),D=!1;"auto"===g?v=Math.abs(S)>Math.abs(B)?a:r:g===l||g===s?(v=r,D=!0):g!==i&&g!==o||(v=a,D=!0);var _,A=v===r,M=A?B:S,R=A?C:T,I=Kt(R),N=!1;(D&&(m||x)||!(g===s&&R<0||g===l&&R>0||g===i&&R>0||g===o&&R<0)||(M=(I*=-1)*Math.abs(M),N=!0),m)?_=(b<0?1+b:b)*M:_=(b<0?M:0)+b*I;var L=function(e){return Math.abs(e)=Math.abs(M)},z=L(_),O=L(Math.abs(M)-Math.abs(_));if((z||O)&&!N)if(A){var V=Math.abs(R)<=d/2,F=Math.abs(T)<=h/2;if(V){var X=(u.x1+u.x2)/2,j=u.y1,Y=u.y2;n.segpts=[X,j,X,Y]}else if(F){var q=(u.y1+u.y2)/2,W=u.x1,U=u.x2;n.segpts=[W,q,U,q]}else n.segpts=[u.x1,u.y2]}else{var H=Math.abs(R)<=c/2,K=Math.abs(C)<=f/2;if(H){var G=(u.y1+u.y2)/2,Z=u.x1,$=u.x2;n.segpts=[Z,G,$,G]}else if(K){var Q=(u.x1+u.x2)/2,J=u.y1,ee=u.y2;n.segpts=[Q,J,Q,ee]}else n.segpts=[u.x2,u.y1]}else if(A){var te=u.y1+_+(p?d/2*I:0),ne=u.x1,re=u.x2;n.segpts=[ne,te,re,te]}else{var ae=u.x1+_+(p?c/2*I:0),ie=u.y1,oe=u.y2;n.segpts=[ae,ie,ae,oe]}if(n.isRound){var se=e.pstyle("taxi-radius").value,le="arc-radius"===e.pstyle("radius-type").value[0];n.radii=new Array(n.segpts.length/2).fill(se),n.isArcRadius=new Array(n.segpts.length/2).fill(le)}},Yc.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,a=t.tgtPos,i=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,d=t.srcCornerRadius,h=t.tgtCornerRadius,f=t.srcRs,p=t.tgtRs,v=!Q(n.startX)||!Q(n.startY),g=!Q(n.arrowStartX)||!Q(n.arrowStartY),y=!Q(n.endX)||!Q(n.endY),m=!Q(n.arrowEndX)||!Q(n.arrowEndY),b=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),x=Gt({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),w=xv.poolIndex()){var g=p;p=v,v=g}var y=d.srcPos=p.position(),m=d.tgtPos=v.position(),b=d.srcW=p.outerWidth(),x=d.srcH=p.outerHeight(),E=d.tgtW=v.outerWidth(),k=d.tgtH=v.outerHeight(),T=d.srcShape=n.nodeShapes[t.getNodeShape(p)],C=d.tgtShape=n.nodeShapes[t.getNodeShape(v)],P=d.srcCornerRadius="auto"===p.pstyle("corner-radius").value?"auto":p.pstyle("corner-radius").pfValue,S=d.tgtCornerRadius="auto"===v.pstyle("corner-radius").value?"auto":v.pstyle("corner-radius").pfValue,B=d.tgtRs=v._private.rscratch,D=d.srcRs=p._private.rscratch;d.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var _=0;_=jc||(q=Math.sqrt(Math.max(Y*Y,Xc)+Math.max(j*j,Xc)));var W=d.vector={x:Y,y:j},U=d.vectorNorm={x:W.x/q,y:W.y/q},H={x:-U.y,y:U.x};d.nodesOverlap=!Q(q)||C.checkPoint(L[0],L[1],0,E,k,m.x,m.y,S,B)||T.checkPoint(O[0],O[1],0,b,x,y.x,y.y,P,D),d.vectorNormInverse=H,e={nodesOverlap:d.nodesOverlap,dirCounts:d.dirCounts,calculatedIntersection:!0,hasBezier:d.hasBezier,hasUnbundled:d.hasUnbundled,eles:d.eles,srcPos:m,srcRs:B,tgtPos:y,tgtRs:D,srcW:E,srcH:k,tgtW:b,tgtH:x,srcIntn:V,tgtIntn:z,srcShape:C,tgtShape:T,posPts:{x1:X.x2,y1:X.y2,x2:X.x1,y2:X.y1},intersectionPts:{x1:F.x2,y1:F.y2,x2:F.x1,y2:F.y1},vector:{x:-W.x,y:-W.y},vectorNorm:{x:-U.x,y:-U.y},vectorNormInverse:{x:-H.x,y:-H.y}}}var K=N?e:d;M.nodesOverlap=K.nodesOverlap,M.srcIntn=K.srcIntn,M.tgtIntn=K.tgtIntn,M.isRound=R.startsWith("round"),r&&(p.isParent()||p.isChild()||v.isParent()||v.isChild())&&(p.parents().anySame(v)||v.parents().anySame(p)||p.same(v)&&p.isParent())?t.findCompoundLoopPoints(A,K,_,I):p===v?t.findLoopPoints(A,K,_,I):R.endsWith("segments")?t.findSegmentsPoints(A,K):R.endsWith("taxi")?t.findTaxiPoints(A,K):"straight"===R||!I&&d.eles.length%2==1&&_===Math.floor(d.eles.length/2)?t.findStraightEdgePoints(A):t.findBezierPoints(A,K,_,I,N),t.findEndpoints(A),t.tryToCorrectInvalidPoints(A,K),t.checkForInvalidEdgeWarning(A),t.storeAllpts(A),t.storeEdgeProjections(A),t.calculateArrowAngles(A),t.recalculateEdgeLabelProjections(A),t.calculateLabelAngles(A)}},w=0;w0){var J=f,ee=Zt(J,Wt(i)),te=Zt(J,Wt($)),ne=ee;if(te2)Zt(J,{x:$[2],y:$[3]})0){var ge=p,ye=Zt(ge,Wt(i)),me=Zt(ge,Wt(ve)),be=ye;if(me2)Zt(ge,{x:ve[2],y:ve[3]})=u||m){c={cp:v,segment:y};break}}if(c)break}var b=c.cp,x=c.segment,w=(u-h)/x.length,E=x.t1-x.t0,k=s?x.t0+E*w:x.t1-E*w;k=en(0,k,1),t=Jt(b.p0,b.p1,b.p2,k),a=function(e,t,n,r){var a=en(0,r-.001,1),i=en(0,r+.001,1),o=Jt(e,t,n,a),s=Jt(e,t,n,i);return Zc(o,s)}(b.p0,b.p1,b.p2,k);break;case"straight":case"segments":case"haystack":for(var T,C,P,S,B=0,D=r.allpts.length,_=0;_+3=u));_+=2);var A=(u-C)/T;A=en(0,A,1),t=function(e,t,n,r){var a=t.x-e.x,i=t.y-e.y,o=Gt(e,t),s=a/o,l=i/o;return n=null==n?0:n,r=null!=r?r:n*o,{x:e.x+s*r,y:e.y+l*r}}(P,S,A),a=Zc(P,S)}o("labelX",n,t.x),o("labelY",n,t.y),o("labelAutoAngle",n,a)}};u("source"),u("target"),this.applyLabelDimensions(e)}},Kc.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},Kc.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),a=Ue(r,e._private.labelDimsKey);if(pt(n.rscratch,"prefixedLabelDimsKey",t)!==a){vt(n.rscratch,"prefixedLabelDimsKey",t,a);var i=this.calculateLabelDimensions(e,r),o=e.pstyle("line-height").pfValue,s=e.pstyle("text-wrap").strValue,l=pt(n.rscratch,"labelWrapCachedLines",t)||[],u="wrap"!==s?1:Math.max(l.length,1),c=i.height/u,d=c*o,h=i.width,f=i.height+(u-1)*(o-1)*c;vt(n.rstyle,"labelWidth",t,h),vt(n.rscratch,"labelWidth",t,h),vt(n.rstyle,"labelHeight",t,f),vt(n.rscratch,"labelHeight",t,f),vt(n.rscratch,"labelLineHeight",t,d)}},Kc.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",a=e.pstyle(r+"label").strValue,i=e.pstyle("text-transform").value,s=function(e,r){return r?(vt(n.rscratch,e,t,r),r):pt(n.rscratch,e,t)};if(!a)return"";"none"==i||("uppercase"==i?a=a.toUpperCase():"lowercase"==i&&(a=a.toLowerCase()));var l=e.pstyle("text-wrap").value;if("wrap"===l){var u=s("labelKey");if(null!=u&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var c=a.split("\n"),d=e.pstyle("text-max-width").pfValue,h="anywhere"===e.pstyle("text-overflow-wrap").value,f=[],p=/[\s\u200b]+|$/g,v=0;vd){var b,x="",w=0,E=o(g.matchAll(p));try{for(E.s();!(b=E.n()).done;){var k=b.value,T=k[0],C=g.substring(w,k.index);w=k.index+T.length;var P=0===x.length?C:x+C+T;this.calculateLabelDimensions(e,P).width<=d?x+=C+T:(x&&f.push(x),x=C+T)}}catch(A){E.e(A)}finally{E.f()}x.match(/^[\s\u200b]+$/)||f.push(x)}else f.push(g)}s("labelWrapCachedLines",f),a=s("labelWrapCachedText",f.join("\n")),s("labelWrapKey",u)}else if("ellipsis"===l){var S=e.pstyle("text-max-width").pfValue,B="",D=!1;if(this.calculateLabelDimensions(e,a).widthS)break;B+=a[_],_===a.length-1&&(D=!0)}return D||(B+="\u2026"),B}return a},Kc.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},Kc.calculateLabelDimensions=function(e,t){var n=this.cy.window().document,r=e.pstyle("font-style").strValue,a=e.pstyle("font-size").pfValue,i=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,s=this.labelCalcCanvas,l=this.labelCalcCanvasContext;if(!s){s=this.labelCalcCanvas=n.createElement("canvas"),l=this.labelCalcCanvasContext=s.getContext("2d");var u=s.style;u.position="absolute",u.left="-9999px",u.top="-9999px",u.zIndex="-1",u.visibility="hidden",u.pointerEvents="none"}l.font="".concat(r," ").concat(o," ").concat(a,"px ").concat(i);for(var c=0,d=0,h=t.split("\n"),f=0;f1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r=e.desktopTapThreshold2}var P=a(t);g&&(e.hoverData.tapholdCancelled=!0);n=!0,r(v,["mousemove","vmousemove","tapdrag"],t,{x:c[0],y:c[1]});var S=function(e){return{originalEvent:t,type:e,position:{x:c[0],y:c[1]}}},B=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit(S("boxstart")),p[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(g){var D=S("cxtdrag");b?b.emit(D):o.emit(D),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&v===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(S("cxtdragout")),e.hoverData.cxtOver=v,v&&v.emit(S("cxtdragover")))}}else if(e.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var _;if(e.hoverData.justStartedPan){var A=e.hoverData.mdownPos;_={x:(c[0]-A[0])*s,y:(c[1]-A[1])*s},e.hoverData.justStartedPan=!1}else _={x:x[0]*s,y:x[1]*s};o.panBy(_),o.emit(S("dragpan")),e.hoverData.dragged=!0}c=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=p[4]||null!=b&&!b.pannable()){if(b&&b.pannable()&&b.active()&&b.unactivate(),b&&b.grabbed()||v==y||(y&&r(y,["mouseout","tapdragout"],t,{x:c[0],y:c[1]}),v&&r(v,["mouseover","tapdragover"],t,{x:c[0],y:c[1]}),e.hoverData.last=v),b)if(g){if(o.boxSelectionEnabled()&&P)b&&b.grabbed()&&(d(w),b.emit(S("freeon")),w.emit(S("free")),e.dragData.didDrag&&(b.emit(S("dragfreeon")),w.emit(S("dragfree")))),B();else if(b&&b.grabbed()&&e.nodeIsDraggable(b)){var M=!e.dragData.didDrag;M&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||u(w,{inDragLayer:!0});var R={x:0,y:0};if(Q(x[0])&&Q(x[1])&&(R.x+=x[0],R.y+=x[1],M)){var I=e.hoverData.dragDelta;I&&Q(I[0])&&Q(I[1])&&(R.x+=I[0],R.y+=I[1])}e.hoverData.draggingEles=!0,w.silentShift(R).emit(S("position")).emit(S("drag")),e.redrawHint("drag",!0),e.redraw()}}else!function(){var t=e.hoverData.dragDelta=e.hoverData.dragDelta||[];0===t.length?(t.push(x[0]),t.push(x[1])):(t[0]+=x[0],t[1]+=x[1])}();n=!0}else if(g){if(e.hoverData.dragging||!o.boxSelectionEnabled()||!P&&o.panningEnabled()&&o.userPanningEnabled()){if(!e.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()){i(b,e.hoverData.downs)&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,p[4]=0,e.data.bgActivePosistion=Wt(h),e.redrawHint("select",!0),e.redraw())}}else B();b&&b.pannable()&&b.active()&&b.unactivate()}return p[2]=c[0],p[3]=c[1],n?(t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),!1):void 0}},!1),e.registerBinding(t,"mouseup",function(t){if((1!==e.hoverData.which||1===t.which||!e.hoverData.capture)&&e.hoverData.capture){e.hoverData.capture=!1;var i=e.cy,o=e.projectIntoViewport(t.clientX,t.clientY),s=e.selection,l=e.findNearestElement(o[0],o[1],!0,!1),u=e.dragData.possibleDragElements,c=e.hoverData.down,h=a(t);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,c&&c.unactivate();var f=function(e){return{originalEvent:t,type:e,position:{x:o[0],y:o[1]}}};if(3===e.hoverData.which){var p=f("cxttapend");if(c?c.emit(p):i.emit(p),!e.hoverData.cxtDragged){var v=f("cxttap");c?c.emit(v):i.emit(v)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(1===e.hoverData.which){if(r(l,["mouseup","tapend","vmouseup"],t,{x:o[0],y:o[1]}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||(r(c,["click","tap","vclick"],t,{x:o[0],y:o[1]}),x=!1,t.timeStamp-w<=i.multiClickDebounceTime()?(b&&clearTimeout(b),x=!0,w=null,r(c,["dblclick","dbltap","vdblclick"],t,{x:o[0],y:o[1]})):(b=setTimeout(function(){x||r(c,["oneclick","onetap","voneclick"],t,{x:o[0],y:o[1]})},i.multiClickDebounceTime()),w=t.timeStamp)),null!=c||e.dragData.didDrag||e.hoverData.selecting||e.hoverData.dragged||a(t)||(i.$(n).unselect(["tapunselect"]),u.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=i.collection()),l!=c||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===i.selectionType()||h?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):h||(i.$(n).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var g=i.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),g.length>0&&e.redrawHint("eles",!0),i.emit(f("boxend"));var y=function(e){return e.selectable()&&!e.selected()};"additive"===i.selectionType()||h||i.$(n).unmerge(g).unselect(),g.emit(f("box")).stdFilter(y).select().emit(f("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var m=c&&c.grabbed();d(u),m&&(c.emit(f("freeon")),u.emit(f("free")),e.dragData.didDrag&&(c.emit(f("dragfreeon")),u.emit(f("dragfree"))))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}},!1);var k,T,C,P,S,B,D,_,A,M,R,I,N,L,z=[],O=1e5,V=function(t){var n=!1,r=t.deltaY;if(null==r&&(null!=t.wheelDeltaY?r=t.wheelDeltaY/4:null!=t.wheelDelta&&(r=t.wheelDelta/4)),0!==r){if(null==k)if(z.length>=4){var a=z;if(k=function(e,t){for(var n=0;n5}if(k)for(var o=0;o5&&(r=5*Kt(r)),h=r/-250,k&&(h/=O,h*=3),h*=e.wheelSensitivity,1===t.deltaMode&&(h*=33);var f=s.zoom()*Math.pow(10,h);"gesturechange"===t.type&&(f=e.gestureStartZoom*t.scale),s.zoom({level:f,renderedPosition:{x:d[0],y:d[1]}}),s.emit({type:"gesturechange"===t.type?"pinchzoom":"scrollzoom",originalEvent:t,position:{x:c[0],y:c[1]}})}}}};e.registerBinding(e.container,"wheel",V,!0),e.registerBinding(t,"scroll",function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},!0),e.registerBinding(e.container,"gesturestart",function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()},!0),e.registerBinding(e.container,"gesturechange",function(t){e.hasTouchStarted||V(t)},!0),e.registerBinding(e.container,"mouseout",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})},!1),e.registerBinding(e.container,"mouseover",function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})},!1);var F,X,j,Y,q,W,U,H=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},K=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",F=function(t){if(e.hasTouchStarted=!0,m(t)){f(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var n=e.cy,a=e.touchData.now,i=e.touchData.earlier;if(t.touches[0]){var o=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);a[0]=o[0],a[1]=o[1]}if(t.touches[1]){o=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);a[2]=o[0],a[3]=o[1]}if(t.touches[2]){o=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);a[4]=o[0],a[5]=o[1]}var l=function(e){return{originalEvent:t,type:e,position:{x:a[0],y:a[1]}}};if(t.touches[1]){e.touchData.singleTouchMoved=!0,d(e.dragData.touchDragEles);var h=e.findContainerClientCoords();M=h[0],R=h[1],I=h[2],N=h[3],T=t.touches[0].clientX-M,C=t.touches[0].clientY-R,P=t.touches[1].clientX-M,S=t.touches[1].clientY-R,L=0<=T&&T<=I&&0<=P&&P<=I&&0<=C&&C<=N&&0<=S&&S<=N;var p=n.pan(),v=n.zoom();B=H(T,C,P,S),D=K(T,C,P,S),A=[((_=[(T+P)/2,(C+S)/2])[0]-p.x)/v,(_[1]-p.y)/v];if(D<4e4&&!t.touches[2]){var g=e.findNearestElement(a[0],a[1],!0,!0),y=e.findNearestElement(a[2],a[3],!0,!0);return g&&g.isNode()?(g.activate().emit(l("cxttapstart")),e.touchData.start=g):y&&y.isNode()?(y.activate().emit(l("cxttapstart")),e.touchData.start=y):n.emit(l("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])n.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var b=e.findNearestElements(a[0],a[1],!0,!0),x=b[0];if(null!=x&&(x.activate(),e.touchData.start=x,e.touchData.starts=b,e.nodeIsGrabbable(x))){var w=e.dragData.touchDragEles=n.collection(),E=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),x.selected()?(E=n.$(function(t){return t.selected()&&e.nodeIsGrabbable(t)}),u(E,{addToList:w})):c(x,{addToList:w}),s(x),x.emit(l("grabon")),E?E.forEach(function(e){e.emit(l("grab"))}):x.emit(l("grab"))}r(x,["touchstart","tapstart","vmousedown"],t,{x:a[0],y:a[1]}),null==x&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||r(e.touchData.start,["taphold"],t,{x:a[0],y:a[1]})},e.tapholdDuration)}if(t.touches.length>=1){for(var k=e.touchData.startPosition=[null,null,null,null,null,null],z=0;z=e.touchTapThreshold2}if(n&&e.touchData.cxt){t.preventDefault();var E=t.touches[0].clientX-M,k=t.touches[0].clientY-R,_=t.touches[1].clientX-M,I=t.touches[1].clientY-R,N=K(E,k,_,I);if(N/D>=2.25||N>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var z=p("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(z),e.touchData.start=null):o.emit(z)}}if(n&&e.touchData.cxt){z=p("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(z):o.emit(z),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var O=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&O===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit(p("cxtdragout")),e.touchData.cxtOver=O,O&&O.emit(p("cxtdragover")))}else if(n&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit(p("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,a[4]=1,a&&0!==a.length&&void 0!==a[0]?(a[2]=(s[0]+s[2]+s[4])/3,a[3]=(s[1]+s[3]+s[5])/3):(a[0]=(s[0]+s[2]+s[4])/3,a[1]=(s[1]+s[3]+s[5])/3,a[2]=(s[0]+s[2]+s[4])/3+1,a[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(n&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),te=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var V=0;V0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(t,"touchcancel",j=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(t,"touchend",Y=function(t){var a=e.touchData.start;if(e.touchData.capture){0===t.touches.length&&(e.touchData.capture=!1),t.preventDefault();var i=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o=e.cy,s=o.zoom(),l=e.touchData.now,u=e.touchData.earlier;if(t.touches[0]){var c=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);l[0]=c[0],l[1]=c[1]}if(t.touches[1]){c=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);l[2]=c[0],l[3]=c[1]}if(t.touches[2]){c=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);l[4]=c[0],l[5]=c[1]}var h,f=function(e){return{originalEvent:t,type:e,position:{x:l[0],y:l[1]}}};if(a&&a.unactivate(),e.touchData.cxt){if(h=f("cxttapend"),a?a.emit(h):o.emit(h),!e.touchData.cxtDragged){var p=f("cxttap");a?a.emit(p):o.emit(p)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!t.touches[2]&&o.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var v=o.collection(e.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,e.redrawHint("select",!0),o.emit(f("boxend"));v.emit(f("box")).stdFilter(function(e){return e.selectable()&&!e.selected()}).select().emit(f("boxselect")),v.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=a&&a.unactivate(),t.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(t.touches[1]);else if(t.touches[0]);else if(!t.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var g=e.dragData.touchDragEles;if(null!=a){var y=a._private.grabbed;d(g),e.redrawHint("drag",!0),e.redrawHint("eles",!0),y&&(a.emit(f("freeon")),g.emit(f("free")),e.dragData.didDrag&&(a.emit(f("dragfreeon")),g.emit(f("dragfree")))),r(a,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]}),a.unactivate(),e.touchData.start=null}else{var m=e.findNearestElement(l[0],l[1],!0,!0);r(m,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]})}var b=e.touchData.startPosition[0]-l[0],x=b*b,w=e.touchData.startPosition[1]-l[1],E=(x+w*w)*s*s;e.touchData.singleTouchMoved||(a||o.$(":selected").unselect(["tapunselect"]),r(a,["tap","vclick"],t,{x:l[0],y:l[1]}),q=!1,t.timeStamp-U<=o.multiClickDebounceTime()?(W&&clearTimeout(W),q=!0,U=null,r(a,["dbltap","vdblclick"],t,{x:l[0],y:l[1]})):(W=setTimeout(function(){q||r(a,["onetap","voneclick"],t,{x:l[0],y:l[1]})},o.multiClickDebounceTime()),U=t.timeStamp)),null!=a&&!e.dragData.didDrag&&a._private.selectable&&E2){for(var f=[c[0],c[1]],p=Math.pow(f[0]-e,2)+Math.pow(f[1]-t,2),v=1;v0)return v[0]}return null},f=Object.keys(d),p=0;p0?u:pn(a,i,e,t,n,r,o,s)},checkPoint:function(e,t,n,r,a,i,o,s){var l=2*(s="auto"===s?Rn(r,a):s);if(xn(e,t,this.points,i,o,r,a-l,[0,-1],n))return!0;if(xn(e,t,this.points,i,o,r-l,a,[0,-1],n))return!0;var u=r/2+2*n,c=a/2+2*n;return!!bn(e,t,[i-u,o-c,i-u,o,i+u,o,i+u,o-c])||(!!kn(e,t,l,l,i+r/2-s,o+a/2-s,n)||!!kn(e,t,l,l,i-r/2+s,o+a/2-s,n))}}},ad.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",_n(3,0)),this.generateRoundPolygon("round-triangle",_n(3,0)),this.generatePolygon("rectangle",_n(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",_n(5,0)),this.generateRoundPolygon("round-pentagon",_n(5,0)),this.generatePolygon("hexagon",_n(6,0)),this.generateRoundPolygon("round-hexagon",_n(6,0)),this.generatePolygon("heptagon",_n(7,0)),this.generateRoundPolygon("round-heptagon",_n(7,0)),this.generatePolygon("octagon",_n(8,0)),this.generateRoundPolygon("round-octagon",_n(8,0));var r=new Array(20),a=Mn(5,0),i=Mn(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*v)break}else if(a){if(f>=e.deqCost*l||f>=e.deqAvgCost*s)break}else if(p>=e.deqNoDrawCost*ud)break;var g=e.deq(t,d,c);if(!(g.length>0))break;for(var y=0;y0&&(e.onDeqd(t,u),!a&&e.shouldRedraw(t,u,d,c)&&r())},a(t))}}},dd=function(){return i(function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:tt;a(this,e),this.idsByKey=new gt,this.keyForId=new gt,this.cachesByLvl=new gt,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=n},[{key:"getIdsFor",value:function(e){null==e&&at("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new mt,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new gt,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach(function(n){return t.deleteCache(e,n)})}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}])}(),hd=7.99,fd={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},pd=dt({getKey:null,doesEleInvalidateKey:tt,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:et,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),vd=function(e,t){var n=this;n.renderer=e,n.onDequeues=[];var r=pd(t);be(n,r),n.lookup=new dd(r.getKey,r.doesEleInvalidateKey),n.setupDequeueing()},gd=vd.prototype;gd.reasons=fd,gd.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},gd.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},gd.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new Dt(function(e,t){return t.reqs-e.reqs})},gd.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},gd.getElement=function(e,t,n,r,a){var i=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!i.allowEdgeTxrCaching&&e.isEdge()||!i.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(Ht(s*n))),r<-4)r=-4;else if(s>=7.99||r>3)return null;var u=Math.pow(2,r),c=t.h*u,d=t.w*u,h=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,h))return null;var f,p=l.get(e,r);if(p&&p.invalidated&&(p.invalidated=!1,p.texture.invalidatedWidth-=p.width),p)return p;if(f=c<=25?25:c<=50?50:50*Math.ceil(c/50),c>1024||d>1024)return null;var v=i.getTextureQueue(f),g=v[v.length-2],y=function(){return i.recycleTexture(f,d)||i.addTexture(f,d)};g||(g=v[v.length-1]),g||(g=y()),g.width-g.usedWidthr;S--)C=i.getElement(e,t,n,S,fd.downscale);P()}else{var B;if(!x&&!w&&!E)for(var D=r-1;D>=-4;D--){var _=l.get(e,D);if(_){B=_;break}}if(b(B))return i.queueElement(e,r),B;g.context.translate(g.usedWidth,0),g.context.scale(u,u),this.drawElement(g.context,e,t,h,!1),g.context.scale(1/u,1/u),g.context.translate(-g.usedWidth,0)}return p={x:g.usedWidth,texture:g,level:r,scale:u,width:d,height:c,scaledLabelShown:h},g.usedWidth+=Math.ceil(d+8),g.eleCaches.push(p),l.set(e,r,p),i.checkTextureFullness(g),p},gd.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},gd.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?ht(t,e):e.fullnessChecks++},gd.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;ht(n,e),e.retired=!0;for(var a=e.eleCaches,i=0;i=t)return i.retired=!1,i.usedWidth=0,i.invalidatedWidth=0,i.fullnessChecks=0,ft(i.eleCaches),i.context.setTransform(1,0,0,1,0,0),i.context.clearRect(0,0,i.width,i.height),ht(r,i),n.push(i),i}},gd.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),a=this.getKey(e),i=r[a];if(i)i.level=Math.max(i.level,t),i.eles.merge(e),i.reqs++,n.updateItem(i);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(o),r[a]=o}},gd.dequeue=function(e){for(var t=this,n=t.getElementQueue(),r=t.getElementKeyToQueue(),a=[],i=t.lookup,o=0;o<1&&n.size()>0;o++){var s=n.pop(),l=s.key,u=s.eles[0],c=i.hasCache(u,s.level);if(r[l]=null,!c){a.push(s);var d=t.getBoundingBox(u);t.getElement(u,d,e,s.level,fd.dequeue)}}return a},gd.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),a=n[r];null!=a&&(1===a.eles.length?(a.reqs=Je,t.updateItem(a),t.pop(),n[r]=null):a.eles.unmerge(e))},gd.onDequeue=function(e){this.onDequeues.push(e)},gd.offDequeue=function(e){ht(this.onDequeues,e)},gd.setupDequeueing=cd({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},a=function(e){if(!s)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};a(1),a(-1);for(var i=c.length-1;i>=0;i--){var o=c[i];o.invalid&&ht(c,o)}}();var d=function(t){var a=(t=t||{}).after;!function(){if(!o){o=tn();for(var t=0;t32767||s>32767)return null;if(i*s>16e6)return null;var l=r.makeLayer(o,n);if(null!=a){var d=c.indexOf(a)+1;c.splice(d,0,l)}else(void 0===t.insert||t.insert)&&c.unshift(l);return l};if(r.skipping&&!i)return null;for(var h=null,f=e.length/1,p=!i,v=0;v=f||!dn(h.bb,g.boundingBox()))&&!(h=d({insert:!0,after:h})))return null;s||p?r.queueLayer(h,g):r.drawEleInLayer(h,g,n,t),h.eles.push(g),m[n]=h}}return s||(p?null:c)},md.getEleLevelForLayerLevel=function(e,t){return e},md.drawEleInLayer=function(e,t,n,r){var a=this.renderer,i=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),a.setImgSmoothing(i,!1),a.drawCachedElement(i,t,null,null,n,true),a.setImgSmoothing(i,!0))},md.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,a=0;a0)return!1;if(i.invalid)return!1;r+=i.eles.length}return r===t.length},md.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},md.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=ze(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,function(e,n,r){t.invalidateLayer(e)}))},md.invalidateLayer=function(e){if(this.lastInvalidationTime=ze(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];ht(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var a=0;a3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!i||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=i?t.pstyle("opacity").value:1,c=i?t.pstyle("line-opacity").value:1,d=t.pstyle("curve-style").value,h=t.pstyle("line-style").value,f=t.pstyle("width").pfValue,p=t.pstyle("line-cap").value,v=t.pstyle("line-outline-width").value,g=t.pstyle("line-outline-color").value,y=u*c,m=u*c,b=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;"straight-triangle"===d?(o.eleStrokeStyle(e,t,n),o.drawEdgeTrianglePath(t,e,s.allpts)):(e.lineWidth=f,e.lineCap=p,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")},x=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;o.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var w=t.pstyle("ghost-offset-x").pfValue,E=t.pstyle("ghost-offset-y").pfValue,k=t.pstyle("ghost-opacity").value,T=y*k;e.translate(w,E),b(T),x(T),e.translate(-w,-E)}else!function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;e.lineWidth=f+v,e.lineCap=p,v>0?(o.colorStrokeStyle(e,g[0],g[1],g[2],n),"straight-triangle"===d?o.drawEdgeTrianglePath(t,e,s.allpts):(o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")):e.lineCap="butt"}();a&&o.drawEdgeUnderlay(e,t),b(),x(),a&&o.drawEdgeOverlay(e,t),o.drawElementText(e,t,null,r),n&&e.translate(l.x1,l.y1)}}},Ld=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n){if(n.visible()){var r=n.pstyle("".concat(e,"-opacity")).value;if(0!==r){var a=this,i=a.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(e,"-padding")).pfValue,l=n.pstyle("".concat(e,"-color")).value;t.lineWidth=s,"self"!==o.edgeType||i?t.lineCap="round":t.lineCap="butt",a.colorStrokeStyle(t,l[0],l[1],l[2],r),a.drawEdgePath(n,t,o.allpts,"solid")}}}};Nd.drawEdgeOverlay=Ld("overlay"),Nd.drawEdgeUnderlay=Ld("underlay"),Nd.drawEdgePath=function(e,t,n,r){var a,i=e._private.rscratch,s=t,l=!1,u=this.usePaths(),c=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var h=n.join("$");i.pathCacheKey&&i.pathCacheKey===h?(a=t=i.pathCache,l=!0):(a=t=new Path2D,i.pathCacheKey=h,i.pathCache=a)}if(s.setLineDash)switch(r){case"dotted":s.setLineDash([1,1]);break;case"dashed":s.setLineDash(c),s.lineDashOffset=d;break;case"solid":s.setLineDash([])}if(!l&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var f=2;f+35&&void 0!==arguments[5]?arguments[5]:5,o=Math.min(i,r/2,a/2);e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.quadraticCurveTo(t+r,n,t+r,n+o),e.lineTo(t+r,n+a-o),e.quadraticCurveTo(t+r,n+a,t+r-o,n+a),e.lineTo(t+o,n+a),e.quadraticCurveTo(t,n+a,t,n+a-o),e.lineTo(t,n+o),e.quadraticCurveTo(t,n,t+o,n),e.closePath()}Od.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),a=Math.ceil(Ht(n*r));t=Math.pow(2,a)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(i&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t);e.textAlign=l,e.textBaseline="bottom"}else{var u=t.element()._private.rscratch.badLine,c=t.pstyle("label"),d=t.pstyle("source-label"),h=t.pstyle("target-label");if(u||(!c||!c.value)&&(!d||!d.value)&&(!h||!h.value))return;e.textAlign="center",e.textBaseline="bottom"}var f,p=!n;n&&(f=n,e.translate(-f.x1,-f.y1)),null==a?(o.drawText(e,t,null,p,i),t.isEdge()&&(o.drawText(e,t,"source",p,i),o.drawText(e,t,"target",p,i))):o.drawText(e,t,a,p,i),n&&e.translate(f.x1,f.y1)},Od.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,a=t.pstyle("font-size").pfValue+"px",i=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+a+" "+i,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},Od.getTextAngle=function(e,t){var n,r=e._private.rscratch,a=t?t+"-":"",i=e.pstyle(a+"text-rotation");if("autorotate"===i.strValue){var o=pt(r,"labelAngle",t);n=e.isEdge()?o:0}else n="none"===i.strValue?0:i.pfValue;return n},Od.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=t._private.rscratch,o=a?t.effectiveOpacity():1;if(!a||0!==o&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var s,l,u=pt(i,"labelX",n),c=pt(i,"labelY",n),d=this.getLabelText(t,n);if(null!=d&&""!==d&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(e,t,a);var h,f=n?n+"-":"",p=pt(i,"labelWidth",n),v=pt(i,"labelHeight",n),g=t.pstyle(f+"text-margin-x").pfValue,y=t.pstyle(f+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle("text-halign").value,x=t.pstyle("text-valign").value;switch(m&&(b="center",x="center"),u+=g,c+=y,0!==(h=r?this.getTextAngle(t,n):0)&&(s=u,l=c,e.translate(s,l),e.rotate(h),u=0,c=0),x){case"top":break;case"center":c+=v/2;break;case"bottom":c+=v}var w=t.pstyle("text-background-opacity").value,E=t.pstyle("text-border-opacity").value,k=t.pstyle("text-border-width").pfValue,T=t.pstyle("text-background-padding").pfValue,C=t.pstyle("text-background-shape").strValue,P="round-rectangle"===C||"roundrectangle"===C,S="circle"===C;if(w>0||k>0&&E>0){var B=e.fillStyle,D=e.strokeStyle,_=e.lineWidth,A=t.pstyle("text-background-color").value,M=t.pstyle("text-border-color").value,R=t.pstyle("text-border-style").value,I=w>0,N=k>0&&E>0,L=u-T;switch(b){case"left":L-=p;break;case"center":L-=p/2}var z=c-v-T,O=p+2*T,V=v+2*T;if(I&&(e.fillStyle="rgba(".concat(A[0],",").concat(A[1],",").concat(A[2],",").concat(w*o,")")),N&&(e.strokeStyle="rgba(".concat(M[0],",").concat(M[1],",").concat(M[2],",").concat(E*o,")"),e.lineWidth=k,e.setLineDash))switch(R){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=k/4,e.setLineDash([]);break;default:e.setLineDash([])}if(P?(e.beginPath(),Vd(e,L,z,O,V,2)):S?(e.beginPath(),function(e,t,n,r,a){var i=Math.min(r,a)/2,o=t+r/2,s=n+a/2;e.beginPath(),e.arc(o,s,i,0,2*Math.PI),e.closePath()}(e,L,z,O,V)):(e.beginPath(),e.rect(L,z,O,V)),I&&e.fill(),N&&e.stroke(),N&&"double"===R){var F=k/2;e.beginPath(),P?Vd(e,L+F,z+F,O-2*F,V-2*F,2):e.rect(L+F,z+F,O-2*F,V-2*F),e.stroke()}e.fillStyle=B,e.strokeStyle=D,e.lineWidth=_,e.setLineDash&&e.setLineDash([])}var X=2*t.pstyle("text-outline-width").pfValue;if(X>0&&(e.lineWidth=X),"wrap"===t.pstyle("text-wrap").value){var j=pt(i,"labelWrapCachedLines",n),Y=pt(i,"labelLineHeight",n),q=p/2,W=this.getLabelJustification(t);switch("auto"===W||("left"===b?"left"===W?u+=-p:"center"===W&&(u+=-q):"center"===b?"left"===W?u+=-q:"right"===W&&(u+=q):"right"===b&&("center"===W?u+=q:"right"===W&&(u+=p))),x){case"top":case"center":case"bottom":c-=(j.length-1)*Y}for(var U=0;U0&&e.strokeText(j[U],u,c),e.fillText(j[U],u,c),c+=Y}else X>0&&e.strokeText(d,u,c),e.fillText(d,u,c);0!==h&&(e.rotate(-h),e.translate(-s,-l))}}};var Fd={drawNode:function(e,t,n){var r,a,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,d=t.position();if(Q(d.x)&&Q(d.y)&&(!s||t.visible())){var h,f,p=s?t.effectiveOpacity():1,v=l.usePaths(),g=!1,y=t.padding();r=t.width()+2*y,a=t.height()+2*y,n&&(f=n,e.translate(-f.x1,-f.y1));for(var m=t.pstyle("background-image").value,b=new Array(m.length),x=new Array(m.length),w=0,E=0;E0&&void 0!==arguments[0]?arguments[0]:S;l.eleFillStyle(e,t,n)},Y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:N;l.colorStrokeStyle(e,B[0],B[1],B[2],t)},q=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V;l.colorStrokeStyle(e,z[0],z[1],z[2],t)},W=function(e,t,n,r){var a,i=l.nodePathCache=l.nodePathCache||[],o=He("polygon"===n?n+","+r.join(","):n,""+t,""+e,""+X),s=i[o],u=!1;return null!=s?(a=s,u=!0,c.pathCache=a):(a=new Path2D,i[o]=c.pathCache=a),{path:a,cacheHit:u}},U=t.pstyle("shape").strValue,H=t.pstyle("shape-polygon-points").pfValue;if(v){e.translate(d.x,d.y);var K=W(r,a,U,H);h=K.path,g=K.cacheHit}var G=function(){if(!g){var n=d;v&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(h||e,n.x,n.y,r,a,X,c)}v?e.fill(h):e.fill()},Z=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=u.backgrounding,i=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasPie(t)&&(l.drawPie(e,t,i),n&&(v||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},J=function(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasStripe(t)&&(e.save(),v?e.clip(c.pathCache):(l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c),e.clip()),l.drawStripe(e,t,i),e.restore(),n&&(v||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},ee=function(){var t=(C>0?C:-C)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:p),n=C>0?0:255;0!==C&&(l.colorFillStyle(e,n,n,n,t),v?e.fill(h):e.fill())},te=function(){if(P>0){if(e.lineWidth=P,e.lineCap=A,e.lineJoin=_,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash(R),e.lineDashOffset=I;break;case"solid":case"double":e.setLineDash([])}if("center"!==M){if(e.save(),e.lineWidth*=2,"inside"===M)v?e.clip(h):e.clip();else{var t=new Path2D;t.rect(-r/2-P,-a/2-P,r+2*P,a+2*P),t.addPath(h),e.clip(t,"evenodd")}v?e.stroke(h):e.stroke(),e.restore()}else v?e.stroke(h):e.stroke();if("double"===D){e.lineWidth=P/3;var n=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",v?e.stroke(h):e.stroke(),e.globalCompositeOperation=n}e.setLineDash&&e.setLineDash([])}},ne=function(){if(L>0){if(e.lineWidth=L,e.lineCap="butt",e.setLineDash)switch(O){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}var n=d;v&&(n={x:0,y:0});var i=l.getNodeShape(t),o=P;"inside"===M&&(o=0),"outside"===M&&(o*=2);var s,u=(r+o+(L+F))/r,c=(a+o+(L+F))/a,h=r*u,f=a*c,p=l.nodeShapes[i].points;if(v)s=W(h,f,i,p).path;if("ellipse"===i)l.drawEllipsePath(s||e,n.x,n.y,h,f);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(i)){var g=0,y=0,m=0;"round-diamond"===i?g=1.4*(o+F+L):"round-heptagon"===i?(g=1.075*(o+F+L),m=-(o/2+F+L)/35):"round-hexagon"===i?g=1.12*(o+F+L):"round-pentagon"===i?(g=1.13*(o+F+L),m=-(o/2+F+L)/15):"round-tag"===i?(g=1.12*(o+F+L),y=.07*(o/2+L+F)):"round-triangle"===i&&(g=(o+F+L)*(Math.PI/2),m=-(o+F/2+L)/Math.PI),0!==g&&(h=r*(u=(r+g)/r),["round-hexagon","round-tag"].includes(i)||(f=a*(c=(a+g)/a)));for(var b=h/2,x=f/2,w=(X="auto"===X?In(h,f):X)+(o+L+F)/2,E=new Array(p.length/2),k=new Array(p.length/2),T=0;T0){if(r=r||n.position(),null==a||null==i){var d=n.padding();a=n.width()+2*d,i=n.height()+2*d}this.colorFillStyle(t,l[0],l[1],l[2],s),this.nodeShapes[u].draw(t,r.x,r.y,a+2*o,i+2*o,c),t.fill()}}}};Fd.drawNodeOverlay=Xd("overlay"),Fd.drawNodeUnderlay=Xd("underlay"),Fd.hasPie=function(e){return(e=e[0])._private.hasPie},Fd.hasStripe=function(e){return(e=e[0])._private.hasStripe},Fd.drawPie=function(e,t,n,r){t=t[0],r=r||t.position();var a,i=t.cy().style(),o=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=r.x,c=r.y,d=t.width(),h=t.height(),f=Math.min(d,h)/2,p=0;if(this.usePaths()&&(u=0,c=0),"%"===o.units?f*=o.pfValue:void 0!==o.pfValue&&(f=o.pfValue/2),"%"===s.units?a=f*s.pfValue:void 0!==s.pfValue&&(a=s.pfValue/2),!(a>=f))for(var v=1;v<=i.pieBackgroundN;v++){var g=t.pstyle("pie-"+v+"-background-size").value,y=t.pstyle("pie-"+v+"-background-color").value,m=t.pstyle("pie-"+v+"-background-opacity").value*n,b=g/100;b+p>1&&(b=1-p);var x=1.5*Math.PI+2*Math.PI*p,w=(x+=l)+2*Math.PI*b;0===g||p>=1||p+b>1||(0===a?(e.beginPath(),e.moveTo(u,c),e.arc(u,c,f,x,w),e.closePath()):(e.beginPath(),e.arc(u,c,f,x,w),e.arc(u,c,a,w,x,!0),e.closePath()),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),p+=b)}},Fd.drawStripe=function(e,t,n,r){t=t[0],r=r||t.position();var a=t.cy().style(),i=r.x,o=r.y,s=t.width(),l=t.height(),u=0,c=this.usePaths();e.save();var d=t.pstyle("stripe-direction").value,h=t.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":e.rotate(-Math.PI/2)}var f=s,p=l;"%"===h.units?(f*=h.pfValue,p*=h.pfValue):void 0!==h.pfValue&&(f=h.pfValue,p=h.pfValue),c&&(i=0,o=0),o-=f/2,i-=p/2;for(var v=1;v<=a.stripeBackgroundN;v++){var g=t.pstyle("stripe-"+v+"-background-size").value,y=t.pstyle("stripe-"+v+"-background-color").value,m=t.pstyle("stripe-"+v+"-background-opacity").value*n,b=g/100;b+u>1&&(b=1-u),0===g||u>=1||u+b>1||(e.beginPath(),e.rect(i,o+p*u,f,p*b),e.closePath(),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),u+=b)}e.restore()};var jd,Yd={};function qd(e,t,n){var r=e.createShader(t);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(r));return r}function Wd(e,t,n){void 0===n&&(n=t);var r=e.makeOffscreenCanvas(t,n),a=r.context=r.getContext("2d");return r.clear=function(){return a.clearRect(0,0,r.width,r.height)},r.clear(),r}function Ud(e){var t=e.pixelRatio,n=e.cy.zoom(),r=e.cy.pan();return{zoom:n*t,pan:{x:r.x*t,y:r.y*t}}}function Hd(e){return"solid"===e.pstyle("background-fill").value&&("none"===e.pstyle("background-image").strValue&&(0===e.pstyle("border-width").value||(0===e.pstyle("border-opacity").value||"solid"===e.pstyle("border-style").value)))}function Kd(e,t){if(e.length!==t.length)return!1;for(var n=0;n>8&255)/255,n[2]=(e>>16&255)/255,n[3]=(e>>24&255)/255,n}function $d(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function Qd(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function Jd(e,t,n){switch(t){case e.FLOAT:return new Float32Array(n);case e.INT:return new Int32Array(n)}}function eh(e,t,n,r,a,i){switch(t){case e.FLOAT:return new Float32Array(n.buffer,i*r,a);case e.INT:return new Int32Array(n.buffer,i*r,a)}}function th(e,t,n,r){var a=l(Qd(e,n),3),i=a[0],o=a[1],s=a[2],u=Jd(e,o,t*i),c=i*s,d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,t*c,e.DYNAMIC_DRAW),e.enableVertexAttribArray(r),o===e.FLOAT?e.vertexAttribPointer(r,i,o,!1,c,0):o===e.INT&&e.vertexAttribIPointer(r,i,o,c,0),e.vertexAttribDivisor(r,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var h=new Array(t),f=0;ft.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!d&&(c[t.NODE]=!0,c[t.SELECT_BOX]=!0);var m=n.style(),b=n.zoom(),x=void 0!==o?o:b,w=n.pan(),E={x:w.x,y:w.y},k={zoom:b,pan:{x:w.x,y:w.y}},T=t.prevViewport;void 0===T||k.zoom!==T.zoom||k.pan.x!==T.pan.x||k.pan.y!==T.pan.y||v&&!p||(t.motionBlurPxRatio=1),s&&(E=s),x*=l,E.x*=l,E.y*=l;var C=t.getCachedZSortedEles();function P(e,n,r,a,i){var o=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",t.colorFillStyle(e,255,255,255,t.motionBlurTransparency),e.fillRect(n,r,a,i),e.globalCompositeOperation=o}function S(e,n){var i,l,c,d;t.clearingMotionBlur||e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]?(i=E,l=x,c=t.canvasWidth,d=t.canvasHeight):(i={x:w.x*f,y:w.y*f},l=b*f,c=t.canvasWidth*f,d=t.canvasHeight*f),e.setTransform(1,0,0,1,0,0),"motionBlur"===n?P(e,0,0,c,d):r||void 0!==n&&!n||e.clearRect(0,0,c,d),a||(e.translate(i.x,i.y),e.scale(l,l)),s&&e.translate(s.x,s.y),o&&e.scale(o,o)}if(d||(t.textureDrawLastFrame=!1),d){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=n.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var B=t.data.bufferContexts[t.TEXTURE_BUFFER];B.setTransform(1,0,0,1,0,0),B.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:B,drawOnlyNodeLayer:!0,forcedPxRatio:l*t.textureMult}),(k=t.textureCache.viewport={zoom:n.zoom(),pan:n.pan(),width:t.canvasWidth,height:t.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}c[t.DRAG]=!1,c[t.NODE]=!1;var D=u.contexts[t.NODE],_=t.textureCache.texture;k=t.textureCache.viewport;D.setTransform(1,0,0,1,0,0),h?P(D,0,0,k.width,k.height):D.clearRect(0,0,k.width,k.height);var A=m.core("outside-texture-bg-color").value,M=m.core("outside-texture-bg-opacity").value;t.colorFillStyle(D,A[0],A[1],A[2],M),D.fillRect(0,0,k.width,k.height);b=n.zoom();S(D,!1),D.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l),D.drawImage(_,k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l)}else t.textureOnViewport&&!r&&(t.textureCache=null);var R=n.extent(),I=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),N=t.hideEdgesOnViewport&&I,L=[];if(L[t.NODE]=!c[t.NODE]&&h&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,L[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),L[t.DRAG]=!c[t.DRAG]&&h&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,L[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),c[t.NODE]||a||i||L[t.NODE]){var z=h&&!L[t.NODE]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:u.contexts[t.NODE]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.nondrag,l,R):t.drawLayeredElements(D,C.nondrag,l,R),t.debug&&t.drawDebugPoints(D,C.nondrag),a||h||(c[t.NODE]=!1)}if(!i&&(c[t.DRAG]||a||L[t.DRAG])){z=h&&!L[t.DRAG]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:u.contexts[t.DRAG]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.drag,l,R):t.drawCachedElements(D,C.drag,l,R),t.debug&&t.drawDebugPoints(D,C.drag),a||h||(c[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,S),h&&1!==f){var O=u.contexts[t.NODE],V=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],F=u.contexts[t.DRAG],X=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],j=function(e,n,r){e.setTransform(1,0,0,1,0,0),r||!y?e.clearRect(0,0,t.canvasWidth,t.canvasHeight):P(e,0,0,t.canvasWidth,t.canvasHeight);var a=f;e.drawImage(n,0,0,t.canvasWidth*a,t.canvasHeight*a,0,0,t.canvasWidth,t.canvasHeight)};(c[t.NODE]||L[t.NODE])&&(j(O,V,L[t.NODE]),c[t.NODE]=!1),(c[t.DRAG]||L[t.DRAG])&&(j(F,X,L[t.DRAG]),c[t.DRAG]=!1)}t.prevViewport=k,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),h&&(t.motionBlurTimeout=setTimeout(function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!d,t.mbFrames=0,c[t.NODE]=!0,c[t.DRAG]=!0,t.redraw()},100)),r||n.emit("render")},Yd.drawSelectionRectangle=function(e,t){var n=this,r=n.cy,a=n.data,i=r.style(),o=e.drawOnlyNodeLayer,s=e.drawAllLayers,l=a.canvasNeedsRedraw,u=e.forcedContext;if(n.showFps||!o&&l[n.SELECT_BOX]&&!s){var c=u||a.contexts[n.SELECT_BOX];if(t(c),1==n.selection[4]&&(n.hoverData.selecting||n.touchData.selecting)){var d=n.cy.zoom(),h=i.core("selection-box-border-width").value/d;c.lineWidth=h,c.fillStyle="rgba("+i.core("selection-box-color").value[0]+","+i.core("selection-box-color").value[1]+","+i.core("selection-box-color").value[2]+","+i.core("selection-box-opacity").value+")",c.fillRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]),h>0&&(c.strokeStyle="rgba("+i.core("selection-box-border-color").value[0]+","+i.core("selection-box-border-color").value[1]+","+i.core("selection-box-border-color").value[2]+","+i.core("selection-box-opacity").value+")",c.strokeRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]))}if(a.bgActivePosistion&&!n.hoverData.selecting){d=n.cy.zoom();var f=a.bgActivePosistion;c.fillStyle="rgba("+i.core("active-bg-color").value[0]+","+i.core("active-bg-color").value[1]+","+i.core("active-bg-color").value[2]+","+i.core("active-bg-opacity").value+")",c.beginPath(),c.arc(f.x,f.y,i.core("active-bg-size").pfValue/d,0,2*Math.PI),c.fill()}var p=n.lastRedrawTime;if(n.showFps&&p){p=Math.round(p);var v=Math.round(1e3/p),g="1 frame = "+p+" ms = "+v+" fps";if(c.setTransform(1,0,0,1,0,0),c.fillStyle="rgba(255, 0, 0, 0.75)",c.strokeStyle="rgba(255, 0, 0, 0.75)",c.font="30px Arial",!jd){var y=c.measureText(g);jd=y.actualBoundingBoxAscent}c.fillText(g,0,jd);c.strokeRect(0,jd+10,250,20),c.fillRect(0,jd+10,250*Math.min(v/60,1),20)}s||(l[n.SELECT_BOX]=!1)}};var nh="undefined"!=typeof Float32Array?Float32Array:Array;function rh(){var e=new nh(9);return nh!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function ah(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function ih(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=n[0],f=n[1];return e[0]=r,e[1]=a,e[2]=i,e[3]=o,e[4]=s,e[5]=l,e[6]=h*r+f*o+u,e[7]=h*a+f*s+c,e[8]=h*i+f*l+d,e}function oh(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=Math.sin(n),f=Math.cos(n);return e[0]=f*r+h*o,e[1]=f*a+h*s,e[2]=f*i+h*l,e[3]=f*o-h*r,e[4]=f*s-h*a,e[5]=f*l-h*i,e[6]=u,e[7]=c,e[8]=d,e}function sh(e,t,n){var r=n[0],a=n[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=a*t[3],e[4]=a*t[4],e[5]=a*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var lh=function(){return i(function e(t,n,r,i){a(this,e),this.debugID=Math.floor(1e4*Math.random()),this.r=t,this.texSize=n,this.texRows=r,this.texHeight=Math.floor(n/r),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(t,n,n),this.scratch=i(t,n,this.texHeight,"scratch")},[{key:"lock",value:function(){this.locked=!0}},{key:"getKeys",value:function(){return new Set(this.keyToLocation.keys())}},{key:"getScale",value:function(e){var t=e.w,n=e.h,r=this.texHeight,a=this.texSize,i=r/n,o=t*i,s=n*i;return o>a&&(o=t*(i=a/t),s=n*i),{scale:i,texW:o,texH:s}}},{key:"draw",value:function(e,t,n){var r=this;if(this.locked)throw new Error("can't draw, atlas is locked");var a=this.texSize,i=this.texRows,o=this.texHeight,s=this.getScale(t),l=s.scale,u=s.texW,c=s.texH,d=function(e,r){if(n&&r){var a=r.context,i=e.x,s=e.row,u=i,c=o*s;a.save(),a.translate(u,c),a.scale(l,l),n(a,t),a.restore()}},h=[null,null],f=function(){d(r.freePointer,r.canvas),h[0]={x:r.freePointer.x,y:r.freePointer.row*o,w:u,h:c},h[1]={x:r.freePointer.x+u,y:r.freePointer.row*o,w:0,h:c},r.freePointer.x+=u,r.freePointer.x==a&&(r.freePointer.x=0,r.freePointer.row++)},p=function(){r.freePointer.x=0,r.freePointer.row++};if(this.freePointer.x+u<=a)f();else{if(this.freePointer.row>=i-1)return!1;this.freePointer.x===a?(p(),f()):this.enableWrapping?function(){var e=r.scratch,t=r.canvas;e.clear(),d({x:0,row:0},e);var n=a-r.freePointer.x,i=u-n,s=o,l=r.freePointer.x,f=r.freePointer.row*o,p=n;t.context.drawImage(e,0,0,p,s,l,f,p,s),h[0]={x:l,y:f,w:p,h:c};var v=n,g=(r.freePointer.row+1)*o,y=i;t&&t.context.drawImage(e,v,0,y,s,0,g,y,s),h[1]={x:0,y:g,w:y,h:c},r.freePointer.x=i,r.freePointer.row++}():(p(),f())}return this.keyToLocation.set(e,h),this.needsBuffer=!0,h}},{key:"getOffsets",value:function(e){return this.keyToLocation.get(e)}},{key:"isEmpty",value:function(){return 0===this.freePointer.x&&0===this.freePointer.row}},{key:"canFit",value:function(e){if(this.locked)return!1;var t=this.texSize,n=this.texRows,r=this.getScale(e).texW;return!(this.freePointer.x+r>t)||this.freePointer.row1&&void 0!==arguments[1]?arguments[1]:{},a=r.forceRedraw,i=void 0!==a&&a,s=r.filterEle,l=void 0===s?function(){return!0}:s,u=r.filterType,c=void 0===u?function(){return!0}:u,d=!1,h=!1,f=o(e);try{for(f.s();!(t=f.n()).done;){var p=t.value;if(l(p)){var v,g=o(this.renderTypes.values());try{var y=function(){var e=v.value,t=e.type;if(c(t)){var r=n.collections.get(e.collection),a=e.getKey(p),o=Array.isArray(a)?a:[a];if(i)o.forEach(function(e){return r.markKeyForGC(e)}),h=!0;else{var s=e.getID?e.getID(p):p.id(),l=n._key(t,s),u=n.typeAndIdToKey.get(l);void 0===u||Kd(o,u)||(d=!0,n.typeAndIdToKey.delete(l),u.forEach(function(e){return r.markKeyForGC(e)}))}}};for(g.s();!(v=g.n()).done;)y()}catch(m){g.e(m)}finally{g.f()}}}}catch(m){f.e(m)}finally{f.f()}return h&&(this.gc(),d=!1),d}},{key:"gc",value:function(){var e,t=o(this.collections.values());try{for(t.s();!(e=t.n()).done;){e.value.gc()}}catch(n){t.e(n)}finally{t.f()}}},{key:"getOrCreateAtlas",value:function(e,t,n,r){var a=this.renderTypes.get(t),i=this.collections.get(a.collection),o=!1,s=i.draw(r,n,function(t){a.drawClipped?(t.save(),t.beginPath(),t.rect(0,0,n.w,n.h),t.clip(),a.drawElement(t,e,n,!0,!0),t.restore()):a.drawElement(t,e,n,!0,!0),o=!0});if(o){var l=a.getID?a.getID(e):e.id(),u=this._key(t,l);this.typeAndIdToKey.has(u)?this.typeAndIdToKey.get(u).push(r):this.typeAndIdToKey.set(u,[r])}return s}},{key:"getAtlasInfo",value:function(e,t){var n=this,r=this.renderTypes.get(t),a=r.getKey(e);return(Array.isArray(a)?a:[a]).map(function(a){var i=r.getBoundingBox(e,a),o=n.getOrCreateAtlas(e,t,i,a),s=l(o.getOffsets(a),2),u=s[0];return{atlas:o,tex:u,tex1:u,tex2:s[1],bb:i}})}},{key:"getDebugInfo",value:function(){var e,t=[],n=o(this.collections);try{for(n.s();!(e=n.n()).done;){var r=l(e.value,2),a=r[0],i=r[1].getCounts(),s=i.keyCount,u=i.atlasCount;t.push({type:a,keyCount:s,atlasCount:u})}}catch(c){n.e(c)}finally{n.f()}return t}}])}(),dh=function(){return i(function e(t){a(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]},[{key:"getMaxAtlasesPerBatch",value:function(){return this.maxAtlasesPerBatch}},{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"getIndexArray",value:function(){return Array.from({length:this.maxAtlasesPerBatch},function(e,t){return t})}},{key:"startBatch",value:function(){this.batchAtlases=[]}},{key:"getAtlasCount",value:function(){return this.batchAtlases.length}},{key:"getAtlases",value:function(){return this.batchAtlases}},{key:"canAddToCurrentBatch",value:function(e){return this.batchAtlases.length!==this.maxAtlasesPerBatch||this.batchAtlases.includes(e)}},{key:"getAtlasIndexForBatch",value:function(e){var t=this.batchAtlases.indexOf(e);if(t<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(e),t=this.batchAtlases.length-1}return t}}])}(),hh={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},fh=1,ph=2,vh=function(){return i(function e(t,n,r){a(this,e),this.r=t,this.gl=n,this.maxInstances=r.webglBatchSize,this.atlasSize=r.webglTexSize,this.bgColor=r.bgColor,this.debug=r.webglDebug,this.batchDebugInfo=[],r.enableWrapping=!0,r.createTextureCanvas=Wd,this.atlasManager=new ch(t,r),this.batchManager=new dh(r),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(hh.SCREEN),this.pickingProgram=this._createShaderProgram(hh.PICKING),this.vao=this._createVAO()},[{key:"addAtlasCollection",value:function(e,t){this.atlasManager.addAtlasCollection(e,t)}},{key:"addTextureAtlasRenderType",value:function(e,t){this.atlasManager.addRenderType(e,t)}},{key:"addSimpleShapeRenderType",value:function(e,t){this.simpleShapeOptions.set(e,t)}},{key:"invalidate",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).type,n=this.atlasManager;return t?n.invalidate(e,{filterType:function(e){return e===t},forceRedraw:!0}):n.invalidate(e)}},{key:"gc",value:function(){this.atlasManager.gc()}},{key:"_createShaderProgram",value:function(e){var t=this.gl,n="#version 300 es\n precision highp float;\n\n uniform mat3 uPanZoomMatrix;\n uniform int uAtlasSize;\n \n // instanced\n in vec2 aPosition; // a vertex from the unit square\n \n in mat3 aTransform; // used to transform verticies, eg into a bounding box\n in int aVertType; // the type of thing we are rendering\n\n // the z-index that is output when using picking mode\n in vec4 aIndex;\n \n // For textures\n in int aAtlasId; // which shader unit/atlas to use\n in vec4 aTex; // x/y/w/h of texture in atlas\n\n // for edges\n in vec4 aPointAPointB;\n in vec4 aPointCPointD;\n in vec2 aLineWidth; // also used for node border width\n\n // simple shapes\n in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]\n in vec4 aColor; // also used for edges\n in vec4 aBorderColor; // aLineWidth is used for border width\n\n // output values passed to the fragment shader\n out vec2 vTexCoord;\n out vec4 vColor;\n out vec2 vPosition;\n // flat values are not interpolated\n flat out int vAtlasId; \n flat out int vVertType;\n flat out vec2 vTopRight;\n flat out vec2 vBotLeft;\n flat out vec4 vCornerRadius;\n flat out vec4 vBorderColor;\n flat out vec2 vBorderWidth;\n flat out vec4 vIndex;\n \n void main(void) {\n int vid = gl_VertexID;\n vec2 position = aPosition; // TODO make this a vec3, simplifies some code below\n\n if(aVertType == ".concat(0,") {\n float texX = aTex.x; // texture coordinates\n float texY = aTex.y;\n float texW = aTex.z;\n float texH = aTex.w;\n\n if(vid == 1 || vid == 2 || vid == 4) {\n texX += texW;\n }\n if(vid == 2 || vid == 4 || vid == 5) {\n texY += texH;\n }\n\n float d = float(uAtlasSize);\n vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(4," || aVertType == ").concat(7," \n || aVertType == ").concat(5," || aVertType == ").concat(6,") { // simple shapes\n\n // the bounding box is needed by the fragment shader\n vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat\n vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat\n vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated\n\n // calculations are done in the fragment shader, just pass these along\n vColor = aColor;\n vCornerRadius = aCornerRadius;\n vBorderColor = aBorderColor;\n vBorderWidth = aLineWidth;\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(1,") {\n vec2 source = aPointAPointB.xy;\n vec2 target = aPointAPointB.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n // stretch the unit square into a long skinny rectangle\n vec2 xBasis = target - source;\n vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\n vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;\n\n gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\n vColor = aColor;\n } \n else if(aVertType == ").concat(2,") {\n vec2 pointA = aPointAPointB.xy;\n vec2 pointB = aPointAPointB.zw;\n vec2 pointC = aPointCPointD.xy;\n vec2 pointD = aPointCPointD.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 p0, p1, p2, pos;\n if(position.x == 0.0) { // The left side of the unit square\n p0 = pointA;\n p1 = pointB;\n p2 = pointC;\n pos = position;\n } else { // The right side of the unit square, use same approach but flip the geometry upside down\n p0 = pointD;\n p1 = pointC;\n p2 = pointB;\n pos = vec2(0.0, -position.y);\n }\n\n vec2 p01 = p1 - p0;\n vec2 p12 = p2 - p1;\n vec2 p21 = p1 - p2;\n\n // Find the normal vector.\n vec2 tangent = normalize(normalize(p12) + normalize(p01));\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n // Find the vector perpendicular to p0 -> p1.\n vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\n\n // Determine the bend direction.\n float sigma = sign(dot(p01 + p21, normal));\n float width = aLineWidth[0];\n\n if(sign(pos.y) == -sigma) {\n // This is an intersecting vertex. Adjust the position so that there's no overlap.\n vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n } else {\n // This is a non-intersecting vertex. Treat it like a mitre join.\n vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n }\n\n vColor = aColor;\n } \n else if(aVertType == ").concat(3," && vid < 3) {\n // massage the first triangle into an edge arrow\n if(vid == 0)\n position = vec2(-0.15, -0.3);\n if(vid == 1)\n position = vec2( 0.0, 0.0);\n if(vid == 2)\n position = vec2( 0.15, -0.3);\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n vColor = aColor;\n }\n else {\n gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\n }\n\n vAtlasId = aAtlasId;\n vVertType = aVertType;\n vIndex = aIndex;\n }\n "),r=this.batchManager.getIndexArray(),a="#version 300 es\n precision highp float;\n\n // declare texture unit for each texture atlas in the batch\n ".concat(r.map(function(e){return"uniform sampler2D uTexture".concat(e,";")}).join("\n\t"),"\n\n uniform vec4 uBGColor;\n uniform float uZoom;\n\n in vec2 vTexCoord;\n in vec4 vColor;\n in vec2 vPosition; // model coordinates\n\n flat in int vAtlasId;\n flat in vec4 vIndex;\n flat in int vVertType;\n flat in vec2 vTopRight;\n flat in vec2 vBotLeft;\n flat in vec4 vCornerRadius;\n flat in vec4 vBorderColor;\n flat in vec2 vBorderWidth;\n\n out vec4 outColor;\n\n ").concat("\n float circleSD(vec2 p, float r) {\n return distance(vec2(0), p) - r; // signed distance\n }\n","\n ").concat("\n float rectangleSD(vec2 p, vec2 b) {\n vec2 d = abs(p)-b;\n return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);\n }\n","\n ").concat("\n float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {\n cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;\n cr.x = (p.y > 0.0) ? cr.x : cr.y;\n vec2 q = abs(p) - b + cr.x;\n return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;\n }\n","\n ").concat("\n float ellipseSD(vec2 p, vec2 ab) {\n p = abs( p ); // symmetry\n\n // find root with Newton solver\n vec2 q = ab*(p-ab);\n float w = (q.x1.0) ? d : -d;\n }\n","\n\n vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha\n return vec4( \n top.rgb + (bot.rgb * (1.0 - top.a)),\n top.a + (bot.a * (1.0 - top.a)) \n );\n }\n\n vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance\n // scale to the zoom level so that borders don't look blurry when zoomed in\n // note 1.5 is an aribitrary value chosen because it looks good\n return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); \n }\n\n void main(void) {\n if(vVertType == ").concat(0,") {\n // look up the texel from the texture unit\n ").concat(r.map(function(e){return"if(vAtlasId == ".concat(e,") outColor = texture(uTexture").concat(e,", vTexCoord);")}).join("\n\telse "),"\n } \n else if(vVertType == ").concat(3,") {\n // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';\n outColor = blend(vColor, uBGColor);\n outColor.a = 1.0; // make opaque, masks out line under arrow\n }\n else if(vVertType == ").concat(4," && vBorderWidth == vec2(0.0)) { // simple rectangle with no border\n outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done\n }\n else if(vVertType == ").concat(4," || vVertType == ").concat(7," \n || vVertType == ").concat(5," || vVertType == ").concat(6,") { // use SDF\n\n float outerBorder = vBorderWidth[0];\n float innerBorder = vBorderWidth[1];\n float borderPadding = outerBorder * 2.0;\n float w = vTopRight.x - vBotLeft.x - borderPadding;\n float h = vTopRight.y - vBotLeft.y - borderPadding;\n vec2 b = vec2(w/2.0, h/2.0); // half width, half height\n vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center\n\n float d; // signed distance\n if(vVertType == ").concat(4,") {\n d = rectangleSD(p, b);\n } else if(vVertType == ").concat(7," && w == h) {\n d = circleSD(p, b.x); // faster than ellipse\n } else if(vVertType == ").concat(7,") {\n d = ellipseSD(p, b);\n } else {\n d = roundRectangleSD(p, b, vCornerRadius.wzyx);\n }\n\n // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling\n // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box\n if(d > 0.0) {\n if(d > outerBorder) {\n discard;\n } else {\n outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);\n }\n } else {\n if(d > innerBorder) {\n vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;\n vec4 innerBorderColor = blend(vBorderColor, vColor);\n outColor = distInterp(innerBorderColor, outerColor, d);\n } \n else {\n vec4 outerColor;\n if(innerBorder == 0.0 && outerBorder == 0.0) {\n outerColor = vec4(0);\n } else if(innerBorder == 0.0) {\n outerColor = vBorderColor;\n } else {\n outerColor = blend(vBorderColor, vColor);\n }\n outColor = distInterp(vColor, outerColor, d - innerBorder);\n }\n }\n }\n else {\n outColor = vColor;\n }\n\n ").concat(e.picking?"if(outColor.a == 0.0) discard;\n else outColor = vIndex;":"","\n }\n "),i=function(e,t,n){var r=qd(e,e.VERTEX_SHADER,t),a=qd(e,e.FRAGMENT_SHADER,n),i=e.createProgram();if(e.attachShader(i,r),e.attachShader(i,a),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))throw new Error("Could not initialize shaders");return i}(t,n,a);i.aPosition=t.getAttribLocation(i,"aPosition"),i.aIndex=t.getAttribLocation(i,"aIndex"),i.aVertType=t.getAttribLocation(i,"aVertType"),i.aTransform=t.getAttribLocation(i,"aTransform"),i.aAtlasId=t.getAttribLocation(i,"aAtlasId"),i.aTex=t.getAttribLocation(i,"aTex"),i.aPointAPointB=t.getAttribLocation(i,"aPointAPointB"),i.aPointCPointD=t.getAttribLocation(i,"aPointCPointD"),i.aLineWidth=t.getAttribLocation(i,"aLineWidth"),i.aColor=t.getAttribLocation(i,"aColor"),i.aCornerRadius=t.getAttribLocation(i,"aCornerRadius"),i.aBorderColor=t.getAttribLocation(i,"aBorderColor"),i.uPanZoomMatrix=t.getUniformLocation(i,"uPanZoomMatrix"),i.uAtlasSize=t.getUniformLocation(i,"uAtlasSize"),i.uBGColor=t.getUniformLocation(i,"uBGColor"),i.uZoom=t.getUniformLocation(i,"uZoom"),i.uTextures=[];for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:hh.SCREEN;this.panZoomMatrix=e,this.renderTarget=t,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:"startBatch",value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:"endFrame",value:function(){this.endBatch()}},{key:"_isVisible",value:function(e,t){return!!e.visible()&&(!t||!t.isVisible||t.isVisible(e))}},{key:"drawTexture",value:function(e,t,n){var r=this.atlasManager,a=this.batchManager,i=r.getRenderTypeOpts(n);if(this._isVisible(e,i)&&(!e.isEdge()||this._isValidEdge(e))){if(this.renderTarget.picking&&i.getTexPickingMode){var s=i.getTexPickingMode(e);if(s===fh)return;if(s==ph)return void this.drawPickingRectangle(e,t,n)}var u,c=o(r.getAtlasInfo(e,n));try{for(c.s();!(u=c.n()).done;){var d=u.value,h=d.atlas,f=d.tex1,p=d.tex2;a.canAddToCurrentBatch(h)||this.endBatch();for(var v=a.getAtlasIndexForBatch(h),g=0,y=[[f,!0],[p,!1]];g=this.maxInstances&&this.endBatch()}}}}catch(T){c.e(T)}finally{c.f()}}}},{key:"setTransformMatrix",value:function(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=0;if(n.shapeProps&&n.shapeProps.padding&&(i=e.pstyle(n.shapeProps.padding).pfValue),r){var o=r.bb,s=r.tex1,l=r.tex2,u=s.w/(s.w+l.w);a||(u=1-u);var c=this._getAdjustedBB(o,i,a,u);this._applyTransformMatrix(t,c,n,e)}else{var d=n.getBoundingBox(e),h=this._getAdjustedBB(d,i,!0,1);this._applyTransformMatrix(t,h,n,e)}}},{key:"_applyTransformMatrix",value:function(e,t,n,r){var a,i;ah(e);var o=n.getRotation?n.getRotation(r):0;if(0!==o){var s=n.getRotationPoint(r);ih(e,e,[s.x,s.y]),oh(e,e,o);var l=n.getRotationOffset(r);a=l.x+(t.xOffset||0),i=l.y+(t.yOffset||0)}else a=t.x1,i=t.y1;ih(e,e,[a,i]),sh(e,e,[t.w,t.h])}},{key:"_getAdjustedBB",value:function(e,t,n,r){var a=e.x1,i=e.y1,o=e.w,s=e.h;t&&(a-=t,i-=t,o+=2*t,s+=2*t);var l=0,u=o*r;return n&&r<1?o=u:!n&&r<1&&(a+=l=o-u,o=u),{x1:a,y1:i,w:o,h:s,xOffset:l,yOffset:e.yOffset}}},{key:"drawPickingRectangle",value:function(e,t,n){var r=this.atlasManager.getRenderTypeOpts(n),a=this.instanceCount;this.vertTypeBuffer.getView(a)[0]=4,Zd(t,this.indexBuffer.getView(a)),Gd([0,0,0],1,this.colorBuffer.getView(a));var i=this.transformBuffer.getMatrixView(a);this.setTransformMatrix(e,i,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:"drawNode",value:function(e,t,n){var r=this.simpleShapeOptions.get(n);if(this._isVisible(e,r)){var a=r.shapeProps,i=this._getVertTypeForShape(e,a.shape);if(void 0===i||r.isSimple&&!r.isSimple(e))this.drawTexture(e,t,n);else{var o=this.instanceCount;if(this.vertTypeBuffer.getView(o)[0]=i,5===i||6===i){var s=r.getBoundingBox(e),l=this._getCornerRadius(e,a.radius,s),u=this.cornerRadiusBuffer.getView(o);u[0]=l,u[1]=l,u[2]=l,u[3]=l,6===i&&(u[0]=0,u[2]=0)}Zd(t,this.indexBuffer.getView(o)),Gd(e.pstyle(a.color).value,e.pstyle(a.opacity).value,this.colorBuffer.getView(o));var c=this.lineWidthBuffer.getView(o);if(c[0]=0,c[1]=0,a.border){var d=e.pstyle("border-width").value;if(d>0){Gd(e.pstyle("border-color").value,e.pstyle("border-opacity").value,this.borderColorBuffer.getView(o));var h=e.pstyle("border-position").value;if("inside"===h)c[0]=0,c[1]=-d;else if("outside"===h)c[0]=d,c[1]=0;else{var f=d/2;c[0]=f,c[1]=-f}}}var p=this.transformBuffer.getMatrixView(o);this.setTransformMatrix(e,p,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"_getVertTypeForShape",value:function(e,t){switch(e.pstyle(t).value){case"rectangle":return 4;case"ellipse":return 7;case"roundrectangle":case"round-rectangle":return 5;case"bottom-round-rectangle":return 6;default:return}}},{key:"_getCornerRadius",value:function(e,t,n){var r=n.w,a=n.h;if("auto"===e.pstyle(t).value)return Rn(r,a);var i=e.pstyle(t).pfValue,o=r/2,s=a/2;return Math.min(i,s,o)}},{key:"drawEdgeArrow",value:function(e,t,n){if(e.visible()){var r,a,i,o=e._private.rscratch;if("source"===n?(r=o.arrowStartX,a=o.arrowStartY,i=o.srcArrowAngle):(r=o.arrowEndX,a=o.arrowEndY,i=o.tgtArrowAngle),!(isNaN(r)||null==r||isNaN(a)||null==a||isNaN(i)||null==i))if("none"!==e.pstyle(n+"-arrow-shape").value){var s=e.pstyle(n+"-arrow-color").value,l=e.pstyle("opacity").value*e.pstyle("line-opacity").value,u=e.pstyle("width").pfValue,c=e.pstyle("arrow-scale").value,d=this.r.getArrowWidth(u,c),h=this.instanceCount,f=this.transformBuffer.getMatrixView(h);ah(f),ih(f,f,[r,a]),sh(f,f,[d,d]),oh(f,f,i),this.vertTypeBuffer.getView(h)[0]=3,Zd(t,this.indexBuffer.getView(h)),Gd(s,l,this.colorBuffer.getView(h)),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"drawEdgeLine",value:function(e,t){if(e.visible()){var n=this._getEdgePoints(e);if(n){var r=e.pstyle("opacity").value,a=e.pstyle("line-opacity").value,i=e.pstyle("width").pfValue,o=e.pstyle("line-color").value,s=r*a;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),4==n.length){var l=this.instanceCount;this.vertTypeBuffer.getView(l)[0]=1,Zd(t,this.indexBuffer.getView(l)),Gd(o,s,this.colorBuffer.getView(l)),this.lineWidthBuffer.getView(l)[0]=i;var u=this.pointAPointBBuffer.getView(l);u[0]=n[0],u[1]=n[1],u[2]=n[2],u[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var c=0;c=this.maxInstances&&this.endBatch()}}}}},{key:"_isValidEdge",value:function(e){var t=e._private.rscratch;return!t.badLine&&null!=t.allpts&&!isNaN(t.allpts[0])}},{key:"_getEdgePoints",value:function(e){var t=e._private.rscratch;if(this._isValidEdge(e)){var n=t.allpts;if(4==n.length)return n;var r=this._getNumSegments(e);return this._getCurveSegmentPoints(n,r)}}},{key:"_getNumSegments",value:function(e){return Math.min(Math.max(15,5),this.maxInstances)}},{key:"_getCurveSegmentPoints",value:function(e,t){if(4==e.length)return e;for(var n=Array(2*(t+1)),r=0;r<=t;r++)if(0==r)n[0]=e[0],n[1]=e[1];else if(r==t)n[2*r]=e[e.length-2],n[2*r+1]=e[e.length-1];else{var a=r/t;this._setCurvePoint(e,a,n,2*r)}return n}},{key:"_setCurvePoint",value:function(e,t,n,r){if(!(e.length<=2)){for(var a=Array(e.length-2),i=0;i0}},u=function(e){return"yes"===e.pstyle("text-events").strValue?ph:fh},c=function(e){var t=e.position(),n=t.x,r=t.y,a=e.outerWidth(),i=e.outerHeight();return{w:a,h:i,x1:n-a/2,y1:r-i/2}};n.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),n.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),n.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),n.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:c,isSimple:Hd,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),n.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:c,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),n.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:c,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),n.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:u,getKey:mh(t.getLabelKey,null),getBoundingBox:bh(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:a(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:i("label")}),n.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:u,getKey:mh(t.getSourceLabelKey,"source"),getBoundingBox:bh(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:a("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:i("source-label")}),n.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:u,getKey:mh(t.getTargetLabelKey,"target"),getBoundingBox:bh(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:a("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:i("target-label")});var d=Me(function(){console.log("garbage collect flag set"),n.data.gc=!0},1e4);n.onUpdateEleCalcs(function(e,t){var r=!1;t&&t.length>0&&(r|=n.drawing.invalidate(t)),r&&d()}),function(e){var t=e.render;e.render=function(n){n=n||{};var r=e.cy;e.webgl&&(r.zoom()>hd?(!function(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}(e),t.call(e,n)):(!function(e){var t=function(t){t.save(),t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.canvasWidth,e.canvasHeight),t.restore()};t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}(e),Eh(e,n,hh.SCREEN)))};var n=e.matchCanvasSize;e.matchCanvasSize=function(t){n.call(e,t),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0},e.findNearestElements=function(t,n,r,a){return function(e,t,n){var r,a,i,s=function(e,t,n){var r,a,i,o,s=Ud(e),u=s.pan,c=s.zoom,d=function(e,t,n,r,a){var i=r*n+t.x,o=a*n+t.y;return[i,o=Math.round(e.canvasHeight-o)]}(e,u,c,t,n),h=l(d,2),f=h[0],p=h[1],v=6;if(r=f-v/2,a=p-v/2,o=v,0===(i=v)||0===o)return[];var g=e.data.contexts[e.WEBGL];g.bindFramebuffer(g.FRAMEBUFFER,e.pickingFrameBuffer),e.pickingFrameBuffer.needsDraw&&(g.viewport(0,0,g.canvas.width,g.canvas.height),Eh(e,null,hh.PICKING),e.pickingFrameBuffer.needsDraw=!1);var y=i*o,m=new Uint8Array(4*y);g.readPixels(r,a,i,o,g.RGBA,g.UNSIGNED_BYTE,m),g.bindFramebuffer(g.FRAMEBUFFER,null);for(var b=new Set,x=0;x=0&&b.add(w)}return b}(e,t,n),u=e.getCachedZSortedEles(),c=o(s);try{for(c.s();!(i=c.n()).done;){var d=u[i.value];if(!r&&d.isNode()&&(r=d),!a&&d.isEdge()&&(a=d),r&&a)break}}catch(h){c.e(h)}finally{c.f()}return[r,a].filter(Boolean)}(e,t,n)};var r=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){r.call(e),e.pickingFrameBuffer.needsDraw=!0};var a=e.notify;e.notify=function(t,n){a.call(e,t,n),"viewport"===t||"bounds"===t?e.pickingFrameBuffer.needsDraw=!0:"background"===t&&e.drawing.invalidate(n,{type:"node-body"})}}(n)};var mh=function(e,t){return function(n){var r=e(n),a=yh(n,t);return a.length>1?a.map(function(e,t){return"".concat(r,"_").concat(t)}):r}},bh=function(e,t){return function(n,r){var a=e(n);if("string"==typeof r){var i=r.indexOf("_");if(i>0){var o=Number(r.substring(i+1)),s=yh(n,t),l=a.h/s.length,u=l*o,c=a.y1+u;return{x1:a.x1,w:a.w,y1:c,h:l,yOffset:u}}}return a}};function xh(e,t){var n=e.canvasWidth,r=e.canvasHeight,a=Ud(e),i=a.pan,o=a.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,n,r),t.translate(i.x,i.y),t.scale(o,o)}function wh(e,t,n){var r=e.drawing;t+=1,n.isNode()?(r.drawNode(n,t,"node-underlay"),r.drawNode(n,t,"node-body"),r.drawTexture(n,t,"label"),r.drawNode(n,t,"node-overlay")):(r.drawEdgeLine(n,t),r.drawEdgeArrow(n,t,"source"),r.drawEdgeArrow(n,t,"target"),r.drawTexture(n,t,"label"),r.drawTexture(n,t,"edge-source-label"),r.drawTexture(n,t,"edge-target-label"))}function Eh(e,t,n){var r;e.webglDebug&&(r=performance.now());var a=e.drawing,i=0;if(n.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&function(e,t){e.drawSelectionRectangle(t,function(t){return xh(e,t)})}(e,t),e.data.canvasNeedsRedraw[e.NODE]||n.picking){var s=e.data.contexts[e.WEBGL];n.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=function(e){var t=e.canvasWidth,n=e.canvasHeight,r=Ud(e),a=r.pan,i=r.zoom,o=rh();ih(o,o,[a.x,a.y]),sh(o,o,[i,i]);var s=rh();!function(e,t,n){e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/n,e[5]=0,e[6]=-1,e[7]=1,e[8]=1}(s,t,n);var l,u,c,d,h,f,p,v,g,y,m,b,x,w,E,k,T,C,P,S,B,D=rh();return l=D,c=o,d=(u=s)[0],h=u[1],f=u[2],p=u[3],v=u[4],g=u[5],y=u[6],m=u[7],b=u[8],x=c[0],w=c[1],E=c[2],k=c[3],T=c[4],C=c[5],P=c[6],S=c[7],B=c[8],l[0]=x*d+w*p+E*y,l[1]=x*h+w*v+E*m,l[2]=x*f+w*g+E*b,l[3]=k*d+T*p+C*y,l[4]=k*h+T*v+C*m,l[5]=k*f+T*g+C*b,l[6]=P*d+S*p+B*y,l[7]=P*h+S*v+B*m,l[8]=P*f+S*g+B*b,D}(e),u=e.getCachedZSortedEles();if(i=u.length,a.startFrame(l,n),n.screen){for(var c=0;c0&&i>0){h.clearRect(0,0,a,i),h.globalCompositeOperation="source-over";var f=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var p=t.pan(),v={x:p.x*l,y:p.y*l};l*=t.zoom(),h.translate(v.x,v.y),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(-v.x,-v.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,a,i),h.fill())}return d},_h.png=function(e){return Mh(e,this.bufferCanvasImage(e),"image/png")},_h.jpg=function(e){return Mh(e,this.bufferCanvasImage(e),"image/jpeg")};var Rh={nodeShapeImpl:function(e,t,n,r,a,i,o,s){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,a,i);case"polygon":return this.drawPolygonPath(t,n,r,a,i,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,a,i,o,s);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,a,i,s);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,a,i,o,s);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,a,i,s);case"barrel":return this.drawBarrelPath(t,n,r,a,i)}}},Ih=Lh,Nh=Lh.prototype;function Lh(e){var t=this,n=t.cy.window().document;e.webgl&&(Nh.CANVAS_LAYERS=t.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),t.data={canvases:new Array(Nh.CANVAS_LAYERS),contexts:new Array(Nh.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Nh.CANVAS_LAYERS),bufferCanvases:new Array(Nh.BUFFER_COUNT),bufferContexts:new Array(Nh.CANVAS_LAYERS)};var r="-webkit-tap-highlight-color",a="rgba(0,0,0,0)";t.data.canvasContainer=n.createElement("div");var i=t.data.canvasContainer.style;t.data.canvasContainer.style[r]=a,i.position="relative",i.zIndex="0",i.overflow="hidden";var o=e.cy.container();o.appendChild(t.data.canvasContainer),o.style[r]=a;var s={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};p&&p.userAgent.match(/msie|trident|edge/i)&&(s["-ms-touch-action"]="none",s["touch-action"]="none");for(var l=0;l{e.d(n,{diagram:()=>ct});var i=e(7633),s=e(797),r=e(451);function o(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e>i||void 0===e&&i>=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e>s||void 0===e&&s>=s)&&(e=s)}return e}function c(t){return t.target.depth}function l(t,n){return t.sourceLinks.length?t.depth:n-1}function a(t,n){let e=0;if(void 0===n)for(let i of t)(i=+i)&&(e+=i);else{let i=-1;for(let s of t)(s=+n(s,++i,t))&&(e+=s)}return e}function h(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e=s)&&(e=s)}return e}function u(t){return function(){return t}}function f(t,n){return d(t.source,n.source)||t.index-n.index}function y(t,n){return d(t.target,n.target)||t.index-n.index}function d(t,n){return t.y0-n.y0}function p(t){return t.value}function g(t){return t.index}function _(t){return t.nodes}function k(t){return t.links}function x(t,n){const e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function m({nodes:t}){for(const n of t){let t=n.y0,e=t;for(const i of n.sourceLinks)i.y0=t+i.width/2,t+=i.width;for(const i of n.targetLinks)i.y1=e+i.width/2,e+=i.width}}function v(){let t,n,e,i=0,s=0,r=1,c=1,v=24,b=8,w=g,L=l,S=_,E=k,K=6;function A(){const l={nodes:S.apply(null,arguments),links:E.apply(null,arguments)};return function({nodes:t,links:n}){for(const[e,s]of t.entries())s.index=e,s.sourceLinks=[],s.targetLinks=[];const i=new Map(t.map((n,e)=>[w(n,e,t),n]));for(const[e,s]of n.entries()){s.index=e;let{source:t,target:n}=s;"object"!=typeof t&&(t=s.source=x(i,t)),"object"!=typeof n&&(n=s.target=x(i,n)),t.sourceLinks.push(s),n.targetLinks.push(s)}if(null!=e)for(const{sourceLinks:s,targetLinks:r}of t)s.sort(e),r.sort(e)}(l),function({nodes:t}){for(const n of t)n.value=void 0===n.fixedValue?Math.max(a(n.sourceLinks,p),a(n.targetLinks,p)):n.fixedValue}(l),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.depth=s;for(const{target:n}of t.sourceLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(l),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.height=s;for(const{source:n}of t.targetLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(l),function(e){const l=function({nodes:t}){const e=h(t,t=>t.depth)+1,s=(r-i-v)/(e-1),o=new Array(e);for(const n of t){const t=Math.max(0,Math.min(e-1,Math.floor(L.call(null,n,e))));n.layer=t,n.x0=i+t*s,n.x1=n.x0+v,o[t]?o[t].push(n):o[t]=[n]}if(n)for(const i of o)i.sort(n);return o}(e);t=Math.min(b,(c-s)/(h(l,t=>t.length)-1)),function(n){const e=o(n,n=>(c-s-(n.length-1)*t)/a(n,p));for(const i of n){let n=s;for(const s of i){s.y0=n,s.y1=n+s.value*e,n=s.y1+t;for(const t of s.sourceLinks)t.width=t.value*e}n=(c-n+t)/(i.length+1);for(let t=0;t0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,P(t)}void 0===n&&r.sort(d),T(r,i)}}function I(t,e,i){for(let s=t.length-2;s>=0;--s){const r=t[s];for(const t of r){let n=0,i=0;for(const{target:e,value:r}of t.sourceLinks){let s=r*(e.layer-t.layer);n+=$(t,e)*s,i+=s}if(!(i>0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,P(t)}void 0===n&&r.sort(d),T(r,i)}}function T(n,e){const i=n.length>>1,r=n[i];N(n,r.y0-t,i-1,e),D(n,r.y1+t,i+1,e),N(n,c,n.length-1,e),D(n,s,0,e)}function D(n,e,i,s){for(;i1e-6&&(r.y0+=o,r.y1+=o),e=r.y1+t}}function N(n,e,i,s){for(;i>=0;--i){const r=n[i],o=(r.y1-e)*s;o>1e-6&&(r.y0-=o,r.y1-=o),e=r.y0-t}}function P({sourceLinks:t,targetLinks:n}){if(void 0===e){for(const{source:{sourceLinks:t}}of n)t.sort(y);for(const{target:{targetLinks:n}}of t)n.sort(f)}}function C(t){if(void 0===e)for(const{sourceLinks:n,targetLinks:e}of t)n.sort(y),e.sort(f)}function O(n,e){let i=n.y0-(n.sourceLinks.length-1)*t/2;for(const{target:s,width:r}of n.sourceLinks){if(s===e)break;i+=r+t}for(const{source:t,width:s}of e.targetLinks){if(t===n)break;i-=s}return i}function $(n,e){let i=e.y0-(e.targetLinks.length-1)*t/2;for(const{source:s,width:r}of e.targetLinks){if(s===n)break;i+=r+t}for(const{target:t,width:s}of n.sourceLinks){if(t===e)break;i-=s}return i}return A.update=function(t){return m(t),t},A.nodeId=function(t){return arguments.length?(w="function"==typeof t?t:u(t),A):w},A.nodeAlign=function(t){return arguments.length?(L="function"==typeof t?t:u(t),A):L},A.nodeSort=function(t){return arguments.length?(n=t,A):n},A.nodeWidth=function(t){return arguments.length?(v=+t,A):v},A.nodePadding=function(n){return arguments.length?(b=t=+n,A):b},A.nodes=function(t){return arguments.length?(S="function"==typeof t?t:u(t),A):S},A.links=function(t){return arguments.length?(E="function"==typeof t?t:u(t),A):E},A.linkSort=function(t){return arguments.length?(e=t,A):e},A.size=function(t){return arguments.length?(i=s=0,r=+t[0],c=+t[1],A):[r-i,c-s]},A.extent=function(t){return arguments.length?(i=+t[0][0],r=+t[1][0],s=+t[0][1],c=+t[1][1],A):[[i,s],[r,c]]},A.iterations=function(t){return arguments.length?(K=+t,A):K},A}var b=Math.PI,w=2*b,L=1e-6,S=w-L;function E(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function K(){return new E}E.prototype=K.prototype={constructor:E,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,i){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(t,n,e,i,s,r){this._+="C"+ +t+","+ +n+","+ +e+","+ +i+","+(this._x1=+s)+","+(this._y1=+r)},arcTo:function(t,n,e,i,s){t=+t,n=+n,e=+e,i=+i,s=+s;var r=this._x1,o=this._y1,c=e-t,l=i-n,a=r-t,h=o-n,u=a*a+h*h;if(s<0)throw new Error("negative radius: "+s);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(u>L)if(Math.abs(h*c-l*a)>L&&s){var f=e-r,y=i-o,d=c*c+l*l,p=f*f+y*y,g=Math.sqrt(d),_=Math.sqrt(u),k=s*Math.tan((b-Math.acos((d+u-p)/(2*g*_)))/2),x=k/_,m=k/g;Math.abs(x-1)>L&&(this._+="L"+(t+x*a)+","+(n+x*h)),this._+="A"+s+","+s+",0,0,"+ +(h*f>a*y)+","+(this._x1=t+m*c)+","+(this._y1=n+m*l)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,i,s,r){t=+t,n=+n,r=!!r;var o=(e=+e)*Math.cos(i),c=e*Math.sin(i),l=t+o,a=n+c,h=1^r,u=r?i-s:s-i;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+l+","+a:(Math.abs(this._x1-l)>L||Math.abs(this._y1-a)>L)&&(this._+="L"+l+","+a),e&&(u<0&&(u=u%w+w),u>S?this._+="A"+e+","+e+",0,1,"+h+","+(t-o)+","+(n-c)+"A"+e+","+e+",0,1,"+h+","+(this._x1=l)+","+(this._y1=a):u>L&&(this._+="A"+e+","+e+",0,"+ +(u>=b)+","+h+","+(this._x1=t+e*Math.cos(s))+","+(this._y1=n+e*Math.sin(s))))},rect:function(t,n,e,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};const A=K;var M=Array.prototype.slice;function I(t){return function(){return t}}function T(t){return t[0]}function D(t){return t[1]}function N(t){return t.source}function P(t){return t.target}function C(t){var n=N,e=P,i=T,s=D,r=null;function o(){var o,c=M.call(arguments),l=n.apply(this,c),a=e.apply(this,c);if(r||(r=o=A()),t(r,+i.apply(this,(c[0]=l,c)),+s.apply(this,c),+i.apply(this,(c[0]=a,c)),+s.apply(this,c)),o)return r=null,o+""||null}return o.source=function(t){return arguments.length?(n=t,o):n},o.target=function(t){return arguments.length?(e=t,o):e},o.x=function(t){return arguments.length?(i="function"==typeof t?t:I(+t),o):i},o.y=function(t){return arguments.length?(s="function"==typeof t?t:I(+t),o):s},o.context=function(t){return arguments.length?(r=null==t?null:t,o):r},o}function O(t,n,e,i,s){t.moveTo(n,e),t.bezierCurveTo(n=(n+i)/2,e,n,s,i,s)}function $(t){return[t.source.x1,t.y0]}function j(t){return[t.target.x0,t.y1]}function z(){return C(O).source($).target(j)}var U=function(){var t=(0,s.K2)(function(t,n,e,i){for(e=e||{},i=t.length;i--;e[t[i]]=n);return e},"o"),n=[1,9],e=[1,10],i=[1,5,10,12],r={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:(0,s.K2)(function(t,n,e,i,s,r,o){var c=r.length-1;switch(s){case 7:const t=i.findOrCreateNode(r[c-4].trim().replaceAll('""','"')),n=i.findOrCreateNode(r[c-2].trim().replaceAll('""','"')),e=parseFloat(r[c].trim());i.addLink(t,n,e);break;case 8:case 9:case 11:this.$=r[c];break;case 10:this.$=r[c-1]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:e},{1:[2,6],7:11,10:[1,12]},t(e,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(i,[2,8]),t(i,[2,9]),{19:[1,16]},t(i,[2,11]),{1:[2,1]},{1:[2,5]},t(e,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:e},{15:18,16:7,17:8,18:n,20:e},{18:[1,19]},t(e,[2,3]),{12:[1,20]},t(i,[2,10]),{15:21,16:7,17:8,18:n,20:e},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:(0,s.K2)(function(t,n){if(!n.recoverable){var e=new Error(t);throw e.hash=n,e}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var n=this,e=[0],i=[],r=[null],o=[],c=this.table,l="",a=0,h=0,u=0,f=o.slice.call(arguments,1),y=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);y.setInput(t,d.yy),d.yy.lexer=y,d.yy.parser=this,void 0===y.yylloc&&(y.yylloc={});var g=y.yylloc;o.push(g);var _=y.options&&y.options.ranges;function k(){var t;return"number"!=typeof(t=i.pop()||y.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=n.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){e.length=e.length-2*t,r.length=r.length-t,o.length=o.length-t},"popStack"),(0,s.K2)(k,"lex");for(var x,m,v,b,w,L,S,E,K,A={};;){if(v=e[e.length-1],this.defaultActions[v]?b=this.defaultActions[v]:(null==x&&(x=k()),b=c[v]&&c[v][x]),void 0===b||!b.length||!b[0]){var M="";for(L in K=[],c[v])this.terminals_[L]&&L>2&&K.push("'"+this.terminals_[L]+"'");M=y.showPosition?"Parse error on line "+(a+1)+":\n"+y.showPosition()+"\nExpecting "+K.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==x?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(M,{text:y.match,token:this.terminals_[x]||x,line:y.yylineno,loc:g,expected:K})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+x);switch(b[0]){case 1:e.push(x),r.push(y.yytext),o.push(y.yylloc),e.push(b[1]),x=null,m?(x=m,m=null):(h=y.yyleng,l=y.yytext,a=y.yylineno,g=y.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[b[1]][1],A.$=r[r.length-S],A._$={first_line:o[o.length-(S||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(S||1)].first_column,last_column:o[o.length-1].last_column},_&&(A._$.range=[o[o.length-(S||1)].range[0],o[o.length-1].range[1]]),void 0!==(w=this.performAction.apply(A,[l,h,a,d.yy,b[1],r,o].concat(f))))return w;S&&(e=e.slice(0,-1*S*2),r=r.slice(0,-1*S),o=o.slice(0,-1*S)),e.push(this.productions_[b[1]][0]),r.push(A.$),o.push(A._$),E=c[e[e.length-2]][e[e.length-1]],e.push(E);break;case 3:return!0}}return!0},"parse")},o=function(){return{EOF:1,parseError:(0,s.K2)(function(t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)},"parseError"),setInput:(0,s.K2)(function(t,n){return this.yy=n||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var n=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===i.length?this.yylloc.first_column:0)+i[i.length-e.length].length-e[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),n=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+n+"^"},"showPosition"),test_match:(0,s.K2)(function(t,n){var e,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,n,e,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;rn[0].length)){if(n=e,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,s[r])))return t;if(this._backtrack){n=!1;continue}return!1}if(!this.options.flex)break}return n?!1!==(t=this.test_match(n,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)(function(t,n,e,i){switch(e){case 0:case 1:return this.pushState("csv"),4;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;case 6:return 20;case 7:return this.popState("escaped_text"),18;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}}}();function c(){this.yy={}}return r.lexer=o,(0,s.K2)(c,"Parser"),c.prototype=r,r.Parser=c,new c}();U.parser=U;var F=U,W=[],G=[],V=new Map,X=(0,s.K2)(()=>{W=[],G=[],V=new Map,(0,i.IU)()},"clear"),Y=class{constructor(t,n,e=0){this.source=t,this.target=n,this.value=e}static{(0,s.K2)(this,"SankeyLink")}},q=(0,s.K2)((t,n,e)=>{W.push(new Y(t,n,e))},"addLink"),Q=class{constructor(t){this.ID=t}static{(0,s.K2)(this,"SankeyNode")}},R=(0,s.K2)(t=>{t=i.Y2.sanitizeText(t,(0,i.D7)());let n=V.get(t);return void 0===n&&(n=new Q(t),V.set(t,n),G.push(n)),n},"findOrCreateNode"),B=(0,s.K2)(()=>G,"getNodes"),Z=(0,s.K2)(()=>W,"getLinks"),H=(0,s.K2)(()=>({nodes:G.map(t=>({id:t.ID})),links:W.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),J={nodesMap:V,getConfig:(0,s.K2)(()=>(0,i.D7)().sankey,"getConfig"),getNodes:B,getLinks:Z,getGraph:H,addLink:q,findOrCreateNode:R,getAccTitle:i.iN,setAccTitle:i.SV,getAccDescription:i.m7,setAccDescription:i.EI,getDiagramTitle:i.ab,setDiagramTitle:i.ke,clear:X},tt=class t{static{(0,s.K2)(this,"Uid")}static{this.count=0}static next(n){return new t(n+ ++t.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}},nt={left:function(t){return t.depth},right:function(t,n){return n-1-t.height},center:function(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?o(t.sourceLinks,c)-1:0},justify:l},et=(0,s.K2)(function(t,n,e,o){const{securityLevel:c,sankey:l}=(0,i.D7)(),a=i.ME.sankey;let h;"sandbox"===c&&(h=(0,r.Ltv)("#i"+n));const u="sandbox"===c?(0,r.Ltv)(h.nodes()[0].contentDocument.body):(0,r.Ltv)("body"),f="sandbox"===c?u.select(`[id="${n}"]`):(0,r.Ltv)(`[id="${n}"]`),y=l?.width??a.width,d=l?.height??a.width,p=l?.useMaxWidth??a.useMaxWidth,g=l?.nodeAlignment??a.nodeAlignment,_=l?.prefix??a.prefix,k=l?.suffix??a.suffix,x=l?.showValues??a.showValues,m=o.db.getGraph(),b=nt[g];v().nodeId(t=>t.id).nodeWidth(10).nodePadding(10+(x?15:0)).nodeAlign(b).extent([[0,0],[y,d]])(m);const w=(0,r.UMr)(r.zt);f.append("g").attr("class","nodes").selectAll(".node").data(m.nodes).join("g").attr("class","node").attr("id",t=>(t.uid=tt.next("node-")).id).attr("transform",function(t){return"translate("+t.x0+","+t.y0+")"}).attr("x",t=>t.x0).attr("y",t=>t.y0).append("rect").attr("height",t=>t.y1-t.y0).attr("width",t=>t.x1-t.x0).attr("fill",t=>w(t.id));const L=(0,s.K2)(({id:t,value:n})=>x?`${t}\n${_}${Math.round(100*n)/100}${k}`:t,"getText");f.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(m.nodes).join("text").attr("x",t=>t.x0(t.y1+t.y0)/2).attr("dy",(x?"0":"0.35")+"em").attr("text-anchor",t=>t.x0(t.uid=tt.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",t=>t.source.x1).attr("x2",t=>t.target.x0);t.append("stop").attr("offset","0%").attr("stop-color",t=>w(t.source.id)),t.append("stop").attr("offset","100%").attr("stop-color",t=>w(t.target.id))}let K;switch(E){case"gradient":K=(0,s.K2)(t=>t.uid,"coloring");break;case"source":K=(0,s.K2)(t=>w(t.source.id),"coloring");break;case"target":K=(0,s.K2)(t=>w(t.target.id),"coloring");break;default:K=E}S.append("path").attr("d",z()).attr("stroke",K).attr("stroke-width",t=>Math.max(1,t.width)),(0,i.ot)(void 0,f,0,p)},"draw"),it={draw:et},st=(0,s.K2)(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,"\n").trim(),"prepareTextForParsing"),rt=(0,s.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n }`,"getStyles"),ot=F.parse.bind(F);F.parse=t=>ot(st(t));var ct={styles:rt,parser:F,db:J,renderer:it}}}]); \ No newline at end of file diff --git a/user/assets/js/1746.a1092246.js b/user/assets/js/1746.a1092246.js new file mode 100644 index 0000000..e66b0a4 --- /dev/null +++ b/user/assets/js/1746.a1092246.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[1746],{1746:(t,e,s)=>{s.d(e,{Lh:()=>T,NM:()=>g,_$:()=>p,tM:()=>b});var i=s(2501),n=s(9625),a=s(1152),r=s(45),u=s(3226),l=s(7633),o=s(797),c=s(451),h=function(){var t=(0,o.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,18],s=[1,19],i=[1,20],n=[1,41],a=[1,42],r=[1,26],u=[1,24],l=[1,25],c=[1,32],h=[1,33],p=[1,34],d=[1,45],A=[1,35],y=[1,36],C=[1,37],m=[1,38],g=[1,27],b=[1,28],E=[1,29],T=[1,30],k=[1,31],f=[1,44],D=[1,46],F=[1,43],B=[1,47],_=[1,9],S=[1,8,9],N=[1,58],L=[1,59],$=[1,60],x=[1,61],I=[1,62],O=[1,63],v=[1,64],w=[1,8,9,41],R=[1,76],P=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],K=[1,8,9,12,13,18,20,22,39,41,44,50,60,68,69,70,71,72,73,74,79,81,86,100,102,103],M=[13,60,86,100,102,103],G=[13,60,73,74,86,100,102,103],U=[13,60,68,69,70,71,72,86,100,102,103],Y=[1,100],z=[1,117],Q=[1,113],W=[1,109],X=[1,115],j=[1,110],q=[1,111],H=[1,112],V=[1,114],J=[1,116],Z=[22,48,60,61,82,86,87,88,89,90],tt=[1,8,9,39,41,44],et=[1,8,9,22],st=[1,145],it=[1,8,9,61],nt=[1,8,9,22,48,60,61,82,86,87,88,89,90],at={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,emptyBody:47,SPACE:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",48:"SPACE",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[43,2],[43,3],[47,0],[47,2],[47,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:(0,o.K2)(function(t,e,s,i,n,a,r){var u=a.length-1;switch(n){case 8:this.$=a[u-1];break;case 9:case 10:case 13:case 15:this.$=a[u];break;case 11:case 14:this.$=a[u-2]+"."+a[u];break;case 12:case 16:case 100:this.$=a[u-1]+a[u];break;case 17:case 18:this.$=a[u-1]+"~"+a[u]+"~";break;case 19:i.addRelation(a[u]);break;case 20:a[u-1].title=i.cleanupLabel(a[u]),i.addRelation(a[u-1]);break;case 31:this.$=a[u].trim(),i.setAccTitle(this.$);break;case 32:case 33:this.$=a[u].trim(),i.setAccDescription(this.$);break;case 34:i.addClassesToNamespace(a[u-3],a[u-1]);break;case 35:i.addClassesToNamespace(a[u-4],a[u-1]);break;case 36:this.$=a[u],i.addNamespace(a[u]);break;case 37:case 51:case 64:case 97:this.$=[a[u]];break;case 38:this.$=[a[u-1]];break;case 39:a[u].unshift(a[u-2]),this.$=a[u];break;case 41:i.setCssClass(a[u-2],a[u]);break;case 42:i.addMembers(a[u-3],a[u-1]);break;case 44:i.setCssClass(a[u-5],a[u-3]),i.addMembers(a[u-5],a[u-1]);break;case 45:this.$=a[u],i.addClass(a[u]);break;case 46:this.$=a[u-1],i.addClass(a[u-1]),i.setClassLabel(a[u-1],a[u]);break;case 50:i.addAnnotation(a[u],a[u-2]);break;case 52:a[u].push(a[u-1]),this.$=a[u];break;case 53:case 55:case 56:break;case 54:i.addMember(a[u-1],i.cleanupLabel(a[u]));break;case 57:this.$={id1:a[u-2],id2:a[u],relation:a[u-1],relationTitle1:"none",relationTitle2:"none"};break;case 58:this.$={id1:a[u-3],id2:a[u],relation:a[u-1],relationTitle1:a[u-2],relationTitle2:"none"};break;case 59:this.$={id1:a[u-3],id2:a[u],relation:a[u-2],relationTitle1:"none",relationTitle2:a[u-1]};break;case 60:this.$={id1:a[u-4],id2:a[u],relation:a[u-2],relationTitle1:a[u-3],relationTitle2:a[u-1]};break;case 61:i.addNote(a[u],a[u-1]);break;case 62:i.addNote(a[u]);break;case 63:this.$=a[u-2],i.defineClass(a[u-1],a[u]);break;case 65:this.$=a[u-2].concat([a[u]]);break;case 66:i.setDirection("TB");break;case 67:i.setDirection("BT");break;case 68:i.setDirection("RL");break;case 69:i.setDirection("LR");break;case 70:this.$={type1:a[u-2],type2:a[u],lineType:a[u-1]};break;case 71:this.$={type1:"none",type2:a[u],lineType:a[u-1]};break;case 72:this.$={type1:a[u-1],type2:"none",lineType:a[u]};break;case 73:this.$={type1:"none",type2:"none",lineType:a[u]};break;case 74:this.$=i.relationType.AGGREGATION;break;case 75:this.$=i.relationType.EXTENSION;break;case 76:this.$=i.relationType.COMPOSITION;break;case 77:this.$=i.relationType.DEPENDENCY;break;case 78:this.$=i.relationType.LOLLIPOP;break;case 79:this.$=i.lineType.LINE;break;case 80:this.$=i.lineType.DOTTED_LINE;break;case 81:case 87:this.$=a[u-2],i.setClickEvent(a[u-1],a[u]);break;case 82:case 88:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 83:this.$=a[u-2],i.setLink(a[u-1],a[u]);break;case 84:this.$=a[u-3],i.setLink(a[u-2],a[u-1],a[u]);break;case 85:this.$=a[u-3],i.setLink(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 86:this.$=a[u-4],i.setLink(a[u-3],a[u-2],a[u]),i.setTooltip(a[u-3],a[u-1]);break;case 89:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1],a[u]);break;case 90:this.$=a[u-4],i.setClickEvent(a[u-3],a[u-2],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 91:this.$=a[u-3],i.setLink(a[u-2],a[u]);break;case 92:this.$=a[u-4],i.setLink(a[u-3],a[u-1],a[u]);break;case 93:this.$=a[u-4],i.setLink(a[u-3],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 94:this.$=a[u-5],i.setLink(a[u-4],a[u-2],a[u]),i.setTooltip(a[u-4],a[u-1]);break;case 95:this.$=a[u-2],i.setCssStyle(a[u-1],a[u]);break;case 96:i.setCssClass(a[u-1],a[u]);break;case 98:a[u-2].push(a[u]),this.$=a[u-2]}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,49:r,51:u,52:l,54:c,56:h,57:p,60:d,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:T,83:k,86:f,100:D,102:F,103:B},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(_,[2,5],{8:[1,48]}),{8:[1,49]},t(S,[2,19],{22:[1,50]}),t(S,[2,21]),t(S,[2,22]),t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),t(S,[2,26]),t(S,[2,27]),t(S,[2,28]),t(S,[2,29]),t(S,[2,30]),{34:[1,51]},{36:[1,52]},t(S,[2,33]),t(S,[2,53],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:N,69:L,70:$,71:x,72:I,73:O,74:v}),{39:[1,65]},t(w,[2,40],{39:[1,67],44:[1,66]}),t(S,[2,55]),t(S,[2,56]),{16:68,60:d,86:f,100:D,102:F},{16:39,17:40,19:69,60:d,86:f,100:D,102:F,103:B},{16:39,17:40,19:70,60:d,86:f,100:D,102:F,103:B},{16:39,17:40,19:71,60:d,86:f,100:D,102:F,103:B},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:d,86:f,100:D,102:F,103:B},{13:R,55:75},{58:77,60:[1,78]},t(S,[2,66]),t(S,[2,67]),t(S,[2,68]),t(S,[2,69]),t(P,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:d,86:f,100:D,102:F,103:B}),t(P,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:d,86:f,100:D,102:F,103:B},{16:39,17:40,19:86,60:d,86:f,100:D,102:F,103:B},t(K,[2,123]),t(K,[2,124]),t(K,[2,125]),t(K,[2,126]),t([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,127]),t(_,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:87,33:e,35:s,37:i,42:n,46:a,49:r,51:u,52:l,54:c,56:h,57:p,60:d,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:T,83:k,86:f,100:D,102:F,103:B}),{5:88,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,49:r,51:u,52:l,54:c,56:h,57:p,60:d,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:T,83:k,86:f,100:D,102:F,103:B},t(S,[2,20]),t(S,[2,31]),t(S,[2,32]),{13:[1,90],16:39,17:40,19:89,60:d,86:f,100:D,102:F,103:B},{53:91,66:56,67:57,68:N,69:L,70:$,71:x,72:I,73:O,74:v},t(S,[2,54]),{67:92,73:O,74:v},t(M,[2,73],{66:93,68:N,69:L,70:$,71:x,72:I}),t(G,[2,74]),t(G,[2,75]),t(G,[2,76]),t(G,[2,77]),t(G,[2,78]),t(U,[2,79]),t(U,[2,80]),{8:[1,95],24:96,40:94,43:23,46:a},{16:97,60:d,86:f,100:D,102:F},{41:[1,99],45:98,51:Y},{50:[1,101]},{13:[1,102]},{13:[1,103]},{79:[1,104],81:[1,105]},{22:z,48:Q,59:106,60:W,82:X,84:107,85:108,86:j,87:q,88:H,89:V,90:J},{60:[1,118]},{13:R,55:119},t(S,[2,62]),t(S,[2,128]),{22:z,48:Q,59:120,60:W,61:[1,121],82:X,84:107,85:108,86:j,87:q,88:H,89:V,90:J},t(Z,[2,64]),{16:39,17:40,19:122,60:d,86:f,100:D,102:F,103:B},t(P,[2,16]),t(P,[2,17]),t(P,[2,18]),{39:[2,36]},{15:124,16:84,17:85,18:[1,123],39:[2,9],60:d,86:f,100:D,102:F,103:B},{39:[2,10]},t(tt,[2,45],{11:125,12:[1,126]}),t(_,[2,7]),{9:[1,127]},t(et,[2,57]),{16:39,17:40,19:128,60:d,86:f,100:D,102:F,103:B},{13:[1,130],16:39,17:40,19:129,60:d,86:f,100:D,102:F,103:B},t(M,[2,72],{66:131,68:N,69:L,70:$,71:x,72:I}),t(M,[2,71]),{41:[1,132]},{24:96,40:133,43:23,46:a},{8:[1,134],41:[2,37]},t(w,[2,41],{39:[1,135]}),{41:[1,136]},t(w,[2,43]),{41:[2,51],45:137,51:Y},{16:39,17:40,19:138,60:d,86:f,100:D,102:F,103:B},t(S,[2,81],{13:[1,139]}),t(S,[2,83],{13:[1,141],77:[1,140]}),t(S,[2,87],{13:[1,142],80:[1,143]}),{13:[1,144]},t(S,[2,95],{61:st}),t(it,[2,97],{85:146,22:z,48:Q,60:W,82:X,86:j,87:q,88:H,89:V,90:J}),t(nt,[2,99]),t(nt,[2,101]),t(nt,[2,102]),t(nt,[2,103]),t(nt,[2,104]),t(nt,[2,105]),t(nt,[2,106]),t(nt,[2,107]),t(nt,[2,108]),t(nt,[2,109]),t(S,[2,96]),t(S,[2,61]),t(S,[2,63],{61:st}),{60:[1,147]},t(P,[2,14]),{15:148,16:84,17:85,60:d,86:f,100:D,102:F,103:B},{39:[2,12]},t(tt,[2,46]),{13:[1,149]},{1:[2,4]},t(et,[2,59]),t(et,[2,58]),{16:39,17:40,19:150,60:d,86:f,100:D,102:F,103:B},t(M,[2,70]),t(S,[2,34]),{41:[1,151]},{24:96,40:152,41:[2,38],43:23,46:a},{45:153,51:Y},t(w,[2,42]),{41:[2,52]},t(S,[2,50]),t(S,[2,82]),t(S,[2,84]),t(S,[2,85],{77:[1,154]}),t(S,[2,88]),t(S,[2,89],{13:[1,155]}),t(S,[2,91],{13:[1,157],77:[1,156]}),{22:z,48:Q,60:W,82:X,84:158,85:108,86:j,87:q,88:H,89:V,90:J},t(nt,[2,100]),t(Z,[2,65]),{39:[2,11]},{14:[1,159]},t(et,[2,60]),t(S,[2,35]),{41:[2,39]},{41:[1,160]},t(S,[2,86]),t(S,[2,90]),t(S,[2,92]),t(S,[2,93],{77:[1,161]}),t(it,[2,98],{85:146,22:z,48:Q,60:W,82:X,86:j,87:q,88:H,89:V,90:J}),t(tt,[2,8]),t(w,[2,44]),t(S,[2,94])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,36],85:[2,10],124:[2,12],127:[2,4],137:[2,52],148:[2,11],152:[2,39]},parseError:(0,o.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var e=this,s=[0],i=[],n=[null],a=[],r=this.table,u="",l=0,c=0,h=0,p=a.slice.call(arguments,1),d=Object.create(this.lexer),A={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(A.yy[y]=this.yy[y]);d.setInput(t,A.yy),A.yy.lexer=d,A.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var C=d.yylloc;a.push(C);var m=d.options&&d.options.ranges;function g(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof A.yy.parseError?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,a.length=a.length-t},"popStack"),(0,o.K2)(g,"lex");for(var b,E,T,k,f,D,F,B,_,S={};;){if(T=s[s.length-1],this.defaultActions[T]?k=this.defaultActions[T]:(null==b&&(b=g()),k=r[T]&&r[T][b]),void 0===k||!k.length||!k[0]){var N="";for(D in _=[],r[T])this.terminals_[D]&&D>2&&_.push("'"+this.terminals_[D]+"'");N=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+_.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(N,{text:d.match,token:this.terminals_[b]||b,line:d.yylineno,loc:C,expected:_})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+b);switch(k[0]){case 1:s.push(b),n.push(d.yytext),a.push(d.yylloc),s.push(k[1]),b=null,E?(b=E,E=null):(c=d.yyleng,u=d.yytext,l=d.yylineno,C=d.yylloc,h>0&&h--);break;case 2:if(F=this.productions_[k[1]][1],S.$=n[n.length-F],S._$={first_line:a[a.length-(F||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(F||1)].first_column,last_column:a[a.length-1].last_column},m&&(S._$.range=[a[a.length-(F||1)].range[0],a[a.length-1].range[1]]),void 0!==(f=this.performAction.apply(S,[u,c,l,A.yy,k[1],n,a].concat(p))))return f;F&&(s=s.slice(0,-1*F*2),n=n.slice(0,-1*F),a=a.slice(0,-1*F)),s.push(this.productions_[k[1]][0]),n.push(S.$),a.push(S._$),B=r[s[s.length-2]][s[s.length-1]],s.push(B);break;case 3:return!0}}return!0},"parse")},rt=function(){return{EOF:1,parseError:(0,o.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,o.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,o.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var a in n)this[a]=n[a];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),a=0;ae[0].length)){if(e=s,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,o.K2)(function(t,e,s,i){switch(s){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:case 5:case 14:case 31:case 36:case 40:case 47:break;case 6:return this.begin("acc_title"),33;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),35;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 19:case 22:case 24:case 58:case 61:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 35:return 8;case 15:case 16:return 7;case 17:case 37:case 45:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 23:return 80;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;case 30:case 39:return this.popState(),8;case 32:return this.begin("namespace-body"),39;case 33:case 43:return this.popState(),41;case 34:case 44:return"EOF_IN_STRUCT";case 38:return this.begin("class"),46;case 41:return this.popState(),this.popState(),41;case 42:return this.begin("class-body"),39;case 46:return"OPEN_IN_STRUCT";case 48:return"MEMBER";case 49:return 83;case 50:return 75;case 51:return 76;case 52:return 78;case 53:return 54;case 54:return 56;case 55:return 49;case 56:return 50;case 57:return 81;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:case 65:case 66:case 67:return 77;case 68:case 69:return 69;case 70:case 71:return 71;case 72:return 70;case 73:return 68;case 74:return 72;case 75:return 73;case 76:return 74;case 77:return 22;case 78:return 44;case 79:return 100;case 80:return 18;case 81:return"PLUS";case 82:return 87;case 83:return 61;case 84:case 85:return 89;case 86:return 90;case 87:case 88:return"EQUALS";case 89:return 60;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 86;case 94:return 102;case 95:case 96:return 48;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}}}();function ut(){this.yy={}}return at.lexer=rt,(0,o.K2)(ut,"Parser"),ut.prototype=at,at.Parser=ut,new ut}();h.parser=h;var p=h,d=["#","+","~","-",""],A=class{static{(0,o.K2)(this,"ClassMember")}constructor(t,e){this.memberType=e,this.visibility="",this.classifier="",this.text="";const s=(0,l.jZ)(t,(0,l.D7)());this.parseMember(s)}getDisplayDetails(){let t=this.visibility+(0,l.QO)(this.id);"method"===this.memberType&&(t+=`(${(0,l.QO)(this.parameters.trim())})`,this.returnType&&(t+=" : "+(0,l.QO)(this.returnType))),t=t.trim();return{displayText:t,cssStyle:this.parseClassifier()}}parseMember(t){let e="";if("method"===this.memberType){const s=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(s){const t=s[1]?s[1].trim():"";if(d.includes(t)&&(this.visibility=t),this.id=s[2],this.parameters=s[3]?s[3].trim():"",e=s[4]?s[4].trim():"",this.returnType=s[5]?s[5].trim():"",""===e){const t=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(t)&&(e=t,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const s=t.length,i=t.substring(0,1),n=t.substring(s-1);d.includes(i)&&(this.visibility=i),/[$*]/.exec(n)&&(e=n),this.id=t.substring(""===this.visibility?0:1,""===e?s:s-1)}this.classifier=e,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();const s=`${this.visibility?"\\"+this.visibility:""}${(0,l.QO)(this.id)}${"method"===this.memberType?`(${(0,l.QO)(this.parameters)})${this.returnType?" : "+(0,l.QO)(this.returnType):""}`:""}`;this.text=s.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}},y="classId-",C=0,m=(0,o.K2)(t=>l.Y2.sanitizeText(t,(0,l.D7)()),"sanitizeText"),g=class{constructor(){this.relations=[],this.classes=new Map,this.styleClasses=new Map,this.notes=[],this.interfaces=[],this.namespaces=new Map,this.namespaceCounter=0,this.functions=[],this.lineType={LINE:0,DOTTED_LINE:1},this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},this.setupToolTips=(0,o.K2)(t=>{let e=(0,c.Ltv)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,c.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,c.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",t=>{const s=(0,c.Ltv)(t.currentTarget);if(null===s.attr("title"))return;const i=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.top-14+document.body.scrollTop+"px"),e.html(e.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",t=>{e.transition().duration(500).style("opacity",0);(0,c.Ltv)(t.currentTarget).classed("hover",!1)})},"setupToolTips"),this.direction="TB",this.setAccTitle=l.SV,this.getAccTitle=l.iN,this.setAccDescription=l.EI,this.getAccDescription=l.m7,this.setDiagramTitle=l.ke,this.getDiagramTitle=l.ab,this.getConfig=(0,o.K2)(()=>(0,l.D7)().class,"getConfig"),this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{(0,o.K2)(this,"ClassDB")}splitClassNameAndType(t){const e=l.Y2.sanitizeText(t,(0,l.D7)());let s="",i=e;if(e.indexOf("~")>0){const t=e.split("~");i=m(t[0]),s=m(t[1])}return{className:i,type:s}}setClassLabel(t,e){const s=l.Y2.sanitizeText(t,(0,l.D7)());e&&(e=m(e));const{className:i}=this.splitClassNameAndType(s);this.classes.get(i).label=e,this.classes.get(i).text=`${e}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(t){const e=l.Y2.sanitizeText(t,(0,l.D7)()),{className:s,type:i}=this.splitClassNameAndType(e);if(this.classes.has(s))return;const n=l.Y2.sanitizeText(s,(0,l.D7)());this.classes.set(n,{id:n,type:i,label:n,text:`${n}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:y+n+"-"+C}),C++}addInterface(t,e){const s={id:`interface${this.interfaces.length}`,label:t,classId:e};this.interfaces.push(s)}lookUpDomId(t){const e=l.Y2.sanitizeText(t,(0,l.D7)());if(this.classes.has(e))return this.classes.get(e).domId;throw new Error("Class not found: "+e)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",(0,l.IU)()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(t){o.Rm.debug("Adding relation: "+JSON.stringify(t));const e=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1!==this.relationType.LOLLIPOP||e.includes(t.relation.type2)?t.relation.type2!==this.relationType.LOLLIPOP||e.includes(t.relation.type1)?(this.addClass(t.id1),this.addClass(t.id2)):(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2="interface"+(this.interfaces.length-1)):(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1="interface"+(this.interfaces.length-1)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=l.Y2.sanitizeText(t.relationTitle1.trim(),(0,l.D7)()),t.relationTitle2=l.Y2.sanitizeText(t.relationTitle2.trim(),(0,l.D7)()),this.relations.push(t)}addAnnotation(t,e){const s=this.splitClassNameAndType(t).className;this.classes.get(s).annotations.push(e)}addMember(t,e){this.addClass(t);const s=this.splitClassNameAndType(t).className,i=this.classes.get(s);if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?i.annotations.push(m(t.substring(2,t.length-2))):t.indexOf(")")>0?i.methods.push(new A(t,"method")):t&&i.members.push(new A(t,"attribute"))}}addMembers(t,e){Array.isArray(e)&&(e.reverse(),e.forEach(e=>this.addMember(t,e)))}addNote(t,e){const s={id:`note${this.notes.length}`,class:e,text:t};this.notes.push(s)}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),m(t.trim())}setCssClass(t,e){t.split(",").forEach(t=>{let s=t;/\d/.exec(t[0])&&(s=y+s);const i=this.classes.get(s);i&&(i.cssClasses+=" "+e)})}defineClass(t,e){for(const s of t){let t=this.styleClasses.get(s);void 0===t&&(t={id:s,styles:[],textStyles:[]},this.styleClasses.set(s,t)),e&&e.forEach(e=>{if(/color/.exec(e)){const s=e.replace("fill","bgFill");t.textStyles.push(s)}t.styles.push(e)}),this.classes.forEach(t=>{t.cssClasses.includes(s)&&t.styles.push(...e.flatMap(t=>t.split(",")))})}}setTooltip(t,e){t.split(",").forEach(t=>{void 0!==e&&(this.classes.get(t).tooltip=m(e))})}getTooltip(t,e){return e&&this.namespaces.has(e)?this.namespaces.get(e).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,e,s){const i=(0,l.D7)();t.split(",").forEach(t=>{let n=t;/\d/.exec(t[0])&&(n=y+n);const a=this.classes.get(n);a&&(a.link=u._K.formatUrl(e,i),"sandbox"===i.securityLevel?a.linkTarget="_top":a.linkTarget="string"==typeof s?m(s):"_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,e,s){t.split(",").forEach(t=>{this.setClickFunc(t,e,s),this.classes.get(t).haveCallback=!0}),this.setCssClass(t,"clickable")}setClickFunc(t,e,s){const i=l.Y2.sanitizeText(t,(0,l.D7)());if("loose"!==(0,l.D7)().securityLevel)return;if(void 0===e)return;const n=i;if(this.classes.has(n)){const t=this.lookUpDomId(n);let i=[];if("string"==typeof s){i=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{const s=document.querySelector(`[id="${t}"]`);null!==s&&s.addEventListener("click",()=>{u._K.runFunc(e,...i)},!1)})}}bindFunctions(t){this.functions.forEach(e=>{e(t)})}getDirection(){return this.direction}setDirection(t){this.direction=t}addNamespace(t){this.namespaces.has(t)||(this.namespaces.set(t,{id:t,classes:new Map,children:{},domId:y+t+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,e){if(this.namespaces.has(t))for(const s of e){const{className:e}=this.splitClassNameAndType(s);this.classes.get(e).parent=t,this.namespaces.get(t).classes.set(e,this.classes.get(e))}}setCssStyle(t,e){const s=this.classes.get(t);if(e&&s)for(const i of e)i.includes(",")?s.styles.push(...i.split(",")):s.styles.push(i)}getArrowMarker(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}getData(){const t=[],e=[],s=(0,l.D7)();for(const n of this.namespaces.keys()){const e=this.namespaces.get(n);if(e){const i={id:e.id,label:e.id,isGroup:!0,padding:s.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:s.look};t.push(i)}}for(const n of this.classes.keys()){const e=this.classes.get(n);if(e){const i=e;i.parentId=e.parent,i.look=s.look,t.push(i)}}let i=0;for(const n of this.notes){i++;const a={id:n.id,label:n.text,isGroup:!1,shape:"note",padding:s.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${s.themeVariables.noteBkgColor}`,`stroke: ${s.themeVariables.noteBorderColor}`],look:s.look};t.push(a);const r=this.classes.get(n.class)?.id??"";if(r){const t={id:`edgeNote${i}`,start:n.id,end:r,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:s.look};e.push(t)}}for(const n of this.interfaces){const e={id:n.id,label:n.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:s.look};t.push(e)}i=0;for(const n of this.relations){i++;const t={id:(0,u.rY)(n.id1,n.id2,{prefix:"id",counter:i}),start:n.id1,end:n.id2,type:"normal",label:n.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(n.relation.type1),arrowTypeEnd:this.getArrowMarker(n.relation.type2),startLabelRight:"none"===n.relationTitle1?"":n.relationTitle1,endLabelLeft:"none"===n.relationTitle2?"":n.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:n.style||"",pattern:1==n.relation.lineType?"dashed":"solid",look:s.look};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:this.getDirection()}}},b=(0,o.K2)(t=>`g.classGroup text {\n fill: ${t.nodeBorder||t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n\n.labelBkg {\n background: ${t.mainBkg};\n}\n.edgeLabel .label span {\n background: ${t.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n ${(0,i.o)()}\n`,"getStyles"),E=(0,o.K2)((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir"),T={getClasses:(0,o.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,o.K2)(async function(t,e,s,i){o.Rm.info("REF0:"),o.Rm.info("Drawing class diagram (v3)",e);const{securityLevel:c,state:h,layout:p}=(0,l.D7)(),d=i.db.getData(),A=(0,n.A)(e,c);d.type=i.type,d.layoutAlgorithm=(0,r.q7)(p),d.nodeSpacing=h?.nodeSpacing||50,d.rankSpacing=h?.rankSpacing||50,d.markers=["aggregation","extension","composition","dependency","lollipop"],d.diagramId=e,await(0,r.XX)(d,A);u._K.insertTitle(A,"classDiagramTitleText",h?.titleTopMargin??25,i.db.getDiagramTitle()),(0,a.P)(A,8,"classDiagram",h?.useMaxWidth??!0)},"draw"),getDir:E}},2501:(t,e,s)=>{s.d(e,{o:()=>i});var i=(0,s(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")}}]); \ No newline at end of file diff --git a/user/assets/js/17896441.dd946504.js b/user/assets/js/17896441.dd946504.js new file mode 100644 index 0000000..e554f6c --- /dev/null +++ b/user/assets/js/17896441.dd946504.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8401],{4552:(e,t,n)=>{n.r(t),n.d(t,{default:()=>he});var s=n(6540),a=n(5500),i=n(9532),o=n(4848);const l=s.createContext(null);function r({children:e,content:t}){const n=function(e){return(0,s.useMemo)(()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc}),[e])}(t);return(0,o.jsx)(l.Provider,{value:n,children:e})}function c(){const e=(0,s.useContext)(l);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:t,assets:n}=c();return(0,o.jsx)(a.be,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(4164),m=n(4581),h=n(1312),b=n(8774);function g(e){const{permalink:t,title:n,subLabel:s,isNext:a}=e;return(0,o.jsxs)(b.A,{className:(0,u.A)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,o.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,o.jsx)("div",{className:"pagination-nav__label",children:n})]})}function p(e){const{className:t,previous:n,next:s}=e;return(0,o.jsxs)("nav",{className:(0,u.A)(t,"pagination-nav"),"aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[n&&(0,o.jsx)(g,{...n,subLabel:(0,o.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),s&&(0,o.jsx)(g,{...s,subLabel:(0,o.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function x(){const{metadata:e}=c();return(0,o.jsx)(p,{className:"docusaurus-mt-lg",previous:e.previous,next:e.next})}var v=n(4586),j=n(8295),f=n(7559),_=n(3886),A=n(3025);const N={unreleased:function({siteTitle:e,versionMetadata:t}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:e,versionLabel:(0,o.jsx)("b",{children:t.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function({siteTitle:e,versionMetadata:t}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:e,versionLabel:(0,o.jsx)("b",{children:t.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function C(e){const t=N[e.versionMetadata.banner];return(0,o.jsx)(t,{...e})}function T({versionLabel:e,to:t,onClick:n}){return(0,o.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:e,latestVersionLink:(0,o.jsx)("b",{children:(0,o.jsx)(b.A,{to:t,onClick:n,children:(0,o.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function L({className:e,versionMetadata:t}){const{siteConfig:{title:n}}=(0,v.A)(),{pluginId:s}=(0,j.vT)({failfast:!0}),{savePreferredVersionName:a}=(0,_.g1)(s),{latestDocSuggestion:i,latestVersionSuggestion:l}=(0,j.HW)(s),r=i??(c=l).docs.find(e=>e.id===c.mainDocId);var c;return(0,o.jsxs)("div",{className:(0,u.A)(e,f.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,o.jsx)("div",{children:(0,o.jsx)(C,{siteTitle:n,versionMetadata:t})}),(0,o.jsx)("div",{className:"margin-top--md",children:(0,o.jsx)(T,{versionLabel:l.label,to:r.path,onClick:()=>a(l.name)})})]})}function k({className:e}){const t=(0,A.r)();return t.banner?(0,o.jsx)(L,{className:e,versionMetadata:t}):null}function M({className:e}){const t=(0,A.r)();return t.badge?(0,o.jsx)("span",{className:(0,u.A)(e,f.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,o.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:t.label},children:"Version: {versionLabel}"})}):null}const w={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function y({permalink:e,label:t,count:n,description:s}){return(0,o.jsxs)(b.A,{rel:"tag",href:e,title:s,className:(0,u.A)(w.tag,n?w.tagWithCount:w.tagRegular),children:[t,n&&(0,o.jsx)("span",{children:n})]})}const I={tags:"tags_jXut",tag:"tag_QGVx"};function V({tags:e}){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("b",{children:(0,o.jsx)(h.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,o.jsx)("ul",{className:(0,u.A)(I.tags,"padding--none","margin-left--sm"),children:e.map(e=>(0,o.jsx)("li",{className:I.tag,children:(0,o.jsx)(y,{...e})},e.permalink))})]})}var B=n(2153);function H(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s,tags:a}=e,i=a.length>0,l=!!(t||n||s);return i||l?(0,o.jsxs)("footer",{className:(0,u.A)(f.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,o.jsx)("div",{className:(0,u.A)("row margin-top--sm",f.G.docs.docFooterTagsRow),children:(0,o.jsx)("div",{className:"col",children:(0,o.jsx)(V,{tags:a})})}),l&&(0,o.jsx)(B.A,{className:(0,u.A)("margin-top--sm",f.G.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:n,lastUpdatedBy:s})]}):null}function E({id:e,host:t,repo:a,repoId:i,category:l,categoryId:r,mapping:c,term:d,strict:u,reactionsEnabled:m,emitMetadata:h,inputPosition:b,theme:g,lang:p,loading:x}){const[v,j]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{v||n.e(416).then(n.bind(n,416)).then(()=>j(!0))},[]),v?(0,o.jsx)("giscus-widget",{id:e,host:t,repo:a,repoid:i,category:l,categoryid:r,mapping:c,term:d,strict:u,reactionsenabled:m,emitmetadata:h,inputposition:b,theme:g,lang:p,loading:x}):null}var G=n(5293);function O(){const{colorMode:e}=(0,G.G)();return(0,o.jsx)(E,{repo:"jpawlowski/hass.tibber_prices",repoId:"R_kgDOObwUag",category:"General",categoryId:"DIC_kwDOObwUas4CzVw_",mapping:"pathname",strict:"0",reactionsEnabled:"1",emitMetadata:"0",inputPosition:"top",theme:"dark"===e?"dark":"light",lang:"en",loading:"lazy"})}function D(e){const{frontMatter:t}=c(),n=!1!==t.comments;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(H,{...e}),n&&(0,o.jsx)("div",{style:{marginTop:"3rem"},children:(0,o.jsx)(O,{})})]})}var F=n(1422),R=n(5195);const U={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function P({collapsed:e,...t}){return(0,o.jsx)("button",{type:"button",...t,className:(0,u.A)("clean-btn",U.tocCollapsibleButton,!e&&U.tocCollapsibleButtonExpanded,t.className),children:(0,o.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const S={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function z({toc:e,className:t,minHeadingLevel:n,maxHeadingLevel:s}){const{collapsed:a,toggleCollapsed:i}=(0,F.u)({initialState:!0});return(0,o.jsxs)("div",{className:(0,u.A)(S.tocCollapsible,!a&&S.tocCollapsibleExpanded,t),children:[(0,o.jsx)(P,{collapsed:a,onClick:i}),(0,o.jsx)(F.N,{lazy:!0,className:S.tocCollapsibleContent,collapsed:a,children:(0,o.jsx)(R.A,{toc:e,minHeadingLevel:n,maxHeadingLevel:s})})]})}const W={tocMobile:"tocMobile_ITEo"};function $(){const{toc:e,frontMatter:t}=c();return(0,o.jsx)(z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.A)(f.G.docs.docTocMobile,W.tocMobile)})}var J=n(7763);function Q(){const{toc:e,frontMatter:t}=c();return(0,o.jsx)(J.A,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:f.G.docs.docTocDesktop})}var X=n(1107),Y=n(1336);function Z({children:e}){const t=function(){const{metadata:e,frontMatter:t,contentTitle:n}=c();return t.hide_title||void 0!==n?null:e.title}();return(0,o.jsxs)("div",{className:(0,u.A)(f.G.docs.docMarkdown,"markdown"),children:[t&&(0,o.jsx)("header",{children:(0,o.jsx)(X.A,{as:"h1",children:t})}),(0,o.jsx)(Y.A,{children:e})]})}var q=n(4718),K=n(9169),ee=n(6025);function te(e){return(0,o.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,o.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const ne={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function se(){const e=(0,ee.Ay)("/");return(0,o.jsx)("li",{className:"breadcrumbs__item",children:(0,o.jsx)(b.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,o.jsx)(te,{className:ne.breadcrumbHomeIcon})})})}var ae=n(5260);function ie(e){const t=function({breadcrumbs:e}){const{siteConfig:t}=(0,v.A)();return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.filter(e=>e.href).map((e,n)=>({"@type":"ListItem",position:n+1,name:e.label,item:`${t.url}${e.href}`}))}}({breadcrumbs:e.breadcrumbs});return(0,o.jsx)(ae.A,{children:(0,o.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}const oe={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function le({children:e,href:t,isLast:n}){const s="breadcrumbs__link";return n?(0,o.jsx)("span",{className:s,children:e}):t?(0,o.jsx)(b.A,{className:s,href:t,children:(0,o.jsx)("span",{children:e})}):(0,o.jsx)("span",{className:s,children:e})}function re({children:e,active:t}){return(0,o.jsx)("li",{className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":t}),children:e})}function ce(){const e=(0,q.OF)(),t=(0,K.Dt)();return e?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ie,{breadcrumbs:e}),(0,o.jsx)("nav",{className:(0,u.A)(f.G.docs.docBreadcrumbs,oe.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,o.jsxs)("ul",{className:"breadcrumbs",children:[t&&(0,o.jsx)(se,{}),e.map((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,o.jsx)(re,{active:s,children:(0,o.jsx)(le,{href:a,isLast:s,children:t.label})},n)})]})})]}):null}var de=n(6896);const ue={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function me({children:e}){const t=function(){const{frontMatter:e,toc:t}=c(),n=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,o.jsx)($,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,o.jsx)(Q,{})}}(),{metadata:n}=c();return(0,o.jsxs)("div",{className:"row",children:[(0,o.jsxs)("div",{className:(0,u.A)("col",!t.hidden&&ue.docItemCol),children:[(0,o.jsx)(de.A,{metadata:n}),(0,o.jsx)(k,{}),(0,o.jsxs)("div",{className:ue.docItemContainer,children:[(0,o.jsxs)("article",{children:[(0,o.jsx)(ce,{}),(0,o.jsx)(M,{}),t.mobile,(0,o.jsx)(Z,{children:e}),(0,o.jsx)(D,{})]}),(0,o.jsx)(x,{})]})]}),t.desktop&&(0,o.jsx)("div",{className:"col col--3",children:t.desktop})]})}function he(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,o.jsx)(r,{content:e.content,children:(0,o.jsxs)(a.e3,{className:t,children:[(0,o.jsx)(d,{}),(0,o.jsx)(me,{children:(0,o.jsx)(n,{})})]})})}}}]); \ No newline at end of file diff --git a/user/assets/js/1df93b7f.4d018425.js b/user/assets/js/1df93b7f.4d018425.js new file mode 100644 index 0000000..b6acdb0 --- /dev/null +++ b/user/assets/js/1df93b7f.4d018425.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4583],{8198:(e,s,i)=>{i.r(s),i.d(s,{default:()=>x});var r=i(4164),n=i(8774),t=i(4586),a=i(6025),c=i(5293),l=i(4042),d=i(1107);const o={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};var h=i(4848);function m(){const{siteConfig:e}=(0,t.A)(),{colorMode:s}=(0,c.G)(),i=(0,a.Ay)("dark"===s?"/img/header-dark.svg":"/img/header.svg");return(0,h.jsx)("header",{className:(0,r.A)("hero hero--primary",o.heroBanner),children:(0,h.jsxs)("div",{className:"container",children:[(0,h.jsx)("div",{style:{marginBottom:"2rem"},children:(0,h.jsx)("img",{src:i,alt:"Tibber Prices for Tibber",style:{maxWidth:"600px",width:"100%",height:"auto"}})}),(0,h.jsx)(d.A,{as:"h1",className:"hero__title",children:e.title}),(0,h.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,h.jsx)("div",{className:o.buttons,children:(0,h.jsx)(n.A,{className:"button button--secondary button--lg",to:"/intro",children:"Get Started \u2192"})})]})})}function u(){return(0,h.jsx)("section",{className:o.features,children:(0,h.jsxs)("div",{className:"container",children:[(0,h.jsxs)("div",{className:"row",children:[(0,h.jsx)("div",{className:(0,r.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\u26a1 Quarter-Hourly Precision"}),(0,h.jsx)("p",{children:"Track electricity prices with 15-minute intervals. Get accurate price data synchronized with your Tibber smart meter for optimal energy planning."})]})}),(0,h.jsx)("div",{className:(0,r.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83d\udcca Smart Price Analysis"}),(0,h.jsx)("p",{children:"Automatic detection of best and peak price periods with configurable filters. Statistical analysis with trailing/leading 24h averages for context."})]})}),(0,h.jsx)("div",{className:(0,r.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83c\udfa8 Beautiful Visualizations"}),(0,h.jsx)("p",{children:"Auto-generated ApexCharts configurations with dynamic Y-axis scaling. Dynamic icons and color-coded sensors for stunning dashboards."})]})})]}),(0,h.jsxs)("div",{className:"row margin-top--lg",children:[(0,h.jsx)("div",{className:(0,r.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83e\udd16 Automation Ready"}),(0,h.jsx)("p",{children:"Control energy-intensive appliances based on price levels. Run dishwashers, heat pumps, and EV chargers during cheap periods automatically."})]})}),(0,h.jsx)("div",{className:(0,r.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83d\udcb0 Multi-Currency Support"}),(0,h.jsx)("p",{children:"Full support for EUR (ct), NOK (\xf8re), SEK (\xf6re) with proper minor units. Display prices the way you're used to seeing them."})]})}),(0,h.jsx)("div",{className:(0,r.A)("col col--4"),children:(0,h.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,h.jsx)("h3",{children:"\ud83d\udd27 HACS Integration"}),(0,h.jsx)("p",{children:"Easy installation via Home Assistant Community Store. Regular updates and active development with comprehensive documentation."})]})})]})]})})}function x(){const{siteConfig:e}=(0,t.A)();return(0,h.jsxs)(l.A,{title:"Home",description:"Custom Home Assistant integration for Tibber electricity price management",children:[(0,h.jsx)(m,{}),(0,h.jsx)("main",{children:(0,h.jsx)(u,{})})]})}}}]); \ No newline at end of file diff --git a/user/assets/js/1f391b9e.e0c7952b.js b/user/assets/js/1f391b9e.e0c7952b.js new file mode 100644 index 0000000..56b01bb --- /dev/null +++ b/user/assets/js/1f391b9e.e0c7952b.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[6061],{7973:(e,a,s)=>{s.r(a),s.d(a,{default:()=>g});s(6540);var t=s(4164),l=s(5500),d=s(7559),i=s(4042),r=s(1336),c=s(7763),n=s(6896),o=s(2153);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};var p=s(4848);function g(e){const{content:a}=e,{metadata:s,assets:g}=a,{title:x,editUrl:h,description:j,frontMatter:_,lastUpdatedBy:A,lastUpdatedAt:u}=s,{keywords:v,wrapperClassName:w,hide_table_of_contents:N}=_,b=g.image??_.image,k=!!(h||u||A);return(0,p.jsx)(l.e3,{className:(0,t.A)(w??d.G.wrapper.mdxPages,d.G.page.mdxPage),children:(0,p.jsxs)(i.A,{children:[(0,p.jsx)(l.be,{title:x,description:j,keywords:v,image:b}),(0,p.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,p.jsxs)("div",{className:(0,t.A)("row",m.mdxPageWrapper),children:[(0,p.jsxs)("div",{className:(0,t.A)("col",!N&&"col--8"),children:[(0,p.jsx)(n.A,{metadata:s}),(0,p.jsx)("article",{children:(0,p.jsx)(r.A,{children:(0,p.jsx)(a,{})})}),k&&(0,p.jsx)(o.A,{className:(0,t.A)("margin-top--sm",d.G.pages.pageFooterEditMetaRow),editUrl:h,lastUpdatedAt:u,lastUpdatedBy:A})]}),!N&&a.toc.length>0&&(0,p.jsx)("div",{className:"col col--2",children:(0,p.jsx)(c.A,{toc:a.toc,minHeadingLevel:_.toc_min_heading_level,maxHeadingLevel:_.toc_max_heading_level})})]})})]})})}}}]); \ No newline at end of file diff --git a/user/assets/js/2130.7831bbbb.js b/user/assets/js/2130.7831bbbb.js new file mode 100644 index 0000000..b1560cb --- /dev/null +++ b/user/assets/js/2130.7831bbbb.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2130],{2130:(e,t,r)=>{r.d(t,{default:()=>rn});class a{constructor(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new a(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class n{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(e,t){return new n(t,a.range(this,e))}}class i{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var r,a,n="KaTeX parse error: "+e,o=t&&t.loc;if(o&&o.start<=o.end){var s=o.lexer.input;r=o.start,a=o.end,r===s.length?n+=" at end of input: ":n+=" at position "+(r+1)+": ";var l=s.slice(r,a).replace(/[^]/g,"$&\u0332");n+=(r>15?"\u2026"+s.slice(r-15,r):s.slice(0,r))+l+(a+15":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var h=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},m={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(l,e=>s[e])},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:h,isCharacterBox:function(e){var t=h(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}},c={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function p(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class u{constructor(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},c)if(c.hasOwnProperty(t)){var r=c[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:p(r)}}reportNonstrict(e,t,r){var a=this.strict;if("function"==typeof a&&(a=a(e,t,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new i("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]")}}useStrictBehavior(e,t,r){var a=this.strict;if("function"==typeof a)try{a=a(e,t,r)}catch(n){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]"),!1)))}isTrusted(e){if(e.url&&!e.protocol){var t=m.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}var r="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(r)}}class d{constructor(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}sup(){return g[f[this.id]]}sub(){return g[v[this.id]]}fracNum(){return g[b[this.id]]}fracDen(){return g[y[this.id]]}cramp(){return g[x[this.id]]}text(){return g[w[this.id]]}isTight(){return this.size>=2}}var g=[new d(0,0,!1),new d(1,0,!0),new d(2,1,!1),new d(3,1,!0),new d(4,2,!1),new d(5,2,!0),new d(6,3,!1),new d(7,3,!0)],f=[4,5,4,5,6,7,6,7],v=[5,5,5,5,7,7,7,7],b=[2,3,4,5,6,7,6,7],y=[3,3,5,5,7,7,7,7],x=[1,1,3,3,5,5,7,7],w=[0,1,2,3,2,3,2,3],k={DISPLAY:g[0],TEXT:g[2],SCRIPT:g[4],SCRIPTSCRIPT:g[6]},S=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var M=[];function z(e){for(var t=0;t=M[t]&&e<=M[t+1])return!0;return!1}S.forEach(e=>e.blocks.forEach(e=>M.push(...e)));var A=80,T={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"};class B{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),t=0;te.toText()).join("")}}var C={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},N={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},q={"\xc5":"A","\xd0":"D","\xde":"o","\xe5":"a","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function I(e,t,r){if(!C[t])throw new Error("Font metrics not found for font: "+t+".");var a=e.charCodeAt(0),n=C[t][a];if(!n&&e[0]in q&&(a=q[e[0]].charCodeAt(0),n=C[t][a]),n||"text"!==r||z(a)&&(n=C[t][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var R={};var H=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],O=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],E=function(e,t){return t.size<2?e:H[e-1][t.size-1]};class L{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||L.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=O[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return new L(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:E(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:O[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=E(L.BASESIZE,e);return this.size===t&&this.textSize===L.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==L.BASESIZE?["sizing","reset-size"+this.size,"size"+L.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!R[t=e>=5?0:e>=3?1:2]){var r=R[t]={cssEmPerMu:N.quad[t]/18};for(var a in N)N.hasOwnProperty(a)&&(r[a]=N[a][t])}return R[t]}(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}L.BASESIZE=6;var D={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},V={ex:!0,em:!0,mu:!0},P=function(e){return"string"!=typeof e&&(e=e.unit),e in D||e in V||"ex"===e},F=function(e,t){var r;if(e.unit in D)r=D[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var a;if(a=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=a.fontMetrics().xHeight;else{if("em"!==e.unit)throw new i("Invalid unit: '"+e.unit+"'");r=a.fontMetrics().quad}a!==t&&(r*=a.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},G=function(e){return+e.toFixed(4)+"em"},U=function(e){return e.filter(e=>e).join(" ")},Y=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var a=t.getColor();a&&(this.style.color=a)}},X=function(e){var t=document.createElement(e);for(var r in t.className=U(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var a in this.attributes)this.attributes.hasOwnProperty(a)&&t.setAttribute(a,this.attributes[a]);for(var n=0;n/=\x00-\x1f]/,_=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+m.escape(U(this.classes))+'"');var r="";for(var a in this.style)this.style.hasOwnProperty(a)&&(r+=m.hyphenate(a)+":"+this.style[a]+";");for(var n in r&&(t+=' style="'+m.escape(r)+'"'),this.attributes)if(this.attributes.hasOwnProperty(n)){if(W.test(n))throw new i("Invalid attribute name '"+n+"'");t+=" "+n+'="'+m.escape(this.attributes[n])+'"'}t+=">";for(var o=0;o"};class j{constructor(e,t,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Y.call(this,e,r,a),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return X.call(this,"span")}toMarkup(){return _.call(this,"span")}}class ${constructor(e,t,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Y.call(this,t,a),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return X.call(this,"a")}toMarkup(){return _.call(this,"a")}}class Z{constructor(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){var e=''+m.escape(this.alt)+'=n[0]&&e<=n[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=K[this.text])}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createTextNode(this.text),t=null;for(var r in this.italic>0&&((t=document.createElement("span")).style.marginRight=G(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=U(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=m.hyphenate(a)+":"+this.style[a]+";");r&&(e=!0,t+=' style="'+m.escape(r)+'"');var n=m.escape(this.text);return e?(t+=">",t+=n,t+=""):n}}class Q{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r':''}}class te{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e}toMarkup(){var e="","\\gt",!0),oe(se,he,ye,"\u2208","\\in",!0),oe(se,he,ye,"\ue020","\\@not"),oe(se,he,ye,"\u2282","\\subset",!0),oe(se,he,ye,"\u2283","\\supset",!0),oe(se,he,ye,"\u2286","\\subseteq",!0),oe(se,he,ye,"\u2287","\\supseteq",!0),oe(se,me,ye,"\u2288","\\nsubseteq",!0),oe(se,me,ye,"\u2289","\\nsupseteq",!0),oe(se,he,ye,"\u22a8","\\models"),oe(se,he,ye,"\u2190","\\leftarrow",!0),oe(se,he,ye,"\u2264","\\le"),oe(se,he,ye,"\u2264","\\leq",!0),oe(se,he,ye,"<","\\lt",!0),oe(se,he,ye,"\u2192","\\rightarrow",!0),oe(se,he,ye,"\u2192","\\to"),oe(se,me,ye,"\u2271","\\ngeq",!0),oe(se,me,ye,"\u2270","\\nleq",!0),oe(se,he,xe,"\xa0","\\ "),oe(se,he,xe,"\xa0","\\space"),oe(se,he,xe,"\xa0","\\nobreakspace"),oe(le,he,xe,"\xa0","\\ "),oe(le,he,xe,"\xa0"," "),oe(le,he,xe,"\xa0","\\space"),oe(le,he,xe,"\xa0","\\nobreakspace"),oe(se,he,xe,null,"\\nobreak"),oe(se,he,xe,null,"\\allowbreak"),oe(se,he,be,",",","),oe(se,he,be,";",";"),oe(se,me,pe,"\u22bc","\\barwedge",!0),oe(se,me,pe,"\u22bb","\\veebar",!0),oe(se,he,pe,"\u2299","\\odot",!0),oe(se,he,pe,"\u2295","\\oplus",!0),oe(se,he,pe,"\u2297","\\otimes",!0),oe(se,he,we,"\u2202","\\partial",!0),oe(se,he,pe,"\u2298","\\oslash",!0),oe(se,me,pe,"\u229a","\\circledcirc",!0),oe(se,me,pe,"\u22a1","\\boxdot",!0),oe(se,he,pe,"\u25b3","\\bigtriangleup"),oe(se,he,pe,"\u25bd","\\bigtriangledown"),oe(se,he,pe,"\u2020","\\dagger"),oe(se,he,pe,"\u22c4","\\diamond"),oe(se,he,pe,"\u22c6","\\star"),oe(se,he,pe,"\u25c3","\\triangleleft"),oe(se,he,pe,"\u25b9","\\triangleright"),oe(se,he,ve,"{","\\{"),oe(le,he,we,"{","\\{"),oe(le,he,we,"{","\\textbraceleft"),oe(se,he,ue,"}","\\}"),oe(le,he,we,"}","\\}"),oe(le,he,we,"}","\\textbraceright"),oe(se,he,ve,"{","\\lbrace"),oe(se,he,ue,"}","\\rbrace"),oe(se,he,ve,"[","\\lbrack",!0),oe(le,he,we,"[","\\lbrack",!0),oe(se,he,ue,"]","\\rbrack",!0),oe(le,he,we,"]","\\rbrack",!0),oe(se,he,ve,"(","\\lparen",!0),oe(se,he,ue,")","\\rparen",!0),oe(le,he,we,"<","\\textless",!0),oe(le,he,we,">","\\textgreater",!0),oe(se,he,ve,"\u230a","\\lfloor",!0),oe(se,he,ue,"\u230b","\\rfloor",!0),oe(se,he,ve,"\u2308","\\lceil",!0),oe(se,he,ue,"\u2309","\\rceil",!0),oe(se,he,we,"\\","\\backslash"),oe(se,he,we,"\u2223","|"),oe(se,he,we,"\u2223","\\vert"),oe(le,he,we,"|","\\textbar",!0),oe(se,he,we,"\u2225","\\|"),oe(se,he,we,"\u2225","\\Vert"),oe(le,he,we,"\u2225","\\textbardbl"),oe(le,he,we,"~","\\textasciitilde"),oe(le,he,we,"\\","\\textbackslash"),oe(le,he,we,"^","\\textasciicircum"),oe(se,he,ye,"\u2191","\\uparrow",!0),oe(se,he,ye,"\u21d1","\\Uparrow",!0),oe(se,he,ye,"\u2193","\\downarrow",!0),oe(se,he,ye,"\u21d3","\\Downarrow",!0),oe(se,he,ye,"\u2195","\\updownarrow",!0),oe(se,he,ye,"\u21d5","\\Updownarrow",!0),oe(se,he,fe,"\u2210","\\coprod"),oe(se,he,fe,"\u22c1","\\bigvee"),oe(se,he,fe,"\u22c0","\\bigwedge"),oe(se,he,fe,"\u2a04","\\biguplus"),oe(se,he,fe,"\u22c2","\\bigcap"),oe(se,he,fe,"\u22c3","\\bigcup"),oe(se,he,fe,"\u222b","\\int"),oe(se,he,fe,"\u222b","\\intop"),oe(se,he,fe,"\u222c","\\iint"),oe(se,he,fe,"\u222d","\\iiint"),oe(se,he,fe,"\u220f","\\prod"),oe(se,he,fe,"\u2211","\\sum"),oe(se,he,fe,"\u2a02","\\bigotimes"),oe(se,he,fe,"\u2a01","\\bigoplus"),oe(se,he,fe,"\u2a00","\\bigodot"),oe(se,he,fe,"\u222e","\\oint"),oe(se,he,fe,"\u222f","\\oiint"),oe(se,he,fe,"\u2230","\\oiiint"),oe(se,he,fe,"\u2a06","\\bigsqcup"),oe(se,he,fe,"\u222b","\\smallint"),oe(le,he,de,"\u2026","\\textellipsis"),oe(se,he,de,"\u2026","\\mathellipsis"),oe(le,he,de,"\u2026","\\ldots",!0),oe(se,he,de,"\u2026","\\ldots",!0),oe(se,he,de,"\u22ef","\\@cdots",!0),oe(se,he,de,"\u22f1","\\ddots",!0),oe(se,he,we,"\u22ee","\\varvdots"),oe(le,he,we,"\u22ee","\\varvdots"),oe(se,he,ce,"\u02ca","\\acute"),oe(se,he,ce,"\u02cb","\\grave"),oe(se,he,ce,"\xa8","\\ddot"),oe(se,he,ce,"~","\\tilde"),oe(se,he,ce,"\u02c9","\\bar"),oe(se,he,ce,"\u02d8","\\breve"),oe(se,he,ce,"\u02c7","\\check"),oe(se,he,ce,"^","\\hat"),oe(se,he,ce,"\u20d7","\\vec"),oe(se,he,ce,"\u02d9","\\dot"),oe(se,he,ce,"\u02da","\\mathring"),oe(se,he,ge,"\ue131","\\@imath"),oe(se,he,ge,"\ue237","\\@jmath"),oe(se,he,we,"\u0131","\u0131"),oe(se,he,we,"\u0237","\u0237"),oe(le,he,we,"\u0131","\\i",!0),oe(le,he,we,"\u0237","\\j",!0),oe(le,he,we,"\xdf","\\ss",!0),oe(le,he,we,"\xe6","\\ae",!0),oe(le,he,we,"\u0153","\\oe",!0),oe(le,he,we,"\xf8","\\o",!0),oe(le,he,we,"\xc6","\\AE",!0),oe(le,he,we,"\u0152","\\OE",!0),oe(le,he,we,"\xd8","\\O",!0),oe(le,he,ce,"\u02ca","\\'"),oe(le,he,ce,"\u02cb","\\`"),oe(le,he,ce,"\u02c6","\\^"),oe(le,he,ce,"\u02dc","\\~"),oe(le,he,ce,"\u02c9","\\="),oe(le,he,ce,"\u02d8","\\u"),oe(le,he,ce,"\u02d9","\\."),oe(le,he,ce,"\xb8","\\c"),oe(le,he,ce,"\u02da","\\r"),oe(le,he,ce,"\u02c7","\\v"),oe(le,he,ce,"\xa8",'\\"'),oe(le,he,ce,"\u02dd","\\H"),oe(le,he,ce,"\u25ef","\\textcircled");var ke={"--":!0,"---":!0,"``":!0,"''":!0};oe(le,he,we,"\u2013","--",!0),oe(le,he,we,"\u2013","\\textendash"),oe(le,he,we,"\u2014","---",!0),oe(le,he,we,"\u2014","\\textemdash"),oe(le,he,we,"\u2018","`",!0),oe(le,he,we,"\u2018","\\textquoteleft"),oe(le,he,we,"\u2019","'",!0),oe(le,he,we,"\u2019","\\textquoteright"),oe(le,he,we,"\u201c","``",!0),oe(le,he,we,"\u201c","\\textquotedblleft"),oe(le,he,we,"\u201d","''",!0),oe(le,he,we,"\u201d","\\textquotedblright"),oe(se,he,we,"\xb0","\\degree",!0),oe(le,he,we,"\xb0","\\degree"),oe(le,he,we,"\xb0","\\textdegree",!0),oe(se,he,we,"\xa3","\\pounds"),oe(se,he,we,"\xa3","\\mathsterling",!0),oe(le,he,we,"\xa3","\\pounds"),oe(le,he,we,"\xa3","\\textsterling",!0),oe(se,me,we,"\u2720","\\maltese"),oe(le,me,we,"\u2720","\\maltese");for(var Se='0123456789/@."',Me=0;Me<14;Me++){var ze=Se.charAt(Me);oe(se,he,we,ze,ze)}for(var Ae='0123456789!@*()-=+";:?/.,',Te=0;Te<25;Te++){var Be=Ae.charAt(Te);oe(le,he,we,Be,Be)}for(var Ce="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ne=0;Ne<52;Ne++){var qe=Ce.charAt(Ne);oe(se,he,ge,qe,qe),oe(le,he,we,qe,qe)}oe(se,me,we,"C","\u2102"),oe(le,me,we,"C","\u2102"),oe(se,me,we,"H","\u210d"),oe(le,me,we,"H","\u210d"),oe(se,me,we,"N","\u2115"),oe(le,me,we,"N","\u2115"),oe(se,me,we,"P","\u2119"),oe(le,me,we,"P","\u2119"),oe(se,me,we,"Q","\u211a"),oe(le,me,we,"Q","\u211a"),oe(se,me,we,"R","\u211d"),oe(le,me,we,"R","\u211d"),oe(se,me,we,"Z","\u2124"),oe(le,me,we,"Z","\u2124"),oe(se,he,ge,"h","\u210e"),oe(le,he,ge,"h","\u210e");for(var Ie="",Re=0;Re<52;Re++){var He=Ce.charAt(Re);oe(se,he,ge,He,Ie=String.fromCharCode(55349,56320+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56372+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56424+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56580+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56684+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56736+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56788+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56840+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56944+Re)),oe(le,he,we,He,Ie),Re<26&&(oe(se,he,ge,He,Ie=String.fromCharCode(55349,56632+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56476+Re)),oe(le,he,we,He,Ie))}oe(se,he,ge,"k",Ie=String.fromCharCode(55349,56668)),oe(le,he,we,"k",Ie);for(var Oe=0;Oe<10;Oe++){var Ee=Oe.toString();oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57294+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57314+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57324+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57334+Oe)),oe(le,he,we,Ee,Ie)}for(var Le="\xd0\xde\xfe",De=0;De<3;De++){var Ve=Le.charAt(De);oe(se,he,ge,Ve,Ve),oe(le,he,we,Ve,Ve)}var Pe=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Fe=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],Ge=function(e,t,r){return ie[r][e]&&ie[r][e].replace&&(e=ie[r][e].replace),{value:e,metrics:I(e,t,r)}},Ue=function(e,t,r,a,n){var i,o=Ge(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===r||a&&"mathit"===a.font)&&(l=0),i=new J(e,s.height,s.depth,l,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),i=new J(e,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var h=a.getColor();h&&(i.style.color=h)}return i},Ye=(e,t)=>{if(U(e.classes)!==U(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var a in e.style)if(e.style.hasOwnProperty(a)&&e.style[a]!==t.style[a])return!1;for(var n in t.style)if(t.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;return!0},Xe=function(e){for(var t=0,r=0,a=0,n=0;nt&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=a},We=function(e,t,r,a){var n=new j(e,t,r,a);return Xe(n),n},_e=(e,t,r,a)=>new j(e,t,r,a),je=function(e){var t=new B(e);return Xe(t),t},$e=function(e,t,r){var a="";switch(e){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=e}return a+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ze={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ke={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Je={fontMap:Ze,makeSymbol:Ue,mathsym:function(e,t,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ge(e,"Main-Bold",t).metrics?Ue(e,"Main-Bold",t,r,a.concat(["mathbf"])):"\\"===e||"main"===ie[t][e].font?Ue(e,"Main-Regular",t,r,a):Ue(e,"AMS-Regular",t,r,a.concat(["amsrm"]))},makeSpan:We,makeSvgSpan:_e,makeLineSpan:function(e,t,r){var a=We([e],[],t);return a.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),a.style.borderBottomWidth=G(a.height),a.maxFontSize=1,a},makeAnchor:function(e,t,r,a){var n=new $(e,t,r,a);return Xe(n),n},makeFragment:je,wrapFragment:function(e,t){return e instanceof B?We([],[e],t):e},makeVList:function(e,t){for(var{children:r,depth:a}=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],a=-t[0].shift-t[0].elem.depth,n=a,i=1;i0)return Ue(n,h,a,t,o.concat(m));if(l){var c,p;if("boldsymbol"===l){var u=function(e,t,r,a,n){return"textord"!==n&&Ge(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(n,a,0,0,r);c=u.fontName,p=[u.fontClass]}else s?(c=Ze[l].fontName,p=[l]):(c=$e(l,t.fontWeight,t.fontShape),p=[l,t.fontWeight,t.fontShape]);if(Ge(n,c,a).metrics)return Ue(n,c,a,t,o.concat(p));if(ke.hasOwnProperty(n)&&"Typewriter"===c.slice(0,10)){for(var d=[],g=0;g{var r=We(["mspace"],[],t),a=F(e,t);return r.style.marginRight=G(a),r},staticSvg:function(e,t){var[r,a,n]=Ke[e],i=new ee(r),o=new Q([i],{width:G(a),height:G(n),style:"width:"+G(a),viewBox:"0 0 "+1e3*a+" "+1e3*n,preserveAspectRatio:"xMinYMin"}),s=_e(["overlay"],[o],t);return s.height=n,s.style.height=G(n),s.style.width=G(a),s},svgData:Ke,tryCombineChars:e=>{for(var t=0;t{var r=t.classes[0],a=e.classes[0];"mbin"===r&&ut.includes(a)?t.classes[0]="mord":"mbin"===a&&pt.includes(r)&&(e.classes[0]="mord")},{node:m},c,p),vt(n,(e,t)=>{var r=xt(t),a=xt(e),n=r&&a?e.hasClass("mtight")?at[r][a]:rt[r][a]:null;if(n)return Je.makeGlue(n,l)},{node:m},c,p),n},vt=function e(t,r,a,n,i){n&&t.push(n);for(var o=0;or=>{t.splice(e+1,0,r),o++})(o)}}n&&t.pop()},bt=function(e){return e instanceof B||e instanceof $||e instanceof j&&e.hasClass("enclosing")?e:null},yt=function e(t,r){var a=bt(t);if(a){var n=a.children;if(n.length){if("right"===r)return e(n[n.length-1],"right");if("left"===r)return e(n[0],"left")}}return t},xt=function(e,t){return e?(t&&(e=yt(e,t)),gt[e.classes[0]]||null):null},wt=function(e,t){var r=["nulldelimiter"].concat(e.baseSizingClasses());return ct(t.concat(r))},kt=function(e,t,r){if(!e)return ct();if(it[e.type]){var a=it[e.type](e,t);if(r&&t.size!==r.size){a=ct(t.sizingClasses(r),[a],t);var n=t.sizeMultiplier/r.sizeMultiplier;a.height*=n,a.depth*=n}return a}throw new i("Got group of unknown type: '"+e.type+"'")};function St(e,t){var r=ct(["base"],e,t),a=ct(["strut"]);return a.style.height=G(r.height+r.depth),r.depth&&(a.style.verticalAlign=G(-r.depth)),r.children.unshift(a),r}function Mt(e,t){var r=null;1===e.length&&"tag"===e[0].type&&(r=e[0].tag,e=e[0].body);var a,n=ft(e,t,"root");2===n.length&&n[1].hasClass("tag")&&(a=n.pop());for(var i,o=[],s=[],l=0;l0&&(o.push(St(s,t)),s=[]),o.push(n[l]));s.length>0&&o.push(St(s,t)),r?((i=St(ft(r,t,!0))).classes=["tag"],o.push(i)):a&&o.push(a);var m=ct(["katex-html"],o);if(m.setAttribute("aria-hidden","true"),i){var c=i.children[0];c.style.height=G(m.height+m.depth),m.depth&&(c.style.verticalAlign=G(-m.depth))}return m}function zt(e){return new B(e)}class At{constructor(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=U(this.classes));for(var r=0;r0&&(e+=' class ="'+m.escape(U(this.classes))+'"'),e+=">";for(var r=0;r"}toText(){return this.children.map(e=>e.toText()).join("")}}class Tt{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return m.escape(this.toText())}toText(){return this.text}}var Bt={MathNode:At,TextNode:Tt,SpaceNode:class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",G(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},newDocumentFragment:zt},Ct=function(e,t,r){return!ie[t][e]||!ie[t][e].replace||55349===e.charCodeAt(0)||ke.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=ie[t][e].replace),new Bt.TextNode(e)},Nt=function(e){return 1===e.length?e[0]:new Bt.MathNode("mrow",e)},qt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var a=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathsfit"===r)return"sans-serif-italic";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=e.text;return["\\imath","\\jmath"].includes(n)?null:(ie[a][n]&&ie[a][n].replace&&(n=ie[a][n].replace),I(n,Je.fontMap[r].fontName,a)?Je.fontMap[r].variant:null)};function It(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){var t=e.children[0];return t instanceof Tt&&"."===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){var r=e.children[0];return r instanceof Tt&&","===r.text}return!1}var Rt=function(e,t,r){if(1===e.length){var a=Ot(e[0],t);return r&&a instanceof At&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o=1&&("mn"===n.type||It(n))){var l=s.children[0];l instanceof At&&"mn"===l.type&&(l.children=[...n.children,...l.children],i.pop())}else if("mi"===n.type&&1===n.children.length){var h=n.children[0];if(h instanceof Tt&&"\u0338"===h.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof Tt&&m.text.length>0&&(m.text=m.text.slice(0,1)+"\u0338"+m.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Ht=function(e,t,r){return Nt(Rt(e,t,r))},Ot=function(e,t){if(!e)return new Bt.MathNode("mrow");if(ot[e.type])return ot[e.type](e,t);throw new i("Got group of unknown type: '"+e.type+"'")};function Et(e,t,r,a,n){var i,o=Rt(e,r);i=1===o.length&&o[0]instanceof At&&["mrow","mtable"].includes(o[0].type)?o[0]:new Bt.MathNode("mrow",o);var s=new Bt.MathNode("annotation",[new Bt.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new Bt.MathNode("semantics",[i,s]),h=new Bt.MathNode("math",[l]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&h.setAttribute("display","block");var m=n?"katex":"katex-mathml";return Je.makeSpan([m],[h])}var Lt=function(e){return new L({style:e.displayMode?k.DISPLAY:k.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Dt=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Je.makeSpan(r,[e])}return e},Vt={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Pt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ft=function(e,t,r,a,n){var i,o=e.height+e.depth+r+a;if(/fbox|color|angl/.test(t)){if(i=Je.makeSpan(["stretchy",t],[],n),"fbox"===t){var s=n.color&&n.getColor();s&&(i.style.borderColor=s)}}else{var l=[];/^[bx]cancel$/.test(t)&&l.push(new te({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&l.push(new te({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Q(l,{width:"100%",height:G(o)});i=Je.makeSvgSpan([],[h],n)}return i.height=o,i.style.height=G(o),i},Gt=function(e){var t=new Bt.MathNode("mo",[new Bt.TextNode(Vt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Ut=function(e,t){var{span:r,minWidth:a,height:n}=function(){var r=4e5,a=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(a)){var n,i,o,s="ordgroup"===(u=e.base).type?u.body.length:1;if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var l=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][l],n=[0,239,300,360,420][l],o=[0,.24,.3,.3,.36,.42][l],i=a+l):(r=[0,600,1033,2339,2340][l],n=[0,260,286,306,312][l],o=[0,.26,.286,.3,.306,.34][l],i="tilde"+l)}var h=new ee(i),m=new Q([h],{width:"100%",height:G(o),viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Je.makeSvgSpan([],[m],t),minWidth:0,height:o}}var c,p,u,d=[],g=Pt[a],[f,v,b]=g,y=b/1e3,x=f.length;if(1===x)c=["hide-tail"],p=[g[3]];else if(2===x)c=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==x)throw new Error("Correct katexImagesData or update code here to support\n "+x+" children.");c=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w0&&(r.style.minWidth=G(a)),r};function Yt(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Xt(e){var t=Wt(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Wt(e){return e&&("atom"===e.type||ne.hasOwnProperty(e.type))?e:null}var _t=(e,t)=>{var r,a,n;e&&"supsub"===e.type?(r=(a=Yt(e.base,"accent")).base,e.base=r,n=function(e){if(e instanceof j)return e;throw new Error("Expected span but got "+String(e)+".")}(kt(e,t)),e.base=a):r=(a=Yt(e,"accent")).base;var i=kt(r,t.havingCrampedStyle()),o=0;if(a.isShifty&&m.isCharacterBox(r)){var s=m.getBaseElem(r);o=re(kt(s,t.havingCrampedStyle())).skew}var l,h="\\c"===a.label,c=h?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight);if(a.isStretchy)l=Ut(a,t),l=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+G(2*o)+")",marginLeft:G(2*o)}:void 0}]},t);else{var p,u;"\\vec"===a.label?(p=Je.staticSvg("vec",t),u=Je.svgData.vec[1]):((p=re(p=Je.makeOrd({mode:a.mode,text:a.label},t,"textord"))).italic=0,u=p.width,h&&(c+=p.depth)),l=Je.makeSpan(["accent-body"],[p]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),c=i.height);var g=o;d||(g-=u/2),l.style.left=G(g),"\\textcircled"===a.label&&(l.style.top=".2em"),l=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-c},{type:"elem",elem:l}]},t)}var f=Je.makeSpan(["mord","accent"],[l],t);return n?(n.children[0]=f,n.height=Math.max(f.height,n.height),n.classes[0]="mord",n):f},jt=(e,t)=>{var r=e.isStretchy?Gt(e.label):new Bt.MathNode("mo",[Ct(e.label,e.mode)]),a=new Bt.MathNode("mover",[Ot(e.base,t),r]);return a.setAttribute("accent","true"),a},$t=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));st({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=ht(t[0]),a=!$t.test(e.funcName),n=!a||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:_t,mathmlBuilder:jt}),st({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],a=e.parser.mode;return"math"===a&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:_t,mathmlBuilder:jt}),st({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:(e,t)=>{var r=kt(e.base,t),a=Ut(e,t),n="\\utilde"===e.label?.12:0,i=Je.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},t);return Je.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=Gt(e.label),a=new Bt.MathNode("munder",[Ot(e.base,t),r]);return a.setAttribute("accentunder","true"),a}});var Zt=e=>{var t=new Bt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};st({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a,funcName:n}=e;return{type:"xArrow",mode:a.mode,label:n,body:t[0],below:r[0]}},htmlBuilder(e,t){var r,a=t.style,n=t.havingStyle(a.sup()),i=Je.wrapFragment(kt(e.body,n,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(n=t.havingStyle(a.sub()),(r=Je.wrapFragment(kt(e.below,n,t),t)).classes.push(o+"-arrow-pad"));var s,l=Ut(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,m=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(m-=i.depth),r){var c=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:c}]},t)}else s=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h}]},t);return s.children[0].children[0].children[1].classes.push("svg-align"),Je.makeSpan(["mrel","x-arrow"],[s],t)},mathmlBuilder(e,t){var r,a=Gt(e.label);if(a.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var n=Zt(Ot(e.body,t));if(e.below){var i=Zt(Ot(e.below,t));r=new Bt.MathNode("munderover",[a,i,n])}else r=new Bt.MathNode("mover",[a,n])}else if(e.below){var o=Zt(Ot(e.below,t));r=new Bt.MathNode("munder",[a,o])}else r=Zt(),r=new Bt.MathNode("mover",[a,r]);return r}});var Kt=Je.makeSpan;function Jt(e,t){var r=ft(e.body,t,!0);return Kt([e.mclass],r,t)}function Qt(e,t){var r,a=Rt(e.body,t);return"minner"===e.mclass?r=new Bt.MathNode("mpadded",a):"mord"===e.mclass?e.isCharacterBox?(r=a[0]).type="mi":r=new Bt.MathNode("mi",a):(e.isCharacterBox?(r=a[0]).type="mo":r=new Bt.MathNode("mo",a),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}st({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+a.slice(5),body:mt(n),isCharacterBox:m.isCharacterBox(n)}},htmlBuilder:Jt,mathmlBuilder:Qt});var er=e=>{var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};st({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:er(t[0]),body:mt(t[1]),isCharacterBox:m.isCharacterBox(t[1])}}}),st({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var r,{parser:a,funcName:n}=e,i=t[1],o=t[0];r="\\stackrel"!==n?er(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:mt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===n?null:o,sub:"\\underset"===n?o:null};return{type:"mclass",mode:a.mode,mclass:r,body:[l],isCharacterBox:m.isCharacterBox(l)}},htmlBuilder:Jt,mathmlBuilder:Qt}),st({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:er(t[0]),body:mt(t[0])}},htmlBuilder(e,t){var r=ft(e.body,t,!0),a=Je.makeSpan([e.mclass],r,t);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(e,t){var r=Rt(e.body,t),a=new Bt.MathNode("mstyle",r);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var tr={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},rr=()=>({type:"styling",body:[],mode:"math",style:"display"}),ar=e=>"textord"===e.type&&"@"===e.text,nr=(e,t)=>("mathord"===e.type||"atom"===e.type)&&e.text===t;function ir(e,t,r){var a=tr[e];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(a,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var n={type:"atom",text:a,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[n],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}st({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"cdlabel",mode:r.mode,side:a.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),a=Je.wrapFragment(kt(e.label,r,t),t);return a.classes.push("cd-label-"+e.side),a.style.bottom=G(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(e,t){var r=new Bt.MathNode("mrow",[Ot(e.label,t)]);return(r=new Bt.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Bt.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),st({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Je.wrapFragment(kt(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:(e,t)=>new Bt.MathNode("mrow",[Ot(e.fragment,t)])}),st({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,a=Yt(t[0],"ordgroup").body,n="",o=0;o=1114111)throw new i("\\@char with invalid code point "+n);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var or=(e,t)=>{var r=ft(e.body,t.withColor(e.color),!1);return Je.makeFragment(r)},sr=(e,t)=>{var r=Rt(e.body,t.withColor(e.color)),a=new Bt.MathNode("mstyle",r);return a.setAttribute("mathcolor",e.color),a};st({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,a=Yt(t[0],"color-token").color,n=t[1];return{type:"color",mode:r.mode,color:a,body:mt(n)}},htmlBuilder:or,mathmlBuilder:sr}),st({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:a}=e,n=Yt(t[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var i=r.parseExpression(!0,a);return{type:"color",mode:r.mode,color:n,body:i}},htmlBuilder:or,mathmlBuilder:sr}),st({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:a}=e,n="["===a.gullet.future().text?a.parseSizeGroup(!0):null,i=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:i,size:n&&Yt(n,"size").value}},htmlBuilder(e,t){var r=Je.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=G(F(e.size,t)))),r},mathmlBuilder(e,t){var r=new Bt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",G(F(e.size,t)))),r}});var lr={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},hr=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new i("Expected a control sequence",e);return t},mr=(e,t,r,a)=>{var n=e.gullet.macros.get(r.text);null==n&&(r.noexpand=!0,n={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,n,a)};st({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var a=t.fetch();if(lr[a.text])return"\\global"!==r&&"\\\\globallong"!==r||(a.text=lr[a.text]),Yt(t.parseFunction(),"internal");throw new i("Invalid token after macro prefix",a)}}),st({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=t.gullet.popToken(),n=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new i("Expected a control sequence",a);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(a=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(a=t.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new i('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new i('Argument number "'+a.text+'" out of order');s++,l.push([])}else{if("EOF"===a.text)throw new i("Expected a macro definition");l[s].push(a.text)}var{tokens:h}=t.gullet.consumeArg();return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(n,{tokens:h,numArgs:s,delimiters:l},r===lr[r]),{type:"internal",mode:t.mode}}}),st({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=hr(t.gullet.popToken());t.gullet.consumeSpaces();var n=(e=>{var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t})(t);return mr(t,a,n,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),st({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=hr(t.gullet.popToken()),n=t.gullet.popToken(),i=t.gullet.popToken();return mr(t,a,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(n),{type:"internal",mode:t.mode}}});var cr=function(e,t,r){var a=I(ie.math[e]&&ie.math[e].replace||e,t,r);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return a},pr=function(e,t,r,a){var n=r.havingBaseStyle(t),i=Je.makeSpan(a.concat(n.sizingClasses(r)),[e],r),o=n.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=n.sizeMultiplier,i},ur=function(e,t,r){var a=t.havingBaseStyle(r),n=(1-t.sizeMultiplier/a.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=G(n),e.height-=n,e.depth+=n},dr=function(e,t,r,a,n,i){var o=function(e,t,r,a){return Je.makeSymbol(e,"Size"+t+"-Regular",r,a)}(e,t,n,a),s=pr(Je.makeSpan(["delimsizing","size"+t],[o],a),k.TEXT,a,i);return r&&ur(s,a,k.TEXT),s},gr=function(e,t,r){var a;return a="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Je.makeSpan(["delimsizinginner",a],[Je.makeSpan([],[Je.makeSymbol(e,t,r)])])}},fr=function(e,t,r){var a=C["Size4-Regular"][e.charCodeAt(0)]?C["Size4-Regular"][e.charCodeAt(0)][4]:C["Size1-Regular"][e.charCodeAt(0)][4],n=new ee("inner",function(e,t){switch(e){case"\u239c":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"\u239f":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23a2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23a5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23aa":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23d0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),i=new Q([n],{width:G(a),height:G(t),style:"width:"+G(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=Je.makeSvgSpan([],[i],r);return o.height=t,o.style.height=G(t),o.style.width=G(a),{type:"elem",elem:o}},vr={type:"kern",size:-.008},br=["|","\\lvert","\\rvert","\\vert"],yr=["\\|","\\lVert","\\rVert","\\Vert"],xr=function(e,t,r,a,n,i){var o,s,l,h,m="",c=0;o=l=h=e,s=null;var p="Size1-Regular";"\\uparrow"===e?l=h="\u23d0":"\\Uparrow"===e?l=h="\u2016":"\\downarrow"===e?o=l="\u23d0":"\\Downarrow"===e?o=l="\u2016":"\\updownarrow"===e?(o="\\uparrow",l="\u23d0",h="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="\u2016",h="\\Downarrow"):br.includes(e)?(l="\u2223",m="vert",c=333):yr.includes(e)?(l="\u2225",m="doublevert",c=556):"["===e||"\\lbrack"===e?(o="\u23a1",l="\u23a2",h="\u23a3",p="Size4-Regular",m="lbrack",c=667):"]"===e||"\\rbrack"===e?(o="\u23a4",l="\u23a5",h="\u23a6",p="Size4-Regular",m="rbrack",c=667):"\\lfloor"===e||"\u230a"===e?(l=o="\u23a2",h="\u23a3",p="Size4-Regular",m="lfloor",c=667):"\\lceil"===e||"\u2308"===e?(o="\u23a1",l=h="\u23a2",p="Size4-Regular",m="lceil",c=667):"\\rfloor"===e||"\u230b"===e?(l=o="\u23a5",h="\u23a6",p="Size4-Regular",m="rfloor",c=667):"\\rceil"===e||"\u2309"===e?(o="\u23a4",l=h="\u23a5",p="Size4-Regular",m="rceil",c=667):"("===e||"\\lparen"===e?(o="\u239b",l="\u239c",h="\u239d",p="Size4-Regular",m="lparen",c=875):")"===e||"\\rparen"===e?(o="\u239e",l="\u239f",h="\u23a0",p="Size4-Regular",m="rparen",c=875):"\\{"===e||"\\lbrace"===e?(o="\u23a7",s="\u23a8",h="\u23a9",l="\u23aa",p="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="\u23ab",s="\u23ac",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(o="\u23a7",h="\u23a9",l="\u23aa",p="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(o="\u23ab",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(o="\u23a7",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(o="\u23ab",h="\u23a9",l="\u23aa",p="Size4-Regular");var u=cr(o,p,n),d=u.height+u.depth,g=cr(l,p,n),f=g.height+g.depth,v=cr(h,p,n),b=v.height+v.depth,y=0,x=1;if(null!==s){var w=cr(s,p,n);y=w.height+w.depth,x=2}var S=d+b+y,M=S+Math.max(0,Math.ceil((t-S)/(x*f)))*x*f,z=a.fontMetrics().axisHeight;r&&(z*=a.sizeMultiplier);var A=M/2-z,T=[];if(m.length>0){var B=M-d-b,C=Math.round(1e3*M),N=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v"+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v"+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z\nM367 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v"+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+" v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+" v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v602 h84z\nM403 1759 V0 H319 V1759 v"+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v602 h84z\nM347 1759 V0 h-84 V1759 v"+t+" v602 h84z";case"lparen":return"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,"+(t+84)+"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-"+(t+92)+"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";case"rparen":return"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,"+(t+9)+"\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-"+(t+144)+"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";default:throw new Error("Unknown stretchy delimiter.")}}(m,Math.round(1e3*B)),q=new ee(m,N),I=(c/1e3).toFixed(3)+"em",R=(C/1e3).toFixed(3)+"em",H=new Q([q],{width:I,height:R,viewBox:"0 0 "+c+" "+C}),O=Je.makeSvgSpan([],[H],a);O.height=C/1e3,O.style.width=I,O.style.height=R,T.push({type:"elem",elem:O})}else{if(T.push(gr(h,p,n)),T.push(vr),null===s){var E=M-d-b+.016;T.push(fr(l,E,a))}else{var L=(M-d-b-y)/2+.016;T.push(fr(l,L,a)),T.push(vr),T.push(gr(s,p,n)),T.push(vr),T.push(fr(l,L,a))}T.push(vr),T.push(gr(o,p,n))}var D=a.havingBaseStyle(k.TEXT),V=Je.makeVList({positionType:"bottom",positionData:A,children:T},D);return pr(Je.makeSpan(["delimsizing","mult"],[V],D),k.TEXT,a,i)},wr=.08,kr=function(e,t,r,a,n){var i=function(e,t,r){t*=1e3;var a="";switch(e){case"sqrtMain":a=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize1":a=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize2":a=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize3":a=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize4":a=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,A);break;case"sqrtTall":a=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,A,r)}return a}(e,a,r),o=new ee(e,i),s=new Q([o],{width:"400em",height:G(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Je.makeSvgSpan(["hide-tail"],[s],n)},Sr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],Mr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],zr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Ar=[0,1.2,1.8,2.4,3],Tr=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Br=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"stack"}],Cr=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Nr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},qr=function(e,t,r,a){for(var n=Math.min(2,3-a.style.size);nt)return r[n]}return r[r.length-1]},Ir=function(e,t,r,a,n,i){var o;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=zr.includes(e)?Tr:Sr.includes(e)?Cr:Br;var s=qr(e,t,o,a);return"small"===s.type?function(e,t,r,a,n,i){var o=Je.makeSymbol(e,"Main-Regular",n,a),s=pr(o,t,a,i);return r&&ur(s,a,t),s}(e,s.style,r,a,n,i):"large"===s.type?dr(e,s.size,r,a,n,i):xr(e,t,r,a,n,i)},Rr={sqrtImage:function(e,t){var r,a,n=t.havingBaseSizing(),i=qr("\\surd",e*n.sizeMultiplier,Cr,n),o=n.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,m=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=kr("sqrtMain",l=(1+s+wr)/o,m=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Ar[i.size],h=(Ar[i.size]+s)/o,l=(Ar[i.size]+s+wr)/o,(r=kr("sqrtSize"+i.size,l,m,s,t)).style.minWidth="1.02em",a=1/o):(l=e+s+wr,h=e+s,m=Math.floor(1e3*e+s)+80,(r=kr("sqrtTall",l,m,s,t)).style.minWidth="0.742em",a=1.056),r.height=h,r.style.height=G(l),{span:r,advanceWidth:a,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,a,n){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),Sr.includes(e)||zr.includes(e))return dr(e,t,!1,r,a,n);if(Mr.includes(e))return xr(e,Ar[t],!1,r,a,n);throw new i("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:Ar,customSizedDelim:Ir,leftRightDelim:function(e,t,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return Ir(e,h,!0,a,n,i)}},Hr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Or=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Er(e,t){var r=Wt(e);if(r&&Or.includes(r.text))return r;throw new i(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function Lr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}st({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=Er(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Hr[e.funcName].size,mclass:Hr[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>"."===e.delim?Je.makeSpan([e.mclass]):Rr.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];"."!==e.delim&&t.push(Ct(e.delim,e.mode));var r=new Bt.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var a=G(Rr.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",a),r.setAttribute("maxsize",a),r}}),st({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new i("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Er(t[0],e).text,color:r}}}),st({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Er(t[0],e),a=e.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Yt(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Lr(e);for(var r,a,n=ft(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l{Lr(e);var r=Rt(e.body,t);if("."!==e.left){var a=new Bt.MathNode("mo",[Ct(e.left,e.mode)]);a.setAttribute("fence","true"),r.unshift(a)}if("."!==e.right){var n=new Bt.MathNode("mo",[Ct(e.right,e.mode)]);n.setAttribute("fence","true"),e.rightColor&&n.setAttribute("mathcolor",e.rightColor),r.push(n)}return Nt(r)}}),st({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Er(t[0],e);if(!e.parser.leftrightDepth)throw new i("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;if("."===e.delim)r=wt(t,[]);else{r=Rr.sizedDelim(e.delim,1,t,e.mode,[]);var a={delim:e.delim,options:t};r.isMiddle=a}return r},mathmlBuilder:(e,t)=>{var r="\\vert"===e.delim||"|"===e.delim?Ct("|","text"):Ct(e.delim,e.mode),a=new Bt.MathNode("mo",[r]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var Dr=(e,t)=>{var r,a,n,i=Je.wrapFragment(kt(e.body,t),t),o=e.label.slice(1),s=t.sizeMultiplier,l=0,h=m.isCharacterBox(e.body);if("sout"===o)(r=Je.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/s,l=-.5*t.fontMetrics().xHeight;else if("phase"===o){var c=F({number:.6,unit:"pt"},t),p=F({number:.35,unit:"ex"},t);s/=t.havingBaseSizing().sizeMultiplier;var u=i.height+i.depth+c+p;i.style.paddingLeft=G(u/2+c);var d=Math.floor(1e3*u*s),g="M400000 "+(a=d)+" H0 L"+a/2+" 0 l65 45 L145 "+(a-80)+" H400000z",f=new Q([new ee("phase",g)],{width:"400em",height:G(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});(r=Je.makeSvgSpan(["hide-tail"],[f],t)).style.height=G(u),l=i.depth+c+p}else{/cancel/.test(o)?h||i.classes.push("cancel-pad"):"angl"===o?i.classes.push("anglpad"):i.classes.push("boxpad");var v=0,b=0,y=0;/box/.test(o)?(y=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),b=v=t.fontMetrics().fboxsep+("colorbox"===o?0:y)):"angl"===o?(v=4*(y=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness)),b=Math.max(0,.25-i.depth)):b=v=h?.2:0,r=Ft(i,o,v,b,t),/fbox|boxed|fcolorbox/.test(o)?(r.style.borderStyle="solid",r.style.borderWidth=G(y)):"angl"===o&&.049!==y&&(r.style.borderTopWidth=G(y),r.style.borderRightWidth=G(y)),l=i.depth+b,e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor,e.borderColor&&(r.style.borderColor=e.borderColor))}if(e.backgroundColor)n=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:l},{type:"elem",elem:i,shift:0}]},t);else{var x=/cancel|phase/.test(o)?["svg-align"]:[];n=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:0},{type:"elem",elem:r,shift:l,wrapperClasses:x}]},t)}return/cancel/.test(o)&&(n.height=i.height,n.depth=i.depth),/cancel/.test(o)&&!h?Je.makeSpan(["mord","cancel-lap"],[n],t):Je.makeSpan(["mord"],[n],t)},Vr=(e,t)=>{var r=0,a=new Bt.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Ot(e.body,t)]);switch(e.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var n=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(e.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&a.setAttribute("mathbackground",e.backgroundColor),a};st({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Yt(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Yt(t[0],"color-token").color,o=Yt(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}}),st({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"enclose",mode:r.mode,label:a,body:n}},htmlBuilder:Dr,mathmlBuilder:Vr}),st({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var Pr={};function Fr(e){for(var{type:t,names:r,props:a,handler:n,htmlBuilder:i,mathmlBuilder:o}=e,s={type:t,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},l=0;l{if(!e.parser.settings.displayMode)throw new i("{"+e.envName+"} can be used only in display mode.")};function Wr(e){if(-1===e.indexOf("ed"))return-1===e.indexOf("*")}function _r(e,t,r){var{hskipBeforeAndAfter:a,addJot:o,cols:s,arraystretch:l,colSeparationType:h,autoTag:m,singleRow:c,emptySingleRow:p,maxNumCols:u,leqno:d}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!l){var g=e.gullet.expandMacroAsText("\\arraystretch");if(null==g)l=1;else if(!(l=parseFloat(g))||l<0)throw new i("Invalid \\arraystretch: "+g)}e.gullet.beginGroup();var f=[],v=[f],b=[],y=[],x=null!=m?[]:void 0;function w(){m&&e.gullet.macros.set("\\@eqnsw","1",!0)}function k(){x&&(e.gullet.macros.get("\\df@tag")?(x.push(e.subparse([new n("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):x.push(Boolean(m)&&"1"===e.gullet.macros.get("\\@eqnsw")))}for(w(),y.push(Yr(e));;){var S=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),S={type:"ordgroup",mode:e.mode,body:S},r&&(S={type:"styling",mode:e.mode,style:r,body:[S]}),f.push(S);var M=e.fetch().text;if("&"===M){if(u&&f.length===u){if(c||h)throw new i("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else{if("\\end"===M){k(),1===f.length&&"styling"===S.type&&0===S.body[0].body.length&&(v.length>1||!p)&&v.pop(),y.length0&&(y+=.25),h.push({pos:y,isDashed:e[t]})}for(x(o[0]),r=0;r0&&(M<(B+=b)&&(M=B),B=0),e.addJot&&(M+=g),z.height=S,z.depth=M,y+=S,z.pos=y,y+=M+B,l[r]=z,x(o[r+1])}var C,N,q=y/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],H=[];if(e.tags&&e.tags.some(e=>e))for(r=0;r=s)){var W=void 0;(a>0||e.hskipBeforeAndAfter)&&0!==(W=m.deflt(V.pregap,u))&&((C=Je.makeSpan(["arraycolsep"],[])).style.width=G(W),R.push(C));var _=[];for(r=0;r0){for(var K=Je.makeLineSpan("hline",t,c),J=Je.makeLineSpan("hdashline",t,c),Q=[{type:"elem",elem:l,shift:0}];h.length>0;){var ee=h.pop(),te=ee.pos-q;ee.isDashed?Q.push({type:"elem",elem:J,shift:te}):Q.push({type:"elem",elem:K,shift:te})}l=Je.makeVList({positionType:"individualShift",children:Q},t)}if(0===H.length)return Je.makeSpan(["mord"],[l],t);var re=Je.makeVList({positionType:"individualShift",children:H},t);return re=Je.makeSpan(["tag"],[re],t),Je.makeFragment([l,re])},Zr={c:"center ",l:"left ",r:"right "},Kr=function(e,t){for(var r=[],a=new Bt.MathNode("mtd",[],["mtr-glue"]),n=new Bt.MathNode("mtd",[],["mml-eqn-num"]),i=0;i0){var u=e.cols,d="",g=!1,f=0,v=u.length;"separator"===u[0].type&&(c+="top ",f=1),"separator"===u[u.length-1].type&&(c+="bottom ",v-=1);for(var b=f;b0?"left ":"",c+=S[S.length-1].length>0?"right ":"";for(var M=1;M-1?"alignat":"align",o="split"===e.envName,s=_r(e.parser,{cols:a,addJot:!0,autoTag:o?void 0:Wr(e.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:o?2:void 0,leqno:e.parser.settings.leqno},"display"),l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var m="",c=0;c0&&p&&(g=1),a[u]={type:"align",align:d,pregap:g,postgap:0}}return s.colSeparationType=p?"align":"alignat",s};Fr({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=(Wt(t[0])?[t[0]]:Yt(t[0],"ordgroup").body).map(function(e){var t=Xt(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new i("Unknown column alignment: "+t,e)}),a={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return _r(e.parser,a,jr(e.envName))},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var n=e.parser;if(n.consumeSpaces(),"["===n.fetch().text){if(n.consume(),n.consumeSpaces(),r=n.fetch().text,-1==="lcr".indexOf(r))throw new i("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),a.cols=[{type:"align",align:r}]}}var o=_r(e.parser,a,jr(e.envName)),s=Math.max(0,...o.body.map(e=>e.length));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t=_r(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=(Wt(t[0])?[t[0]]:Yt(t[0],"ordgroup").body).map(function(e){var t=Xt(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new i("Unknown column alignment: "+t,e)});if(r.length>1)throw new i("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=_r(e.parser,a,"script")).body.length>0&&a.body[0].length>1)throw new i("{subarray} can contain only one column");return a},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t=_r(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},jr(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Jr,htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){["gather","gather*"].includes(e.envName)&&Xr(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Wr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return _r(e.parser,t,"display")},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Jr,htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){Xr(e);var t={autoTag:Wr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return _r(e.parser,t,"display")},htmlBuilder:$r,mathmlBuilder:Kr}),Fr({type:"array",names:["CD"],props:{numArgs:0},handler:e=>(Xr(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new i("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var a=[],n=[a],o=0;o-1);else{if(!("<>AV".indexOf(m)>-1))throw new i('Expected one of "<>AV=|." after @',s[h]);for(var p=0;p<2;p++){for(var u=!0,d=h+1;d{var r=e.font,a=t.withFont(r);return kt(e.body,a)},ta=(e,t)=>{var r=e.font,a=t.withFont(r);return Ot(e.body,a)},ra={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};st({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=ht(t[0]),i=a;return i in ra&&(i=ra[i]),{type:"font",mode:r.mode,font:i.slice(1),body:n}},htmlBuilder:ea,mathmlBuilder:ta}),st({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,a=t[0],n=m.isCharacterBox(a);return{type:"mclass",mode:r.mode,mclass:er(a),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}}),st({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a,breakOnTokenText:n}=e,{mode:i}=r,o=r.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+a.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:ea,mathmlBuilder:ta});var aa=(e,t)=>{var r=t;return"display"===e?r=r.id>=k.SCRIPT.id?r.text():k.DISPLAY:"text"===e&&r.size===k.DISPLAY.size?r=k.TEXT:"script"===e?r=k.SCRIPT:"scriptscript"===e&&(r=k.SCRIPTSCRIPT),r},na=(e,t)=>{var r,a=aa(e.size,t.style),n=a.fracNum(),i=a.fracDen();r=t.havingStyle(n);var o=kt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(p=t.fontMetrics().num2,u=c):(p=t.fontMetrics().num3,u=3*c),d=t.fontMetrics().denom2),h){var x=t.fontMetrics().axisHeight;p-o.depth-(x+.5*m){var r=new Bt.MathNode("mfrac",[Ot(e.numer,t),Ot(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var a=F(e.barSize,t);r.setAttribute("linethickness",G(a))}}else r.setAttribute("linethickness","0px");var n=aa(e.size,t.style);if(n.size!==t.style.size){r=new Bt.MathNode("mstyle",[r]);var i=n.size===k.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new Bt.MathNode("mo",[new Bt.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=e.rightDelim){var l=new Bt.MathNode("mo",[new Bt.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Nt(o)}return r};st({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var r,{parser:a,funcName:n}=e,i=t[0],o=t[1],s=null,l=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",l=")";break;case"\\\\bracefrac":r=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":r=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text"}return{type:"genfrac",mode:a.mode,continued:!1,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:l,size:h,barSize:null}},htmlBuilder:na,mathmlBuilder:ia}),st({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:n,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),st({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var t,{parser:r,funcName:a,token:n}=e;switch(a){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:n}}});var oa=["display","text","script","scriptscript"],sa=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};st({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var r,{parser:a}=e,n=t[4],i=t[5],o=ht(t[0]),s="atom"===o.type&&"open"===o.family?sa(o.text):null,l=ht(t[1]),h="atom"===l.type&&"close"===l.family?sa(l.text):null,m=Yt(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var p="auto",u=t[3];if("ordgroup"===u.type){if(u.body.length>0){var d=Yt(u.body[0],"textord");p=oa[Number(d.text)]}}else u=Yt(u,"textord"),p=oa[Number(u.text)];return{type:"genfrac",mode:a.mode,numer:n,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h,size:p}},htmlBuilder:na,mathmlBuilder:ia}),st({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:a,token:n}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Yt(t[0],"size").value,token:n}}}),st({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Yt(t[1],"infix").size),o=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:o,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:na,mathmlBuilder:ia});var la=(e,t)=>{var r,a,n=t.style;"supsub"===e.type?(r=e.sup?kt(e.sup,t.havingStyle(n.sup()),t):kt(e.sub,t.havingStyle(n.sub()),t),a=Yt(e.base,"horizBrace")):a=Yt(e,"horizBrace");var i,o=kt(a.base,t.havingBaseStyle(k.DISPLAY)),s=Ut(a,t);if(a.isOver?(i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Je.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Je.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t);i=a.isOver?Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Je.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Je.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t)};st({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:t[0]}},htmlBuilder:la,mathmlBuilder:(e,t)=>{var r=Gt(e.label);return new Bt.MathNode(e.isOver?"mover":"munder",[Ot(e.base,t),r])}}),st({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[1],n=Yt(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:mt(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=ft(e.body,t,!1);return Je.makeAnchor(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=Ht(e.body,t);return r instanceof At||(r=new At("mrow",[r])),r.setAttribute("href",e.href),r}}),st({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=Yt(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;inew Bt.MathNode("mrow",Rt(e.body,t))}),st({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:(e,t)=>{var r,{parser:a,funcName:n,token:o}=e,s=Yt(t[0],"raw").string,l=t[1];a.settings.strict&&a.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var h={};switch(n){case"\\htmlClass":h.class=s,r={command:"\\htmlClass",class:s};break;case"\\htmlId":h.id=s,r={command:"\\htmlId",id:s};break;case"\\htmlStyle":h.style=s,r={command:"\\htmlStyle",style:s};break;case"\\htmlData":for(var m=s.split(","),c=0;c{var r=ft(e.body,t,!1),a=["enclosing"];e.attributes.class&&a.push(...e.attributes.class.trim().split(/\s+/));var n=Je.makeSpan(a,r,t);for(var i in e.attributes)"class"!==i&&e.attributes.hasOwnProperty(i)&&n.setAttribute(i,e.attributes[i]);return n},mathmlBuilder:(e,t)=>Ht(e.body,t)}),st({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:mt(t[0]),mathml:mt(t[1])}},htmlBuilder:(e,t)=>{var r=ft(e.html,t,!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>Ht(e.mathml,t)});var ha=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new i("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(t[1]+t[2]),unit:t[3]};if(!P(r))throw new i("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};st({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:a}=e,n={number:0,unit:"em"},o={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var h=Yt(r[0],"raw").string.split(","),m=0;m{var r=F(e.height,t),a=0;e.totalheight.number>0&&(a=F(e.totalheight,t)-r);var n=0;e.width.number>0&&(n=F(e.width,t));var i={height:G(r+a)};n>0&&(i.width=G(n)),a>0&&(i.verticalAlign=G(-a));var o=new Z(e.src,e.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var a=F(e.height,t),n=0;if(e.totalheight.number>0&&(n=F(e.totalheight,t)-a,r.setAttribute("valign",G(-n))),r.setAttribute("height",G(a+n)),e.width.number>0){var i=F(e.width,t);r.setAttribute("width",G(i))}return r.setAttribute("src",e.src),r}}),st({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=Yt(t[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:(e,t)=>Je.makeGlue(e.dimension,t),mathmlBuilder(e,t){var r=F(e.dimension,t);return new Bt.SpaceNode(r)}}),st({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:(e,t)=>{var r;"clap"===e.alignment?(r=Je.makeSpan([],[kt(e.body,t)]),r=Je.makeSpan(["inner"],[r],t)):r=Je.makeSpan(["inner"],[kt(e.body,t)]);var a=Je.makeSpan(["fix"],[]),n=Je.makeSpan([e.alignment],[r,a],t),i=Je.makeSpan(["strut"]);return i.style.height=G(n.height+n.depth),n.depth&&(i.style.verticalAlign=G(-n.depth)),n.children.unshift(i),n=Je.makeSpan(["thinbox"],[n],t),Je.makeSpan(["mord","vbox"],[n],t)},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]);if("rlap"!==e.alignment){var a="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),st({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:a}=e,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),st({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new i("Mismatched "+e.funcName)}});var ma=(e,t)=>{switch(t.style.size){case k.DISPLAY.size:return e.display;case k.TEXT.size:return e.text;case k.SCRIPT.size:return e.script;case k.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};st({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:mt(t[0]),text:mt(t[1]),script:mt(t[2]),scriptscript:mt(t[3])}},htmlBuilder:(e,t)=>{var r=ma(e,t),a=ft(r,t,!1);return Je.makeFragment(a)},mathmlBuilder:(e,t)=>{var r=ma(e,t);return Ht(r,t)}});var ca=(e,t,r,a,n,i,o)=>{e=Je.makeSpan([],[e]);var s,l,h,c=r&&m.isCharacterBox(r);if(t){var p=kt(t,a.havingStyle(n.sup()),a);l={elem:p,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-p.depth)}}if(r){var u=kt(r,a.havingStyle(n.sub()),a);s={elem:u,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-u.height)}}if(l&&s){var d=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;h=Je.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:G(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:G(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var g=e.height-o;h=Je.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:G(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},a)}else{if(!l)return e;var f=e.depth+o;h=Je.makeVList({positionType:"bottom",positionData:f,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:G(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}var v=[h];if(s&&0!==i&&!c){var b=Je.makeSpan(["mspace"],[],a);b.style.marginRight=G(i),v.unshift(b)}return Je.makeSpan(["mop","op-limits"],v,a)},pa=["\\smallint"],ua=(e,t)=>{var r,a,n,i=!1;"supsub"===e.type?(r=e.sup,a=e.sub,n=Yt(e.base,"op"),i=!0):n=Yt(e,"op");var o,s=t.style,l=!1;if(s.size===k.DISPLAY.size&&n.symbol&&!pa.includes(n.name)&&(l=!0),n.symbol){var h=l?"Size2-Regular":"Size1-Regular",m="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(m=n.name.slice(1),n.name="oiint"===m?"\\iint":"\\iiint"),o=Je.makeSymbol(n.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),m.length>0){var c=o.italic,p=Je.staticSvg(m+"Size"+(l?"2":"1"),t);o=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},t),n.name="\\"+m,o.classes.unshift("mop"),o.italic=c}}else if(n.body){var u=ft(n.body,t,!0);1===u.length&&u[0]instanceof J?(o=u[0]).classes[0]="mop":o=Je.makeSpan(["mop"],u,t)}else{for(var d=[],g=1;g{var r;if(e.symbol)r=new At("mo",[Ct(e.name,e.mode)]),pa.includes(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new At("mo",Rt(e.body,t));else{r=new At("mi",[new Tt(e.name.slice(1))]);var a=new At("mo",[Ct("\u2061","text")]);r=e.parentIsSupSub?new At("mrow",[r,a]):zt([r,a])}return r},ga={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};st({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=a;return 1===n.length&&(n=ga[n]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:mt(a)}},htmlBuilder:ua,mathmlBuilder:da});var fa={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};st({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ua,mathmlBuilder:da}),st({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e,a=r;return 1===a.length&&(a=fa[a]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:ua,mathmlBuilder:da});var va=(e,t)=>{var r,a,n,i,o=!1;if("supsub"===e.type?(r=e.sup,a=e.sub,n=Yt(e.base,"operatorname"),o=!0):n=Yt(e,"operatorname"),n.body.length>0){for(var s=n.body.map(e=>{var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e}),l=ft(s,t.withFont("mathrm"),!0),h=0;h{var{parser:r,funcName:a}=e,n=t[0];return{type:"operatorname",mode:r.mode,body:mt(n),alwaysHandleSupSub:"\\operatornamewithlimits"===a,limits:!1,parentIsSupSub:!1}},htmlBuilder:va,mathmlBuilder:(e,t)=>{for(var r=Rt(e.body,t.withFont("mathrm")),a=!0,n=0;ne.toText()).join("");r=[new Bt.TextNode(s)]}var l=new Bt.MathNode("mi",r);l.setAttribute("mathvariant","normal");var h=new Bt.MathNode("mo",[Ct("\u2061","text")]);return e.parentIsSupSub?new Bt.MathNode("mrow",[l,h]):Bt.newDocumentFragment([l,h])}}),Ur("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),lt({type:"ordgroup",htmlBuilder:(e,t)=>e.semisimple?Je.makeFragment(ft(e.body,t,!1)):Je.makeSpan(["mord"],ft(e.body,t,!0),t),mathmlBuilder:(e,t)=>Ht(e.body,t,!0)}),st({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,a=t[0];return{type:"overline",mode:r.mode,body:a}},htmlBuilder(e,t){var r=kt(e.body,t.havingCrampedStyle()),a=Je.makeLineSpan("overline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},t);return Je.makeSpan(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[new Bt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new Bt.MathNode("mover",[Ot(e.body,t),r]);return a.setAttribute("accent","true"),a}}),st({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"phantom",mode:r.mode,body:mt(a)}},htmlBuilder:(e,t)=>{var r=ft(e.body,t.withPhantom(),!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>{var r=Rt(e.body,t);return new Bt.MathNode("mphantom",r)}}),st({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"hphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=Je.makeSpan([],[kt(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var a=0;a{var r=Rt(mt(e.body),t),a=new Bt.MathNode("mphantom",r),n=new Bt.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}}),st({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"vphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=Je.makeSpan(["inner"],[kt(e.body,t.withPhantom())]),a=Je.makeSpan(["fix"],[]);return Je.makeSpan(["mord","rlap"],[r,a],t)},mathmlBuilder:(e,t)=>{var r=Rt(mt(e.body),t),a=new Bt.MathNode("mphantom",r),n=new Bt.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}}),st({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,a=Yt(t[0],"size").value,n=t[1];return{type:"raisebox",mode:r.mode,dy:a,body:n}},htmlBuilder(e,t){var r=kt(e.body,t),a=F(e.dy,t);return Je.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]),a=e.dy.number+e.dy.unit;return r.setAttribute("voffset",a),r}}),st({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}}),st({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:a}=e,n=r[0],i=Yt(t[0],"size"),o=Yt(t[1],"size");return{type:"rule",mode:a.mode,shift:n&&Yt(n,"size").value,width:i.value,height:o.value}},htmlBuilder(e,t){var r=Je.makeSpan(["mord","rule"],[],t),a=F(e.width,t),n=F(e.height,t),i=e.shift?F(e.shift,t):0;return r.style.borderRightWidth=G(a),r.style.borderTopWidth=G(n),r.style.bottom=G(i),r.width=a,r.height=n+i,r.depth=-i,r.maxFontSize=1.125*n*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=F(e.width,t),a=F(e.height,t),n=e.shift?F(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new Bt.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",G(r)),o.setAttribute("height",G(a));var s=new Bt.MathNode("mpadded",[o]);return n>=0?s.setAttribute("height",G(n)):(s.setAttribute("height",G(n)),s.setAttribute("depth",G(-n))),s.setAttribute("voffset",G(n)),s}});var ya=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];st({type:"sizing",names:ya,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:ya.indexOf(a)+1,body:i}},htmlBuilder:(e,t)=>{var r=t.havingSize(e.size);return ba(e.body,r,t)},mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),a=Rt(e.body,r),n=new Bt.MathNode("mstyle",a);return n.setAttribute("mathsize",G(r.sizeMultiplier)),n}}),st({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:a}=e,n=!1,i=!1,o=r[0]&&Yt(r[0],"ordgroup");if(o)for(var s="",l=0;l{var r=Je.makeSpan([],[kt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var a=0;a{var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),st({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a}=e,n=r[0],i=t[0];return{type:"sqrt",mode:a.mode,body:i,index:n}},htmlBuilder(e,t){var r=kt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=Je.wrapFragment(r,t);var a=t.fontMetrics().defaultRuleThickness,n=a;t.style.idr.height+r.depth+i&&(i=(i+m-r.height-r.depth)/2);var c=s.height-r.height-i-l;r.style.paddingLeft=G(h);var p=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+c)},{type:"elem",elem:s},{type:"kern",size:l}]},t);if(e.index){var u=t.havingStyle(k.SCRIPTSCRIPT),d=kt(e.index,u,t),g=.6*(p.height-p.depth),f=Je.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:d}]},t),v=Je.makeSpan(["root"],[f]);return Je.makeSpan(["mord","sqrt"],[v,p],t)}return Je.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:a}=e;return a?new Bt.MathNode("mroot",[Ot(r,t),Ot(a,t)]):new Bt.MathNode("msqrt",[Ot(r,t)])}});var xa={display:k.DISPLAY,text:k.TEXT,script:k.SCRIPT,scriptscript:k.SCRIPTSCRIPT};st({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder(e,t){var r=xa[e.style],a=t.havingStyle(r).withFont("");return ba(e.body,a,t)},mathmlBuilder(e,t){var r=xa[e.style],a=t.havingStyle(r),n=Rt(e.body,a),i=new Bt.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});lt({type:"supsub",htmlBuilder(e,t){var r=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===k.DISPLAY.size||r.alwaysHandleSupSub)?ua:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===k.DISPLAY.size||r.limits)?va:null:"accent"===r.type?m.isCharacterBox(r.base)?_t:null:"horizBrace"===r.type&&!e.sub===r.isOver?la:null:null}(e,t);if(r)return r(e,t);var a,n,i,{base:o,sup:s,sub:l}=e,h=kt(o,t),c=t.fontMetrics(),p=0,u=0,d=o&&m.isCharacterBox(o);if(s){var g=t.havingStyle(t.style.sup());a=kt(s,g,t),d||(p=h.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var f=t.havingStyle(t.style.sub());n=kt(l,f,t),d||(u=h.depth+f.fontMetrics().subDrop*f.sizeMultiplier/t.sizeMultiplier)}i=t.style===k.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,b=t.sizeMultiplier,y=G(.5/c.ptPerEm/b),x=null;if(n){var w=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(h instanceof J||w)&&(x=G(-h.italic))}if(a&&n){p=Math.max(p,i,a.depth+.25*c.xHeight),u=Math.max(u,c.sub2);var S=4*c.defaultRuleThickness;if(p-a.depth-(n.height-u)0&&(p+=M,u-=M)}var z=[{type:"elem",elem:n,shift:u,marginRight:y,marginLeft:x},{type:"elem",elem:a,shift:-p,marginRight:y}];v=Je.makeVList({positionType:"individualShift",children:z},t)}else if(n){u=Math.max(u,c.sub1,n.height-.8*c.xHeight);var A=[{type:"elem",elem:n,marginLeft:x,marginRight:y}];v=Je.makeVList({positionType:"shift",positionData:u,children:A},t)}else{if(!a)throw new Error("supsub must have either sup or sub.");p=Math.max(p,i,a.depth+.25*c.xHeight),v=Je.makeVList({positionType:"shift",positionData:-p,children:[{type:"elem",elem:a,marginRight:y}]},t)}var T=xt(h,"right")||"mord";return Je.makeSpan([T],[h,Je.makeSpan(["msupsub"],[v])],t)},mathmlBuilder(e,t){var r,a=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(a=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var n,i=[Ot(e.base,t)];if(e.sub&&i.push(Ot(e.sub,t)),e.sup&&i.push(Ot(e.sup,t)),a)n=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;n=o&&"op"===o.type&&o.limits&&t.style===k.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===k.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;n=s&&"op"===s.type&&s.limits&&(t.style===k.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===k.DISPLAY)?"munder":"msub"}else{var l=e.base;n=l&&"op"===l.type&&l.limits&&(t.style===k.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===k.DISPLAY)?"mover":"msup"}return new Bt.MathNode(n,i)}}),lt({type:"atom",htmlBuilder:(e,t)=>Je.mathsym(e.text,e.mode,t,["m"+e.family]),mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[Ct(e.text,e.mode)]);if("bin"===e.family){var a=qt(e,t);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var wa={mi:"italic",mn:"normal",mtext:"normal"};lt({type:"mathord",htmlBuilder:(e,t)=>Je.makeOrd(e,t,"mathord"),mathmlBuilder(e,t){var r=new Bt.MathNode("mi",[Ct(e.text,e.mode,t)]),a=qt(e,t)||"italic";return a!==wa[r.type]&&r.setAttribute("mathvariant",a),r}}),lt({type:"textord",htmlBuilder:(e,t)=>Je.makeOrd(e,t,"textord"),mathmlBuilder(e,t){var r,a=Ct(e.text,e.mode,t),n=qt(e,t)||"normal";return r="text"===e.mode?new Bt.MathNode("mtext",[a]):/[0-9]/.test(e.text)?new Bt.MathNode("mn",[a]):"\\prime"===e.text?new Bt.MathNode("mo",[a]):new Bt.MathNode("mi",[a]),n!==wa[r.type]&&r.setAttribute("mathvariant",n),r}});var ka={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Sa={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};lt({type:"spacing",htmlBuilder(e,t){if(Sa.hasOwnProperty(e.text)){var r=Sa[e.text].className||"";if("text"===e.mode){var a=Je.makeOrd(e,t,"textord");return a.classes.push(r),a}return Je.makeSpan(["mspace",r],[Je.mathsym(e.text,e.mode,t)],t)}if(ka.hasOwnProperty(e.text))return Je.makeSpan(["mspace",ka[e.text]],[],t);throw new i('Unknown type of space "'+e.text+'"')},mathmlBuilder(e,t){if(!Sa.hasOwnProperty(e.text)){if(ka.hasOwnProperty(e.text))return new Bt.MathNode("mspace");throw new i('Unknown type of space "'+e.text+'"')}return new Bt.MathNode("mtext",[new Bt.TextNode("\xa0")])}});var Ma=()=>{var e=new Bt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};lt({type:"tag",mathmlBuilder(e,t){var r=new Bt.MathNode("mtable",[new Bt.MathNode("mtr",[Ma(),new Bt.MathNode("mtd",[Ht(e.body,t)]),Ma(),new Bt.MathNode("mtd",[Ht(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var za={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Aa={"\\textbf":"textbf","\\textmd":"textmd"},Ta={"\\textit":"textit","\\textup":"textup"},Ba=(e,t)=>{var r=e.font;return r?za[r]?t.withTextFontFamily(za[r]):Aa[r]?t.withTextFontWeight(Aa[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(Ta[r]):t};st({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"text",mode:r.mode,body:mt(n),font:a}},htmlBuilder(e,t){var r=Ba(e,t),a=ft(e.body,r,!0);return Je.makeSpan(["mord","text"],a,r)},mathmlBuilder(e,t){var r=Ba(e,t);return Ht(e.body,r)}}),st({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=kt(e.body,t),a=Je.makeLineSpan("underline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Je.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},t);return Je.makeSpan(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[new Bt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new Bt.MathNode("munder",[Ot(e.body,t),r]);return a.setAttribute("accentunder","true"),a}}),st({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=kt(e.body,t),a=t.fontMetrics().axisHeight,n=.5*(r.height-a-(r.depth+a));return Je.makeVList({positionType:"shift",positionData:n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:(e,t)=>new Bt.MathNode("mpadded",[Ot(e.body,t)],["vcenter"])}),st({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new i("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=Ca(e),a=[],n=t.havingStyle(t.style.text()),i=0;ie.body.replace(/ /g,e.star?"\u2423":"\xa0"),Na=nt,qa="[ \r\n\t]",Ia="(\\\\[a-zA-Z@]+)"+qa+"*",Ra="[\u0300-\u036f]",Ha=new RegExp(Ra+"+$"),Oa="("+qa+"+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+Ra+"*|[\ud800-\udbff][\udc00-\udfff]"+Ra+"*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|"+Ia+"|\\\\[^\ud800-\udfff])";class Ea{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(Oa,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new n("EOF",new a(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new i("Unexpected character: '"+e[t]+"'",new n(e[t],new a(this,t,t+1)));var o=r[6]||r[3]||(r[2]?"\\ ":" ");if(14===this.catcodes[o]){var s=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}return new n(o,new a(this,t,this.tokenRegex.lastIndex))}}class La{constructor(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new i("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,r){if(void 0===r&&(r=!1),r){for(var a=0;a0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(e)&&(n[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t}}var Da=Gr;Ur("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}}),Ur("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}}),Ur("\\@firstoftwo",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),Ur("\\@secondoftwo",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),Ur("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),Ur("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Ur("\\TextOrMath",function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var Va={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Ur("\\char",function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new i("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=Va[r.text])||a>=t)throw new i("Invalid base-"+t+" digit "+r.text);for(var n;null!=(n=Va[e.future().text])&&n{var n=e.consumeArg().tokens;if(1!==n.length)throw new i("\\newcommand's first argument must be a macro name");var o=n[0].text,s=e.isDefined(o);if(s&&!t)throw new i("\\newcommand{"+o+"} attempting to redefine "+o+"; use \\renewcommand");if(!s&&!r)throw new i("\\renewcommand{"+o+"} when command "+o+" does not yet exist; use \\newcommand");var l=0;if(1===(n=e.consumeArg().tokens).length&&"["===n[0].text){for(var h="",m=e.expandNextToken();"]"!==m.text&&"EOF"!==m.text;)h+=m.text,m=e.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new i("Invalid number of arguments: "+h);l=parseInt(h),n=e.consumeArg().tokens}return s&&a||e.macros.set(o,{tokens:n,numArgs:l}),""};Ur("\\newcommand",e=>Pa(e,!1,!0,!1)),Ur("\\renewcommand",e=>Pa(e,!0,!1,!1)),Ur("\\providecommand",e=>Pa(e,!0,!0,!0)),Ur("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(e=>e.text).join("")),""}),Ur("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(e=>e.text).join("")),""}),Ur("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Na[r],ie.math[r],ie.text[r]),""}),Ur("\\bgroup","{"),Ur("\\egroup","}"),Ur("~","\\nobreakspace"),Ur("\\lq","`"),Ur("\\rq","'"),Ur("\\aa","\\r a"),Ur("\\AA","\\r A"),Ur("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),Ur("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Ur("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),Ur("\u212c","\\mathscr{B}"),Ur("\u2130","\\mathscr{E}"),Ur("\u2131","\\mathscr{F}"),Ur("\u210b","\\mathscr{H}"),Ur("\u2110","\\mathscr{I}"),Ur("\u2112","\\mathscr{L}"),Ur("\u2133","\\mathscr{M}"),Ur("\u211b","\\mathscr{R}"),Ur("\u212d","\\mathfrak{C}"),Ur("\u210c","\\mathfrak{H}"),Ur("\u2128","\\mathfrak{Z}"),Ur("\\Bbbk","\\Bbb{k}"),Ur("\xb7","\\cdotp"),Ur("\\llap","\\mathllap{\\textrm{#1}}"),Ur("\\rlap","\\mathrlap{\\textrm{#1}}"),Ur("\\clap","\\mathclap{\\textrm{#1}}"),Ur("\\mathstrut","\\vphantom{(}"),Ur("\\underbar","\\underline{\\text{#1}}"),Ur("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),Ur("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),Ur("\\ne","\\neq"),Ur("\u2260","\\neq"),Ur("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),Ur("\u2209","\\notin"),Ur("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),Ur("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),Ur("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),Ur("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),Ur("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),Ur("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),Ur("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),Ur("\u27c2","\\perp"),Ur("\u203c","\\mathclose{!\\mkern-0.8mu!}"),Ur("\u220c","\\notni"),Ur("\u231c","\\ulcorner"),Ur("\u231d","\\urcorner"),Ur("\u231e","\\llcorner"),Ur("\u231f","\\lrcorner"),Ur("\xa9","\\copyright"),Ur("\xae","\\textregistered"),Ur("\ufe0f","\\textregistered"),Ur("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Ur("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Ur("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Ur("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Ur("\\vdots","{\\varvdots\\rule{0pt}{15pt}}"),Ur("\u22ee","\\vdots"),Ur("\\varGamma","\\mathit{\\Gamma}"),Ur("\\varDelta","\\mathit{\\Delta}"),Ur("\\varTheta","\\mathit{\\Theta}"),Ur("\\varLambda","\\mathit{\\Lambda}"),Ur("\\varXi","\\mathit{\\Xi}"),Ur("\\varPi","\\mathit{\\Pi}"),Ur("\\varSigma","\\mathit{\\Sigma}"),Ur("\\varUpsilon","\\mathit{\\Upsilon}"),Ur("\\varPhi","\\mathit{\\Phi}"),Ur("\\varPsi","\\mathit{\\Psi}"),Ur("\\varOmega","\\mathit{\\Omega}"),Ur("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Ur("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Ur("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Ur("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Ur("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Ur("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;"),Ur("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"),Ur("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Fa={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Ur("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Fa?t=Fa[r]:("\\not"===r.slice(0,4)||r in ie.math&&["bin","rel"].includes(ie.math[r].group))&&(t="\\dotsb"),t});var Ga={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Ur("\\dotso",function(e){return e.future().text in Ga?"\\ldots\\,":"\\ldots"}),Ur("\\dotsc",function(e){var t=e.future().text;return t in Ga&&","!==t?"\\ldots\\,":"\\ldots"}),Ur("\\cdots",function(e){return e.future().text in Ga?"\\@cdots\\,":"\\@cdots"}),Ur("\\dotsb","\\cdots"),Ur("\\dotsm","\\cdots"),Ur("\\dotsi","\\!\\cdots"),Ur("\\dotsx","\\ldots\\,"),Ur("\\DOTSI","\\relax"),Ur("\\DOTSB","\\relax"),Ur("\\DOTSX","\\relax"),Ur("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Ur("\\,","\\tmspace+{3mu}{.1667em}"),Ur("\\thinspace","\\,"),Ur("\\>","\\mskip{4mu}"),Ur("\\:","\\tmspace+{4mu}{.2222em}"),Ur("\\medspace","\\:"),Ur("\\;","\\tmspace+{5mu}{.2777em}"),Ur("\\thickspace","\\;"),Ur("\\!","\\tmspace-{3mu}{.1667em}"),Ur("\\negthinspace","\\!"),Ur("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Ur("\\negthickspace","\\tmspace-{5mu}{.277em}"),Ur("\\enspace","\\kern.5em "),Ur("\\enskip","\\hskip.5em\\relax"),Ur("\\quad","\\hskip1em\\relax"),Ur("\\qquad","\\hskip2em\\relax"),Ur("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Ur("\\tag@paren","\\tag@literal{({#1})}"),Ur("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new i("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),Ur("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Ur("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Ur("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Ur("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Ur("\\newline","\\\\\\relax"),Ur("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Ua=G(C["Main-Regular"]["T".charCodeAt(0)][1]-.7*C["Main-Regular"]["A".charCodeAt(0)][1]);Ur("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Ua+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Ur("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Ua+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Ur("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Ur("\\@hspace","\\hskip #1\\relax"),Ur("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Ur("\\ordinarycolon",":"),Ur("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Ur("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Ur("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Ur("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Ur("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Ur("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Ur("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Ur("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Ur("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Ur("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Ur("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Ur("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Ur("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Ur("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Ur("\u2237","\\dblcolon"),Ur("\u2239","\\eqcolon"),Ur("\u2254","\\coloneqq"),Ur("\u2255","\\eqqcolon"),Ur("\u2a74","\\Coloneqq"),Ur("\\ratio","\\vcentcolon"),Ur("\\coloncolon","\\dblcolon"),Ur("\\colonequals","\\coloneqq"),Ur("\\coloncolonequals","\\Coloneqq"),Ur("\\equalscolon","\\eqqcolon"),Ur("\\equalscoloncolon","\\Eqqcolon"),Ur("\\colonminus","\\coloneq"),Ur("\\coloncolonminus","\\Coloneq"),Ur("\\minuscolon","\\eqcolon"),Ur("\\minuscoloncolon","\\Eqcolon"),Ur("\\coloncolonapprox","\\Colonapprox"),Ur("\\coloncolonsim","\\Colonsim"),Ur("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Ur("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Ur("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Ur("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Ur("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Ur("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Ur("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Ur("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Ur("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Ur("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Ur("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Ur("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Ur("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Ur("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Ur("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Ur("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Ur("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Ur("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Ur("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Ur("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Ur("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Ur("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Ur("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Ur("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Ur("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Ur("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Ur("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Ur("\\imath","\\html@mathml{\\@imath}{\u0131}"),Ur("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Ur("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Ur("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Ur("\u27e6","\\llbracket"),Ur("\u27e7","\\rrbracket"),Ur("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Ur("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Ur("\u2983","\\lBrace"),Ur("\u2984","\\rBrace"),Ur("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Ur("\u29b5","\\minuso"),Ur("\\darr","\\downarrow"),Ur("\\dArr","\\Downarrow"),Ur("\\Darr","\\Downarrow"),Ur("\\lang","\\langle"),Ur("\\rang","\\rangle"),Ur("\\uarr","\\uparrow"),Ur("\\uArr","\\Uparrow"),Ur("\\Uarr","\\Uparrow"),Ur("\\N","\\mathbb{N}"),Ur("\\R","\\mathbb{R}"),Ur("\\Z","\\mathbb{Z}"),Ur("\\alef","\\aleph"),Ur("\\alefsym","\\aleph"),Ur("\\Alpha","\\mathrm{A}"),Ur("\\Beta","\\mathrm{B}"),Ur("\\bull","\\bullet"),Ur("\\Chi","\\mathrm{X}"),Ur("\\clubs","\\clubsuit"),Ur("\\cnums","\\mathbb{C}"),Ur("\\Complex","\\mathbb{C}"),Ur("\\Dagger","\\ddagger"),Ur("\\diamonds","\\diamondsuit"),Ur("\\empty","\\emptyset"),Ur("\\Epsilon","\\mathrm{E}"),Ur("\\Eta","\\mathrm{H}"),Ur("\\exist","\\exists"),Ur("\\harr","\\leftrightarrow"),Ur("\\hArr","\\Leftrightarrow"),Ur("\\Harr","\\Leftrightarrow"),Ur("\\hearts","\\heartsuit"),Ur("\\image","\\Im"),Ur("\\infin","\\infty"),Ur("\\Iota","\\mathrm{I}"),Ur("\\isin","\\in"),Ur("\\Kappa","\\mathrm{K}"),Ur("\\larr","\\leftarrow"),Ur("\\lArr","\\Leftarrow"),Ur("\\Larr","\\Leftarrow"),Ur("\\lrarr","\\leftrightarrow"),Ur("\\lrArr","\\Leftrightarrow"),Ur("\\Lrarr","\\Leftrightarrow"),Ur("\\Mu","\\mathrm{M}"),Ur("\\natnums","\\mathbb{N}"),Ur("\\Nu","\\mathrm{N}"),Ur("\\Omicron","\\mathrm{O}"),Ur("\\plusmn","\\pm"),Ur("\\rarr","\\rightarrow"),Ur("\\rArr","\\Rightarrow"),Ur("\\Rarr","\\Rightarrow"),Ur("\\real","\\Re"),Ur("\\reals","\\mathbb{R}"),Ur("\\Reals","\\mathbb{R}"),Ur("\\Rho","\\mathrm{P}"),Ur("\\sdot","\\cdot"),Ur("\\sect","\\S"),Ur("\\spades","\\spadesuit"),Ur("\\sub","\\subset"),Ur("\\sube","\\subseteq"),Ur("\\supe","\\supseteq"),Ur("\\Tau","\\mathrm{T}"),Ur("\\thetasym","\\vartheta"),Ur("\\weierp","\\wp"),Ur("\\Zeta","\\mathrm{Z}"),Ur("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Ur("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Ur("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Ur("\\bra","\\mathinner{\\langle{#1}|}"),Ur("\\ket","\\mathinner{|{#1}\\rangle}"),Ur("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Ur("\\Bra","\\left\\langle#1\\right|"),Ur("\\Ket","\\left|#1\\right\\rangle");var Ya=e=>t=>{var r=t.consumeArg().tokens,a=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,o=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=t=>r=>{e&&(r.macros.set("|",o),n.length&&r.macros.set("\\|",s));var i=t;!t&&n.length&&("|"===r.future().text&&(r.popToken(),i=!0));return{tokens:i?n:a,numArgs:0}};t.macros.set("|",l(!1)),n.length&&t.macros.set("\\|",l(!0));var h=t.consumeArg().tokens,m=t.expandTokens([...i,...h,...r]);return t.macros.endGroup(),{tokens:m.reverse(),numArgs:0}};Ur("\\bra@ket",Ya(!1)),Ur("\\bra@set",Ya(!0)),Ur("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Ur("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Ur("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Ur("\\angln","{\\angl n}"),Ur("\\blue","\\textcolor{##6495ed}{#1}"),Ur("\\orange","\\textcolor{##ffa500}{#1}"),Ur("\\pink","\\textcolor{##ff00af}{#1}"),Ur("\\red","\\textcolor{##df0030}{#1}"),Ur("\\green","\\textcolor{##28ae7b}{#1}"),Ur("\\gray","\\textcolor{gray}{#1}"),Ur("\\purple","\\textcolor{##9d38bd}{#1}"),Ur("\\blueA","\\textcolor{##ccfaff}{#1}"),Ur("\\blueB","\\textcolor{##80f6ff}{#1}"),Ur("\\blueC","\\textcolor{##63d9ea}{#1}"),Ur("\\blueD","\\textcolor{##11accd}{#1}"),Ur("\\blueE","\\textcolor{##0c7f99}{#1}"),Ur("\\tealA","\\textcolor{##94fff5}{#1}"),Ur("\\tealB","\\textcolor{##26edd5}{#1}"),Ur("\\tealC","\\textcolor{##01d1c1}{#1}"),Ur("\\tealD","\\textcolor{##01a995}{#1}"),Ur("\\tealE","\\textcolor{##208170}{#1}"),Ur("\\greenA","\\textcolor{##b6ffb0}{#1}"),Ur("\\greenB","\\textcolor{##8af281}{#1}"),Ur("\\greenC","\\textcolor{##74cf70}{#1}"),Ur("\\greenD","\\textcolor{##1fab54}{#1}"),Ur("\\greenE","\\textcolor{##0d923f}{#1}"),Ur("\\goldA","\\textcolor{##ffd0a9}{#1}"),Ur("\\goldB","\\textcolor{##ffbb71}{#1}"),Ur("\\goldC","\\textcolor{##ff9c39}{#1}"),Ur("\\goldD","\\textcolor{##e07d10}{#1}"),Ur("\\goldE","\\textcolor{##a75a05}{#1}"),Ur("\\redA","\\textcolor{##fca9a9}{#1}"),Ur("\\redB","\\textcolor{##ff8482}{#1}"),Ur("\\redC","\\textcolor{##f9685d}{#1}"),Ur("\\redD","\\textcolor{##e84d39}{#1}"),Ur("\\redE","\\textcolor{##bc2612}{#1}"),Ur("\\maroonA","\\textcolor{##ffbde0}{#1}"),Ur("\\maroonB","\\textcolor{##ff92c6}{#1}"),Ur("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Ur("\\maroonD","\\textcolor{##ca337c}{#1}"),Ur("\\maroonE","\\textcolor{##9e034e}{#1}"),Ur("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Ur("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Ur("\\purpleC","\\textcolor{##aa87ff}{#1}"),Ur("\\purpleD","\\textcolor{##7854ab}{#1}"),Ur("\\purpleE","\\textcolor{##543b78}{#1}"),Ur("\\mintA","\\textcolor{##f5f9e8}{#1}"),Ur("\\mintB","\\textcolor{##edf2df}{#1}"),Ur("\\mintC","\\textcolor{##e0e5cc}{#1}"),Ur("\\grayA","\\textcolor{##f6f7f7}{#1}"),Ur("\\grayB","\\textcolor{##f0f1f2}{#1}"),Ur("\\grayC","\\textcolor{##e3e5e6}{#1}"),Ur("\\grayD","\\textcolor{##d6d8da}{#1}"),Ur("\\grayE","\\textcolor{##babec2}{#1}"),Ur("\\grayF","\\textcolor{##888d93}{#1}"),Ur("\\grayG","\\textcolor{##626569}{#1}"),Ur("\\grayH","\\textcolor{##3b3e40}{#1}"),Ur("\\grayI","\\textcolor{##21242c}{#1}"),Ur("\\kaBlue","\\textcolor{##314453}{#1}"),Ur("\\kaGreen","\\textcolor{##71B307}{#1}");var Xa={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class Wa{constructor(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new La(Da,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Ea(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var t,r,i;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:i,end:r}=this.consumeArg(["]"]))}else({tokens:i,start:t,end:r}=this.consumeArg());return this.pushToken(new n("EOF",r.loc)),this.pushTokens(i),new n("",a.range(t,r))}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,n=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1===--o)throw new i("Extra }",a)}else if("EOF"===a.text)throw new i("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===n.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:n,end:a}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new i("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;athis.settings.maxExpand)throw new i("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),r=t.text,a=t.noexpand?null:this._getExpansion(r);if(null==a||e&&a.unexpandable){if(e&&null==a&&"\\"===r[0]&&!this.isDefined(r))throw new i("Undefined control sequence: "+r);return this.pushToken(t),!1}this.countExpansion(1);var n=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(n=n.slice()).length-1;s>=0;--s){var l=n[s];if("#"===l.text){if(0===s)throw new i("Incomplete placeholder at end of macro body",l);if("#"===(l=n[--s]).text)n.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new i("Not a valid argument number",l);n.splice(s,2,...o[+l.text-1])}}}return this.pushTokens(n),n.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new n(e)]):void 0}expandTokens(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),t.push(a)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t?t.map(e=>e.text).join(""):t}_getExpansion(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var a="function"==typeof t?t(this):t;if("string"==typeof a){var n=0;if(-1!==a.indexOf("#"))for(var i=a.replace(/##/g,"");-1!==i.indexOf("#"+(n+1));)++n;for(var o=new Ea(a,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:n}}return a}isDefined(e){return this.macros.has(e)||Na.hasOwnProperty(e)||ie.math.hasOwnProperty(e)||ie.text.hasOwnProperty(e)||Xa.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Na.hasOwnProperty(e)&&!Na[e].primitive}}var _a=/^[\u208a\u208b\u208c\u208d\u208e\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1d62\u2c7c\u2096\u2097\u2098\u2099\u2092\u209a\u1d63\u209b\u209c\u1d64\u1d65\u2093\u1d66\u1d67\u1d68\u1d69\u1d6a]/,ja=Object.freeze({"\u208a":"+","\u208b":"-","\u208c":"=","\u208d":"(","\u208e":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1d62":"i","\u2c7c":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209a":"p","\u1d63":"r","\u209b":"s","\u209c":"t","\u1d64":"u","\u1d65":"v","\u2093":"x","\u1d66":"\u03b2","\u1d67":"\u03b3","\u1d68":"\u03c1","\u1d69":"\u03d5","\u1d6a":"\u03c7","\u207a":"+","\u207b":"-","\u207c":"=","\u207d":"(","\u207e":")","\u2070":"0","\xb9":"1","\xb2":"2","\xb3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1d2c":"A","\u1d2e":"B","\u1d30":"D","\u1d31":"E","\u1d33":"G","\u1d34":"H","\u1d35":"I","\u1d36":"J","\u1d37":"K","\u1d38":"L","\u1d39":"M","\u1d3a":"N","\u1d3c":"O","\u1d3e":"P","\u1d3f":"R","\u1d40":"T","\u1d41":"U","\u2c7d":"V","\u1d42":"W","\u1d43":"a","\u1d47":"b","\u1d9c":"c","\u1d48":"d","\u1d49":"e","\u1da0":"f","\u1d4d":"g","\u02b0":"h","\u2071":"i","\u02b2":"j","\u1d4f":"k","\u02e1":"l","\u1d50":"m","\u207f":"n","\u1d52":"o","\u1d56":"p","\u02b3":"r","\u02e2":"s","\u1d57":"t","\u1d58":"u","\u1d5b":"v","\u02b7":"w","\u02e3":"x","\u02b8":"y","\u1dbb":"z","\u1d5d":"\u03b2","\u1d5e":"\u03b3","\u1d5f":"\u03b4","\u1d60":"\u03d5","\u1d61":"\u03c7","\u1dbf":"\u03b8"}),$a={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},Za={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"};class Ka{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Wa(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new i("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new n("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==Ka.endOfExpression.indexOf(a.text))break;if(t&&a.text===t)break;if(e&&Na[a.text]&&Na[a.text].infix)break;var n=this.parseAtom(t);if(!n)break;"internal"!==n.type&&r.push(n)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var t,r=-1,a=0;a=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var l,h=ie[this.mode][t].group,m=a.range(e);if(ae.hasOwnProperty(h)){var c=h;l={type:"atom",mode:this.mode,family:c,loc:m,text:t}}else l={type:h,mode:this.mode,loc:m,text:t};o=l}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(z(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),o={type:"textord",mode:"text",loc:a.range(e),text:t}}if(this.consume(),s)for(var p=0;p{i.r(t),i.d(t,{default:()=>l});i(6540);var s=i(1312),n=i(5500),o=i(4042),r=i(3363),a=i(4848);function l(){const e=(0,s.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.be,{title:e}),(0,a.jsx)(o.A,{children:(0,a.jsx)(r.A,{})})]})}},3363:(e,t,i)=>{i.d(t,{A:()=>a});i(6540);var s=i(4164),n=i(1312),o=i(1107),r=i(4848);function a({className:e}){return(0,r.jsx)("main",{className:(0,s.A)("container margin-vert--xl",e),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(n.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(n.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(n.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/user/assets/js/2279.6a0e29ca.js b/user/assets/js/2279.6a0e29ca.js new file mode 100644 index 0000000..e94d62c --- /dev/null +++ b/user/assets/js/2279.6a0e29ca.js @@ -0,0 +1,2 @@ +/*! For license information please see 2279.6a0e29ca.js.LICENSE.txt */ +(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2279],{45:(t,e,r)=>{"use strict";r.d(e,{XX:()=>u,q7:()=>d,sO:()=>h});var i=r(5164),n=r(5894),a=r(3226),o=r(7633),s=r(797),l={common:o.Y2,getConfig:o.zj,insertCluster:n.U,insertEdge:i.Jo,insertEdgeLabel:i.jP,insertMarkers:i.g0,insertNode:n.on,interpolateToCurve:a.Ib,labelHelper:n.Zk,log:s.Rm,positionEdgeLabel:i.T_},c={},h=(0,s.K2)(t=>{for(const e of t)c[e.name]=e},"registerLayoutLoaders");(0,s.K2)(()=>{h([{name:"dagre",loader:(0,s.K2)(async()=>await Promise.all([r.e(2076),r.e(2334),r.e(7873)]).then(r.bind(r,7873)),"loader")},{name:"cose-bilkent",loader:(0,s.K2)(async()=>await Promise.all([r.e(165),r.e(7928)]).then(r.bind(r,7928)),"loader")}])},"registerDefaultLayoutLoaders")();var u=(0,s.K2)(async(t,e)=>{if(!(t.layoutAlgorithm in c))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);const r=c[t.layoutAlgorithm];return(await r.loader()).render(t,e,l,{algorithm:r.algorithm})},"render"),d=(0,s.K2)((t="",{fallback:e="dagre"}={})=>{if(t in c)return t;if(e in c)return s.Rm.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")},92:(t,e,r)=>{"use strict";r.d(e,{W6:()=>ie,GZ:()=>se,WY:()=>Wt,pC:()=>zt,hE:()=>oe,Gc:()=>It});var i=r(3226),n=r(7633),a=r(797);const o=(t,e)=>!!t&&!(!(e&&""===t.prefix||t.prefix)||!t.name),s=Object.freeze({left:0,top:0,width:16,height:16}),l=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),c=Object.freeze({...s,...l}),h=Object.freeze({...c,body:"",hidden:!1});function u(t,e){const r=function(t,e){const r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);const i=((t.rotate||0)+(e.rotate||0))%4;return i&&(r.rotate=i),r}(t,e);for(const i in h)i in l?i in t&&!(i in r)&&(r[i]=l[i]):i in e?r[i]=e[i]:i in t&&(r[i]=t[i]);return r}function d(t,e,r){const i=t.icons,n=t.aliases||Object.create(null);let a={};function o(t){a=u(i[t]||n[t],a)}return o(e),r.forEach(o),u(t,a)}function p(t,e){if(t.icons[e])return d(t,e,[]);const r=function(t,e){const r=t.icons,i=t.aliases||Object.create(null),n=Object.create(null);return(e||Object.keys(r).concat(Object.keys(i))).forEach(function t(e){if(r[e])return n[e]=[];if(!(e in n)){n[e]=null;const r=i[e]&&i[e].parent,a=r&&t(r);a&&(n[e]=[r].concat(a))}return n[e]}),n}(t,[e])[e];return r?d(t,e,r):null}const f=Object.freeze({width:null,height:null}),g=Object.freeze({...f,...l}),y=/(-?[0-9.]*[0-9]+[0-9.]*)/g,m=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function x(t,e,r){if(1===e)return t;if(r=r||100,"number"==typeof t)return Math.ceil(t*e*r)/r;if("string"!=typeof t)return t;const i=t.split(y);if(null===i||!i.length)return t;const n=[];let a=i.shift(),o=m.test(a);for(;;){if(o){const t=parseFloat(a);isNaN(t)?n.push(a):n.push(Math.ceil(t*e*r)/r)}else n.push(a);if(a=i.shift(),void 0===a)return n.join("");o=!o}}const b=/\sid="(\S+)"/g,k=new Map;function w(t){const e=[];let r;for(;r=b.exec(t);)e.push(r[1]);if(!e.length)return t;const i="suffix"+(16777216*Math.random()|Date.now()).toString(16);return e.forEach(e=>{const r=function(t){t=t.replace(/[0-9]+$/,"")||"a";const e=k.get(t)||0;return k.set(t,e+1),e?`${t}${e}`:t}(e),n=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+n+')([")]|\\.[a-z])',"g"),"$1"+r+i+"$3")}),t=t.replace(new RegExp(i,"g"),"")}var C=r(451);function _(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var v={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function S(t){v=t}var T={exec:()=>null};function A(t,e=""){let r="string"==typeof t?t:t.source,i={replace:(t,e)=>{let n="string"==typeof e?e:e.source;return n=n.replace(B.caret,"$1"),r=r.replace(t,n),i},getRegex:()=>new RegExp(r,e)};return i}var M=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},L=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,F=/(?:[*+-]|\d{1,9}[.)])/,$=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,E=A($).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),D=A($).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),O=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,R=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,K=A(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",R).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),I=A(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,F).getRegex(),N="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",P=/|$))/,z=A("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",P).replace("tag",N).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),q=A(O).replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),j={blockquote:A(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",q).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:K,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:L,html:z,lheading:E,list:I,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:q,table:T,text:/^[^\n]+/},W=A("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),H={...j,lheading:D,table:W,paragraph:A(O).replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",W).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex()},U={...j,html:A("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",P).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:T,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:A(O).replace("hr",L).replace("heading"," *#{1,6} *[^\n]").replace("lheading",E).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Y=/^( {2,}|\\)\n(?!\s*$)/,G=/[\p{P}\p{S}]/u,X=/[\s\p{P}\p{S}]/u,V=/[^\s\p{P}\p{S}]/u,Z=A(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,X).getRegex(),Q=/(?!~)[\p{P}\p{S}]/u,J=A(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",M?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),tt=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,et=A(tt,"u").replace(/punct/g,G).getRegex(),rt=A(tt,"u").replace(/punct/g,Q).getRegex(),it="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",nt=A(it,"gu").replace(/notPunctSpace/g,V).replace(/punctSpace/g,X).replace(/punct/g,G).getRegex(),at=A(it,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,Q).getRegex(),ot=A("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,V).replace(/punctSpace/g,X).replace(/punct/g,G).getRegex(),st=A(/\\(punct)/,"gu").replace(/punct/g,G).getRegex(),lt=A(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),ct=A(P).replace("(?:--\x3e|$)","--\x3e").getRegex(),ht=A("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",ct).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ut=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,dt=A(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",ut).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),pt=A(/^!?\[(label)\]\[(ref)\]/).replace("label",ut).replace("ref",R).getRegex(),ft=A(/^!?\[(ref)\](?:\[\])?/).replace("ref",R).getRegex(),gt=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,yt={_backpedal:T,anyPunctuation:st,autolink:lt,blockSkip:J,br:Y,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:T,emStrongLDelim:et,emStrongRDelimAst:nt,emStrongRDelimUnd:ot,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:dt,nolink:ft,punctuation:Z,reflink:pt,reflinkSearch:A("reflink|nolink(?!\\()","g").replace("reflink",pt).replace("nolink",ft).getRegex(),tag:ht,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},_t=t=>Ct[t];function vt(t,e){if(e){if(B.escapeTest.test(t))return t.replace(B.escapeReplace,_t)}else if(B.escapeTestNoEncode.test(t))return t.replace(B.escapeReplaceNoEncode,_t);return t}function St(t){try{t=encodeURI(t).replace(B.percentDecode,"%")}catch{return null}return t}function Tt(t,e){let r=t.replace(B.findPipe,(t,e,r)=>{let i=!1,n=e;for(;--n>=0&&"\\"===r[n];)i=!i;return i?"|":" |"}).split(B.splitPipe),i=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let t=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:At(t,"\n")}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let t=e[0],r=function(t,e,r){let i=t.match(r.other.indentCodeCompensation);if(null===i)return e;let n=i[1];return e.split("\n").map(t=>{let e=t.match(r.other.beginningSpace);if(null===e)return t;let[i]=e;return i.length>=n.length?t.slice(n.length):t}).join("\n")}(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:r}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let e=At(t,"#");(this.options.pedantic||!e||this.rules.other.endingSpaceChar.test(e))&&(t=e.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:At(e[0],"\n")}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let t=At(e[0],"\n").split("\n"),r="",i="",n=[];for(;t.length>0;){let e,a=!1,o=[];for(e=0;e1,n={type:"list",raw:"",ordered:i,start:i?+r.slice(0,-1):"",loose:!1,items:[]};r=i?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=i?r:"[*+-]");let a=this.rules.other.listItemRegex(r),o=!1;for(;t;){let r=!1,i="",s="";if(!(e=a.exec(t))||this.rules.block.hr.test(t))break;i=e[0],t=t.substring(i.length);let l=e[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,t=>" ".repeat(3*t.length)),c=t.split("\n",1)[0],h=!l.trim(),u=0;if(this.options.pedantic?(u=2,s=l.trimStart()):h?u=e[1].length+1:(u=e[2].search(this.rules.other.nonSpaceChar),u=u>4?1:u,s=l.slice(u),u+=e[1].length),h&&this.rules.other.blankLine.test(c)&&(i+=c+"\n",t=t.substring(c.length+1),r=!0),!r){let e=this.rules.other.nextBulletRegex(u),r=this.rules.other.hrRegex(u),n=this.rules.other.fencesBeginRegex(u),a=this.rules.other.headingBeginRegex(u),o=this.rules.other.htmlBeginRegex(u);for(;t;){let d,p=t.split("\n",1)[0];if(c=p,this.options.pedantic?(c=c.replace(this.rules.other.listReplaceNesting," "),d=c):d=c.replace(this.rules.other.tabCharGlobal," "),n.test(c)||a.test(c)||o.test(c)||e.test(c)||r.test(c))break;if(d.search(this.rules.other.nonSpaceChar)>=u||!c.trim())s+="\n"+d.slice(u);else{if(h||l.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||n.test(l)||a.test(l)||r.test(l))break;s+="\n"+c}!h&&!c.trim()&&(h=!0),i+=p+"\n",t=t.substring(p.length+1),l=d.slice(u)}}n.loose||(o?n.loose=!0:this.rules.other.doubleBlankLine.test(i)&&(o=!0));let d,p=null;this.options.gfm&&(p=this.rules.other.listIsTask.exec(s),p&&(d="[ ] "!==p[0],s=s.replace(this.rules.other.listReplaceTask,""))),n.items.push({type:"list_item",raw:i,task:!!p,checked:d,loose:!1,text:s,tokens:[]}),n.raw+=i}let s=n.items.at(-1);if(!s)return;s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd(),n.raw=n.raw.trimEnd();for(let t=0;t"space"===t.type),r=e.length>0&&e.some(t=>this.rules.other.anyLine.test(t.raw));n.loose=r}if(n.loose)for(let t=0;t({text:t,tokens:this.lexer.inline(t),header:!1,align:a.align[e]})));return a}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let t="\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;let e=At(t.slice(0,-1),"\\");if((t.length-e.length)%2==0)return}else{let t=function(t,e){if(-1===t.indexOf(e[1]))return-1;let r=0;for(let i=0;i0?-2:-1}(e[2],"()");if(-2===t)return;if(t>-1){let r=(0===e[0].indexOf("!")?5:4)+e[1].length+t;e[2]=e[2].substring(0,t),e[0]=e[0].substring(0,r).trim(),e[3]=""}}let r=e[2],i="";if(this.options.pedantic){let t=this.rules.other.pedanticHrefTitle.exec(r);t&&(r=t[1],i=t[3])}else i=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(r=this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?r.slice(1):r.slice(1,-1)),Mt(e,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let t=e[(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!t){let t=r[0].charAt(0);return{type:"text",raw:t,text:t}}return Mt(r,t,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let i=this.rules.inline.emStrongLDelim.exec(t);if(!(!i||i[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!i[1]&&!i[2]||!r||this.rules.inline.punctuation.exec(r))){let r,n,a=[...i[0]].length-1,o=a,s=0,l="*"===i[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,e=e.slice(-1*t.length+a);null!=(i=l.exec(e));){if(r=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!r)continue;if(n=[...r].length,i[3]||i[4]){o+=n;continue}if((i[5]||i[6])&&a%3&&!((a+n)%3)){s+=n;continue}if(o-=n,o>0)continue;n=Math.min(n,n+o+s);let e=[...i[0]][0].length,l=t.slice(0,a+i.index+e+n);if(Math.min(a,n)%2){let t=l.slice(1,-1);return{type:"em",raw:l,text:t,tokens:this.lexer.inlineTokens(t)}}let c=l.slice(2,-2);return{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(t),i=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return r&&i&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let t,r;return"@"===e[2]?(t=e[1],r="mailto:"+t):(t=e[1],r=t),{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let t,r;if("@"===e[2])t=e[0],r="mailto:"+t;else{let i;do{i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??""}while(i!==e[0]);t=e[0],r="www."===e[1]?"http://"+e[0]:e[0]}return{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},Lt=class t{tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||v,this.options.tokenizer=this.options.tokenizer||new Bt,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let e={other:B,block:kt.normal,inline:wt.normal};this.options.pedantic?(e.block=kt.pedantic,e.inline=wt.pedantic):this.options.gfm&&(e.block=kt.gfm,this.options.breaks?e.inline=wt.breaks:e.inline=wt.gfm),this.tokenizer.rules=e}static get rules(){return{block:kt,inline:wt}}static lex(e,r){return new t(r).lex(e)}static lexInline(e,r){return new t(r).inlineTokens(e)}lex(t){t=t.replace(B.carriageReturn,"\n"),this.blockTokens(t,this.tokens);for(let e=0;e!!(i=r.call({lexer:this},t,e))&&(t=t.substring(i.raw.length),e.push(i),!0)))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let r=e.at(-1);1===i.raw.length&&void 0!==r?r.raw+="\n":e.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.text,this.inlineQueue.at(-1).src=r.text):e.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.raw,this.inlineQueue.at(-1).src=r.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},e.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),e.push(i);continue}let n=t;if(this.options.extensions?.startBlock){let e,r=1/0,i=t.slice(1);this.options.extensions.startBlock.forEach(t=>{e=t.call({lexer:this},i),"number"==typeof e&&e>=0&&(r=Math.min(r,e))}),r<1/0&&r>=0&&(n=t.substring(0,r+1))}if(this.state.top&&(i=this.tokenizer.paragraph(n))){let a=e.at(-1);r&&"paragraph"===a?.type?(a.raw+=(a.raw.endsWith("\n")?"":"\n")+i.raw,a.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):e.push(i),r=n.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let r=e.at(-1);"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):e.push(i);continue}if(t){let e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return this.state.top=!0,e}inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e}inlineTokens(t,e=[]){let r,i=t,n=null;if(this.tokens.links){let t=Object.keys(this.tokens.links);if(t.length>0)for(;null!=(n=this.tokenizer.rules.inline.reflinkSearch.exec(i));)t.includes(n[0].slice(n[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,n.index)+"["+"a".repeat(n[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(n=this.tokenizer.rules.inline.anyPunctuation.exec(i));)i=i.slice(0,n.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(n=this.tokenizer.rules.inline.blockSkip.exec(i));)r=n[2]?n[2].length:0,i=i.slice(0,n.index+r)+"["+"a".repeat(n[0].length-r-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=this.options.hooks?.emStrongMask?.call({lexer:this},i)??i;let a=!1,o="";for(;t;){let r;if(a||(o=""),a=!1,this.options.extensions?.inline?.some(i=>!!(r=i.call({lexer:this},t,e))&&(t=t.substring(r.raw.length),e.push(r),!0)))continue;if(r=this.tokenizer.escape(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.tag(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.link(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(r.raw.length);let i=e.at(-1);"text"===r.type&&"text"===i?.type?(i.raw+=r.raw,i.text+=r.text):e.push(r);continue}if(r=this.tokenizer.emStrong(t,i,o)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.codespan(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.br(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.del(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.autolink(t)){t=t.substring(r.raw.length),e.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(t))){t=t.substring(r.raw.length),e.push(r);continue}let n=t;if(this.options.extensions?.startInline){let e,r=1/0,i=t.slice(1);this.options.extensions.startInline.forEach(t=>{e=t.call({lexer:this},i),"number"==typeof e&&e>=0&&(r=Math.min(r,e))}),r<1/0&&r>=0&&(n=t.substring(0,r+1))}if(r=this.tokenizer.inlineText(n)){t=t.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(o=r.raw.slice(-1)),a=!0;let i=e.at(-1);"text"===i?.type?(i.raw+=r.raw,i.text+=r.text):e.push(r);continue}if(t){let e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return e}},Ft=class{options;parser;constructor(t){this.options=t||v}space(t){return""}code({text:t,lang:e,escaped:r}){let i=(e||"").match(B.notSpaceStart)?.[0],n=t.replace(B.endingNewline,"")+"\n";return i?'
    '+(r?n:vt(n,!0))+"
    \n":"
    "+(r?n:vt(n,!0))+"
    \n"}blockquote({tokens:t}){return`
    \n${this.parser.parse(t)}
    \n`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)}\n`}hr(t){return"
    \n"}list(t){let e=t.ordered,r=t.start,i="";for(let a=0;a\n"+i+"\n"}listitem(t){let e="";if(t.task){let r=this.checkbox({checked:!!t.checked});t.loose?"paragraph"===t.tokens[0]?.type?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&"text"===t.tokens[0].tokens[0].type&&(t.tokens[0].tokens[0].text=r+" "+vt(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):e+=r+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • \n`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    \n`}table(t){let e="",r="";for(let n=0;n${i}`),"\n\n"+e+"\n"+i+"
    \n"}tablerow({text:t}){return`\n${t}\n`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+`\n`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${vt(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let i=this.parser.parseInline(r),n=St(t);if(null===n)return i;let a='
    ",a}image({href:t,title:e,text:r,tokens:i}){i&&(r=this.parser.parseInline(i,this.parser.textRenderer));let n=St(t);if(null===n)return vt(r);let a=`${r}{let n=t[i].flat(1/0);r=r.concat(this.walkTokens(n,e))}):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(t=>{let r={...t};if(r.async=this.defaults.async||r.async||!1,t.extensions&&(t.extensions.forEach(t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let r=e.renderers[t.name];e.renderers[t.name]=r?function(...e){let i=t.renderer.apply(this,e);return!1===i&&(i=r.apply(this,e)),i}:t.renderer}if("tokenizer"in t){if(!t.level||"block"!==t.level&&"inline"!==t.level)throw new Error("extension level must be 'block' or 'inline'");let r=e[t.level];r?r.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&("block"===t.level?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:"inline"===t.level&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)}),r.extensions=e),t.renderer){let e=this.defaults.renderer||new Ft(this.defaults);for(let r in t.renderer){if(!(r in e))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,n=t.renderer[i],a=e[i];e[i]=(...t)=>{let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r||""}}r.renderer=e}if(t.tokenizer){let e=this.defaults.tokenizer||new Bt(this.defaults);for(let r in t.tokenizer){if(!(r in e))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,n=t.tokenizer[i],a=e[i];e[i]=(...t)=>{let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r}}r.tokenizer=e}if(t.hooks){let e=this.defaults.hooks||new Dt;for(let r in t.hooks){if(!(r in e))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,n=t.hooks[i],a=e[i];Dt.passThroughHooks.has(r)?e[i]=t=>{if(this.defaults.async&&Dt.passThroughHooksRespectAsync.has(r))return(async()=>{let r=await n.call(e,t);return a.call(e,r)})();let i=n.call(e,t);return a.call(e,i)}:e[i]=(...t)=>{if(this.defaults.async)return(async()=>{let r=await n.apply(e,t);return!1===r&&(r=await a.apply(e,t)),r})();let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r}}r.hooks=e}if(t.walkTokens){let e=this.defaults.walkTokens,i=t.walkTokens;r.walkTokens=function(t){let r=[];return r.push(i.call(this,t)),e&&(r=r.concat(e.call(this,t))),r}}this.defaults={...this.defaults,...r}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Lt.lex(t,e??this.defaults)}parser(t,e){return Et.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let i={...r},n={...this.defaults,...i},a=this.onError(!!n.silent,!!n.async);if(!0===this.defaults.async&&!1===i.async)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||null===e)return a(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof e)return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=t),n.async)return(async()=>{let r=n.hooks?await n.hooks.preprocess(e):e,i=await(n.hooks?await n.hooks.provideLexer():t?Lt.lex:Lt.lexInline)(r,n),a=n.hooks?await n.hooks.processAllTokens(i):i;n.walkTokens&&await Promise.all(this.walkTokens(a,n.walkTokens));let o=await(n.hooks?await n.hooks.provideParser():t?Et.parse:Et.parseInline)(a,n);return n.hooks?await n.hooks.postprocess(o):o})().catch(a);try{n.hooks&&(e=n.hooks.preprocess(e));let r=(n.hooks?n.hooks.provideLexer():t?Lt.lex:Lt.lexInline)(e,n);n.hooks&&(r=n.hooks.processAllTokens(r)),n.walkTokens&&this.walkTokens(r,n.walkTokens);let i=(n.hooks?n.hooks.provideParser():t?Et.parse:Et.parseInline)(r,n);return n.hooks&&(i=n.hooks.postprocess(i)),i}catch(o){return a(o)}}}onError(t,e){return r=>{if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",t){let t="

    An error occurred:

    "+vt(r.message+"",!0)+"
    ";return e?Promise.resolve(t):t}if(e)return Promise.reject(r);throw r}}};function Rt(t,e){return Ot.parse(t,e)}Rt.options=Rt.setOptions=function(t){return Ot.setOptions(t),Rt.defaults=Ot.defaults,S(Rt.defaults),Rt},Rt.getDefaults=_,Rt.defaults=v,Rt.use=function(...t){return Ot.use(...t),Rt.defaults=Ot.defaults,S(Rt.defaults),Rt},Rt.walkTokens=function(t,e){return Ot.walkTokens(t,e)},Rt.parseInline=Ot.parseInline,Rt.Parser=Et,Rt.parser=Et.parse,Rt.Renderer=Ft,Rt.TextRenderer=$t,Rt.Lexer=Lt,Rt.lexer=Lt.lex,Rt.Tokenizer=Bt,Rt.Hooks=Dt,Rt.parse=Rt;Rt.options,Rt.setOptions,Rt.use,Rt.walkTokens,Rt.parseInline,Et.parse,Lt.lex;var Kt=r(513),It={body:'?',height:80,width:80},Nt=new Map,Pt=new Map,zt=(0,a.K2)(t=>{for(const e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(a.Rm.debug("Registering icon pack:",e.name),"loader"in e)Pt.set(e.name,e.loader);else{if(!("icons"in e))throw a.Rm.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.');Nt.set(e.name,e.icons)}}},"registerIconPacks"),qt=(0,a.K2)(async(t,e)=>{const r=((t,e,r,i="")=>{const n=t.split(":");if("@"===t.slice(0,1)){if(n.length<2||n.length>3)return null;i=n.shift().slice(1)}if(n.length>3||!n.length)return null;if(n.length>1){const t=n.pop(),r=n.pop(),a={provider:n.length>0?n[0]:i,prefix:r,name:t};return e&&!o(a)?null:a}const a=n[0],s=a.split("-");if(s.length>1){const t={provider:i,prefix:s.shift(),name:s.join("-")};return e&&!o(t)?null:t}if(r&&""===i){const t={provider:i,prefix:"",name:a};return e&&!o(t,r)?null:t}return null})(t,!0,void 0!==e);if(!r)throw new Error(`Invalid icon name: ${t}`);const i=r.prefix||e;if(!i)throw new Error(`Icon name must contain a prefix: ${t}`);let n=Nt.get(i);if(!n){const t=Pt.get(i);if(!t)throw new Error(`Icon set not found: ${r.prefix}`);try{n={...await t(),prefix:i},Nt.set(i,n)}catch(l){throw a.Rm.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}const s=p(n,r.name);if(!s)throw new Error(`Icon not found: ${t}`);return s},"getRegisteredIconData"),jt=(0,a.K2)(async t=>{try{return await qt(t),!0}catch{return!1}},"isIconAvailable"),Wt=(0,a.K2)(async(t,e,r)=>{let i;try{i=await qt(t,e?.fallbackPrefix)}catch(l){a.Rm.error(l),i=It}const o=function(t,e){const r={...c,...t},i={...g,...e},n={left:r.left,top:r.top,width:r.width,height:r.height};let a=r.body;[r,i].forEach(t=>{const e=[],r=t.hFlip,i=t.vFlip;let o,s=t.rotate;switch(r?i?s+=2:(e.push("translate("+(n.width+n.left).toString()+" "+(0-n.top).toString()+")"),e.push("scale(-1 1)"),n.top=n.left=0):i&&(e.push("translate("+(0-n.left).toString()+" "+(n.height+n.top).toString()+")"),e.push("scale(1 -1)"),n.top=n.left=0),s<0&&(s-=4*Math.floor(s/4)),s%=4,s){case 1:o=n.height/2+n.top,e.unshift("rotate(90 "+o.toString()+" "+o.toString()+")");break;case 2:e.unshift("rotate(180 "+(n.width/2+n.left).toString()+" "+(n.height/2+n.top).toString()+")");break;case 3:o=n.width/2+n.left,e.unshift("rotate(-90 "+o.toString()+" "+o.toString()+")")}s%2==1&&(n.left!==n.top&&(o=n.left,n.left=n.top,n.top=o),n.width!==n.height&&(o=n.width,n.width=n.height,n.height=o)),e.length&&(a=function(t,e,r){const i=function(t,e="defs"){let r="";const i=t.indexOf("<"+e);for(;i>=0;){const n=t.indexOf(">",i),a=t.indexOf("",a);if(-1===o)break;r+=t.slice(n+1,a).trim(),t=t.slice(0,i).trim()+t.slice(o+1)}return{defs:r,content:t}}(t);return n=i.defs,a=e+i.content+r,n?""+n+""+a:a;var n,a}(a,'',""))});const o=i.width,s=i.height,l=n.width,h=n.height;let u,d;null===o?(d=null===s?"1em":"auto"===s?h:s,u=x(d,l/h)):(u="auto"===o?l:o,d=null===s?x(u,h/l):"auto"===s?h:s);const p={},f=(t,e)=>{(t=>"unset"===t||"undefined"===t||"none"===t)(e)||(p[t]=e.toString())};f("width",u),f("height",d);const y=[n.left,n.top,l,h];return p.viewBox=y.join(" "),{attributes:p,viewBox:y,body:a}}(i,e),s=function(t,e){let r=-1===t.indexOf("xlink:")?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const i in e)r+=" "+i+'="'+e[i]+'"';return'"+t+""}(w(o.body),{...o.attributes,...r});return(0,n.jZ)(s,(0,n.zj)())},"getIconSVG");function Ht(t,{markdownAutoWrap:e}){const r=t.replace(//g,"\n").replace(/\n{2,}/g,"\n"),i=(0,Kt.T)(r);return!1===e?i.replace(/ /g," "):i}function Ut(t,e={}){const r=Ht(t,e),i=Rt.lexer(r),n=[[]];let o=0;function s(t,e="normal"){if("text"===t.type){t.text.split("\n").forEach((t,r)=>{0!==r&&(o++,n.push([])),t.split(" ").forEach(t=>{(t=t.replace(/'/g,"'"))&&n[o].push({content:t,type:e})})})}else"strong"===t.type||"em"===t.type?t.tokens.forEach(e=>{s(e,t.type)}):"html"===t.type&&n[o].push({content:t.text,type:"normal"})}return(0,a.K2)(s,"processNode"),i.forEach(t=>{"paragraph"===t.type?t.tokens?.forEach(t=>{s(t)}):"html"===t.type?n[o].push({content:t.text,type:"normal"}):n[o].push({content:t.raw,type:"normal"})}),n}function Yt(t,{markdownAutoWrap:e}={}){const r=Rt.lexer(t);function i(t){return"text"===t.type?!1===e?t.text.replace(/\n */g,"
    ").replace(/ /g," "):t.text.replace(/\n */g,"
    "):"strong"===t.type?`${t.tokens?.map(i).join("")}`:"em"===t.type?`${t.tokens?.map(i).join("")}`:"paragraph"===t.type?`

    ${t.tokens?.map(i).join("")}

    `:"space"===t.type?"":"html"===t.type?`${t.text}`:"escape"===t.type?t.text:(a.Rm.warn(`Unsupported markdown: ${t.type}`),t.raw)}return(0,a.K2)(i,"output"),r.map(i).join("")}function Gt(t){return Intl.Segmenter?[...(new Intl.Segmenter).segment(t)].map(t=>t.segment):[...t]}function Xt(t,e){return Vt(t,[],Gt(e.content),e.type)}function Vt(t,e,r,i){if(0===r.length)return[{content:e.join(""),type:i},{content:"",type:i}];const[n,...a]=r,o=[...e,n];return t([{content:o.join(""),type:i}])?Vt(t,o,a,i):(0===e.length&&n&&(e.push(n),r.shift()),[{content:e.join(""),type:i},{content:r.join(""),type:i}])}function Zt(t,e){if(t.some(({content:t})=>t.includes("\n")))throw new Error("splitLineToFitWidth does not support newlines in the line");return Qt(t,e)}function Qt(t,e,r=[],i=[]){if(0===t.length)return i.length>0&&r.push(i),r.length>0?r:[];let n="";" "===t[0].content&&(n=" ",t.shift());const a=t.shift()??{content:" ",type:"normal"},o=[...i];if(""!==n&&o.push({content:n,type:"normal"}),o.push(a),e(o))return Qt(t,e,r,o);if(i.length>0)r.push(i),t.unshift(a);else if(a.content){const[i,n]=Xt(e,a);r.push([i]),n.content&&t.unshift(n)}return Qt(t,e,r)}function Jt(t,e){e&&t.attr("style",e)}async function te(t,e,r,i,a=!1,o=(0,n.zj)()){const s=t.append("foreignObject");s.attr("width",10*r+"px"),s.attr("height",10*r+"px");const l=s.append("xhtml:div"),c=(0,n.Wi)(e.label)?await(0,n.dj)(e.label.replace(n.Y2.lineBreakRegex,"\n"),o):(0,n.jZ)(e.label,o),h=e.isNode?"nodeLabel":"edgeLabel",u=l.append("span");u.html(c),Jt(u,e.labelStyle),u.attr("class",`${h} ${i}`),Jt(l,e.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),l.style("max-width",r+"px"),l.style("text-align","center"),l.attr("xmlns","http://www.w3.org/1999/xhtml"),a&&l.attr("class","labelBkg");let d=l.node().getBoundingClientRect();return d.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),d=l.node().getBoundingClientRect()),s.node()}function ee(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function re(t,e,r){const i=t.append("text"),n=ee(i,1,e);ae(n,r);const a=n.node().getComputedTextLength();return i.remove(),a}function ie(t,e,r){const i=t.append("text"),n=ee(i,1,e);ae(n,[{content:r,type:"normal"}]);const a=n.node()?.getBoundingClientRect();return a&&i.remove(),a}function ne(t,e,r,i=!1){const n=e.append("g"),o=n.insert("rect").attr("class","background").attr("style","stroke: none"),s=n.append("text").attr("y","-10.1");let l=0;for(const c of r){const e=(0,a.K2)(e=>re(n,1.1,e)<=t,"checkWidth"),r=e(c)?[c]:Zt(c,e);for(const t of r){ae(ee(s,l,1.1),t),l++}}if(i){const t=s.node().getBBox(),e=2;return o.attr("x",t.x-e).attr("y",t.y-e).attr("width",t.width+2*e).attr("height",t.height+2*e),n.node()}return s.node()}function ae(t,e){t.text(""),e.forEach((e,r)=>{const i=t.append("tspan").attr("font-style","em"===e.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===e.type?"bold":"normal");0===r?i.text(e.content):i.text(" "+e.content)})}async function oe(t,e={}){const r=[];t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(t,i,a)=>(r.push((async()=>{const r=`${i}:${a}`;return await jt(r)?await Wt(r,void 0,{class:"label-icon"}):``})()),t));const i=await Promise.all(r);return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>i.shift()??"")}(0,a.K2)(Ht,"preprocessMarkdown"),(0,a.K2)(Ut,"markdownToLines"),(0,a.K2)(Yt,"markdownToHTML"),(0,a.K2)(Gt,"splitTextToChars"),(0,a.K2)(Xt,"splitWordToFitWidth"),(0,a.K2)(Vt,"splitWordToFitWidthRecursion"),(0,a.K2)(Zt,"splitLineToFitWidth"),(0,a.K2)(Qt,"splitLineToFitWidthRecursion"),(0,a.K2)(Jt,"applyStyle"),(0,a.K2)(te,"addHtmlSpan"),(0,a.K2)(ee,"createTspan"),(0,a.K2)(re,"computeWidthOfText"),(0,a.K2)(ie,"computeDimensionOfText"),(0,a.K2)(ne,"createFormattedText"),(0,a.K2)(ae,"updateTextContentAndStyles"),(0,a.K2)(oe,"replaceIconSubstring");var se=(0,a.K2)(async(t,e="",{style:r="",isTitle:o=!1,classes:s="",useHtmlLabels:l=!0,isNode:c=!0,width:h=200,addSvgBackground:u=!1}={},d)=>{if(a.Rm.debug("XYZ createText",e,r,o,s,l,c,"addSvgBackground: ",u),l){const a=Yt(e,d),o=await oe((0,i.Sm)(a),d),l=e.replace(/\\\\/g,"\\"),p={isNode:c,label:(0,n.Wi)(e)?l:o,labelStyle:r.replace("fill:","color:")};return await te(t,p,h,s,u,d)}{const i=ne(h,t,Ut(e.replace(//g,"
    ").replace("
    ","
    "),d),!!e&&u);if(c){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,C.Ltv)(i).attr("style",t)}else{const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");(0,C.Ltv)(i).select("rect").attr("style",t.replace(/background:/g,"fill:"));const e=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,C.Ltv)(i).select("text").attr("style",e)}return i}},"createText")},127:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});const i=function(){this.__data__=[],this.size=0};var n=r(6984);const a=function(t,e){for(var r=t.length;r--;)if((0,n.A)(t[r][0],e))return r;return-1};var o=Array.prototype.splice;const s=function(t){var e=this.__data__,r=a(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)};const l=function(t){var e=this.__data__,r=a(e,t);return r<0?void 0:e[r][1]};const c=function(t){return a(this.__data__,t)>-1};const h=function(t,e){var r=this.__data__,i=a(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this};function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{"use strict";r.d(e,{A:()=>l});var i=r(1917),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=n&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===n?i.A.Buffer:void 0,s=o?o.allocUnsafe:void 0;const l=function(t,e){if(e)return t.slice();var r=t.length,i=s?s(r):new t.constructor(r);return t.copy(i),i}},241:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=r(1917).A.Symbol},367:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t,e){return function(r){return t(e(r))}}},451:(t,e,r)=>{"use strict";function i(t,e){let r;if(void 0===e)for(const i of t)null!=i&&(r=i)&&(r=i);else{let i=-1;for(let n of t)null!=(n=e(n,++i,t))&&(r=n)&&(r=n)}return r}function n(t,e){let r;if(void 0===e)for(const i of t)null!=i&&(r>i||void 0===r&&i>=i)&&(r=i);else{let i=-1;for(let n of t)null!=(n=e(n,++i,t))&&(r>n||void 0===r&&n>=n)&&(r=n)}return r}function a(t){return t}r.d(e,{JLW:()=>us,l78:()=>x,tlR:()=>m,qrM:()=>vs,Yu4:()=>Ts,IA3:()=>Ms,Wi0:()=>Ls,PGM:()=>Fs,OEq:()=>Es,y8u:()=>Rs,olC:()=>Is,IrU:()=>Ps,oDi:()=>js,Q7f:()=>Hs,cVp:()=>Ys,lUB:()=>fs,Lx9:()=>Xs,nVG:()=>il,uxU:()=>nl,Xf2:()=>sl,GZz:()=>cl,UPb:()=>ul,dyv:()=>hl,GPZ:()=>Yr,Sk5:()=>Jr,bEH:()=>$i,n8j:()=>ms,T9B:()=>i,jkA:()=>n,rLf:()=>ks,WH:()=>zi,m4Y:()=>bn,UMr:()=>Pi,w7C:()=>Ro,zt:()=>Ko,Ltv:()=>Io,UAC:()=>Rn,DCK:()=>fa,TUC:()=>Hn,Agd:()=>Dn,t6C:()=>Ln,wXd:()=>$n,ABi:()=>zn,Ui6:()=>ea,rGn:()=>Un,ucG:()=>Fn,YPH:()=>Pn,Mol:()=>Wn,PGu:()=>qn,GuW:()=>jn,hkb:()=>di});var o=1,s=2,l=3,c=4,h=1e-6;function u(t){return"translate("+t+",0)"}function d(t){return"translate(0,"+t+")"}function p(t){return e=>+t(e)}function f(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function g(){return!this.__axis}function y(t,e){var r=[],i=null,n=null,y=6,m=6,x=3,b="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,k=t===o||t===c?-1:1,w=t===c||t===s?"x":"y",C=t===o||t===l?u:d;function _(u){var d=null==i?e.ticks?e.ticks.apply(e,r):e.domain():i,_=null==n?e.tickFormat?e.tickFormat.apply(e,r):a:n,v=Math.max(y,0)+x,S=e.range(),T=+S[0]+b,A=+S[S.length-1]+b,M=(e.bandwidth?f:p)(e.copy(),b),B=u.selection?u.selection():u,L=B.selectAll(".domain").data([null]),F=B.selectAll(".tick").data(d,e).order(),$=F.exit(),E=F.enter().append("g").attr("class","tick"),D=F.select("line"),O=F.select("text");L=L.merge(L.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),F=F.merge(E),D=D.merge(E.append("line").attr("stroke","currentColor").attr(w+"2",k*y)),O=O.merge(E.append("text").attr("fill","currentColor").attr(w,k*v).attr("dy",t===o?"0em":t===l?"0.71em":"0.32em")),u!==B&&(L=L.transition(u),F=F.transition(u),D=D.transition(u),O=O.transition(u),$=$.transition(u).attr("opacity",h).attr("transform",function(t){return isFinite(t=M(t))?C(t+b):this.getAttribute("transform")}),E.attr("opacity",h).attr("transform",function(t){var e=this.parentNode.__axis;return C((e&&isFinite(e=e(t))?e:M(t))+b)})),$.remove(),L.attr("d",t===c||t===s?m?"M"+k*m+","+T+"H"+b+"V"+A+"H"+k*m:"M"+b+","+T+"V"+A:m?"M"+T+","+k*m+"V"+b+"H"+A+"V"+k*m:"M"+T+","+b+"H"+A),F.attr("opacity",1).attr("transform",function(t){return C(M(t)+b)}),D.attr(w+"2",k*y),O.attr(w,k*v).text(_),B.filter(g).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===s?"start":t===c?"end":"middle"),B.each(function(){this.__axis=M})}return _.scale=function(t){return arguments.length?(e=t,_):e},_.ticks=function(){return r=Array.from(arguments),_},_.tickArguments=function(t){return arguments.length?(r=null==t?[]:Array.from(t),_):r.slice()},_.tickValues=function(t){return arguments.length?(i=null==t?null:Array.from(t),_):i&&i.slice()},_.tickFormat=function(t){return arguments.length?(n=t,_):n},_.tickSize=function(t){return arguments.length?(y=m=+t,_):y},_.tickSizeInner=function(t){return arguments.length?(y=+t,_):y},_.tickSizeOuter=function(t){return arguments.length?(m=+t,_):m},_.tickPadding=function(t){return arguments.length?(x=+t,_):x},_.offset=function(t){return arguments.length?(b=+t,_):b},_}function m(t){return y(o,t)}function x(t){return y(l,t)}function b(){}function k(t){return null==t?b:function(){return this.querySelector(t)}}function w(){return[]}function C(t){return null==t?w:function(){return this.querySelectorAll(t)}}function _(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}function v(t){return function(){return this.matches(t)}}function S(t){return function(e){return e.matches(t)}}var T=Array.prototype.find;function A(){return this.firstElementChild}var M=Array.prototype.filter;function B(){return Array.from(this.children)}function L(t){return new Array(t.length)}function F(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function $(t,e,r,i,n,a){for(var o,s=0,l=e.length,c=a.length;se?1:t>=e?0:NaN}F.prototype={constructor:F,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var K="http://www.w3.org/1999/xhtml";const I={svg:"http://www.w3.org/2000/svg",xhtml:K,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function N(t){var e=t+="",r=e.indexOf(":");return r>=0&&"xmlns"!==(e=t.slice(0,r))&&(t=t.slice(r+1)),I.hasOwnProperty(e)?{space:I[e],local:t}:t}function P(t){return function(){this.removeAttribute(t)}}function z(t){return function(){this.removeAttributeNS(t.space,t.local)}}function q(t,e){return function(){this.setAttribute(t,e)}}function j(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function W(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttribute(t):this.setAttribute(t,r)}}function H(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function U(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Y(t){return function(){this.style.removeProperty(t)}}function G(t,e,r){return function(){this.style.setProperty(t,e,r)}}function X(t,e,r){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,r)}}function V(t,e){return t.style.getPropertyValue(e)||U(t).getComputedStyle(t,null).getPropertyValue(e)}function Z(t){return function(){delete this[t]}}function Q(t,e){return function(){this[t]=e}}function J(t,e){return function(){var r=e.apply(this,arguments);null==r?delete this[t]:this[t]=r}}function tt(t){return t.trim().split(/^|\s+/)}function et(t){return t.classList||new rt(t)}function rt(t){this._node=t,this._names=tt(t.getAttribute("class")||"")}function it(t,e){for(var r=et(t),i=-1,n=e.length;++i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Mt=[null];function Bt(t,e){this._groups=t,this._parents=e}function Lt(){return new Bt([[document.documentElement]],Mt)}Bt.prototype=Lt.prototype={constructor:Bt,select:function(t){"function"!=typeof t&&(t=k(t));for(var e=this._groups,r=e.length,i=new Array(r),n=0;n=w&&(w=k+1);!(b=m[w])&&++w=0;)(i=n[a])&&(o&&4^i.compareDocumentPosition(o)&&o.parentNode.insertBefore(i,o),o=i);return this},sort:function(t){function e(e,r){return e&&r?t(e.__data__,r.__data__):!e-!r}t||(t=R);for(var r=this._groups,i=r.length,n=new Array(i),a=0;a1?this.each((null==e?Y:"function"==typeof e?X:G)(t,e,null==r?"":r)):V(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Z:"function"==typeof e?J:Q)(t,e)):this.node()[t]},classed:function(t,e){var r=tt(t+"");if(arguments.length<2){for(var i=et(this.node()),n=-1,a=r.length;++n=0&&(e=t.slice(r+1),t=t.slice(0,r)),{type:t,name:e}})}(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?vt:_t,i=0;i{}};function Et(){for(var t,e=0,r=arguments.length,i={};e=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!i.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),o=-1,s=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var r,i,n=new Array(r),a=0;a=0&&e._call.call(void 0,t),e=e._next;--Pt}()}finally{Pt=0,function(){var t,e,r=It,i=1/0;for(;r;)r._call?(i>r._time&&(i=r._time),t=r,r=r._next):(e=r._next,r._next=null,r=t?t._next=e:It=e);Nt=t,te(i)}(),Wt=0}}function Jt(){var t=Ut.now(),e=t-jt;e>1e3&&(Ht-=e,jt=t)}function te(t){Pt||(zt&&(zt=clearTimeout(zt)),t-Wt>24?(t<1/0&&(zt=setTimeout(Qt,t-Ut.now()-Ht)),qt&&(qt=clearInterval(qt))):(qt||(jt=Ut.now(),qt=setInterval(Jt,1e3)),Pt=1,Yt(Qt)))}function ee(t,e,r){var i=new Vt;return e=null==e?0:+e,i.restart(r=>{i.stop(),t(r+e)},e,r),i}Vt.prototype=Zt.prototype={constructor:Vt,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?Gt():+r)+(null==e?0:+e),this._next||Nt===this||(Nt?Nt._next=this:It=this,Nt=this),this._call=t,this._time=r,te()},stop:function(){this._call&&(this._call=null,this._time=1/0,te())}};var re=Kt("start","end","cancel","interrupt"),ie=[];function ne(t,e,r,i,n,a){var o=t.__transition;if(o){if(r in o)return}else t.__transition={};!function(t,e,r){var i,n=t.__transition;function a(t){r.state=1,r.timer.restart(o,r.delay,r.time),r.delay<=t&&o(t-r.delay)}function o(a){var c,h,u,d;if(1!==r.state)return l();for(c in n)if((d=n[c]).name===r.name){if(3===d.state)return ee(o);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete n[c]):+c0)throw new Error("too late; already scheduled");return r}function oe(t,e){var r=se(t,e);if(r.state>3)throw new Error("too late; already running");return r}function se(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function le(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var ce,he=180/Math.PI,ue={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function de(t,e,r,i,n,a){var o,s,l;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(l=t*r+e*i)&&(r-=t*l,i-=e*l),(s=Math.sqrt(r*r+i*i))&&(r/=s,i/=s,l/=s),t*i180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(n(r)+"rotate(",null,i)-2,x:le(t,e)})):e&&r.push(n(r)+"rotate("+e+i)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(n(r)+"skewX(",null,i)-2,x:le(t,e)}):e&&r.push(n(r)+"skewX("+e+i)}(a.skewX,o.skewX,s,l),function(t,e,r,i,a,o){if(t!==r||e!==i){var s=a.push(n(a)+"scale(",null,",",null,")");o.push({i:s-4,x:le(t,r)},{i:s-2,x:le(e,i)})}else 1===r&&1===i||a.push(n(a)+"scale("+r+","+i+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,i=l.length;++r>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?Ne(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?Ne(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Me.exec(t))?new qe(e[1],e[2],e[3],1):(e=Be.exec(t))?new qe(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Le.exec(t))?Ne(e[1],e[2],e[3],e[4]):(e=Fe.exec(t))?Ne(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=$e.exec(t))?Ge(e[1],e[2]/100,e[3]/100,1):(e=Ee.exec(t))?Ge(e[1],e[2]/100,e[3]/100,e[4]):De.hasOwnProperty(t)?Ie(De[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function Ie(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function Ne(t,e,r,i){return i<=0&&(t=e=r=NaN),new qe(t,e,r,i)}function Pe(t){return t instanceof we||(t=Ke(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function ze(t,e,r,i){return 1===arguments.length?Pe(t):new qe(t,e,r,null==i?1:i)}function qe(t,e,r,i){this.r=+t,this.g=+e,this.b=+r,this.opacity=+i}function je(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function We(){const t=He(this.opacity);return`${1===t?"rgb(":"rgba("}${Ue(this.r)}, ${Ue(this.g)}, ${Ue(this.b)}${1===t?")":`, ${t})`}`}function He(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ue(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Ue(t))<16?"0":"")+t.toString(16)}function Ge(t,e,r,i){return i<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new Ve(t,e,r,i)}function Xe(t){if(t instanceof Ve)return new Ve(t.h,t.s,t.l,t.opacity);if(t instanceof we||(t=Ke(t)),!t)return new Ve;if(t instanceof Ve)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,n=Math.min(e,r,i),a=Math.max(e,r,i),o=NaN,s=a-n,l=(a+n)/2;return s?(o=e===a?(r-i)/s+6*(r0&&l<1?0:o,new Ve(o,s,l,t.opacity)}function Ve(t,e,r,i){this.h=+t,this.s=+e,this.l=+r,this.opacity=+i}function Ze(t){return(t=(t||0)%360)<0?t+360:t}function Qe(t){return Math.max(0,Math.min(1,t||0))}function Je(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}function tr(t,e,r,i,n){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*i+o*n)/6}be(we,Ke,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Oe,formatHex:Oe,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Xe(this).formatHsl()},formatRgb:Re,toString:Re}),be(qe,ze,ke(we,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Ce:Math.pow(Ce,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new qe(Ue(this.r),Ue(this.g),Ue(this.b),He(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:je,formatHex:je,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:We,toString:We})),be(Ve,function(t,e,r,i){return 1===arguments.length?Xe(t):new Ve(t,e,r,null==i?1:i)},ke(we,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Ve(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Ce:Math.pow(Ce,t),new Ve(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*e,n=2*r-i;return new qe(Je(t>=240?t-240:t+120,n,i),Je(t,n,i),Je(t<120?t+240:t-120,n,i),this.opacity)},clamp(){return new Ve(Ze(this.h),Qe(this.s),Qe(this.l),He(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=He(this.opacity);return`${1===t?"hsl(":"hsla("}${Ze(this.h)}, ${100*Qe(this.s)}%, ${100*Qe(this.l)}%${1===t?")":`, ${t})`}`}}));const er=t=>()=>t;function rr(t,e){return function(r){return t+r*e}}function ir(t){return 1===(t=+t)?nr:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(i){return Math.pow(t+i*e,r)}}(e,r,t):er(isNaN(e)?r:e)}}function nr(t,e){var r=e-t;return r?rr(t,r):er(isNaN(t)?e:t)}const ar=function t(e){var r=ir(e);function i(t,e){var i=r((t=ze(t)).r,(e=ze(e)).r),n=r(t.g,e.g),a=r(t.b,e.b),o=nr(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=n(e),t.b=a(e),t.opacity=o(e),t+""}}return i.gamma=t,i}(1);function or(t){return function(e){var r,i,n=e.length,a=new Array(n),o=new Array(n),s=new Array(n);for(r=0;r=1?(r=1,e-1):Math.floor(r*e),n=t[i],a=t[i+1],o=i>0?t[i-1]:2*n-a,s=ia&&(n=e.slice(a,n),s[o]?s[o]+=n:s[++o]=n),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:le(r,i)})),a=lr.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?ae:oe;return function(){var o=a(this,t),s=o.on;s!==i&&(n=(i=s).copy()).on(e,r),o.on=n}}(r,t,e))},attr:function(t,e){var r=N(t),i="transform"===r?ge:hr;return this.attrTween(t,"function"==typeof e?(r.local?yr:gr)(r,i,xe(this,"attr."+t,e)):null==e?(r.local?dr:ur)(r):(r.local?fr:pr)(r,i,e))},attrTween:function(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;var i=N(t);return this.tween(r,(i.local?mr:xr)(i,e))},style:function(t,e,r){var i="transform"==(t+="")?fe:hr;return null==e?this.styleTween(t,function(t,e){var r,i,n;return function(){var a=V(this,t),o=(this.style.removeProperty(t),V(this,t));return a===o?null:a===r&&o===i?n:n=e(r=a,i=o)}}(t,i)).on("end.style."+t,vr(t)):"function"==typeof e?this.styleTween(t,function(t,e,r){var i,n,a;return function(){var o=V(this,t),s=r(this),l=s+"";return null==s&&(this.style.removeProperty(t),l=s=V(this,t)),o===l?null:o===i&&l===n?a:(n=l,a=e(i=o,s))}}(t,i,xe(this,"style."+t,e))).each(function(t,e){var r,i,n,a,o="style."+e,s="end."+o;return function(){var l=oe(this,t),c=l.on,h=null==l.value[o]?a||(a=vr(e)):void 0;c===r&&n===h||(i=(r=c).copy()).on(s,n=h),l.on=i}}(this._id,t)):this.styleTween(t,function(t,e,r){var i,n,a=r+"";return function(){var o=V(this,t);return o===a?null:o===i?n:n=e(i=o,r)}}(t,i,e),r).on("end.style."+t,null)},styleTween:function(t,e,r){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,function(t,e,r){var i,n;function a(){var a=e.apply(this,arguments);return a!==n&&(i=(n=a)&&function(t,e,r){return function(i){this.style.setProperty(t,e.call(this,i),r)}}(t,a,r)),i}return a._value=e,a}(t,e,null==r?"":r))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(xe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,r;function i(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t){return function(e){this.textContent=t.call(this,e)}}(i)),e}return i._value=t,i}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var r=this._id;if(t+="",arguments.length<2){for(var i,n=se(this.node(),r).tween,a=0,o=n.length;a2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?"interrupt":"cancel",t,t.__data__,r.index,r.group),delete a[n]):o=!1;o&&delete t.__transition}}(this,t)})},Ft.prototype.transition=function(t){var e,r;t instanceof Tr?(e=t._id,t=t._name):(e=Ar(),(r=Br).time=Gt(),t=null==t?null:t+"");for(var i=this._groups,n=i.length,a=0;a1?i[0]+i.slice(2):i,+t.slice(r+1)]}function Ir(t){return(t=Kr(Math.abs(t)))?t[1]:NaN}var Nr,Pr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function zr(t){if(!(e=Pr.exec(t)))throw new Error("invalid format: "+t);var e;return new qr({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function qr(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function jr(t,e){var r=Kr(t,e);if(!r)return t+"";var i=r[0],n=r[1];return n<0?"0."+new Array(-n).join("0")+i:i.length>n+1?i.slice(0,n+1)+"."+i.slice(n+1):i+new Array(n-i.length+2).join("0")}zr.prototype=qr.prototype,qr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Wr={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>jr(100*t,e),r:jr,s:function(t,e){var r=Kr(t,e);if(!r)return t+"";var i=r[0],n=r[1],a=n-(Nr=3*Math.max(-8,Math.min(8,Math.floor(n/3))))+1,o=i.length;return a===o?i:a>o?i+new Array(a-o+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Kr(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Hr(t){return t}var Ur,Yr,Gr,Xr=Array.prototype.map,Vr=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function Zr(t){var e,r,i=void 0===t.grouping||void 0===t.thousands?Hr:(e=Xr.call(t.grouping,Number),r=t.thousands+"",function(t,i){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>i&&(s=Math.max(1,i-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>i));)s=e[o=(o+1)%e.length];return a.reverse().join(r)}),n=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Hr:function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(Xr.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"\u2212":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=zr(t)).fill,r=t.align,u=t.sign,d=t.symbol,p=t.zero,f=t.width,g=t.comma,y=t.precision,m=t.trim,x=t.type;"n"===x?(g=!0,x="g"):Wr[x]||(void 0===y&&(y=12),m=!0,x="g"),(p||"0"===e&&"="===r)&&(p=!0,e="0",r="=");var b="$"===d?n:"#"===d&&/[boxX]/.test(x)?"0"+x.toLowerCase():"",k="$"===d?a:/[%p]/.test(x)?l:"",w=Wr[x],C=/[defgprs%]/.test(x);function _(t){var n,a,l,d=b,_=k;if("c"===x)_=w(t)+_,t="";else{var v=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:w(Math.abs(t),y),m&&(t=function(t){t:for(var e,r=t.length,i=1,n=-1;i0&&(n=0)}return n>0?t.slice(0,n)+t.slice(e+1):t}(t)),v&&0===+t&&"+"!==u&&(v=!1),d=(v?"("===u?u:c:"-"===u||"("===u?"":u)+d,_=("s"===x?Vr[8+Nr/3]:"")+_+(v&&"("===u?")":""),C)for(n=-1,a=t.length;++n(l=t.charCodeAt(n))||l>57){_=(46===l?o+t.slice(n+1):t.slice(n))+_,t=t.slice(0,n);break}}g&&!p&&(t=i(t,1/0));var S=d.length+t.length+_.length,T=S>1)+d+t+_+T.slice(S);break;default:t=T+d+t+_}return s(t)}return y=void 0===y?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),_.toString=function(){return t+""},_}return{format:u,formatPrefix:function(t,e){var r=u(((t=zr(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Ir(e)/3))),n=Math.pow(10,-i),a=Vr[8+i/3];return function(t){return r(n*t)+a}}}}function Qr(t){var e=0,r=t.children,i=r&&r.length;if(i)for(;--i>=0;)e+=r[i].value;else e=1;t.value=e}function Jr(t,e){t instanceof Map?(t=[void 0,t],void 0===e&&(e=ei)):void 0===e&&(e=ti);for(var r,i,n,a,o,s=new ni(t),l=[s];r=l.pop();)if((n=e(r.data))&&(o=(n=Array.from(n)).length))for(r.children=n,a=o-1;a>=0;--a)l.push(i=n[a]=new ni(n[a])),i.parent=r,i.depth=r.depth+1;return s.eachBefore(ii)}function ti(t){return t.children}function ei(t){return Array.isArray(t)?t[1]:null}function ri(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function ii(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function ni(t){this.data=t,this.depth=this.height=0,this.parent=null}function ai(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function oi(t,e,r,i,n){for(var a,o=t.children,s=-1,l=o.length,c=t.value&&(i-e)/t.value;++s=0;--i)a.push(r[i]);return this},find:function(t,e){let r=-1;for(const i of this)if(t.call(e,i,++r,this))return i},sum:function(t){return this.eachAfter(function(e){for(var r=+t(e.data)||0,i=e.children,n=i&&i.length;--n>=0;)r+=i[n].value;e.value=r})},sort:function(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),i=e.ancestors(),n=null;t=r.pop(),e=i.pop();for(;t===e;)n=t,t=r.pop(),e=i.pop();return n}(e,t),i=[e];e!==r;)e=e.parent,i.push(e);for(var n=i.length;t!==r;)i.splice(n,0,t),t=t.parent;return i},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t},links:function(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e},copy:function(){return Jr(this).eachBefore(ri)},[Symbol.iterator]:function*(){var t,e,r,i,n=this,a=[n];do{for(t=a.reverse(),a=[];n=t.pop();)if(yield n,e=n.children)for(r=0,i=e.length;rd&&(d=s),y=h*h*g,(p=Math.max(d/y,y/u))>f){h-=s;break}f=p}m.push(o={value:h,dice:l1?e:1)},r}((1+Math.sqrt(5))/2);function ci(t){if("function"!=typeof t)throw new Error;return t}function hi(){return 0}function ui(t){return function(){return t}}function di(){var t=li,e=!1,r=1,i=1,n=[0],a=hi,o=hi,s=hi,l=hi,c=hi;function h(t){return t.x0=t.y0=0,t.x1=r,t.y1=i,t.eachBefore(u),n=[0],e&&t.eachBefore(ai),t}function u(e){var r=n[e.depth],i=e.x0+r,h=e.y0+r,u=e.x1-r,d=e.y1-r;uki?Math.pow(t,1/3):t/bi+mi}function vi(t){return t>xi?t*t*t:bi*(t-mi)}function Si(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ti(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ai(t){if(t instanceof Bi)return new Bi(t.h,t.c,t.l,t.opacity);if(t instanceof Ci||(t=wi(t)),0===t.a&&0===t.b)return new Bi(NaN,0180||r<-180?r-360*Math.round(r/360):r):er(isNaN(t)?e:t)});Fi(nr);function Ei(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}class Di extends Map{constructor(t,e=Ii){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(Oi(this,t))}has(t){return super.has(Oi(this,t))}set(t,e){return super.set(Ri(this,t),e)}delete(t){return super.delete(Ki(this,t))}}Set;function Oi({_intern:t,_key:e},r){const i=e(r);return t.has(i)?t.get(i):r}function Ri({_intern:t,_key:e},r){const i=e(r);return t.has(i)?t.get(i):(t.set(i,r),r)}function Ki({_intern:t,_key:e},r){const i=e(r);return t.has(i)&&(r=t.get(i),t.delete(i)),r}function Ii(t){return null!==t&&"object"==typeof t?t.valueOf():t}const Ni=Symbol("implicit");function Pi(){var t=new Di,e=[],r=[],i=Ni;function n(n){let a=t.get(n);if(void 0===a){if(i!==Ni)return i;t.set(n,a=e.push(n)-1)}return r[a%r.length]}return n.domain=function(r){if(!arguments.length)return e.slice();e=[],t=new Di;for(const i of r)t.has(i)||t.set(i,e.push(i)-1);return n},n.range=function(t){return arguments.length?(r=Array.from(t),n):r.slice()},n.unknown=function(t){return arguments.length?(i=t,n):i},n.copy=function(){return Pi(e,r).unknown(i)},Ei.apply(n,arguments),n}function zi(){var t,e,r=Pi().unknown(void 0),i=r.domain,n=r.range,a=0,o=1,s=!1,l=0,c=0,h=.5;function u(){var r=i().length,u=o=qi?10:a>=ji?5:a>=Wi?2:1;let s,l,c;return n<0?(c=Math.pow(10,-n)/o,s=Math.round(t*c),l=Math.round(e*c),s/ce&&--l,c=-c):(c=Math.pow(10,n)*o,s=Math.round(t/c),l=Math.round(e/c),s*ce&&--l),le?1:t>=e?0:NaN}function Xi(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function Vi(t){let e,r,i;function n(t,i,n=0,a=t.length){if(n>>1;r(t[e],i)<0?n=e+1:a=e}while(nGi(t(e),r),i=(e,r)=>t(e)-r):(e=t===Gi||t===Xi?t:Zi,r=t,i=t),{left:n,center:function(t,e,r=0,a=t.length){const o=n(t,e,r,a-1);return o>r&&i(t[o-1],e)>-i(t[o],e)?o-1:o},right:function(t,i,n=0,a=t.length){if(n>>1;r(t[e],i)<=0?n=e+1:a=e}while(ne&&(r=t,t=e,e=r),c=function(r){return Math.max(t,Math.min(e,r))}),i=l>2?pn:dn,n=a=null,u}function u(e){return null==e||isNaN(e=+e)?r:(n||(n=i(o.map(t),s,l)))(t(c(e)))}return u.invert=function(r){return c(e((a||(a=i(s,o.map(t),le)))(r)))},u.domain=function(t){return arguments.length?(o=Array.from(t,ln),h()):o.slice()},u.range=function(t){return arguments.length?(s=Array.from(t),h()):s.slice()},u.rangeRound=function(t){return s=Array.from(t),l=sn,h()},u.clamp=function(t){return arguments.length?(c=!!t||hn,h()):c!==hn},u.interpolate=function(t){return arguments.length?(l=t,h()):l},u.unknown=function(t){return arguments.length?(r=t,u):r},function(r,i){return t=r,e=i,h()}}function yn(){return gn()(hn,hn)}function mn(t,e,r,i){var n,a=Yi(t,e,r);switch((i=zr(null==i?",f":i)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(n=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Ir(e)/3)))-Ir(Math.abs(t)))}(a,o))||(i.precision=n),Gr(i,o);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(n=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Ir(e)-Ir(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=n-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(n=function(t){return Math.max(0,-Ir(Math.abs(t)))}(a))||(i.precision=n-2*("%"===i.type))}return Yr(i)}function xn(t){var e=t.domain;return t.ticks=function(t){var r=e();return function(t,e,r){if(!((r=+r)>0))return[];if((t=+t)===(e=+e))return[t];const i=e=n))return[];const s=a-n+1,l=new Array(s);if(i)if(o<0)for(let c=0;c0;){if((n=Ui(l,c,r))===i)return a[o]=l,a[s]=c,e(a);if(n>0)l=Math.floor(l/n)*n,c=Math.ceil(c/n)*n;else{if(!(n<0))break;l=Math.ceil(l*n)/n,c=Math.floor(c*n)/n}i=n}return t},t}function bn(){var t=yn();return t.copy=function(){return fn(t,bn())},Ei.apply(t,arguments),xn(t)}const kn=1e3,wn=6e4,Cn=36e5,_n=864e5,vn=6048e5,Sn=2592e6,Tn=31536e6,An=new Date,Mn=new Date;function Bn(t,e,r,i){function n(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return n.floor=e=>(t(e=new Date(+e)),e),n.ceil=r=>(t(r=new Date(r-1)),e(r,1),t(r),r),n.round=t=>{const e=n(t),r=n.ceil(t);return t-e(e(t=new Date(+t),null==r?1:Math.floor(r)),t),n.range=(r,i,a)=>{const o=[];if(r=n.ceil(r),a=null==a?1:Math.floor(a),!(r0))return o;let s;do{o.push(s=new Date(+r)),e(r,a),t(r)}while(sBn(e=>{if(e>=e)for(;t(e),!r(e);)e.setTime(e-1)},(t,i)=>{if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!r(t););else for(;--i>=0;)for(;e(t,1),!r(t););}),r&&(n.count=(e,i)=>(An.setTime(+e),Mn.setTime(+i),t(An),t(Mn),Math.floor(r(An,Mn))),n.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?n.filter(i?e=>i(e)%t===0:e=>n.count(0,e)%t===0):n:null)),n}const Ln=Bn(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);Ln.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Bn(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):Ln:null);Ln.range;const Fn=Bn(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*kn)},(t,e)=>(e-t)/kn,t=>t.getUTCSeconds()),$n=(Fn.range,Bn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*kn)},(t,e)=>{t.setTime(+t+e*wn)},(t,e)=>(e-t)/wn,t=>t.getMinutes())),En=($n.range,Bn(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*wn)},(t,e)=>(e-t)/wn,t=>t.getUTCMinutes())),Dn=(En.range,Bn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*kn-t.getMinutes()*wn)},(t,e)=>{t.setTime(+t+e*Cn)},(t,e)=>(e-t)/Cn,t=>t.getHours())),On=(Dn.range,Bn(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*Cn)},(t,e)=>(e-t)/Cn,t=>t.getUTCHours())),Rn=(On.range,Bn(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*wn)/_n,t=>t.getDate()-1)),Kn=(Rn.range,Bn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/_n,t=>t.getUTCDate()-1)),In=(Kn.range,Bn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/_n,t=>Math.floor(t/_n)));In.range;function Nn(t){return Bn(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+7*e)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*wn)/vn)}const Pn=Nn(0),zn=Nn(1),qn=Nn(2),jn=Nn(3),Wn=Nn(4),Hn=Nn(5),Un=Nn(6);Pn.range,zn.range,qn.range,jn.range,Wn.range,Hn.range,Un.range;function Yn(t){return Bn(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)},(t,e)=>(e-t)/vn)}const Gn=Yn(0),Xn=Yn(1),Vn=Yn(2),Zn=Yn(3),Qn=Yn(4),Jn=Yn(5),ta=Yn(6),ea=(Gn.range,Xn.range,Vn.range,Zn.range,Qn.range,Jn.range,ta.range,Bn(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear()),t=>t.getMonth())),ra=(ea.range,Bn(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear()),t=>t.getUTCMonth())),ia=(ra.range,Bn(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear()));ia.every=t=>isFinite(t=Math.floor(t))&&t>0?Bn(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)}):null;ia.range;const na=Bn(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());na.every=t=>isFinite(t=Math.floor(t))&&t>0?Bn(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)}):null;na.range;function aa(t,e,r,i,n,a){const o=[[Fn,1,kn],[Fn,5,5e3],[Fn,15,15e3],[Fn,30,3e4],[a,1,wn],[a,5,3e5],[a,15,9e5],[a,30,18e5],[n,1,Cn],[n,3,108e5],[n,6,216e5],[n,12,432e5],[i,1,_n],[i,2,1728e5],[r,1,vn],[e,1,Sn],[e,3,7776e6],[t,1,Tn]];function s(e,r,i){const n=Math.abs(r-e)/i,a=Vi(([,,t])=>t).right(o,n);if(a===o.length)return t.every(Yi(e/Tn,r/Tn,i));if(0===a)return Ln.every(Math.max(Yi(e,r,i),1));const[s,l]=o[n/o[a-1][2][t.toLowerCase(),e]))}function _a(t,e,r){var i=ya.exec(e.slice(r,r+1));return i?(t.w=+i[0],r+i[0].length):-1}function va(t,e,r){var i=ya.exec(e.slice(r,r+1));return i?(t.u=+i[0],r+i[0].length):-1}function Sa(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.U=+i[0],r+i[0].length):-1}function Ta(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.V=+i[0],r+i[0].length):-1}function Aa(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.W=+i[0],r+i[0].length):-1}function Ma(t,e,r){var i=ya.exec(e.slice(r,r+4));return i?(t.y=+i[0],r+i[0].length):-1}function Ba(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),r+i[0].length):-1}function La(t,e,r){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),r+i[0].length):-1}function Fa(t,e,r){var i=ya.exec(e.slice(r,r+1));return i?(t.q=3*i[0]-3,r+i[0].length):-1}function $a(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.m=i[0]-1,r+i[0].length):-1}function Ea(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.d=+i[0],r+i[0].length):-1}function Da(t,e,r){var i=ya.exec(e.slice(r,r+3));return i?(t.m=0,t.d=+i[0],r+i[0].length):-1}function Oa(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.H=+i[0],r+i[0].length):-1}function Ra(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.M=+i[0],r+i[0].length):-1}function Ka(t,e,r){var i=ya.exec(e.slice(r,r+2));return i?(t.S=+i[0],r+i[0].length):-1}function Ia(t,e,r){var i=ya.exec(e.slice(r,r+3));return i?(t.L=+i[0],r+i[0].length):-1}function Na(t,e,r){var i=ya.exec(e.slice(r,r+6));return i?(t.L=Math.floor(i[0]/1e3),r+i[0].length):-1}function Pa(t,e,r){var i=ma.exec(e.slice(r,r+1));return i?r+i[0].length:-1}function za(t,e,r){var i=ya.exec(e.slice(r));return i?(t.Q=+i[0],r+i[0].length):-1}function qa(t,e,r){var i=ya.exec(e.slice(r));return i?(t.s=+i[0],r+i[0].length):-1}function ja(t,e){return ba(t.getDate(),e,2)}function Wa(t,e){return ba(t.getHours(),e,2)}function Ha(t,e){return ba(t.getHours()%12||12,e,2)}function Ua(t,e){return ba(1+Rn.count(ia(t),t),e,3)}function Ya(t,e){return ba(t.getMilliseconds(),e,3)}function Ga(t,e){return Ya(t,e)+"000"}function Xa(t,e){return ba(t.getMonth()+1,e,2)}function Va(t,e){return ba(t.getMinutes(),e,2)}function Za(t,e){return ba(t.getSeconds(),e,2)}function Qa(t){var e=t.getDay();return 0===e?7:e}function Ja(t,e){return ba(Pn.count(ia(t)-1,t),e,2)}function to(t){var e=t.getDay();return e>=4||0===e?Wn(t):Wn.ceil(t)}function eo(t,e){return t=to(t),ba(Wn.count(ia(t),t)+(4===ia(t).getDay()),e,2)}function ro(t){return t.getDay()}function io(t,e){return ba(zn.count(ia(t)-1,t),e,2)}function no(t,e){return ba(t.getFullYear()%100,e,2)}function ao(t,e){return ba((t=to(t)).getFullYear()%100,e,2)}function oo(t,e){return ba(t.getFullYear()%1e4,e,4)}function so(t,e){var r=t.getDay();return ba((t=r>=4||0===r?Wn(t):Wn.ceil(t)).getFullYear()%1e4,e,4)}function lo(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+ba(e/60|0,"0",2)+ba(e%60,"0",2)}function co(t,e){return ba(t.getUTCDate(),e,2)}function ho(t,e){return ba(t.getUTCHours(),e,2)}function uo(t,e){return ba(t.getUTCHours()%12||12,e,2)}function po(t,e){return ba(1+Kn.count(na(t),t),e,3)}function fo(t,e){return ba(t.getUTCMilliseconds(),e,3)}function go(t,e){return fo(t,e)+"000"}function yo(t,e){return ba(t.getUTCMonth()+1,e,2)}function mo(t,e){return ba(t.getUTCMinutes(),e,2)}function xo(t,e){return ba(t.getUTCSeconds(),e,2)}function bo(t){var e=t.getUTCDay();return 0===e?7:e}function ko(t,e){return ba(Gn.count(na(t)-1,t),e,2)}function wo(t){var e=t.getUTCDay();return e>=4||0===e?Qn(t):Qn.ceil(t)}function Co(t,e){return t=wo(t),ba(Qn.count(na(t),t)+(4===na(t).getUTCDay()),e,2)}function _o(t){return t.getUTCDay()}function vo(t,e){return ba(Xn.count(na(t)-1,t),e,2)}function So(t,e){return ba(t.getUTCFullYear()%100,e,2)}function To(t,e){return ba((t=wo(t)).getUTCFullYear()%100,e,2)}function Ao(t,e){return ba(t.getUTCFullYear()%1e4,e,4)}function Mo(t,e){var r=t.getUTCDay();return ba((t=r>=4||0===r?Qn(t):Qn.ceil(t)).getUTCFullYear()%1e4,e,4)}function Bo(){return"+0000"}function Lo(){return"%"}function Fo(t){return+t}function $o(t){return Math.floor(+t/1e3)}function Eo(t){return new Date(t)}function Do(t){return t instanceof Date?+t:+new Date(+t)}function Oo(t,e,r,i,n,a,o,s,l,c){var h=yn(),u=h.invert,d=h.domain,p=c(".%L"),f=c(":%S"),g=c("%I:%M"),y=c("%I %p"),m=c("%a %d"),x=c("%b %d"),b=c("%B"),k=c("%Y");function w(t){return(l(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Fo,s:$o,S:Za,u:Qa,U:Ja,V:eo,w:ro,W:io,x:null,X:null,y:no,Y:oo,Z:lo,"%":Lo},k={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:co,e:co,f:go,g:To,G:Mo,H:ho,I:uo,j:po,L:fo,m:yo,M:mo,p:function(t){return n[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Fo,s:$o,S:xo,u:bo,U:ko,V:Co,w:_o,W:vo,x:null,X:null,y:So,Y:Ao,Z:Bo,"%":Lo},w={a:function(t,e,r){var i=p.exec(e.slice(r));return i?(t.w=f.get(i[0].toLowerCase()),r+i[0].length):-1},A:function(t,e,r){var i=u.exec(e.slice(r));return i?(t.w=d.get(i[0].toLowerCase()),r+i[0].length):-1},b:function(t,e,r){var i=m.exec(e.slice(r));return i?(t.m=x.get(i[0].toLowerCase()),r+i[0].length):-1},B:function(t,e,r){var i=g.exec(e.slice(r));return i?(t.m=y.get(i[0].toLowerCase()),r+i[0].length):-1},c:function(t,r,i){return v(t,e,r,i)},d:Ea,e:Ea,f:Na,g:Ba,G:Ma,H:Oa,I:Oa,j:Da,L:Ia,m:$a,M:Ra,p:function(t,e,r){var i=c.exec(e.slice(r));return i?(t.p=h.get(i[0].toLowerCase()),r+i[0].length):-1},q:Fa,Q:za,s:qa,S:Ka,u:va,U:Sa,V:Ta,w:_a,W:Aa,x:function(t,e,i){return v(t,r,e,i)},X:function(t,e,r){return v(t,i,e,r)},y:Ba,Y:Ma,Z:La,"%":Pa};function C(t,e){return function(r){var i,n,a,o=[],s=-1,l=0,c=t.length;for(r instanceof Date||(r=new Date(+r));++s53)return null;"w"in a||(a.w=1),"Z"in a?(n=(i=ua(da(a.y,0,1))).getUTCDay(),i=n>4||0===n?Xn.ceil(i):Xn(i),i=Kn.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(n=(i=ha(da(a.y,0,1))).getDay(),i=n>4||0===n?zn.ceil(i):zn(i),i=Rn.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),n="Z"in a?ua(da(a.y,0,1)).getUTCDay():ha(da(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(n+5)%7:a.w+7*a.U-(n+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,ua(a)):ha(a)}}function v(t,e,r,i){for(var n,a,o=0,s=e.length,l=r.length;o=l)return-1;if(37===(n=e.charCodeAt(o++))){if(n=e.charAt(o++),!(a=w[n in ga?e.charAt(o++):n])||(i=a(t,r,i))<0)return-1}else if(n!=r.charCodeAt(i++))return-1}return i}return b.x=C(r,b),b.X=C(i,b),b.c=C(e,b),k.x=C(r,k),k.X=C(i,k),k.c=C(e,k),{format:function(t){var e=C(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=C(t+="",k);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}(t),fa=pa.format,pa.parse,pa.utcFormat,pa.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Ko=function(t){for(var e=t.length/6|0,r=new Array(e),i=0;i=1?Xo:t<=-1?-Xo:Math.asin(t)}const Qo=Math.PI,Jo=2*Qo,ts=1e-6,es=Jo-ts;function rs(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return rs;const r=10**e;return function(t){this._+=t[0];for(let e=1,i=t.length;ets)if(Math.abs(h*s-l*c)>ts&&n){let d=r-a,p=i-o,f=s*s+l*l,g=d*d+p*p,y=Math.sqrt(f),m=Math.sqrt(u),x=n*Math.tan((Qo-Math.acos((f+u-g)/(2*y*m)))/2),b=x/m,k=x/y;Math.abs(b-1)>ts&&this._append`L${t+b*c},${e+b*h}`,this._append`A${n},${n},0,0,${+(h*d>c*p)},${this._x1=t+k*s},${this._y1=e+k*l}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,r,i,n,a){if(t=+t,e=+e,a=!!a,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(i),s=r*Math.sin(i),l=t+o,c=e+s,h=1^a,u=a?i-n:n-i;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>ts||Math.abs(this._y1-c)>ts)&&this._append`L${l},${c}`,r&&(u<0&&(u=u%Jo+Jo),u>es?this._append`A${r},${r},0,1,${h},${t-o},${e-s}A${r},${r},0,1,${h},${this._x1=l},${this._y1=c}`:u>ts&&this._append`A${r},${r},0,${+(u>=Qo)},${h},${this._x1=t+r*Math.cos(n)},${this._y1=e+r*Math.sin(n)}`)}rect(t,e,r,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}}function ns(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(null==r)e=null;else{const t=Math.floor(r);if(!(t>=0))throw new RangeError(`invalid digits: ${r}`);e=t}return t},()=>new is(e)}function as(t){return t.innerRadius}function os(t){return t.outerRadius}function ss(t){return t.startAngle}function ls(t){return t.endAngle}function cs(t){return t&&t.padAngle}function hs(t,e,r,i,n,a,o){var s=t-r,l=e-i,c=(o?a:-a)/Uo(s*s+l*l),h=c*l,u=-c*s,d=t+h,p=e+u,f=r+h,g=i+u,y=(d+f)/2,m=(p+g)/2,x=f-d,b=g-p,k=x*x+b*b,w=n-a,C=d*g-f*p,_=(b<0?-1:1)*Uo(jo(0,w*w*k-C*C)),v=(C*b-x*_)/k,S=(-C*x-b*_)/k,T=(C*b+x*_)/k,A=(-C*x+b*_)/k,M=v-y,B=S-m,L=T-y,F=A-m;return M*M+B*B>L*L+F*F&&(v=T,S=A),{cx:v,cy:S,x01:-h,y01:-u,x11:v*(n/w-1),y11:S*(n/w-1)}}function us(){var t=as,e=os,r=No(0),i=null,n=ss,a=ls,o=cs,s=null,l=ns(c);function c(){var c,h,u,d=+t.apply(this,arguments),p=+e.apply(this,arguments),f=n.apply(this,arguments)-Xo,g=a.apply(this,arguments)-Xo,y=Po(g-f),m=g>f;if(s||(s=c=l()),pYo)if(y>Vo-Yo)s.moveTo(p*qo(f),p*Ho(f)),s.arc(0,0,p,f,g,!m),d>Yo&&(s.moveTo(d*qo(g),d*Ho(g)),s.arc(0,0,d,g,f,m));else{var x,b,k=f,w=g,C=f,_=g,v=y,S=y,T=o.apply(this,arguments)/2,A=T>Yo&&(i?+i.apply(this,arguments):Uo(d*d+p*p)),M=Wo(Po(p-d)/2,+r.apply(this,arguments)),B=M,L=M;if(A>Yo){var F=Zo(A/d*Ho(T)),$=Zo(A/p*Ho(T));(v-=2*F)>Yo?(C+=F*=m?1:-1,_-=F):(v=0,C=_=(f+g)/2),(S-=2*$)>Yo?(k+=$*=m?1:-1,w-=$):(S=0,k=w=(f+g)/2)}var E=p*qo(k),D=p*Ho(k),O=d*qo(_),R=d*Ho(_);if(M>Yo){var K,I=p*qo(w),N=p*Ho(w),P=d*qo(C),z=d*Ho(C);if(y1?0:u<-1?Go:Math.acos(u))/2),Y=Uo(K[0]*K[0]+K[1]*K[1]);B=Wo(M,(d-Y)/(U-1)),L=Wo(M,(p-Y)/(U+1))}else B=L=0}S>Yo?L>Yo?(x=hs(P,z,E,D,p,L,m),b=hs(I,N,O,R,p,L,m),s.moveTo(x.cx+x.x01,x.cy+x.y01),LYo&&v>Yo?B>Yo?(x=hs(O,R,I,N,d,-B,m),b=hs(E,D,P,z,d,-B,m),s.lineTo(x.cx+x.x01,x.cy+x.y01),Bt?1:e>=t?0:NaN}function bs(t){return t}function ks(){var t=bs,e=xs,r=null,i=No(0),n=No(Vo),a=No(0);function o(o){var s,l,c,h,u,d=(o=ds(o)).length,p=0,f=new Array(d),g=new Array(d),y=+i.apply(this,arguments),m=Math.min(Vo,Math.max(-Vo,n.apply(this,arguments)-y)),x=Math.min(Math.abs(m)/d,a.apply(this,arguments)),b=x*(m<0?-1:1);for(s=0;s0&&(p+=u);for(null!=e?f.sort(function(t,r){return e(g[t],g[r])}):null!=r&&f.sort(function(t,e){return r(o[t],o[e])}),s=0,c=p?(m-d*b)/p:0;s0?u*c:0)+b,g[l]={data:o[l],index:s,value:u,startAngle:y,endAngle:h,padAngle:x};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:No(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,r=null,o):e},o.sort=function(t){return arguments.length?(r=t,e=null,o):r},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:No(+t),o):i},o.endAngle=function(t){return arguments.length?(n="function"==typeof t?t:No(+t),o):n},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:No(+t),o):a},o}function ws(){}function Cs(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function _s(t){this._context=t}function vs(t){return new _s(t)}function Ss(t){this._context=t}function Ts(t){return new Ss(t)}function As(t){this._context=t}function Ms(t){return new As(t)}ps.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},_s.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Cs(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Cs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Ss.prototype={areaStart:ws,areaEnd:ws,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Cs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},As.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,i):this._context.moveTo(r,i);break;case 3:this._point=4;default:Cs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class Bs{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function Ls(t){return new Bs(t,!0)}function Fs(t){return new Bs(t,!1)}function $s(t,e){this._basis=new _s(t),this._beta=e}$s.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var i,n=t[0],a=e[0],o=t[r]-n,s=e[r]-a,l=-1;++l<=r;)i=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+i*o),this._beta*e[l]+(1-this._beta)*(a+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const Es=function t(e){function r(t){return 1===e?new _s(t):new $s(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function Ds(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function Os(t,e){this._context=t,this._k=(1-e)/6}Os.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ds(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Ds(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Rs=function t(e){function r(t){return new Os(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Ks(t,e){this._context=t,this._k=(1-e)/6}Ks.prototype={areaStart:ws,areaEnd:ws,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Ds(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Is=function t(e){function r(t){return new Ks(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Ns(t,e){this._context=t,this._k=(1-e)/6}Ns.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ds(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ps=function t(e){function r(t){return new Ns(t,e)}return r.tension=function(e){return t(+e)},r}(0);function zs(t,e,r){var i=t._x1,n=t._y1,a=t._x2,o=t._y2;if(t._l01_a>Yo){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,n=(n*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Yo){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/h,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/h}t._context.bezierCurveTo(i,n,a,o,t._x2,t._y2)}function qs(t,e){this._context=t,this._alpha=e}qs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:zs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const js=function t(e){function r(t){return e?new qs(t,e):new Os(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Ws(t,e){this._context=t,this._alpha=e}Ws.prototype={areaStart:ws,areaEnd:ws,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:zs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Hs=function t(e){function r(t){return e?new Ws(t,e):new Ks(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Us(t,e){this._context=t,this._alpha=e}Us.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:zs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ys=function t(e){function r(t){return e?new Us(t,e):new Ns(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Gs(t){this._context=t}function Xs(t){return new Gs(t)}function Vs(t){return t<0?-1:1}function Zs(t,e,r){var i=t._x1-t._x0,n=e-t._x1,a=(t._y1-t._y0)/(i||n<0&&-0),o=(r-t._y1)/(n||i<0&&-0),s=(a*n+o*i)/(i+n);return(Vs(a)+Vs(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Qs(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Js(t,e,r){var i=t._x0,n=t._y0,a=t._x1,o=t._y1,s=(a-i)/3;t._context.bezierCurveTo(i+s,n+s*e,a-s,o-s*r,a,o)}function tl(t){this._context=t}function el(t){this._context=new rl(t)}function rl(t){this._context=t}function il(t){return new tl(t)}function nl(t){return new el(t)}function al(t){this._context=t}function ol(t){var e,r,i=t.length-1,n=new Array(i),a=new Array(i),o=new Array(i);for(n[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)n[e]=(o[e]-n[e+1])/a[e];for(a[i-1]=(t[i]+n[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},dl.prototype={constructor:dl,scale:function(t){return 1===t?this:new dl(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new dl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};new dl(1,0,0);dl.prototype},513:(t,e,r)=>{"use strict";function i(t){for(var e=[],r=1;ri})},565:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(3988);const n=function(t){var e=new t.constructor(t.byteLength);return new i.A(e).set(new i.A(t)),e}},797:(t,e,r)=>{"use strict";r.d(e,{He:()=>c,K2:()=>a,Rm:()=>l,VA:()=>o});var i=r(4353),n=Object.defineProperty,a=(t,e)=>n(t,"name",{value:e,configurable:!0}),o=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},s={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},l={trace:a((...t)=>{},"trace"),debug:a((...t)=>{},"debug"),info:a((...t)=>{},"info"),warn:a((...t)=>{},"warn"),error:a((...t)=>{},"error"),fatal:a((...t)=>{},"fatal")},c=a(function(t="fatal"){let e=s.fatal;"string"==typeof t?t.toLowerCase()in s&&(e=s[t]):"number"==typeof t&&(e=t),l.trace=()=>{},l.debug=()=>{},l.info=()=>{},l.warn=()=>{},l.error=()=>{},l.fatal=()=>{},e<=s.fatal&&(l.fatal=console.error?console.error.bind(console,h("FATAL"),"color: orange"):console.log.bind(console,"\x1b[35m",h("FATAL"))),e<=s.error&&(l.error=console.error?console.error.bind(console,h("ERROR"),"color: orange"):console.log.bind(console,"\x1b[31m",h("ERROR"))),e<=s.warn&&(l.warn=console.warn?console.warn.bind(console,h("WARN"),"color: orange"):console.log.bind(console,"\x1b[33m",h("WARN"))),e<=s.info&&(l.info=console.info?console.info.bind(console,h("INFO"),"color: lightblue"):console.log.bind(console,"\x1b[34m",h("INFO"))),e<=s.debug&&(l.debug=console.debug?console.debug.bind(console,h("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",h("DEBUG"))),e<=s.trace&&(l.trace=console.debug?console.debug.bind(console,h("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",h("TRACE")))},"setLogLevel"),h=a(t=>`%c${i().format("ss.SSS")} : ${t} : `,"format")},1121:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=Function.prototype.toString;const n=function(t){if(null!=t){try{return i.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},1754:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(127);const n=function(){this.__data__=new i.A,this.size=0};const a=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r};const o=function(t){return this.__data__.get(t)};const s=function(t){return this.__data__.has(t)};var l=r(8335),c=r(9471);const h=function(t,e){var r=this.__data__;if(r instanceof i.A){var n=r.__data__;if(!l.A||n.length<199)return n.push([t,e]),this.size=++r.size,this;r=this.__data__=new c.A(n)}return r.set(t,e),this.size=r.size,this};function u(t){var e=this.__data__=new i.A(t);this.size=e.size}u.prototype.clear=n,u.prototype.delete=a,u.prototype.get=o,u.prototype.has=s,u.prototype.set=h;const d=u},1801:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(565);const n=function(t,e){var r=e?(0,i.A)(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}},1852:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(7271);const n=(0,r(367).A)(Object.keys,Object);var a=Object.prototype.hasOwnProperty;const o=function(t){if(!(0,i.A)(t))return n(t);var e=[];for(var r in Object(t))a.call(t,r)&&"constructor"!=r&&e.push(r);return e}},1917:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(2136),n="object"==typeof self&&self&&self.Object===Object&&self;const a=i.A||n||Function("return this")()},2031:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(2851),n=r(2528);const a=function(t,e,r,a){var o=!r;r||(r={});for(var s=-1,l=e.length;++s{"use strict";r.d(e,{A:()=>i});const i=Array.isArray},2136:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i="object"==typeof globalThis&&globalThis&&globalThis.Object===Object&&globalThis},2274:(t,e,r)=>{"use strict";r.d(e,{A:()=>c});var i=r(8496),n=r(3098);const a=function(t){return(0,n.A)(t)&&"[object Arguments]"==(0,i.A)(t)};var o=Object.prototype,s=o.hasOwnProperty,l=o.propertyIsEnumerable;const c=a(function(){return arguments}())?a:function(t){return(0,n.A)(t)&&s.call(t,"callee")&&!l.call(t,"callee")}},2279:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>Ge});var i=r(9264),n=r(3590),a=r(3981),o=r(45),s=(r(5164),r(8698),r(5894),r(3245),r(2387),r(92)),l=r(3226),c=r(7633),h=r(797),u=r(513),d=r(451),p="comm",f="rule",g="decl",y=Math.abs,m=String.fromCharCode;Object.assign;function x(t){return t.trim()}function b(t,e,r){return t.replace(e,r)}function k(t,e,r){return t.indexOf(e,r)}function w(t,e){return 0|t.charCodeAt(e)}function C(t,e,r){return t.slice(e,r)}function _(t){return t.length}function v(t,e){return e.push(t),t}function S(t,e){for(var r="",i=0;i0?w($,--L):0,M--,10===F&&(M=1,A--),F}function O(){return F=L2||N(F)>3?"":" "}function W(t,e){for(;--e&&O()&&!(F<48||F>102||F>57&&F<65||F>70&&F<97););return I(t,K()+(e<6&&32==R()&&32==O()))}function H(t){for(;O();)switch(F){case t:return L;case 34:case 39:34!==t&&39!==t&&H(F);break;case 40:41===t&&H(t);break;case 92:O()}return L}function U(t,e){for(;O()&&t+F!==57&&(t+F!==84||47!==R()););return"/*"+I(e,L-1)+"*"+m(47===t?t:O())}function Y(t){for(;!N(R());)O();return I(t,L)}function G(t){return z(X("",null,null,null,[""],t=P(t),0,[0],t))}function X(t,e,r,i,n,a,o,s,l){for(var c=0,h=0,u=o,d=0,p=0,f=0,g=1,x=1,S=1,T=0,A="",M=n,B=a,L=i,F=A;x;)switch(f=T,T=O()){case 40:if(108!=f&&58==w(F,u-1)){-1!=k(F+=b(q(T),"&","&\f"),"&\f",y(c?s[c-1]:0))&&(S=-1);break}case 34:case 39:case 91:F+=q(T);break;case 9:case 10:case 13:case 32:F+=j(f);break;case 92:F+=W(K()-1,7);continue;case 47:switch(R()){case 42:case 47:v(Z(U(O(),K()),e,r,l),l),5!=N(f||1)&&5!=N(R()||1)||!_(F)||" "===C(F,-1,void 0)||(F+=" ");break;default:F+="/"}break;case 123*g:s[c++]=_(F)*S;case 125*g:case 59:case 0:switch(T){case 0:case 125:x=0;case 59+h:-1==S&&(F=b(F,/\f/g,"")),p>0&&(_(F)-u||0===g&&47===f)&&v(p>32?Q(F+";",i,r,u-1,l):Q(b(F," ","")+";",i,r,u-2,l),l);break;case 59:F+=";";default:if(v(L=V(F,e,r,c,h,n,s,A,M=[],B=[],u,a),a),123===T)if(0===h)X(F,e,L,L,M,a,u,s,B);else{switch(d){case 99:if(110===w(F,3))break;case 108:if(97===w(F,2))break;default:h=0;case 100:case 109:case 115:}h?X(t,L,L,i&&v(V(t,L,L,0,0,n,s,A,n,M=[],u,B),B),n,B,u,s,i?M:B):X(F,L,L,L,[""],B,0,s,B)}}c=h=p=0,g=S=1,A=F="",u=o;break;case 58:u=1+_(F),p=f;default:if(g<1)if(123==T)--g;else if(125==T&&0==g++&&125==D())continue;switch(F+=m(T),T*g){case 38:S=h>0?1:(F+="\f",-1);break;case 44:s[c++]=(_(F)-1)*S,S=1;break;case 64:45===R()&&(F+=q(O())),d=R(),h=u=_(A=F+=Y(K())),T++;break;case 45:45===f&&2==_(F)&&(g=0)}}return a}function V(t,e,r,i,n,a,o,s,l,c,h,u){for(var d=n-1,p=0===n?a:[""],g=function(t){return t.length}(p),m=0,k=0,w=0;m0?p[_]+" "+v:b(v,/&\f/g,p[_])))&&(l[w++]=S);return E(t,e,r,0===n?f:s,l,c,h,u)}function Z(t,e,r,i){return E(t,e,r,p,m(F),C(t,2,-2),0,i)}function Q(t,e,r,i,n){return E(t,e,r,g,C(t,0,i),C(t,i+1,-1),i,n)}var J=r(9418),tt=r(6401),et={id:"c4",detector:(0,h.K2)(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(4981).then(r.bind(r,4981));return{id:"c4",diagram:t}},"loader")},rt="flowchart",it={id:rt,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.flowchart?.defaultRenderer&&"elk"!==e?.flowchart?.defaultRenderer&&/^\s*graph/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2291)]).then(r.bind(r,2291));return{id:rt,diagram:t}},"loader")},nt="flowchart-v2",at={id:nt,detector:(0,h.K2)((t,e)=>"dagre-d3"!==e?.flowchart?.defaultRenderer&&("elk"===e?.flowchart?.defaultRenderer&&(e.layout="elk"),!(!/^\s*graph/.test(t)||"dagre-wrapper"!==e?.flowchart?.defaultRenderer)||/^\s*flowchart/.test(t)),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2291)]).then(r.bind(r,2291));return{id:nt,diagram:t}},"loader")},ot={id:"er",detector:(0,h.K2)(t=>/^\s*erDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8756)]).then(r.bind(r,8756));return{id:"er",diagram:t}},"loader")},st="gitGraph",lt={id:st,detector:(0,h.K2)(t=>/^\s*gitGraph/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(6319)]).then(r.bind(r,6319));return{id:st,diagram:t}},"loader")},ct="gantt",ht={id:ct,detector:(0,h.K2)(t=>/^\s*gantt/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(2492).then(r.bind(r,2492));return{id:ct,diagram:t}},"loader")},ut="info",dt={id:ut,detector:(0,h.K2)(t=>/^\s*info/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(7465)]).then(r.bind(r,7465));return{id:ut,diagram:t}},"loader")},pt={id:"pie",detector:(0,h.K2)(t=>/^\s*pie/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(9412)]).then(r.bind(r,9412));return{id:"pie",diagram:t}},"loader")},ft="quadrantChart",gt={id:ft,detector:(0,h.K2)(t=>/^\s*quadrantChart/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(1203).then(r.bind(r,1203));return{id:ft,diagram:t}},"loader")},yt="xychart",mt={id:yt,detector:(0,h.K2)(t=>/^\s*xychart(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(5955).then(r.bind(r,5955));return{id:yt,diagram:t}},"loader")},xt="requirement",bt={id:xt,detector:(0,h.K2)(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(9032)]).then(r.bind(r,9032));return{id:xt,diagram:t}},"loader")},kt="sequence",wt={id:kt,detector:(0,h.K2)(t=>/^\s*sequenceDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(7592).then(r.bind(r,7592));return{id:kt,diagram:t}},"loader")},Ct="class",_t={id:Ct,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.class?.defaultRenderer&&/^\s*classDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(1746),r.e(9510)]).then(r.bind(r,9510));return{id:Ct,diagram:t}},"loader")},vt="classDiagram",St={id:vt,detector:(0,h.K2)((t,e)=>!(!/^\s*classDiagram/.test(t)||"dagre-wrapper"!==e?.class?.defaultRenderer)||/^\s*classDiagram-v2/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(1746),r.e(3815)]).then(r.bind(r,3815));return{id:vt,diagram:t}},"loader")},Tt="state",At={id:Tt,detector:(0,h.K2)((t,e)=>"dagre-wrapper"!==e?.state?.defaultRenderer&&/^\s*stateDiagram/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2334),r.e(4616),r.e(8142)]).then(r.bind(r,8142));return{id:Tt,diagram:t}},"loader")},Mt="stateDiagram",Bt={id:Mt,detector:(0,h.K2)((t,e)=>!!/^\s*stateDiagram-v2/.test(t)||!(!/^\s*stateDiagram/.test(t)||"dagre-wrapper"!==e?.state?.defaultRenderer),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(4616),r.e(4802)]).then(r.bind(r,4802));return{id:Mt,diagram:t}},"loader")},Lt="journey",Ft={id:Lt,detector:(0,h.K2)(t=>/^\s*journey/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(5480).then(r.bind(r,5480));return{id:Lt,diagram:t}},"loader")},$t={draw:(0,h.K2)((t,e,r)=>{h.Rm.debug("rendering svg for syntax error\n");const i=(0,n.D)(e),a=i.append("g");i.attr("viewBox","0 0 2412 512"),(0,c.a$)(i,100,512,!0),a.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),a.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),a.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),a.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),a.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),a.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),a.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),a.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw")},Et=$t,Dt={db:{},renderer:$t,parser:{parse:(0,h.K2)(()=>{},"parse")}},Ot="flowchart-elk",Rt={id:Ot,detector:(0,h.K2)((t,e={})=>!!(/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&"elk"===e?.flowchart?.defaultRenderer)&&(e.layout="elk",!0),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(2291)]).then(r.bind(r,2291));return{id:Ot,diagram:t}},"loader")},Kt="timeline",It={id:Kt,detector:(0,h.K2)(t=>/^\s*timeline/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(291).then(r.bind(r,291));return{id:Kt,diagram:t}},"loader")},Nt="mindmap",Pt={id:Nt,detector:(0,h.K2)(t=>/^\s*mindmap/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8565)]).then(r.bind(r,8565));return{id:Nt,diagram:t}},"loader")},zt="kanban",qt={id:zt,detector:(0,h.K2)(t=>/^\s*kanban/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(6241).then(r.bind(r,6241));return{id:zt,diagram:t}},"loader")},jt="sankey",Wt={id:jt,detector:(0,h.K2)(t=>/^\s*sankey(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await r.e(1741).then(r.bind(r,1741));return{id:jt,diagram:t}},"loader")},Ht="packet",Ut={id:Ht,detector:(0,h.K2)(t=>/^\s*packet(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(6567)]).then(r.bind(r,6567));return{id:Ht,diagram:t}},"loader")},Yt="radar",Gt={id:Yt,detector:(0,h.K2)(t=>/^\s*radar-beta/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(6992)]).then(r.bind(r,6992));return{id:Yt,diagram:t}},"loader")},Xt="block",Vt={id:Xt,detector:(0,h.K2)(t=>/^\s*block(-beta)?/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(5996)]).then(r.bind(r,5996));return{id:Xt,diagram:t}},"loader")},Zt="architecture",Qt={id:Zt,detector:(0,h.K2)(t=>/^\s*architecture/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(165),r.e(8249)]).then(r.bind(r,8249));return{id:Zt,diagram:t}},"loader")},Jt="treemap",te={id:Jt,detector:(0,h.K2)(t=>/^\s*treemap/.test(t),"detector"),loader:(0,h.K2)(async()=>{const{diagram:t}=await Promise.all([r.e(2076),r.e(8731),r.e(2821)]).then(r.bind(r,2821));return{id:Jt,diagram:t}},"loader")},ee=!1,re=(0,h.K2)(()=>{ee||(ee=!0,(0,c.Js)("error",Dt,t=>"error"===t.toLowerCase().trim()),(0,c.Js)("---",{db:{clear:(0,h.K2)(()=>{},"clear")},styles:{},renderer:{draw:(0,h.K2)(()=>{},"draw")},parser:{parse:(0,h.K2)(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:(0,h.K2)(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),(0,c.Xd)(Rt,Pt,Qt),(0,c.Xd)(et,qt,St,_t,ot,ht,dt,pt,bt,wt,at,it,It,lt,Bt,At,Ft,gt,Wt,Ut,mt,Vt,Gt,te))},"addDiagrams"),ie=(0,h.K2)(async()=>{h.Rm.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(c.mW).map(async([t,{detector:e,loader:r}])=>{if(r)try{(0,c.Gs)(t)}catch{try{const{diagram:t,id:i}=await r();(0,c.Js)(i,t,e)}catch(i){throw h.Rm.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete c.mW[t],i}}}))).filter(t=>"rejected"===t.status);if(t.length>0){h.Rm.error(`Failed to load ${t.length} external diagrams`);for(const e of t)h.Rm.error(e);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams");function ne(t,e){t.attr("role","graphics-document document"),""!==e&&t.attr("aria-roledescription",e)}function ae(t,e,r,i){if(void 0!==t.insert){if(r){const e=`chart-desc-${i}`;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(r)}if(e){const r=`chart-title-${i}`;t.attr("aria-labelledby",r),t.insert("title",":first-child").attr("id",r).text(e)}}}(0,h.K2)(ne,"setA11yDiagramInfo"),(0,h.K2)(ae,"addSVGa11yTitleDescription");var oe=class t{constructor(t,e,r,i,n){this.type=t,this.text=e,this.db=r,this.parser=i,this.renderer=n}static{(0,h.K2)(this,"Diagram")}static async fromText(e,r={}){const i=(0,c.zj)(),n=(0,c.Ch)(e,i);e=(0,l.C4)(e)+"\n";try{(0,c.Gs)(n)}catch{const t=(0,c.J$)(n);if(!t)throw new c.C0(`Diagram ${n} not found.`);const{id:e,diagram:r}=await t();(0,c.Js)(e,r)}const{db:a,parser:o,renderer:s,init:h}=(0,c.Gs)(n);return o.parser&&(o.parser.yy=a),a.clear?.(),h?.(i),r.title&&a.setDiagramTitle?.(r.title),await o.parse(e),new t(n,e,a,o,s)}async render(t,e){await this.renderer.draw(this.text,t,e,this)}getParser(){return this.parser}getType(){return this.type}},se=[],le=(0,h.K2)(()=>{se.forEach(t=>{t()}),se=[]},"attachFunctions"),ce=(0,h.K2)(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function he(t){const e=t.match(c.EJ);if(!e)return{text:t,metadata:{}};let r=(0,a.H)(e[1],{schema:a.r})??{};r="object"!=typeof r||Array.isArray(r)?{}:r;const i={};return r.displayMode&&(i.displayMode=r.displayMode.toString()),r.title&&(i.title=r.title.toString()),r.config&&(i.config=r.config),{text:t.slice(e[0].length),metadata:i}}(0,h.K2)(he,"extractFrontMatter");var ue=(0,h.K2)(t=>t.replace(/\r\n?/g,"\n").replace(/<(\w+)([^>]*)>/g,(t,e,r)=>"<"+e+r.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),de=(0,h.K2)(t=>{const{text:e,metadata:r}=he(t),{displayMode:i,title:n,config:a={}}=r;return i&&(a.gantt||(a.gantt={}),a.gantt.displayMode=i),{title:n,config:a,text:e}},"processFrontmatter"),pe=(0,h.K2)(t=>{const e=l._K.detectInit(t)??{},r=l._K.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:t})=>"wrap"===t):"wrap"===r?.type&&(e.wrap=!0),{text:(0,l.vU)(t),directive:e}},"processDirectives");function fe(t){const e=ue(t),r=de(e),i=pe(r.text),n=(0,l.$t)(r.config,i.directive);return{code:t=ce(i.text),title:r.title,config:n}}function ge(t){const e=(new TextEncoder).encode(t),r=Array.from(e,t=>String.fromCodePoint(t)).join("");return btoa(r)}(0,h.K2)(fe,"preprocessDiagram"),(0,h.K2)(ge,"toBase64");var ye=["foreignobject"],me=["dominant-baseline"];function xe(t){const e=fe(t);return(0,c.cL)(),(0,c.xA)(e.config??{}),e}async function be(t,e){re();try{const{code:e,config:r}=xe(t);return{diagramType:(await Le(e)).type,config:r}}catch(r){if(e?.suppressErrors)return!1;throw r}}(0,h.K2)(xe,"processAndSetConfigs"),(0,h.K2)(be,"parse");var ke=(0,h.K2)((t,e,r=[])=>`\n.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),we=(0,h.K2)((t,e=new Map)=>{let r="";if(void 0!==t.themeCSS&&(r+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(r+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(r+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){const i=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(t=>{(0,tt.A)(t.styles)||i.forEach(e=>{r+=ke(t.id,e,t.styles)}),(0,tt.A)(t.textStyles)||(r+=ke(t.id,"tspan",(t?.textStyles||[]).map(t=>t.replace("color","fill"))))})}return r},"createCssStyles"),Ce=(0,h.K2)((t,e,r,i)=>{const n=we(t,r);return S(G(`${i}{${(0,c.tM)(e,n,t.themeVariables)}}`),T)},"createUserStyles"),_e=(0,h.K2)((t="",e,r)=>{let i=t;return r||e||(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=(0,l.Sm)(i),i=i.replace(/
    /g,"
    "),i},"cleanUpSvgCode"),ve=(0,h.K2)((t="",e)=>``,"putIntoIFrame"),Se=(0,h.K2)((t,e,r,i,n)=>{const a=t.append("div");a.attr("id",r),i&&a.attr("style",i);const o=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return n&&o.attr("xmlns:xlink",n),o.append("g"),t},"appendDivSvgG");function Te(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}(0,h.K2)(Te,"sandboxedIframe");var Ae=(0,h.K2)((t,e,r,i)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(i)?.remove()},"removeExistingElements"),Me=(0,h.K2)(async function(t,e,r){re();const n=xe(e);e=n.code;const a=(0,c.zj)();h.Rm.debug(a),e.length>(a?.maxTextSize??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa");const o="#"+t,s="i"+t,l="#"+s,u="d"+t,p="#"+u,f=(0,h.K2)(()=>{const t=y?l:p,e=(0,d.Ltv)(t).node();e&&"remove"in e&&e.remove()},"removeTempElements");let g=(0,d.Ltv)("body");const y="sandbox"===a.securityLevel,m="loose"===a.securityLevel,x=a.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),y){const t=Te((0,d.Ltv)(r),s);g=(0,d.Ltv)(t.nodes()[0].contentDocument.body),g.node().style.margin=0}else g=(0,d.Ltv)(r);Se(g,t,u,`font-family: ${x}`,"http://www.w3.org/1999/xlink")}else{if(Ae(document,t,u,s),y){const t=Te((0,d.Ltv)("body"),s);g=(0,d.Ltv)(t.nodes()[0].contentDocument.body),g.node().style.margin=0}else g=(0,d.Ltv)("body");Se(g,t,u)}let b,k;try{b=await oe.fromText(e,{title:n.title})}catch($){if(a.suppressErrorRendering)throw f(),$;b=await oe.fromText("error"),k=$}const w=g.select(p).node(),C=b.type,_=w.firstChild,v=_.firstChild,S=b.renderer.getClasses?.(e,b),T=Ce(a,C,S,o),A=document.createElement("style");A.innerHTML=T,_.insertBefore(A,v);try{await b.renderer.draw(e,t,i.n.version,b)}catch(E){throw a.suppressErrorRendering?f():Et.draw(e,t,i.n.version),E}const M=g.select(`${p} svg`),B=b.db.getAccTitle?.(),L=b.db.getAccDescription?.();Fe(C,M,B,L),g.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let F=g.select(p).node().innerHTML;if(h.Rm.debug("config.arrowMarkerAbsolute",a.arrowMarkerAbsolute),F=_e(F,y,(0,c._3)(a.arrowMarkerAbsolute)),y){const t=g.select(p+" svg").node();F=ve(F,t)}else m||(F=J.A.sanitize(F,{ADD_TAGS:ye,ADD_ATTR:me,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(le(),k)throw k;return f(),{diagramType:C,svg:F,bindFunctions:b.db.bindFunctions}},"render");function Be(t={}){const e=(0,c.hH)({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),(0,c.wZ)(e),e?.theme&&e.theme in c.H$?e.themeVariables=c.H$[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=c.H$.default.getThemeVariables(e.themeVariables));const r="object"==typeof e?(0,c.UU)(e):(0,c.Q2)();(0,h.He)(r.logLevel),re()}(0,h.K2)(Be,"initialize");var Le=(0,h.K2)((t,e={})=>{const{code:r}=fe(t);return oe.fromText(r,e)},"getDiagramFromText");function Fe(t,e,r,i){ne(e,t),ae(e,r,i,e.attr("id"))}(0,h.K2)(Fe,"addA11yInfo");var $e=Object.freeze({render:Me,parse:be,getDiagramFromText:Le,initialize:Be,getConfig:c.zj,setConfig:c.Nk,getSiteConfig:c.Q2,updateSiteConfig:c.B6,reset:(0,h.K2)(()=>{(0,c.cL)()},"reset"),globalReset:(0,h.K2)(()=>{(0,c.cL)(c.sb)},"globalReset"),defaultConfig:c.sb});(0,h.He)((0,c.zj)().logLevel),(0,c.cL)((0,c.zj)());var Ee=(0,h.K2)((t,e,r)=>{h.Rm.warn(t),(0,l.dq)(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),De=(0,h.K2)(async function(t={querySelector:".mermaid"}){try{await Oe(t)}catch(e){if((0,l.dq)(e)&&h.Rm.error(e.str),Ye.parseError&&Ye.parseError(e),!t.suppressErrors)throw h.Rm.error("Use the suppressErrors option to suppress these errors"),e}},"run"),Oe=(0,h.K2)(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){const i=$e.getConfig();let n;if(h.Rm.debug((t?"":"No ")+"Callback function found"),r)n=r;else{if(!e)throw new Error("Nodes and querySelector are both undefined");n=document.querySelectorAll(e)}h.Rm.debug(`Found ${n.length} diagrams`),void 0!==i?.startOnLoad&&(h.Rm.debug("Start On Load: "+i?.startOnLoad),$e.updateSiteConfig({startOnLoad:i?.startOnLoad}));const a=new l._K.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed);let o;const s=[];for(const d of Array.from(n)){if(h.Rm.info("Rendering diagram: "+d.id),d.getAttribute("data-processed"))continue;d.setAttribute("data-processed","true");const e=`mermaid-${a.next()}`;o=d.innerHTML,o=(0,u.T)(l._K.entityDecode(o)).trim().replace(//gi,"
    ");const r=l._K.detectInit(o);r&&h.Rm.debug("Detected early reinit: ",r);try{const{svg:r,bindFunctions:i}=await He(e,o,d);d.innerHTML=r,t&&await t(e),i&&i(d)}catch(c){Ee(c,s,Ye.parseError)}}if(s.length>0)throw s[0]},"runThrowsErrors"),Re=(0,h.K2)(function(t){$e.initialize(t)},"initialize"),Ke=(0,h.K2)(async function(t,e,r){h.Rm.warn("mermaid.init is deprecated. Please use run instead."),t&&Re(t);const i={postRenderCallback:r,querySelector:".mermaid"};"string"==typeof e?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await De(i)},"init"),Ie=(0,h.K2)(async(t,{lazyLoad:e=!0}={})=>{re(),(0,c.Xd)(...t),!1===e&&await ie()},"registerExternalDiagrams"),Ne=(0,h.K2)(function(){if(Ye.startOnLoad){const{startOnLoad:t}=$e.getConfig();t&&Ye.run().catch(t=>h.Rm.error("Mermaid failed to initialize",t))}},"contentLoaded");"undefined"!=typeof document&&window.addEventListener("load",Ne,!1);var Pe=(0,h.K2)(function(t){Ye.parseError=t},"setParseErrorHandler"),ze=[],qe=!1,je=(0,h.K2)(async()=>{if(!qe){for(qe=!0;ze.length>0;){const e=ze.shift();if(e)try{await e()}catch(t){h.Rm.error("Error executing queue",t)}}qe=!1}},"executeQueue"),We=(0,h.K2)(async(t,e)=>new Promise((r,i)=>{const n=(0,h.K2)(()=>new Promise((n,a)=>{$e.parse(t,e).then(t=>{n(t),r(t)},t=>{h.Rm.error("Error parsing",t),Ye.parseError?.(t),a(t),i(t)})}),"performCall");ze.push(n),je().catch(i)}),"parse"),He=(0,h.K2)((t,e,r)=>new Promise((i,n)=>{const a=(0,h.K2)(()=>new Promise((a,o)=>{$e.render(t,e,r).then(t=>{a(t),i(t)},t=>{h.Rm.error("Error parsing",t),Ye.parseError?.(t),o(t),n(t)})}),"performCall");ze.push(a),je().catch(n)}),"render"),Ue=(0,h.K2)(()=>Object.keys(c.mW).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),Ye={startOnLoad:!0,mermaidAPI:$e,parse:We,render:He,init:Ke,run:De,registerExternalDiagrams:Ie,registerLayoutLoaders:o.sO,initialize:Re,parseError:void 0,contentLoaded:Ne,setParseErrorHandler:Pe,detectType:c.Ch,registerIconPacks:s.pC,getRegisteredDiagramsMetadata:Ue},Ge=Ye},2387:(t,e,r)=>{"use strict";r.d(e,{Fr:()=>h,GX:()=>c,KX:()=>l,WW:()=>o,ue:()=>a});var i=r(7633),n=r(797),a=(0,n.K2)(t=>{const{handDrawnSeed:e}=(0,i.D7)();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),o=(0,n.K2)(t=>{const e=s([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),s=(0,n.K2)(t=>{const e=new Map;return t.forEach(t=>{const[r,i]=t.split(":");e.set(r.trim(),i?.trim())}),e},"styles2Map"),l=(0,n.K2)(t=>"color"===t||"font-size"===t||"font-family"===t||"font-weight"===t||"font-style"===t||"text-decoration"===t||"text-align"===t||"text-transform"===t||"line-height"===t||"letter-spacing"===t||"word-spacing"===t||"text-shadow"===t||"text-overflow"===t||"white-space"===t||"word-wrap"===t||"word-break"===t||"overflow-wrap"===t||"hyphens"===t,"isLabelStyle"),c=(0,n.K2)(t=>{const{stylesArray:e}=o(t),r=[],i=[],n=[],a=[];return e.forEach(t=>{const e=t[0];l(e)?r.push(t.join(":")+" !important"):(i.push(t.join(":")+" !important"),e.includes("stroke")&&n.push(t.join(":")+" !important"),"fill"===e&&a.push(t.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:i.join(";"),stylesArray:e,borderStyles:n,backgroundStyles:a}},"styles2String"),h=(0,n.K2)((t,e)=>{const{themeVariables:r,handDrawnSeed:n}=(0,i.D7)(),{nodeBorder:a,mainBkg:s}=r,{stylesMap:l}=o(t);return Object.assign({roughness:.7,fill:l.get("fill")||s,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:l.get("stroke")||a,seed:n,strokeWidth:l.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:u(l.get("stroke-dasharray"))},e)},"userNodeOverrides"),u=(0,n.K2)(t=>{if(!t)return[0,0];const e=t.trim().split(/\s+/).map(Number);if(1===e.length){const t=isNaN(e[0])?0:e[0];return[t,t]}return[isNaN(e[0])?0:e[0],isNaN(e[1])?0:e[1]]},"getStrokeDashArray")},2453:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const i={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t),hsl2rgb:({h:t,s:e,l:r},n)=>{if(!e)return 2.55*r;t/=360,e/=100;const a=(r/=100)<.5?r*(1+e):r+e-r*e,o=2*r-a;switch(n){case"r":return 255*i.hue2rgb(o,a,t+1/3);case"g":return 255*i.hue2rgb(o,a,t);case"b":return 255*i.hue2rgb(o,a,t-1/3)}},rgb2hsl:({r:t,g:e,b:r},i)=>{t/=255,e/=255,r/=255;const n=Math.max(t,e,r),a=Math.min(t,e,r),o=(n+a)/2;if("l"===i)return 100*o;if(n===a)return 0;const s=n-a;if("s"===i)return 100*(o>.5?s/(2-n-a):s/(n+a));switch(n){case t:return 60*((e-r)/s+(ee>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},2528:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(4171);const n=function(t,e,r){"__proto__"==e&&i.A?(0,i.A)(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},2789:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return function(e){return t(e)}}},2837:(t,e,r)=>{"use strict";r.d(e,{A:()=>D});var i=r(1754),n=r(2528),a=r(6984);const o=function(t,e,r){(void 0!==r&&!(0,a.A)(t[e],r)||void 0===r&&!(e in t))&&(0,n.A)(t,e,r)};var s=r(4574),l=r(154),c=r(1801),h=r(9759),u=r(8598),d=r(2274),p=r(2049),f=r(3533),g=r(9912),y=r(9610),m=r(3149),x=r(8496),b=r(5647),k=r(3098),w=Function.prototype,C=Object.prototype,_=w.toString,v=C.hasOwnProperty,S=_.call(Object);const T=function(t){if(!(0,k.A)(t)||"[object Object]"!=(0,x.A)(t))return!1;var e=(0,b.A)(t);if(null===e)return!0;var r=v.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&_.call(r)==S};var A=r(3858);const M=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var B=r(2031),L=r(5615);const F=function(t){return(0,B.A)(t,(0,L.A)(t))};const $=function(t,e,r,i,n,a,s){var x=M(t,r),b=M(e,r),k=s.get(b);if(k)o(t,r,k);else{var w=a?a(x,b,r+"",t,e,s):void 0,C=void 0===w;if(C){var _=(0,p.A)(b),v=!_&&(0,g.A)(b),S=!_&&!v&&(0,A.A)(b);w=b,_||v||S?(0,p.A)(x)?w=x:(0,f.A)(x)?w=(0,h.A)(x):v?(C=!1,w=(0,l.A)(b,!0)):S?(C=!1,w=(0,c.A)(b,!0)):w=[]:T(b)||(0,d.A)(b)?(w=x,(0,d.A)(x)?w=F(x):(0,m.A)(x)&&!(0,y.A)(x)||(w=(0,u.A)(b))):C=!1}C&&(s.set(b,w),n(w,b,i,a,s),s.delete(b)),o(t,r,w)}};const E=function t(e,r,n,a,l){e!==r&&(0,s.A)(r,function(s,c){if(l||(l=new i.A),(0,m.A)(s))$(e,r,c,n,t,a,l);else{var h=a?a(M(e,c),s,c+"",e,r,l):void 0;void 0===h&&(h=s),o(e,c,h)}},L.A)};const D=(0,r(3767).A)(function(t,e,r){E(t,e,r)})},2851:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(2528),n=r(6984),a=Object.prototype.hasOwnProperty;const o=function(t,e,r){var o=t[e];a.call(t,e)&&(0,n.A)(o,r)&&(void 0!==r||e in t)||(0,i.A)(t,e,r)}},3098:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return null!=t&&"object"==typeof t}},3122:(t,e,r)=>{"use strict";r.d(e,{Y:()=>n,Z:()=>a});var i=r(2453);const n={};for(let o=0;o<=255;o++)n[o]=i.A.unit.dec2hex(o);const a={ALL:0,RGB:1,HSL:2}},3149:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},3219:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(2453),n=r(4886);const a=t=>{const{r:e,g:r,b:a}=n.A.parse(t),o=.2126*i.A.channel.toLinear(e)+.7152*i.A.channel.toLinear(r)+.0722*i.A.channel.toLinear(a);return i.A.lang.round(o)},o=t=>a(t)>=.5,s=t=>!o(t)},3226:(t,e,r)=>{"use strict";r.d(e,{$C:()=>M,$t:()=>W,C4:()=>U,I5:()=>j,Ib:()=>y,KL:()=>X,Sm:()=>Y,Un:()=>R,_K:()=>H,bH:()=>E,dq:()=>z,pe:()=>c,rY:()=>G,ru:()=>O,sM:()=>T,vU:()=>f,yT:()=>L});var i=r(7633),n=r(797),a=r(6750),o=r(451),s=r(6632),l=r(2837),c="\u200b",h={curveBasis:o.qrM,curveBasisClosed:o.Yu4,curveBasisOpen:o.IA3,curveBumpX:o.Wi0,curveBumpY:o.PGM,curveBundle:o.OEq,curveCardinalClosed:o.olC,curveCardinalOpen:o.IrU,curveCardinal:o.y8u,curveCatmullRomClosed:o.Q7f,curveCatmullRomOpen:o.cVp,curveCatmullRom:o.oDi,curveLinear:o.lUB,curveLinearClosed:o.Lx9,curveMonotoneX:o.nVG,curveMonotoneY:o.uxU,curveNatural:o.Xf2,curveStep:o.GZz,curveStepAfter:o.UPb,curveStepBefore:o.dyv},u=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,d=(0,n.K2)(function(t,e){const r=p(t,/(?:init\b)|(?:initialize\b)/);let n={};if(Array.isArray(r)){const t=r.map(t=>t.args);(0,i.$i)(t),n=(0,i.hH)(n,[...t])}else n=r.args;if(!n)return;let a=(0,i.Ch)(t,e);const o="config";return void 0!==n[o]&&("flowchart-v2"===a&&(a="flowchart"),n[a]=n[o],delete n[o]),n},"detectInit"),p=(0,n.K2)(function(t,e=null){try{const r=new RegExp(`[%]{2}(?![{]${u.source})(?=[}][%]{2}).*\n`,"ig");let a;t=t.trim().replace(r,"").replace(/'/gm,'"'),n.Rm.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const o=[];for(;null!==(a=i.DB.exec(t));)if(a.index===i.DB.lastIndex&&i.DB.lastIndex++,a&&!e||e&&a[1]?.match(e)||e&&a[2]?.match(e)){const t=a[1]?a[1]:a[2],e=a[3]?a[3].trim():a[4]?JSON.parse(a[4].trim()):null;o.push({type:t,args:e})}return 0===o.length?{type:t,args:null}:1===o.length?o[0]:o}catch(r){return n.Rm.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),f=(0,n.K2)(function(t){return t.replace(i.DB,"")},"removeDirectives"),g=(0,n.K2)(function(t,e){for(const[r,i]of e.entries())if(i.match(t))return r;return-1},"isSubstringInArray");function y(t,e){if(!t)return e;const r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return h[r]??e}function m(t,e){const r=t.trim();if(r)return"loose"!==e.securityLevel?(0,a.J)(r):r}(0,n.K2)(y,"interpolateToCurve"),(0,n.K2)(m,"formatUrl");var x=(0,n.K2)((t,...e)=>{const r=t.split("."),i=r.length-1,a=r[i];let o=window;for(let s=0;s{r+=b(t,e),e=t});return _(t,r/2)}function w(t){return 1===t.length?t[0]:k(t)}(0,n.K2)(b,"distance"),(0,n.K2)(k,"traverseEdge"),(0,n.K2)(w,"calcLabelPosition");var C=(0,n.K2)((t,e=2)=>{const r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),_=(0,n.K2)((t,e)=>{let r,i=e;for(const n of t){if(r){const t=b(n,r);if(0===t)return r;if(t=1)return{x:n.x,y:n.y};if(e>0&&e<1)return{x:C((1-e)*r.x+e*n.x,5),y:C((1-e)*r.y+e*n.y,5)}}}r=n}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),v=(0,n.K2)((t,e,r)=>{n.Rm.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());const i=_(e,25),a=t?10:5,o=Math.atan2(e[0].y-i.y,e[0].x-i.x),s={x:0,y:0};return s.x=Math.sin(o)*a+(e[0].x+i.x)/2,s.y=-Math.cos(o)*a+(e[0].y+i.y)/2,s},"calcCardinalityPosition");function S(t,e,r){const i=structuredClone(r);n.Rm.info("our points",i),"start_left"!==e&&"start_right"!==e&&i.reverse();const a=_(i,25+t),o=10+.5*t,s=Math.atan2(i[0].y-a.y,i[0].x-a.x),l={x:0,y:0};return"start_left"===e?(l.x=Math.sin(s+Math.PI)*o+(i[0].x+a.x)/2,l.y=-Math.cos(s+Math.PI)*o+(i[0].y+a.y)/2):"end_right"===e?(l.x=Math.sin(s-Math.PI)*o+(i[0].x+a.x)/2-5,l.y=-Math.cos(s-Math.PI)*o+(i[0].y+a.y)/2-5):"end_left"===e?(l.x=Math.sin(s)*o+(i[0].x+a.x)/2-5,l.y=-Math.cos(s)*o+(i[0].y+a.y)/2-5):(l.x=Math.sin(s)*o+(i[0].x+a.x)/2,l.y=-Math.cos(s)*o+(i[0].y+a.y)/2),l}function T(t){let e="",r="";for(const i of t)void 0!==i&&(i.startsWith("color:")||i.startsWith("text-align:")?r=r+i+";":e=e+i+";");return{style:e,labelStyle:r}}(0,n.K2)(S,"calcTerminalLabelPosition"),(0,n.K2)(T,"getStylesFromArray");var A=0,M=(0,n.K2)(()=>(A++,"id-"+Math.random().toString(36).substr(2,12)+"-"+A),"generateId");function B(t){let e="";const r="0123456789abcdef";for(let i=0;iB(t.length),"random"),F=(0,n.K2)(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),$=(0,n.K2)(function(t,e){const r=e.text.replace(i.Y2.lineBreakRegex," "),[,n]=j(e.fontSize),a=t.append("text");a.attr("x",e.x),a.attr("y",e.y),a.style("text-anchor",e.anchor),a.style("font-family",e.fontFamily),a.style("font-size",n),a.style("font-weight",e.fontWeight),a.attr("fill",e.fill),void 0!==e.class&&a.attr("class",e.class);const o=a.append("tspan");return o.attr("x",e.x+2*e.textMargin),o.attr("fill",e.fill),o.text(r),a},"drawSimpleText"),E=(0,s.A)((t,e,r)=>{if(!t)return t;if(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},r),i.Y2.lineBreakRegex.test(t))return t;const n=t.split(" ").filter(Boolean),a=[];let o="";return n.forEach((t,i)=>{const s=R(`${t} `,r),l=R(o,r);if(s>e){const{hyphenatedStrings:i,remainingWord:n}=D(t,e,"-",r);a.push(o,...i),o=n}else l+s>=e?(a.push(o),o=t):o=[o,t].filter(Boolean).join(" ");i+1===n.length&&a.push(o)}),a.filter(t=>""!==t).join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),D=(0,s.A)((t,e,r="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);const n=[...t],a=[];let o="";return n.forEach((t,s)=>{const l=`${o}${t}`;if(R(l,i)>=e){const t=s+1,e=n.length===t,i=`${l}${r}`;a.push(e?l:i),o=""}else o=l}),{hyphenatedStrings:a,remainingWord:o}},(t,e,r="-",i)=>`${t}${e}${r}${i.fontSize}${i.fontWeight}${i.fontFamily}`);function O(t,e){return I(t,e).height}function R(t,e){return I(t,e).width}(0,n.K2)(O,"calculateTextHeight"),(0,n.K2)(R,"calculateTextWidth");var K,I=(0,s.A)((t,e)=>{const{fontSize:r=12,fontFamily:n="Arial",fontWeight:a=400}=e;if(!t)return{width:0,height:0};const[,s]=j(r),l=["sans-serif",n],h=t.split(i.Y2.lineBreakRegex),u=[],d=(0,o.Ltv)("body");if(!d.remove)return{width:0,height:0,lineHeight:0};const p=d.append("svg");for(const i of l){let t=0;const e={width:0,height:0,lineHeight:0};for(const r of h){const n=F();n.text=r||c;const o=$(p,n).style("font-size",s).style("font-weight",a).style("font-family",i),l=(o._groups||o)[0][0].getBBox();if(0===l.width&&0===l.height)throw new Error("svg element not in render tree");e.width=Math.round(Math.max(e.width,l.width)),t=Math.round(l.height),e.height+=t,e.lineHeight=Math.round(Math.max(e.lineHeight,t))}u.push(e)}p.remove();return u[isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),N=class{constructor(t=!1,e){this.count=0,this.count=e?e.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{(0,n.K2)(this,"InitIDGenerator")}},P=(0,n.K2)(function(t){return K=K||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),K.innerHTML=t,unescape(K.textContent)},"entityDecode");function z(t){return"str"in t}(0,n.K2)(z,"isDetailedError");var q=(0,n.K2)((t,e,r,i)=>{if(!i)return;const n=t.node()?.getBBox();n&&t.append("text").text(i).attr("text-anchor","middle").attr("x",n.x+n.width/2).attr("y",-r).attr("class",e)},"insertTitle"),j=(0,n.K2)(t=>{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");function W(t,e){return(0,l.A)({},t,e)}(0,n.K2)(W,"cleanAndMerge");var H={assignWithDepth:i.hH,wrapLabel:E,calculateTextHeight:O,calculateTextWidth:R,calculateTextDimensions:I,cleanAndMerge:W,detectInit:d,detectDirective:p,isSubstringInArray:g,interpolateToCurve:y,calcLabelPosition:w,calcCardinalityPosition:v,calcTerminalLabelPosition:S,formatUrl:m,getStylesFromArray:T,generateId:M,random:L,runFunc:x,entityDecode:P,insertTitle:q,isLabelCoordinateInPath:V,parseFontSize:j,InitIDGenerator:N},U=(0,n.K2)(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(t){return t.substring(0,t.length-1)}),e=e.replace(/#\w+;/g,function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"\ufb02\xb0\xb0"+e+"\xb6\xdf":"\ufb02\xb0"+e+"\xb6\xdf"}),e},"encodeEntities"),Y=(0,n.K2)(function(t){return t.replace(/\ufb02\xb0\xb0/g,"&#").replace(/\ufb02\xb0/g,"&").replace(/\xb6\xdf/g,";")},"decodeEntities"),G=(0,n.K2)((t,e,{counter:r=0,prefix:i,suffix:n},a)=>a||`${i?`${i}_`:""}${t}_${e}_${r}${n?`_${n}`:""}`,"getEdgeId");function X(t){return t??null}function V(t,e){const r=Math.round(t.x),i=Math.round(t.y),n=e.replace(/(\d+\.\d+)/g,t=>Math.round(parseFloat(t)).toString());return n.includes(r.toString())||n.includes(i.toString())}(0,n.K2)(X,"handleUndefinedAttr"),(0,n.K2)(V,"isLabelCoordinateInPath")},3245:(t,e,r)=>{"use strict";r.d(e,{O:()=>i});var i=(0,r(797).K2)(({flowchart:t})=>{const e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:e+r}},"getSubGraphTitleMargins")},3533:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(8446),n=r(3098);const a=function(t){return(0,n.A)(t)&&(0,i.A)(t)}},3539:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(2453),n=r(3122);const a=class{constructor(){this.type=n.Z.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=n.Z.ALL}is(t){return this.type===t}};const o=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=n.Z.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:r,l:n}=t;void 0===e&&(t.h=i.A.channel.rgb2hsl(t,"h")),void 0===r&&(t.s=i.A.channel.rgb2hsl(t,"s")),void 0===n&&(t.l=i.A.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:r,b:n}=t;void 0===e&&(t.r=i.A.channel.hsl2rgb(t,"r")),void 0===r&&(t.g=i.A.channel.hsl2rgb(t,"g")),void 0===n&&(t.b=i.A.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},3590:(t,e,r)=>{"use strict";r.d(e,{D:()=>o});var i=r(7633),n=r(797),a=r(451),o=(0,n.K2)(t=>{const{securityLevel:e}=(0,i.D7)();let r=(0,a.Ltv)("body");if("sandbox"===e){const e=(0,a.Ltv)(`#i${t}`),i=e.node()?.contentDocument??document;r=(0,a.Ltv)(i.body)}return r.select(`#${t}`)},"selectSvgElement")},3607:(t,e,r)=>{"use strict";r.d(e,{A:()=>h});const i=function(t,e){for(var r=-1,i=Array(t);++r{"use strict";r.d(e,{A:()=>a});var i=r(4326),n=r(6832);const a=function(t){return(0,i.A)(function(e,r){var i=-1,a=r.length,o=a>1?r[a-1]:void 0,s=a>2?r[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&(0,n.A)(r[0],r[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++i{"use strict";r.d(e,{A:()=>u});var i=r(8496),n=r(5254),a=r(3098),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1;const s=function(t){return(0,a.A)(t)&&(0,n.A)(t.length)&&!!o[(0,i.A)(t)]};var l=r(2789),c=r(4841),h=c.A&&c.A.isTypedArray;const u=h?(0,l.A)(h):s},3981:(t,e,r)=>{"use strict";r.d(e,{H:()=>rr,r:()=>er});var i=r(797);function n(t){return null==t}function a(t){return"object"==typeof t&&null!==t}function o(t){return Array.isArray(t)?t:n(t)?[]:[t]}function s(t,e){var r,i,n,a;if(e)for(r=0,i=(a=Object.keys(e)).length;rs&&(e=i-s+(a=" ... ").length),r-i>s&&(r=i+s-(o=" ...").length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+o,pos:i-e+a.length}}function g(t,e){return h.repeat(" ",e-t.length)+t}function y(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var r,i=/\r?\n|\r|\0/g,n=[0],a=[],o=-1;r=i.exec(t.buffer);)a.push(r.index),n.push(r.index+r[0].length),t.position<=r.index&&o<0&&(o=n.length-2);o<0&&(o=n.length-1);var s,l,c="",u=Math.min(t.line+e.linesAfter,a.length).toString().length,d=e.maxLength-(e.indent+u+3);for(s=1;s<=e.linesBefore&&!(o-s<0);s++)l=f(t.buffer,n[o-s],a[o-s],t.position-(n[o]-n[o-s]),d),c=h.repeat(" ",e.indent)+g((t.line-s+1).toString(),u)+" | "+l.str+"\n"+c;for(l=f(t.buffer,n[o],a[o],t.position,d),c+=h.repeat(" ",e.indent)+g((t.line+1).toString(),u)+" | "+l.str+"\n",c+=h.repeat("-",e.indent+u+3+l.pos)+"^\n",s=1;s<=e.linesAfter&&!(o+s>=a.length);s++)l=f(t.buffer,n[o+s],a[o+s],t.position-(n[o]-n[o+s]),d),c+=h.repeat(" ",e.indent)+g((t.line+s+1).toString(),u)+" | "+l.str+"\n";return c.replace(/\n$/,"")}(0,i.K2)(f,"getLine"),(0,i.K2)(g,"padStart"),(0,i.K2)(y,"makeSnippet");var m=y,x=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],b=["scalar","sequence","mapping"];function k(t){var e={};return null!==t&&Object.keys(t).forEach(function(r){t[r].forEach(function(t){e[String(t)]=r})}),e}function w(t,e){if(e=e||{},Object.keys(e).forEach(function(e){if(-1===x.indexOf(e))throw new p('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=k(e.styleAliases||null),-1===b.indexOf(this.kind))throw new p('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}(0,i.K2)(k,"compileStyleAliases"),(0,i.K2)(w,"Type$1");var C=w;function _(t,e){var r=[];return t[e].forEach(function(t){var e=r.length;r.forEach(function(r,i){r.tag===t.tag&&r.kind===t.kind&&r.multi===t.multi&&(e=i)}),r[e]=t}),r}function v(){var t,e,r={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function n(t){t.multi?(r.multi[t.kind].push(t),r.multi.fallback.push(t)):r[t.kind][t.tag]=r.fallback[t.tag]=t}for((0,i.K2)(n,"collectType"),t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:(0,i.K2)(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:(0,i.K2)(function(t){return t.toString(10)},"decimal"),hexadecimal:(0,i.K2)(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),q=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function j(t){return null!==t&&!(!q.test(t)||"_"===t[t.length-1])}function W(t){var e,r;return r="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:r*parseFloat(e,10)}(0,i.K2)(j,"resolveYamlFloat"),(0,i.K2)(W,"constructYamlFloat");var H=/^[-+]?[0-9]+e/;function U(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(h.isNegativeZero(t))return"-0.0";return r=t.toString(10),H.test(r)?r.replace("e",".e"):r}function Y(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||h.isNegativeZero(t))}(0,i.K2)(U,"representYamlFloat"),(0,i.K2)(Y,"isFloat");var G=new C("tag:yaml.org,2002:float",{kind:"scalar",resolve:j,construct:W,predicate:Y,represent:U,defaultStyle:"lowercase"}),X=T.extend({implicit:[L,D,z,G]}),V=X,Z=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Q=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function J(t){return null!==t&&(null!==Z.exec(t)||null!==Q.exec(t))}function tt(t){var e,r,i,n,a,o,s,l,c=0,h=null;if(null===(e=Z.exec(t))&&(e=Q.exec(t)),null===e)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(a=+e[4],o=+e[5],s=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+="0";c=+c}return e[9]&&(h=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(h=-h)),l=new Date(Date.UTC(r,i,n,a,o,s,c)),h&&l.setTime(l.getTime()-h),l}function et(t){return t.toISOString()}(0,i.K2)(J,"resolveYamlTimestamp"),(0,i.K2)(tt,"constructYamlTimestamp"),(0,i.K2)(et,"representYamlTimestamp");var rt=new C("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:J,construct:tt,instanceOf:Date,represent:et});function it(t){return"<<"===t||null===t}(0,i.K2)(it,"resolveYamlMerge");var nt=new C("tag:yaml.org,2002:merge",{kind:"scalar",resolve:it}),at="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";function ot(t){if(null===t)return!1;var e,r,i=0,n=t.length,a=at;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function st(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,a=at,o=0,s=[];for(e=0;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|a.indexOf(i.charAt(e));return 0===(r=n%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===r?(s.push(o>>10&255),s.push(o>>2&255)):12===r&&s.push(o>>4&255),new Uint8Array(s)}function lt(t){var e,r,i="",n=0,a=t.length,o=at;for(e=0;e>18&63],i+=o[n>>12&63],i+=o[n>>6&63],i+=o[63&n]),n=(n<<8)+t[e];return 0===(r=a%3)?(i+=o[n>>18&63],i+=o[n>>12&63],i+=o[n>>6&63],i+=o[63&n]):2===r?(i+=o[n>>10&63],i+=o[n>>4&63],i+=o[n<<2&63],i+=o[64]):1===r&&(i+=o[n>>2&63],i+=o[n<<4&63],i+=o[64],i+=o[64]),i}function ct(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}(0,i.K2)(ot,"resolveYamlBinary"),(0,i.K2)(st,"constructYamlBinary"),(0,i.K2)(lt,"representYamlBinary"),(0,i.K2)(ct,"isBinary");var ht=new C("tag:yaml.org,2002:binary",{kind:"scalar",resolve:ot,construct:st,predicate:ct,represent:lt}),ut=Object.prototype.hasOwnProperty,dt=Object.prototype.toString;function pt(t){if(null===t)return!0;var e,r,i,n,a,o=[],s=t;for(e=0,r=s.length;e>10),56320+(t-65536&1023))}(0,i.K2)(Ft,"_class"),(0,i.K2)($t,"is_EOL"),(0,i.K2)(Et,"is_WHITE_SPACE"),(0,i.K2)(Dt,"is_WS_OR_EOL"),(0,i.K2)(Ot,"is_FLOW_INDICATOR"),(0,i.K2)(Rt,"fromHexCode"),(0,i.K2)(Kt,"escapedHexLen"),(0,i.K2)(It,"fromDecimalCode"),(0,i.K2)(Nt,"simpleEscapeSequence"),(0,i.K2)(Pt,"charFromCodepoint");var zt,qt=new Array(256),jt=new Array(256);for(zt=0;zt<256;zt++)qt[zt]=Nt(zt)?1:0,jt[zt]=Nt(zt);function Wt(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||vt,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Ht(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=m(r),new p(e,r)}function Ut(t,e){throw Ht(t,e)}function Yt(t,e){t.onWarning&&t.onWarning.call(null,Ht(t,e))}(0,i.K2)(Wt,"State$1"),(0,i.K2)(Ht,"generateError"),(0,i.K2)(Ut,"throwError"),(0,i.K2)(Yt,"throwWarning");var Gt={YAML:(0,i.K2)(function(t,e,r){var i,n,a;null!==t.version&&Ut(t,"duplication of %YAML directive"),1!==r.length&&Ut(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&Ut(t,"ill-formed argument of the YAML directive"),n=parseInt(i[1],10),a=parseInt(i[2],10),1!==n&&Ut(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&Yt(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:(0,i.K2)(function(t,e,r){var i,n;2!==r.length&&Ut(t,"TAG directive accepts exactly two arguments"),i=r[0],n=r[1],Bt.test(i)||Ut(t,"ill-formed tag handle (first argument) of the TAG directive"),St.call(t.tagMap,i)&&Ut(t,'there is a previously declared suffix for "'+i+'" tag handle'),Lt.test(n)||Ut(t,"ill-formed tag prefix (second argument) of the TAG directive");try{n=decodeURIComponent(n)}catch(a){Ut(t,"tag prefix is malformed: "+n)}t.tagMap[i]=n},"handleTagDirective")};function Xt(t,e,r,i){var n,a,o,s;if(e1&&(t.result+=h.repeat("\n",e-1))}function re(t,e,r){var i,n,a,o,s,l,c,h,u=t.kind,d=t.result;if(Dt(h=t.input.charCodeAt(t.position))||Ot(h)||35===h||38===h||42===h||33===h||124===h||62===h||39===h||34===h||37===h||64===h||96===h)return!1;if((63===h||45===h)&&(Dt(i=t.input.charCodeAt(t.position+1))||r&&Ot(i)))return!1;for(t.kind="scalar",t.result="",n=a=t.position,o=!1;0!==h;){if(58===h){if(Dt(i=t.input.charCodeAt(t.position+1))||r&&Ot(i))break}else if(35===h){if(Dt(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&te(t)||r&&Ot(h))break;if($t(h)){if(s=t.line,l=t.lineStart,c=t.lineIndent,Jt(t,!1,-1),t.lineIndent>=e){o=!0,h=t.input.charCodeAt(t.position);continue}t.position=a,t.line=s,t.lineStart=l,t.lineIndent=c;break}}o&&(Xt(t,n,a,!1),ee(t,t.line-s),n=a=t.position,o=!1),Et(h)||(a=t.position+1),h=t.input.charCodeAt(++t.position)}return Xt(t,n,a,!1),!!t.result||(t.kind=u,t.result=d,!1)}function ie(t,e){var r,i,n;if(39!==(r=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;0!==(r=t.input.charCodeAt(t.position));)if(39===r){if(Xt(t,i,t.position,!0),39!==(r=t.input.charCodeAt(++t.position)))return!0;i=t.position,t.position++,n=t.position}else $t(r)?(Xt(t,i,n,!0),ee(t,Jt(t,!1,e)),i=n=t.position):t.position===t.lineStart&&te(t)?Ut(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);Ut(t,"unexpected end of the stream within a single quoted scalar")}function ne(t,e){var r,i,n,a,o,s;if(34!==(s=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return Xt(t,r,t.position,!0),t.position++,!0;if(92===s){if(Xt(t,r,t.position,!0),$t(s=t.input.charCodeAt(++t.position)))Jt(t,!1,e);else if(s<256&&qt[s])t.result+=jt[s],t.position++;else if((o=Kt(s))>0){for(n=o,a=0;n>0;n--)(o=Rt(s=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+o:Ut(t,"expected hexadecimal character");t.result+=Pt(a),t.position++}else Ut(t,"unknown escape sequence");r=i=t.position}else $t(s)?(Xt(t,r,i,!0),ee(t,Jt(t,!1,e)),r=i=t.position):t.position===t.lineStart&&te(t)?Ut(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}Ut(t,"unexpected end of the stream within a double quoted scalar")}function ae(t,e){var r,i,n,a,o,s,l,c,h,u,d,p,f=!0,g=t.tag,y=t.anchor,m=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))o=93,c=!1,a=[];else{if(123!==p)return!1;o=125,c=!0,a={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),p=t.input.charCodeAt(++t.position);0!==p;){if(Jt(t,!0,e),(p=t.input.charCodeAt(t.position))===o)return t.position++,t.tag=g,t.anchor=y,t.kind=c?"mapping":"sequence",t.result=a,!0;f?44===p&&Ut(t,"expected the node content, but found ','"):Ut(t,"missed comma between flow collection entries"),d=null,s=l=!1,63===p&&Dt(t.input.charCodeAt(t.position+1))&&(s=l=!0,t.position++,Jt(t,!0,e)),r=t.line,i=t.lineStart,n=t.position,de(t,e,1,!1,!0),u=t.tag,h=t.result,Jt(t,!0,e),p=t.input.charCodeAt(t.position),!l&&t.line!==r||58!==p||(s=!0,p=t.input.charCodeAt(++t.position),Jt(t,!0,e),de(t,e,1,!1,!0),d=t.result),c?Zt(t,a,m,u,h,d,r,i,n):s?a.push(Zt(t,null,m,u,h,d,r,i,n)):a.push(h),Jt(t,!0,e),44===(p=t.input.charCodeAt(t.position))?(f=!0,p=t.input.charCodeAt(++t.position)):f=!1}Ut(t,"unexpected end of the stream within a flow collection")}function oe(t,e){var r,i,n,a,o=1,s=!1,l=!1,c=e,u=0,d=!1;if(124===(a=t.input.charCodeAt(t.position)))i=!1;else{if(62!==a)return!1;i=!0}for(t.kind="scalar",t.result="";0!==a;)if(43===(a=t.input.charCodeAt(++t.position))||45===a)1===o?o=43===a?3:2:Ut(t,"repeat of a chomping mode identifier");else{if(!((n=It(a))>=0))break;0===n?Ut(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?Ut(t,"repeat of an indentation width identifier"):(c=e+n-1,l=!0)}if(Et(a)){do{a=t.input.charCodeAt(++t.position)}while(Et(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!$t(a)&&0!==a)}for(;0!==a;){for(Qt(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!l||t.lineIndentc&&(c=t.lineIndent),$t(a))u++;else{if(t.lineIndente)&&0!==i)Ut(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(m&&(o=t.line,s=t.lineStart,l=t.position),de(t,e,4,!0,n)&&(m?g=t.result:y=t.result),m||(Zt(t,d,p,f,g,y,o,s,l),f=g=y=null),Jt(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==c)Ut(t,"bad indentation of a mapping entry");else if(t.lineIndente?f=1:t.lineIndent===e?f=0:t.lineIndente?f=1:t.lineIndent===e?f=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),l=0,c=t.implicitTypes.length;l"),null!==t.result&&u.kind!==t.kind&&Ut(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result,t.tag)?(t.result=u.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Ut(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||y}function pe(t){var e,r,i,n,a=t.position,o=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(n=t.input.charCodeAt(t.position))&&(Jt(t,!0,-1),n=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==n));){for(o=!0,n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!Dt(n);)n=t.input.charCodeAt(++t.position);for(i=[],(r=t.input.slice(e,t.position)).length<1&&Ut(t,"directive name must not be less than one character in length");0!==n;){for(;Et(n);)n=t.input.charCodeAt(++t.position);if(35===n){do{n=t.input.charCodeAt(++t.position)}while(0!==n&&!$t(n));break}if($t(n))break;for(e=t.position;0!==n&&!Dt(n);)n=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==n&&Qt(t),St.call(Gt,r)?Gt[r](t,r,i):Yt(t,'unknown document directive "'+r+'"')}Jt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,Jt(t,!0,-1)):o&&Ut(t,"directives end mark is expected"),de(t,t.lineIndent-1,4,!1,!0),Jt(t,!0,-1),t.checkLineBreaks&&At.test(t.input.slice(a,t.position))&&Yt(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&te(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,Jt(t,!0,-1)):t.position=55296&&i<=56319&&e+1=56320&&r<=57343?1024*(i-55296)+r-56320+65536:i}function Ke(t){return/^\n* /.test(t)}(0,i.K2)(Te,"State"),(0,i.K2)(Ae,"indentString"),(0,i.K2)(Me,"generateNextLine"),(0,i.K2)(Be,"testImplicitResolving"),(0,i.K2)(Le,"isWhitespace"),(0,i.K2)(Fe,"isPrintable"),(0,i.K2)($e,"isNsCharOrWhitespace"),(0,i.K2)(Ee,"isPlainSafe"),(0,i.K2)(De,"isPlainSafeFirst"),(0,i.K2)(Oe,"isPlainSafeLast"),(0,i.K2)(Re,"codePointAt"),(0,i.K2)(Ke,"needIndentIndicator");function Ie(t,e,r,i,n,a,o,s){var l,c=0,h=null,u=!1,d=!1,p=-1!==i,f=-1,g=De(Re(t,0))&&Oe(Re(t,t.length-1));if(e||o)for(l=0;l=65536?l+=2:l++){if(!Fe(c=Re(t,l)))return 5;g=g&&Ee(c,h,s),h=c}else{for(l=0;l=65536?l+=2:l++){if(10===(c=Re(t,l)))u=!0,p&&(d=d||l-f-1>i&&" "!==t[f+1],f=l);else if(!Fe(c))return 5;g=g&&Ee(c,h,s),h=c}d=d||p&&l-f-1>i&&" "!==t[f+1]}return u||d?r>9&&Ke(t)?5:o?2===a?5:2:d?4:3:!g||o||n(t)?2===a?5:2:1}function Ne(t,e,r,n,a){t.dump=function(){if(0===e.length)return 2===t.quotingType?'""':"''";if(!t.noCompatMode&&(-1!==Ce.indexOf(e)||_e.test(e)))return 2===t.quotingType?'"'+e+'"':"'"+e+"'";var o=t.indent*Math.max(1,r),s=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),l=n||t.flowLevel>-1&&r>=t.flowLevel;function c(e){return Be(t,e)}switch((0,i.K2)(c,"testAmbiguity"),Ie(e,l,t.indent,s,c,t.quotingType,t.forceQuotes&&!n,a)){case 1:return e;case 2:return"'"+e.replace(/'/g,"''")+"'";case 3:return"|"+Pe(e,t.indent)+ze(Ae(e,o));case 4:return">"+Pe(e,t.indent)+ze(Ae(qe(e,s),o));case 5:return'"'+We(e)+'"';default:throw new p("impossible error: invalid scalar style")}}()}function Pe(t,e){var r=Ke(t)?String(e):"",i="\n"===t[t.length-1];return r+(i&&("\n"===t[t.length-2]||"\n"===t)?"+":i?"":"-")+"\n"}function ze(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function qe(t,e){for(var r,i,n,a=/(\n+)([^\n]*)/g,o=(r=-1!==(r=t.indexOf("\n"))?r:t.length,a.lastIndex=r,je(t.slice(0,r),e)),s="\n"===t[0]||" "===t[0];n=a.exec(t);){var l=n[1],c=n[2];i=" "===c[0],o+=l+(s||i||""===c?"":"\n")+je(c,e),s=i}return o}function je(t,e){if(""===t||" "===t[0])return t;for(var r,i,n=/ [^ ]/g,a=0,o=0,s=0,l="";r=n.exec(t);)(s=r.index)-a>e&&(i=o>a?o:s,l+="\n"+t.slice(a,i),a=i+1),o=s;return l+="\n",t.length-a>e&&o>a?l+=t.slice(a,o)+"\n"+t.slice(o+1):l+=t.slice(a),l.slice(1)}function We(t){for(var e,r="",i=0,n=0;n=65536?n+=2:n++)i=Re(t,n),!(e=we[i])&&Fe(i)?(r+=t[n],i>=65536&&(r+=t[n+1])):r+=e||Se(i);return r}function He(t,e,r){var i,n,a,o="",s=t.tag;for(i=0,n=r.length;i1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Ve(t,e,o,!1,!1)&&(l+=s+=t.dump));t.tag=c,t.dump="{"+l+"}"}function Ge(t,e,r,i){var n,a,o,s,l,c,h="",u=t.tag,d=Object.keys(r);if(!0===t.sortKeys)d.sort();else if("function"==typeof t.sortKeys)d.sort(t.sortKeys);else if(t.sortKeys)throw new p("sortKeys must be a boolean or a function");for(n=0,a=d.length;n1024)&&(t.dump&&10===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,l&&(c+=Me(t,e)),Ve(t,e+1,s,!0,l)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=":":c+=": ",h+=c+=t.dump));t.tag=u,t.dump=h||"{}"}function Xe(t,e,r){var i,n,a,o,s,l;for(a=0,o=(n=r?t.explicitTypes:t.implicitTypes).length;a tag resolver accepts not "'+l+'" style');i=s.represent[l](e,l)}t.dump=i}return!0}return!1}function Ve(t,e,r,i,n,a,o){t.tag=null,t.dump=r,Xe(t,r,!1)||Xe(t,r,!0);var s,l=xe.call(t.dump),c=i;i&&(i=t.flowLevel<0||t.flowLevel>e);var h,u,d="[object Object]"===l||"[object Array]"===l;if(d&&(u=-1!==(h=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||u||2!==t.indent&&e>0)&&(n=!1),u&&t.usedDuplicates[h])t.dump="*ref_"+h;else{if(d&&u&&!t.usedDuplicates[h]&&(t.usedDuplicates[h]=!0),"[object Object]"===l)i&&0!==Object.keys(t.dump).length?(Ge(t,e,t.dump,n),u&&(t.dump="&ref_"+h+t.dump)):(Ye(t,e,t.dump),u&&(t.dump="&ref_"+h+" "+t.dump));else if("[object Array]"===l)i&&0!==t.dump.length?(t.noArrayIndent&&!o&&e>0?Ue(t,e-1,t.dump,n):Ue(t,e,t.dump,n),u&&(t.dump="&ref_"+h+t.dump)):(He(t,e,t.dump),u&&(t.dump="&ref_"+h+" "+t.dump));else{if("[object String]"!==l){if("[object Undefined]"===l)return!1;if(t.skipInvalid)return!1;throw new p("unacceptable kind of an object to dump "+l)}"?"!==t.tag&&Ne(t,t.dump,e,a,c)}null!==t.tag&&"?"!==t.tag&&(s=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),s="!"===t.tag[0]?"!"+s:"tag:yaml.org,2002:"===s.slice(0,18)?"!!"+s.slice(18):"!<"+s+">",t.dump=s+" "+t.dump)}return!0}function Ze(t,e){var r,i,n=[],a=[];for(Qe(t,n,a),r=0,i=a.length;r{"use strict";r.d(e,{A:()=>i});const i=r(1917).A.Uint8Array},4171:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(8744);const n=function(){try{var t=(0,i.A)(Object,"defineProperty");return t({},"",{}),t}catch(e){}}()},4326:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(9008),n=r(6875),a=r(7525);const o=function(t,e){return(0,a.A)((0,n.A)(t,e,i.A),t+"")}},4353:function(t){t.exports=function(){"use strict";var t=1e3,e=6e4,r=36e5,i="millisecond",n="second",a="minute",o="hour",s="day",l="week",c="month",h="quarter",u="year",d="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,y={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],r=t%100;return"["+t+(e[(r-20)%10]||e[r]||e[0])+"]"}},m=function(t,e,r){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(r)+t},x={s:m,z:function(t){var e=-t.utcOffset(),r=Math.abs(e),i=Math.floor(r/60),n=r%60;return(e<=0?"+":"-")+m(i,2,"0")+":"+m(n,2,"0")},m:function t(e,r){if(e.date()1)return t(o[0])}else{var s=e.name;k[s]=e,n=s}return!i&&n&&(b=n),n||!i&&b},v=function(t,e){if(C(t))return t.clone();var r="object"==typeof e?e:{};return r.date=t,r.args=arguments,new T(r)},S=x;S.l=_,S.i=C,S.w=function(t,e){return v(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var T=function(){function y(t){this.$L=_(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[w]=!0}var m=y.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,r=t.utc;if(null===e)return new Date(NaN);if(S.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(f);if(i){var n=i[2]-1||0,a=(i[7]||"0").substring(0,3);return r?new Date(Date.UTC(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return S},m.isValid=function(){return!(this.$d.toString()===p)},m.isSame=function(t,e){var r=v(t);return this.startOf(e)<=r&&r<=this.endOf(e)},m.isAfter=function(t,e){return v(t){"use strict";r.d(e,{A:()=>i});const i=function(t){return function(e,r,i){for(var n=-1,a=Object(e),o=i(e),s=o.length;s--;){var l=o[t?s:++n];if(!1===r(a[l],l,a))break}return e}}()},4841:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(2136),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=n&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===n&&i.A.process;const s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}()},4886:(t,e,r)=>{"use strict";r.d(e,{A:()=>g});var i=r(3539),n=r(3122);const a={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(a.re);if(!e)return;const r=e[1],n=parseInt(r,16),o=r.length,s=o%4==0,l=o>4,c=l?1:17,h=l?8:4,u=s?0:-1,d=l?255:15;return i.A.set({r:(n>>h*(u+3)&d)*c,g:(n>>h*(u+2)&d)*c,b:(n>>h*(u+1)&d)*c,a:s?(n&d)*c/255:1},t)},stringify:t=>{const{r:e,g:r,b:i,a:a}=t;return a<1?`#${n.Y[Math.round(e)]}${n.Y[Math.round(r)]}${n.Y[Math.round(i)]}${n.Y[Math.round(255*a)]}`:`#${n.Y[Math.round(e)]}${n.Y[Math.round(r)]}${n.Y[Math.round(i)]}`}},o=a;var s=r(2453);const l={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(l.hueRe);if(e){const[,t,r]=e;switch(r){case"grad":return s.A.channel.clamp.h(.9*parseFloat(t));case"rad":return s.A.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return s.A.channel.clamp.h(360*parseFloat(t))}}return s.A.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const r=t.match(l.re);if(!r)return;const[,n,a,o,c,h]=r;return i.A.set({h:l._hue2deg(n),s:s.A.channel.clamp.s(parseFloat(a)),l:s.A.channel.clamp.l(parseFloat(o)),a:c?s.A.channel.clamp.a(h?parseFloat(c)/100:parseFloat(c)):1},t)},stringify:t=>{const{h:e,s:r,l:i,a:n}=t;return n<1?`hsla(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(i)}%, ${n})`:`hsl(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(i)}%)`}},c=l,h={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=h.colors[t];if(e)return o.parse(e)},stringify:t=>{const e=o.stringify(t);for(const r in h.colors)if(h.colors[r]===e)return r}},u=h,d={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const r=t.match(d.re);if(!r)return;const[,n,a,o,l,c,h,u,p]=r;return i.A.set({r:s.A.channel.clamp.r(a?2.55*parseFloat(n):parseFloat(n)),g:s.A.channel.clamp.g(l?2.55*parseFloat(o):parseFloat(o)),b:s.A.channel.clamp.b(h?2.55*parseFloat(c):parseFloat(c)),a:u?s.A.channel.clamp.a(p?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{r:e,g:r,b:i,a:n}=t;return n<1?`rgba(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(i)}, ${s.A.lang.round(n)})`:`rgb(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(i)})`}},p=d,f={format:{keyword:h,hex:o,rgb:d,rgba:d,hsl:l,hsla:l},parse:t=>{if("string"!=typeof t)return t;const e=o.parse(t)||p.parse(t)||c.parse(t)||u.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(n.Z.HSL)||void 0===t.data.r?c.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?p.stringify(t):o.stringify(t)},g=f},5164:(t,e,r)=>{"use strict";r.d(e,{IU:()=>x,Jo:()=>L,T_:()=>C,g0:()=>R,jP:()=>k});var i=r(8698),n=r(5894),a=r(3245),o=r(2387),s=r(92),l=r(3226),c=r(7633),h=r(797),u=r(451),d=r(9893),p=(0,h.K2)((t,e,r,i,n,a)=>{e.arrowTypeStart&&g(t,"start",e.arrowTypeStart,r,i,n,a),e.arrowTypeEnd&&g(t,"end",e.arrowTypeEnd,r,i,n,a)},"addEdgeMarkers"),f={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},g=(0,h.K2)((t,e,r,i,n,a,o)=>{const s=f[r];if(!s)return void h.Rm.warn(`Unknown arrow type: ${r}`);const l=`${n}_${a}-${s.type}${"start"===e?"Start":"End"}`;if(o&&""!==o.trim()){const r=`${l}_${o.replace(/[^\dA-Za-z]/g,"_")}`;if(!document.getElementById(r)){const t=document.getElementById(l);if(t){const e=t.cloneNode(!0);e.id=r;e.querySelectorAll("path, circle, line").forEach(t=>{t.setAttribute("stroke",o),s.fill&&t.setAttribute("fill",o)}),t.parentNode?.appendChild(e)}}t.attr(`marker-${e}`,`url(${i}#${r})`)}else t.attr(`marker-${e}`,`url(${i}#${l})`)},"addEdgeMarker"),y=new Map,m=new Map,x=(0,h.K2)(()=>{y.clear(),m.clear()},"clear"),b=(0,h.K2)(t=>t?t.reduce((t,e)=>t+";"+e,""):"","getLabelStyles"),k=(0,h.K2)(async(t,e)=>{let r=(0,c._3)((0,c.D7)().flowchart.htmlLabels);const{labelStyles:i}=(0,o.GX)(e);e.labelStyle=i;const a=await(0,s.GZ)(t,e.label,{style:e.labelStyle,useHtmlLabels:r,addSvgBackground:!0,isNode:!1});h.Rm.info("abc82",e,e.labelType);const l=t.insert("g").attr("class","edgeLabel"),d=l.insert("g").attr("class","label").attr("data-id",e.id);d.node().appendChild(a);let p,f=a.getBBox();if(r){const t=a.children[0],e=(0,u.Ltv)(a);f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}if(d.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),y.set(e.id,l),e.width=f.width,e.height=f.height,e.startLabelLeft){const r=await(0,n.DA)(e.startLabelLeft,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),m.get(e.id)||m.set(e.id,{}),m.get(e.id).startLeft=i,w(p,e.startLabelLeft)}if(e.startLabelRight){const r=await(0,n.DA)(e.startLabelRight,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=i.node().appendChild(r),a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),m.get(e.id)||m.set(e.id,{}),m.get(e.id).startRight=i,w(p,e.startLabelRight)}if(e.endLabelLeft){const r=await(0,n.DA)(e.endLabelLeft,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),i.node().appendChild(r),m.get(e.id)||m.set(e.id,{}),m.get(e.id).endLeft=i,w(p,e.endLabelLeft)}if(e.endLabelRight){const r=await(0,n.DA)(e.endLabelRight,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),i.node().appendChild(r),m.get(e.id)||m.set(e.id,{}),m.get(e.id).endRight=i,w(p,e.endLabelRight)}return a},"insertEdgeLabel");function w(t,e){(0,c.D7)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,h.K2)(w,"setTerminalWidth");var C=(0,h.K2)((t,e)=>{h.Rm.debug("Moving label abc88 ",t.id,t.label,y.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath;const i=(0,c.D7)(),{subGraphTitleTotalMargin:n}=(0,a.O)(i);if(t.label){const i=y.get(t.id);let a=t.x,o=t.y;if(r){const i=l._K.calcLabelPosition(r);h.Rm.debug("Moving label "+t.label+" from (",a,",",o,") to (",i.x,",",i.y,") abc88"),e.updatedPath&&(a=i.x,o=i.y)}i.attr("transform",`translate(${a}, ${o+n/2})`)}if(t.startLabelLeft){const e=m.get(t.id).startLeft;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.startLabelRight){const e=m.get(t.id).startRight;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.endLabelLeft){const e=m.get(t.id).endLeft;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.endLabelRight){const e=m.get(t.id).endRight;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}},"positionEdgeLabel"),_=(0,h.K2)((t,e)=>{const r=t.x,i=t.y,n=Math.abs(e.x-r),a=Math.abs(e.y-i),o=t.width/2,s=t.height/2;return n>=o||a>=s},"outsideNode"),v=(0,h.K2)((t,e,r)=>{h.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const i=t.x,n=t.y,a=Math.abs(i-r.x),o=t.width/2;let s=r.xMath.abs(i-e.x)*l){let t=r.y{h.Rm.warn("abc88 cutPathAtIntersect",t,e);let r=[],i=t[0],n=!1;return t.forEach(t=>{if(h.Rm.info("abc88 checking point",t,e),_(e,t)||n)h.Rm.warn("abc88 outside",t,i),i=t,n||r.push(t);else{const a=v(e,i,t);h.Rm.debug("abc88 inside",t,i,a),h.Rm.debug("abc88 intersection",a,e);let o=!1;r.forEach(t=>{o=o||t.x===a.x&&t.y===a.y}),r.some(t=>t.x===a.x&&t.y===a.y)?h.Rm.warn("abc88 no intersect",a,r):r.push(a),n=!0}}),h.Rm.debug("returning points",r),r},"cutPathAtIntersect");function T(t){const e=[],r=[];for(let i=1;i5&&Math.abs(a.y-n.y)>5||n.y===a.y&&a.x===o.x&&Math.abs(a.x-n.x)>5&&Math.abs(a.y-o.y)>5)&&(e.push(a),r.push(i))}return{cornerPoints:e,cornerPointPositions:r}}(0,h.K2)(T,"extractCornerPoints");var A=(0,h.K2)(function(t,e,r){const i=e.x-t.x,n=e.y-t.y,a=r/Math.sqrt(i*i+n*n);return{x:e.x-a*i,y:e.y-a*n}},"findAdjacentPoint"),M=(0,h.K2)(function(t){const{cornerPointPositions:e}=T(t),r=[];for(let i=0;i10&&Math.abs(n.y-e.y)>=10){h.Rm.debug("Corner point fixing",Math.abs(n.x-e.x),Math.abs(n.y-e.y));const t=5;d=a.x===o.x?{x:l<0?o.x-t+u:o.x+t-u,y:c<0?o.y-u:o.y+u}:{x:l<0?o.x-u:o.x+u,y:c<0?o.y-t+u:o.y+t-u}}else h.Rm.debug("Corner point skipping fixing",Math.abs(n.x-e.x),Math.abs(n.y-e.y));r.push(d,s)}else r.push(t[i]);return r},"fixCorners"),B=(0,h.K2)((t,e,r)=>{const i=t-e-r,n=Math.floor(i/4);return`0 ${e} ${Array(n).fill("2 2").join(" ")} ${r}`},"generateDashArray"),L=(0,h.K2)(function(t,e,r,n,a,s,f,g=!1){const{handDrawnSeed:y}=(0,c.D7)();let m=e.points,x=!1;const b=a;var k=s;const w=[];for(const i in e.cssCompiledStyles)(0,o.KX)(i)||w.push(e.cssCompiledStyles[i]);h.Rm.debug("UIO intersect check",e.points,k.x,b.x),k.intersect&&b.intersect&&!g&&(m=m.slice(1,e.points.length-1),m.unshift(b.intersect(m[0])),h.Rm.debug("Last point UIO",e.start,"--\x3e",e.end,m[m.length-1],k,k.intersect(m[m.length-1])),m.push(k.intersect(m[m.length-1])));const C=btoa(JSON.stringify(m));e.toCluster&&(h.Rm.info("to cluster abc88",r.get(e.toCluster)),m=S(e.points,r.get(e.toCluster).node),x=!0),e.fromCluster&&(h.Rm.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(m,null,2)),m=S(m.reverse(),r.get(e.fromCluster).node).reverse(),x=!0);let _=m.filter(t=>!Number.isNaN(t.y));_=M(_);let v=u.qrM;switch(v=u.lUB,e.curve){case"linear":v=u.lUB;break;case"basis":default:v=u.qrM;break;case"cardinal":v=u.y8u;break;case"bumpX":v=u.Wi0;break;case"bumpY":v=u.PGM;break;case"catmullRom":v=u.oDi;break;case"monotoneX":v=u.nVG;break;case"monotoneY":v=u.uxU;break;case"natural":v=u.Xf2;break;case"step":v=u.GZz;break;case"stepAfter":v=u.UPb;break;case"stepBefore":v=u.dyv}const{x:T,y:A}=(0,i.RI)(e),L=(0,u.n8j)().x(T).y(A).curve(v);let $,D;switch(e.thickness){case"normal":default:$="edge-thickness-normal";break;case"thick":$="edge-thickness-thick";break;case"invisible":$="edge-thickness-invisible"}switch(e.pattern){case"solid":default:$+=" edge-pattern-solid";break;case"dotted":$+=" edge-pattern-dotted";break;case"dashed":$+=" edge-pattern-dashed"}let O="rounded"===e.curve?F(E(_,e),5):L(_);const R=Array.isArray(e.style)?e.style:[e.style];let K=R.find(t=>t?.startsWith("stroke:")),I=!1;if("handDrawn"===e.look){const r=d.A.svg(t);Object.assign([],_);const i=r.path(O,{roughness:.3,seed:y});$+=" transition",D=(0,u.Ltv)(i).select("path").attr("id",e.id).attr("class"," "+$+(e.classes?" "+e.classes:"")).attr("style",R?R.reduce((t,e)=>t+";"+e,""):"");let n=D.attr("d");D.attr("d",n),t.node().appendChild(D.node())}else{const r=w.join(";"),n=R?R.reduce((t,e)=>t+e+";",""):"";let a="";e.animate&&(a=" edge-animation-fast"),e.animation&&(a=" edge-animation-"+e.animation);const o=(r?r+";"+n+";":n)+";"+(R?R.reduce((t,e)=>t+";"+e,""):"");D=t.append("path").attr("d",O).attr("id",e.id).attr("class"," "+$+(e.classes?" "+e.classes:"")+(a??"")).attr("style",o),K=o.match(/stroke:([^;]+)/)?.[1],I=!0===e.animate||!!e.animation||r.includes("animation");const s=D.node(),l="function"==typeof s.getTotalLength?s.getTotalLength():0,c=i.Nq[e.arrowTypeStart]||0,h=i.Nq[e.arrowTypeEnd]||0;if("neo"===e.look&&!I){const t=`stroke-dasharray: ${"dotted"===e.pattern||"dashed"===e.pattern?B(l,c,h):`0 ${c} ${l-c-h} ${h}`}; stroke-dashoffset: 0;`;D.attr("style",t+D.attr("style"))}}D.attr("data-edge",!0),D.attr("data-et","edge"),D.attr("data-id",e.id),D.attr("data-points",C),e.showPoints&&_.forEach(e=>{t.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",e.x).attr("cy",e.y)});let N="";((0,c.D7)().flowchart.arrowMarkerAbsolute||(0,c.D7)().state.arrowMarkerAbsolute)&&(N=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,N=N.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),h.Rm.info("arrowTypeStart",e.arrowTypeStart),h.Rm.info("arrowTypeEnd",e.arrowTypeEnd),p(D,e,N,f,n,K);const P=m[Math.floor(m.length/2)];l._K.isLabelCoordinateInPath(P,D.attr("d"))||(x=!0);let z={};return x&&(z.updatedPath=m),z.originalPath=e.points,z},"insertEdge");function F(t,e){if(t.length<2)return"";let r="";const i=t.length,n=1e-5;for(let a=0;a({...t}));if(t.length>=2&&i.hq[e.arrowTypeStart]){const n=i.hq[e.arrowTypeStart],a=t[0],o=t[1],{angle:s}=$(a,o),l=n*Math.cos(s),c=n*Math.sin(s);r[0].x=a.x+l,r[0].y=a.y+c}const n=t.length;if(n>=2&&i.hq[e.arrowTypeEnd]){const a=i.hq[e.arrowTypeEnd],o=t[n-1],s=t[n-2],{angle:l}=$(s,o),c=a*Math.cos(l),h=a*Math.sin(l);r[n-1].x=o.x-c,r[n-1].y=o.y-h}return r}(0,h.K2)(F,"generateRoundedPath"),(0,h.K2)($,"calculateDeltaAndAngle"),(0,h.K2)(E,"applyMarkerOffsetsToPoints");var D=(0,h.K2)((t,e,r,i)=>{e.forEach(e=>{O[e](t,r,i)})},"insertMarkers"),O={extension:(0,h.K2)((t,e,r)=>{h.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:(0,h.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:(0,h.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:(0,h.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),only_one:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),zero_or_one:(0,h.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),i.append("path").attr("d","M9,0 L9,18");const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),one_or_more:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),zero_or_more:(0,h.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),i.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),requirement_arrow:(0,h.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d","M0,0\n L20,10\n M20,10\n L0,20")},"requirement_arrow"),requirement_contains:(0,h.K2)((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");i.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),i.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),i.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains")},R=D},5254:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},5263:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(5635);const n=(t,e)=>(0,i.A)(t,"l",-e)},5353:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=/^(?:0|[1-9]\d*)$/;const n=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&i.test(t))&&t>-1&&t%1==0&&t{"use strict";r.d(e,{A:()=>s});var i=r(2453),n=r(3539),a=r(4886),o=r(8232);const s=(t,e,r=0,s=1)=>{if("number"!=typeof t)return(0,o.A)(t,{a:e});const l=n.A.set({r:i.A.channel.clamp.r(t),g:i.A.channel.clamp.g(e),b:i.A.channel.clamp.b(r),a:i.A.channel.clamp.a(s)});return a.A.stringify(l)}},5615:(t,e,r)=>{"use strict";r.d(e,{A:()=>h});var i=r(3607),n=r(3149),a=r(7271);const o=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e};var s=Object.prototype.hasOwnProperty;const l=function(t){if(!(0,n.A)(t))return o(t);var e=(0,a.A)(t),r=[];for(var i in t)("constructor"!=i||!e&&s.call(t,i))&&r.push(i);return r};var c=r(8446);const h=function(t){return(0,c.A)(t)?(0,i.A)(t,!0):l(t)}},5635:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(2453),n=r(4886);const a=(t,e,r)=>{const a=n.A.parse(t),o=a[e],s=i.A.channel.clamp[e](o+r);return o!==s&&(a[e]=s),n.A.stringify(a)}},5647:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=(0,r(367).A)(Object.getPrototypeOf,Object)},5894:(t,e,r)=>{"use strict";r.d(e,{DA:()=>w,IU:()=>L,U:()=>B,U7:()=>Te,U_:()=>Me,Zk:()=>u,aP:()=>_e,gh:()=>Ae,lC:()=>p,on:()=>Se});var i=r(3245),n=r(2387),a=r(92),o=r(3226),s=r(7633),l=r(797),c=r(451),h=r(9893),u=(0,l.K2)(async(t,e,r)=>{let i;const n=e.useHtmlLabels||(0,s._3)((0,s.D7)()?.htmlLabels);i=r||"node default";const h=t.insert("g").attr("class",i).attr("id",e.domId||e.id),u=h.insert("g").attr("class","label").attr("style",(0,o.KL)(e.labelStyle));let d;d=void 0===e.label?"":"string"==typeof e.label?e.label:e.label[0];const p=await(0,a.GZ)(u,(0,s.jZ)((0,o.Sm)(d),(0,s.D7)()),{useHtmlLabels:n,width:e.width||(0,s.D7)().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img});let f=p.getBBox();const g=(e?.padding??0)/2;if(n){const t=p.children[0],e=(0,c.Ltv)(p),r=t.getElementsByTagName("img");if(r){const t=""===d.replace(/]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function i(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=(0,s.D7)().fontSize?(0,s.D7)().fontSize:window.getComputedStyle(document.body).fontSize,r=5,[i=s.UI.fontSize]=(0,o.I5)(t),n=i*r+"px";e.style.minWidth=n,e.style.maxWidth=n}else e.style.width="100%";r(e)}(0,l.K2)(i,"setupImage"),setTimeout(()=>{e.complete&&i()}),e.addEventListener("error",i),e.addEventListener("load",i)})))}f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}return n?u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):u.attr("transform","translate(0, "+-f.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:h,bbox:f,halfPadding:g,label:u}},"labelHelper"),d=(0,l.K2)(async(t,e,r)=>{const i=r.useHtmlLabels||(0,s._3)((0,s.D7)()?.flowchart?.htmlLabels),n=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),l=await(0,a.GZ)(n,(0,s.jZ)((0,o.Sm)(e),(0,s.D7)()),{useHtmlLabels:i,width:r.width||(0,s.D7)()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img});let h=l.getBBox();const u=r.padding/2;if((0,s._3)((0,s.D7)()?.flowchart?.htmlLabels)){const t=l.children[0],e=(0,c.Ltv)(l);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}return i?n.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):n.attr("transform","translate(0, "+-h.height/2+")"),r.centerLabel&&n.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),n.insert("rect",":first-child"),{shapeSvg:t,bbox:h,halfPadding:u,label:n}},"insertLabel"),p=(0,l.K2)((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),f=(0,l.K2)((t,e)=>("handDrawn"===t.look?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");function g(t){const e=t.map((t,e)=>`${0===e?"M":"L"}${t.x},${t.y}`);return e.push("Z"),e.join(" ")}function y(t,e,r,i,n,a){const o=[],s=r-t,l=i-e,c=s/a,h=2*Math.PI/c,u=e+l/2;for(let d=0;d<=50;d++){const e=t+d/50*s,r=u+n*Math.sin(h*(e-t));o.push({x:e,y:r})}return o}function m(t,e,r,i,n,a){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;c{var r,i,n=t.x,a=t.y,o=e.x-n,s=e.y-a,l=t.width/2,c=t.height/2;return Math.abs(s)*l>Math.abs(o)*c?(s<0&&(c=-c),r=0===s?0:c*o/s,i=c):(o<0&&(l=-l),r=l,i=0===o?0:l*s/o),{x:n+r,y:a+i}},"intersectRect");function b(t,e){e&&t.attr("style",e)}async function k(t){const e=(0,c.Ltv)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),i=(0,s.D7)();let n=t.label;t.label&&(0,s.Wi)(t.label)&&(n=await(0,s.dj)(t.label.replace(s.Y2.lineBreakRegex,"\n"),i));const a='"+n+"";return r.html((0,s.jZ)(a,i)),b(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}(0,l.K2)(b,"applyStyle"),(0,l.K2)(k,"addHtmlLabel");var w=(0,l.K2)(async(t,e,r,i)=>{let n=t||"";if("object"==typeof n&&(n=n[0]),(0,s._3)((0,s.D7)().flowchart.htmlLabels)){n=n.replace(/\\n|\n/g,"
    "),l.Rm.info("vertexText"+n);const t={isNode:i,label:(0,o.Sm)(n).replace(/fa[blrs]?:fa-[\w-]+/g,t=>``),labelStyle:e?e.replace("fill:","color:"):e};return await k(t)}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let i=[];i="string"==typeof n?n.split(/\\n|\n|/gi):Array.isArray(n)?n:[];for(const e of i){const i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),r?i.setAttribute("class","title-row"):i.setAttribute("class","row"),i.textContent=e.trim(),t.appendChild(i)}return t}},"createLabel"),C=(0,l.K2)((t,e,r,i,n)=>["M",t+n,e,"H",t+r-n,"A",n,n,0,0,1,t+r,e+n,"V",e+i-n,"A",n,n,0,0,1,t+r-n,e+i,"H",t+n,"A",n,n,0,0,1,t,e+i-n,"V",e+n,"A",n,n,0,0,1,t+n,e,"Z"].join(" "),"createRoundedRectPathD"),_=(0,l.K2)(async(t,e)=>{l.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,s.D7)(),{themeVariables:o,handDrawnSeed:u}=r,{clusterBkg:d,clusterBorder:p}=o,{labelStyles:f,nodeStyles:g,borderStyles:y,backgroundStyles:m}=(0,n.GX)(e),b=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),k=(0,s._3)(r.flowchart.htmlLabels),w=b.insert("g").attr("class","cluster-label "),_=await(0,a.GZ)(w,e.label,{style:e.labelStyle,useHtmlLabels:k,isNode:!0});let v=_.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=_.children[0],e=(0,c.Ltv)(_);v=t.getBoundingClientRect(),e.attr("width",v.width),e.attr("height",v.height)}const S=e.width<=v.width+e.padding?v.width+e.padding:e.width;e.width<=v.width+e.padding?e.diff=(S-e.width)/2-e.padding:e.diff=-e.padding;const T=e.height,A=e.x-S/2,M=e.y-T/2;let B;if(l.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=h.A.svg(b),r=(0,n.Fr)(e,{roughness:.7,fill:d,stroke:p,fillWeight:3,seed:u}),i=t.path(C(A,M,S,T,0),r);B=b.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child"),B.select("path:nth-child(2)").attr("style",y.join(";")),B.select("path").attr("style",m.join(";").replace("fill","stroke"))}else B=b.insert("rect",":first-child"),B.attr("style",g).attr("rx",e.rx).attr("ry",e.ry).attr("x",A).attr("y",M).attr("width",S).attr("height",T);const{subGraphTitleTopMargin:L}=(0,i.O)(r);if(w.attr("transform",`translate(${e.x-v.width/2}, ${e.y-e.height/2+L})`),f){const t=w.select("span");t&&t.attr("style",f)}const F=B.node().getBBox();return e.offsetX=0,e.width=F.width,e.height=F.height,e.offsetY=v.height-e.padding/2,e.intersect=function(t){return x(e,t)},{cluster:b,labelBBox:v}},"rect"),v=(0,l.K2)((t,e)=>{const r=t.insert("g").attr("class","note-cluster").attr("id",e.id),i=r.insert("rect",":first-child"),n=0*e.padding,a=n/2;i.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+n).attr("height",e.height+n).attr("fill","none");const o=i.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return x(e,t)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),S=(0,l.K2)(async(t,e)=>{const r=(0,s.D7)(),{themeVariables:i,handDrawnSeed:n}=r,{altBackground:a,compositeBackground:o,compositeTitleBackground:l,nodeBorder:u}=i,d=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),p=d.insert("g",":first-child"),f=d.insert("g").attr("class","cluster-label");let g=d.append("rect");const y=f.node().appendChild(await w(e.label,e.labelStyle,void 0,!0));let m=y.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=y.children[0],e=(0,c.Ltv)(y);m=t.getBoundingClientRect(),e.attr("width",m.width),e.attr("height",m.height)}const b=0*e.padding,k=b/2,_=(e.width<=m.width+e.padding?m.width+e.padding:e.width)+b;e.width<=m.width+e.padding?e.diff=(_-e.width)/2-e.padding:e.diff=-e.padding;const v=e.height+b,S=e.height+b-m.height-6,T=e.x-_/2,A=e.y-v/2;e.width=_;const M=e.y-e.height/2-k+m.height+2;let B;if("handDrawn"===e.look){const t=e.cssClasses.includes("statediagram-cluster-alt"),r=h.A.svg(d),i=e.rx||e.ry?r.path(C(T,A,_,v,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:n}):r.rectangle(T,A,_,v,{seed:n});B=d.insert(()=>i,":first-child");const s=r.rectangle(T,M,_,S,{fill:t?a:o,fillStyle:t?"hachure":"solid",stroke:u,seed:n});B=d.insert(()=>i,":first-child"),g=d.insert(()=>s)}else{B=p.insert("rect",":first-child");const t="outer";B.attr("class",t).attr("x",T).attr("y",A).attr("width",_).attr("height",v).attr("data-look",e.look),g.attr("class","inner").attr("x",T).attr("y",M).attr("width",_).attr("height",S)}f.attr("transform",`translate(${e.x-m.width/2}, ${A+1-((0,s._3)(r.flowchart.htmlLabels)?0:3)})`);const L=B.node().getBBox();return e.height=L.height,e.offsetX=0,e.offsetY=m.height-e.padding/2,e.labelBBox=m,e.intersect=function(t){return x(e,t)},{cluster:d,labelBBox:m}},"roundedWithTitle"),T=(0,l.K2)(async(t,e)=>{l.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,s.D7)(),{themeVariables:o,handDrawnSeed:u}=r,{clusterBkg:d,clusterBorder:p}=o,{labelStyles:f,nodeStyles:g,borderStyles:y,backgroundStyles:m}=(0,n.GX)(e),b=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),k=(0,s._3)(r.flowchart.htmlLabels),w=b.insert("g").attr("class","cluster-label "),_=await(0,a.GZ)(w,e.label,{style:e.labelStyle,useHtmlLabels:k,isNode:!0,width:e.width});let v=_.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=_.children[0],e=(0,c.Ltv)(_);v=t.getBoundingClientRect(),e.attr("width",v.width),e.attr("height",v.height)}const S=e.width<=v.width+e.padding?v.width+e.padding:e.width;e.width<=v.width+e.padding?e.diff=(S-e.width)/2-e.padding:e.diff=-e.padding;const T=e.height,A=e.x-S/2,M=e.y-T/2;let B;if(l.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=h.A.svg(b),r=(0,n.Fr)(e,{roughness:.7,fill:d,stroke:p,fillWeight:4,seed:u}),i=t.path(C(A,M,S,T,e.rx),r);B=b.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child"),B.select("path:nth-child(2)").attr("style",y.join(";")),B.select("path").attr("style",m.join(";").replace("fill","stroke"))}else B=b.insert("rect",":first-child"),B.attr("style",g).attr("rx",e.rx).attr("ry",e.ry).attr("x",A).attr("y",M).attr("width",S).attr("height",T);const{subGraphTitleTopMargin:L}=(0,i.O)(r);if(w.attr("transform",`translate(${e.x-v.width/2}, ${e.y-e.height/2+L})`),f){const t=w.select("span");t&&t.attr("style",f)}const F=B.node().getBBox();return e.offsetX=0,e.width=F.width,e.height=F.height,e.offsetY=v.height-e.padding/2,e.intersect=function(t){return x(e,t)},{cluster:b,labelBBox:v}},"kanbanSection"),A={rect:_,squareRect:_,roundedWithTitle:S,noteGroup:v,divider:(0,l.K2)((t,e)=>{const r=(0,s.D7)(),{themeVariables:i,handDrawnSeed:n}=r,{nodeBorder:a}=i,o=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=o.insert("g",":first-child"),c=0*e.padding,u=e.width+c;e.diff=-e.padding;const d=e.height+c,p=e.x-u/2,f=e.y-d/2;let g;if(e.width=u,"handDrawn"===e.look){const t=h.A.svg(o).rectangle(p,f,u,d,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:n});g=o.insert(()=>t,":first-child")}else{g=l.insert("rect",":first-child");const t="divider";g.attr("class",t).attr("x",p).attr("y",f).attr("width",u).attr("height",d).attr("data-look",e.look)}const y=g.node().getBBox();return e.height=y.height,e.offsetX=0,e.offsetY=0,e.intersect=function(t){return x(e,t)},{cluster:o,labelBBox:{}}},"divider"),kanbanSection:T},M=new Map,B=(0,l.K2)(async(t,e)=>{const r=e.shape||"rect",i=await A[r](t,e);return M.set(e.id,i),i},"insertCluster"),L=(0,l.K2)(()=>{M=new Map},"clear");function F(t,e){return t.intersect(e)}(0,l.K2)(F,"intersectNode");var $=F;function E(t,e,r,i){var n=t.x,a=t.y,o=n-i.x,s=a-i.y,l=Math.sqrt(e*e*s*s+r*r*o*o),c=Math.abs(e*r*o/l);i.x0}(0,l.K2)(K,"intersectLine"),(0,l.K2)(I,"sameSign");var N=K;function P(t,e,r){let i=t.x,n=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)}):(o=Math.min(o,e.x),s=Math.min(s,e.y));let l=i-t.width/2-o,c=n-t.height/2-s;for(let h=0;h1&&a.sort(function(t,e){let i=t.x-r.x,n=t.y-r.y,a=Math.sqrt(i*i+n*n),o=e.x-r.x,s=e.y-r.y,l=Math.sqrt(o*o+s*s);return ag,":first-child");return y.attr("class","anchor").attr("style",(0,o.KL)(c)),p(e,y),e.intersect=function(t){return l.Rm.info("Circle intersect",e,1,t),z.circle(e,1,t)},s}function j(t,e,r,i,n,a,o){const s=(t+r)/2,l=(e+i)/2,c=Math.atan2(i-e,r-t),h=(r-t)/2/n,u=(i-e)/2/a,d=Math.sqrt(h**2+u**2);if(d>1)throw new Error("The given radii are too small to create an arc between the points.");const p=Math.sqrt(1-d**2),f=s+p*a*Math.sin(c)*(o?-1:1),g=l-p*n*Math.cos(c)*(o?-1:1),y=Math.atan2((e-g)/a,(t-f)/n);let m=Math.atan2((i-g)/a,(r-f)/n)-y;o&&m<0&&(m+=2*Math.PI),!o&&m>0&&(m-=2*Math.PI);const x=[];for(let b=0;b<20;b++){const t=y+b/19*m,e=f+n*Math.cos(t),r=g+a*Math.sin(t);x.push({x:e,y:r})}return x}async function W(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding+20,l=o.height+e.padding,c=l/2,d=c/(2.5+l/50),{cssStyles:y}=e,m=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...j(-s/2,-l/2,-s/2,l/2,d,c,!1),{x:s/2,y:l/2},...j(s/2,l/2,s/2,-l/2,d,c,!0)],x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=g(m),w=x.path(k,b),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(${d/2}, 0)`),p(e,C),e.intersect=function(t){return z.polygon(e,m,t)},a}function H(t,e,r,i){return t.insert("polygon",":first-child").attr("points",i.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}async function U(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+e.padding,l=o.width+e.padding+12,c=-s,d=[{x:12,y:c},{x:l,y:c},{x:l,y:0},{x:0,y:0},{x:0,y:c+12},{x:12,y:c}];let y;const{cssStyles:m}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(d),o=t.path(i,r);y=a.insert(()=>o,":first-child").attr("transform",`translate(${-l/2}, ${s/2})`),m&&y.attr("style",m)}else y=H(a,l,s,d);return i&&y.attr("style",i),p(e,y),e.intersect=function(t){return z.polygon(e,d,t)},a}function Y(t,e){const{nodeStyles:r}=(0,n.GX)(e);e.label="";const i=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,o=Math.max(28,e.width??0),s=[{x:0,y:o/2},{x:o/2,y:0},{x:0,y:-o/2},{x:-o/2,y:0}],l=h.A.svg(i),c=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(c.roughness=0,c.fillStyle="solid");const u=g(s),d=l.path(u,c),p=i.insert(()=>d,":first-child");return a&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",a),r&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(t){return z.polygon(e,s,t)},i}async function G(t,e,r){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{shapeSvg:s,bbox:c,halfPadding:d}=await u(t,e,f(e)),g=r?.padding??d,y=c.width/2+g;let m;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=t.circle(0,0,2*y,r);m=s.insert(()=>i,":first-child"),m.attr("class","basic label-container").attr("style",(0,o.KL)(x))}else m=s.insert("circle",":first-child").attr("class","basic label-container").attr("style",a).attr("r",y).attr("cx",0).attr("cy",0);return p(e,m),e.calcIntersect=function(t,e){const r=t.width/2;return z.circle(t,r,e)},e.intersect=function(t){return l.Rm.info("Circle intersect",e,y,t),z.circle(e,y,t)},s}function X(t){const e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),i=2*t;return`M ${-i/2*e},${i/2*r} L ${i/2*e},${-i/2*r}\n M ${i/2*e},${i/2*r} L ${-i/2*e},${-i/2*r}`}function V(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r,e.label="";const a=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),o=Math.max(30,e?.width??0),{cssStyles:s}=e,c=h.A.svg(a),u=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(u.roughness=0,u.fillStyle="solid");const d=c.circle(0,0,2*o,u),g=X(o),y=c.path(g,u),m=a.insert(()=>d,":first-child");return m.insert(()=>y),s&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",s),i&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",i),p(e,m),e.intersect=function(t){l.Rm.info("crossedCircle intersect",e,{radius:o,point:t});return z.circle(e,o,t)},a}function Z(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cv,":first-child").attr("stroke-opacity",0),S.insert(()=>C,":first-child"),S.attr("class","text"),y&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",i),S.attr("transform",`translate(${d}, 0)`),s.attr("transform",`translate(${-l/2+d-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,S),e.intersect=function(t){return z.polygon(e,x,t)},a}function J(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cv,":first-child").attr("stroke-opacity",0),S.insert(()=>C,":first-child"),S.attr("class","text"),y&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",i),S.attr("transform",`translate(${-d}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,S),e.intersect=function(t){return z.polygon(e,x,t)},a}function et(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cA,":first-child").attr("stroke-opacity",0),M.insert(()=>_,":first-child"),M.insert(()=>S,":first-child"),M.attr("class","text"),y&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",i),M.attr("transform",`translate(${d-d/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,M),e.intersect=function(t){return z.polygon(e,b,t)},a}async function it(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(80,1.25*(o.width+2*(e.padding??0)),e?.width??0),l=Math.max(20,o.height+2*(e.padding??0),e?.height??0),c=l/2,{cssStyles:d}=e,y=h.A.svg(a),x=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=s-c,k=l/4,w=[{x:b,y:0},{x:k,y:0},{x:0,y:l/2},{x:k,y:l},{x:b,y:l},...m(-b,-l/2,c,50,270,90)],C=g(w),_=y.path(C,x),v=a.insert(()=>_,":first-child");return v.attr("class","basic label-container"),d&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",d),i&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",i),v.attr("transform",`translate(${-s/2}, ${-l/2})`),p(e,v),e.intersect=function(t){return z.polygon(e,w,t)},a}(0,l.K2)(q,"anchor"),(0,l.K2)(j,"generateArcPoints"),(0,l.K2)(W,"bowTieRect"),(0,l.K2)(H,"insertPolygonShape"),(0,l.K2)(U,"card"),(0,l.K2)(Y,"choice"),(0,l.K2)(G,"circle"),(0,l.K2)(X,"createLine"),(0,l.K2)(V,"crossedCircle"),(0,l.K2)(Z,"generateCirclePoints"),(0,l.K2)(Q,"curlyBraceLeft"),(0,l.K2)(J,"generateCirclePoints"),(0,l.K2)(tt,"curlyBraceRight"),(0,l.K2)(et,"generateCirclePoints"),(0,l.K2)(rt,"curlyBraces"),(0,l.K2)(it,"curvedTrapezoid");var nt=(0,l.K2)((t,e,r,i,n,a)=>[`M${t},${e+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i].join(" "),"createCylinderPathD"),at=(0,l.K2)((t,e,r,i,n,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i].join(" "),"createOuterCylinderPathD"),ot=(0,l.K2)((t,e,r,i,n,a)=>[`M${t-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function st(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=Math.max(s.width+e.padding,e.width??0),d=c/2,g=d/(2.5+c/50),y=Math.max(s.height+g+e.padding,e.height??0);let m;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=at(0,0,c,y,d,g),i=ot(0,g,c,y,d,g),o=t.path(r,(0,n.Fr)(e,{})),s=t.path(i,(0,n.Fr)(e,{fill:"none"}));m=a.insert(()=>s,":first-child"),m=a.insert(()=>o,":first-child"),m.attr("class","basic label-container"),x&&m.attr("style",x)}else{const t=nt(0,0,c,y,d,g);m=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(x)).attr("style",i)}return m.attr("label-offset-y",g),m.attr("transform",`translate(${-c/2}, ${-(y/2+g)})`),p(e,m),l.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))}, ${-s.height/2+(e.padding??0)/1.5-(s.y-(s.top??0))})`),e.intersect=function(t){const r=z.rect(e,t),i=r.x-(e.x??0);if(0!=d&&(Math.abs(i)<(e.width??0)/2||Math.abs(i)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-g)){let n=g*g*(1-i*i/(d*d));n>0&&(n=Math.sqrt(n)),n=g-n,t.y-(e.y??0)>0&&(n=-n),r.y+=n}return r},a}async function lt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=o.width+e.padding,c=o.height+e.padding,d=.2*c,g=-l/2,y=-c/2-d/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:g,y:y+d},{x:-g,y:y+d},{x:-g,y:-y},{x:g,y:-y},{x:g,y:y},{x:-g,y:y},{x:-g,y:y+d}],w=x.polygon(k.map(t=>[t.x,t.y]),b),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),s.attr("transform",`translate(${g+(e.padding??0)/2-(o.x-(o.left??0))}, ${y+d+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return z.rect(e,t)},a}async function ct(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c}=await u(t,e,f(e)),d=s.width/2+c+5,g=s.width/2+c;let y;const{cssStyles:m}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{roughness:.2,strokeWidth:2.5}),i=(0,n.Fr)(e,{roughness:.2,strokeWidth:1.5}),s=t.circle(0,0,2*d,r),l=t.circle(0,0,2*g,i);y=a.insert("g",":first-child"),y.attr("class",(0,o.KL)(e.cssClasses)).attr("style",(0,o.KL)(m)),y.node()?.appendChild(s),y.node()?.appendChild(l)}else{y=a.insert("g",":first-child");const t=y.insert("circle",":first-child"),e=y.insert("circle");y.attr("class","basic label-container").attr("style",i),t.attr("class","outer-circle").attr("style",i).attr("r",d).attr("cx",0).attr("cy",0),e.attr("class","inner-circle").attr("style",i).attr("r",g).attr("cx",0).attr("cy",0)}return p(e,y),e.intersect=function(t){return l.Rm.info("DoubleCircle intersect",e,d,t),z.circle(e,d,t)},a}function ht(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.label="",e.labelStyle=i;const o=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:s}=e,c=h.A.svg(o),{nodeBorder:u}=r,d=(0,n.Fr)(e,{fillStyle:"solid"});"handDrawn"!==e.look&&(d.roughness=0);const g=c.circle(0,0,14,d),y=o.insert(()=>g,":first-child");return y.selectAll("path").attr("style",`fill: ${u} !important;`),s&&s.length>0&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",s),a&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",a),p(e,y),e.intersect=function(t){l.Rm.info("filledCircle intersect",e,{radius:7,point:t});return z.circle(e,7,t)},o}async function ut(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),c=o.width+(e.padding??0),d=c+o.height,y=c+o.height,m=[{x:0,y:-d},{x:y,y:-d},{x:y/2,y:0}],{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=g(m),C=b.path(w,k),_=a.insert(()=>C,":first-child").attr("transform",`translate(${-d/2}, ${d/2})`);return x&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),e.width=c,e.height=d,p(e,_),s.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))}, ${-d/2+(e.padding??0)/2+(o.y-(o.top??0))})`),e.intersect=function(t){return l.Rm.info("Triangle intersect",e,m,t),z.polygon(e,m,t)},a}function dt(t,e,{dir:r,config:{state:i,themeVariables:a}}){const{nodeStyles:o}=(0,n.GX)(e);e.label="";const s=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:l}=e;let c=Math.max(70,e?.width??0),u=Math.max(10,e?.height??0);"LR"===r&&(c=Math.max(10,e?.width??0),u=Math.max(70,e?.height??0));const d=-1*c/2,g=-1*u/2,y=h.A.svg(s),m=(0,n.Fr)(e,{stroke:a.lineColor,fill:a.lineColor});"handDrawn"!==e.look&&(m.roughness=0,m.fillStyle="solid");const x=y.rectangle(d,g,c,u,m),b=s.insert(()=>x,":first-child");l&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",l),o&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",o),p(e,b);const k=i?.padding??0;return e.width&&e.height&&(e.width+=k/2||0,e.height+=k/2||0),e.intersect=function(t){return z.rect(e,t)},s}async function pt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(80,o.width+2*(e.padding??0),e?.width??0),c=Math.max(50,o.height+2*(e.padding??0),e?.height??0),d=c/2,{cssStyles:y}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:-s/2,y:-c/2},{x:s/2-d,y:-c/2},...m(-s/2+d,0,d,50,90,270),{x:s/2-d,y:c/2},{x:-s/2,y:c/2}],w=g(k),C=x.path(w,b),_=a.insert(()=>C,":first-child");return _.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",y),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),p(e,_),e.intersect=function(t){l.Rm.info("Pill intersect",e,{radius:d,point:t});return z.polygon(e,k,t)},a}async function ft(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+(e.padding??0),l=o.width+2.5*(e.padding??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");let m=l/2;m+=m/6;const x=s/2,b=m-x/2,k=[{x:-b,y:-x},{x:0,y:-x},{x:b,y:-x},{x:m,y:0},{x:b,y:x},{x:0,y:x},{x:-b,y:x},{x:-m,y:0}],w=g(k),C=d.path(w,y),_=a.insert(()=>C,":first-child");return _.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),e.width=l,e.height=s,p(e,_),e.intersect=function(t){return z.polygon(e,k,t)},a}async function gt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.label="",e.labelStyle=r;const{shapeSvg:a}=await u(t,e,f(e)),o=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=[{x:0,y:0},{x:o,y:0},{x:0,y:s},{x:o,y:s}],x=g(m),b=d.path(x,y),k=a.insert(()=>b,":first-child");return k.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",i),k.attr("transform",`translate(${-o/2}, ${-s/2})`),p(e,k),e.intersect=function(t){l.Rm.info("Pill intersect",e,{points:m});return z.polygon(e,m,t)},a}async function yt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,label:m}=await u(t,e,"icon-shape default"),x="t"===e.pos,b=d,k=d,{nodeBorder:w}=r,{stylesMap:C}=(0,n.WW)(e),_=-k/2,v=-b/2,S=e.label?8:0,T=h.A.svg(g),A=(0,n.Fr)(e,{stroke:"none",fill:"none"});"handDrawn"!==e.look&&(A.roughness=0,A.fillStyle="solid");const M=T.rectangle(_,v,k,b,A),B=Math.max(k,y.width),L=b+y.height+S,F=T.rectangle(-B/2,-L/2,B,L,{...A,fill:"transparent",stroke:"none"}),$=g.insert(()=>M,":first-child"),E=g.insert(()=>F);if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${x?y.height/2+S/2-n/2-s:-y.height/2-S/2-n/2-s})`),t.attr("style",`color: ${C.get("stroke")??w};`)}return m.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${x?-L/2:L/2-y.height})`),$.attr("transform",`translate(0,${x?y.height/2+S/2:-y.height/2-S/2})`),p(e,E),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=x?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+S},{x:r+k/2,y:i-n/2+y.height+S},{x:r+k/2,y:i+n/2},{x:r-k/2,y:i+n/2},{x:r-k/2,y:i-n/2+y.height+S},{x:r-y.width/2,y:i-n/2+y.height+S}]:[{x:r-k/2,y:i-n/2},{x:r+k/2,y:i-n/2},{x:r+k/2,y:i-n/2+b},{x:r+y.width/2,y:i-n/2+b},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+b},{x:r-k/2,y:i-n/2+b}];return z.polygon(e,a,t)},g}async function mt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,label:m}=await u(t,e,"icon-shape default"),x=e.label?8:0,b="t"===e.pos,{nodeBorder:k,mainBkg:w}=r,{stylesMap:C}=(0,n.WW)(e),_=h.A.svg(g),v=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(v.roughness=0,v.fillStyle="solid");const S=C.get("fill");v.stroke=S??w;const T=g.append("g");e.icon&&T.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const A=T.node().getBBox(),M=A.width,B=A.height,L=A.x,F=A.y,$=Math.max(M,B)*Math.SQRT2+40,E=_.circle(0,0,$,v),D=Math.max($,y.width),O=$+y.height+x,R=_.rectangle(-D/2,-O/2,D,O,{...v,fill:"transparent",stroke:"none"}),K=g.insert(()=>E,":first-child"),I=g.insert(()=>R);return T.attr("transform",`translate(${-M/2-L},${b?y.height/2+x/2-B/2-F:-y.height/2-x/2-B/2-F})`),T.attr("style",`color: ${C.get("stroke")??k};`),m.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-O/2:O/2-y.height})`),K.attr("transform",`translate(0,${b?y.height/2+x/2:-y.height/2-x/2})`),p(e,I),e.intersect=function(t){l.Rm.info("iconSquare intersect",e,t);return z.rect(e,t)},g}async function xt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,halfPadding:m,label:x}=await u(t,e,"icon-shape default"),b="t"===e.pos,k=d+2*m,w=d+2*m,{nodeBorder:_,mainBkg:v}=r,{stylesMap:S}=(0,n.WW)(e),T=-w/2,A=-k/2,M=e.label?8:0,B=h.A.svg(g),L=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(L.roughness=0,L.fillStyle="solid");const F=S.get("fill");L.stroke=F??v;const $=B.path(C(T,A,w,k,5),L),E=Math.max(w,y.width),D=k+y.height+M,O=B.rectangle(-E/2,-D/2,E,D,{...L,fill:"transparent",stroke:"none"}),R=g.insert(()=>$,":first-child").attr("class","icon-shape2"),K=g.insert(()=>O);if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${b?y.height/2+M/2-n/2-s:-y.height/2-M/2-n/2-s})`),t.attr("style",`color: ${S.get("stroke")??_};`)}return x.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-D/2:D/2-y.height})`),R.attr("transform",`translate(0,${b?y.height/2+M/2:-y.height/2-M/2})`),p(e,K),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+M},{x:r+w/2,y:i-n/2+y.height+M},{x:r+w/2,y:i+n/2},{x:r-w/2,y:i+n/2},{x:r-w/2,y:i-n/2+y.height+M},{x:r-y.width/2,y:i-n/2+y.height+M}]:[{x:r-w/2,y:i-n/2},{x:r+w/2,y:i-n/2},{x:r+w/2,y:i-n/2+k},{x:r+y.width/2,y:i-n/2+k},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+k},{x:r-w/2,y:i-n/2+k}];return z.polygon(e,a,t)},g}async function bt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,halfPadding:m,label:x}=await u(t,e,"icon-shape default"),b="t"===e.pos,k=d+2*m,w=d+2*m,{nodeBorder:_,mainBkg:v}=r,{stylesMap:S}=(0,n.WW)(e),T=-w/2,A=-k/2,M=e.label?8:0,B=h.A.svg(g),L=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(L.roughness=0,L.fillStyle="solid");const F=S.get("fill");L.stroke=F??v;const $=B.path(C(T,A,w,k,.1),L),E=Math.max(w,y.width),D=k+y.height+M,O=B.rectangle(-E/2,-D/2,E,D,{...L,fill:"transparent",stroke:"none"}),R=g.insert(()=>$,":first-child"),K=g.insert(()=>O);if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${b?y.height/2+M/2-n/2-s:-y.height/2-M/2-n/2-s})`),t.attr("style",`color: ${S.get("stroke")??_};`)}return x.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-D/2:D/2-y.height})`),R.attr("transform",`translate(0,${b?y.height/2+M/2:-y.height/2-M/2})`),p(e,K),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+M},{x:r+w/2,y:i-n/2+y.height+M},{x:r+w/2,y:i+n/2},{x:r-w/2,y:i+n/2},{x:r-w/2,y:i-n/2+y.height+M},{x:r-y.width/2,y:i-n/2+y.height+M}]:[{x:r-w/2,y:i-n/2},{x:r+w/2,y:i-n/2},{x:r+w/2,y:i-n/2+k},{x:r+y.width/2,y:i-n/2+k},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+k},{x:r-w/2,y:i-n/2+k}];return z.polygon(e,a,t)},g}async function kt(t,e,{config:{flowchart:r}}){const i=new Image;i.src=e?.img??"",await i.decode();const a=Number(i.naturalWidth.toString().replace("px","")),o=Number(i.naturalHeight.toString().replace("px",""));e.imageAspectRatio=a/o;const{labelStyles:s}=(0,n.GX)(e);e.labelStyle=s;const c=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;const d=Math.max(e.label?c??0:0,e?.assetWidth??a),f="on"===e.constraint&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:d,g="on"===e.constraint?f/e.imageAspectRatio:e?.assetHeight??o;e.width=Math.max(f,c??0);const{shapeSvg:y,bbox:m,label:x}=await u(t,e,"image-shape default"),b="t"===e.pos,k=-f/2,w=-g/2,C=e.label?8:0,_=h.A.svg(y),v=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(v.roughness=0,v.fillStyle="solid");const S=_.rectangle(k,w,f,g,v),T=Math.max(f,m.width),A=g+m.height+C,M=_.rectangle(-T/2,-A/2,T,A,{...v,fill:"none",stroke:"none"}),B=y.insert(()=>S,":first-child"),L=y.insert(()=>M);if(e.img){const t=y.append("image");t.attr("href",e.img),t.attr("width",f),t.attr("height",g),t.attr("preserveAspectRatio","none"),t.attr("transform",`translate(${-f/2},${b?A/2-g:-A/2})`)}return x.attr("transform",`translate(${-m.width/2-(m.x-(m.left??0))},${b?-g/2-m.height/2-C/2:g/2-m.height/2+C/2})`),B.attr("transform",`translate(0,${b?m.height/2+C/2:-m.height/2-C/2})`),p(e,L),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return z.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-m.width/2,y:i-n/2},{x:r+m.width/2,y:i-n/2},{x:r+m.width/2,y:i-n/2+m.height+C},{x:r+f/2,y:i-n/2+m.height+C},{x:r+f/2,y:i+n/2},{x:r-f/2,y:i+n/2},{x:r-f/2,y:i-n/2+m.height+C},{x:r-m.width/2,y:i-n/2+m.height+C}]:[{x:r-f/2,y:i-n/2},{x:r+f/2,y:i-n/2},{x:r+f/2,y:i-n/2+g},{x:r+m.width/2,y:i-n/2+g},{x:r+m.width/2/2,y:i+n/2},{x:r-m.width/2,y:i+n/2},{x:r-m.width/2,y:i-n/2+g},{x:r-f/2,y:i-n/2+g}];return z.polygon(e,a,t)},y}async function wt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return z.polygon(e,c,t)},a}async function Ct(t,e,r){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{shapeSvg:s,bbox:l}=await u(t,e,f(e)),c=Math.max(l.width+2*r.labelPaddingX,e?.width||0),d=Math.max(l.height+2*r.labelPaddingY,e?.height||0),g=-c/2,y=-d/2;let m,{rx:x,ry:b}=e;const{cssStyles:k}=e;if(r?.rx&&r.ry&&(x=r.rx,b=r.ry),"handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=x||b?t.path(C(g,y,c,d,x||0),r):t.rectangle(g,y,c,d,r);m=s.insert(()=>i,":first-child"),m.attr("class","basic label-container").attr("style",(0,o.KL)(k))}else m=s.insert("rect",":first-child"),m.attr("class","basic label-container").attr("style",a).attr("rx",(0,o.KL)(x)).attr("ry",(0,o.KL)(b)).attr("x",g).attr("y",y).attr("width",c).attr("height",d);return p(e,m),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return z.rect(e,t)},s}async function _t(t,e){const{shapeSvg:r,bbox:i,label:n}=await u(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),n.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${-i.height/2-(i.y-(i.top??0))})`),p(e,a),e.intersect=function(t){return z.rect(e,t)},r}async function vt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+(e.padding??0),e?.width??0),l=Math.max(o.height+(e.padding??0),e?.height??0),c=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-3*l/6,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return z.polygon(e,c,t)},a}async function St(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+(e.padding??0),e?.width??0),l=Math.max(o.height+(e.padding??0),e?.height??0),c=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return z.polygon(e,c,t)},a}function Tt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.label="",e.labelStyle=r;const a=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:o}=e,s=Math.max(35,e?.width??0),c=Math.max(35,e?.height??0),u=[{x:s,y:0},{x:0,y:c+3.5},{x:s-14,y:c+3.5},{x:0,y:2*c},{x:s,y:c-3.5},{x:14,y:c-3.5}],d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=g(u),x=d.path(m,y),b=a.insert(()=>x,":first-child");return o&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",o),i&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",i),b.attr("transform",`translate(-${s/2},${-c})`),p(e,b),e.intersect=function(t){l.Rm.info("lightningBolt intersect",e,t);return z.polygon(e,u,t)},a}(0,l.K2)(st,"cylinder"),(0,l.K2)(lt,"dividedRectangle"),(0,l.K2)(ct,"doublecircle"),(0,l.K2)(ht,"filledCircle"),(0,l.K2)(ut,"flippedTriangle"),(0,l.K2)(dt,"forkJoin"),(0,l.K2)(pt,"halfRoundedRectangle"),(0,l.K2)(ft,"hexagon"),(0,l.K2)(gt,"hourglass"),(0,l.K2)(yt,"icon"),(0,l.K2)(mt,"iconCircle"),(0,l.K2)(xt,"iconRounded"),(0,l.K2)(bt,"iconSquare"),(0,l.K2)(kt,"imageSquare"),(0,l.K2)(wt,"inv_trapezoid"),(0,l.K2)(Ct,"drawRect"),(0,l.K2)(_t,"labelRect"),(0,l.K2)(vt,"lean_left"),(0,l.K2)(St,"lean_right"),(0,l.K2)(Tt,"lightningBolt");var At=(0,l.K2)((t,e,r,i,n,a,o)=>[`M${t},${e+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i,`M${t},${e+a+o}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),Mt=(0,l.K2)((t,e,r,i,n,a,o)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i,`M${t},${e+a+o}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),Bt=(0,l.K2)((t,e,r,i,n,a)=>[`M${t-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function Lt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=Math.max(s.width+(e.padding??0),e.width??0),d=c/2,g=d/(2.5+c/50),y=Math.max(s.height+g+(e.padding??0),e.height??0),m=.1*y;let x;const{cssStyles:b}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=Mt(0,0,c,y,d,g,m),i=Bt(0,g,c,y,d,g),o=(0,n.Fr)(e,{}),s=t.path(r,o),l=t.path(i,o);a.insert(()=>l,":first-child").attr("class","line"),x=a.insert(()=>s,":first-child"),x.attr("class","basic label-container"),b&&x.attr("style",b)}else{const t=At(0,0,c,y,d,g,m);x=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(b)).attr("style",i)}return x.attr("label-offset-y",g),x.attr("transform",`translate(${-c/2}, ${-(y/2+g)})`),p(e,x),l.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))}, ${-s.height/2+g-(s.y-(s.top??0))})`),e.intersect=function(t){const r=z.rect(e,t),i=r.x-(e.x??0);if(0!=d&&(Math.abs(i)<(e.width??0)/2||Math.abs(i)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-g)){let n=g*g*(1-i*i/(d*d));n>0&&(n=Math.sqrt(n)),n=g-n,t.y-(e.y??0)>0&&(n=-n),r.y+=n}return r},a}async function Ft(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,g=c+d,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:-l/2-l/2*.1,y:-g/2},{x:-l/2-l/2*.1,y:g/2},...y(-l/2-l/2*.1,g/2,l/2+l/2*.1,g/2,d,.8),{x:l/2+l/2*.1,y:-g/2},{x:-l/2-l/2*.1,y:-g/2},{x:-l/2,y:-g/2},{x:-l/2,y:g/2*1.1},{x:-l/2,y:-g/2}],w=x.polygon(k.map(t=>[t.x,t.y]),b),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return z.polygon(e,k,t)},a}async function $t(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,y=-c/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{}),k=[{x:d-5,y:y+5},{x:d-5,y:y+c+5},{x:d+l-5,y:y+c+5},{x:d+l-5,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y+c-5},{x:d+l+5,y:y+c-5},{x:d+l+5,y:y-5},{x:d+5,y:y-5},{x:d+5,y:y},{x:d,y:y},{x:d,y:y+5}],w=[{x:d,y:y+5},{x:d+l-5,y:y+5},{x:d+l-5,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y},{x:d,y:y}];"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const C=g(k),_=x.path(C,b),v=g(w),S=x.path(v,{...b,fill:"none"}),T=a.insert(()=>S,":first-child");return T.insert(()=>_,":first-child"),T.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),s.attr("transform",`translate(${-o.width/2-5-(o.x-(o.left??0))}, ${-o.height/2+5-(o.y-(o.top??0))})`),p(e,T),e.intersect=function(t){return z.polygon(e,k,t)},a}async function Et(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,m=c+d,x=-l/2,b=-m/2,{cssStyles:k}=e,w=y(x-5,b+m+5,x+l-5,b+m+5,d,.8),C=w?.[w.length-1],_=[{x:x-5,y:b+5},{x:x-5,y:b+m+5},...w,{x:x+l-5,y:C.y-5},{x:x+l,y:C.y-5},{x:x+l,y:C.y-10},{x:x+l+5,y:C.y-10},{x:x+l+5,y:b-5},{x:x+5,y:b-5},{x:x+5,y:b},{x:x,y:b},{x:x,y:b+5}],v=[{x:x,y:b+5},{x:x+l-5,y:b+5},{x:x+l-5,y:C.y-5},{x:x+l,y:C.y-5},{x:x+l,y:b},{x:x,y:b}],S=h.A.svg(a),T=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(T.roughness=0,T.fillStyle="solid");const A=g(_),M=S.path(A,T),B=g(v),L=S.path(B,T),F=a.insert(()=>M,":first-child");return F.insert(()=>L),F.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-o.width/2-5-(o.x-(o.left??0))}, ${-o.height/2+5-d/2-(o.y-(o.top??0))})`),p(e,F),e.intersect=function(t){return z.polygon(e,_,t)},a}async function Dt(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;e.useHtmlLabels||!1!==(0,s.zj)().flowchart?.htmlLabels||(e.centerLabel=!0);const{shapeSvg:o,bbox:l,label:c}=await u(t,e,f(e)),d=Math.max(l.width+2*(e.padding??0),e?.width??0),g=Math.max(l.height+2*(e.padding??0),e?.height??0),y=-d/2,m=-g/2,{cssStyles:x}=e,b=h.A.svg(o),k=(0,n.Fr)(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=b.rectangle(y,m,d,g,k),C=o.insert(()=>w,":first-child");return C.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",x),a&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",a),c.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-l.height/2-(l.y-(l.top??0))})`),p(e,C),e.intersect=function(t){return z.rect(e,t)},o}(0,l.K2)(Lt,"linedCylinder"),(0,l.K2)(Ft,"linedWaveEdgedRect"),(0,l.K2)($t,"multiRect"),(0,l.K2)(Et,"multiWaveEdgedRectangle"),(0,l.K2)(Dt,"note");var Ot=(0,l.K2)((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");async function Rt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding+(o.height+e.padding),l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];let c;const{cssStyles:d}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=Ot(0,0,s),o=t.path(i,r);c=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2+.5}, ${s/2})`),d&&c.attr("style",d)}else c=H(a,s,s,l),c.attr("transform",`translate(${-s/2+.5}, ${s/2})`);return i&&c.attr("style",i),p(e,c),e.calcIntersect=function(t,e){const r=t.width,i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],n=z.polygon(t,i,e);return{x:n.x-.5,y:n.y-.5}},e.intersect=function(t){return this.calcIntersect(e,t)},a}async function Kt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=-Math.max(o.width+(e.padding??0),e?.width??0)/2,c=-Math.max(o.height+(e.padding??0),e?.height??0)/2,d=c/2,y=[{x:l+d,y:c},{x:l,y:0},{x:l+d,y:-c},{x:-l,y:-c},{x:-l,y:c}],{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=g(y),w=x.path(k,b),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-o.width/2-(o.x-(o.left??0))}, ${-o.height/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return z.polygon(e,y,t)},a}async function It(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);let a;e.labelStyle=r,a=e.cssClasses?"node "+e.cssClasses:"node default";const o=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=o.insert("g"),d=o.insert("g").attr("class","label").attr("style",i),f=e.description,g=e.label,y=d.node().appendChild(await w(g,e.labelStyle,!0,!0));let m={width:0,height:0};if((0,s._3)((0,s.D7)()?.flowchart?.htmlLabels)){const t=y.children[0],e=(0,c.Ltv)(y);m=t.getBoundingClientRect(),e.attr("width",m.width),e.attr("height",m.height)}l.Rm.info("Text 2",f);const x=f||[],b=y.getBBox(),k=d.node().appendChild(await w(x.join?x.join("
    "):x,e.labelStyle,!0,!0)),_=k.children[0],v=(0,c.Ltv)(k);m=_.getBoundingClientRect(),v.attr("width",m.width),v.attr("height",m.height);const S=(e.padding||0)/2;(0,c.Ltv)(k).attr("transform","translate( "+(m.width>b.width?0:(b.width-m.width)/2)+", "+(b.height+S+5)+")"),(0,c.Ltv)(y).attr("transform","translate( "+(m.width(l.Rm.debug("Rough node insert CXC",i),a),":first-child"),L=o.insert(()=>(l.Rm.debug("Rough node insert CXC",i),i),":first-child")}else L=u.insert("rect",":first-child"),F=u.insert("line"),L.attr("class","outer title-state").attr("style",i).attr("x",-m.width/2-S).attr("y",-m.height/2-S).attr("width",m.width+(e.padding||0)).attr("height",m.height+(e.padding||0)),F.attr("class","divider").attr("x1",-m.width/2-S).attr("x2",m.width/2+S).attr("y1",-m.height/2-S+b.height+S).attr("y2",-m.height/2-S+b.height+S);return p(e,L),e.intersect=function(t){return z.rect(e,t)},o}function Nt(t,e,r,i,n,a,o){const s=(t+r)/2,l=(e+i)/2,c=Math.atan2(i-e,r-t),h=(r-t)/2/n,u=(i-e)/2/a,d=Math.sqrt(h**2+u**2);if(d>1)throw new Error("The given radii are too small to create an arc between the points.");const p=Math.sqrt(1-d**2),f=s+p*a*Math.sin(c)*(o?-1:1),g=l-p*n*Math.cos(c)*(o?-1:1),y=Math.atan2((e-g)/a,(t-f)/n);let m=Math.atan2((i-g)/a,(r-f)/n)-y;o&&m<0&&(m+=2*Math.PI),!o&&m>0&&(m-=2*Math.PI);const x=[];for(let b=0;b<20;b++){const t=y+b/19*m,e=f+n*Math.cos(t),r=g+a*Math.sin(t);x.push({x:e,y:r})}return x}async function Pt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=e?.padding??0,l=e?.padding??0,c=(e?.width?e?.width:o.width)+2*s,d=(e?.height?e?.height:o.height)+2*l,y=e.radius||5,m=e.taper||5,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});e.stroke&&(k.stroke=e.stroke),"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:-c/2+m,y:-d/2},{x:c/2-m,y:-d/2},...Nt(c/2-m,-d/2,c/2,-d/2+m,y,y,!0),{x:c/2,y:-d/2+m},{x:c/2,y:d/2-m},...Nt(c/2,d/2-m,c/2-m,d/2,y,y,!0),{x:c/2-m,y:d/2},{x:-c/2+m,y:d/2},...Nt(-c/2+m,d/2,-c/2,d/2-m,y,y,!0),{x:-c/2,y:d/2-m},{x:-c/2,y:-d/2+m},...Nt(-c/2,-d/2+m,-c/2+m,-d/2,y,y,!0)],C=g(w),_=b.path(C,k),v=a.insert(()=>_,":first-child");return v.attr("class","basic label-container outer-path"),x&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",i),p(e,v),e.intersect=function(t){return z.polygon(e,w,t)},a}async function zt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=e?.padding??0,d=Math.max(s.width+2*(e.padding??0),e?.width??0),g=Math.max(s.height+2*(e.padding??0),e?.height??0),y=-s.width/2-c,m=-s.height/2-c,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:y,y:m},{x:y+d+8,y:m},{x:y+d+8,y:m+g},{x:y-8,y:m+g},{x:y-8,y:m},{x:y,y:m},{x:y,y:m+g}],C=b.polygon(w.map(t=>[t.x,t.y]),k),_=a.insert(()=>C,":first-child");return _.attr("class","basic label-container").attr("style",(0,o.KL)(x)),i&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",i),x&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",i),l.attr("transform",`translate(${-d/2+4+(e.padding??0)-(s.x-(s.left??0))},${-g/2+(e.padding??0)-(s.y-(s.top??0))})`),p(e,_),e.intersect=function(t){return z.rect(e,t)},a}async function qt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,y=-c/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:d,y:y},{x:d,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y-c/2}],w=g(k),C=x.path(w,b),_=a.insert(()=>C,":first-child");return _.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",m),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),_.attr("transform",`translate(0, ${c/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))}, ${-c/4+(e.padding??0)-(o.y-(o.top??0))})`),p(e,_),e.intersect=function(t){return z.polygon(e,k,t)},a}async function jt(t,e){return Ct(t,e,{rx:0,ry:0,classes:"",labelPaddingX:e.labelPaddingX??2*(e?.padding||0),labelPaddingY:1*(e?.padding||0)})}async function Wt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+e.padding,l=o.width+s/4+e.padding,c=s/2,{cssStyles:d}=e,y=h.A.svg(a),x=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=[{x:-l/2+c,y:-s/2},{x:l/2-c,y:-s/2},...m(-l/2+c,0,c,50,90,270),{x:l/2-c,y:s/2},...m(l/2-c,0,c,50,270,450)],k=g(b),w=y.path(k,x),C=a.insert(()=>w,":first-child");return C.attr("class","basic label-container outer-path"),d&&"handDrawn"!==e.look&&C.selectChildren("path").attr("style",d),i&&"handDrawn"!==e.look&&C.selectChildren("path").attr("style",i),p(e,C),e.intersect=function(t){return z.polygon(e,b,t)},a}async function Ht(t,e){return Ct(t,e,{rx:5,ry:5,classes:"flowchart-node"})}function Ut(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{cssStyles:o}=e,{lineColor:s,stateBorder:l,nodeBorder:c}=r,u=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),d=h.A.svg(u),f=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(f.roughness=0,f.fillStyle="solid");const g=d.circle(0,0,14,{...f,stroke:s,strokeWidth:2}),y=l??c,m=d.circle(0,0,5,{...f,fill:y,stroke:y,strokeWidth:2,fillStyle:"solid"}),x=u.insert(()=>g,":first-child");return x.insert(()=>m),o&&x.selectAll("path").attr("style",o),a&&x.selectAll("path").attr("style",a),p(e,x),e.intersect=function(t){return z.circle(e,7,t)},u}function Yt(t,e,{config:{themeVariables:r}}){const{lineColor:i}=r,a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let o;if("handDrawn"===e.look){const t=h.A.svg(a).circle(0,0,14,(0,n.ue)(i));o=a.insert(()=>t),o.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else o=a.insert("circle",":first-child"),o.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return p(e,o),e.intersect=function(t){return z.circle(e,7,t)},a}async function Gt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s}=await u(t,e,f(e)),l=(e?.padding||0)/2,c=s.width+e.padding,d=s.height+e.padding,g=-s.width/2-l,y=-s.height/2-l,m=[{x:0,y:0},{x:c,y:0},{x:c,y:-d},{x:0,y:-d},{x:0,y:0},{x:-8,y:0},{x:c+8,y:0},{x:c+8,y:-d},{x:-8,y:-d},{x:-8,y:0}];if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.rectangle(g-8,y,c+16,d,r),s=t.line(g,y,g,y+d,r),l=t.line(g+c,y,g+c,y+d,r);a.insert(()=>s,":first-child"),a.insert(()=>l,":first-child");const u=a.insert(()=>i,":first-child"),{cssStyles:f}=e;u.attr("class","basic label-container").attr("style",(0,o.KL)(f)),p(e,u)}else{const t=H(a,c,d,m);i&&t.attr("style",i),p(e,t)}return e.intersect=function(t){return z.polygon(e,m,t)},a}async function Xt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=-s/2,d=-l/2,y=.2*l,m=.2*l,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{}),w=[{x:c-y/2,y:d},{x:c+s+y/2,y:d},{x:c+s+y/2,y:d+l},{x:c-y/2,y:d+l}],C=[{x:c+s-y/2,y:d+l},{x:c+s+y/2,y:d+l},{x:c+s+y/2,y:d+l-m}];"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const _=g(w),v=b.path(_,k),S=g(C),T=b.path(S,{...k,fillStyle:"solid"}),A=a.insert(()=>T,":first-child");return A.insert(()=>v,":first-child"),A.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&A.selectAll("path").attr("style",x),i&&"handDrawn"!==e.look&&A.selectAll("path").attr("style",i),p(e,A),e.intersect=function(t){return z.polygon(e,w,t)},a}async function Vt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,m=.2*l,x=.2*c,b=c+d,{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-l/2-l/2*.1,y:b/2},...y(-l/2-l/2*.1,b/2,l/2+l/2*.1,b/2,d,.8),{x:l/2+l/2*.1,y:-b/2},{x:-l/2-l/2*.1,y:-b/2}],v=-l/2+l/2*.1,S=-b/2-.4*x,T=[{x:v+l-m,y:1.4*(S+c)},{x:v+l,y:S+c-x},{x:v+l,y:.9*(S+c)},...y(v+l,1.3*(S+c),v+l-m,1.5*(S+c),.03*-c,.5)],A=g(_),M=w.path(A,C),B=g(T),L=w.path(B,{...C,fillStyle:"solid"}),F=a.insert(()=>L,":first-child");return F.insert(()=>M,":first-child"),F.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d/2-(o.y-(o.top??0))})`),p(e,F),e.intersect=function(t){return z.polygon(e,_,t)},a}async function Zt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+e.padding,e?.width||0),l=Math.max(o.height+e.padding,e?.height||0),c=-s/2,h=-l/2,d=a.insert("rect",":first-child");return d.attr("class","text").attr("style",i).attr("rx",0).attr("ry",0).attr("x",c).attr("y",h).attr("width",s).attr("height",l),p(e,d),e.intersect=function(t){return z.rect(e,t)},a}(0,l.K2)(Rt,"question"),(0,l.K2)(Kt,"rect_left_inv_arrow"),(0,l.K2)(It,"rectWithTitle"),(0,l.K2)(Nt,"generateArcPoints"),(0,l.K2)(Pt,"roundedRect"),(0,l.K2)(zt,"shadedProcess"),(0,l.K2)(qt,"slopedRect"),(0,l.K2)(jt,"squareRect"),(0,l.K2)(Wt,"stadium"),(0,l.K2)(Ht,"state"),(0,l.K2)(Ut,"stateEnd"),(0,l.K2)(Yt,"stateStart"),(0,l.K2)(Gt,"subroutine"),(0,l.K2)(Xt,"taggedRect"),(0,l.K2)(Vt,"taggedWaveEdgedRectangle"),(0,l.K2)(Zt,"text");var Qt=(0,l.K2)((t,e,r,i,n,a)=>`M${t},${e}\n a${n},${a} 0,0,1 0,${-i}\n l${r},0\n a${n},${a} 0,0,1 0,${i}\n M${r},${-i}\n a${n},${a} 0,0,0 0,${i}\n l${-r},0`,"createCylinderPathD"),Jt=(0,l.K2)((t,e,r,i,n,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${n},${a} 0,0,0 0,${-i}`,`l${-r},0`,`a${n},${a} 0,0,0 0,${i}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),te=(0,l.K2)((t,e,r,i,n,a)=>[`M${t+r/2},${-i/2}`,`a${n},${a} 0,0,0 0,${i}`].join(" "),"createInnerCylinderPathD");async function ee(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l,halfPadding:c}=await u(t,e,f(e)),d="neo"===e.look?2*c:c,g=s.height+d,y=g/2,m=y/(2.5+g/50),x=s.width+m+d,{cssStyles:b}=e;let k;if("handDrawn"===e.look){const t=h.A.svg(a),r=Jt(0,0,x,g,m,y),i=te(0,0,x,g,m,y),o=t.path(r,(0,n.Fr)(e,{})),s=t.path(i,(0,n.Fr)(e,{fill:"none"}));k=a.insert(()=>s,":first-child"),k=a.insert(()=>o,":first-child"),k.attr("class","basic label-container"),b&&k.attr("style",b)}else{const t=Qt(0,0,x,g,m,y);k=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(b)).attr("style",i),k.attr("class","basic label-container"),b&&k.selectAll("path").attr("style",b),i&&k.selectAll("path").attr("style",i)}return k.attr("label-offset-x",m),k.attr("transform",`translate(${-x/2}, ${g/2} )`),l.attr("transform",`translate(${-s.width/2-m-(s.x-(s.left??0))}, ${-s.height/2-(s.y-(s.top??0))})`),p(e,k),e.intersect=function(t){const r=z.rect(e,t),i=r.y-(e.y??0);if(0!=y&&(Math.abs(i)<(e.height??0)/2||Math.abs(i)==(e.height??0)/2&&Math.abs(r.x-(e.x??0))>(e.width??0)/2-m)){let n=m*m*(1-i*i/(y*y));0!=n&&(n=Math.sqrt(Math.abs(n))),n=m-n,t.x-(e.x??0)>0&&(n=-n),r.x+=n}return r},a}async function re(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding,l=o.height+e.padding,c=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert(()=>o,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return z.polygon(e,c,t)},a}async function ie(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(60,o.width+2*(e.padding??0),e?.width??0),l=Math.max(20,o.height+2*(e.padding??0),e?.height??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=[{x:-s/2*.8,y:-l/2},{x:s/2*.8,y:-l/2},{x:s/2,y:-l/2*.6},{x:s/2,y:l/2},{x:-s/2,y:l/2},{x:-s/2,y:-l/2*.6}],x=g(m),b=d.path(x,y),k=a.insert(()=>b,":first-child");return k.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",i),p(e,k),e.intersect=function(t){return z.polygon(e,m,t)},a}async function ne(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:c}=await u(t,e,f(e)),d=(0,s._3)((0,s.D7)().flowchart?.htmlLabels),y=o.width+(e.padding??0),m=y+o.height,x=y+o.height,b=[{x:0,y:0},{x:x,y:0},{x:x/2,y:-m}],{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=g(b),v=w.path(_,C),S=a.insert(()=>v,":first-child").attr("transform",`translate(${-m/2}, ${m/2})`);return k&&"handDrawn"!==e.look&&S.selectChildren("path").attr("style",k),i&&"handDrawn"!==e.look&&S.selectChildren("path").attr("style",i),e.width=y,e.height=m,p(e,S),c.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))}, ${m/2-(o.height+(e.padding??0)/(d?2:1)-(o.y-(o.top??0)))})`),e.intersect=function(t){return l.Rm.info("Triangle intersect",e,b,t),z.polygon(e,b,t)},a}async function ae(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/8,m=c+d,{cssStyles:x}=e,b=70-l,k=b>0?b/2:0,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-l/2-k,y:m/2},...y(-l/2-k,m/2,l/2+k,m/2,d,.8),{x:l/2+k,y:-m/2},{x:-l/2-k,y:-m/2}],v=g(_),S=w.path(v,C),T=a.insert(()=>S,":first-child");return T.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",x),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),T.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d-(o.y-(o.top??0))})`),p(e,T),e.intersect=function(t){return z.polygon(e,_,t)},a}async function oe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=s/l;let d=s,m=l;d>m*c?m=d/c:d=m*c,d=Math.max(d,100),m=Math.max(m,50);const x=Math.min(.2*m,m/4),b=m+2*x,{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-d/2,y:b/2},...y(-d/2,b/2,d/2,b/2,x,1),{x:d/2,y:-b/2},...y(d/2,-b/2,-d/2,-b/2,x,-1)],v=g(_),S=w.path(v,C),T=a.insert(()=>S,":first-child");return T.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),p(e,T),e.intersect=function(t){return z.polygon(e,_,t)},a}async function se(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,g=-c/2,{cssStyles:y}=e,m=h.A.svg(a),x=(0,n.Fr)(e,{}),b=[{x:d-5,y:g-5},{x:d-5,y:g+c},{x:d+l,y:g+c},{x:d+l,y:g-5}],k=`M${d-5},${g-5} L${d+l},${g-5} L${d+l},${g+c} L${d-5},${g+c} L${d-5},${g-5}\n M${d-5},${g} L${d+l},${g}\n M${d},${g-5} L${d},${g+c}`;"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const w=m.path(k,x),C=a.insert(()=>w,":first-child");return C.attr("transform","translate(2.5, 2.5)"),C.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),s.attr("transform",`translate(${-o.width/2+2.5-(o.x-(o.left??0))}, ${-o.height/2+2.5-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return z.polygon(e,b,t)},a}async function le(t,e){const r=e;if(r.alias&&(e.label=r.alias),"handDrawn"===e.look){const{themeVariables:r}=(0,s.zj)(),{background:i}=r,n={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${i}`]};await le(t,n)}const i=(0,s.zj)();e.useHtmlLabels=i.htmlLabels;let a=i.er?.diagramPadding??10,l=i.er?.entityPadding??6;const{cssStyles:u}=e,{labelStyles:d,nodeStyles:g}=(0,n.GX)(e);if(0===r.attributes.length&&e.label){const r={rx:0,ry:0,labelPaddingX:a,labelPaddingY:1.5*a,classes:""};(0,o.Un)(e.label,i)+2*r.labelPaddingX0){const t=x.width+2*a-(C+_+v+S);C+=t/M,_+=t/M,v>0&&(v+=t/M),S>0&&(S+=t/M)}const L=C+_+v+S,F=h.A.svg(m),$=(0,n.Fr)(e,{});"handDrawn"!==e.look&&($.roughness=0,$.fillStyle="solid");let E=0;w.length>0&&(E=w.reduce((t,e)=>t+(e?.rowHeight??0),0));const D=Math.max(B.width+2*a,e?.width||0,L),O=Math.max((E??0)+x.height,e?.height||0),R=-D/2,K=-O/2;m.selectAll("g:not(:first-child)").each((t,e,r)=>{const i=(0,c.Ltv)(r[e]),n=i.attr("transform");let o=0,s=0;if(n){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(n);t&&(o=parseFloat(t[1]),s=parseFloat(t[2]),i.attr("class").includes("attribute-name")?o+=C:i.attr("class").includes("attribute-keys")?o+=C+_:i.attr("class").includes("attribute-comment")&&(o+=C+_+v))}i.attr("transform",`translate(${R+a/2+o}, ${s+K+x.height+l/2})`)}),m.select(".name").attr("transform","translate("+-x.width/2+", "+(K+l/2)+")");const I=F.rectangle(R,K,D,O,$),N=m.insert(()=>I,":first-child").attr("style",u.join("")),{themeVariables:P}=(0,s.zj)(),{rowEven:q,rowOdd:j,nodeBorder:W}=P;k.push(0);for(const[n,o]of w.entries()){const t=(n+1)%2==0&&0!==o.yOffset,e=F.rectangle(R,x.height+K+o?.yOffset,D,o?.rowHeight,{...$,fill:t?q:j,stroke:W});m.insert(()=>e,"g.label").attr("style",u.join("")).attr("class","row-rect-"+(t?"even":"odd"))}let H=F.line(R,x.height+K,D+R,x.height+K,$);m.insert(()=>H).attr("class","divider"),H=F.line(C+R,x.height+K,C+R,O+K,$),m.insert(()=>H).attr("class","divider"),T&&(H=F.line(C+_+R,x.height+K,C+_+R,O+K,$),m.insert(()=>H).attr("class","divider")),A&&(H=F.line(C+_+v+R,x.height+K,C+_+v+R,O+K,$),m.insert(()=>H).attr("class","divider"));for(const n of k)H=F.line(R,x.height+K+n,D+R,x.height+K+n,$),m.insert(()=>H).attr("class","divider");if(p(e,N),g&&"handDrawn"!==e.look){const t=g.split(";"),e=t?.filter(t=>t.includes("stroke"))?.map(t=>`${t}`).join("; ");m.selectAll("path").attr("style",e??""),m.selectAll(".row-rect-even path").attr("style",g)}return e.intersect=function(t){return z.rect(e,t)},m}async function ce(t,e,r,i=0,n=0,l=[],h=""){const u=t.insert("g").attr("class",`label ${l.join(" ")}`).attr("transform",`translate(${i}, ${n})`).attr("style",h);e!==(0,s.QO)(e)&&(e=(e=(0,s.QO)(e)).replaceAll("<","<").replaceAll(">",">"));const d=u.node().appendChild(await(0,a.GZ)(u,e,{width:(0,o.Un)(e,r)+100,style:h,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let t=d.children[0];for(t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">");t.childNodes[0];)t=t.childNodes[0],t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">")}let p=d.getBBox();if((0,s._3)(r.htmlLabels)){const t=d.children[0];t.style.textAlign="start";const e=(0,c.Ltv)(d);p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return p}async function he(t,e,r,i,n=r.class.padding??12){const a=i?0:3,o=t.insert("g").attr("class",f(e)).attr("id",e.domId||e.id);let s=null,l=null,c=null,h=null,u=0,d=0,p=0;if(s=o.insert("g").attr("class","annotation-group text"),e.annotations.length>0){const t=e.annotations[0];await ue(s,{text:`\xab${t}\xbb`},0);u=s.node().getBBox().height}l=o.insert("g").attr("class","label-group text"),await ue(l,e,0,["font-weight: bolder"]);const g=l.node().getBBox();d=g.height,c=o.insert("g").attr("class","members-group text");let y=0;for(const f of e.members){y+=await ue(c,f,y,[f.parseClassifier()])+a}p=c.node().getBBox().height,p<=0&&(p=n/2),h=o.insert("g").attr("class","methods-group text");let m=0;for(const f of e.methods){m+=await ue(h,f,m,[f.parseClassifier()])+a}let x=o.node().getBBox();if(null!==s){const t=s.node().getBBox();s.attr("transform",`translate(${-t.width/2})`)}return l.attr("transform",`translate(${-g.width/2}, ${u})`),x=o.node().getBBox(),c.attr("transform",`translate(0, ${u+d+2*n})`),x=o.node().getBBox(),h.attr("transform",`translate(0, ${u+d+(p?p+4*n:2*n)})`),x=o.node().getBBox(),{shapeSvg:o,bbox:x}}async function ue(t,e,r,i=[]){const n=t.insert("g").attr("class","label").attr("style",i.join("; ")),h=(0,s.zj)();let u="useHtmlLabels"in e?e.useHtmlLabels:(0,s._3)(h.htmlLabels)??!0,d="";d="text"in e?e.text:e.label,!u&&d.startsWith("\\")&&(d=d.substring(1)),(0,s.Wi)(d)&&(u=!0);const p=await(0,a.GZ)(n,(0,s.oB)((0,o.Sm)(d)),{width:(0,o.Un)(d,h)+50,classes:"markdown-node-label",useHtmlLabels:u},h);let f,g=1;if(u){const t=p.children[0],e=(0,c.Ltv)(p);g=t.innerHTML.split("
    ").length,t.innerHTML.includes("")&&(g+=t.innerHTML.split("").length-1);const r=t.getElementsByTagName("img");if(r){const t=""===d.replace(/]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function i(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=h.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,r=5,i=parseInt(t,10)*r+"px";e.style.minWidth=i,e.style.maxWidth=i}else e.style.width="100%";r(e)}(0,l.K2)(i,"setupImage"),setTimeout(()=>{e.complete&&i()}),e.addEventListener("error",i),e.addEventListener("load",i)})))}f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}else{i.includes("font-weight: bolder")&&(0,c.Ltv)(p).selectAll("tspan").attr("font-weight",""),g=p.children.length;const t=p.children[0];if(""===p.textContent||p.textContent.includes(">")){t.textContent=d[0]+d.substring(1).replaceAll(">",">").replaceAll("<","<").trim();" "===d[1]&&(t.textContent=t.textContent[0]+" "+t.textContent.substring(1))}"undefined"===t.textContent&&(t.textContent=""),f=p.getBBox()}return n.attr("transform","translate(0,"+(-f.height/(2*g)+r)+")"),f.height}async function de(t,e){const r=(0,s.D7)(),i=r.class.padding??12,a=i,o=e.useHtmlLabels??(0,s._3)(r.htmlLabels)??!0,l=e;l.annotations=l.annotations??[],l.members=l.members??[],l.methods=l.methods??[];const{shapeSvg:u,bbox:d}=await he(t,e,r,o,a),{labelStyles:f,nodeStyles:g}=(0,n.GX)(e);e.labelStyle=f,e.cssStyles=l.styles||"";const y=l.styles?.join(";")||g||"";e.cssStyles||(e.cssStyles=y.replaceAll("!important","").split(";"));const m=0===l.members.length&&0===l.methods.length&&!r.class?.hideEmptyMembersBox,x=h.A.svg(u),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=d.width;let w=d.height;0===l.members.length&&0===l.methods.length?w+=a:l.members.length>0&&0===l.methods.length&&(w+=2*a);const C=-k/2,_=-w/2,v=x.rectangle(C-i,_-i-(m?i:0===l.members.length&&0===l.methods.length?-i/2:0),k+2*i,w+2*i+(m?2*i:0===l.members.length&&0===l.methods.length?-i:0),b),S=u.insert(()=>v,":first-child");S.attr("class","basic label-container");const T=S.node().getBBox();u.selectAll(".text").each((t,e,r)=>{const n=(0,c.Ltv)(r[e]),a=n.attr("transform");let s=0;if(a){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(a);t&&(s=parseFloat(t[2]))}let h=s+_+i-(m?i:0===l.members.length&&0===l.methods.length?-i/2:0);o||(h-=4);let d=C;(n.attr("class").includes("label-group")||n.attr("class").includes("annotation-group"))&&(d=-n.node()?.getBBox().width/2||0,u.selectAll("text").each(function(t,e,r){"middle"===window.getComputedStyle(r[e]).textAnchor&&(d=0)})),n.attr("transform",`translate(${d}, ${h})`)});const A=u.select(".annotation-group").node().getBBox().height-(m?i/2:0)||0,M=u.select(".label-group").node().getBBox().height-(m?i/2:0)||0,B=u.select(".members-group").node().getBBox().height-(m?i/2:0)||0;if(l.members.length>0||l.methods.length>0||m){const t=x.line(T.x,A+M+_+i,T.x+T.width,A+M+_+i,b);u.insert(()=>t).attr("class","divider").attr("style",y)}if(m||l.members.length>0||l.methods.length>0){const t=x.line(T.x,A+M+B+_+2*a+i,T.x+T.width,A+M+B+_+i+2*a,b);u.insert(()=>t).attr("class","divider").attr("style",y)}if("handDrawn"!==l.look&&u.selectAll("path").attr("style",y),S.select(":nth-child(2)").attr("style",y),u.selectAll(".divider").select("path").attr("style",y),e.labelStyle?u.selectAll("span").attr("style",e.labelStyle):u.selectAll("span").attr("style",y),!o){const t=RegExp(/color\s*:\s*([^;]*)/),e=t.exec(y);if(e){const t=e[0].replace("color","fill");u.selectAll("tspan").attr("style",t)}else if(f){const e=t.exec(f);if(e){const t=e[0].replace("color","fill");u.selectAll("tspan").attr("style",t)}}}return p(e,S),e.intersect=function(t){return z.rect(e,t)},u}async function pe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const a=e,o=e,s="verifyMethod"in e,l=f(e),u=t.insert("g").attr("class",l).attr("id",e.domId??e.id);let d;d=s?await fe(u,`<<${a.type}>>`,0,e.labelStyle):await fe(u,"<<Element>>",0,e.labelStyle);let g=d;const y=await fe(u,a.name,g,e.labelStyle+"; font-weight: bold;");if(g+=y+20,s){g+=await fe(u,""+(a.requirementId?`ID: ${a.requirementId}`:""),g,e.labelStyle);g+=await fe(u,""+(a.text?`Text: ${a.text}`:""),g,e.labelStyle);g+=await fe(u,""+(a.risk?`Risk: ${a.risk}`:""),g,e.labelStyle),await fe(u,""+(a.verifyMethod?`Verification: ${a.verifyMethod}`:""),g,e.labelStyle)}else{g+=await fe(u,""+(o.type?`Type: ${o.type}`:""),g,e.labelStyle),await fe(u,""+(o.docRef?`Doc Ref: ${o.docRef}`:""),g,e.labelStyle)}const m=(u.node()?.getBBox().width??200)+20,x=(u.node()?.getBBox().height??200)+20,b=-m/2,k=-x/2,w=h.A.svg(u),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=w.rectangle(b,k,m,x,C),v=u.insert(()=>_,":first-child");if(v.attr("class","basic label-container").attr("style",i),u.selectAll(".label").each((t,e,r)=>{const i=(0,c.Ltv)(r[e]),n=i.attr("transform");let a=0,o=0;if(n){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(n);t&&(a=parseFloat(t[1]),o=parseFloat(t[2]))}const s=o-x/2;let l=b+10;0!==e&&1!==e||(l=a),i.attr("transform",`translate(${l}, ${s+20})`)}),g>d+y+20){const t=w.line(b,k+d+y+20,b+m,k+d+y+20,C);u.insert(()=>t).attr("style",i)}return p(e,v),e.intersect=function(t){return z.rect(e,t)},u}async function fe(t,e,r,i=""){if(""===e)return 0;const n=t.insert("g").attr("class","label").attr("style",i),l=(0,s.D7)(),h=l.htmlLabels??!0,u=await(0,a.GZ)(n,(0,s.oB)((0,o.Sm)(e)),{width:(0,o.Un)(e,l)+50,classes:"markdown-node-label",useHtmlLabels:h,style:i},l);let d;if(h){const t=u.children[0],e=(0,c.Ltv)(u);d=t.getBoundingClientRect(),e.attr("width",d.width),e.attr("height",d.height)}else{const t=u.children[0];for(const e of t.children)e.textContent=e.textContent.replaceAll(">",">").replaceAll("<","<"),i&&e.setAttribute("style",i);d=u.getBBox(),d.height+=6}return n.attr("transform",`translate(${-d.width/2},${-d.height/2+r})`),d.height}(0,l.K2)(ee,"tiltedCylinder"),(0,l.K2)(re,"trapezoid"),(0,l.K2)(ie,"trapezoidalPentagon"),(0,l.K2)(ne,"triangle"),(0,l.K2)(ae,"waveEdgedRectangle"),(0,l.K2)(oe,"waveRectangle"),(0,l.K2)(se,"windowPane"),(0,l.K2)(le,"erBox"),(0,l.K2)(ce,"addText"),(0,l.K2)(he,"textHelper"),(0,l.K2)(ue,"addText"),(0,l.K2)(de,"classBox"),(0,l.K2)(pe,"requirementBox"),(0,l.K2)(fe,"addText");var ge=(0,l.K2)(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");async function ye(t,e,{config:r}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i||"";const o=e.width;e.width=(e.width??200)-10;const{shapeSvg:s,bbox:l,label:c}=await u(t,e,f(e)),g=e.padding||10;let y,m="";"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(m=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),y=s.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",m).attr("target","_blank"));const x={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1};let b,k;({label:b,bbox:k}=y?await d(y,"ticket"in e&&e.ticket||"",x):await d(s,"ticket"in e&&e.ticket||"",x));const{label:w,bbox:_}=await d(s,"assigned"in e&&e.assigned||"",x);e.width=o;const v=e?.width||0,S=Math.max(k.height,_.height)/2,T=Math.max(l.height+20,e?.height||0)+S,A=-v/2,M=-T/2;let B;c.attr("transform","translate("+(g-v/2)+", "+(-S-l.height/2)+")"),b.attr("transform","translate("+(g-v/2)+", "+(-S+l.height/2)+")"),w.attr("transform","translate("+(g+v/2-_.width-20)+", "+(-S+l.height/2)+")");const{rx:L,ry:F}=e,{cssStyles:$}=e;if("handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=L||F?t.path(C(A,M,v,T,L||0),r):t.rectangle(A,M,v,T,r);B=s.insert(()=>i,":first-child"),B.attr("class","basic label-container").attr("style",$||null)}else{B=s.insert("rect",":first-child"),B.attr("class","basic label-container __APA__").attr("style",a).attr("rx",L??5).attr("ry",F??5).attr("x",A).attr("y",M).attr("width",v).attr("height",T);const t="priority"in e&&e.priority;if(t){const e=s.append("line"),r=A+2,i=M+Math.floor((L??0)/2),n=M+T-Math.floor((L??0)/2);e.attr("x1",r).attr("y1",i).attr("x2",r).attr("y2",n).attr("stroke-width","4").attr("stroke",ge(t))}}return p(e,B),e.height=T,e.intersect=function(t){return z.rect(e,t)},s}async function me(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c,label:d}=await u(t,e,f(e)),g=s.width+10*c,y=s.height+8*c,m=.15*g,{cssStyles:x}=e,b=s.width+20,k=s.height+20,w=Math.max(g,b),C=Math.max(y,k);let _;d.attr("transform",`translate(${-s.width/2}, ${-s.height/2})`);const v=`M0 0 \n a${m},${m} 1 0,0 ${.25*w},${-1*C*.1}\n a${m},${m} 1 0,0 ${.25*w},0\n a${m},${m} 1 0,0 ${.25*w},0\n a${m},${m} 1 0,0 ${.25*w},${.1*C}\n\n a${m},${m} 1 0,0 ${.15*w},${.33*C}\n a${.8*m},${.8*m} 1 0,0 0,${.34*C}\n a${m},${m} 1 0,0 ${-1*w*.15},${.33*C}\n\n a${m},${m} 1 0,0 ${-1*w*.25},${.15*C}\n a${m},${m} 1 0,0 ${-1*w*.25},0\n a${m},${m} 1 0,0 ${-1*w*.25},0\n a${m},${m} 1 0,0 ${-1*w*.25},${-1*C*.15}\n\n a${m},${m} 1 0,0 ${-1*w*.1},${-1*C*.33}\n a${.8*m},${.8*m} 1 0,0 0,${-1*C*.34}\n a${m},${m} 1 0,0 ${.1*w},${-1*C*.33}\n H0 V0 Z`;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.path(v,r);_=a.insert(()=>i,":first-child"),_.attr("class","basic label-container").attr("style",(0,o.KL)(x))}else _=a.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",v);return _.attr("transform",`translate(${-w/2}, ${-C/2})`),p(e,_),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return l.Rm.info("Bang intersect",e,t),z.rect(e,t)},a}async function xe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c,label:d}=await u(t,e,f(e)),g=s.width+2*c,y=s.height+2*c,m=.15*g,x=.25*g,b=.35*g,k=.2*g,{cssStyles:w}=e;let C;const _=`M0 0 \n a${m},${m} 0 0,1 ${.25*g},${-1*g*.1}\n a${b},${b} 1 0,1 ${.4*g},${-1*g*.1}\n a${x},${x} 1 0,1 ${.35*g},${.2*g}\n\n a${m},${m} 1 0,1 ${.15*g},${.35*y}\n a${k},${k} 1 0,1 ${-1*g*.15},${.65*y}\n\n a${x},${m} 1 0,1 ${-1*g*.25},${.15*g}\n a${b},${b} 1 0,1 ${-1*g*.5},0\n a${m},${m} 1 0,1 ${-1*g*.25},${-1*g*.15}\n\n a${m},${m} 1 0,1 ${-1*g*.1},${-1*y*.35}\n a${k},${k} 1 0,1 ${.1*g},${-1*y*.65}\n H0 V0 Z`;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.path(_,r);C=a.insert(()=>i,":first-child"),C.attr("class","basic label-container").attr("style",(0,o.KL)(w))}else C=a.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",_);return d.attr("transform",`translate(${-s.width/2}, ${-s.height/2})`),C.attr("transform",`translate(${-g/2}, ${-y/2})`),p(e,C),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return l.Rm.info("Cloud intersect",e,t),z.rect(e,t)},a}async function be(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,halfPadding:s,label:l}=await u(t,e,f(e)),c=o.width+8*s,h=o.height+2*s,d=`\n M${-c/2} ${h/2-5}\n v${10-h}\n q0,-5 5,-5\n h${c-10}\n q5,0 5,5\n v${h-10}\n q0,5 -5,5\n h${10-c}\n q-5,0 -5,-5\n Z\n `,g=a.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("style",i).attr("d",d);return a.append("line").attr("class","node-line-").attr("x1",-c/2).attr("y1",h/2).attr("x2",c/2).attr("y2",h/2),l.attr("transform",`translate(${-o.width/2}, ${-o.height/2})`),a.append(()=>l.node()),p(e,g),e.calcIntersect=function(t,e){return z.rect(t,e)},e.intersect=function(t){return z.rect(e,t)},a}async function ke(t,e){return G(t,e,{padding:e.padding??0})}(0,l.K2)(ye,"kanbanItem"),(0,l.K2)(me,"bang"),(0,l.K2)(xe,"cloud"),(0,l.K2)(be,"defaultMindmapNode"),(0,l.K2)(ke,"mindmapCircle");var we=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:jt},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Pt},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Wt},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Gt},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:st},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:G},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:me},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:xe},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Rt},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:ft},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:St},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:vt},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:re},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:wt},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:ct},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:Zt},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:U},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:zt},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Yt},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Ut},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:dt},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:gt},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:Q},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:tt},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:rt},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:Tt},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:ae},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:pt},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ee},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:Lt},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:it},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:lt},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:ne},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:se},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:ht},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:ie},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:ut},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:qt},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Et},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:$t},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:W},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:V},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Vt},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Xt},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:oe},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Kt},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Ft}],Ce=(0,l.K2)(()=>{const t={state:Ht,choice:Y,note:Dt,rectWithTitle:It,labelRect:_t,iconSquare:bt,iconCircle:mt,icon:yt,iconRounded:xt,imageSquare:kt,anchor:q,kanbanItem:ye,mindmapCircle:ke,defaultMindmapNode:be,classBox:de,erBox:le,requirementBox:pe},e=[...Object.entries(t),...we.flatMap(t=>[t.shortName,..."aliases"in t?t.aliases:[],..."internalAliases"in t?t.internalAliases:[]].map(e=>[e,t.handler]))];return Object.fromEntries(e)},"generateShapeMap")();function _e(t){return t in Ce}(0,l.K2)(_e,"isValidShape");var ve=new Map;async function Se(t,e,r){let i,n;"rect"===e.shape&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");const a=e.shape?Ce[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let o;"sandbox"===r.config.securityLevel?o="_top":e.linkTarget&&(o=e.linkTarget||"_blank"),i=t.insert("svg:a").attr("xlink:href",e.link).attr("target",o??null),n=await a(i,e,r)}else n=await a(t,e,r),i=n;return e.tooltip&&n.attr("title",e.tooltip),ve.set(e.id,i),e.haveCallback&&i.attr("class",i.attr("class")+" clickable"),i}(0,l.K2)(Se,"insertNode");var Te=(0,l.K2)((t,e)=>{ve.set(e.id,t)},"setNodeElem"),Ae=(0,l.K2)(()=>{ve.clear()},"clear"),Me=(0,l.K2)(t=>{const e=ve.get(t.id);l.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode")},6401:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(1852),n=r(9779),a=r(2274),o=r(2049),s=r(8446),l=r(9912),c=r(7271),h=r(3858),u=Object.prototype.hasOwnProperty;const d=function(t){if(null==t)return!0;if((0,s.A)(t)&&((0,o.A)(t)||"string"==typeof t||"function"==typeof t.splice||(0,l.A)(t)||(0,h.A)(t)||(0,a.A)(t)))return!t.length;var e=(0,n.A)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,c.A)(t))return!(0,i.A)(t).length;for(var r in t)if(u.call(t,r))return!1;return!0}},6632:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(9471);function n(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],a=r.cache;if(a.has(n))return a.get(n);var o=t.apply(this,i);return r.cache=a.set(n,o)||a,o};return r.cache=new(n.Cache||i.A),r}n.Cache=i.A;const a=n},6750:(t,e,r)=>{"use strict";e.J=void 0;var i=r(9119);function n(t){return t.replace(i.ctrlCharactersRegex,"").replace(i.htmlEntitiesRegex,function(t,e){return String.fromCharCode(e)})}function a(t){try{return decodeURIComponent(t)}catch(e){return t}}e.J=function(t){if(!t)return i.BLANK_URL;var e,r=a(t.trim());do{e=(r=a(r=n(r).replace(i.htmlCtrlEntityRegex,"").replace(i.ctrlCharactersRegex,"").replace(i.whitespaceEscapeCharsRegex,"").trim())).match(i.ctrlCharactersRegex)||r.match(i.htmlEntitiesRegex)||r.match(i.htmlCtrlEntityRegex)||r.match(i.whitespaceEscapeCharsRegex)}while(e&&e.length>0);var o=r;if(!o)return i.BLANK_URL;if(function(t){return i.relativeFirstCharacters.indexOf(t[0])>-1}(o))return o;var s=o.trimStart(),l=s.match(i.urlSchemeRegex);if(!l)return o;var c=l[0].toLowerCase().trim();if(i.invalidProtocolRegex.test(c))return i.BLANK_URL;var h=s.replace(/\\/g,"/");if("mailto:"===c||c.includes("://"))return h;if("http:"===c||"https:"===c){if(!function(t){return URL.canParse(t)}(h))return i.BLANK_URL;var u=new URL(h);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return h}},6832:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(6984),n=r(8446),a=r(5353),o=r(3149);const s=function(t,e,r){if(!(0,o.A)(r))return!1;var s=typeof e;return!!("number"==s?(0,n.A)(r)&&(0,a.A)(e,r.length):"string"==s&&e in r)&&(0,i.A)(r[e],t)}},6875:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});const i=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var n=Math.max;const a=function(t,e,r){return e=n(void 0===e?t.length-1:e,0),function(){for(var a=arguments,o=-1,s=n(a.length-e,0),l=Array(s);++o{"use strict";r.d(e,{A:()=>i});const i=function(t,e){return t===e||t!=t&&e!=e}},7271:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=Object.prototype;const n=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||i)}},7525:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(9142),n=r(4171),a=r(9008);const o=n.A?function(t,e){return(0,n.A)(t,"toString",{configurable:!0,enumerable:!1,value:(0,i.A)(e),writable:!0})}:a.A;var s=Date.now;const l=function(t){var e=0,r=0;return function(){var i=s(),n=16-(i-r);if(r=i,n>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(o)},7633:(t,e,r)=>{"use strict";r.d(e,{C0:()=>x,xA:()=>nt,hH:()=>S,Dl:()=>Dt,IU:()=>Zt,Wt:()=>Ut,Y2:()=>Kt,a$:()=>Pt,sb:()=>U,ME:()=>le,UI:()=>j,Ch:()=>k,mW:()=>b,DB:()=>y,_3:()=>vt,EJ:()=>g,m7:()=>ee,iN:()=>Jt,zj:()=>rt,D7:()=>oe,Gs:()=>fe,J$:()=>_,ab:()=>ie,Q2:()=>tt,P$:()=>D,ID:()=>_t,TM:()=>ht,Wi:()=>Et,H1:()=>ut,QO:()=>At,Js:()=>pe,Xd:()=>w,dj:()=>Rt,cL:()=>at,$i:()=>W,jZ:()=>mt,oB:()=>ce,wZ:()=>Q,EI:()=>te,SV:()=>Qt,Nk:()=>et,XV:()=>se,ke:()=>re,UU:()=>Z,ot:()=>zt,mj:()=>he,tM:()=>Ht,H$:()=>I,B6:()=>J});var i=r(797),n=r(4886),a=r(8232);const o=(t,e)=>{const r=n.A.parse(t),i={};for(const n in e)e[n]&&(i[n]=r[n]+e[n]);return(0,a.A)(t,i)};var s=r(5582);const l=(t,e,r=50)=>{const{r:i,g:a,b:o,a:l}=n.A.parse(t),{r:c,g:h,b:u,a:d}=n.A.parse(e),p=r/100,f=2*p-1,g=l-d,y=((f*g===-1?f:(f+g)/(1+f*g))+1)/2,m=1-y,x=i*y+c*m,b=a*y+h*m,k=o*y+u*m,w=l*p+d*(1-p);return(0,s.A)(x,b,k,w)},c=(t,e=100)=>{const r=n.A.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,l(r,t,e)};var h,u=r(5263),d=r(8041),p=r(3219),f=r(9418),g=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,y=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,m=/\s*%%.*\n/gm,x=class extends Error{static{(0,i.K2)(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}},b={},k=(0,i.K2)(function(t,e){t=t.replace(g,"").replace(y,"").replace(m,"\n");for(const[r,{detector:i}]of Object.entries(b)){if(i(t,e))return r}throw new x(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),w=(0,i.K2)((...t)=>{for(const{id:e,detector:r,loader:i}of t)C(e,r,i)},"registerLazyLoadedDiagrams"),C=(0,i.K2)((t,e,r)=>{b[t]&&i.Rm.warn(`Detector with key ${t} already exists. Overwriting.`),b[t]={detector:e,loader:r},i.Rm.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),_=(0,i.K2)(t=>b[t].loader,"getDiagramLoader"),v=(0,i.K2)((t,e,{depth:r=2,clobber:i=!1}={})=>{const n={depth:r,clobber:i};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(e=>v(t,e,n)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(e=>{t.includes(e)||t.push(e)}),t):void 0===t||r<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach(n=>{"object"!=typeof e[n]||void 0!==t[n]&&"object"!=typeof t[n]?(i||"object"!=typeof t[n]&&"object"!=typeof e[n])&&(t[n]=e[n]):(void 0===t[n]&&(t[n]=Array.isArray(e[n])?[]:{}),t[n]=v(t[n],e[n],{depth:r-1,clobber:i}))}),t)},"assignWithDepth"),S=v,T="#ffffff",A="#f2f2f2",M=(0,i.K2)((t,e)=>o(t,e?{s:-40,l:10}:{s:-40,l:-10}),"mkBorder"),B=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||M(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||M(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||M(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||c(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||c(this.tertiaryColor),this.lineColor=this.lineColor||c(this.background),this.arrowheadColor=this.arrowheadColor||c(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,u.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,u.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||c(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,d.A)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||(0,u.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,10)):(this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||(0,d.A)(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},L=(0,i.K2)(t=>{const e=new B;return e.calculate(t),e},"getThemeVariables"),F=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,d.A)(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=c(this.background),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,d.A)(c("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=(0,s.A)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,u.A)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=(0,u.A)(this.sectionBkgColor,10),this.taskBorderColor=(0,s.A)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=(0,s.A)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,d.A)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,d.A)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,d.A)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330});for(let t=0;t{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},$=(0,i.K2)(t=>{const e=new F;return e.calculate(t),e},"getThemeVariables"),E=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=o(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=(0,s.A)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,u.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,u.A)(this.tertiaryColor,40);for(let t=0;t{"calculated"===this[t]&&(this[t]=void 0)}),"object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach(e=>{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},D=(0,i.K2)(t=>{const e=new E;return e.calculate(t),e},"getThemeVariables"),O=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,d.A)("#cde498",10),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.primaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=(0,u.A)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,u.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,u.A)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},R=(0,i.K2)(t=>{const e=new O;return e.calculate(t),e},"getThemeVariables"),K=class{static{(0,i.K2)(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,d.A)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,d.A)(this.contrast,55),this.border2=this.contrast,this.actorBorder=(0,d.A)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[e]=t[e]}),this.updateColors(),e.forEach(e=>{this[e]=t[e]})}},I={base:{getThemeVariables:L},dark:{getThemeVariables:$},default:{getThemeVariables:D},forest:{getThemeVariables:R},neutral:{getThemeVariables:(0,i.K2)(t=>{const e=new K;return e.calculate(t),e},"getThemeVariables")}},N={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1},P={...N,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:I.default.getThemeVariables(),sequence:{...N.sequence,messageFont:(0,i.K2)(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:(0,i.K2)(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:(0,i.K2)(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...N.gantt,tickInterval:void 0,useWidth:void 0},c4:{...N.c4,useWidth:void 0,personFont:(0,i.K2)(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...N.flowchart,inheritDir:!1},external_personFont:(0,i.K2)(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:(0,i.K2)(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:(0,i.K2)(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:(0,i.K2)(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:(0,i.K2)(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:(0,i.K2)(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:(0,i.K2)(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:(0,i.K2)(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:(0,i.K2)(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:(0,i.K2)(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:(0,i.K2)(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:(0,i.K2)(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:(0,i.K2)(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:(0,i.K2)(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:(0,i.K2)(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:(0,i.K2)(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:(0,i.K2)(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...N.pie,useWidth:984},xyChart:{...N.xyChart,useWidth:void 0},requirement:{...N.requirement,useWidth:void 0},packet:{...N.packet},radar:{...N.radar},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","}},z=(0,i.K2)((t,e="")=>Object.keys(t).reduce((r,i)=>Array.isArray(t[i])?r:"object"==typeof t[i]&&null!==t[i]?[...r,e+i,...z(t[i],"")]:[...r,e+i],[]),"keyify"),q=new Set(z(P,"")),j=P,W=(0,i.K2)(t=>{if(i.Rm.debug("sanitizeDirective called with",t),"object"==typeof t&&null!=t)if(Array.isArray(t))t.forEach(t=>W(t));else{for(const e of Object.keys(t)){if(i.Rm.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!q.has(e)||null==t[e]){i.Rm.debug("sanitize deleting key: ",e),delete t[e];continue}if("object"==typeof t[e]){i.Rm.debug("sanitizing object",e),W(t[e]);continue}const r=["themeCSS","fontFamily","altFontFamily"];for(const n of r)e.includes(n)&&(i.Rm.debug("sanitizing css option",e),t[e]=H(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}i.Rm.debug("After sanitization",t)}},"sanitizeDirective"),H=(0,i.K2)(t=>{let e=0,r=0;for(const i of t){if(e{let r=S({},t),i={};for(const n of e)it(n),i=S(i,n);if(r=S(r,i),i.theme&&i.theme in I){const t=S({},h),e=S(t.themeVariables||{},i.themeVariables);r.theme&&r.theme in I&&(r.themeVariables=I[r.theme].getThemeVariables(e))}return ct(X=r),X},"updateCurrentConfig"),Z=(0,i.K2)(t=>(Y=S({},U),Y=S(Y,t),t.theme&&I[t.theme]&&(Y.themeVariables=I[t.theme].getThemeVariables(t.themeVariables)),V(Y,G),Y),"setSiteConfig"),Q=(0,i.K2)(t=>{h=S({},t)},"saveConfigFromInitialize"),J=(0,i.K2)(t=>(Y=S(Y,t),V(Y,G),Y),"updateSiteConfig"),tt=(0,i.K2)(()=>S({},Y),"getSiteConfig"),et=(0,i.K2)(t=>(ct(t),S(X,t),rt()),"setConfig"),rt=(0,i.K2)(()=>S({},X),"getConfig"),it=(0,i.K2)(t=>{t&&(["secure",...Y.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(i.Rm.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&it(t[e])}))},"sanitize"),nt=(0,i.K2)(t=>{W(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),G.push(t),V(Y,G)},"addDirective"),at=(0,i.K2)((t=Y)=>{V(t,G=[])},"reset"),ot={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},st={},lt=(0,i.K2)(t=>{st[t]||(i.Rm.warn(ot[t]),st[t]=!0)},"issueWarning"),ct=(0,i.K2)(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&<("LAZY_LOAD_DEPRECATED")},"checkConfig"),ht=(0,i.K2)(()=>{let t={};h&&(t=S(t,h));for(const e of G)t=S(t,e);return t},"getUserDefinedConfig"),ut=//gi,dt=(0,i.K2)(t=>{if(!t)return[""];return Ct(t).replace(/\\n/g,"#br#").split("#br#")},"getRows"),pt=(()=>{let t=!1;return()=>{t||(ft(),t=!0)}})();function ft(){const t="data-temp-href-target";f.A.addHook("beforeSanitizeAttributes",e=>{"A"===e.tagName&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),f.A.addHook("afterSanitizeAttributes",e=>{"A"===e.tagName&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),"_blank"===e.getAttribute("target")&&e.setAttribute("rel","noopener"))})}(0,i.K2)(ft,"setupDompurifyHooks");var gt=(0,i.K2)(t=>{pt();return f.A.sanitize(t)},"removeScript"),yt=(0,i.K2)((t,e)=>{if(!1!==e.flowchart?.htmlLabels){const r=e.securityLevel;"antiscript"===r||"strict"===r?t=gt(t):"loose"!==r&&(t=(t=(t=Ct(t)).replace(//g,">")).replace(/=/g,"="),t=wt(t))}return t},"sanitizeMore"),mt=(0,i.K2)((t,e)=>t?t=e.dompurifyConfig?f.A.sanitize(yt(t,e),e.dompurifyConfig).toString():f.A.sanitize(yt(t,e),{FORBID_TAGS:["style"]}).toString():t,"sanitizeText"),xt=(0,i.K2)((t,e)=>"string"==typeof t?mt(t,e):t.flat().map(t=>mt(t,e)),"sanitizeTextOrArray"),bt=(0,i.K2)(t=>ut.test(t),"hasBreaks"),kt=(0,i.K2)(t=>t.split(ut),"splitBreaks"),wt=(0,i.K2)(t=>t.replace(/#br#/g,"
    "),"placeholderToBreak"),Ct=(0,i.K2)(t=>t.replace(ut,"#br#"),"breakToPlaceholder"),_t=(0,i.K2)(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),vt=(0,i.K2)(t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),"evaluate"),St=(0,i.K2)(function(...t){const e=t.filter(t=>!isNaN(t));return Math.max(...e)},"getMax"),Tt=(0,i.K2)(function(...t){const e=t.filter(t=>!isNaN(t));return Math.min(...e)},"getMin"),At=(0,i.K2)(function(t){const e=t.split(/(,)/),r=[];for(let i=0;i0&&i+1Math.max(0,t.split(e).length-1),"countOccurrence"),Bt=(0,i.K2)((t,e)=>{const r=Mt(t,"~"),i=Mt(e,"~");return 1===r&&1===i},"shouldCombineSets"),Lt=(0,i.K2)(t=>{const e=Mt(t,"~");let r=!1;if(e<=1)return t;e%2!=0&&t.startsWith("~")&&(t=t.substring(1),r=!0);const i=[...t];let n=i.indexOf("~"),a=i.lastIndexOf("~");for(;-1!==n&&-1!==a&&n!==a;)i[n]="<",i[a]=">",n=i.indexOf("~"),a=i.lastIndexOf("~");return r&&i.unshift("~"),i.join("")},"processSet"),Ft=(0,i.K2)(()=>void 0!==window.MathMLElement,"isMathMLSupported"),$t=/\$\$(.*)\$\$/g,Et=(0,i.K2)(t=>(t.match($t)?.length??0)>0,"hasKatex"),Dt=(0,i.K2)(async(t,e)=>{const r=document.createElement("div");r.innerHTML=await Rt(t,e),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0";const i=document.querySelector("body");i?.insertAdjacentElement("beforeend",r);const n={width:r.clientWidth,height:r.clientHeight};return r.remove(),n},"calculateMathMLDimensions"),Ot=(0,i.K2)(async(t,e)=>{if(!Et(t))return t;if(!(Ft()||e.legacyMathML||e.forceLegacyMathML))return t.replace($t,"MathML is unsupported in this environment.");{const{default:i}=await r.e(2130).then(r.bind(r,2130)),n=e.forceLegacyMathML||!Ft()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(ut).map(t=>Et(t)?`
    ${t}
    `:`
    ${t}
    `).join("").replace($t,(t,e)=>i.renderToString(e,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))}},"renderKatexUnsanitized"),Rt=(0,i.K2)(async(t,e)=>mt(await Ot(t,e),e),"renderKatexSanitized"),Kt={getRows:dt,sanitizeText:mt,sanitizeTextOrArray:xt,hasBreaks:bt,splitBreaks:kt,lineBreakRegex:ut,removeScript:gt,getUrl:_t,evaluate:vt,getMax:St,getMin:Tt},It=(0,i.K2)(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),Nt=(0,i.K2)(function(t,e,r){let i=new Map;return r?(i.set("width","100%"),i.set("style",`max-width: ${e}px;`)):(i.set("height",t),i.set("width",e)),i},"calculateSvgSizeAttrs"),Pt=(0,i.K2)(function(t,e,r,i){const n=Nt(e,r,i);It(t,n)},"configureSvgSize"),zt=(0,i.K2)(function(t,e,r,n){const a=e.node().getBBox(),o=a.width,s=a.height;i.Rm.info(`SVG bounds: ${o}x${s}`,a);let l=0,c=0;i.Rm.info(`Graph bounds: ${l}x${c}`,t),l=o+2*r,c=s+2*r,i.Rm.info(`Calculated bounds: ${l}x${c}`),Pt(e,c,l,n);const h=`${a.x-r} ${a.y-r} ${a.width+2*r} ${a.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox"),qt={},jt=(0,i.K2)((t,e,r)=>{let n="";return t in qt&&qt[t]?n=qt[t](r):i.Rm.warn(`No theme found for ${t}`),` & {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n fill: ${r.textColor}\n }\n @keyframes edge-animation-frame {\n from {\n stroke-dashoffset: 0;\n }\n }\n @keyframes dash {\n to {\n stroke-dashoffset: 0;\n }\n }\n & .edge-animation-slow {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 50s linear infinite;\n stroke-linecap: round;\n }\n & .edge-animation-fast {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 20s linear infinite;\n stroke-linecap: round;\n }\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${r.errorBkgColor};\n }\n & .error-text {\n fill: ${r.errorTextColor};\n stroke: ${r.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 1px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n & .edge-thickness-invisible {\n stroke-width: 0;\n fill: none;\n }\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${r.lineColor};\n stroke: ${r.lineColor};\n }\n & .marker.cross {\n stroke: ${r.lineColor};\n }\n\n & svg {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n }\n & p {\n margin: 0\n }\n\n ${n}\n\n ${e}\n`},"getStyles"),Wt=(0,i.K2)((t,e)=>{void 0!==e&&(qt[t]=e)},"addStylesForDiagram"),Ht=jt,Ut={};(0,i.VA)(Ut,{clear:()=>Zt,getAccDescription:()=>ee,getAccTitle:()=>Jt,getDiagramTitle:()=>ie,setAccDescription:()=>te,setAccTitle:()=>Qt,setDiagramTitle:()=>re});var Yt="",Gt="",Xt="",Vt=(0,i.K2)(t=>mt(t,rt()),"sanitizeText"),Zt=(0,i.K2)(()=>{Yt="",Xt="",Gt=""},"clear"),Qt=(0,i.K2)(t=>{Yt=Vt(t).replace(/^\s+/g,"")},"setAccTitle"),Jt=(0,i.K2)(()=>Yt,"getAccTitle"),te=(0,i.K2)(t=>{Xt=Vt(t).replace(/\n\s+/g,"\n")},"setAccDescription"),ee=(0,i.K2)(()=>Xt,"getAccDescription"),re=(0,i.K2)(t=>{Gt=Vt(t)},"setDiagramTitle"),ie=(0,i.K2)(()=>Gt,"getDiagramTitle"),ne=i.Rm,ae=i.He,oe=rt,se=et,le=U,ce=(0,i.K2)(t=>mt(t,oe()),"sanitizeText"),he=zt,ue=(0,i.K2)(()=>Ut,"getCommonDb"),de={},pe=(0,i.K2)((t,e,r)=>{de[t]&&ne.warn(`Diagram with id ${t} already registered. Overwriting.`),de[t]=e,r&&C(t,r),Wt(t,e.styles),e.injectUtils?.(ne,ae,oe,ce,he,ue(),()=>{})},"registerDiagram"),fe=(0,i.K2)(t=>{if(t in de)return de[t];throw new ge(t)},"getDiagram"),ge=class extends Error{static{(0,i.K2)(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}},8041:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(5635);const n=(t,e)=>(0,i.A)(t,"l",e)},8232:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(2453),n=r(4886);const a=(t,e)=>{const r=n.A.parse(t);for(const n in e)r[n]=i.A.channel.clamp[n](e[n]);return n.A.stringify(r)}},8335:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(8744),n=r(1917);const a=(0,i.A)(n.A,"Map")},8446:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(9610),n=r(5254);const a=function(t){return null!=t&&(0,n.A)(t.length)&&!(0,i.A)(t)}},8496:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(241),n=Object.prototype,a=n.hasOwnProperty,o=n.toString,s=i.A?i.A.toStringTag:void 0;const l=function(t){var e=a.call(t,s),r=t[s];try{t[s]=void 0;var i=!0}catch(l){}var n=o.call(t);return i&&(e?t[s]=r:delete t[s]),n};var c=Object.prototype.toString;const h=function(t){return c.call(t)};var u=i.A?i.A.toStringTag:void 0;const d=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":u&&u in Object(t)?l(t):h(t)}},8598:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(3149),n=Object.create;const a=function(){function t(){}return function(e){if(!(0,i.A)(e))return{};if(n)return n(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();var o=r(5647),s=r(7271);const l=function(t){return"function"!=typeof t.constructor||(0,s.A)(t)?{}:a((0,o.A)(t))}},8698:(t,e,r)=>{"use strict";r.d(e,{Nq:()=>a,RI:()=>l,hq:()=>n});var i=r(797),n={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4},a={arrow_point:9,arrow_cross:12.5,arrow_circle:12.5};function o(t,e){if(void 0===t||void 0===e)return{angle:0,deltaX:0,deltaY:0};t=s(t),e=s(e);const[r,i]=[t.x,t.y],[n,a]=[e.x,e.y],o=n-r,l=a-i;return{angle:Math.atan(l/o),deltaX:o,deltaY:l}}(0,i.K2)(o,"calculateDeltaAndAngle");var s=(0,i.K2)(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),l=(0,i.K2)(t=>({x:(0,i.K2)(function(e,r,i){let a=0;const l=s(i[0]).x=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){const{angle:e,deltaX:r}=o(i[i.length-1],i[i.length-2]);a=n[t.arrowTypeEnd]*Math.cos(e)*(r>=0?1:-1)}const c=Math.abs(s(e).x-s(i[i.length-1]).x),h=Math.abs(s(e).y-s(i[i.length-1]).y),u=Math.abs(s(e).x-s(i[0]).x),d=Math.abs(s(e).y-s(i[0]).y),p=n[t.arrowTypeStart],f=n[t.arrowTypeEnd];if(c0&&h0&&d=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){const{angle:e,deltaY:r}=o(i[i.length-1],i[i.length-2]);a=n[t.arrowTypeEnd]*Math.abs(Math.sin(e))*(r>=0?1:-1)}const c=Math.abs(s(e).y-s(i[i.length-1]).y),h=Math.abs(s(e).x-s(i[i.length-1]).x),u=Math.abs(s(e).y-s(i[0]).y),d=Math.abs(s(e).x-s(i[0]).x),p=n[t.arrowTypeStart],f=n[t.arrowTypeEnd];if(c0&&h0&&d{"use strict";r.d(e,{A:()=>x});var i=r(9610);const n=r(1917).A["__core-js_shared__"];var a,o=(a=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";const s=function(t){return!!o&&o in t};var l=r(3149),c=r(1121),h=/^\[object .+?Constructor\]$/,u=Function.prototype,d=Object.prototype,p=u.toString,f=d.hasOwnProperty,g=RegExp("^"+p.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const y=function(t){return!(!(0,l.A)(t)||s(t))&&((0,i.A)(t)?g:h).test((0,c.A)(t))};const m=function(t,e){return null==t?void 0:t[e]};const x=function(t,e){var r=m(t,e);return y(r)?r:void 0}},9008:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return t}},9119:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0,e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,e.htmlCtrlEntityRegex=/&(newline|tab);/gi,e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,e.urlSchemeRegex=/^.+(:|:)/gim,e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,e.relativeFirstCharacters=[".","/"],e.BLANK_URL="about:blank"},9142:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return function(){return t}}},9264:(t,e,r)=>{"use strict";r.d(e,{n:()=>i});var i={name:"mermaid",version:"11.12.2",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.1.1","@iconify/utils":"^3.0.1","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.13",dayjs:"^1.11.18",dompurify:"^3.2.5",katex:"^0.16.22",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^16.2.1",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.5","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",canvas:"^3.1.2",chokidar:"3.6.0",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.1.0",jison:"^0.4.18","js-base64":"^3.7.8",jsdom:"^26.1.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.3",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.13","type-fest":"^4.35.0",typedoc:"^0.28.12","typedoc-plugin-markdown":"^4.8.1",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.6.4","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}},9418:(t,e,r)=>{"use strict";r.d(e,{A:()=>st});const{entries:i,setPrototypeOf:n,isFrozen:a,getPrototypeOf:o,getOwnPropertyDescriptor:s}=Object;let{freeze:l,seal:c,create:h}=Object,{apply:u,construct:d}="undefined"!=typeof Reflect&&Reflect;l||(l=function(t){return t}),c||(c=function(t){return t}),u||(u=function(t,e){for(var r=arguments.length,i=new Array(r>2?r-2:0),n=2;n1?e-1:0),i=1;i1?r-1:0),n=1;n2&&void 0!==arguments[2]?arguments[2]:x;n&&n(t,null);let i=e.length;for(;i--;){let n=e[i];if("string"==typeof n){const t=r(n);t!==n&&(a(e)||(e[i]=t),n=t)}t[n]=!0}return t}function L(t){for(let e=0;e/gm),U=c(/\$\{[\w\W]*/gm),Y=c(/^data-[\-\w.\u00B7-\uFFFF]+$/),G=c(/^aria-[\-\w]+$/),X=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),V=c(/^(?:\w+script|data):/i),Z=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Q=c(/^html$/i),J=c(/^[a-z][.\w]*(-[.\w]+)+$/i);var tt=Object.freeze({__proto__:null,ARIA_ATTR:G,ATTR_WHITESPACE:Z,CUSTOM_ELEMENT:J,DATA_ATTR:Y,DOCTYPE_NAME:Q,ERB_EXPR:H,IS_ALLOWED_URI:X,IS_SCRIPT_OR_DATA:V,MUSTACHE_EXPR:W,TMPLIT_EXPR:U});const et=1,rt=3,it=7,nt=8,at=9,ot=function(){return"undefined"==typeof window?null:window};var st=function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ot();const r=e=>t(e);if(r.version="3.3.0",r.removed=[],!e||!e.document||e.document.nodeType!==at||!e.Element)return r.isSupported=!1,r;let{document:n}=e;const a=n,o=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:c,Node:u,Element:d,NodeFilter:A,NamedNodeMap:M=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:L,DOMParser:W,trustedTypes:H}=e,U=d.prototype,Y=$(U,"cloneNode"),G=$(U,"remove"),V=$(U,"nextSibling"),Z=$(U,"childNodes"),J=$(U,"parentNode");if("function"==typeof c){const t=n.createElement("template");t.content&&t.content.ownerDocument&&(n=t.content.ownerDocument)}let st,lt="";const{implementation:ct,createNodeIterator:ht,createDocumentFragment:ut,getElementsByTagName:dt}=n,{importNode:pt}=a;let ft={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};r.isSupported="function"==typeof i&&"function"==typeof J&&ct&&void 0!==ct.createHTMLDocument;const{MUSTACHE_EXPR:gt,ERB_EXPR:yt,TMPLIT_EXPR:mt,DATA_ATTR:xt,ARIA_ATTR:bt,IS_SCRIPT_OR_DATA:kt,ATTR_WHITESPACE:wt,CUSTOM_ELEMENT:Ct}=tt;let{IS_ALLOWED_URI:_t}=tt,vt=null;const St=B({},[...E,...D,...O,...K,...N]);let Tt=null;const At=B({},[...P,...z,...q,...j]);let Mt=Object.seal(h(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Bt=null,Lt=null;const Ft=Object.seal(h(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let $t=!0,Et=!0,Dt=!1,Ot=!0,Rt=!1,Kt=!0,It=!1,Nt=!1,Pt=!1,zt=!1,qt=!1,jt=!1,Wt=!0,Ht=!1,Ut=!0,Yt=!1,Gt={},Xt=null;const Vt=B({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Zt=null;const Qt=B({},["audio","video","img","source","image","track"]);let Jt=null;const te=B({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",re="http://www.w3.org/2000/svg",ie="http://www.w3.org/1999/xhtml";let ne=ie,ae=!1,oe=null;const se=B({},[ee,re,ie],b);let le=B({},["mi","mo","mn","ms","mtext"]),ce=B({},["annotation-xml"]);const he=B({},["title","style","font","a","script"]);let ue=null;const de=["application/xhtml+xml","text/html"];let pe=null,fe=null;const ge=n.createElement("form"),ye=function(t){return t instanceof RegExp||t instanceof Function},me=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!fe||fe!==t){if(t&&"object"==typeof t||(t={}),t=F(t),ue=-1===de.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,pe="application/xhtml+xml"===ue?b:x,vt=v(t,"ALLOWED_TAGS")?B({},t.ALLOWED_TAGS,pe):St,Tt=v(t,"ALLOWED_ATTR")?B({},t.ALLOWED_ATTR,pe):At,oe=v(t,"ALLOWED_NAMESPACES")?B({},t.ALLOWED_NAMESPACES,b):se,Jt=v(t,"ADD_URI_SAFE_ATTR")?B(F(te),t.ADD_URI_SAFE_ATTR,pe):te,Zt=v(t,"ADD_DATA_URI_TAGS")?B(F(Qt),t.ADD_DATA_URI_TAGS,pe):Qt,Xt=v(t,"FORBID_CONTENTS")?B({},t.FORBID_CONTENTS,pe):Vt,Bt=v(t,"FORBID_TAGS")?B({},t.FORBID_TAGS,pe):F({}),Lt=v(t,"FORBID_ATTR")?B({},t.FORBID_ATTR,pe):F({}),Gt=!!v(t,"USE_PROFILES")&&t.USE_PROFILES,$t=!1!==t.ALLOW_ARIA_ATTR,Et=!1!==t.ALLOW_DATA_ATTR,Dt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Ot=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Rt=t.SAFE_FOR_TEMPLATES||!1,Kt=!1!==t.SAFE_FOR_XML,It=t.WHOLE_DOCUMENT||!1,zt=t.RETURN_DOM||!1,qt=t.RETURN_DOM_FRAGMENT||!1,jt=t.RETURN_TRUSTED_TYPE||!1,Pt=t.FORCE_BODY||!1,Wt=!1!==t.SANITIZE_DOM,Ht=t.SANITIZE_NAMED_PROPS||!1,Ut=!1!==t.KEEP_CONTENT,Yt=t.IN_PLACE||!1,_t=t.ALLOWED_URI_REGEXP||X,ne=t.NAMESPACE||ie,le=t.MATHML_TEXT_INTEGRATION_POINTS||le,ce=t.HTML_INTEGRATION_POINTS||ce,Mt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ye(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Mt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ye(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Mt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Mt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Rt&&(Et=!1),qt&&(zt=!0),Gt&&(vt=B({},N),Tt=[],!0===Gt.html&&(B(vt,E),B(Tt,P)),!0===Gt.svg&&(B(vt,D),B(Tt,z),B(Tt,j)),!0===Gt.svgFilters&&(B(vt,O),B(Tt,z),B(Tt,j)),!0===Gt.mathMl&&(B(vt,K),B(Tt,q),B(Tt,j))),t.ADD_TAGS&&("function"==typeof t.ADD_TAGS?Ft.tagCheck=t.ADD_TAGS:(vt===St&&(vt=F(vt)),B(vt,t.ADD_TAGS,pe))),t.ADD_ATTR&&("function"==typeof t.ADD_ATTR?Ft.attributeCheck=t.ADD_ATTR:(Tt===At&&(Tt=F(Tt)),B(Tt,t.ADD_ATTR,pe))),t.ADD_URI_SAFE_ATTR&&B(Jt,t.ADD_URI_SAFE_ATTR,pe),t.FORBID_CONTENTS&&(Xt===Vt&&(Xt=F(Xt)),B(Xt,t.FORBID_CONTENTS,pe)),Ut&&(vt["#text"]=!0),It&&B(vt,["html","head","body"]),vt.table&&(B(vt,["tbody"]),delete Bt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw T('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw T('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');st=t.TRUSTED_TYPES_POLICY,lt=st.createHTML("")}else void 0===st&&(st=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let r=null;const i="data-tt-policy-suffix";e&&e.hasAttribute(i)&&(r=e.getAttribute(i));const n="dompurify"+(r?"#"+r:"");try{return t.createPolicy(n,{createHTML:t=>t,createScriptURL:t=>t})}catch(a){return console.warn("TrustedTypes policy "+n+" could not be created."),null}}(H,o)),null!==st&&"string"==typeof lt&&(lt=st.createHTML(""));l&&l(t),fe=t}},xe=B({},[...D,...O,...R]),be=B({},[...K,...I]),ke=function(t){y(r.removed,{element:t});try{J(t).removeChild(t)}catch(e){G(t)}},we=function(t,e){try{y(r.removed,{attribute:e.getAttributeNode(t),from:e})}catch(i){y(r.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t)if(zt||qt)try{ke(e)}catch(i){}else try{e.setAttribute(t,"")}catch(i){}},Ce=function(t){let e=null,r=null;if(Pt)t=""+t;else{const e=k(t,/^[\r\n\t ]+/);r=e&&e[0]}"application/xhtml+xml"===ue&&ne===ie&&(t=''+t+"");const i=st?st.createHTML(t):t;if(ne===ie)try{e=(new W).parseFromString(i,ue)}catch(o){}if(!e||!e.documentElement){e=ct.createDocument(ne,"template",null);try{e.documentElement.innerHTML=ae?lt:i}catch(o){}}const a=e.body||e.documentElement;return t&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),ne===ie?dt.call(e,It?"html":"body")[0]:It?e.documentElement:a},_e=function(t){return ht.call(t.ownerDocument||t,t,A.SHOW_ELEMENT|A.SHOW_COMMENT|A.SHOW_TEXT|A.SHOW_PROCESSING_INSTRUCTION|A.SHOW_CDATA_SECTION,null)},ve=function(t){return t instanceof L&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof M)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},Se=function(t){return"function"==typeof u&&t instanceof u};function Te(t,e,i){p(t,t=>{t.call(r,e,i,fe)})}const Ae=function(t){let e=null;if(Te(ft.beforeSanitizeElements,t,null),ve(t))return ke(t),!0;const i=pe(t.nodeName);if(Te(ft.uponSanitizeElement,t,{tagName:i,allowedTags:vt}),Kt&&t.hasChildNodes()&&!Se(t.firstElementChild)&&S(/<[/\w!]/g,t.innerHTML)&&S(/<[/\w!]/g,t.textContent))return ke(t),!0;if(t.nodeType===it)return ke(t),!0;if(Kt&&t.nodeType===nt&&S(/<[/\w]/g,t.data))return ke(t),!0;if(!(Ft.tagCheck instanceof Function&&Ft.tagCheck(i))&&(!vt[i]||Bt[i])){if(!Bt[i]&&Be(i)){if(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,i))return!1;if(Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(i))return!1}if(Ut&&!Xt[i]){const e=J(t)||t.parentNode,r=Z(t)||t.childNodes;if(r&&e){for(let i=r.length-1;i>=0;--i){const n=Y(r[i],!0);n.__removalCount=(t.__removalCount||0)+1,e.insertBefore(n,V(t))}}}return ke(t),!0}return t instanceof d&&!function(t){let e=J(t);e&&e.tagName||(e={namespaceURI:ne,tagName:"template"});const r=x(t.tagName),i=x(e.tagName);return!!oe[t.namespaceURI]&&(t.namespaceURI===re?e.namespaceURI===ie?"svg"===r:e.namespaceURI===ee?"svg"===r&&("annotation-xml"===i||le[i]):Boolean(xe[r]):t.namespaceURI===ee?e.namespaceURI===ie?"math"===r:e.namespaceURI===re?"math"===r&&ce[i]:Boolean(be[r]):t.namespaceURI===ie?!(e.namespaceURI===re&&!ce[i])&&!(e.namespaceURI===ee&&!le[i])&&!be[r]&&(he[r]||!xe[r]):!("application/xhtml+xml"!==ue||!oe[t.namespaceURI]))}(t)?(ke(t),!0):"noscript"!==i&&"noembed"!==i&&"noframes"!==i||!S(/<\/no(script|embed|frames)/i,t.innerHTML)?(Rt&&t.nodeType===rt&&(e=t.textContent,p([gt,yt,mt],t=>{e=w(e,t," ")}),t.textContent!==e&&(y(r.removed,{element:t.cloneNode()}),t.textContent=e)),Te(ft.afterSanitizeElements,t,null),!1):(ke(t),!0)},Me=function(t,e,r){if(Wt&&("id"===e||"name"===e)&&(r in n||r in ge))return!1;if(Et&&!Lt[e]&&S(xt,e));else if($t&&S(bt,e));else if(Ft.attributeCheck instanceof Function&&Ft.attributeCheck(e,t));else if(!Tt[e]||Lt[e]){if(!(Be(t)&&(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,t)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(t))&&(Mt.attributeNameCheck instanceof RegExp&&S(Mt.attributeNameCheck,e)||Mt.attributeNameCheck instanceof Function&&Mt.attributeNameCheck(e,t))||"is"===e&&Mt.allowCustomizedBuiltInElements&&(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,r)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(r))))return!1}else if(Jt[e]);else if(S(_t,w(r,wt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==C(r,"data:")||!Zt[t]){if(Dt&&!S(kt,w(r,wt,"")));else if(r)return!1}else;return!0},Be=function(t){return"annotation-xml"!==t&&k(t,Ct)},Le=function(t){Te(ft.beforeSanitizeAttributes,t,null);const{attributes:e}=t;if(!e||ve(t))return;const i={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Tt,forceKeepAttr:void 0};let n=e.length;for(;n--;){const o=e[n],{name:s,namespaceURI:l,value:c}=o,h=pe(s),u=c;let d="value"===s?u:_(u);if(i.attrName=h,i.attrValue=d,i.keepAttr=!0,i.forceKeepAttr=void 0,Te(ft.uponSanitizeAttribute,t,i),d=i.attrValue,!Ht||"id"!==h&&"name"!==h||(we(s,t),d="user-content-"+d),Kt&&S(/((--!?|])>)|<\/(style|title|textarea)/i,d)){we(s,t);continue}if("attributename"===h&&k(d,"href")){we(s,t);continue}if(i.forceKeepAttr)continue;if(!i.keepAttr){we(s,t);continue}if(!Ot&&S(/\/>/i,d)){we(s,t);continue}Rt&&p([gt,yt,mt],t=>{d=w(d,t," ")});const f=pe(t.nodeName);if(Me(f,h,d)){if(st&&"object"==typeof H&&"function"==typeof H.getAttributeType)if(l);else switch(H.getAttributeType(f,h)){case"TrustedHTML":d=st.createHTML(d);break;case"TrustedScriptURL":d=st.createScriptURL(d)}if(d!==u)try{l?t.setAttributeNS(l,s,d):t.setAttribute(s,d),ve(t)?ke(t):g(r.removed)}catch(a){we(s,t)}}else we(s,t)}Te(ft.afterSanitizeAttributes,t,null)},Fe=function t(e){let r=null;const i=_e(e);for(Te(ft.beforeSanitizeShadowDOM,e,null);r=i.nextNode();)Te(ft.uponSanitizeShadowNode,r,null),Ae(r),Le(r),r.content instanceof s&&t(r.content);Te(ft.afterSanitizeShadowDOM,e,null)};return r.sanitize=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null,n=null,o=null,l=null;if(ae=!t,ae&&(t="\x3c!--\x3e"),"string"!=typeof t&&!Se(t)){if("function"!=typeof t.toString)throw T("toString is not a function");if("string"!=typeof(t=t.toString()))throw T("dirty is not a string, aborting")}if(!r.isSupported)return t;if(Nt||me(e),r.removed=[],"string"==typeof t&&(Yt=!1),Yt){if(t.nodeName){const e=pe(t.nodeName);if(!vt[e]||Bt[e])throw T("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof u)i=Ce("\x3c!----\x3e"),n=i.ownerDocument.importNode(t,!0),n.nodeType===et&&"BODY"===n.nodeName||"HTML"===n.nodeName?i=n:i.appendChild(n);else{if(!zt&&!Rt&&!It&&-1===t.indexOf("<"))return st&&jt?st.createHTML(t):t;if(i=Ce(t),!i)return zt?null:jt?lt:""}i&&Pt&&ke(i.firstChild);const c=_e(Yt?t:i);for(;o=c.nextNode();)Ae(o),Le(o),o.content instanceof s&&Fe(o.content);if(Yt)return t;if(zt){if(qt)for(l=ut.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(Tt.shadowroot||Tt.shadowrootmode)&&(l=pt.call(a,l,!0)),l}let h=It?i.outerHTML:i.innerHTML;return It&&vt["!doctype"]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&S(Q,i.ownerDocument.doctype.name)&&(h="\n"+h),Rt&&p([gt,yt,mt],t=>{h=w(h,t," ")}),st&&jt?st.createHTML(h):h},r.setConfig=function(){me(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Nt=!0},r.clearConfig=function(){fe=null,Nt=!1},r.isValidAttribute=function(t,e,r){fe||me({});const i=pe(t),n=pe(e);return Me(i,n,r)},r.addHook=function(t,e){"function"==typeof e&&y(ft[t],e)},r.removeHook=function(t,e){if(void 0!==e){const r=f(ft[t],e);return-1===r?void 0:m(ft[t],r,1)[0]}return g(ft[t])},r.removeHooks=function(t){ft[t]=[]},r.removeAllHooks=function(){ft={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},r}()},9471:(t,e,r)=>{"use strict";r.d(e,{A:()=>_});const i=(0,r(8744).A)(Object,"create");const n=function(){this.__data__=i?i(null):{},this.size=0};const a=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var o=Object.prototype.hasOwnProperty;const s=function(t){var e=this.__data__;if(i){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0};var l=Object.prototype.hasOwnProperty;const c=function(t){var e=this.__data__;return i?void 0!==e[t]:l.call(e,t)};const h=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=i&&void 0===e?"__lodash_hash_undefined__":e,this};function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{"use strict";r.d(e,{A:()=>a});var i=r(8496),n=r(3149);const a=function(t){if(!(0,n.A)(t))return!1;var e=(0,i.A)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},9759:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{"use strict";r.d(e,{A:()=>_});var i=r(8744),n=r(1917);const a=(0,i.A)(n.A,"DataView");var o=r(8335);const s=(0,i.A)(n.A,"Promise");var l=r(9857);const c=(0,i.A)(n.A,"WeakMap");var h=r(8496),u=r(1121),d="[object Map]",p="[object Promise]",f="[object Set]",g="[object WeakMap]",y="[object DataView]",m=(0,u.A)(a),x=(0,u.A)(o.A),b=(0,u.A)(s),k=(0,u.A)(l.A),w=(0,u.A)(c),C=h.A;(a&&C(new a(new ArrayBuffer(1)))!=y||o.A&&C(new o.A)!=d||s&&C(s.resolve())!=p||l.A&&C(new l.A)!=f||c&&C(new c)!=g)&&(C=function(t){var e=(0,h.A)(t),r="[object Object]"==e?t.constructor:void 0,i=r?(0,u.A)(r):"";if(i)switch(i){case m:return y;case x:return d;case b:return p;case k:return f;case w:return g}return e});const _=C},9857:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(8744),n=r(1917);const a=(0,i.A)(n.A,"Set")},9893:(t,e,r)=>{"use strict";function i(t,e,r){if(t&&t.length){const[i,n]=e,a=Math.PI/180*r,o=Math.cos(a),s=Math.sin(a);for(const e of t){const[t,r]=e;e[0]=(t-i)*o-(r-n)*s+i,e[1]=(t-i)*s+(r-n)*o+n}}}function n(t,e){return t[0]===e[0]&&t[1]===e[1]}function a(t,e,r,a=1){const o=r,s=Math.max(e,.1),l=t[0]&&t[0][0]&&"number"==typeof t[0][0]?[t]:t,c=[0,0];if(o)for(const n of l)i(n,c,o);const h=function(t,e,r){const i=[];for(const h of t){const t=[...h];n(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&i.push(t)}const a=[];e=Math.max(e,.1);const o=[];for(const n of i)for(let t=0;tt.ymine.ymin?1:t.xe.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax)),!o.length)return a;let s=[],l=o[0].ymin,c=0;for(;s.length||o.length;){if(o.length){let t=-1;for(let e=0;el);e++)t=e;o.splice(0,t+1).forEach(t=>{s.push({s:l,edge:t})})}if(s=s.filter(t=>!(t.edge.ymax<=l)),s.sort((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x)),(1!==r||c%e==0)&&s.length>1)for(let t=0;t=s.length)break;const r=s[t].edge,i=s[e].edge;a.push([[Math.round(r.x),l],[Math.round(i.x),l]])}l+=r,s.forEach(t=>{t.edge.x=t.edge.x+r*t.edge.islope}),c++}return a}(l,s,a);if(o){for(const t of l)i(t,c,-o);!function(t,e,r){const n=[];t.forEach(t=>n.push(...t)),i(n,e,r)}(h,c,-o)}return h}function o(t,e){var r;const i=e.hachureAngle+90;let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.round(Math.max(n,.1));let o=1;return e.roughness>=1&&((null===(r=e.randomizer)||void 0===r?void 0:r.next())||Math.random())>.7&&(o=n),a(t,n,i,o||1)}r.d(e,{A:()=>nt});class s{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const r=o(t,e);return{type:"fillSketch",ops:this.renderLines(r,e)}}renderLines(t,e){const r=[];for(const i of t)r.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],e));return r}}function l(t){const e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}class c extends s{fillPolygons(t,e){let r=e.hachureGap;r<0&&(r=4*e.strokeWidth),r=Math.max(r,.1);const i=o(t,Object.assign({},e,{hachureGap:r})),n=Math.PI/180*e.hachureAngle,a=[],s=.5*r*Math.cos(n),c=.5*r*Math.sin(n);for(const[o,h]of i)l([o,h])&&a.push([[o[0]-s,o[1]+c],[...h]],[[o[0]+s,o[1]-c],[...h]]);return{type:"fillSketch",ops:this.renderLines(a,e)}}}class h extends s{fillPolygons(t,e){const r=this._fillPolygons(t,e),i=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),n=this._fillPolygons(t,i);return r.ops=r.ops.concat(n.ops),r}}class u{constructor(t){this.helper=t}fillPolygons(t,e){const r=o(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(r,e)}dotsOnLines(t,e){const r=[];let i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.max(i,.1);let n=e.fillWeight;n<0&&(n=e.strokeWidth/2);const a=i/4;for(const o of t){const t=l(o),s=t/i,c=Math.ceil(s)-1,h=t-c*i,u=(o[0][0]+o[1][0])/2-i/4,d=Math.min(o[0][1],o[1][1]);for(let o=0;o{const a=l(t),o=Math.floor(a/(r+i)),s=(a+i-o*(r+i))/2;let c=t[0],h=t[1];c[0]>h[0]&&(c=t[1],h=t[0]);const u=Math.atan((h[1]-c[1])/(h[0]-c[0]));for(let l=0;l{const n=l(t),a=Math.round(n/(2*e));let o=t[0],s=t[1];o[0]>s[0]&&(o=t[1],s=t[0]);const c=Math.atan((s[1]-o[1])/(s[0]-o[0]));for(let l=0;li%2?t+r:t+e);a.push({key:"C",data:t}),e=t[4],r=t[5];break}case"Q":a.push({key:"Q",data:[...s]}),e=s[2],r=s[3];break;case"q":{const t=s.map((t,i)=>i%2?t+r:t+e);a.push({key:"Q",data:t}),e=t[2],r=t[3];break}case"A":a.push({key:"A",data:[...s]}),e=s[5],r=s[6];break;case"a":e+=s[5],r+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],e,r]});break;case"H":a.push({key:"H",data:[...s]}),e=s[0];break;case"h":e+=s[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...s]}),r=s[0];break;case"v":r+=s[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...s]}),e=s[2],r=s[3];break;case"s":{const t=s.map((t,i)=>i%2?t+r:t+e);a.push({key:"S",data:t}),e=t[2],r=t[3];break}case"T":a.push({key:"T",data:[...s]}),e=s[0],r=s[1];break;case"t":e+=s[0],r+=s[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=i,r=n}return a}function k(t){const e=[];let r="",i=0,n=0,a=0,o=0,s=0,l=0;for(const{key:c,data:h}of t){switch(c){case"M":e.push({key:"M",data:[...h]}),[i,n]=h,[a,o]=h;break;case"C":e.push({key:"C",data:[...h]}),i=h[4],n=h[5],s=h[2],l=h[3];break;case"L":e.push({key:"L",data:[...h]}),[i,n]=h;break;case"H":i=h[0],e.push({key:"L",data:[i,n]});break;case"V":n=h[0],e.push({key:"L",data:[i,n]});break;case"S":{let t=0,a=0;"C"===r||"S"===r?(t=i+(i-s),a=n+(n-l)):(t=i,a=n),e.push({key:"C",data:[t,a,...h]}),s=h[0],l=h[1],i=h[2],n=h[3];break}case"T":{const[t,a]=h;let o=0,c=0;"Q"===r||"T"===r?(o=i+(i-s),c=n+(n-l)):(o=i,c=n);const u=i+2*(o-i)/3,d=n+2*(c-n)/3,p=t+2*(o-t)/3,f=a+2*(c-a)/3;e.push({key:"C",data:[u,d,p,f,t,a]}),s=o,l=c,i=t,n=a;break}case"Q":{const[t,r,a,o]=h,c=i+2*(t-i)/3,u=n+2*(r-n)/3,d=a+2*(t-a)/3,p=o+2*(r-o)/3;e.push({key:"C",data:[c,u,d,p,a,o]}),s=t,l=r,i=a,n=o;break}case"A":{const t=Math.abs(h[0]),r=Math.abs(h[1]),a=h[2],o=h[3],s=h[4],l=h[5],c=h[6];0===t||0===r?(e.push({key:"C",data:[i,n,l,c,l,c]}),i=l,n=c):i===l&&n===c||(C(i,n,l,c,t,r,a,o,s).forEach(function(t){e.push({key:"C",data:t})}),i=l,n=c);break}case"Z":e.push({key:"Z",data:[]}),i=a,n=o}r=c}return e}function w(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function C(t,e,r,i,n,a,o,s,l,c){const h=(u=o,Math.PI*u/180);var u;let d=[],p=0,f=0,g=0,y=0;if(c)[p,f,g,y]=c;else{[t,e]=w(t,e,-h),[r,i]=w(r,i,-h);const o=(t-r)/2,c=(e-i)/2;let u=o*o/(n*n)+c*c/(a*a);u>1&&(u=Math.sqrt(u),n*=u,a*=u);const d=n*n,m=a*a,x=d*m-d*c*c-m*o*o,b=d*c*c+m*o*o,k=(s===l?-1:1)*Math.sqrt(Math.abs(x/b));g=k*n*c/a+(t+r)/2,y=k*-a*o/n+(e+i)/2,p=Math.asin(parseFloat(((e-y)/a).toFixed(9))),f=Math.asin(parseFloat(((i-y)/a).toFixed(9))),tf&&(p-=2*Math.PI),!l&&f>p&&(f-=2*Math.PI)}let m=f-p;if(Math.abs(m)>120*Math.PI/180){const t=f,e=r,s=i;f=l&&f>p?p+120*Math.PI/180*1:p+120*Math.PI/180*-1,d=C(r=g+n*Math.cos(f),i=y+a*Math.sin(f),e,s,n,a,o,0,l,[f,t,g,y])}m=f-p;const x=Math.cos(p),b=Math.sin(p),k=Math.cos(f),_=Math.sin(f),v=Math.tan(m/4),S=4/3*n*v,T=4/3*a*v,A=[t,e],M=[t+S*b,e-T*x],B=[r+S*_,i-T*k],L=[r,i];if(M[0]=2*A[0]-M[0],M[1]=2*A[1]-M[1],c)return[M,B,L].concat(d);{d=[M,B,L].concat(d);const t=[];for(let e=0;e2){const n=[];for(let e=0;e2*Math.PI&&(p=0,f=2*Math.PI);const g=2*Math.PI/l.curveStepCount,y=Math.min(g/2,(f-p)/2),m=q(y,c,h,u,d,p,f,1,l);if(!l.disableMultiStroke){const t=q(y,c,h,u,d,p,f,1.5,l);m.push(...t)}return o&&(s?m.push(...K(c,h,c+u*Math.cos(p),h+d*Math.sin(p),l),...K(c,h,c+u*Math.cos(f),h+d*Math.sin(f),l)):m.push({op:"lineTo",data:[c,h]},{op:"lineTo",data:[c+u*Math.cos(p),h+d*Math.sin(p)]})),{type:"path",ops:m}}function L(t,e){const r=k(b(x(t))),i=[];let n=[0,0],a=[0,0];for(const{key:o,data:s}of r)switch(o){case"M":a=[s[0],s[1]],n=[s[0],s[1]];break;case"L":i.push(...K(a[0],a[1],s[0],s[1],e)),a=[s[0],s[1]];break;case"C":{const[t,r,n,o,l,c]=s;i.push(...j(t,r,n,o,l,c,a,e)),a=[l,c];break}case"Z":i.push(...K(a[0],a[1],n[0],n[1],e)),a=[n[0],n[1]]}return{type:"path",ops:i}}function F(t,e){const r=[];for(const i of t)if(i.length){const t=e.maxRandomnessOffset||0,n=i.length;if(n>2){r.push({op:"move",data:[i[0][0]+R(t,e),i[0][1]+R(t,e)]});for(let a=1;a500?.4:-.0016668*l+1.233334;let h=n.maxRandomnessOffset||0;h*h*100>s&&(h=l/10);const u=h/2,d=.2+.2*D(n);let p=n.bowing*n.maxRandomnessOffset*(i-e)/200,f=n.bowing*n.maxRandomnessOffset*(t-r)/200;p=R(p,n,c),f=R(f,n,c);const g=[],y=()=>R(u,n,c),m=()=>R(h,n,c),x=n.preserveVertices;return a&&(o?g.push({op:"move",data:[t+(x?0:y()),e+(x?0:y())]}):g.push({op:"move",data:[t+(x?0:R(h,n,c)),e+(x?0:R(h,n,c))]})),o?g.push({op:"bcurveTo",data:[p+t+(r-t)*d+y(),f+e+(i-e)*d+y(),p+t+2*(r-t)*d+y(),f+e+2*(i-e)*d+y(),r+(x?0:y()),i+(x?0:y())]}):g.push({op:"bcurveTo",data:[p+t+(r-t)*d+m(),f+e+(i-e)*d+m(),p+t+2*(r-t)*d+m(),f+e+2*(i-e)*d+m(),r+(x?0:m()),i+(x?0:m())]}),g}function N(t,e,r){if(!t.length)return[];const i=[];i.push([t[0][0]+R(e,r),t[0][1]+R(e,r)]),i.push([t[0][0]+R(e,r),t[0][1]+R(e,r)]);for(let n=1;n3){const a=[],o=1-r.curveTightness;n.push({op:"move",data:[t[1][0],t[1][1]]});for(let e=1;e+21&&n.push(r)):n.push(r),n.push(t[e+3])}else{const i=.5,a=t[e+0],o=t[e+1],s=t[e+2],l=t[e+3],c=G(a,o,i),h=G(o,s,i),u=G(s,l,i),d=G(c,h,i),p=G(h,u,i),f=G(d,p,i);X([a,c,d,f],0,r,n),X([f,p,u,l],0,r,n)}var a,o;return n}function V(t,e){return Z(t,0,t.length,e)}function Z(t,e,r,i,n){const a=n||[],o=t[e],s=t[r-1];let l=0,c=1;for(let h=e+1;hl&&(l=e,c=h)}return Math.sqrt(l)>i?(Z(t,e,c+1,i,a),Z(t,c,r,i,a)):(a.length||a.push(o),a.push(s)),a}function Q(t,e=.15,r){const i=[],n=(t.length-1)/3;for(let a=0;a0?Z(i,0,i.length,r):i}const J="none";class tt{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,r){return{shape:t,sets:e||[],options:r||this.defaultOptions}}line(t,e,r,i,n){const a=this._o(n);return this._d("line",[v(t,e,r,i,a)],a)}rectangle(t,e,r,i,n){const a=this._o(n),o=[],s=function(t,e,r,i,n){return function(t,e){return S(t,!0,e)}([[t,e],[t+r,e],[t+r,e+i],[t,e+i]],n)}(t,e,r,i,a);if(a.fill){const n=[[t,e],[t+r,e],[t+r,e+i],[t,e+i]];"solid"===a.fillStyle?o.push(F([n],a)):o.push($([n],a))}return a.stroke!==J&&o.push(s),this._d("rectangle",o,a)}ellipse(t,e,r,i,n){const a=this._o(n),o=[],s=A(r,i,a),l=M(t,e,a,s);if(a.fill)if("solid"===a.fillStyle){const r=M(t,e,a,s).opset;r.type="fillPath",o.push(r)}else o.push($([l.estimatedPoints],a));return a.stroke!==J&&o.push(l.opset),this._d("ellipse",o,a)}circle(t,e,r,i){const n=this.ellipse(t,e,r,r,i);return n.shape="circle",n}linearPath(t,e){const r=this._o(e);return this._d("linearPath",[S(t,!1,r)],r)}arc(t,e,r,i,n,a,o=!1,s){const l=this._o(s),c=[],h=B(t,e,r,i,n,a,o,!0,l);if(o&&l.fill)if("solid"===l.fillStyle){const o=Object.assign({},l);o.disableMultiStroke=!0;const s=B(t,e,r,i,n,a,!0,!1,o);s.type="fillPath",c.push(s)}else c.push(function(t,e,r,i,n,a,o){const s=t,l=e;let c=Math.abs(r/2),h=Math.abs(i/2);c+=R(.01*c,o),h+=R(.01*h,o);let u=n,d=a;for(;u<0;)u+=2*Math.PI,d+=2*Math.PI;d-u>2*Math.PI&&(u=0,d=2*Math.PI);const p=(d-u)/o.curveStepCount,f=[];for(let g=u;g<=d;g+=p)f.push([s+c*Math.cos(g),l+h*Math.sin(g)]);return f.push([s+c*Math.cos(d),l+h*Math.sin(d)]),f.push([s,l]),$([f],o)}(t,e,r,i,n,a,l));return l.stroke!==J&&c.push(h),this._d("arc",c,l)}curve(t,e){const r=this._o(e),i=[],n=T(t,r);if(r.fill&&r.fill!==J)if("solid"===r.fillStyle){const e=T(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else{const e=[],n=t;if(n.length){const t="number"==typeof n[0][0]?[n]:n;for(const i of t)i.length<3?e.push(...i):3===i.length?e.push(...Q(H([i[0],i[0],i[1],i[2]]),10,(1+r.roughness)/2)):e.push(...Q(H(i),10,(1+r.roughness)/2))}e.length&&i.push($([e],r))}return r.stroke!==J&&i.push(n),this._d("curve",i,r)}polygon(t,e){const r=this._o(e),i=[],n=S(t,!0,r);return r.fill&&("solid"===r.fillStyle?i.push(F([t],r)):i.push($([t],r))),r.stroke!==J&&i.push(n),this._d("polygon",i,r)}path(t,e){const r=this._o(e),i=[];if(!t)return this._d("path",i,r);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const n=r.fill&&"transparent"!==r.fill&&r.fill!==J,a=r.stroke!==J,o=!!(r.simplification&&r.simplification<1),s=function(t,e,r){const i=k(b(x(t))),n=[];let a=[],o=[0,0],s=[];const l=()=>{s.length>=4&&a.push(...Q(s,1)),s=[]},c=()=>{l(),a.length&&(n.push(a),a=[])};for(const{key:u,data:d}of i)switch(u){case"M":c(),o=[d[0],d[1]],a.push(o);break;case"L":l(),a.push([d[0],d[1]]);break;case"C":if(!s.length){const t=a.length?a[a.length-1]:o;s.push([t[0],t[1]])}s.push([d[0],d[1]]),s.push([d[2],d[3]]),s.push([d[4],d[5]]);break;case"Z":l(),a.push([o[0],o[1]])}if(c(),!r)return n;const h=[];for(const u of n){const t=V(u,r);t.length&&h.push(t)}return h}(t,0,o?4-4*(r.simplification||1):(1+r.roughness)/2),l=L(t,r);if(n)if("solid"===r.fillStyle)if(1===s.length){const e=L(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else i.push(F(s,r));else i.push($(s,r));return a&&(o?s.forEach(t=>{i.push(S(t,!1,r))}):i.push(l)),this._d("path",i,r)}opsToPath(t,e){let r="";for(const i of t.ops){const t="number"==typeof e&&e>=0?i.data.map(t=>+t.toFixed(e)):i.data;switch(i.op){case"move":r+=`M${t[0]} ${t[1]} `;break;case"bcurveTo":r+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case"lineTo":r+=`L${t[0]} ${t[1]} `}}return r.trim()}toPaths(t){const e=t.sets||[],r=t.options||this.defaultOptions,i=[];for(const n of e){let t=null;switch(n.type){case"path":t={d:this.opsToPath(n),stroke:r.stroke,strokeWidth:r.strokeWidth,fill:J};break;case"fillPath":t={d:this.opsToPath(n),stroke:J,strokeWidth:0,fill:r.fill||J};break;case"fillSketch":t=this.fillSketch(n,r)}t&&i.push(t)}return i}fillSketch(t,e){let r=e.fillWeight;return r<0&&(r=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||J,strokeWidth:r,fill:J}}_mergedShape(t){return t.filter((t,e)=>0===e||"move"!==t.op)}}class et{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new tt(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),i=this.ctx,n=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case"path":i.save(),i.strokeStyle="none"===r.stroke?"transparent":r.stroke,i.lineWidth=r.strokeWidth,r.strokeLineDash&&i.setLineDash(r.strokeLineDash),r.strokeLineDashOffset&&(i.lineDashOffset=r.strokeLineDashOffset),this._drawToContext(i,a,n),i.restore();break;case"fillPath":{i.save(),i.fillStyle=r.fill||"";const e="curve"===t.shape||"polygon"===t.shape||"path"===t.shape?"evenodd":"nonzero";this._drawToContext(i,a,n,e),i.restore();break}case"fillSketch":this.fillSketch(i,a,r)}}fillSketch(t,e,r){let i=r.fillWeight;i<0&&(i=r.strokeWidth/2),t.save(),r.fillLineDash&&t.setLineDash(r.fillLineDash),r.fillLineDashOffset&&(t.lineDashOffset=r.fillLineDashOffset),t.strokeStyle=r.fill||"",t.lineWidth=i,this._drawToContext(t,e,r.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,r,i="nonzero"){t.beginPath();for(const n of e.ops){const e="number"==typeof r&&r>=0?n.data.map(t=>+t.toFixed(r)):n.data;switch(n.op){case"move":t.moveTo(e[0],e[1]);break;case"bcurveTo":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case"lineTo":t.lineTo(e[0],e[1])}}"fillPath"===e.type?t.fill(i):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,r,i,n){const a=this.gen.line(t,e,r,i,n);return this.draw(a),a}rectangle(t,e,r,i,n){const a=this.gen.rectangle(t,e,r,i,n);return this.draw(a),a}ellipse(t,e,r,i,n){const a=this.gen.ellipse(t,e,r,i,n);return this.draw(a),a}circle(t,e,r,i){const n=this.gen.circle(t,e,r,i);return this.draw(n),n}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r),r}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r),r}arc(t,e,r,i,n,a,o=!1,s){const l=this.gen.arc(t,e,r,i,n,a,o,s);return this.draw(l),l}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r),r}path(t,e){const r=this.gen.path(t,e);return this.draw(r),r}}const rt="http://www.w3.org/2000/svg";class it{constructor(t,e){this.svg=t,this.gen=new tt(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,n=i.createElementNS(rt,"g"),a=t.options.fixedDecimalPlaceDigits;for(const o of e){let e=null;switch(o.type){case"path":e=i.createElementNS(rt,"path"),e.setAttribute("d",this.opsToPath(o,a)),e.setAttribute("stroke",r.stroke),e.setAttribute("stroke-width",r.strokeWidth+""),e.setAttribute("fill","none"),r.strokeLineDash&&e.setAttribute("stroke-dasharray",r.strokeLineDash.join(" ").trim()),r.strokeLineDashOffset&&e.setAttribute("stroke-dashoffset",`${r.strokeLineDashOffset}`);break;case"fillPath":e=i.createElementNS(rt,"path"),e.setAttribute("d",this.opsToPath(o,a)),e.setAttribute("stroke","none"),e.setAttribute("stroke-width","0"),e.setAttribute("fill",r.fill||""),"curve"!==t.shape&&"polygon"!==t.shape||e.setAttribute("fill-rule","evenodd");break;case"fillSketch":e=this.fillSketch(i,o,r)}e&&n.appendChild(e)}return n}fillSketch(t,e,r){let i=r.fillWeight;i<0&&(i=r.strokeWidth/2);const n=t.createElementNS(rt,"path");return n.setAttribute("d",this.opsToPath(e,r.fixedDecimalPlaceDigits)),n.setAttribute("stroke",r.fill||""),n.setAttribute("stroke-width",i+""),n.setAttribute("fill","none"),r.fillLineDash&&n.setAttribute("stroke-dasharray",r.fillLineDash.join(" ").trim()),r.fillLineDashOffset&&n.setAttribute("stroke-dashoffset",`${r.fillLineDashOffset}`),n}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,r,i,n){const a=this.gen.line(t,e,r,i,n);return this.draw(a)}rectangle(t,e,r,i,n){const a=this.gen.rectangle(t,e,r,i,n);return this.draw(a)}ellipse(t,e,r,i,n){const a=this.gen.ellipse(t,e,r,i,n);return this.draw(a)}circle(t,e,r,i){const n=this.gen.circle(t,e,r,i);return this.draw(n)}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r)}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r)}arc(t,e,r,i,n,a,o=!1,s){const l=this.gen.arc(t,e,r,i,n,a,o,s);return this.draw(l)}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r)}path(t,e){const r=this.gen.path(t,e);return this.draw(r)}}var nt={canvas:(t,e)=>new et(t,e),svg:(t,e)=>new it(t,e),generator:t=>new tt(t),newSeed:()=>tt.newSeed()}},9912:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(1917);const n=function(){return!1};var a="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=a&&"object"==typeof module&&module&&!module.nodeType&&module,s=o&&o.exports===a?i.A.Buffer:void 0;const l=(s?s.isBuffer:void 0)||n}}]); \ No newline at end of file diff --git a/user/assets/js/2279.6a0e29ca.js.LICENSE.txt b/user/assets/js/2279.6a0e29ca.js.LICENSE.txt new file mode 100644 index 0000000..d0090da --- /dev/null +++ b/user/assets/js/2279.6a0e29ca.js.LICENSE.txt @@ -0,0 +1 @@ +/*! @license DOMPurify 3.3.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.0/LICENSE */ diff --git a/user/assets/js/2291.f507cd02.js b/user/assets/js/2291.f507cd02.js new file mode 100644 index 0000000..10947a9 --- /dev/null +++ b/user/assets/js/2291.f507cd02.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2291],{2291:(t,e,s)=>{s.d(e,{diagram:()=>D});var i=s(2501),n=s(3981),r=s(9625),a=s(1152),u=s(45),o=(s(5164),s(8698),s(5894)),l=(s(3245),s(2387),s(92),s(3226)),c=s(7633),h=s(797),d=s(451),p=s(5582),g=s(5937),A=class{constructor(){this.vertexCounter=0,this.config=(0,c.D7)(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=c.SV,this.setAccDescription=c.EI,this.setDiagramTitle=c.ke,this.getAccTitle=c.iN,this.getAccDescription=c.m7,this.getDiagramTitle=c.ab,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{(0,h.K2)(this,"FlowDB")}sanitizeText(t){return c.Y2.sanitizeText(t,this.config)}lookUpDomId(t){for(const e of this.vertices.values())if(e.id===t)return e.domId;return t}addVertex(t,e,s,i,r,a,u={},l){if(!t||0===t.trim().length)return;let h;if(void 0!==l){let t;t=l.includes("\n")?l+"\n":"{\n"+l+"\n}",h=(0,n.H)(t,{schema:n.r})}const d=this.edges.find(e=>e.id===t);if(d){const t=h;return void 0!==t?.animate&&(d.animate=t.animate),void 0!==t?.animation&&(d.animation=t.animation),void(void 0!==t?.curve&&(d.interpolate=t.curve))}let p,g=this.vertices.get(t);if(void 0===g&&(g={id:t,labelType:"text",domId:"flowchart-"+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,g)),this.vertexCounter++,void 0!==e?(this.config=(0,c.D7)(),p=this.sanitizeText(e.text.trim()),g.labelType=e.type,p.startsWith('"')&&p.endsWith('"')&&(p=p.substring(1,p.length-1)),g.text=p):void 0===g.text&&(g.text=t),void 0!==s&&(g.type=s),null!=i&&i.forEach(t=>{g.styles.push(t)}),null!=r&&r.forEach(t=>{g.classes.push(t)}),void 0!==a&&(g.dir=a),void 0===g.props?g.props=u:void 0!==u&&Object.assign(g.props,u),void 0!==h){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!(0,o.aP)(h.shape))throw new Error(`No such shape: ${h.shape}.`);g.type=h?.shape}h?.label&&(g.text=h?.label),h?.icon&&(g.icon=h?.icon,h.label?.trim()||g.text!==t||(g.text="")),h?.form&&(g.form=h?.form),h?.pos&&(g.pos=h?.pos),h?.img&&(g.img=h?.img,h.label?.trim()||g.text!==t||(g.text="")),h?.constraint&&(g.constraint=h.constraint),h.w&&(g.assetWidth=Number(h.w)),h.h&&(g.assetHeight=Number(h.h))}}addSingleLink(t,e,s,i){const n={start:t,end:e,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};h.Rm.info("abc78 Got edge...",n);const r=s.text;if(void 0!==r&&(n.text=this.sanitizeText(r.text.trim()),n.text.startsWith('"')&&n.text.endsWith('"')&&(n.text=n.text.substring(1,n.text.length-1)),n.labelType=r.type),void 0!==s&&(n.type=s.type,n.stroke=s.stroke,n.length=s.length>10?10:s.length),i&&!this.edges.some(t=>t.id===i))n.id=i,n.isUserDefinedId=!0;else{const t=this.edges.filter(t=>t.start===n.start&&t.end===n.end);0===t.length?n.id=(0,l.rY)(n.start,n.end,{counter:0,prefix:"L"}):n.id=(0,l.rY)(n.start,n.end,{counter:t.length+1,prefix:"L"})}if(!(this.edges.length<(this.config.maxEdges??500)))throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.\n\nInitialize mermaid with maxEdges set to a higher number to allow more edges.\nYou cannot set this config via configuration inside the diagram as it is a secure config.\nYou have to call mermaid.initialize.`);h.Rm.info("Pushing edge..."),this.edges.push(n)}isLinkData(t){return null!==t&&"object"==typeof t&&"id"in t&&"string"==typeof t.id}addLink(t,e,s){const i=this.isLinkData(s)?s.id.replace("@",""):void 0;h.Rm.info("addLink",t,e,i);for(const n of t)for(const r of e){const a=n===t[t.length-1],u=r===e[0];a&&u?this.addSingleLink(n,r,s,i):this.addSingleLink(n,r,s,void 0)}}updateLinkInterpolate(t,e){t.forEach(t=>{"default"===t?this.edges.defaultInterpolate=e:this.edges[t].interpolate=e})}updateLink(t,e){t.forEach(t=>{if("number"==typeof t&&t>=this.edges.length)throw new Error(`The index ${t} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);"default"===t?this.edges.defaultStyle=e:(this.edges[t].style=e,(this.edges[t]?.style?.length??0)>0&&!this.edges[t]?.style?.some(t=>t?.startsWith("fill"))&&this.edges[t]?.style?.push("fill:none"))})}addClass(t,e){const s=e.join().replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");t.split(",").forEach(t=>{let e=this.classes.get(t);void 0===e&&(e={id:t,styles:[],textStyles:[]},this.classes.set(t,e)),null!=s&&s.forEach(t=>{if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)})})}setDirection(t){this.direction=t.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),"TD"===this.direction&&(this.direction="TB")}setClass(t,e){for(const s of t.split(",")){const t=this.vertices.get(s);t&&t.classes.push(e);const i=this.edges.find(t=>t.id===s);i&&i.classes.push(e);const n=this.subGraphLookup.get(s);n&&n.classes.push(e)}}setTooltip(t,e){if(void 0!==e){e=this.sanitizeText(e);for(const s of t.split(","))this.tooltips.set("gen-1"===this.version?this.lookUpDomId(s):s,e)}}setClickFun(t,e,s){const i=this.lookUpDomId(t);if("loose"!==(0,c.D7)().securityLevel)return;if(void 0===e)return;let n=[];if("string"==typeof s){n=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{const t=document.querySelector(`[id="${i}"]`);null!==t&&t.addEventListener("click",()=>{l._K.runFunc(e,...n)},!1)}))}setLink(t,e,s){t.split(",").forEach(t=>{const i=this.vertices.get(t);void 0!==i&&(i.link=l._K.formatUrl(e,this.config),i.linkTarget=s)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,e,s){t.split(",").forEach(t=>{this.setClickFun(t,e,s)}),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach(e=>{e(t)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let e=(0,d.Ltv)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,d.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,d.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",t=>{const s=(0,d.Ltv)(t.currentTarget);if(null===s.attr("title"))return;const i=t.currentTarget?.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.bottom+"px"),e.html(e.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",t=>{e.transition().duration(500).style("opacity",0);(0,d.Ltv)(t.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=(0,c.D7)(),(0,c.IU)()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,e,s){let i=t.text.trim(),n=s.text;t===s&&/\s/.exec(s.text)&&(i=void 0);const r=(0,h.K2)(t=>{const e={boolean:{},number:{},string:{}},s=[];let i;return{nodeList:t.filter(function(t){const n=typeof t;return t.stmt&&"dir"===t.stmt?(i=t.value,!1):""!==t.trim()&&(n in e?!e[n].hasOwnProperty(t)&&(e[n][t]=!0):!s.includes(t)&&s.push(t))}),dir:i}},"uniq")(e.flat()),a=r.nodeList;let u=r.dir;const o=(0,c.D7)().flowchart??{};if(u=u??(o.inheritDir?this.getDirection()??(0,c.D7)().direction??void 0:void 0),"gen-1"===this.version)for(let c=0;c2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=e,this.subGraphs[e].id===t)return{result:!0,count:0};let i=0,n=1;for(;i=0){const s=this.indexNodes2(t,e);if(s.result)return{result:!0,count:n+s.count};n+=s.count}i+=1}return{result:!1,count:n}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return!!this.firstGraphFlag&&(this.firstGraphFlag=!1,!0)}destructStartLink(t){let e=t.trim(),s="arrow_open";switch(e[0]){case"<":s="arrow_point",e=e.slice(1);break;case"x":s="arrow_cross",e=e.slice(1);break;case"o":s="arrow_circle",e=e.slice(1)}let i="normal";return e.includes("=")&&(i="thick"),e.includes(".")&&(i="dotted"),{type:s,stroke:i}}countChar(t,e){const s=e.length;let i=0;for(let n=0;n":i="arrow_point",e.startsWith("<")&&(i="double_"+i,s=s.slice(1));break;case"o":i="arrow_circle",e.startsWith("o")&&(i="double_"+i,s=s.slice(1))}let n="normal",r=s.length-1;s.startsWith("=")&&(n="thick"),s.startsWith("~")&&(n="invisible");const a=this.countChar(".",s);return a&&(n="dotted",r=a),{type:i,stroke:n,length:r}}destructLink(t,e){const s=this.destructEndLink(t);let i;if(e){if(i=this.destructStartLink(e),i.stroke!==s.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===i.type)i.type=s.type;else{if(i.type!==s.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return"double_arrow"===i.type&&(i.type="double_arrow_point"),i.length=s.length,i}return s}exists(t,e){for(const s of t)if(s.nodes.includes(e))return!0;return!1}makeUniq(t,e){const s=[];return t.nodes.forEach((i,n)=>{this.exists(e,i)||s.push(t.nodes[n])}),{nodes:s}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return"circle"===t.form?"iconCircle":"square"===t.form?"iconSquare":"rounded"===t.form?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,e){return t.find(t=>t.id===e)}destructEdgeType(t){let e="none",s="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":s=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":e=t.replace("double_",""),s=e}return{arrowTypeStart:e,arrowTypeEnd:s}}addNodeFromVertex(t,e,s,i,n,r){const a=s.get(t.id),u=i.get(t.id)??!1,o=this.findNode(e,t.id);if(o)o.cssStyles=t.styles,o.cssCompiledStyles=this.getCompiledStyles(t.classes),o.cssClasses=t.classes.join(" ");else{const s={id:t.id,label:t.text,labelStyle:"",parentId:a,padding:n.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:r,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?e.push({...s,isGroup:!0,shape:"rect"}):e.push({...s,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}getData(){const t=(0,c.D7)(),e=[],s=[],i=this.getSubGraphs(),n=new Map,r=new Map;for(let u=i.length-1;u>=0;u--){const t=i[u];t.nodes.length>0&&r.set(t.id,!0);for(const e of t.nodes)n.set(e,t.id)}for(let u=i.length-1;u>=0;u--){const s=i[u];e.push({id:s.id,label:s.title,labelStyle:"",parentId:n.get(s.id),padding:8,cssCompiledStyles:this.getCompiledStyles(s.classes),cssClasses:s.classes.join(" "),shape:"rect",dir:s.dir,isGroup:!0,look:t.look})}this.getVertices().forEach(s=>{this.addNodeFromVertex(s,e,n,r,t,t.look||"classic")});const a=this.getEdges();return a.forEach((e,i)=>{const{arrowTypeStart:n,arrowTypeEnd:r}=this.destructEdgeType(e.type),u=[...a.defaultStyle??[]];e.style&&u.push(...e.style);const o={id:(0,l.rY)(e.start,e.end,{counter:i,prefix:"L"},e.id),isUserDefinedId:e.isUserDefinedId,start:e.start,end:e.end,type:e.type??"normal",label:e.text,labelpos:"c",thickness:e.stroke,minlen:e.length,classes:"invisible"===e?.stroke?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":n,arrowTypeEnd:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":r,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(e.classes),labelStyle:u,style:u,pattern:e.stroke,look:t.look,animate:e.animate,animation:e.animation,curve:e.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};s.push(o)}),{nodes:e,edges:s,other:{},config:t}}defaultConfig(){return c.ME.flowchart}},b={getClasses:(0,h.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,h.K2)(async function(t,e,s,i){h.Rm.info("REF0:"),h.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:n,flowchart:o,layout:p}=(0,c.D7)();let g;"sandbox"===n&&(g=(0,d.Ltv)("#i"+e));const A="sandbox"===n?g.nodes()[0].contentDocument:document;h.Rm.debug("Before getData: ");const b=i.db.getData();h.Rm.debug("Data: ",b);const k=(0,r.A)(e,n),y=i.db.getDirection();b.type=i.type,b.layoutAlgorithm=(0,u.q7)(p),"dagre"===b.layoutAlgorithm&&"elk"===p&&h.Rm.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),b.direction=y,b.nodeSpacing=o?.nodeSpacing||50,b.rankSpacing=o?.rankSpacing||50,b.markers=["point","circle","cross"],b.diagramId=e,h.Rm.debug("REF1:",b),await(0,u.XX)(b,k);const f=b.config.flowchart?.diagramPadding??8;l._K.insertTitle(k,"flowchartTitleText",o?.titleTopMargin||0,i.db.getDiagramTitle()),(0,a.P)(k,f,"flowchart",o?.useMaxWidth||!1);for(const r of b.nodes){const t=(0,d.Ltv)(`#${e} [id="${r.id}"]`);if(!t||!r.link)continue;const s=A.createElementNS("http://www.w3.org/2000/svg","a");s.setAttributeNS("http://www.w3.org/2000/svg","class",r.cssClasses),s.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===n?s.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):r.linkTarget&&s.setAttributeNS("http://www.w3.org/2000/svg","target",r.linkTarget);const i=t.insert(function(){return s},":first-child"),a=t.select(".label-container");a&&i.append(function(){return a.node()});const u=t.select(".label");u&&i.append(function(){return u.node()})}},"draw")},k=function(){var t=(0,h.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,4],s=[1,3],i=[1,5],n=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],r=[2,2],a=[1,13],u=[1,14],o=[1,15],l=[1,16],c=[1,23],d=[1,25],p=[1,26],g=[1,27],A=[1,49],b=[1,48],k=[1,29],y=[1,30],f=[1,31],m=[1,32],E=[1,33],C=[1,44],D=[1,46],T=[1,42],x=[1,47],S=[1,43],F=[1,50],_=[1,45],v=[1,51],B=[1,52],w=[1,34],L=[1,35],$=[1,36],I=[1,37],R=[1,57],N=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],P=[1,61],G=[1,60],K=[1,62],O=[8,9,11,75,77,78],M=[1,78],U=[1,91],V=[1,96],W=[1,95],Y=[1,92],j=[1,88],z=[1,94],X=[1,90],H=[1,97],q=[1,93],Q=[1,98],Z=[1,89],J=[8,9,10,11,40,75,77,78],tt=[8,9,10,11,40,46,75,77,78],et=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],st=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],it=[44,60,89,102,105,106,109,111,114,115,116],nt=[1,121],rt=[1,122],at=[1,124],ut=[1,123],ot=[44,60,62,74,89,102,105,106,109,111,114,115,116],lt=[1,133],ct=[1,147],ht=[1,148],dt=[1,149],pt=[1,150],gt=[1,135],At=[1,137],bt=[1,141],kt=[1,142],yt=[1,143],ft=[1,144],mt=[1,145],Et=[1,146],Ct=[1,151],Dt=[1,152],Tt=[1,131],xt=[1,132],St=[1,139],Ft=[1,134],_t=[1,138],vt=[1,136],Bt=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],wt=[1,154],Lt=[1,156],$t=[8,9,11],It=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],Rt=[1,176],Nt=[1,172],Pt=[1,173],Gt=[1,177],Kt=[1,174],Ot=[1,175],Mt=[77,116,119],Ut=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],Vt=[10,106],Wt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Yt=[1,247],jt=[1,245],zt=[1,249],Xt=[1,243],Ht=[1,244],qt=[1,246],Qt=[1,248],Zt=[1,250],Jt=[1,268],te=[8,9,11,106],ee=[8,9,10,11,60,84,105,106,109,110,111,112],se={trace:(0,h.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:(0,h.K2)(function(t,e,s,i,n,r,a){var u=r.length-1;switch(n){case 2:case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 3:(!Array.isArray(r[u])||r[u].length>0)&&r[u-1].push(r[u]),this.$=r[u-1];break;case 4:case 183:case 44:case 54:case 76:case 181:this.$=r[u];break;case 11:i.setDirection("TB"),this.$="TB";break;case 12:i.setDirection(r[u-1]),this.$=r[u-1];break;case 27:this.$=r[u-1].nodes;break;case 33:this.$=i.addSubGraph(r[u-6],r[u-1],r[u-4]);break;case 34:this.$=i.addSubGraph(r[u-3],r[u-1],r[u-3]);break;case 35:this.$=i.addSubGraph(void 0,r[u-1],void 0);break;case 37:this.$=r[u].trim(),i.setAccTitle(this.$);break;case 38:case 39:this.$=r[u].trim(),i.setAccDescription(this.$);break;case 43:case 133:this.$=r[u-1]+r[u];break;case 45:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 46:i.addLink(r[u-2].stmt,r[u],r[u-1]),this.$={stmt:r[u],nodes:r[u].concat(r[u-2].nodes)};break;case 47:i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 48:this.$={stmt:r[u-1],nodes:r[u-1]};break;case 49:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),this.$={stmt:r[u-1],nodes:r[u-1],shapeData:r[u]};break;case 50:this.$={stmt:r[u],nodes:r[u]};break;case 51:case 128:case 130:this.$=[r[u]];break;case 52:i.addVertex(r[u-5][r[u-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u-4]),this.$=r[u-5].concat(r[u]);break;case 53:this.$=r[u-4].concat(r[u]);break;case 55:this.$=r[u-2],i.setClass(r[u-2],r[u]);break;case 56:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"square");break;case 57:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"doublecircle");break;case 58:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"circle");break;case 59:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"ellipse");break;case 60:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"stadium");break;case 61:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"subroutine");break;case 62:this.$=r[u-7],i.addVertex(r[u-7],r[u-1],"rect",void 0,void 0,void 0,Object.fromEntries([[r[u-5],r[u-3]]]));break;case 63:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"cylinder");break;case 64:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"round");break;case 65:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"diamond");break;case 66:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"hexagon");break;case 67:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"odd");break;case 68:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"trapezoid");break;case 69:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"inv_trapezoid");break;case 70:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_right");break;case 71:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_left");break;case 72:this.$=r[u],i.addVertex(r[u]);break;case 73:r[u-1].text=r[u],this.$=r[u-1];break;case 74:case 75:r[u-2].text=r[u-1],this.$=r[u-2];break;case 77:var o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1]};break;case 78:o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1],id:r[u-3]};break;case 79:case 86:case 101:case 103:this.$={text:r[u],type:"text"};break;case 80:case 87:case 102:this.$={text:r[u-1].text+""+r[u],type:r[u-1].type};break;case 81:case 88:this.$={text:r[u],type:"string"};break;case 82:case 89:case 104:this.$={text:r[u],type:"markdown"};break;case 83:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length};break;case 84:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length,id:r[u-1]};break;case 85:this.$=r[u-1];break;case 105:this.$=r[u-4],i.addClass(r[u-2],r[u]);break;case 106:this.$=r[u-4],i.setClass(r[u-2],r[u]);break;case 107:case 115:this.$=r[u-1],i.setClickEvent(r[u-1],r[u]);break;case 108:case 116:this.$=r[u-3],i.setClickEvent(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 109:this.$=r[u-2],i.setClickEvent(r[u-2],r[u-1],r[u]);break;case 110:this.$=r[u-4],i.setClickEvent(r[u-4],r[u-3],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 111:this.$=r[u-2],i.setLink(r[u-2],r[u]);break;case 112:this.$=r[u-4],i.setLink(r[u-4],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 113:this.$=r[u-4],i.setLink(r[u-4],r[u-2],r[u]);break;case 114:this.$=r[u-6],i.setLink(r[u-6],r[u-4],r[u]),i.setTooltip(r[u-6],r[u-2]);break;case 117:this.$=r[u-1],i.setLink(r[u-1],r[u]);break;case 118:this.$=r[u-3],i.setLink(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 119:this.$=r[u-3],i.setLink(r[u-3],r[u-2],r[u]);break;case 120:this.$=r[u-5],i.setLink(r[u-5],r[u-4],r[u]),i.setTooltip(r[u-5],r[u-2]);break;case 121:this.$=r[u-4],i.addVertex(r[u-2],void 0,void 0,r[u]);break;case 122:this.$=r[u-4],i.updateLink([r[u-2]],r[u]);break;case 123:this.$=r[u-4],i.updateLink(r[u-2],r[u]);break;case 124:this.$=r[u-8],i.updateLinkInterpolate([r[u-6]],r[u-2]),i.updateLink([r[u-6]],r[u]);break;case 125:this.$=r[u-8],i.updateLinkInterpolate(r[u-6],r[u-2]),i.updateLink(r[u-6],r[u]);break;case 126:this.$=r[u-6],i.updateLinkInterpolate([r[u-4]],r[u]);break;case 127:this.$=r[u-6],i.updateLinkInterpolate(r[u-4],r[u]);break;case 129:case 131:r[u-2].push(r[u]),this.$=r[u-2];break;case 182:case 184:this.$=r[u-1]+""+r[u];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"}}},"anonymous"),table:[{3:1,4:2,9:e,10:s,12:i},{1:[3]},t(n,r,{5:6}),{4:7,9:e,10:s,12:i},{4:8,9:e,10:s,12:i},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:k,85:y,86:f,87:m,88:E,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},t(n,[2,9]),t(n,[2,10]),t(n,[2,11]),{8:[1,54],9:[1,55],10:R,15:53,18:56},t(N,[2,3]),t(N,[2,4]),t(N,[2,5]),t(N,[2,6]),t(N,[2,7]),t(N,[2,8]),{8:P,9:G,11:K,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:P,9:G,11:K,21:67},{8:P,9:G,11:K,21:68},{8:P,9:G,11:K,21:69},{8:P,9:G,11:K,21:70},{8:P,9:G,11:K,21:71},{8:P,9:G,10:[1,72],11:K,21:73},t(N,[2,36]),{35:[1,74]},{37:[1,75]},t(N,[2,39]),t(O,[2,50],{18:76,39:77,10:R,40:M}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:U,44:V,60:W,80:[1,86],89:Y,95:[1,83],97:[1,84],101:85,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},t(N,[2,185]),t(N,[2,186]),t(N,[2,187]),t(N,[2,188]),t(J,[2,51]),t(J,[2,54],{46:[1,99]}),t(tt,[2,72],{113:112,29:[1,100],44:A,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:b,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:C,102:D,105:T,106:x,109:S,111:F,114:_,115:v,116:B}),t(et,[2,181]),t(et,[2,142]),t(et,[2,143]),t(et,[2,144]),t(et,[2,145]),t(et,[2,146]),t(et,[2,147]),t(et,[2,148]),t(et,[2,149]),t(et,[2,150]),t(et,[2,151]),t(et,[2,152]),t(n,[2,12]),t(n,[2,18]),t(n,[2,19]),{9:[1,113]},t(st,[2,26],{18:114,10:R}),t(N,[2,27]),{42:115,43:38,44:A,45:39,47:40,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},t(N,[2,40]),t(N,[2,41]),t(N,[2,42]),t(it,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:nt,81:rt,116:at,119:ut},{75:[1,125],77:[1,126]},t(ot,[2,83]),t(N,[2,28]),t(N,[2,29]),t(N,[2,30]),t(N,[2,31]),t(N,[2,32]),{10:lt,12:ct,14:ht,27:dt,28:127,32:pt,44:gt,60:At,75:bt,80:[1,129],81:[1,130],83:140,84:kt,85:yt,86:ft,87:mt,88:Et,89:Ct,90:Dt,91:128,105:Tt,109:xt,111:St,114:Ft,115:_t,116:vt},t(Bt,r,{5:153}),t(N,[2,37]),t(N,[2,38]),t(O,[2,48],{44:wt}),t(O,[2,49],{18:155,10:R,40:Lt}),t(J,[2,44]),{44:A,47:157,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},{102:[1,158],103:159,105:[1,160]},{44:A,47:161,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},{44:A,47:162,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t($t,[2,115],{120:167,10:[1,166],14:U,44:V,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,117],{10:[1,168]}),t(It,[2,183]),t(It,[2,170]),t(It,[2,171]),t(It,[2,172]),t(It,[2,173]),t(It,[2,174]),t(It,[2,175]),t(It,[2,176]),t(It,[2,177]),t(It,[2,178]),t(It,[2,179]),t(It,[2,180]),{44:A,47:169,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},{30:170,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:178,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:180,50:[1,179],67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:181,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:182,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:183,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{109:[1,184]},{30:185,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:186,65:[1,187],67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:188,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:189,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{30:190,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},t(et,[2,182]),t(n,[2,20]),t(st,[2,25]),t(O,[2,46],{39:191,18:192,10:R,40:M}),t(it,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{77:[1,196],79:197,116:at,119:ut},t(Mt,[2,79]),t(Mt,[2,81]),t(Mt,[2,82]),t(Mt,[2,168]),t(Mt,[2,169]),{76:198,79:120,80:nt,81:rt,116:at,119:ut},t(ot,[2,84]),{8:P,9:G,10:lt,11:K,12:ct,14:ht,21:200,27:dt,29:[1,199],32:pt,44:gt,60:At,75:bt,83:140,84:kt,85:yt,86:ft,87:mt,88:Et,89:Ct,90:Dt,91:201,105:Tt,109:xt,111:St,114:Ft,115:_t,116:vt},t(Ut,[2,101]),t(Ut,[2,103]),t(Ut,[2,104]),t(Ut,[2,157]),t(Ut,[2,158]),t(Ut,[2,159]),t(Ut,[2,160]),t(Ut,[2,161]),t(Ut,[2,162]),t(Ut,[2,163]),t(Ut,[2,164]),t(Ut,[2,165]),t(Ut,[2,166]),t(Ut,[2,167]),t(Ut,[2,90]),t(Ut,[2,91]),t(Ut,[2,92]),t(Ut,[2,93]),t(Ut,[2,94]),t(Ut,[2,95]),t(Ut,[2,96]),t(Ut,[2,97]),t(Ut,[2,98]),t(Ut,[2,99]),t(Ut,[2,100]),{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,202],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:k,85:y,86:f,87:m,88:E,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},{10:R,18:203},{44:[1,204]},t(J,[2,43]),{10:[1,205],44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:112,114:_,115:v,116:B},{10:[1,206]},{10:[1,207],106:[1,208]},t(Vt,[2,128]),{10:[1,209],44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:112,114:_,115:v,116:B},{10:[1,210],44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:112,114:_,115:v,116:B},{80:[1,211]},t($t,[2,109],{10:[1,212]}),t($t,[2,111],{10:[1,213]}),{80:[1,214]},t(It,[2,184]),{80:[1,215],98:[1,216]},t(J,[2,55],{113:112,44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,114:_,115:v,116:B}),{31:[1,217],67:Rt,82:218,116:Gt,117:Kt,118:Ot},t(Wt,[2,86]),t(Wt,[2,88]),t(Wt,[2,89]),t(Wt,[2,153]),t(Wt,[2,154]),t(Wt,[2,155]),t(Wt,[2,156]),{49:[1,219],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{30:220,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{51:[1,221],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{53:[1,222],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{55:[1,223],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{57:[1,224],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{60:[1,225]},{64:[1,226],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{66:[1,227],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{30:228,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},{31:[1,229],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{67:Rt,69:[1,230],71:[1,231],82:218,116:Gt,117:Kt,118:Ot},{67:Rt,69:[1,233],71:[1,232],82:218,116:Gt,117:Kt,118:Ot},t(O,[2,45],{18:155,10:R,40:Lt}),t(O,[2,47],{44:wt}),t(it,[2,75]),t(it,[2,74]),{62:[1,234],67:Rt,82:218,116:Gt,117:Kt,118:Ot},t(it,[2,77]),t(Mt,[2,80]),{77:[1,235],79:197,116:at,119:ut},{30:236,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},t(Bt,r,{5:237}),t(Ut,[2,102]),t(N,[2,35]),{43:238,44:A,45:39,47:40,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},{10:R,18:239},{10:Yt,60:jt,84:zt,92:240,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:251,104:[1,252],105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:253,104:[1,254],105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{105:[1,255]},{10:Yt,60:jt,84:zt,92:256,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{44:A,47:257,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t($t,[2,116]),t($t,[2,118],{10:[1,261]}),t($t,[2,119]),t(tt,[2,56]),t(Wt,[2,87]),t(tt,[2,57]),{51:[1,262],67:Rt,82:218,116:Gt,117:Kt,118:Ot},t(tt,[2,64]),t(tt,[2,59]),t(tt,[2,60]),t(tt,[2,61]),{109:[1,263]},t(tt,[2,63]),t(tt,[2,65]),{66:[1,264],67:Rt,82:218,116:Gt,117:Kt,118:Ot},t(tt,[2,67]),t(tt,[2,68]),t(tt,[2,70]),t(tt,[2,69]),t(tt,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(it,[2,78]),{31:[1,265],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,266],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:k,85:y,86:f,87:m,88:E,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},t(J,[2,53]),{43:267,44:A,45:39,47:40,60:b,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,121],{106:Jt}),t(te,[2,130],{108:269,10:Yt,60:jt,84:zt,105:Xt,109:Ht,110:qt,111:Qt,112:Zt}),t(ee,[2,132]),t(ee,[2,134]),t(ee,[2,135]),t(ee,[2,136]),t(ee,[2,137]),t(ee,[2,138]),t(ee,[2,139]),t(ee,[2,140]),t(ee,[2,141]),t($t,[2,122],{106:Jt}),{10:[1,270]},t($t,[2,123],{106:Jt}),{10:[1,271]},t(Vt,[2,129]),t($t,[2,105],{106:Jt}),t($t,[2,106],{113:112,44:A,60:b,89:C,102:D,105:T,106:x,109:S,111:F,114:_,115:v,116:B}),t($t,[2,110]),t($t,[2,112],{10:[1,272]}),t($t,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:P,9:G,11:K,21:277},t(N,[2,34]),t(J,[2,52]),{10:Yt,60:jt,84:zt,105:Xt,107:278,108:242,109:Ht,110:qt,111:Qt,112:Zt},t(ee,[2,133]),{14:U,44:V,60:W,89:Y,101:279,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},{14:U,44:V,60:W,89:Y,101:280,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},{98:[1,281]},t($t,[2,120]),t(tt,[2,58]),{30:282,67:Rt,80:Nt,81:Pt,82:171,116:Gt,117:Kt,118:Ot},t(tt,[2,66]),t(Bt,r,{5:283}),t(te,[2,131],{108:269,10:Yt,60:jt,84:zt,105:Xt,109:Ht,110:qt,111:Qt,112:Zt}),t($t,[2,126],{120:167,10:[1,284],14:U,44:V,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,127],{120:167,10:[1,285],14:U,44:V,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,114]),{31:[1,286],67:Rt,82:218,116:Gt,117:Kt,118:Ot},{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,287],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:k,85:y,86:f,87:m,88:E,89:C,102:D,105:T,106:x,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},{10:Yt,60:jt,84:zt,92:288,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:289,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},t(tt,[2,62]),t(N,[2,33]),t($t,[2,124],{106:Jt}),t($t,[2,125],{106:Jt})],defaultActions:{},parseError:(0,h.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,h.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,u="",o=0,l=0,c=0,d=r.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(g.yy[A]=this.yy[A]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;r.push(b);var k=p.options&&p.options.ranges;function y(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,h.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,h.K2)(y,"lex");for(var f,m,E,C,D,T,x,S,F,_={};;){if(E=s[s.length-1],this.defaultActions[E]?C=this.defaultActions[E]:(null==f&&(f=y()),C=a[E]&&a[E][f]),void 0===C||!C.length||!C[0]){var v="";for(T in F=[],a[E])this.terminals_[T]&&T>2&&F.push("'"+this.terminals_[T]+"'");v=p.showPosition?"Parse error on line "+(o+1)+":\n"+p.showPosition()+"\nExpecting "+F.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(v,{text:p.match,token:this.terminals_[f]||f,line:p.yylineno,loc:b,expected:F})}if(C[0]instanceof Array&&C.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+f);switch(C[0]){case 1:s.push(f),n.push(p.yytext),r.push(p.yylloc),s.push(C[1]),f=null,m?(f=m,m=null):(l=p.yyleng,u=p.yytext,o=p.yylineno,b=p.yylloc,c>0&&c--);break;case 2:if(x=this.productions_[C[1]][1],_.$=n[n.length-x],_._$={first_line:r[r.length-(x||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(x||1)].first_column,last_column:r[r.length-1].last_column},k&&(_._$.range=[r[r.length-(x||1)].range[0],r[r.length-1].range[1]]),void 0!==(D=this.performAction.apply(_,[u,l,o,g.yy,C[1],n,r].concat(d))))return D;x&&(s=s.slice(0,-1*x*2),n=n.slice(0,-1*x),r=r.slice(0,-1*x)),s.push(this.productions_[C[1]][0]),n.push(_.$),r.push(_._$),S=a[s[s.length-2]][s[s.length-1]],s.push(S);break;case 3:return!0}}return!0},"parse")},ie=function(){return{EOF:1,parseError:(0,h.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,h.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,h.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,h.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,h.K2)(function(){return this._more=!0,this},"more"),reject:(0,h.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,h.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,h.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,h.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,h.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,h.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,h.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,h.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,h.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,h.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,h.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,h.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,h.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,h.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,h.K2)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:case 12:case 14:case 17:case 20:case 23:case 33:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),e.yytext="",40;case 8:return this.pushState("shapeDataStr"),40;case 9:return this.popState(),40;case 10:const s=/\n\s*/g;return e.yytext=e.yytext.replace(s,"
    "),40;case 11:return 40;case 13:this.begin("callbackname");break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 18:return 96;case 19:return"MD_STR";case 21:this.begin("md_string");break;case 22:return"STR";case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 34:return 88;case 35:case 36:case 37:return t.lex.firstGraph()&&this.begin("dir"),12;case 38:return 27;case 39:return 32;case 40:case 41:case 42:case 43:return 98;case 44:return this.popState(),13;case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:return this.popState(),14;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:case 102:return 111;case 62:return 46;case 63:return 60;case 64:case 103:return 44;case 65:return 8;case 66:return 106;case 67:case 101:return 115;case 68:case 71:case 74:return this.popState(),77;case 69:return this.pushState("edgeText"),75;case 70:case 73:case 76:return 119;case 72:return this.pushState("thickEdgeText"),75;case 75:return this.pushState("dottedEdgeText"),75;case 77:return 77;case 78:return this.popState(),53;case 79:case 115:return"TEXT";case 80:return this.pushState("ellipseText"),52;case 81:return this.popState(),55;case 82:return this.pushState("text"),54;case 83:return this.popState(),57;case 84:return this.pushState("text"),56;case 85:return 58;case 86:return this.pushState("text"),67;case 87:return this.popState(),64;case 88:return this.pushState("text"),63;case 89:return this.popState(),49;case 90:return this.pushState("text"),48;case 91:return this.popState(),69;case 92:return this.popState(),71;case 93:return 117;case 94:return this.pushState("trapText"),68;case 95:return this.pushState("trapText"),70;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;case 108:return this.pushState("text"),62;case 109:return this.popState(),51;case 110:return this.pushState("text"),50;case 111:return this.popState(),31;case 112:return this.pushState("text"),29;case 113:return this.popState(),66;case 114:return this.pushState("text"),65;case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}}}();function ne(){this.yy={}}return se.lexer=ie,(0,h.K2)(ne,"Parser"),ne.prototype=se,se.Parser=ne,new ne}();k.parser=k;var y=k,f=Object.assign({},y);f.parse=t=>{const e=t.replace(/}\s*\n/g,"}\n");return y.parse(e)};var m=f,E=(0,h.K2)((t,e)=>{const s=g.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return p.A(i,n,r,e)},"fade"),C=(0,h.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .katex path {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n }\n\n .rough-node .label,.node .label, .image-shape .label, .icon-shape .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n\n .root .anchor path {\n fill: ${t.lineColor} !important;\n stroke-width: 0;\n stroke: ${t.lineColor};\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${E(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n\n rect.text {\n fill: none;\n stroke-width: 0;\n }\n\n .icon-shape, .image-shape {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n padding: 2px;\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n ${(0,i.o)()}\n`,"getStyles"),D={parser:m,get db(){return new A},renderer:b,styles:C,init:(0,h.K2)(t=>{t.flowchart||(t.flowchart={}),t.layout&&(0,c.XV)({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,(0,c.XV)({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}},2501:(t,e,s)=>{s.d(e,{o:()=>i});var i=(0,s(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},5937:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(2453),n=s(4886);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])}}]); \ No newline at end of file diff --git a/user/assets/js/2325.7fdd7485.js b/user/assets/js/2325.7fdd7485.js new file mode 100644 index 0000000..6f4f4c2 --- /dev/null +++ b/user/assets/js/2325.7fdd7485.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2325],{2325:(s,e,c)=>{c.d(e,{createPacketServices:()=>a.$});var a=c(1477);c(7960)}}]); \ No newline at end of file diff --git a/user/assets/js/2334.70b844af.js b/user/assets/js/2334.70b844af.js new file mode 100644 index 0000000..05c5d57 --- /dev/null +++ b/user/assets/js/2334.70b844af.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2334],{697:(e,n,t)=>{t.d(n,{T:()=>r.T});var r=t(7981)},2334:(e,n,t)=>{t.d(n,{Zp:()=>Rn});var r=t(8058),o=t(8894),i=0;const u=function(e){var n=++i;return(0,o.A)(e)+n};var a=t(9142),s=t(4098),d=t(4722),c=Math.ceil,h=Math.max;const f=function(e,n,t,r){for(var o=-1,i=h(c((n-e)/(t||1)),0),u=Array(i);i--;)u[r?i:++o]=e,e+=t;return u};var g=t(6832),l=t(4342);const v=function(e){return function(n,t,r){return r&&"number"!=typeof r&&(0,g.A)(n,t,r)&&(t=r=void 0),n=(0,l.A)(n),void 0===t?(t=n,n=0):t=(0,l.A)(t),r=void 0===r?n0;--a)if(r=n[a].dequeue()){o=o.concat(_(e,n,t,r,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return s.A(d.A(o,function(n){return e.outEdges(n.v,n.w)}))}function _(e,n,t,o,i){var u=i?[]:void 0;return r.A(e.inEdges(o.v),function(r){var o=e.edge(r),a=e.node(r.v);i&&u.push({v:r.v,w:r.w}),a.out-=o,E(n,t,a)}),r.A(e.outEdges(o.v),function(r){var o=e.edge(r),i=r.w,u=e.node(i);u.in-=o,E(n,t,u)}),e.removeNode(o.v),u}function E(e,n,t){t.out?t.in?e[t.out-t.in+n].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)}function x(e){var n="greedy"===e.graph().acyclicer?y(e,function(e){return function(n){return e.edge(n).weight}}(e)):function(e){var n=[],t={},o={};function i(u){Object.prototype.hasOwnProperty.call(o,u)||(o[u]=!0,t[u]=!0,r.A(e.outEdges(u),function(e){Object.prototype.hasOwnProperty.call(t,e.w)?n.push(e):i(e.w)}),delete t[u])}return r.A(e.nodes(),i),n}(e);r.A(n,function(n){var t=e.edge(n);e.removeEdge(n),t.forwardName=n.name,t.reversed=!0,e.setEdge(n.w,n.v,t,u("rev"))})}var k=t(2837),O=t(9354),N=t(9188);const P=function(e,n){return(0,O.A)(e,n,function(n,t){return(0,N.A)(e,t)})};var C=t(6875),j=t(7525);const L=function(e){return(0,j.A)((0,C.A)(e,void 0,s.A),e+"")}(function(e,n){return null==e?{}:P(e,n)});var I=t(3068),T=t(2559);const M=function(e,n){return e>n};var R=t(9008);const F=function(e){return e&&e.length?(0,T.A)(e,R.A,M):void 0};var D=t(6666),S=t(2528),G=t(9841),V=t(3958);const B=function(e,n){var t={};return n=(0,V.A)(n,3),(0,G.A)(e,function(e,r,o){(0,S.A)(t,r,n(e,r,o))}),t};var q=t(9592),Y=t(6452),z=t(8585),J=t(1917);const Z=function(){return J.A.Date.now()};function H(e,n,t,r){var o;do{o=u(r)}while(e.hasNode(o));return t.dummy=n,e.setNode(o,t),o}function K(e){var n=new p.T({multigraph:e.isMultigraph()}).setGraph(e.graph());return r.A(e.nodes(),function(t){e.children(t).length||n.setNode(t,e.node(t))}),r.A(e.edges(),function(t){n.setEdge(t,e.edge(t))}),n}function Q(e,n){var t,r,o=e.x,i=e.y,u=n.x-o,a=n.y-i,s=e.width/2,d=e.height/2;if(!u&&!a)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(a)*s>Math.abs(u)*d?(a<0&&(d=-d),t=d*u/a,r=d):(u<0&&(s=-s),t=s,r=s*a/u),{x:o+t,y:i+r}}function U(e){var n=d.A(v(X(e)+1),function(){return[]});return r.A(e.nodes(),function(t){var r=e.node(t),o=r.rank;q.A(o)||(n[o][r.order]=t)}),n}function W(e,n,t,r){var o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),H(e,"border",o,n)}function X(e){return F(d.A(e.nodes(),function(n){var t=e.node(n).rank;if(!q.A(t))return t}))}function $(e,n){var t=Z();try{return n()}finally{console.log(e+" time: "+(Z()-t)+"ms")}}function ee(e,n){return n()}function ne(e,n,t,r,o,i){var u={width:0,height:0,rank:i,borderType:n},a=o[n][i-1],s=H(e,"border",u,t);o[n][i]=s,e.setParent(s,r),a&&e.setEdge(a,s,{weight:1})}function te(e){var n=e.graph().rankdir.toLowerCase();"bt"!==n&&"rl"!==n||function(e){r.A(e.nodes(),function(n){ie(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);r.A(t.points,ie),Object.prototype.hasOwnProperty.call(t,"y")&&ie(t)})}(e),"lr"!==n&&"rl"!==n||(!function(e){r.A(e.nodes(),function(n){ue(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);r.A(t.points,ue),Object.prototype.hasOwnProperty.call(t,"x")&&ue(t)})}(e),re(e))}function re(e){r.A(e.nodes(),function(n){oe(e.node(n))}),r.A(e.edges(),function(n){oe(e.edge(n))})}function oe(e){var n=e.width;e.width=e.height,e.height=n}function ie(e){e.y=-e.y}function ue(e){var n=e.x;e.x=e.y,e.y=n}function ae(e){e.graph().dummyChains=[],r.A(e.edges(),function(n){!function(e,n){var t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,u=n.name,a=e.edge(n),s=a.labelRank;if(i===r+1)return;e.removeEdge(n);var d,c,h=void 0;for(c=0,++r;ru.lim&&(a=u,s=!0);var d=Ae.A(n.edges(),function(n){return s===Be(e,e.node(n.v),a)&&s!==Be(e,e.node(n.w),a)});return de(d,function(e){return he(n,e)})}function Ve(e,n,t,o){var i=t.v,u=t.w;e.removeEdge(i,u),e.setEdge(o.v,o.w,{}),Fe(e),Me(e,n),function(e,n){var t=pe.A(e.nodes(),function(e){return!n.node(e).parent}),o=function(e,n){return Le(e,n,"pre")}(e,t);o=o.slice(1),r.A(o,function(t){var r=e.node(t).parent,o=n.edge(t,r),i=!1;o||(o=n.edge(r,t),i=!0),n.node(t).rank=n.node(r).rank+(i?o.minlen:-o.minlen)})}(e,n)}function Be(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}function qe(e){switch(e.graph().ranker){case"network-simplex":default:ze(e);break;case"tight-tree":!function(e){ce(e),fe(e)}(e);break;case"longest-path":Ye(e)}}Te.initLowLimValues=Fe,Te.initCutValues=Me,Te.calcCutValue=Re,Te.leaveEdge=Se,Te.enterEdge=Ge,Te.exchangeEdges=Ve;var Ye=ce;function ze(e){Te(e)}var Je=t(8207),Ze=t(9463);function He(e){var n=H(e,"root",{},"_root"),t=function(e){var n={};function t(o,i){var u=e.children(o);u&&u.length&&r.A(u,function(e){t(e,i+1)}),n[o]=i}return r.A(e.children(),function(e){t(e,1)}),n}(e),o=F(Je.A(t))-1,i=2*o+1;e.graph().nestingRoot=n,r.A(e.edges(),function(n){e.edge(n).minlen*=i});var u=function(e){return Ze.A(e.edges(),function(n,t){return n+e.edge(t).weight},0)}(e)+1;r.A(e.children(),function(r){Ke(e,n,i,u,o,t,r)}),e.graph().nodeRankFactor=i}function Ke(e,n,t,o,i,u,a){var s=e.children(a);if(s.length){var d=W(e,"_bt"),c=W(e,"_bb"),h=e.node(a);e.setParent(d,a),h.borderTop=d,e.setParent(c,a),h.borderBottom=c,r.A(s,function(r){Ke(e,n,t,o,i,u,r);var s=e.node(r),h=s.borderTop?s.borderTop:r,f=s.borderBottom?s.borderBottom:r,g=s.borderTop?o:2*o,l=h!==f?1:i-u[a]+1;e.setEdge(d,h,{weight:g,minlen:l,nestingEdge:!0}),e.setEdge(f,c,{weight:g,minlen:l,nestingEdge:!0})}),e.parent(a)||e.setEdge(n,d,{weight:0,minlen:i+u[a]})}else a!==n&&e.setEdge(n,a,{weight:0,minlen:t})}var Qe=t(8675);const Ue=function(e){return(0,Qe.A)(e,5)};function We(e,n,t){var o=function(e){var n;for(;e.hasNode(n=u("_root")););return n}(e),i=new p.T({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(n){return e.node(n)});return r.A(e.nodes(),function(u){var a=e.node(u),s=e.parent(u);(a.rank===n||a.minRank<=n&&n<=a.maxRank)&&(i.setNode(u),i.setParent(u,s||o),r.A(e[t](u),function(n){var t=n.v===u?n.w:n.v,r=i.edge(t,u),o=q.A(r)?0:r.weight;i.setEdge(t,u,{weight:e.edge(n).weight+o})}),Object.prototype.hasOwnProperty.call(a,"minRank")&&i.setNode(u,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]}))}),i}var Xe=t(2851);const $e=function(e,n,t){for(var r=-1,o=e.length,i=n.length,u={};++rn||i&&u&&s&&!a&&!d||r&&u&&s||!t&&s||!o)return 1;if(!r&&!i&&!d&&e=a?s:s*("desc"==t[r]?-1:1)}return e.index-n.index};const hn=function(e,n,t){n=n.length?(0,tn.A)(n,function(e){return(0,je.A)(e)?function(n){return(0,rn.A)(n,1===e.length?e[0]:e)}:e}):[R.A];var r=-1;n=(0,tn.A)(n,(0,an.A)(V.A));var o=(0,on.A)(e,function(e,t,o){return{criteria:(0,tn.A)(n,function(n){return n(e)}),index:++r,value:e}});return un(o,function(e,n){return cn(e,n,t)})};const fn=(0,t(4326).A)(function(e,n){if(null==e)return[];var t=n.length;return t>1&&(0,g.A)(e,n[0],n[1])?n=[]:t>2&&(0,g.A)(n[0],n[1],n[2])&&(n=[n[0]]),hn(e,(0,nn.A)(n,1),[])});function gn(e,n){for(var t=0,r=1;r0;)n%2&&(t+=c[n+1]),c[n=n-1>>1]+=e.weight;h+=e.weight*t})),h}function vn(e,n){var t={};return r.A(e,function(e,n){var r=t[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:n};q.A(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)}),r.A(n.edges(),function(e){var n=t[e.v],r=t[e.w];q.A(n)||q.A(r)||(r.indegree++,n.out.push(t[e.w]))}),function(e){var n=[];function t(e){return function(n){n.merged||(q.A(n.barycenter)||q.A(e.barycenter)||n.barycenter>=e.barycenter)&&function(e,n){var t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight);n.weight&&(t+=n.barycenter*n.weight,r+=n.weight);e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=!0}(e,n)}}function o(n){return function(t){t.in.push(n),0===--t.indegree&&e.push(t)}}for(;e.length;){var i=e.pop();n.push(i),r.A(i.in.reverse(),t(i)),r.A(i.out,o(i))}return d.A(Ae.A(n,function(e){return!e.merged}),function(e){return L(e,["vs","i","barycenter","weight"])})}(Ae.A(t,function(e){return!e.indegree}))}function pn(e,n){var t,o=function(e,n){var t={lhs:[],rhs:[]};return r.A(e,function(e){n(e)?t.lhs.push(e):t.rhs.push(e)}),t}(e,function(e){return Object.prototype.hasOwnProperty.call(e,"barycenter")}),i=o.lhs,u=fn(o.rhs,function(e){return-e.i}),a=[],d=0,c=0,h=0;i.sort((t=!!n,function(e,n){return e.barycentern.barycenter?1:t?n.i-e.i:e.i-n.i})),h=An(a,u,h),r.A(i,function(e){h+=e.vs.length,a.push(e.vs),d+=e.barycenter*e.weight,c+=e.weight,h=An(a,u,h)});var f={vs:s.A(a)};return c&&(f.barycenter=d/c,f.weight=c),f}function An(e,n,t){for(var r;n.length&&(r=D.A(n)).i<=t;)n.pop(),e.push(r.vs),t++;return t}function wn(e,n,t,o){var i=e.children(n),u=e.node(n),a=u?u.borderLeft:void 0,c=u?u.borderRight:void 0,h={};a&&(i=Ae.A(i,function(e){return e!==a&&e!==c}));var f=function(e,n){return d.A(n,function(n){var t=e.inEdges(n);if(t.length){var r=Ze.A(t,function(n,t){var r=e.edge(t),o=e.node(t.v);return{sum:n.sum+r.weight*o.order,weight:n.weight+r.weight}},{sum:0,weight:0});return{v:n,barycenter:r.sum/r.weight,weight:r.weight}}return{v:n}})}(e,i);r.A(f,function(n){if(e.children(n.v).length){var r=wn(e,n.v,t,o);h[n.v]=r,Object.prototype.hasOwnProperty.call(r,"barycenter")&&(i=n,u=r,q.A(i.barycenter)?(i.barycenter=u.barycenter,i.weight=u.weight):(i.barycenter=(i.barycenter*i.weight+u.barycenter*u.weight)/(i.weight+u.weight),i.weight+=u.weight))}var i,u});var g=vn(f,t);!function(e,n){r.A(e,function(e){e.vs=s.A(e.vs.map(function(e){return n[e]?n[e].vs:e}))})}(g,h);var l=pn(g,o);if(a&&(l.vs=s.A([a,l.vs,c]),e.predecessors(a).length)){var v=e.node(e.predecessors(a)[0]),p=e.node(e.predecessors(c)[0]);Object.prototype.hasOwnProperty.call(l,"barycenter")||(l.barycenter=0,l.weight=0),l.barycenter=(l.barycenter*l.weight+v.order+p.order)/(l.weight+2),l.weight+=2}return l}function bn(e){var n=X(e),t=mn(e,v(1,n+1),"inEdges"),o=mn(e,v(n-1,-1,-1),"outEdges"),i=function(e){var n={},t=Ae.A(e.nodes(),function(n){return!e.children(n).length}),o=F(d.A(t,function(n){return e.node(n).rank})),i=d.A(v(o+1),function(){return[]}),u=fn(t,function(n){return e.node(n).rank});return r.A(u,function t(o){if(!z.A(n,o)){n[o]=!0;var u=e.node(o);i[u.rank].push(o),r.A(e.successors(o),t)}}),i}(e);_n(e,i);for(var u,a=Number.POSITIVE_INFINITY,s=0,c=0;c<4;++s,++c){yn(s%2?t:o,s%4>=2);var h=gn(e,i=U(e));hs||d>n[o].lim));i=o,o=r;for(;(o=e.parent(o))!==i;)a.push(o);return{path:u.concat(a.reverse()),lca:i}}(e,n,o.v,o.w),u=i.path,a=i.lca,s=0,d=u[s],c=!0;t!==o.w;){if(r=e.node(t),c){for(;(d=u[s])!==a&&e.node(d).maxRankt){var r=n;n=t,t=r}Object.prototype.hasOwnProperty.call(e,n)||Object.defineProperty(e,n,{enumerable:!0,configurable:!0,value:{},writable:!0});var o=e[n];Object.defineProperty(o,t,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function Ln(e,n,t){if(n>t){var r=n;n=t,t=r}return!!e[n]&&Object.prototype.hasOwnProperty.call(e[n],t)}function In(e,n,t,o,i){var u={},a=function(e,n,t,o){var i=new p.T,u=e.graph(),a=function(e,n,t){return function(r,o,i){var u,a=r.node(o),s=r.node(i),d=0;if(d+=a.width/2,Object.prototype.hasOwnProperty.call(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":u=-a.width/2;break;case"r":u=a.width/2}if(u&&(d+=t?u:-u),u=0,d+=(a.dummy?n:e)/2,d+=(s.dummy?n:e)/2,d+=s.width/2,Object.prototype.hasOwnProperty.call(s,"labelpos"))switch(s.labelpos.toLowerCase()){case"l":u=s.width/2;break;case"r":u=-s.width/2}return u&&(d+=t?u:-u),u=0,d}}(u.nodesep,u.edgesep,o);return r.A(n,function(n){var o;r.A(n,function(n){var r=t[n];if(i.setNode(r),o){var u=t[o],s=i.edge(u,r);i.setEdge(u,r,Math.max(a(e,n,o),s||0))}o=n})}),i}(e,n,t,i),s=i?"borderLeft":"borderRight";function d(e,n){for(var t=a.nodes(),r=t.pop(),o={};r;)o[r]?e(r):(o[r]=!0,t.push(r),t=t.concat(n(r))),r=t.pop()}return d(function(e){u[e]=a.inEdges(e).reduce(function(e,n){return Math.max(e,u[n.v]+a.edge(n))},0)},a.predecessors.bind(a)),d(function(n){var t=a.outEdges(n).reduce(function(e,n){return Math.min(e,u[n.w]-a.edge(n))},Number.POSITIVE_INFINITY),r=e.node(n);t!==Number.POSITIVE_INFINITY&&r.borderType!==s&&(u[n]=Math.max(u[n],t))},a.successors.bind(a)),r.A(o,function(e){u[e]=u[t[e]]}),u}function Tn(e){var n,t=U(e),o=k.A(Cn(e,t),function(e,n){var t={};function o(n,o,i,u,a){var s;r.A(v(o,i),function(o){s=n[o],e.node(s).dummy&&r.A(e.predecessors(s),function(n){var r=e.node(n);r.dummy&&(r.ordera)&&jn(t,n,s)})})}return Ze.A(n,function(n,t){var i,u=-1,a=0;return r.A(t,function(r,s){if("border"===e.node(r).dummy){var d=e.predecessors(r);d.length&&(i=e.node(d[0]).order,o(t,a,s,u,i),a=s,u=i)}o(t,a,t.length,i,n.length)}),t}),t}(e,t)),i={};r.A(["u","d"],function(u){n="u"===u?t:Je.A(t).reverse(),r.A(["l","r"],function(t){"r"===t&&(n=d.A(n,function(e){return Je.A(e).reverse()}));var a=("u"===u?e.predecessors:e.successors).bind(e),s=function(e,n,t,o){var i={},u={},a={};return r.A(n,function(e){r.A(e,function(e,n){i[e]=e,u[e]=e,a[e]=n})}),r.A(n,function(e){var n=-1;r.A(e,function(e){var r=o(e);if(r.length){r=fn(r,function(e){return a[e]});for(var s=(r.length-1)/2,d=Math.floor(s),c=Math.ceil(s);d<=c;++d){var h=r[d];u[e]===e&&n{var n=t(" buildLayoutGraph",()=>function(e){var n=new p.T({multigraph:!0,compound:!0}),t=Jn(e.graph());return n.setGraph(k.A({},Dn,zn(t,Fn),L(t,Sn))),r.A(e.nodes(),function(t){var r=Jn(e.node(t));n.setNode(t,I.A(zn(r,Gn),Vn)),n.setParent(t,e.parent(t))}),r.A(e.edges(),function(t){var r=Jn(e.edge(t));n.setEdge(t,k.A({},qn,zn(r,Bn),L(r,Yn)))}),n}(e));t(" runLayout",()=>function(e,n){n(" makeSpaceForEdgeLabels",()=>function(e){var n=e.graph();n.ranksep/=2,r.A(e.edges(),function(t){var r=e.edge(t);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===n.rankdir||"BT"===n.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)})}(e)),n(" removeSelfEdges",()=>function(e){r.A(e.edges(),function(n){if(n.v===n.w){var t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}})}(e)),n(" acyclic",()=>x(e)),n(" nestingGraph.run",()=>He(e)),n(" rank",()=>qe(K(e))),n(" injectEdgeLabelProxies",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(t.width&&t.height){var r=e.node(n.v),o={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};H(e,"edge-proxy",o,"_ep")}})}(e)),n(" removeEmptyRanks",()=>function(e){var n=Y.A(d.A(e.nodes(),function(n){return e.node(n).rank})),t=[];r.A(e.nodes(),function(r){var o=e.node(r).rank-n;t[o]||(t[o]=[]),t[o].push(r)});var o=0,i=e.graph().nodeRankFactor;r.A(t,function(n,t){q.A(n)&&t%i!==0?--o:o&&r.A(n,function(n){e.node(n).rank+=o})})}(e)),n(" nestingGraph.cleanup",()=>function(e){var n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,r.A(e.edges(),function(n){e.edge(n).nestingEdge&&e.removeEdge(n)})}(e)),n(" normalizeRanks",()=>function(e){var n=Y.A(d.A(e.nodes(),function(n){return e.node(n).rank}));r.A(e.nodes(),function(t){var r=e.node(t);z.A(r,"rank")&&(r.rank-=n)})}(e)),n(" assignRankMinMax",()=>function(e){var n=0;r.A(e.nodes(),function(t){var r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=F(n,r.maxRank))}),e.graph().maxRank=n}(e)),n(" removeEdgeLabelProxies",()=>function(e){r.A(e.nodes(),function(n){var t=e.node(n);"edge-proxy"===t.dummy&&(e.edge(t.e).labelRank=t.rank,e.removeNode(n))})}(e)),n(" normalize.run",()=>ae(e)),n(" parentDummyChains",()=>En(e)),n(" addBorderSegments",()=>function(e){r.A(e.children(),function n(t){var o=e.children(t),i=e.node(t);if(o.length&&r.A(o,n),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var u=i.minRank,a=i.maxRank+1;ubn(e)),n(" insertSelfEdges",()=>function(e){var n=U(e);r.A(n,function(n){var t=0;r.A(n,function(n,o){var i=e.node(n);i.order=o+t,r.A(i.selfEdges,function(n){H(e,"selfedge",{width:n.label.width,height:n.label.height,rank:i.rank,order:o+ ++t,e:n.e,label:n.label},"_se")}),delete i.selfEdges})})}(e)),n(" adjustCoordinateSystem",()=>function(e){var n=e.graph().rankdir.toLowerCase();"lr"!==n&&"rl"!==n||re(e)}(e)),n(" position",()=>Mn(e)),n(" positionSelfEdges",()=>function(e){r.A(e.nodes(),function(n){var t=e.node(n);if("selfedge"===t.dummy){var r=e.node(t.e.v),o=r.x+r.width/2,i=r.y,u=t.x-o,a=r.height/2;e.setEdge(t.e,t.label),e.removeNode(n),t.label.points=[{x:o+2*u/3,y:i-a},{x:o+5*u/6,y:i-a},{x:o+u,y:i},{x:o+5*u/6,y:i+a},{x:o+2*u/3,y:i+a}],t.label.x=t.x,t.label.y=t.y}})}(e)),n(" removeBorderNodes",()=>function(e){r.A(e.nodes(),function(n){if(e.children(n).length){var t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(D.A(t.borderLeft)),u=e.node(D.A(t.borderRight));t.width=Math.abs(u.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2}}),r.A(e.nodes(),function(n){"border"===e.node(n).dummy&&e.removeNode(n)})}(e)),n(" normalize.undo",()=>function(e){r.A(e.graph().dummyChains,function(n){var t,r=e.node(n),o=r.edgeLabel;for(e.setEdge(r.edgeObj,o);r.dummy;)t=e.successors(n)[0],e.removeNode(n),o.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(o.x=r.x,o.y=r.y,o.width=r.width,o.height=r.height),n=t,r=e.node(n)})}(e)),n(" fixupEdgeLabelCoords",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(Object.prototype.hasOwnProperty.call(t,"x"))switch("l"!==t.labelpos&&"r"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case"l":t.x-=t.width/2+t.labeloffset;break;case"r":t.x+=t.width/2+t.labeloffset}})}(e)),n(" undoCoordinateSystem",()=>te(e)),n(" translateGraph",()=>function(e){var n=Number.POSITIVE_INFINITY,t=0,o=Number.POSITIVE_INFINITY,i=0,u=e.graph(),a=u.marginx||0,s=u.marginy||0;function d(e){var r=e.x,u=e.y,a=e.width,s=e.height;n=Math.min(n,r-a/2),t=Math.max(t,r+a/2),o=Math.min(o,u-s/2),i=Math.max(i,u+s/2)}r.A(e.nodes(),function(n){d(e.node(n))}),r.A(e.edges(),function(n){var t=e.edge(n);Object.prototype.hasOwnProperty.call(t,"x")&&d(t)}),n-=a,o-=s,r.A(e.nodes(),function(t){var r=e.node(t);r.x-=n,r.y-=o}),r.A(e.edges(),function(t){var i=e.edge(t);r.A(i.points,function(e){e.x-=n,e.y-=o}),Object.prototype.hasOwnProperty.call(i,"x")&&(i.x-=n),Object.prototype.hasOwnProperty.call(i,"y")&&(i.y-=o)}),u.width=t-n+a,u.height=i-o+s}(e)),n(" assignNodeIntersects",()=>function(e){r.A(e.edges(),function(n){var t,r,o=e.edge(n),i=e.node(n.v),u=e.node(n.w);o.points?(t=o.points[0],r=o.points[o.points.length-1]):(o.points=[],t=u,r=i),o.points.unshift(Q(i,t)),o.points.push(Q(u,r))})}(e)),n(" reversePoints",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);t.reversed&&t.points.reverse()})}(e)),n(" acyclic.undo",()=>function(e){r.A(e.edges(),function(n){var t=e.edge(n);if(t.reversed){e.removeEdge(n);var r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}})}(e))}(n,t)),t(" updateInputGraph",()=>function(e,n){r.A(e.nodes(),function(t){var r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,n.children(t).length&&(r.width=o.width,r.height=o.height))}),r.A(e.edges(),function(t){var r=e.edge(t),o=n.edge(t);r.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(r.x=o.x,r.y=o.y)}),e.graph().width=n.graph().width,e.graph().height=n.graph().height}(e,n))})}var Fn=["nodesep","edgesep","ranksep","marginx","marginy"],Dn={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Sn=["acyclicer","ranker","rankdir","align"],Gn=["width","height"],Vn={width:0,height:0},Bn=["minlen","weight","width","height","labeloffset"],qn={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Yn=["labelpos"];function zn(e,n){return B(L(e,n),Number)}function Jn(e){var n={};return r.A(e,function(e,t){n[t.toLowerCase()]=e}),n}},7981:(e,n,t)=>{t.d(n,{T:()=>w});var r=t(9142),o=t(9610),i=t(7422),u=t(4092),a=t(6401),s=t(8058),d=t(9592),c=t(3588),h=t(4326),f=t(9902),g=t(3533);const l=(0,h.A)(function(e){return(0,f.A)((0,c.A)(e,1,g.A,!0))});var v=t(8207),p=t(9463),A="\0";class w{constructor(e={}){this._isDirected=!Object.prototype.hasOwnProperty.call(e,"directed")||e.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(e,"multigraph")&&e.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(e,"compound")&&e.compound,this._label=void 0,this._defaultNodeLabelFn=r.A(void 0),this._defaultEdgeLabelFn=r.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[A]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return o.A(e)||(e=r.A(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return i.A(this._nodes)}sources(){var e=this;return u.A(this.nodes(),function(n){return a.A(e._in[n])})}sinks(){var e=this;return u.A(this.nodes(),function(n){return a.A(e._out[n])})}setNodes(e,n){var t=arguments,r=this;return s.A(e,function(e){t.length>1?r.setNode(e,n):r.setNode(e)}),this}setNode(e,n){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=A,this._children[e]={},this._children[A][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var n=e=>this.removeEdge(this._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],s.A(this.children(e),e=>{this.setParent(e)}),delete this._children[e]),s.A(i.A(this._in[e]),n),delete this._in[e],delete this._preds[e],s.A(i.A(this._out[e]),n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,n){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(d.A(n))n=A;else{for(var t=n+="";!d.A(t);t=this.parent(t))if(t===e)throw new Error("Setting "+n+" as parent of "+e+" would create a cycle");this.setNode(n)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var n=this._parent[e];if(n!==A)return n}}children(e){if(d.A(e)&&(e=A),this._isCompound){var n=this._children[e];if(n)return i.A(n)}else{if(e===A)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var n=this._preds[e];if(n)return i.A(n)}successors(e){var n=this._sucs[e];if(n)return i.A(n)}neighbors(e){var n=this.predecessors(e);if(n)return l(n,this.successors(e))}isLeaf(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length}filterNodes(e){var n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph());var t=this;s.A(this._nodes,function(t,r){e(r)&&n.setNode(r,t)}),s.A(this._edgeObjs,function(e){n.hasNode(e.v)&&n.hasNode(e.w)&&n.setEdge(e,t.edge(e))});var r={};function o(e){var i=t.parent(e);return void 0===i||n.hasNode(i)?(r[e]=i,i):i in r?r[i]:o(i)}return this._isCompound&&s.A(n.nodes(),function(e){n.setParent(e,o(e))}),n}setDefaultEdgeLabel(e){return o.A(e)||(e=r.A(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return v.A(this._edgeObjs)}setPath(e,n){var t=this,r=arguments;return p.A(e,function(e,o){return r.length>1?t.setEdge(e,o,n):t.setEdge(e,o),o}),this}setEdge(){var e,n,t,r,o=!1,i=arguments[0];"object"==typeof i&&null!==i&&"v"in i?(e=i.v,n=i.w,t=i.name,2===arguments.length&&(r=arguments[1],o=!0)):(e=i,n=arguments[1],t=arguments[3],arguments.length>2&&(r=arguments[2],o=!0)),e=""+e,n=""+n,d.A(t)||(t=""+t);var u=y(this._isDirected,e,n,t);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,u))return o&&(this._edgeLabels[u]=r),this;if(!d.A(t)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(n),this._edgeLabels[u]=o?r:this._defaultEdgeLabelFn(e,n,t);var a=function(e,n,t,r){var o=""+n,i=""+t;if(!e&&o>i){var u=o;o=i,i=u}var a={v:o,w:i};r&&(a.name=r);return a}(this._isDirected,e,n,t);return e=a.v,n=a.w,Object.freeze(a),this._edgeObjs[u]=a,b(this._preds[n],e),b(this._sucs[e],n),this._in[n][u]=a,this._out[e][u]=a,this._edgeCount++,this}edge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t);return this._edgeLabels[r]}hasEdge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t);return Object.prototype.hasOwnProperty.call(this._edgeLabels,r)}removeEdge(e,n,t){var r=1===arguments.length?_(this._isDirected,arguments[0]):y(this._isDirected,e,n,t),o=this._edgeObjs[r];return o&&(e=o.v,n=o.w,delete this._edgeLabels[r],delete this._edgeObjs[r],m(this._preds[n],e),m(this._sucs[e],n),delete this._in[n][r],delete this._out[e][r],this._edgeCount--),this}inEdges(e,n){var t=this._in[e];if(t){var r=v.A(t);return n?u.A(r,function(e){return e.v===n}):r}}outEdges(e,n){var t=this._out[e];if(t){var r=v.A(t);return n?u.A(r,function(e){return e.w===n}):r}}nodeEdges(e,n){var t=this.inEdges(e,n);if(t)return t.concat(this.outEdges(e,n))}}function b(e,n){e[n]?e[n]++:e[n]=1}function m(e,n){--e[n]||delete e[n]}function y(e,n,t,r){var o=""+n,i=""+t;if(!e&&o>i){var u=o;o=i,i=u}return o+"\x01"+i+"\x01"+(d.A(r)?"\0":r)}function _(e,n){return y(e,n.v,n.w,n.name)}w.prototype._nodeCount=0,w.prototype._edgeCount=0}}]); \ No newline at end of file diff --git a/user/assets/js/2492.d333d923.js b/user/assets/js/2492.d333d923.js new file mode 100644 index 0000000..9310643 --- /dev/null +++ b/user/assets/js/2492.d333d923.js @@ -0,0 +1 @@ +(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2492],{445:function(t){t.exports=function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,i=/\d\d/,s=/\d\d?/,r=/\d*[^-_:/,()\s\d]+/,a={},o=function(t){return(t=+t)+(t>68?1900:2e3)},c=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],d=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},u=function(t,e){var n,i=a.meridiem;if(i){for(var s=1;s<=24;s+=1)if(t.indexOf(i(s,0,e))>-1){n=s>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[r,function(t){this.afternoon=u(t,!1)}],a:[r,function(t){this.afternoon=u(t,!0)}],Q:[n,function(t){this.month=3*(t-1)+1}],S:[n,function(t){this.milliseconds=100*+t}],SS:[i,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[s,c("seconds")],ss:[s,c("seconds")],m:[s,c("minutes")],mm:[s,c("minutes")],H:[s,c("hours")],h:[s,c("hours")],HH:[s,c("hours")],hh:[s,c("hours")],D:[s,c("day")],DD:[i,c("day")],Do:[r,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],w:[s,c("week")],ww:[i,c("week")],M:[s,c("month")],MM:[i,c("month")],MMM:[r,function(t){var e=d("months"),n=(d("monthsShort")||e.map(function(t){return t.slice(0,3)})).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[r,function(t){var e=d("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,c("year")],YY:[i,function(t){this.year=o(t)}],YYYY:[/\d{4}/,c("year")],Z:l,ZZ:l};function f(n){var i,s;i=n,s=a&&a.formats;for(var r=(n=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(e,n,i){var r=i&&i.toUpperCase();return n||s[i]||t[i]||s[r].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(t,e,n){return e||n.slice(1)})})).match(e),o=r.length,c=0;c-1)return new Date(("X"===e?1e3:1)*t);var s=f(e)(t),r=s.year,a=s.month,o=s.day,c=s.hours,l=s.minutes,d=s.seconds,u=s.milliseconds,h=s.zone,m=s.week,y=new Date,k=o||(r||a?1:y.getDate()),p=r||y.getFullYear(),g=0;r&&!a||(g=a>0?a-1:y.getMonth());var v,b=c||0,T=l||0,x=d||0,w=u||0;return h?new Date(Date.UTC(p,g,k,b,T,x,w+60*h.offset*1e3)):n?new Date(Date.UTC(p,g,k,b,T,x,w)):(v=new Date(p,g,k,b,T,x,w),m&&(v=i(v).week(m).toDate()),v)}catch(t){return new Date("")}}(e,o,i,n),this.init(),u&&!0!==u&&(this.$L=this.locale(u).$L),d&&e!=this.format(o)&&(this.$d=new Date("")),a={}}else if(o instanceof Array)for(var h=o.length,m=1;m<=h;m+=1){r[1]=o[m-1];var y=n.apply(this,r);if(y.isValid()){this.$d=y.$d,this.$L=y.$L,this.init();break}m===h&&(this.$d=new Date(""))}else s.call(this,t)}}}()},2492:(t,e,n)=>{"use strict";n.d(e,{diagram:()=>Ot});var i=n(3226),s=n(7633),r=n(797),a=n(6750),o=n(4353),c=n(8313),l=n(445),d=n(7375),u=n(3522),h=n(451),f=function(){var t=(0,r.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],i=[1,27],s=[1,28],a=[1,29],o=[1,30],c=[1,31],l=[1,32],d=[1,33],u=[1,34],h=[1,9],f=[1,10],m=[1,11],y=[1,12],k=[1,13],p=[1,14],g=[1,15],v=[1,16],b=[1,19],T=[1,20],x=[1,21],w=[1,22],$=[1,23],_=[1,25],D=[1,35],S={trace:(0,r.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:(0,r.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setWeekday("monday");break;case 9:i.setWeekday("tuesday");break;case 10:i.setWeekday("wednesday");break;case 11:i.setWeekday("thursday");break;case 12:i.setWeekday("friday");break;case 13:i.setWeekday("saturday");break;case 14:i.setWeekday("sunday");break;case 15:i.setWeekend("friday");break;case 16:i.setWeekend("saturday");break;case 17:i.setDateFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 18:i.enableInclusiveEndDates(),this.$=r[o].substr(18);break;case 19:i.TopAxis(),this.$=r[o].substr(8);break;case 20:i.setAxisFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 21:i.setTickInterval(r[o].substr(13)),this.$=r[o].substr(13);break;case 22:i.setExcludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 23:i.setIncludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 24:i.setTodayMarker(r[o].substr(12)),this.$=r[o].substr(12);break;case 27:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 28:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 29:case 30:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 31:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 33:i.addTask(r[o-1],r[o]),this.$="task";break;case 34:this.$=r[o-1],i.setClickEvent(r[o-1],r[o],null);break;case 35:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],r[o]);break;case 36:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],null),i.setLink(r[o-2],r[o]);break;case 37:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-2],r[o-1]),i.setLink(r[o-3],r[o]);break;case 38:this.$=r[o-2],i.setClickEvent(r[o-2],r[o],null),i.setLink(r[o-2],r[o-1]);break;case 39:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-1],r[o]),i.setLink(r[o-3],r[o-2]);break;case 40:this.$=r[o-1],i.setLink(r[o-1],r[o]);break;case 41:case 47:this.$=r[o-1]+" "+r[o];break;case 42:case 43:case 45:this.$=r[o-2]+" "+r[o-1]+" "+r[o];break;case 44:case 46:this.$=r[o-3]+" "+r[o-2]+" "+r[o-1]+" "+r[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:i,14:s,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:m,25:y,26:k,27:p,28:g,29:v,30:b,31:T,33:x,35:w,36:$,37:24,38:_,40:D},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:n,13:i,14:s,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:m,25:y,26:k,27:p,28:g,29:v,30:b,31:T,33:x,35:w,36:$,37:24,38:_,40:D},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:(0,r.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,r.K2)(function(t){var e=this,n=[0],i=[],s=[null],a=[],o=this.table,c="",l=0,d=0,u=0,h=a.slice.call(arguments,1),f=Object.create(this.lexer),m={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(m.yy[y]=this.yy[y]);f.setInput(t,m.yy),m.yy.lexer=f,m.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var k=f.yylloc;a.push(k);var p=f.options&&f.options.ranges;function g(){var t;return"number"!=typeof(t=i.pop()||f.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof m.yy.parseError?this.parseError=m.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,a.length=a.length-t},"popStack"),(0,r.K2)(g,"lex");for(var v,b,T,x,w,$,_,D,S,C={};;){if(T=n[n.length-1],this.defaultActions[T]?x=this.defaultActions[T]:(null==v&&(v=g()),x=o[T]&&o[T][v]),void 0===x||!x.length||!x[0]){var M="";for($ in S=[],o[T])this.terminals_[$]&&$>2&&S.push("'"+this.terminals_[$]+"'");M=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==v?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(M,{text:f.match,token:this.terminals_[v]||v,line:f.yylineno,loc:k,expected:S})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+v);switch(x[0]){case 1:n.push(v),s.push(f.yytext),a.push(f.yylloc),n.push(x[1]),v=null,b?(v=b,b=null):(d=f.yyleng,c=f.yytext,l=f.yylineno,k=f.yylloc,u>0&&u--);break;case 2:if(_=this.productions_[x[1]][1],C.$=s[s.length-_],C._$={first_line:a[a.length-(_||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(_||1)].first_column,last_column:a[a.length-1].last_column},p&&(C._$.range=[a[a.length-(_||1)].range[0],a[a.length-1].range[1]]),void 0!==(w=this.performAction.apply(C,[c,d,l,m.yy,x[1],s,a].concat(h))))return w;_&&(n=n.slice(0,-1*_*2),s=s.slice(0,-1*_),a=a.slice(0,-1*_)),n.push(this.productions_[x[1]][0]),s.push(C.$),a.push(C._$),D=o[n[n.length-2]][n[n.length-1]],n.push(D);break;case 3:return!0}}return!0},"parse")},C=function(){return{EOF:1,parseError:(0,r.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,r.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,r.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,r.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,r.K2)(function(){return this._more=!0,this},"more"),reject:(0,r.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,r.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,r.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,r.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,r.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,r.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,r.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,r.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,r.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,r.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,r.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,r.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,r.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,r.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,r.K2)(function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),31;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),33;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 15:case 18:case 21:case 24:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:case 9:case 10:case 12:case 13:break;case 11:return 10;case 14:this.begin("href");break;case 16:return 43;case 17:this.begin("callbackname");break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 22:return 42;case 23:this.begin("click");break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}}}();function M(){this.yy={}}return S.lexer=C,(0,r.K2)(M,"Parser"),M.prototype=S,S.Parser=M,new M}();f.parser=f;var m=f;o.extend(c),o.extend(l),o.extend(d);var y,k,p={friday:5,saturday:6},g="",v="",b=void 0,T="",x=[],w=[],$=new Map,_=[],D=[],S="",C="",M=["active","done","crit","milestone","vert"],K=[],E=!1,Y=!1,A="sunday",I="saturday",L=0,F=(0,r.K2)(function(){_=[],D=[],S="",K=[],mt=0,y=void 0,k=void 0,gt=[],g="",v="",C="",b=void 0,T="",x=[],w=[],E=!1,Y=!1,L=0,$=new Map,(0,s.IU)(),A="sunday",I="saturday"},"clear"),O=(0,r.K2)(function(t){v=t},"setAxisFormat"),W=(0,r.K2)(function(){return v},"getAxisFormat"),P=(0,r.K2)(function(t){b=t},"setTickInterval"),H=(0,r.K2)(function(){return b},"getTickInterval"),N=(0,r.K2)(function(t){T=t},"setTodayMarker"),B=(0,r.K2)(function(){return T},"getTodayMarker"),z=(0,r.K2)(function(t){g=t},"setDateFormat"),G=(0,r.K2)(function(){E=!0},"enableInclusiveEndDates"),R=(0,r.K2)(function(){return E},"endDatesAreInclusive"),j=(0,r.K2)(function(){Y=!0},"enableTopAxis"),U=(0,r.K2)(function(){return Y},"topAxisEnabled"),V=(0,r.K2)(function(t){C=t},"setDisplayMode"),Z=(0,r.K2)(function(){return C},"getDisplayMode"),X=(0,r.K2)(function(){return g},"getDateFormat"),q=(0,r.K2)(function(t){x=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),Q=(0,r.K2)(function(){return x},"getIncludes"),J=(0,r.K2)(function(t){w=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),tt=(0,r.K2)(function(){return w},"getExcludes"),et=(0,r.K2)(function(){return $},"getLinks"),nt=(0,r.K2)(function(t){S=t,_.push(t)},"addSection"),it=(0,r.K2)(function(){return _},"getSections"),st=(0,r.K2)(function(){let t=wt();let e=0;for(;!t&&e<10;)t=wt(),e++;return D=gt},"getTasks"),rt=(0,r.K2)(function(t,e,n,i){const s=t.format(e.trim()),r=t.format("YYYY-MM-DD");return!i.includes(s)&&!i.includes(r)&&(!(!n.includes("weekends")||t.isoWeekday()!==p[I]&&t.isoWeekday()!==p[I]+1)||(!!n.includes(t.format("dddd").toLowerCase())||(n.includes(s)||n.includes(r))))},"isInvalidDate"),at=(0,r.K2)(function(t){A=t},"setWeekday"),ot=(0,r.K2)(function(){return A},"getWeekday"),ct=(0,r.K2)(function(t){I=t},"setWeekend"),lt=(0,r.K2)(function(t,e,n,i){if(!n.length||t.manualEndTime)return;let s,r;s=t.startTime instanceof Date?o(t.startTime):o(t.startTime,e,!0),s=s.add(1,"d"),r=t.endTime instanceof Date?o(t.endTime):o(t.endTime,e,!0);const[a,c]=dt(s,r,e,n,i);t.endTime=a.toDate(),t.renderEndTime=c},"checkTaskDates"),dt=(0,r.K2)(function(t,e,n,i,s){let r=!1,a=null;for(;t<=e;)r||(a=e.toDate()),r=rt(t,n,i,s),r&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,a]},"fixTaskDates"),ut=(0,r.K2)(function(t,e,n){n=n.trim();if((0,r.K2)(t=>{const e=t.trim();return"x"===e||"X"===e},"isTimestampFormat")(e)&&/^\d+$/.test(n))return new Date(Number(n));const i=/^after\s+(?[\d\w- ]+)/.exec(n);if(null!==i){let t=null;for(const n of i.groups.ids.split(" ")){let e=Tt(n);void 0!==e&&(!t||e.endTime>t.endTime)&&(t=e)}if(t)return t.endTime;const e=new Date;return e.setHours(0,0,0,0),e}let s=o(n,e.trim(),!0);if(s.isValid())return s.toDate();{r.Rm.debug("Invalid date:"+n),r.Rm.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime())||t.getFullYear()<-1e4||t.getFullYear()>1e4)throw new Error("Invalid date:"+n);return t}},"getStartDate"),ht=(0,r.K2)(function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),ft=(0,r.K2)(function(t,e,n,i=!1){n=n.trim();const s=/^until\s+(?[\d\w- ]+)/.exec(n);if(null!==s){let t=null;for(const n of s.groups.ids.split(" ")){let e=Tt(n);void 0!==e&&(!t||e.startTime{window.open(n,"_self")}),$.set(t,n))}),_t(t,"clickable")},"setLink"),_t=(0,r.K2)(function(t,e){t.split(",").forEach(function(t){let n=Tt(t);void 0!==n&&n.classes.push(e)})},"setClass"),Dt=(0,r.K2)(function(t,e,n){if("loose"!==(0,s.D7)().securityLevel)return;if(void 0===e)return;let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{i._K.runFunc(e,...r)})},"setClickFun"),St=(0,r.K2)(function(t,e){K.push(function(){const n=document.querySelector(`[id="${t}"]`);null!==n&&n.addEventListener("click",function(){e()})},function(){const n=document.querySelector(`[id="${t}-text"]`);null!==n&&n.addEventListener("click",function(){e()})})},"pushFun"),Ct=(0,r.K2)(function(t,e,n){t.split(",").forEach(function(t){Dt(t,e,n)}),_t(t,"clickable")},"setClickEvent"),Mt=(0,r.K2)(function(t){K.forEach(function(e){e(t)})},"bindFunctions"),Kt={getConfig:(0,r.K2)(()=>(0,s.D7)().gantt,"getConfig"),clear:F,setDateFormat:z,getDateFormat:X,enableInclusiveEndDates:G,endDatesAreInclusive:R,enableTopAxis:j,topAxisEnabled:U,setAxisFormat:O,getAxisFormat:W,setTickInterval:P,getTickInterval:H,setTodayMarker:N,getTodayMarker:B,setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,setDisplayMode:V,getDisplayMode:Z,setAccDescription:s.EI,getAccDescription:s.m7,addSection:nt,getSections:it,getTasks:st,addTask:bt,findTaskById:Tt,addTaskOrg:xt,setIncludes:q,getIncludes:Q,setExcludes:J,getExcludes:tt,setClickEvent:Ct,setLink:$t,getLinks:et,bindFunctions:Mt,parseDuration:ht,isInvalidDate:rt,setWeekday:at,getWeekday:ot,setWeekend:ct};function Et(t,e,n){let i=!0;for(;i;)i=!1,n.forEach(function(n){const s=new RegExp("^\\s*"+n+"\\s*$");t[0].match(s)&&(e[n]=!0,t.shift(1),i=!0)})}(0,r.K2)(Et,"getTaskTags"),o.extend(u);var Yt,At=(0,r.K2)(function(){r.Rm.debug("Something is calling, setConf, remove the call")},"setConf"),It={monday:h.ABi,tuesday:h.PGu,wednesday:h.GuW,thursday:h.Mol,friday:h.TUC,saturday:h.rGn,sunday:h.YPH},Lt=(0,r.K2)((t,e)=>{let n=[...t].map(()=>-1/0),i=[...t].sort((t,e)=>t.startTime-e.startTime||t.order-e.order),s=0;for(const r of i)for(let t=0;t=n[t]){n[t]=r.endTime,r.order=t+e,t>s&&(s=t);break}return s},"getMaxIntersections"),Ft=1e4,Ot={parser:m,db:Kt,renderer:{setConf:At,draw:(0,r.K2)(function(t,e,n,i){const a=(0,s.D7)().gantt,c=(0,s.D7)().securityLevel;let l;"sandbox"===c&&(l=(0,h.Ltv)("#i"+e));const d="sandbox"===c?(0,h.Ltv)(l.nodes()[0].contentDocument.body):(0,h.Ltv)("body"),u="sandbox"===c?l.nodes()[0].contentDocument:document,f=u.getElementById(e);void 0===(Yt=f.parentElement.offsetWidth)&&(Yt=1200),void 0!==a.useWidth&&(Yt=a.useWidth);const m=i.db.getTasks();let y=[];for(const s of m)y.push(s.type);y=C(y);const k={};let p=2*a.topPadding;if("compact"===i.db.getDisplayMode()||"compact"===a.displayMode){const t={};for(const n of m)void 0===t[n.section]?t[n.section]=[n]:t[n.section].push(n);let e=0;for(const n of Object.keys(t)){const i=Lt(t[n],e)+1;e+=i,p+=i*(a.barHeight+a.barGap),k[n]=i}}else{p+=m.length*(a.barHeight+a.barGap);for(const t of y)k[t]=m.filter(e=>e.type===t).length}f.setAttribute("viewBox","0 0 "+Yt+" "+p);const g=d.select(`[id="${e}"]`),v=(0,h.w7C)().domain([(0,h.jkA)(m,function(t){return t.startTime}),(0,h.T9B)(m,function(t){return t.endTime})]).rangeRound([0,Yt-a.leftPadding-a.rightPadding]);function b(t,e){const n=t.startTime,i=e.startTime;let s=0;return n>i?s=1:nt.vert===e.vert?0:t.vert?1:-1);const u=[...new Set(t.map(t=>t.order))].map(e=>t.find(t=>t.order===e));g.append("g").selectAll("rect").data(u).enter().append("rect").attr("x",0).attr("y",function(t,e){return t.order*n+r-2}).attr("width",function(){return d-a.rightPadding/2}).attr("height",n).attr("class",function(t){for(const[e,n]of y.entries())if(t.type===n)return"section section"+e%a.numberSectionStyles;return"section section0"}).enter();const f=g.append("g").selectAll("rect").data(t).enter(),k=i.db.getLinks();f.append("rect").attr("id",function(t){return t.id}).attr("rx",3).attr("ry",3).attr("x",function(t){return t.milestone?v(t.startTime)+o+.5*(v(t.endTime)-v(t.startTime))-.5*c:v(t.startTime)+o}).attr("y",function(t,e){return e=t.order,t.vert?a.gridLineStartPadding:e*n+r}).attr("width",function(t){return t.milestone?c:t.vert?.08*c:v(t.renderEndTime||t.endTime)-v(t.startTime)}).attr("height",function(t){return t.vert?m.length*(a.barHeight+a.barGap)+2*a.barHeight:c}).attr("transform-origin",function(t,e){return e=t.order,(v(t.startTime)+o+.5*(v(t.endTime)-v(t.startTime))).toString()+"px "+(e*n+r+.5*c).toString()+"px"}).attr("class",function(t){let e="";t.classes.length>0&&(e=t.classes.join(" "));let n=0;for(const[s,r]of y.entries())t.type===r&&(n=s%a.numberSectionStyles);let i="";return t.active?t.crit?i+=" activeCrit":i=" active":t.done?i=t.crit?" doneCrit":" done":t.crit&&(i+=" crit"),0===i.length&&(i=" task"),t.milestone&&(i=" milestone "+i),t.vert&&(i=" vert "+i),i+=n,i+=" "+e,"task"+i}),f.append("text").attr("id",function(t){return t.id+"-text"}).text(function(t){return t.task}).attr("font-size",a.fontSize).attr("x",function(t){let e=v(t.startTime),n=v(t.renderEndTime||t.endTime);if(t.milestone&&(e+=.5*(v(t.endTime)-v(t.startTime))-.5*c,n=e+c),t.vert)return v(t.startTime)+o;const i=this.getBBox().width;return i>n-e?n+i+1.5*a.leftPadding>d?e+o-5:n+o+5:(n-e)/2+e+o}).attr("y",function(t,e){return t.vert?a.gridLineStartPadding+m.length*(a.barHeight+a.barGap)+60:t.order*n+a.barHeight/2+(a.fontSize/2-2)+r}).attr("text-height",c).attr("class",function(t){const e=v(t.startTime);let n=v(t.endTime);t.milestone&&(n=e+c);const i=this.getBBox().width;let s="";t.classes.length>0&&(s=t.classes.join(" "));let r=0;for(const[c,l]of y.entries())t.type===l&&(r=c%a.numberSectionStyles);let o="";return t.active&&(o=t.crit?"activeCritText"+r:"activeText"+r),t.done?o=t.crit?o+" doneCritText"+r:o+" doneText"+r:t.crit&&(o=o+" critText"+r),t.milestone&&(o+=" milestoneText"),t.vert&&(o+=" vertText"),i>n-e?n+i+1.5*a.leftPadding>d?s+" taskTextOutsideLeft taskTextOutside"+r+" "+o:s+" taskTextOutsideRight taskTextOutside"+r+" "+o+" width-"+i:s+" taskText taskText"+r+" "+o+" width-"+i});if("sandbox"===(0,s.D7)().securityLevel){let t;t=(0,h.Ltv)("#i"+e);const n=t.nodes()[0].contentDocument;f.filter(function(t){return k.has(t.id)}).each(function(t){var e=n.querySelector("#"+t.id),i=n.querySelector("#"+t.id+"-text");const s=e.parentNode;var r=n.createElement("a");r.setAttribute("xlink:href",k.get(t.id)),r.setAttribute("target","_top"),s.appendChild(r),r.appendChild(e),r.appendChild(i)})}}function w(t,e,n,s,c,l,d,u){if(0===d.length&&0===u.length)return;let h,f;for(const{startTime:i,endTime:r}of l)(void 0===h||if)&&(f=r);if(!h||!f)return;if(o(f).diff(o(h),"year")>5)return void r.Rm.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");const m=i.db.getDateFormat(),y=[];let k=null,p=o(h);for(;p.valueOf()<=f;)i.db.isInvalidDate(p,m,d,u)?k?k.end=p:k={start:p,end:p}:k&&(y.push(k),k=null),p=p.add(1,"d");g.append("g").selectAll("rect").data(y).enter().append("rect").attr("id",t=>"exclude-"+t.start.format("YYYY-MM-DD")).attr("x",t=>v(t.start.startOf("day"))+n).attr("y",a.gridLineStartPadding).attr("width",t=>v(t.end.endOf("day"))-v(t.start.startOf("day"))).attr("height",c-e-a.gridLineStartPadding).attr("transform-origin",function(e,i){return(v(e.start)+n+.5*(v(e.end)-v(e.start))).toString()+"px "+(i*t+.5*c).toString()+"px"}).attr("class","exclude-range")}function $(t,e,n,i){if(n<=0||t>e)return 1/0;const s=e-t,r=o.duration({[i??"day"]:n}).asMilliseconds();return r<=0?1/0:Math.ceil(s/r)}function _(t,e,n,s){const o=i.db.getDateFormat(),c=i.db.getAxisFormat();let l;l=c||("D"===o?"%d":a.axisFormat??"%Y-%m-%d");let d=(0,h.l78)(v).tickSize(-s+e+a.gridLineStartPadding).tickFormat((0,h.DCK)(l));const u=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(i.db.getTickInterval()||a.tickInterval);if(null!==u){const t=parseInt(u[1],10);if(isNaN(t)||t<=0)r.Rm.warn(`Invalid tick interval value: "${u[1]}". Skipping custom tick interval.`);else{const e=u[2],n=i.db.getWeekday()||a.weekday,s=v.domain(),o=$(s[0],s[1],t,e);if(o>Ft)r.Rm.warn(`The tick interval "${t}${e}" would generate ${o} ticks, which exceeds the maximum allowed (10000). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(e){case"millisecond":d.ticks(h.t6C.every(t));break;case"second":d.ticks(h.ucG.every(t));break;case"minute":d.ticks(h.wXd.every(t));break;case"hour":d.ticks(h.Agd.every(t));break;case"day":d.ticks(h.UAC.every(t));break;case"week":d.ticks(It[n].every(t));break;case"month":d.ticks(h.Ui6.every(t))}}}if(g.append("g").attr("class","grid").attr("transform","translate("+t+", "+(s-50)+")").call(d).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),i.db.topAxisEnabled()||a.topAxis){let n=(0,h.tlR)(v).tickSize(-s+e+a.gridLineStartPadding).tickFormat((0,h.DCK)(l));if(null!==u){const t=parseInt(u[1],10);if(isNaN(t)||t<=0)r.Rm.warn(`Invalid tick interval value: "${u[1]}". Skipping custom tick interval.`);else{const e=u[2],s=i.db.getWeekday()||a.weekday,r=v.domain();if($(r[0],r[1],t,e)<=Ft)switch(e){case"millisecond":n.ticks(h.t6C.every(t));break;case"second":n.ticks(h.ucG.every(t));break;case"minute":n.ticks(h.wXd.every(t));break;case"hour":n.ticks(h.Agd.every(t));break;case"day":n.ticks(h.UAC.every(t));break;case"week":n.ticks(It[s].every(t));break;case"month":n.ticks(h.Ui6.every(t))}}}g.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function D(t,e){let n=0;const i=Object.keys(k).map(t=>[t,k[t]]);g.append("g").selectAll("text").data(i).enter().append(function(t){const e=t[0].split(s.Y2.lineBreakRegex),n=-(e.length-1)/2,i=u.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("dy",n+"em");for(const[s,r]of e.entries()){const t=u.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttribute("alignment-baseline","central"),t.setAttribute("x","10"),s>0&&t.setAttribute("dy","1em"),t.textContent=r,i.appendChild(t)}return i}).attr("x",10).attr("y",function(s,r){if(!(r>0))return s[1]*t/2+e;for(let a=0;a`\n .mermaid-main-font {\n font-family: ${t.fontFamily};\n }\n\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n }\n\n .grid .tick text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n }\n\n\n /* Special case clickable */\n\n .task.clickable {\n cursor: pointer;\n }\n\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .vert {\n stroke: ${t.vertLineColor};\n }\n\n .vertText {\n font-size: 15px;\n text-anchor: middle;\n fill: ${t.vertLineColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.titleColor||t.textColor};\n font-family: ${t.fontFamily};\n }\n`,"getStyles")}},3522:function(t){t.exports=function(){"use strict";var t,e,n=1e3,i=6e4,s=36e5,r=864e5,a=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,o=31536e6,c=2628e6,l=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:o,months:c,days:r,hours:s,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},u=function(t){return t instanceof g},h=function(t,e,n){return new g(t,n,e.$l)},f=function(t){return e.p(t)+"s"},m=function(t){return t<0},y=function(t){return m(t)?Math.ceil(t):Math.floor(t)},k=function(t){return Math.abs(t)},p=function(t,e){return t?m(t)?{negative:!0,format:""+k(t)+e}:{negative:!1,format:""+t+e}:{negative:!1,format:""}},g=function(){function m(t,e,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),e)return h(t*d[f(e)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach(function(e){i.$d[f(e)]=t[e]}),this.calMilliseconds(),this;if("string"==typeof t){var s=t.match(l);if(s){var r=s.slice(2).map(function(t){return null!=t?Number(t):0});return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var k=m.prototype;return k.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce(function(e,n){return e+(t.$d[n]||0)*d[n]},0)},k.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=y(t/o),t%=o,this.$d.months=y(t/c),t%=c,this.$d.days=y(t/r),t%=r,this.$d.hours=y(t/s),t%=s,this.$d.minutes=y(t/i),t%=i,this.$d.seconds=y(t/n),t%=n,this.$d.milliseconds=t},k.toISOString=function(){var t=p(this.$d.years,"Y"),e=p(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=p(n,"D"),s=p(this.$d.hours,"H"),r=p(this.$d.minutes,"M"),a=this.$d.seconds||0;this.$d.milliseconds&&(a+=this.$d.milliseconds/1e3,a=Math.round(1e3*a)/1e3);var o=p(a,"S"),c=t.negative||e.negative||i.negative||s.negative||r.negative||o.negative,l=s.format||r.format||o.format?"T":"",d=(c?"-":"")+"P"+t.format+e.format+i.format+l+s.format+r.format+o.format;return"P"===d||"-P"===d?"P0D":d},k.toJSON=function(){return this.toISOString()},k.format=function(t){var n=t||"YYYY-MM-DDTHH:mm:ss",i={Y:this.$d.years,YY:e.s(this.$d.years,2,"0"),YYYY:e.s(this.$d.years,4,"0"),M:this.$d.months,MM:e.s(this.$d.months,2,"0"),D:this.$d.days,DD:e.s(this.$d.days,2,"0"),H:this.$d.hours,HH:e.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:e.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:e.s(this.$d.seconds,2,"0"),SSS:e.s(this.$d.milliseconds,3,"0")};return n.replace(a,function(t,e){return e||String(i[t])})},k.as=function(t){return this.$ms/d[f(t)]},k.get=function(t){var e=this.$ms,n=f(t);return"milliseconds"===n?e%=1e3:e="weeks"===n?y(e/d[n]):this.$d[n],e||0},k.add=function(t,e,n){var i;return i=e?t*d[f(e)]:u(t)?t.$ms:h(t,this).$ms,h(this.$ms+i*(n?-1:1),this)},k.subtract=function(t,e){return this.add(t,e,!0)},k.locale=function(t){var e=this.clone();return e.$l=t,e},k.clone=function(){return h(this.$ms,this)},k.humanize=function(e){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!e)},k.valueOf=function(){return this.asMilliseconds()},k.milliseconds=function(){return this.get("milliseconds")},k.asMilliseconds=function(){return this.as("milliseconds")},k.seconds=function(){return this.get("seconds")},k.asSeconds=function(){return this.as("seconds")},k.minutes=function(){return this.get("minutes")},k.asMinutes=function(){return this.as("minutes")},k.hours=function(){return this.get("hours")},k.asHours=function(){return this.as("hours")},k.days=function(){return this.get("days")},k.asDays=function(){return this.as("days")},k.weeks=function(){return this.get("weeks")},k.asWeeks=function(){return this.as("weeks")},k.months=function(){return this.get("months")},k.asMonths=function(){return this.as("months")},k.years=function(){return this.get("years")},k.asYears=function(){return this.as("years")},m}(),v=function(t,e,n){return t.add(e.years()*n,"y").add(e.months()*n,"M").add(e.days()*n,"d").add(e.hours()*n,"h").add(e.minutes()*n,"m").add(e.seconds()*n,"s").add(e.milliseconds()*n,"ms")};return function(n,i,s){t=s,e=s().$utils(),s.duration=function(t,e){var n=s.locale();return h(t,{$l:n},e)},s.isDuration=u;var r=i.prototype.add,a=i.prototype.subtract;i.prototype.add=function(t,e){return u(t)?v(this,t,1):r.bind(this)(t,e)},i.prototype.subtract=function(t,e){return u(t)?v(this,t,-1):a.bind(this)(t,e)}}}()},7375:function(t){t.exports=function(){"use strict";return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return i.bind(this)(t);var s=this.$utils(),r=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(t){switch(t){case"Q":return Math.ceil((e.$M+1)/3);case"Do":return n.ordinal(e.$D);case"gggg":return e.weekYear();case"GGGG":return e.isoWeekYear();case"wo":return n.ordinal(e.week(),"W");case"w":case"ww":return s.s(e.week(),"w"===t?1:2,"0");case"W":case"WW":return s.s(e.isoWeek(),"W"===t?1:2,"0");case"k":case"kk":return s.s(String(0===e.$H?24:e.$H),"k"===t?1:2,"0");case"X":return Math.floor(e.$d.getTime()/1e3);case"x":return e.$d.getTime();case"z":return"["+e.offsetName()+"]";case"zzz":return"["+e.offsetName("long")+"]";default:return t}});return i.bind(this)(r)}}}()},8313:function(t){t.exports=function(){"use strict";var t="day";return function(e,n,i){var s=function(e){return e.add(4-e.isoWeekday(),t)},r=n.prototype;r.isoWeekYear=function(){return s(this).year()},r.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,r,a,o=s(this),c=(n=this.isoWeekYear(),a=4-(r=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),r.isoWeekday()>4&&(a+=7),r.add(a,t));return o.diff(c,"week")+1},r.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var a=r.startOf;r.startOf=function(t,e){var n=this.$utils(),i=!!n.u(e)||e;return"isoweek"===n.p(t)?i?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(t,e)}}}()}}]); \ No newline at end of file diff --git a/user/assets/js/2821.f492e4f4.js b/user/assets/js/2821.f492e4f4.js new file mode 100644 index 0000000..e5ca3ec --- /dev/null +++ b/user/assets/js/2821.f492e4f4.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2821],{2821:(e,t,a)=>{a.d(t,{diagram:()=>C});var l=a(3590),s=a(1152),r=a(2387),n=a(5871),i=a(3226),o=a(7633),c=a(797),d=a(8731),p=a(451),h=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getAccDescription=o.m7,this.setAccDescription=o.EI}static{(0,c.K2)(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){const e=o.UI,t=(0,o.zj)();return(0,i.$t)({...e.treemap,...t.treemap??{}})}addNode(e,t){this.nodes.push(e),this.levels.set(e,t),0===t&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,t){const a=this.classes.get(e)??{id:e,styles:[],textStyles:[]},l=t.replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");l&&l.forEach(e=>{(0,r.KX)(e)&&(a?.textStyles?a.textStyles.push(e):a.textStyles=[e]),a?.styles?a.styles.push(e):a.styles=[e]}),this.classes.set(e,a)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){(0,o.IU)(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function m(e){if(!e.length)return[];const t=[],a=[];return e.forEach(e=>{const l={name:e.name,children:"Leaf"===e.type?void 0:[]};for(l.classSelector=e?.classSelector,e?.cssCompiledStyles&&(l.cssCompiledStyles=[e.cssCompiledStyles]),"Leaf"===e.type&&void 0!==e.value&&(l.value=e.value);a.length>0&&a[a.length-1].level>=e.level;)a.pop();if(0===a.length)t.push(l);else{const e=a[a.length-1].node;e.children?e.children.push(l):e.children=[l]}"Leaf"!==e.type&&a.push({node:l,level:e.level})}),t}(0,c.K2)(m,"buildHierarchy");var y=(0,c.K2)((e,t)=>{(0,n.S)(e,t);const a=[];for(const r of e.TreemapRows??[])"ClassDefStatement"===r.$type&&t.addClass(r.className??"",r.styleText??"");for(const r of e.TreemapRows??[]){const e=r.item;if(!e)continue;const l=r.indent?parseInt(r.indent):0,s=f(e),n=e.classSelector?t.getStylesForClass(e.classSelector):[],i=n.length>0?n.join(";"):void 0,o={level:l,name:s,type:e.$type,value:e.value,classSelector:e.classSelector,cssCompiledStyles:i};a.push(o)}const l=m(a),s=(0,c.K2)((e,a)=>{for(const l of e)t.addNode(l,a),l.children&&l.children.length>0&&s(l.children,a+1)},"addNodesRecursively");s(l,0)},"populate"),f=(0,c.K2)(e=>e.name?String(e.name):"","getItemName"),u={parser:{yy:void 0},parse:(0,c.K2)(async e=>{try{const t=d.qg,a=await t("treemap",e);c.Rm.debug("Treemap AST:",a);const l=u.parser?.yy;if(!(l instanceof h))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");y(a,l)}catch(t){throw c.Rm.error("Error parsing treemap:",t),t}},"parse")},S=10,g={draw:(0,c.K2)((e,t,a,n)=>{const i=n.db,d=i.getConfig(),h=d.padding??10,m=i.getDiagramTitle(),y=i.getRoot(),{themeVariables:f}=(0,o.zj)();if(!y)return;const u=m?30:0,g=(0,l.D)(t),x=d.nodeWidth?d.nodeWidth*S:960,b=d.nodeHeight?d.nodeHeight*S:500,C=x,v=b+u;let $;g.attr("viewBox",`0 0 ${C} ${v}`),(0,o.a$)(g,v,C,d.useMaxWidth);try{const e=d.valueFormat||",";if("$0,0"===e)$=(0,c.K2)(e=>"$"+(0,p.GPZ)(",")(e),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){const t=/\.\d+/.exec(e),a=t?t[0]:"";$=(0,c.K2)(e=>"$"+(0,p.GPZ)(","+a)(e),"valueFormat")}else if(e.startsWith("$")){const t=e.substring(1);$=(0,c.K2)(e=>"$"+(0,p.GPZ)(t||"")(e),"valueFormat")}else $=(0,p.GPZ)(e)}catch(G){c.Rm.error("Error creating format function:",G),$=(0,p.GPZ)(",")}const w=(0,p.UMr)().range(["transparent",f.cScale0,f.cScale1,f.cScale2,f.cScale3,f.cScale4,f.cScale5,f.cScale6,f.cScale7,f.cScale8,f.cScale9,f.cScale10,f.cScale11]),L=(0,p.UMr)().range(["transparent",f.cScalePeer0,f.cScalePeer1,f.cScalePeer2,f.cScalePeer3,f.cScalePeer4,f.cScalePeer5,f.cScalePeer6,f.cScalePeer7,f.cScalePeer8,f.cScalePeer9,f.cScalePeer10,f.cScalePeer11]),k=(0,p.UMr)().range([f.cScaleLabel0,f.cScaleLabel1,f.cScaleLabel2,f.cScaleLabel3,f.cScaleLabel4,f.cScaleLabel5,f.cScaleLabel6,f.cScaleLabel7,f.cScaleLabel8,f.cScaleLabel9,f.cScaleLabel10,f.cScaleLabel11]);m&&g.append("text").attr("x",C/2).attr("y",u/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(m);const T=g.append("g").attr("transform",`translate(0, ${u})`).attr("class","treemapContainer"),M=(0,p.Sk5)(y).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),z=(0,p.hkb)().size([x,b]).paddingTop(e=>e.children&&e.children.length>0?35:0).paddingInner(h).paddingLeft(e=>e.children&&e.children.length>0?S:0).paddingRight(e=>e.children&&e.children.length>0?S:0).paddingBottom(e=>e.children&&e.children.length>0?S:0).round(!0)(M),P=z.descendants().filter(e=>e.children&&e.children.length>0),F=T.selectAll(".treemapSection").data(P).enter().append("g").attr("class","treemapSection").attr("transform",e=>`translate(${e.x0},${e.y0})`);F.append("rect").attr("width",e=>e.x1-e.x0).attr("height",25).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",e=>0===e.depth?"display: none;":""),F.append("clipPath").attr("id",(e,a)=>`clip-section-${t}-${a}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-12)).attr("height",25),F.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class",(e,t)=>`treemapSection section${t}`).attr("fill",e=>w(e.data.name)).attr("fill-opacity",.6).attr("stroke",e=>L(e.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",e=>{if(0===e.depth)return"display: none;";const t=(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+";"+t.borderStyles.join(";")}),F.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",12.5).attr("dominant-baseline","middle").text(e=>0===e.depth?"":e.data.name).attr("font-weight","bold").attr("style",e=>{if(0===e.depth)return"display: none;";return"dominant-baseline: middle; font-size: 12px; fill:"+k(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")}).each(function(e){if(0===e.depth)return;const t=(0,p.Ltv)(this),a=e.data.name;t.text(a);const l=e.x1-e.x0;let s;if(!1!==d.showValues&&e.value){s=l-10-30-10-6}else{s=l-6-6}const r=Math.max(15,s),n=t.node();if(n.getComputedTextLength()>r){const e="...";let l=a;for(;l.length>0;){if(l=a.substring(0,l.length-1),0===l.length){t.text(e),n.getComputedTextLength()>r&&t.text("");break}if(t.text(l+e),n.getComputedTextLength()<=r)break}}}),!1!==d.showValues&&F.append("text").attr("class","treemapSectionValue").attr("x",e=>e.x1-e.x0-10).attr("y",12.5).attr("text-anchor","end").attr("dominant-baseline","middle").text(e=>e.value?$(e.value):"").attr("font-style","italic").attr("style",e=>{if(0===e.depth)return"display: none;";return"text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+k(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")});const N=z.leaves(),D=T.selectAll(".treemapLeafGroup").data(N).enter().append("g").attr("class",(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:""}x`).attr("transform",e=>`translate(${e.x0},${e.y0})`);D.append("rect").attr("width",e=>e.x1-e.x0).attr("height",e=>e.y1-e.y0).attr("class","treemapLeaf").attr("fill",e=>e.parent?w(e.parent.data.name):w(e.data.name)).attr("style",e=>(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",e=>e.parent?w(e.parent.data.name):w(e.data.name)).attr("stroke-width",3),D.append("clipPath").attr("id",(e,a)=>`clip-${t}-${a}`).append("rect").attr("width",e=>Math.max(0,e.x1-e.x0-4)).attr("height",e=>Math.max(0,e.y1-e.y0-4));if(D.append("text").attr("class","treemapLabel").attr("x",e=>(e.x1-e.x0)/2).attr("y",e=>(e.y1-e.y0)/2).attr("style",e=>"text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+k(e.data.name)+";"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(e,a)=>`url(#clip-${t}-${a})`).text(e=>e.data.name).each(function(e){const t=(0,p.Ltv)(this),a=e.x1-e.x0,l=e.y1-e.y0,s=t.node(),r=a-8,n=l-8;if(r<10||n<10)return void t.style("display","none");let i=parseInt(t.style("font-size"),10);for(;s.getComputedTextLength()>r&&i>8;)i--,t.style("font-size",`${i}px`);let o=Math.max(6,Math.min(28,Math.round(.6*i))),c=i+2+o;for(;c>n&&i>8&&(i--,o=Math.max(6,Math.min(28,Math.round(.6*i))),!(o<6&&8===i));)t.style("font-size",`${i}px`),c=i+2+o;t.style("font-size",`${i}px`),(s.getComputedTextLength()>r||i<8||n(e.x1-e.x0)/2).attr("y",function(e){return(e.y1-e.y0)/2}).attr("style",e=>"text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+k(e.data.name)+";"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")).attr("clip-path",(e,a)=>`url(#clip-${t}-${a})`).text(e=>e.value?$(e.value):"").each(function(e){const t=(0,p.Ltv)(this),a=this.parentNode;if(!a)return void t.style("display","none");const l=(0,p.Ltv)(a).select(".treemapLabel");if(l.empty()||"none"===l.style("display"))return void t.style("display","none");const s=parseFloat(l.style("font-size")),r=Math.max(6,Math.min(28,Math.round(.6*s)));t.style("font-size",`${r}px`);const n=(e.y1-e.y0)/2+s/2+2;t.attr("y",n);const i=e.x1-e.x0,o=e.y1-e.y0-4,c=i-8;t.node().getComputedTextLength()>c||n+r>o||r<6?t.style("display","none"):t.style("display",null)})}const K=d.diagramPadding??8;(0,s.P)(g,K,"flowchart",d?.useMaxWidth||!1)},"draw"),getClasses:(0,c.K2)(function(e,t){return t.db.getClasses()},"getClasses")},x={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},b=(0,c.K2)(({treemap:e}={})=>{const t=(0,i.$t)(x,e);return`\n .treemapNode.section {\n stroke: ${t.sectionStrokeColor};\n stroke-width: ${t.sectionStrokeWidth};\n fill: ${t.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${t.leafStrokeColor};\n stroke-width: ${t.leafStrokeWidth};\n fill: ${t.leafFillColor};\n }\n .treemapLabel {\n fill: ${t.labelColor};\n font-size: ${t.labelFontSize};\n }\n .treemapValue {\n fill: ${t.valueColor};\n font-size: ${t.valueFontSize};\n }\n .treemapTitle {\n fill: ${t.titleColor};\n font-size: ${t.titleFontSize};\n }\n `},"getStyles"),C={parser:u,get db(){return new h},renderer:g,styles:b}},5871:(e,t,a)=>{function l(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}a.d(t,{S:()=>l}),(0,a(797).K2)(l,"populateCommonDb")}}]); \ No newline at end of file diff --git a/user/assets/js/291.26b9c292.js b/user/assets/js/291.26b9c292.js new file mode 100644 index 0000000..2ec2fd4 --- /dev/null +++ b/user/assets/js/291.26b9c292.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[291],{291:(t,e,n)=>{n.d(e,{diagram:()=>Y});var i=n(7633),s=n(797),r=n(451),a=n(3219),o=n(8041),c=n(5263),l=function(){var t=(0,s.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,11,12,14,16,17,20,21],n=[1,9],i=[1,10],r=[1,11],a=[1,12],o=[1,13],c=[1,16],l=[1,17],h={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:(0,s.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.getCommonDb().setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.getCommonDb().setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 15:i.addTask(r[o],0,""),this.$=r[o];break;case 16:i.addEvent(r[o].substr(2)),this.$=r[o]}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:r,16:a,17:o,18:14,19:15,20:c,21:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:n,12:i,14:r,16:a,17:o,18:14,19:15,20:c,21:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:(0,s.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,c="",l=0,h=0,d=0,u=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var f=p.yylloc;a.push(f);var m=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){n.length=n.length-2*t,r.length=r.length-t,a.length=a.length-t},"popStack"),(0,s.K2)(x,"lex");for(var b,k,_,w,v,K,S,$,E,T={};;){if(_=n[n.length-1],this.defaultActions[_]?w=this.defaultActions[_]:(null==b&&(b=x()),w=o[_]&&o[_][b]),void 0===w||!w.length||!w[0]){var I="";for(K in E=[],o[_])this.terminals_[K]&&K>2&&E.push("'"+this.terminals_[K]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[b]||b,line:p.yylineno,loc:f,expected:E})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+b);switch(w[0]){case 1:n.push(b),r.push(p.yytext),a.push(p.yylloc),n.push(w[1]),b=null,k?(b=k,k=null):(h=p.yyleng,c=p.yytext,l=p.yylineno,f=p.yylloc,d>0&&d--);break;case 2:if(S=this.productions_[w[1]][1],T.$=r[r.length-S],T._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(T._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(v=this.performAction.apply(T,[c,h,l,y.yy,w[1],r,a].concat(u))))return v;S&&(n=n.slice(0,-1*S*2),r=r.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[w[1]][0]),r.push(T.$),a.push(T._$),$=o[n[n.length-2]][n[n.length-1]],n.push($);break;case 3:return!0}}return!0},"parse")},d=function(){return{EOF:1,parseError:(0,s.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,s.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,s.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)(function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}}}();function u(){this.yy={}}return h.lexer=d,(0,s.K2)(u,"Parser"),u.prototype=h,h.Parser=u,new u}();l.parser=l;var h=l,d={};(0,s.VA)(d,{addEvent:()=>v,addSection:()=>b,addTask:()=>w,addTaskOrg:()=>K,clear:()=>x,default:()=>$,getCommonDb:()=>m,getSections:()=>k,getTasks:()=>_});var u="",p=0,y=[],g=[],f=[],m=(0,s.K2)(()=>i.Wt,"getCommonDb"),x=(0,s.K2)(function(){y.length=0,g.length=0,u="",f.length=0,(0,i.IU)()},"clear"),b=(0,s.K2)(function(t){u=t,y.push(t)},"addSection"),k=(0,s.K2)(function(){return y},"getSections"),_=(0,s.K2)(function(){let t=S();let e=0;for(;!t&&e<100;)t=S(),e++;return g.push(...f),g},"getTasks"),w=(0,s.K2)(function(t,e,n){const i={id:p++,section:u,type:u,task:t,score:e||0,events:n?[n]:[]};f.push(i)},"addTask"),v=(0,s.K2)(function(t){f.find(t=>t.id===p-1).events.push(t)},"addEvent"),K=(0,s.K2)(function(t){const e={section:u,type:u,description:t,task:t,classes:[]};g.push(e)},"addTaskOrg"),S=(0,s.K2)(function(){const t=(0,s.K2)(function(t){return f[t].processed},"compileTask");let e=!0;for(const[n,i]of f.entries())t(n),e=e&&i.processed;return e},"compileTasks"),$={clear:x,getCommonDb:m,addSection:b,getSections:k,getTasks:_,addTask:w,addTaskOrg:K,addEvent:v},E=(0,s.K2)(function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},"drawRect"),T=(0,s.K2)(function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),a=t.append("g");function o(t){const i=(0,r.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function c(t){const i=(0,r.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function l(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),a.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,s.K2)(o,"smile"),(0,s.K2)(c,"sad"),(0,s.K2)(l,"ambivalent"),e.score>3?o(a):e.score<3?c(a):l(a),i},"drawFace"),I=(0,s.K2)(function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},"drawCircle"),R=(0,s.K2)(function(t,e){const n=e.text.replace(//gi," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const s=i.append("tspan");return s.attr("x",e.x+2*e.textMargin),s.text(n),i},"drawText"),A=(0,s.K2)(function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,s.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,R(t,e)},"drawLabel"),L=(0,s.K2)(function(t,e,n){const i=t.append("g"),s=H();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=n.width,s.height=n.height,s.class="journey-section section-type-"+e.num,s.rx=3,s.ry=3,E(i,s),O(n)(e.text,i,s.x,s.y,s.width,s.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),M=-1,C=(0,s.K2)(function(t,e,n){const i=e.x+n.width/2,s=t.append("g");M++;s.append("line").attr("id","task"+M).attr("x1",i).attr("y1",e.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),T(s,{cx:i,cy:300+30*(5-e.score),score:e.score});const r=H();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width,r.height=n.height,r.class="task task-type-"+e.num,r.rx=3,r.ry=3,E(s,r),O(n)(e.task,s,r.x,r.y,r.width,r.height,{class:"task"},n,e.colour)},"drawTask"),N=(0,s.K2)(function(t,e){E(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),P=(0,s.K2)(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),H=(0,s.K2)(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),O=function(){function t(t,e,n,s,r,a,o,c){i(e.append("text").attr("x",n+r/2).attr("y",s+a/2+5).style("font-color",c).style("text-anchor","middle").text(t),o)}function e(t,e,n,s,r,a,o,c,l){const{taskFontSize:h,taskFontFamily:d}=c,u=t.split(//gi);for(let p=0;p)/).reverse(),s=[],a=n.attr("y"),o=parseFloat(n.attr("dy")),c=n.text(null).append("tspan").attr("x",0).attr("y",a).attr("dy",o+"em");for(let r=0;re||"
    "===t)&&(s.pop(),c.text(s.join(" ").trim()),s="
    "===t?[""]:[t],c=n.append("tspan").attr("x",0).attr("y",a).attr("dy","1.1em").text(t))})}(0,s.K2)(D,"wrap");var z=(0,s.K2)(function(t,e,n,i){const s=n%12-1,r=t.append("g");e.section=s,r.attr("class",(e.class?e.class+" ":"")+"timeline-node section-"+s);const a=r.append("g"),o=r.append("g"),c=o.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(D,e.width).node().getBBox(),l=i.fontSize?.replace?i.fontSize.replace("px",""):i.fontSize;return e.height=c.height+1.1*l*.5+e.padding,e.height=Math.max(e.height,e.maxHeight),e.width=e.width+2*e.padding,o.attr("transform","translate("+e.width/2+", "+e.padding/2+")"),B(a,e,s,i),e},"drawNode"),W=(0,s.K2)(function(t,e,n){const i=t.append("g"),s=i.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(D,e.width).node().getBBox(),r=n.fontSize?.replace?n.fontSize.replace("px",""):n.fontSize;return i.remove(),s.height+1.1*r*.5+e.padding},"getVirtualNodeHeight"),B=(0,s.K2)(function(t,e,n){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)},"defaultBkg"),F={drawRect:E,drawCircle:I,drawSection:L,drawText:R,drawLabel:A,drawTask:C,drawBackgroundRect:N,getTextObj:P,getNoteRect:H,initGraphics:j,drawNode:z,getVirtualNodeHeight:W},V=(0,s.K2)(function(t,e,n,a){const o=(0,i.D7)(),c=o.timeline?.leftMargin??50;s.Rm.debug("timeline",a.db);const l=o.securityLevel;let h;"sandbox"===l&&(h=(0,r.Ltv)("#i"+e));const d=("sandbox"===l?(0,r.Ltv)(h.nodes()[0].contentDocument.body):(0,r.Ltv)("body")).select("#"+e);d.append("g");const u=a.db.getTasks(),p=a.db.getCommonDb().getDiagramTitle();s.Rm.debug("task",u),F.initGraphics(d);const y=a.db.getSections();s.Rm.debug("sections",y);let g=0,f=0,m=0,x=0,b=50+c,k=50;x=50;let _=0,w=!0;y.forEach(function(t){const e={number:_,descr:t,section:_,width:150,padding:20,maxHeight:g},n=F.getVirtualNodeHeight(d,e,o);s.Rm.debug("sectionHeight before draw",n),g=Math.max(g,n+20)});let v=0,K=0;s.Rm.debug("tasks.length",u.length);for(const[i,r]of u.entries()){const t={number:i,descr:r,section:r.section,width:150,padding:20,maxHeight:f},e=F.getVirtualNodeHeight(d,t,o);s.Rm.debug("taskHeight before draw",e),f=Math.max(f,e+20),v=Math.max(v,r.events.length);let n=0;for(const i of r.events){const t={descr:i,section:r.section,number:r.section,width:150,padding:20,maxHeight:50};n+=F.getVirtualNodeHeight(d,t,o)}r.events.length>0&&(n+=10*(r.events.length-1)),K=Math.max(K,n)}s.Rm.debug("maxSectionHeight before draw",g),s.Rm.debug("maxTaskHeight before draw",f),y&&y.length>0?y.forEach(t=>{const e=u.filter(e=>e.section===t),n={number:_,descr:t,section:_,width:200*Math.max(e.length,1)-50,padding:20,maxHeight:g};s.Rm.debug("sectionNode",n);const i=d.append("g"),r=F.drawNode(i,n,_,o);s.Rm.debug("sectionNode output",r),i.attr("transform",`translate(${b}, 50)`),k+=g+50,e.length>0&&G(d,e,_,b,k,f,o,v,K,g,!1),b+=200*Math.max(e.length,1),k=50,_++}):(w=!1,G(d,u,_,b,k,f,o,v,K,g,!0));const S=d.node().getBBox();s.Rm.debug("bounds",S),p&&d.append("text").text(p).attr("x",S.width/2-c).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),m=w?g+f+150:f+100;d.append("g").attr("class","lineWrapper").append("line").attr("x1",c).attr("y1",m).attr("x2",S.width+3*c).attr("y2",m).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),(0,i.ot)(void 0,d,o.timeline?.padding??50,o.timeline?.useMaxWidth??!1)},"draw"),G=(0,s.K2)(function(t,e,n,i,r,a,o,c,l,h,d){for(const u of e){const e={descr:u.task,section:n,number:n,width:150,padding:20,maxHeight:a};s.Rm.debug("taskNode",e);const c=t.append("g").attr("class","taskWrapper"),h=F.drawNode(c,e,n,o).height;if(s.Rm.debug("taskHeight after draw",h),c.attr("transform",`translate(${i}, ${r})`),a=Math.max(a,h),u.events){const e=t.append("g").attr("class","lineWrapper");let s=a;r+=100,s+=U(t,u.events,n,i,r,o),r-=100,e.append("line").attr("x1",i+95).attr("y1",r+a).attr("x2",i+95).attr("y2",r+a+100+l+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}i+=200,d&&!o.timeline?.disableMulticolor&&n++}r-=10},"drawTasks"),U=(0,s.K2)(function(t,e,n,i,r,a){let o=0;const c=r;r+=100;for(const l of e){const e={descr:l,section:n,number:n,width:150,padding:20,maxHeight:50};s.Rm.debug("eventNode",e);const c=t.append("g").attr("class","eventWrapper"),h=F.drawNode(c,e,n,a).height;o+=h,c.attr("transform",`translate(${i}, ${r})`),r=r+10+h}return r=c,o},"drawEvents"),q={setConf:(0,s.K2)(()=>{},"setConf"),draw:V},J=(0,s.K2)(t=>{let e="";for(let n=0;n`\n .edge {\n stroke-width: 3;\n }\n ${J(t)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/user/assets/js/3490.9d6130d4.js b/user/assets/js/3490.9d6130d4.js new file mode 100644 index 0000000..d2388a3 --- /dev/null +++ b/user/assets/js/3490.9d6130d4.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[3490],{3490:(s,e,c)=>{c.d(e,{createInfoServices:()=>a.v});var a=c(1885);c(7960)}}]); \ No newline at end of file diff --git a/user/assets/js/3815.506c8242.js b/user/assets/js/3815.506c8242.js new file mode 100644 index 0000000..f0961d0 --- /dev/null +++ b/user/assets/js/3815.506c8242.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[3815],{3815:(s,r,e)=>{e.d(r,{diagram:()=>t});var a=e(1746),l=(e(2501),e(9625),e(1152),e(45),e(5164),e(8698),e(5894),e(3245),e(2387),e(92),e(3226),e(7633),e(797)),t={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,l.K2)(s=>{s.class||(s.class={}),s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/user/assets/js/3824a626.01fcb470.js b/user/assets/js/3824a626.01fcb470.js new file mode 100644 index 0000000..4367729 --- /dev/null +++ b/user/assets/js/3824a626.01fcb470.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[1945],{2283:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"automation-examples","title":"Automation Examples","description":"Note: This guide is under construction.","source":"@site/docs/automation-examples.md","sourceDirName":".","slug":"/automation-examples","permalink":"/hass.tibber_prices/user/automation-examples","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/automation-examples.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Chart Examples","permalink":"/hass.tibber_prices/user/chart-examples"},"next":{"title":"FAQ - Frequently Asked Questions","permalink":"/hass.tibber_prices/user/faq"}}');var s=n(4848),a=n(8453);const r={},o="Automation Examples",l={},c=[{value:"Table of Contents",id:"table-of-contents",level:2},{value:"Price-Based Automations",id:"price-based-automations",level:2},{value:"Volatility-Aware Automations",id:"volatility-aware-automations",level:2},{value:"Use Case: Only Act on High-Volatility Days",id:"use-case-only-act-on-high-volatility-days",level:3},{value:"Use Case: Absolute Price Threshold",id:"use-case-absolute-price-threshold",level:3},{value:"Use Case: Combined Volatility and Price Check",id:"use-case-combined-volatility-and-price-check",level:3},{value:"Use Case: Ignore Period Flips During Active Period",id:"use-case-ignore-period-flips-during-active-period",level:3},{value:"Use Case: Per-Period Day Volatility",id:"use-case-per-period-day-volatility",level:3},{value:"Best Hour Detection",id:"best-hour-detection",level:2},{value:"ApexCharts Cards",id:"apexcharts-cards",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Installation",id:"installation",level:3},{value:"Example: Fixed Day View",id:"example-fixed-day-view",level:3},{value:"Example: Rolling 48h Window",id:"example-rolling-48h-window",level:3},{value:"Features",id:"features",level:3}];function d(e){const i={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.header,{children:(0,s.jsx)(i.h1,{id:"automation-examples",children:"Automation Examples"})}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Note:"})," This guide is under construction."]}),"\n"]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Tip:"})," For dashboard examples with dynamic icons and colors, see the ",(0,s.jsx)(i.strong,{children:(0,s.jsx)(i.a,{href:"/hass.tibber_prices/user/dynamic-icons",children:"Dynamic Icons Guide"})})," and ",(0,s.jsx)(i.strong,{children:(0,s.jsx)(i.a,{href:"/hass.tibber_prices/user/icon-colors",children:"Dynamic Icon Colors Guide"})}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"table-of-contents",children:"Table of Contents"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#price-based-automations",children:"Price-Based Automations"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#volatility-aware-automations",children:"Volatility-Aware Automations"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#best-hour-detection",children:"Best Hour Detection"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#apexcharts-cards",children:"ApexCharts Cards"})}),"\n"]}),"\n",(0,s.jsx)(i.hr,{}),"\n",(0,s.jsx)(i.h2,{id:"price-based-automations",children:"Price-Based Automations"}),"\n",(0,s.jsx)(i.p,{children:"Coming soon..."}),"\n",(0,s.jsx)(i.hr,{}),"\n",(0,s.jsx)(i.h2,{id:"volatility-aware-automations",children:"Volatility-Aware Automations"}),"\n",(0,s.jsx)(i.p,{children:"These examples show how to handle low-volatility days where period classifications may flip at midnight despite minimal absolute price changes."}),"\n",(0,s.jsx)(i.h3,{id:"use-case-only-act-on-high-volatility-days",children:"Use Case: Only Act on High-Volatility Days"}),"\n",(0,s.jsx)(i.p,{children:'On days with low price variation (< 15% volatility), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when the savings are meaningful:'}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-yaml",children:'automation:\n - alias: "Dishwasher - Best Price (High Volatility Only)"\n description: "Start dishwasher during Best Price period, but only on days with meaningful price differences"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n condition:\n # Only act if volatility > 15% (meaningful savings)\n - condition: numeric_state\n entity_id: sensor.tibber_home_volatility_today\n above: 15\n # Optional: Ensure dishwasher is idle and door closed\n - condition: state\n entity_id: binary_sensor.dishwasher_door\n state: "off"\n action:\n - service: switch.turn_on\n target:\n entity_id: switch.dishwasher_smart_plug\n - service: notify.mobile_app\n data:\n message: "Dishwasher started during Best Price period ({{ states(\'sensor.tibber_home_current_interval_price_ct\') }} ct/kWh, volatility {{ states(\'sensor.tibber_home_volatility_today\') }}%)"\n'})}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Why this works:"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"On high-volatility days (e.g., 25% span), Best Price periods save 5-10 ct/kWh"}),"\n",(0,s.jsx)(i.li,{children:"On low-volatility days (e.g., 8% span), savings are only 1-2 ct/kWh"}),"\n",(0,s.jsx)(i.li,{children:"User can manually start dishwasher on low-volatility days without automation interference"}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"use-case-absolute-price-threshold",children:"Use Case: Absolute Price Threshold"}),"\n",(0,s.jsx)(i.p,{children:"Instead of relying on relative classification, check if the absolute price is cheap enough:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-yaml",children:'automation:\n - alias: "Water Heater - Cheap Enough"\n description: "Heat water when price is below absolute threshold, regardless of period classification"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n condition:\n # Absolute threshold: Only run if < 20 ct/kWh\n - condition: numeric_state\n entity_id: sensor.tibber_home_current_interval_price_ct\n below: 20\n # Optional: Check water temperature\n - condition: numeric_state\n entity_id: sensor.water_heater_temperature\n below: 55 # Only heat if below 55\xb0C\n action:\n - service: switch.turn_on\n target:\n entity_id: switch.water_heater\n - delay:\n hours: 2 # Heat for 2 hours\n - service: switch.turn_off\n target:\n entity_id: switch.water_heater\n'})}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Why this works:"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Period classification can flip at midnight on low-volatility days"}),"\n",(0,s.jsx)(i.li,{children:"Absolute threshold (20 ct/kWh) is stable across midnight boundary"}),"\n",(0,s.jsx)(i.li,{children:'User sets their own "cheap enough" price based on local rates'}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"use-case-combined-volatility-and-price-check",children:"Use Case: Combined Volatility and Price Check"}),"\n",(0,s.jsx)(i.p,{children:"Most robust approach: Check both volatility and absolute price:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-yaml",children:'automation:\n - alias: "EV Charging - Smart Strategy"\n description: "Charge EV using volatility-aware logic"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n condition:\n # Check battery level\n - condition: numeric_state\n entity_id: sensor.ev_battery_level\n below: 80\n # Strategy: High volatility OR cheap enough\n - condition: or\n conditions:\n # Path 1: High volatility day - trust period classification\n - condition: numeric_state\n entity_id: sensor.tibber_home_volatility_today\n above: 15\n # Path 2: Low volatility but price is genuinely cheap\n - condition: numeric_state\n entity_id: sensor.tibber_home_current_interval_price_ct\n below: 18\n action:\n - service: switch.turn_on\n target:\n entity_id: switch.ev_charger\n - service: notify.mobile_app\n data:\n message: >\n EV charging started: {{ states(\'sensor.tibber_home_current_interval_price_ct\') }} ct/kWh\n (Volatility: {{ states(\'sensor.tibber_home_volatility_today\') }}%)\n'})}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Why this works:"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"On high-volatility days (> 15%): Trust the Best Price classification"}),"\n",(0,s.jsx)(i.li,{children:"On low-volatility days (< 15%): Only charge if price is actually cheap (< 18 ct/kWh)"}),"\n",(0,s.jsx)(i.li,{children:"Handles midnight flips gracefully: Continues charging if price stays cheap"}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"use-case-ignore-period-flips-during-active-period",children:"Use Case: Ignore Period Flips During Active Period"}),"\n",(0,s.jsx)(i.p,{children:"Prevent automations from stopping mid-cycle when a period flips at midnight:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-yaml",children:'automation:\n - alias: "Washing Machine - Complete Cycle"\n description: "Start washing machine during Best Price, ignore midnight flips"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: "on"\n condition:\n # Only start if washing machine is idle\n - condition: state\n entity_id: sensor.washing_machine_state\n state: "idle"\n # And volatility is meaningful\n - condition: numeric_state\n entity_id: sensor.tibber_home_volatility_today\n above: 15\n action:\n - service: button.press\n target:\n entity_id: button.washing_machine_eco_program\n # Create input_boolean to track active cycle\n - service: input_boolean.turn_on\n target:\n entity_id: input_boolean.washing_machine_auto_started\n\n # Separate automation: Clear flag when cycle completes\n - alias: "Washing Machine - Cycle Complete"\n trigger:\n - platform: state\n entity_id: sensor.washing_machine_state\n to: "finished"\n condition:\n # Only clear flag if we auto-started it\n - condition: state\n entity_id: input_boolean.washing_machine_auto_started\n state: "on"\n action:\n - service: input_boolean.turn_off\n target:\n entity_id: input_boolean.washing_machine_auto_started\n - service: notify.mobile_app\n data:\n message: "Washing cycle complete"\n'})}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Why this works:"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["Uses ",(0,s.jsx)(i.code,{children:"input_boolean"})," to track auto-started cycles"]}),"\n",(0,s.jsx)(i.li,{children:"Won't trigger multiple times if period flips during the 2-3 hour wash cycle"}),"\n",(0,s.jsx)(i.li,{children:'Only triggers on "off" \u2192 "on" transitions, not during "on" \u2192 "on" continuity'}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"use-case-per-period-day-volatility",children:"Use Case: Per-Period Day Volatility"}),"\n",(0,s.jsx)(i.p,{children:"The simplest approach: Use the period's day volatility attribute directly:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-yaml",children:"automation:\n - alias: \"Heat Pump - Smart Heating\"\n trigger:\n - platform: state\n entity_id: binary_sensor.tibber_home_best_price_period\n to: \"on\"\n condition:\n # Check if the PERIOD'S DAY has meaningful volatility\n - condition: template\n value_template: >\n {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }}\n action:\n - service: climate.set_temperature\n target:\n entity_id: climate.heat_pump\n data:\n temperature: 22 # Boost temperature during cheap period\n"})}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Available per-period attributes:"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"day_volatility_%"}),": Percentage volatility of the period's day (e.g., 8.2 for 8.2%)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"day_price_min"}),": Minimum price of the day in minor currency (ct/\xf8re)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"day_price_max"}),": Maximum price of the day in minor currency (ct/\xf8re)"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"day_price_span"}),": Absolute difference (max - min) in minor currency (ct/\xf8re)"]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["These attributes are available on both ",(0,s.jsx)(i.code,{children:"binary_sensor.tibber_home_best_price_period"})," and ",(0,s.jsx)(i.code,{children:"binary_sensor.tibber_home_peak_price_period"}),"."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Why this works:"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Each period knows its day's volatility"}),"\n",(0,s.jsx)(i.li,{children:"No need to query separate sensors"}),"\n",(0,s.jsx)(i.li,{children:"Template checks if saving is meaningful (> 15% volatility)"}),"\n"]}),"\n",(0,s.jsx)(i.hr,{}),"\n",(0,s.jsx)(i.h2,{id:"best-hour-detection",children:"Best Hour Detection"}),"\n",(0,s.jsx)(i.p,{children:"Coming soon..."}),"\n",(0,s.jsx)(i.hr,{}),"\n",(0,s.jsx)(i.h2,{id:"apexcharts-cards",children:"ApexCharts Cards"}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["\u26a0\ufe0f ",(0,s.jsx)(i.strong,{children:"IMPORTANT:"})," The ",(0,s.jsx)(i.code,{children:"tibber_prices.get_apexcharts_yaml"})," service generates a ",(0,s.jsx)(i.strong,{children:"basic example configuration"})," as a starting point. It is NOT a complete solution for all ApexCharts features."]}),"\n",(0,s.jsxs)(i.p,{children:["This integration is primarily a ",(0,s.jsx)(i.strong,{children:"data provider"}),". Due to technical limitations (segmented time periods, service API usage), many advanced ApexCharts features require manual customization or may not be compatible."]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"For advanced customization:"})," Use the ",(0,s.jsx)(i.code,{children:"get_chartdata"})," service directly to build charts tailored to your specific needs. Community contributions with improved configurations are welcome!"]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["The ",(0,s.jsx)(i.code,{children:"tibber_prices.get_apexcharts_yaml"})," service generates basic ApexCharts card configuration examples for visualizing electricity prices."]}),"\n",(0,s.jsx)(i.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Required:"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/RomRider/apexcharts-card",children:"ApexCharts Card"})," - Install via HACS"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Optional (for rolling window mode):"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"https://github.com/iantrich/config-template-card",children:"Config Template Card"})," - Install via HACS"]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"installation",children:"Installation"}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsx)(i.li,{children:"Open HACS \u2192 Frontend"}),"\n",(0,s.jsx)(i.li,{children:'Search for "ApexCharts Card" and install'}),"\n",(0,s.jsx)(i.li,{children:'(Optional) Search for "Config Template Card" and install if you want rolling window mode'}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"example-fixed-day-view",children:"Example: Fixed Day View"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-yaml",children:'# Generate configuration via automation/script\nservice: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n day: today # or "yesterday", "tomorrow"\n level_type: rating_level # or "level" for 5-level view\nresponse_variable: apexcharts_config\n'})}),"\n",(0,s.jsx)(i.p,{children:"Then copy the generated YAML into your Lovelace dashboard."}),"\n",(0,s.jsx)(i.h3,{id:"example-rolling-48h-window",children:"Example: Rolling 48h Window"}),"\n",(0,s.jsx)(i.p,{children:"For a dynamic chart that automatically adapts to data availability:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-yaml",children:"service: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n day: rolling_window # Or omit for same behavior (default)\n level_type: rating_level\nresponse_variable: apexcharts_config\n"})}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Behavior:"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"When tomorrow data available"})," (typically after ~13:00): Shows today + tomorrow"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"When tomorrow data not available"}),": Shows yesterday + today"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Fixed 48h span:"})," Always shows full 48 hours"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Auto-Zoom Variant:"})}),"\n",(0,s.jsx)(i.p,{children:"For progressive zoom-in throughout the day:"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-yaml",children:"service: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n day: rolling_window_autozoom\n level_type: rating_level\nresponse_variable: apexcharts_config\n"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Same data loading as rolling window"}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Progressive zoom:"})," Graph span starts at ~26h in the morning and decreases to ~14h by midnight"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Updates every 15 minutes:"})," Always shows 2h lookback + remaining time until midnight"]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Note:"})," Rolling window modes require Config Template Card to dynamically adjust the time range."]}),"\n",(0,s.jsx)(i.h3,{id:"features",children:"Features"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Color-coded price levels/ratings (green = cheap, yellow = normal, red = expensive)"}),"\n",(0,s.jsx)(i.li,{children:"Best price period highlighting (semi-transparent green overlay)"}),"\n",(0,s.jsx)(i.li,{children:"Automatic NULL insertion for clean gaps"}),"\n",(0,s.jsx)(i.li,{children:"Translated labels based on your Home Assistant language"}),"\n",(0,s.jsx)(i.li,{children:"Interactive zoom and pan"}),"\n",(0,s.jsx)(i.li,{children:"Live marker showing current time"}),"\n"]})]})}function h(e={}){const{wrapper:i}={...(0,a.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/393be207.f8e000a5.js b/user/assets/js/393be207.f8e000a5.js new file mode 100644 index 0000000..0d9822b --- /dev/null +++ b/user/assets/js/393be207.f8e000a5.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4134],{1943:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>d,contentTitle:()=>p,default:()=>c,frontMatter:()=>o,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"type":"mdx","permalink":"/hass.tibber_prices/user/markdown-page","source":"@site/src/pages/markdown-page.md","title":"Markdown page example","description":"You don\'t need React to write simple standalone pages.","frontMatter":{"title":"Markdown page example"},"unlisted":false}');var s=t(4848),r=t(8453);const o={title:"Markdown page example"},p="Markdown page example",d={},l=[];function i(e){const a={h1:"h1",header:"header",p:"p",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.header,{children:(0,s.jsx)(a.h1,{id:"markdown-page-example",children:"Markdown page example"})}),"\n",(0,s.jsx)(a.p,{children:"You don't need React to write simple standalone pages."})]})}function c(e={}){const{wrapper:a}={...(0,r.R)(),...e.components};return a?(0,s.jsx)(a,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/3b8c55ea.b9c1a9de.js b/user/assets/js/3b8c55ea.b9c1a9de.js new file mode 100644 index 0000000..97ed2f8 --- /dev/null +++ b/user/assets/js/3b8c55ea.b9c1a9de.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[6803],{7248:(n,t,i)=>{i.r(t),i.d(t,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>e,toc:()=>c});const e=JSON.parse('{"id":"installation","title":"Installation","description":"Note: This guide is under construction. For now, please refer to the main README for installation instructions.","source":"@site/docs/installation.md","sourceDirName":".","slug":"/installation","permalink":"/hass.tibber_prices/user/installation","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/installation.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"User Documentation","permalink":"/hass.tibber_prices/user/intro"},"next":{"title":"Configuration","permalink":"/hass.tibber_prices/user/configuration"}}');var s=i(4848),a=i(8453);const o={},l="Installation",r={},c=[{value:"HACS Installation (Recommended)",id:"hacs-installation-recommended",level:2},{value:"Manual Installation",id:"manual-installation",level:2},{value:"Configuration",id:"configuration",level:2}];function d(n){const t={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",header:"header",p:"p",strong:"strong",...(0,a.R)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"installation",children:"Installation"})}),"\n",(0,s.jsxs)(t.blockquote,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Note:"})," This guide is under construction. For now, please refer to the ",(0,s.jsx)(t.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/README.md",children:"main README"})," for installation instructions."]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"hacs-installation-recommended",children:"HACS Installation (Recommended)"}),"\n",(0,s.jsx)(t.p,{children:"Coming soon..."}),"\n",(0,s.jsx)(t.h2,{id:"manual-installation",children:"Manual Installation"}),"\n",(0,s.jsx)(t.p,{children:"Coming soon..."}),"\n",(0,s.jsx)(t.h2,{id:"configuration",children:"Configuration"}),"\n",(0,s.jsx)(t.p,{children:"Coming soon..."})]})}function u(n={}){const{wrapper:t}={...(0,a.R)(),...n.components};return t?(0,s.jsx)(t,{...n,children:(0,s.jsx)(d,{...n})}):d(n)}}}]); \ No newline at end of file diff --git a/user/assets/js/416.c84d7537.js b/user/assets/js/416.c84d7537.js new file mode 100644 index 0000000..0828532 --- /dev/null +++ b/user/assets/js/416.c84d7537.js @@ -0,0 +1,25 @@ +/*! For license information please see 416.c84d7537.js.LICENSE.txt */ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[416],{416:(t,e,s)=>{s.r(e),s.d(e,{GiscusWidget:()=>Ut});const i=globalThis,r=i.ShadowRoot&&(void 0===i.ShadyCSS||i.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,n=Symbol(),o=new WeakMap;let h=class{constructor(t,e,s){if(this._$cssResult$=!0,s!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(r&&void 0===t){const s=void 0!==e&&1===e.length;s&&(t=o.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),s&&o.set(e,t))}return t}toString(){return this.cssText}};const a=r?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return(t=>new h("string"==typeof t?t:t+"",void 0,n))(e)})(t):t,{is:l,defineProperty:c,getOwnPropertyDescriptor:d,getOwnPropertyNames:u,getOwnPropertySymbols:p,getPrototypeOf:_}=Object,$=globalThis,g=$.trustedTypes,f=g?g.emptyScript:"",m=$.reactiveElementPolyfillSupport,v=(t,e)=>t,A={toAttribute(t,e){switch(e){case Boolean:t=t?f:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let s=t;switch(e){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch{s=null}}return s}},y=(t,e)=>!l(t,e),S={attribute:!0,type:String,converter:A,reflect:!1,hasChanged:y};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),$.litPropertyMetadata??($.litPropertyMetadata=new WeakMap);class E extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=S){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const s=Symbol(),i=this.getPropertyDescriptor(t,s,e);void 0!==i&&c(this.prototype,t,i)}}static getPropertyDescriptor(t,e,s){const{get:i,set:r}=d(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return null==i?void 0:i.call(this)},set(e){const n=null==i?void 0:i.call(this);r.call(this,e),this.requestUpdate(t,n,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??S}static _$Ei(){if(this.hasOwnProperty(v("elementProperties")))return;const t=_(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(v("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(v("properties"))){const t=this.properties,e=[...u(t),...p(t)];for(const s of e)this.createProperty(s,t[s])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,s]of e)this.elementProperties.set(t,s)}this._$Eh=new Map;for(const[e,s]of this.elementProperties){const t=this._$Eu(e,s);void 0!==t&&this._$Eh.set(t,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const t of s)e.unshift(a(t))}else void 0!==t&&e.push(a(t));return e}static _$Eu(t,e){const s=e.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),null==(t=this.constructor.l)||t.forEach(t=>t(this))}addController(t){var e;(this._$EO??(this._$EO=new Set)).add(t),void 0!==this.renderRoot&&this.isConnected&&(null==(e=t.hostConnected)||e.call(t))}removeController(t){var e;null==(e=this._$EO)||e.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const s of e.keys())this.hasOwnProperty(s)&&(t.set(s,this[s]),delete this[s]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((t,e)=>{if(r)t.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const s of e){const e=document.createElement("style"),r=i.litNonce;void 0!==r&&e.setAttribute("nonce",r),e.textContent=s.cssText,t.appendChild(e)}})(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null==(t=this._$EO)||t.forEach(t=>{var e;return null==(e=t.hostConnected)?void 0:e.call(t)})}enableUpdating(t){}disconnectedCallback(){var t;null==(t=this._$EO)||t.forEach(t=>{var e;return null==(e=t.hostDisconnected)?void 0:e.call(t)})}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EC(t,e){var s;const i=this.constructor.elementProperties.get(t),r=this.constructor._$Eu(t,i);if(void 0!==r&&!0===i.reflect){const n=(void 0!==(null==(s=i.converter)?void 0:s.toAttribute)?i.converter:A).toAttribute(e,i.type);this._$Em=t,null==n?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(t,e){var s;const i=this.constructor,r=i._$Eh.get(t);if(void 0!==r&&this._$Em!==r){const t=i.getPropertyOptions(r),n="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null==(s=t.converter)?void 0:s.fromAttribute)?t.converter:A;this._$Em=r,this[r]=n.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,s){if(void 0!==t){if(s??(s=this.constructor.getPropertyOptions(t)),!(s.hasChanged??y)(this[t],e))return;this.P(t,e,s)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,e,s){this._$AL.has(t)||this._$AL.set(t,e),!0===s.reflect&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,s]of t)!0!==s.wrapped||this._$AL.has(e)||void 0===this[e]||this.P(e,this[e],s)}let e=!1;const s=this._$AL;try{e=this.shouldUpdate(s),e?(this.willUpdate(s),null==(t=this._$EO)||t.forEach(t=>{var e;return null==(e=t.hostUpdate)?void 0:e.call(t)}),this.update(s)):this._$EU()}catch(i){throw e=!1,this._$EU(),i}e&&this._$AE(s)}willUpdate(t){}_$AE(t){var e;null==(e=this._$EO)||e.forEach(t=>{var e;return null==(e=t.hostUpdated)?void 0:e.call(t)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}E.elementStyles=[],E.shadowRootOptions={mode:"open"},E[v("elementProperties")]=new Map,E[v("finalized")]=new Map,null==m||m({ReactiveElement:E}),($.reactiveElementVersions??($.reactiveElementVersions=[])).push("2.0.4");const b=globalThis,C=b.trustedTypes,w=C?C.createPolicy("lit-html",{createHTML:t=>t}):void 0,U="$lit$",P=`lit$${Math.random().toFixed(9).slice(2)}$`,O="?"+P,T=`<${O}>`,M=document,R=()=>M.createComment(""),N=t=>null===t||"object"!=typeof t&&"function"!=typeof t,I=Array.isArray,x="[ \t\n\f\r]",H=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,k=/-->/g,L=/>/g,D=RegExp(`>|${x}(?:([^\\s"'>=/]+)(${x}*=${x}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),j=/'/g,z=/"/g,Y=/^(?:script|style|textarea|title)$/i,G=(K=1,(t,...e)=>({_$litType$:K,strings:t,values:e})),B=Symbol.for("lit-noChange"),W=Symbol.for("lit-nothing"),V=new WeakMap,q=M.createTreeWalker(M,129);var K;function F(t,e){if(!I(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==w?w.createHTML(e):e}class J{constructor({strings:t,_$litType$:e},s){let i;this.parts=[];let r=0,n=0;const o=t.length-1,h=this.parts,[a,l]=((t,e)=>{const s=t.length-1,i=[];let r,n=2===e?"":3===e?"":"",o=H;for(let h=0;h"===a[0]?(o=r??H,l=-1):void 0===a[1]?l=-2:(l=o.lastIndex-a[2].length,s=a[1],o=void 0===a[3]?D:'"'===a[3]?z:j):o===z||o===j?o=D:o===k||o===L?o=H:(o=D,r=void 0);const d=o===D&&t[h+1].startsWith("/>")?" ":"";n+=o===H?e+T:l>=0?(i.push(s),e.slice(0,l)+U+e.slice(l)+P+d):e+P+(-2===l?h:d)}return[F(t,n+(t[s]||"")+(2===e?"":3===e?"":"")),i]})(t,e);if(this.el=J.createElement(a,s),q.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(i=q.nextNode())&&h.length0){i.textContent=C?C.emptyScript:"";for(let s=0;sI(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==W&&N(this._$AH)?this._$AA.nextSibling.data=t:this.T(M.createTextNode(t)),this._$AH=t}$(t){var e;const{values:s,_$litType$:i}=t,r="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=J.createElement(F(i.h,i.h[0]),this.options)),i);if((null==(e=this._$AH)?void 0:e._$AD)===r)this._$AH.p(s);else{const t=new Z(r,this),e=t.u(this.options);t.p(s),this.T(e),this._$AH=t}}_$AC(t){let e=V.get(t.strings);return void 0===e&&V.set(t.strings,e=new J(t)),e}k(t){I(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let s,i=0;for(const r of t)i===e.length?e.push(s=new X(this.O(R()),this.O(R()),this,this.options)):s=e[i],s._$AI(r),i++;i2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=W}_$AI(t,e=this,s,i){const r=this.strings;let n=!1;if(void 0===r)t=Q(this,t,e,0),n=!N(t)||t!==this._$AH&&t!==B,n&&(this._$AH=t);else{const i=t;let o,h;for(t=r[0],o=0;o{const i=(null==s?void 0:s.renderBefore)??e;let r=i._$litPart$;if(void 0===r){const t=(null==s?void 0:s.renderBefore)??null;i._$litPart$=r=new X(e.insertBefore(R(),t),t,void 0,s??{})}return r._$AI(t),r})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null==(t=this._$Do)||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null==(t=this._$Do)||t.setConnected(!1)}render(){return B}};var ht;ot._$litElement$=!0,ot.finalized=!0,null==(ht=globalThis.litElementHydrateSupport)||ht.call(globalThis,{LitElement:ot});const at=globalThis.litElementPolyfillSupport;null==at||at({LitElement:ot}),(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.1.1");const lt={attribute:!0,type:String,converter:A,reflect:!1,hasChanged:y},ct=(t=lt,e,s)=>{const{kind:i,metadata:r}=s;let n=globalThis.litPropertyMetadata.get(r);if(void 0===n&&globalThis.litPropertyMetadata.set(r,n=new Map),n.set(s.name,t),"accessor"===i){const{name:i}=s;return{set(s){const r=e.get.call(this);e.set.call(this,s),this.requestUpdate(i,r,t)},init(e){return void 0!==e&&this.P(i,void 0,t),e}}}if("setter"===i){const{name:i}=s;return function(s){const r=this[i];e.call(this,s),this.requestUpdate(i,r,t)}}throw Error("Unsupported decorator location: "+i)};function dt(t){return(e,s)=>"object"==typeof s?ct(t,e,s):((t,e,s)=>{const i=e.hasOwnProperty(s);return e.constructor.createProperty(s,i?{...t,wrapped:!0}:t),i?Object.getOwnPropertyDescriptor(e,s):void 0})(t,e,s)}const ut=2;let pt=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,s){this._$Ct=t,this._$AM=e,this._$Ci=s}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};const _t=(t,e)=>{var s;const i=t._$AN;if(void 0===i)return!1;for(const r of i)null==(s=r._$AO)||s.call(r,e,!1),_t(r,e);return!0},$t=t=>{let e,s;do{if(void 0===(e=t._$AM))break;s=e._$AN,s.delete(t),t=e}while(0===(null==s?void 0:s.size))},gt=t=>{for(let e;e=t._$AM;t=e){let s=e._$AN;if(void 0===s)e._$AN=s=new Set;else if(s.has(t))break;s.add(t),vt(e)}};function ft(t){void 0!==this._$AN?($t(this),this._$AM=t,gt(this)):this._$AM=t}function mt(t,e=!1,s=0){const i=this._$AH,r=this._$AN;if(void 0!==r&&0!==r.size)if(e)if(Array.isArray(i))for(let n=s;n{t.type==ut&&(t._$AP??(t._$AP=mt),t._$AQ??(t._$AQ=ft))};class At extends pt{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,s){super._$AT(t,e,s),gt(this),this.isConnected=t._$AU}_$AO(t,e=!0){var s,i;t!==this.isConnected&&(this.isConnected=t,t?null==(s=this.reconnected)||s.call(this):null==(i=this.disconnected)||i.call(this)),e&&(_t(this,t),$t(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class yt{}const St=new WeakMap,Et=(t=>(...e)=>({_$litDirective$:t,values:e}))(class extends At{render(t){return W}update(t,[e]){var s;const i=e!==this.Y;return i&&void 0!==this.Y&&this.rt(void 0),(i||this.lt!==this.ct)&&(this.Y=e,this.ht=null==(s=t.options)?void 0:s.host,this.rt(this.ct=t.element)),W}rt(t){if(this.isConnected||(t=void 0),"function"==typeof this.Y){const e=this.ht??globalThis;let s=St.get(e);void 0===s&&(s=new WeakMap,St.set(e,s)),void 0!==s.get(this.Y)&&this.Y.call(this.ht,void 0),s.set(this.Y,t),void 0!==t&&this.Y.call(this.ht,t)}else this.Y.value=t}get lt(){var t,e;return"function"==typeof this.Y?null==(t=St.get(this.ht??globalThis))?void 0:t.get(this.Y):null==(e=this.Y)?void 0:e.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var bt=Object.defineProperty,Ct=Object.getOwnPropertyDescriptor,wt=(t,e,s,i)=>{for(var r,n=i>1?void 0:i?Ct(e,s):e,o=t.length-1;o>=0;o--)(r=t[o])&&(n=(i?r(e,s,n):r(n))||n);return i&&n&&bt(e,s,n),n};let Ut=class extends ot{constructor(){super(),this.GISCUS_SESSION_KEY="giscus-session",this.GISCUS_DEFAULT_HOST="https://giscus.app",this.ERROR_SUGGESTION="Please consider reporting this error at https://github.com/giscus/giscus/issues/new.",this.__session="",this._iframeRef=new yt,this.messageEventHandler=this.handleMessageEvent.bind(this),this.hasLoaded=!1,this.host=this.GISCUS_DEFAULT_HOST,this.strict="0",this.reactionsEnabled="1",this.emitMetadata="0",this.inputPosition="bottom",this.theme="light",this.lang="en",this.loading="eager",this.setupSession(),window.addEventListener("message",this.messageEventHandler)}get iframeRef(){var t;return null==(t=this._iframeRef)?void 0:t.value}get _host(){try{return new URL(this.host),this.host}catch{return this.GISCUS_DEFAULT_HOST}}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.messageEventHandler)}_formatError(t){return`[giscus] An error occurred. Error message: "${t}".`}setupSession(){const t=location.href,e=new URL(t),s=localStorage.getItem(this.GISCUS_SESSION_KEY),i=e.searchParams.get("giscus")??"";if(this.__session="",i)return localStorage.setItem(this.GISCUS_SESSION_KEY,JSON.stringify(i)),this.__session=i,e.searchParams.delete("giscus"),e.hash="",void history.replaceState(void 0,document.title,e.toString());if(s)try{this.__session=JSON.parse(s)}catch(r){localStorage.removeItem(this.GISCUS_SESSION_KEY),console.warn(`${this._formatError(null==r?void 0:r.message)} Session has been cleared.`)}}signOut(){localStorage.removeItem(this.GISCUS_SESSION_KEY),this.__session="",this.update(new Map)}handleMessageEvent(t){if(t.origin!==this._host)return;const{data:e}=t;if("object"!=typeof e||!e.giscus)return;if(this.iframeRef&&e.giscus.resizeHeight&&(this.iframeRef.style.height=`${e.giscus.resizeHeight}px`),e.giscus.signOut)return console.info("[giscus] User has logged out. Session has been cleared."),void this.signOut();if(!e.giscus.error)return;const s=e.giscus.error;if(s.includes("Bad credentials")||s.includes("Invalid state value")||s.includes("State has expired")){if(null!==localStorage.getItem(this.GISCUS_SESSION_KEY))return console.warn(`${this._formatError(s)} Session has been cleared.`),void this.signOut();console.error(`${this._formatError(s)} No session is stored initially. ${this.ERROR_SUGGESTION}`)}s.includes("Discussion not found")?console.warn(`[giscus] ${s}. A new discussion will be created if a comment/reaction is submitted.`):console.error(`${this._formatError(s)} ${this.ERROR_SUGGESTION}`)}sendMessage(t){var e;null==(e=this.iframeRef)||!e.contentWindow||!this.hasLoaded||this.iframeRef.contentWindow.postMessage({giscus:t},this._host)}updateConfig(){const t={setConfig:{repo:this.repo,repoId:this.repoId,category:this.category,categoryId:this.categoryId,term:this.getTerm(),number:+this.getNumber(),strict:"1"===this.strict,reactionsEnabled:"1"===this.reactionsEnabled,emitMetadata:"1"===this.emitMetadata,inputPosition:this.inputPosition,theme:this.theme,lang:this.lang}};this.sendMessage(t)}firstUpdated(){var t;null==(t=this.iframeRef)||t.addEventListener("load",()=>{var t;null==(t=this.iframeRef)||t.classList.remove("loading"),this.hasLoaded=!0,this.updateConfig()})}requestUpdate(t,e,s){this.hasUpdated&&"host"!==t?this.updateConfig():super.requestUpdate(t,e,s)}getMetaContent(t,e=!1){const s=e?`meta[property='og:${t}'],`:"",i=document.querySelector(s+`meta[name='${t}']`);return i?i.content:""}_getCleanedUrl(){const t=new URL(location.href);return t.searchParams.delete("giscus"),t.hash="",t}getTerm(){switch(this.mapping){case"url":return this._getCleanedUrl().toString();case"title":return document.title;case"og:title":return this.getMetaContent("title",!0);case"specific":return this.term??"";case"number":return"";default:return location.pathname.length<2?"index":location.pathname.substring(1).replace(/\.\w+$/,"")}}getNumber(){return"number"===this.mapping?this.term??"":""}getIframeSrc(){const t=this._getCleanedUrl().toString(),e=`${t}${this.id?"#"+this.id:""}`,s=this.getMetaContent("description",!0),i=this.getMetaContent("giscus:backlink")||t,r={origin:e,session:this.__session,repo:this.repo,repoId:this.repoId??"",category:this.category??"",categoryId:this.categoryId??"",term:this.getTerm(),number:this.getNumber(),strict:this.strict,reactionsEnabled:this.reactionsEnabled,emitMetadata:this.emitMetadata,inputPosition:this.inputPosition,theme:this.theme,description:s,backLink:i};return`${this._host}${this.lang?`/${this.lang}`:""}/widget?${new URLSearchParams(r).toString()}`}render(){return G` + + `}};Ut.styles=((t,...e)=>{const s=1===t.length?t[0]:e.reduce((e,s,i)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[i+1],t[0]);return new h(s,t,n)})` + :host, + iframe { + width: 100%; + border: none; + min-height: 150px; + color-scheme: light dark; + } + + iframe.loading { + opacity: 0; + } + `,wt([dt({reflect:!0})],Ut.prototype,"host",2),wt([dt({reflect:!0})],Ut.prototype,"repo",2),wt([dt({reflect:!0})],Ut.prototype,"repoId",2),wt([dt({reflect:!0})],Ut.prototype,"category",2),wt([dt({reflect:!0})],Ut.prototype,"categoryId",2),wt([dt({reflect:!0})],Ut.prototype,"mapping",2),wt([dt({reflect:!0})],Ut.prototype,"term",2),wt([dt({reflect:!0})],Ut.prototype,"strict",2),wt([dt({reflect:!0})],Ut.prototype,"reactionsEnabled",2),wt([dt({reflect:!0})],Ut.prototype,"emitMetadata",2),wt([dt({reflect:!0})],Ut.prototype,"inputPosition",2),wt([dt({reflect:!0})],Ut.prototype,"theme",2),wt([dt({reflect:!0})],Ut.prototype,"lang",2),wt([dt({reflect:!0})],Ut.prototype,"loading",2),Ut=wt([function(t){return customElements.get(t)?t=>t:(t=>(e,s)=>{void 0!==s?s.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)})(t)}("giscus-widget")],Ut)}}]); \ No newline at end of file diff --git a/user/assets/js/416.c84d7537.js.LICENSE.txt b/user/assets/js/416.c84d7537.js.LICENSE.txt new file mode 100644 index 0000000..419a061 --- /dev/null +++ b/user/assets/js/416.c84d7537.js.LICENSE.txt @@ -0,0 +1,17 @@ +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ diff --git a/user/assets/js/4250.5c33f2f2.js b/user/assets/js/4250.5c33f2f2.js new file mode 100644 index 0000000..9214220 --- /dev/null +++ b/user/assets/js/4250.5c33f2f2.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4250],{1869:(s,e,a)=>{a.d(e,{createGitGraphServices:()=>c.b});var c=a(7539);a(7960)}}]); \ No newline at end of file diff --git a/user/assets/js/45a5cd1f.b516da78.js b/user/assets/js/45a5cd1f.b516da78.js new file mode 100644 index 0000000..1f4cb3a --- /dev/null +++ b/user/assets/js/45a5cd1f.b516da78.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4e3],{7515:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"concepts","title":"Core Concepts","description":"Understanding the fundamental concepts behind the Tibber Prices integration.","source":"@site/docs/concepts.md","sourceDirName":".","slug":"/concepts","permalink":"/hass.tibber_prices/user/concepts","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/concepts.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Configuration","permalink":"/hass.tibber_prices/user/configuration"},"next":{"title":"Glossary","permalink":"/hass.tibber_prices/user/glossary"}}');var n=s(4848),t=s(8453);const l={},c="Core Concepts",a={},o=[{value:"Price Intervals",id:"price-intervals",level:2},{value:"Price Ratings",id:"price-ratings",level:2},{value:"Price Periods",id:"price-periods",level:2},{value:"Statistical Analysis",id:"statistical-analysis",level:2},{value:"Multi-Home Support",id:"multi-home-support",level:2}];function d(e){const i={a:"a",h1:"h1",h2:"h2",header:"header",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.header,{children:(0,n.jsx)(i.h1,{id:"core-concepts",children:"Core Concepts"})}),"\n",(0,n.jsx)(i.p,{children:"Understanding the fundamental concepts behind the Tibber Prices integration."}),"\n",(0,n.jsx)(i.h2,{id:"price-intervals",children:"Price Intervals"}),"\n",(0,n.jsxs)(i.p,{children:["The integration works with ",(0,n.jsx)(i.strong,{children:"quarter-hourly intervals"})," (15 minutes):"]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Each interval has a start time (e.g., 14:00, 14:15, 14:30, 14:45)"}),"\n",(0,n.jsx)(i.li,{children:"Prices are fixed for the entire interval"}),"\n",(0,n.jsx)(i.li,{children:"Synchronized with Tibber's smart meter readings"}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"price-ratings",children:"Price Ratings"}),"\n",(0,n.jsxs)(i.p,{children:["Prices are automatically classified into ",(0,n.jsx)(i.strong,{children:"rating levels"}),":"]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"VERY_CHEAP"})," - Exceptionally low prices (great for energy-intensive tasks)"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"CHEAP"})," - Below average prices (good for flexible loads)"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"NORMAL"})," - Around average prices (regular consumption)"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"EXPENSIVE"})," - Above average prices (reduce consumption if possible)"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"VERY_EXPENSIVE"})," - Exceptionally high prices (avoid heavy loads)"]}),"\n"]}),"\n",(0,n.jsxs)(i.p,{children:["Rating is based on ",(0,n.jsx)(i.strong,{children:"statistical analysis"})," comparing current price to:"]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Daily average"}),"\n",(0,n.jsx)(i.li,{children:"Trailing 24-hour average"}),"\n",(0,n.jsx)(i.li,{children:"User-configured thresholds"}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"price-periods",children:"Price Periods"}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Best Price Periods"})," and ",(0,n.jsx)(i.strong,{children:"Peak Price Periods"})," are automatically detected time windows:"]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Best Price Period"})," - Consecutive intervals with favorable prices (for scheduling energy-heavy tasks)"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Peak Price Period"})," - Time windows with highest prices (to avoid or shift consumption)"]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Periods can:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Span multiple hours"}),"\n",(0,n.jsx)(i.li,{children:"Cross midnight boundaries"}),"\n",(0,n.jsx)(i.li,{children:"Adapt based on your configuration (flex, min_distance, rating levels)"}),"\n"]}),"\n",(0,n.jsxs)(i.p,{children:["See ",(0,n.jsx)(i.a,{href:"/hass.tibber_prices/user/period-calculation",children:"Period Calculation"})," for detailed configuration."]}),"\n",(0,n.jsx)(i.h2,{id:"statistical-analysis",children:"Statistical Analysis"}),"\n",(0,n.jsx)(i.p,{children:"The integration enriches every interval with context:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Trailing 24h Average"})," - Average price over the last 24 hours"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Leading 24h Average"})," - Average price over the next 24 hours"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Price Difference"})," - How much current price deviates from average (in %)"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Volatility"})," - Price stability indicator (LOW, MEDIUM, HIGH)"]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"This helps you understand if current prices are exceptional or typical."}),"\n",(0,n.jsx)(i.h2,{id:"multi-home-support",children:"Multi-Home Support"}),"\n",(0,n.jsx)(i.p,{children:"You can add multiple Tibber homes to track prices for:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Different locations"}),"\n",(0,n.jsx)(i.li,{children:"Different electricity contracts"}),"\n",(0,n.jsx)(i.li,{children:"Comparison between regions"}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"Each home gets its own set of sensors with unique entity IDs."}),"\n",(0,n.jsx)(i.hr,{}),"\n",(0,n.jsxs)(i.p,{children:["\ud83d\udca1 ",(0,n.jsx)(i.strong,{children:"Next Steps:"})]}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.a,{href:"/hass.tibber_prices/user/glossary",children:"Glossary"})," - Detailed term definitions"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.a,{href:"/hass.tibber_prices/user/sensors",children:"Sensors"})," - How to use sensor data"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.a,{href:"/hass.tibber_prices/user/automation-examples",children:"Automation Examples"})," - Practical use cases"]}),"\n"]})]})}function h(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/4616.7c78a6d0.js b/user/assets/js/4616.7c78a6d0.js new file mode 100644 index 0000000..ea62ea1 --- /dev/null +++ b/user/assets/js/4616.7c78a6d0.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4616],{4616:(t,e,s)=>{s.d(e,{Zk:()=>h,q7:()=>B,tM:()=>ot,u4:()=>rt});var i=s(9625),n=s(1152),r=s(45),o=s(3226),a=s(7633),c=s(797),l=function(){var t=(0,c.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],o=[1,11],a=[1,16],l=[1,17],h=[1,18],d=[1,19],u=[1,33],p=[1,20],y=[1,21],g=[1,22],m=[1,23],f=[1,24],S=[1,26],_=[1,27],k=[1,28],b=[1,29],T=[1,30],E=[1,31],D=[1,32],C=[1,35],x=[1,36],$=[1,37],v=[1,38],I=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],w=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],R={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:(0,c.K2)(function(t,e,s,i,n,r,o){var a=r.length-1;switch(n){case 3:return i.setRootDoc(r[a]),r[a];case 4:this.$=[];break;case 5:"nl"!=r[a]&&(r[a-1].push(r[a]),this.$=r[a-1]);break;case 6:case 7:case 12:this.$=r[a];break;case 8:this.$="nl";break;case 13:const t=r[a-1];t.description=i.trimColon(r[a]),this.$=t;break;case 14:this.$={stmt:"relation",state1:r[a-2],state2:r[a]};break;case 15:const e=i.trimColon(r[a]);this.$={stmt:"relation",state1:r[a-3],state2:r[a-1],description:e};break;case 19:this.$={stmt:"state",id:r[a-3],type:"default",description:"",doc:r[a-1]};break;case 20:var c=r[a],l=r[a-2].trim();if(r[a].match(":")){var h=r[a].split(":");c=h[0],l=[l,h[1]]}this.$={stmt:"state",id:c,type:"default",description:l};break;case 21:this.$={stmt:"state",id:r[a-3],type:"default",description:r[a-5],doc:r[a-1]};break;case 22:this.$={stmt:"state",id:r[a],type:"fork"};break;case 23:this.$={stmt:"state",id:r[a],type:"join"};break;case 24:this.$={stmt:"state",id:r[a],type:"choice"};break;case 25:this.$={stmt:"state",id:i.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:r[a-1].trim(),note:{position:r[a-2].trim(),text:r[a].trim()}};break;case 29:this.$=r[a].trim(),i.setAccTitle(this.$);break;case 30:case 31:this.$=r[a].trim(),i.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:r[a-3],url:r[a-2],tooltip:r[a-1]};break;case 33:this.$={stmt:"click",id:r[a-3],url:r[a-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:r[a-1].trim(),classes:r[a].trim()};break;case 36:this.$={stmt:"style",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 37:this.$={stmt:"applyClass",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 38:i.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:i.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:i.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:i.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:r[a].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:r[a-2].trim(),classes:[r[a].trim()],type:"default",description:""}}},"anonymous"),table:[{3:1,4:e,5:s,6:i},{1:[3]},{3:5,4:e,5:s,6:i},{3:6,4:e,5:s,6:i},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:_,37:k,38:b,41:T,45:E,48:D,51:C,52:x,53:$,54:v,57:I},t(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:a,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:_,37:k,38:b,41:T,45:E,48:D,51:C,52:x,53:$,54:v,57:I},t(A,[2,7]),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(A,[2,11]),t(A,[2,12],{14:[1,40],15:[1,41]}),t(A,[2,16]),{18:[1,42]},t(A,[2,18],{20:[1,43]}),{23:[1,44]},t(A,[2,22]),t(A,[2,23]),t(A,[2,24]),t(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(A,[2,28]),{34:[1,49]},{36:[1,50]},t(A,[2,31]),{13:51,24:u,57:I},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(L,[2,44],{58:[1,56]}),t(L,[2,45],{58:[1,57]}),t(A,[2,38]),t(A,[2,39]),t(A,[2,40]),t(A,[2,41]),t(A,[2,6]),t(A,[2,13]),{13:58,24:u,57:I},t(A,[2,17]),t(w,n,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(A,[2,29]),t(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(A,[2,14],{14:[1,71]}),{4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,21:[1,72],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:_,37:k,38:b,41:T,45:E,48:D,51:C,52:x,53:$,54:v,57:I},t(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(A,[2,34]),t(A,[2,35]),t(A,[2,36]),t(A,[2,37]),t(L,[2,46]),t(L,[2,47]),t(A,[2,15]),t(A,[2,19]),t(w,n,{7:78}),t(A,[2,26]),t(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,21:[1,81],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:_,37:k,38:b,41:T,45:E,48:D,51:C,52:x,53:$,54:v,57:I},t(A,[2,32]),t(A,[2,33]),t(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],o=this.table,a="",l=0,h=0,d=0,u=r.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;r.push(m);var f=p.options&&p.options.ranges;function S(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,c.K2)(S,"lex");for(var _,k,b,T,E,D,C,x,$,v={};;){if(b=s[s.length-1],this.defaultActions[b]?T=this.defaultActions[b]:(null==_&&(_=S()),T=o[b]&&o[b][_]),void 0===T||!T.length||!T[0]){var I="";for(D in $=[],o[b])this.terminals_[D]&&D>2&&$.push("'"+this.terminals_[D]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+$.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:m,expected:$})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+_);switch(T[0]){case 1:s.push(_),n.push(p.yytext),r.push(p.yylloc),s.push(T[1]),_=null,k?(_=k,k=null):(h=p.yyleng,a=p.yytext,l=p.yylineno,m=p.yylloc,d>0&&d--);break;case 2:if(C=this.productions_[T[1]][1],v.$=n[n.length-C],v._$={first_line:r[r.length-(C||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(C||1)].first_column,last_column:r[r.length-1].last_column},f&&(v._$.range=[r[r.length-(C||1)].range[0],r[r.length-1].range[1]]),void 0!==(E=this.performAction.apply(v,[a,h,l,y.yy,T[1],n,r].concat(u))))return E;C&&(s=s.slice(0,-1*C*2),n=n.slice(0,-1*C),r=r.slice(0,-1*C)),s.push(this.productions_[T[1]][0]),n.push(v.$),r.push(v._$),x=o[s[s.length-2]][s[s.length-1]],s.push(x);break;case 3:return!0}}return!0},"parse")},N=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,s,i){switch(s){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:case 45:return 51;case 5:case 46:return 52;case 6:case 47:return 53;case 7:case 48:return 54;case 8:case 9:case 11:case 12:case 13:case 14:case 57:case 59:case 65:break;case 10:case 80:return 5;case 15:case 35:return this.pushState("SCALE"),17;case 16:case 36:return 18;case 17:case 23:case 37:case 52:case 55:this.popState();break;case 18:return this.begin("acc_title"),33;case 19:return this.popState(),"acc_title_value";case 20:return this.begin("acc_descr"),35;case 21:return this.popState(),"acc_descr_value";case 22:this.begin("acc_descr_multiline");break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 27:return this.popState(),this.pushState("CLASSDEFID"),42;case 28:return this.popState(),43;case 29:return this.pushState("CLASS"),48;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;case 31:return this.popState(),50;case 32:return this.pushState("STYLE"),45;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;case 34:return this.popState(),47;case 38:this.pushState("STATE");break;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 41:case 44:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";case 51:case 67:return this.popState(),"ID";case 53:return"STATE_DESCR";case 54:return 19;case 56:return this.popState(),this.pushState("struct"),20;case 58:return this.popState(),21;case 60:return this.begin("NOTE"),29;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:return this.popState(),this.pushState("NOTE_ID"),60;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 66:return"NOTE_TEXT";case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;case 69:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 70:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 71:case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return e.yytext=e.yytext.trim(),14;case 77:return 15;case 78:return 28;case 79:return 58;case 81:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}}}();function O(){this.yy={}}return R.lexer=N,(0,c.K2)(O,"Parser"),O.prototype=R,R.Parser=O,new O}();l.parser=l;var h=l,d="state",u="root",p="relation",y="default",g="divider",m="fill:none",f="fill: #333",S="text",_="normal",k="rect",b="rectWithTitle",T="divider",E="roundedWithTitle",D="statediagram",C=`${D}-state`,x="transition",$=`${x} note-edge`,v=`${D}-note`,I=`${D}-cluster`,A=`${D}-cluster-alt`,L="parent",w="note",R="----",N=`${R}${w}`,O=`${R}${L}`,K=(0,c.K2)((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir"),B={getClasses:(0,c.K2)(function(t,e){return e.db.getClasses()},"getClasses"),draw:(0,c.K2)(async function(t,e,s,l){c.Rm.info("REF0:"),c.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:h,state:d,layout:u}=(0,a.D7)();l.db.extract(l.db.getRootDocV2());const p=l.db.getData(),y=(0,i.A)(e,h);p.type=l.type,p.layoutAlgorithm=u,p.nodeSpacing=d?.nodeSpacing||50,p.rankSpacing=d?.rankSpacing||50,p.markers=["barb"],p.diagramId=e,await(0,r.XX)(p,y);try{("function"==typeof l.db.getLinks?l.db.getLinks():new Map).forEach((t,e)=>{const s="string"==typeof e?e:"string"==typeof e?.id?e.id:"";if(!s)return void c.Rm.warn("\u26a0\ufe0f Invalid or missing stateId from key:",JSON.stringify(e));const i=y.node()?.querySelectorAll("g");let n;if(i?.forEach(t=>{const e=t.textContent?.trim();e===s&&(n=t)}),!n)return void c.Rm.warn("\u26a0\ufe0f Could not find node matching text:",s);const r=n.parentNode;if(!r)return void c.Rm.warn("\u26a0\ufe0f Node has no parent, cannot wrap:",s);const o=document.createElementNS("http://www.w3.org/2000/svg","a"),a=t.url.replace(/^"+|"+$/g,"");if(o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),o.setAttribute("target","_blank"),t.tooltip){const e=t.tooltip.replace(/^"+|"+$/g,"");o.setAttribute("title",e)}r.replaceChild(o,n),o.appendChild(n),c.Rm.info("\ud83d\udd17 Wrapped node in
    tag for:",s,t.url)})}catch(g){c.Rm.error("\u274c Error injecting clickable links:",g)}o._K.insertTitle(y,"statediagramTitleText",d?.titleTopMargin??25,l.db.getDiagramTitle()),(0,n.P)(y,8,D,d?.useMaxWidth??!0)},"draw"),getDir:K},F=new Map,Y=0;function P(t="",e=0,s="",i=R){return`state-${t}${null!==s&&s.length>0?`${i}${s}`:""}-${e}`}(0,c.K2)(P,"stateDomId");var G=(0,c.K2)((t,e,s,i,n,r,o,l)=>{c.Rm.trace("items",e),e.forEach(e=>{switch(e.stmt){case d:case y:X(t,e,s,i,n,r,o,l);break;case p:{X(t,e.state1,s,i,n,r,o,l),X(t,e.state2,s,i,n,r,o,l);const c={id:"edge"+Y,start:e.state1.id,end:e.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:m,labelStyle:"",label:a.Y2.sanitizeText(e.description??"",(0,a.D7)()),arrowheadStyle:f,labelpos:"c",labelType:S,thickness:_,classes:x,look:o};n.push(c),Y++}}})},"setupDoc"),j=(0,c.K2)((t,e="TB")=>{let s=e;if(t.doc)for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s},"getDir");function z(t,e,s){if(!e.id||""===e.id||""===e.id)return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(t=>{const i=s.get(t);i&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...i.styles])}));const i=t.find(t=>t.id===e.id);i?Object.assign(i,e):t.push(e)}function M(t){return t?.classes?.join(" ")??""}function U(t){return t?.styles??[]}(0,c.K2)(z,"insertOrUpdateNode"),(0,c.K2)(M,"getClassesFromDbInfo"),(0,c.K2)(U,"getStylesFromDbInfo");var X=(0,c.K2)((t,e,s,i,n,r,o,l)=>{const h=e.id,d=s.get(h),u=M(d),p=U(d),D=(0,a.D7)();if(c.Rm.info("dataFetcher parsedItem",e,d,p),"root"!==h){let s=k;!0===e.start?s="stateStart":!1===e.start&&(s="stateEnd"),e.type!==y&&(s=e.type),F.get(h)||F.set(h,{id:h,shape:s,description:a.Y2.sanitizeText(h,D),cssClasses:`${u} ${C}`,cssStyles:p});const d=F.get(h);e.description&&(Array.isArray(d.description)?(d.shape=b,d.description.push(e.description)):d.description?.length&&d.description.length>0?(d.shape=b,d.description===h?d.description=[e.description]:d.description=[d.description,e.description]):(d.shape=k,d.description=e.description),d.description=a.Y2.sanitizeTextOrArray(d.description,D)),1===d.description?.length&&d.shape===b&&("group"===d.type?d.shape=E:d.shape=k),!d.type&&e.doc&&(c.Rm.info("Setting cluster for XCX",h,j(e)),d.type="group",d.isGroup=!0,d.dir=j(e),d.shape=e.type===g?T:E,d.cssClasses=`${d.cssClasses} ${I} ${r?A:""}`);const x={labelStyle:"",shape:d.shape,label:d.description,cssClasses:d.cssClasses,cssCompiledStyles:[],cssStyles:d.cssStyles,id:h,dir:d.dir,domId:P(h,Y),type:d.type,isGroup:"group"===d.type,padding:8,rx:10,ry:10,look:o};if(x.shape===T&&(x.label=""),t&&"root"!==t.id&&(c.Rm.trace("Setting node ",h," to be child of its parent ",t.id),x.parentId=t.id),x.centerLabel=!0,e.note){const t={labelStyle:"",shape:"note",label:e.note.text,cssClasses:v,cssStyles:[],cssCompiledStyles:[],id:h+N+"-"+Y,domId:P(h,Y,w),type:d.type,isGroup:"group"===d.type,padding:D.flowchart?.padding,look:o,position:e.note.position},s=h+O,r={labelStyle:"",shape:"noteGroup",label:e.note.text,cssClasses:d.cssClasses,cssStyles:[],id:h+O,domId:P(h,Y,L),type:"group",isGroup:!0,padding:16,look:o,position:e.note.position};Y++,r.id=s,t.parentId=s,z(i,r,l),z(i,t,l),z(i,x,l);let a=h,c=t.id;"left of"===e.note.position&&(a=t.id,c=h),n.push({id:a+"-"+c,start:a,end:c,arrowhead:"none",arrowTypeEnd:"",style:m,labelStyle:"",classes:$,arrowheadStyle:f,labelpos:"c",labelType:S,thickness:_,look:o})}else z(i,x,l)}e.doc&&(c.Rm.trace("Adding nodes children "),G(e,e.doc,s,i,n,!r,o,l))},"dataFetcher"),W=(0,c.K2)(()=>{F.clear(),Y=0},"reset"),H="[*]",V="start",J="[*]",q="end",Z="color",Q="fill",tt="bgFill",et=",",st=(0,c.K2)(()=>new Map,"newClassesList"),it=(0,c.K2)(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),nt=(0,c.K2)(t=>JSON.parse(JSON.stringify(t)),"clone"),rt=class{constructor(t){this.version=t,this.nodes=[],this.edges=[],this.rootDoc=[],this.classes=st(),this.documents={root:it()},this.currentDocument=this.documents.root,this.startEndCount=0,this.dividerCnt=0,this.links=new Map,this.getAccTitle=a.iN,this.setAccTitle=a.SV,this.getAccDescription=a.m7,this.setAccDescription=a.EI,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{(0,c.K2)(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(const i of Array.isArray(t)?t:t.doc)switch(i.stmt){case d:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case p:this.addRelation(i.state1,i.state2,i.description);break;case"classDef":this.addStyleClass(i.id.trim(),i.classes);break;case"style":this.handleStyleDef(i);break;case"applyClass":this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip)}const e=this.getStates(),s=(0,a.D7)();W(),X(void 0,this.getRootDocV2(),e,this.nodes,this.edges,!0,s.look,this.classes);for(const i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(t){const e=t.id.trim().split(","),s=t.styleClass.split(",");for(const i of e){let t=this.getState(i);if(!t){const e=i.trim();this.addState(e),t=this.getState(e)}t&&(t.styles=s.map(t=>t.replace(/;/g,"")?.trim()))}}setRootDoc(t){c.Rm.info("Setting root doc",t),this.rootDoc=t,1===this.version?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,e,s){if(e.stmt===p)return this.docTranslator(t,e.state1,!0),void this.docTranslator(t,e.state2,!1);if(e.stmt===d&&(e.id===H?(e.id=t.id+(s?"_start":"_end"),e.start=s):e.id=e.id.trim()),e.stmt!==u&&e.stmt!==d||!e.doc)return;const i=[];let n=[];for(const r of e.doc)if(r.type===g){const t=nt(r);t.doc=nt(n),i.push(t),n=[]}else n.push(r);if(i.length>0&&n.length>0){const t={stmt:d,id:(0,o.$C)(),type:"divider",doc:nt(n)};i.push(nt(t)),e.doc=i}e.doc.forEach(t=>this.docTranslator(e,t,!0))}getRootDocV2(){return this.docTranslator({id:u,stmt:u},{id:u,stmt:u,doc:this.rootDoc},!0),{id:u,doc:this.rootDoc}}addState(t,e=y,s=void 0,i=void 0,n=void 0,r=void 0,o=void 0,l=void 0){const h=t?.trim();if(this.currentDocument.states.has(h)){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.doc||(t.doc=s),t.type||(t.type=e)}else c.Rm.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:d,id:h,descriptions:[],type:e,doc:s,note:n,classes:[],styles:[],textStyles:[]});if(i){c.Rm.info("Setting state description",h,i);(Array.isArray(i)?i:[i]).forEach(t=>this.addDescription(h,t.trim()))}if(n){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.note=n,t.note.text=a.Y2.sanitizeText(t.note.text,(0,a.D7)())}if(r){c.Rm.info("Setting state classes",h,r);(Array.isArray(r)?r:[r]).forEach(t=>this.setCssClass(h,t.trim()))}if(o){c.Rm.info("Setting state styles",h,o);(Array.isArray(o)?o:[o]).forEach(t=>this.setStyle(h,t.trim()))}if(l){c.Rm.info("Setting state styles",h,o);(Array.isArray(l)?l:[l]).forEach(t=>this.setTextStyle(h,t.trim()))}}clear(t){this.nodes=[],this.edges=[],this.documents={root:it()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=st(),t||(this.links=new Map,(0,a.IU)())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){c.Rm.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,e,s){this.links.set(t,{url:e,tooltip:s}),c.Rm.warn("Adding link",t,e,s)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===H?(this.startEndCount++,`${V}${this.startEndCount}`):t}startTypeIfNeeded(t="",e=y){return t===H?V:e}endIdIfNeeded(t=""){return t===J?(this.startEndCount++,`${q}${this.startEndCount}`):t}endTypeIfNeeded(t="",e=y){return t===J?q:e}addRelationObjs(t,e,s=""){const i=this.startIdIfNeeded(t.id.trim()),n=this.startTypeIfNeeded(t.id.trim(),t.type),r=this.startIdIfNeeded(e.id.trim()),o=this.startTypeIfNeeded(e.id.trim(),e.type);this.addState(i,n,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(r,o,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:a.Y2.sanitizeText(s,(0,a.D7)())})}addRelation(t,e,s){if("object"==typeof t&&"object"==typeof e)this.addRelationObjs(t,e,s);else if("string"==typeof t&&"string"==typeof e){const i=this.startIdIfNeeded(t.trim()),n=this.startTypeIfNeeded(t),r=this.endIdIfNeeded(e.trim()),o=this.endTypeIfNeeded(e);this.addState(i,n),this.addState(r,o),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:s?a.Y2.sanitizeText(s,(0,a.D7)()):void 0})}}addDescription(t,e){const s=this.currentDocument.states.get(t),i=e.startsWith(":")?e.replace(":","").trim():e;s?.descriptions?.push(a.Y2.sanitizeText(i,(0,a.D7)()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,e=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});const s=this.classes.get(t);e&&s&&e.split(et).forEach(t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(Z).exec(t)){const t=e.replace(Q,tt).replace(Z,Q);s.textStyles.push(t)}s.styles.push(e)})}getClasses(){return this.classes}setCssClass(t,e){t.split(",").forEach(t=>{let s=this.getState(t);if(!s){const e=t.trim();this.addState(e),s=this.getState(e)}s?.classes?.push(e)})}setStyle(t,e){this.getState(t)?.styles?.push(e)}setTextStyle(t,e){this.getState(t)?.textStyles?.push(e)}getDirectionStatement(){return this.rootDoc.find(t=>"dir"===t.stmt)}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){const e=this.getDirectionStatement();e?e.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){const t=(0,a.D7)();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:K(this.getRootDocV2())}}getConfig(){return(0,a.D7)().state}},ot=(0,c.K2)(t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n // line-height: 1;\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`,"getStyles")}}]); \ No newline at end of file diff --git a/user/assets/js/4802.eb66e970.js b/user/assets/js/4802.eb66e970.js new file mode 100644 index 0000000..b78051a --- /dev/null +++ b/user/assets/js/4802.eb66e970.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4802],{4802:(e,r,s)=>{s.d(r,{diagram:()=>i});var t=s(4616),a=(s(9625),s(1152),s(45),s(5164),s(8698),s(5894),s(3245),s(2387),s(92),s(3226),s(7633),s(797)),i={parser:t.Zk,get db(){return new t.u4(2)},renderer:t.q7,styles:t.tM,init:(0,a.K2)(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/user/assets/js/4981.f5ebfa9b.js b/user/assets/js/4981.f5ebfa9b.js new file mode 100644 index 0000000..de42af3 --- /dev/null +++ b/user/assets/js/4981.f5ebfa9b.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4981],{2875:(t,e,a)=>{a.d(e,{CP:()=>h,HT:()=>u,PB:()=>d,aC:()=>c,lC:()=>l,m:()=>o,tk:()=>s});var n=a(7633),i=a(797),r=a(6750),s=(0,i.K2)((t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),e.rx&&a.attr("rx",e.rx),e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const n in e.attrs)a.attr(n,e.attrs[n]);return e.class&&a.attr("class",e.class),a},"drawRect"),l=(0,i.K2)((t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};s(t,a).lower()},"drawBackgroundRect"),o=(0,i.K2)((t,e)=>{const a=e.text.replace(n.H1," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),e.class&&i.attr("class",e.class);const r=i.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(a),i},"drawText"),c=(0,i.K2)((t,e,a,n)=>{const i=t.append("image");i.attr("x",e),i.attr("y",a);const s=(0,r.J)(n);i.attr("xlink:href",s)},"drawImage"),h=(0,i.K2)((t,e,a,n)=>{const i=t.append("use");i.attr("x",e),i.attr("y",a);const s=(0,r.J)(n);i.attr("xlink:href",`#${s}`)},"drawEmbeddedImage"),d=(0,i.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),u=(0,i.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},4981:(t,e,a)=>{a.d(e,{diagram:()=>Pt});var n=a(2875),i=a(3226),r=a(7633),s=a(797),l=a(451),o=a(6750),h=function(){var t=(0,s.K2)(function(t,e,a,n){for(a=a||{},n=t.length;n--;a[t[n]]=e);return a},"o"),e=[1,24],a=[1,25],n=[1,26],i=[1,27],r=[1,28],l=[1,63],o=[1,64],h=[1,65],d=[1,66],u=[1,67],p=[1,68],y=[1,69],g=[1,29],f=[1,30],b=[1,31],x=[1,32],_=[1,33],m=[1,34],E=[1,35],S=[1,36],A=[1,37],C=[1,38],w=[1,39],k=[1,40],O=[1,41],T=[1,42],v=[1,43],R=[1,44],D=[1,45],N=[1,46],P=[1,47],B=[1,48],I=[1,50],M=[1,51],j=[1,52],K=[1,53],L=[1,54],Y=[1,55],U=[1,56],F=[1,57],X=[1,58],z=[1,59],W=[1,60],Q=[14,42],$=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],H=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],q=[1,82],V=[1,83],G=[1,84],J=[1,85],Z=[12,14,42],tt=[12,14,33,42],et=[12,14,33,42,76,77,79,80],at=[12,33],nt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],it={trace:(0,s.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:(0,s.K2)(function(t,e,a,n,i,r,s){var l=r.length-1;switch(i){case 3:n.setDirection("TB");break;case 4:n.setDirection("BT");break;case 5:n.setDirection("RL");break;case 6:n.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:n.setC4Type(r[l-3]);break;case 19:n.setTitle(r[l].substring(6)),this.$=r[l].substring(6);break;case 20:n.setAccDescription(r[l].substring(15)),this.$=r[l].substring(15);break;case 21:this.$=r[l].trim(),n.setTitle(this.$);break;case 22:case 23:this.$=r[l].trim(),n.setAccDescription(this.$);break;case 28:r[l].splice(2,0,"ENTERPRISE"),n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 29:r[l].splice(2,0,"SYSTEM"),n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 30:n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 31:r[l].splice(2,0,"CONTAINER"),n.addContainerBoundary(...r[l]),this.$=r[l];break;case 32:n.addDeploymentNode("node",...r[l]),this.$=r[l];break;case 33:n.addDeploymentNode("nodeL",...r[l]),this.$=r[l];break;case 34:n.addDeploymentNode("nodeR",...r[l]),this.$=r[l];break;case 35:n.popBoundaryParseStack();break;case 39:n.addPersonOrSystem("person",...r[l]),this.$=r[l];break;case 40:n.addPersonOrSystem("external_person",...r[l]),this.$=r[l];break;case 41:n.addPersonOrSystem("system",...r[l]),this.$=r[l];break;case 42:n.addPersonOrSystem("system_db",...r[l]),this.$=r[l];break;case 43:n.addPersonOrSystem("system_queue",...r[l]),this.$=r[l];break;case 44:n.addPersonOrSystem("external_system",...r[l]),this.$=r[l];break;case 45:n.addPersonOrSystem("external_system_db",...r[l]),this.$=r[l];break;case 46:n.addPersonOrSystem("external_system_queue",...r[l]),this.$=r[l];break;case 47:n.addContainer("container",...r[l]),this.$=r[l];break;case 48:n.addContainer("container_db",...r[l]),this.$=r[l];break;case 49:n.addContainer("container_queue",...r[l]),this.$=r[l];break;case 50:n.addContainer("external_container",...r[l]),this.$=r[l];break;case 51:n.addContainer("external_container_db",...r[l]),this.$=r[l];break;case 52:n.addContainer("external_container_queue",...r[l]),this.$=r[l];break;case 53:n.addComponent("component",...r[l]),this.$=r[l];break;case 54:n.addComponent("component_db",...r[l]),this.$=r[l];break;case 55:n.addComponent("component_queue",...r[l]),this.$=r[l];break;case 56:n.addComponent("external_component",...r[l]),this.$=r[l];break;case 57:n.addComponent("external_component_db",...r[l]),this.$=r[l];break;case 58:n.addComponent("external_component_queue",...r[l]),this.$=r[l];break;case 60:n.addRel("rel",...r[l]),this.$=r[l];break;case 61:n.addRel("birel",...r[l]),this.$=r[l];break;case 62:n.addRel("rel_u",...r[l]),this.$=r[l];break;case 63:n.addRel("rel_d",...r[l]),this.$=r[l];break;case 64:n.addRel("rel_l",...r[l]),this.$=r[l];break;case 65:n.addRel("rel_r",...r[l]),this.$=r[l];break;case 66:n.addRel("rel_b",...r[l]),this.$=r[l];break;case 67:r[l].splice(0,1),n.addRel("rel",...r[l]),this.$=r[l];break;case 68:n.updateElStyle("update_el_style",...r[l]),this.$=r[l];break;case 69:n.updateRelStyle("update_rel_style",...r[l]),this.$=r[l];break;case 70:n.updateLayoutConfig("update_layout_config",...r[l]),this.$=r[l];break;case 71:this.$=[r[l]];break;case 72:r[l].unshift(r[l-1]),this.$=r[l];break;case 73:case 75:this.$=r[l].trim();break;case 74:let t={};t[r[l-1].trim()]=r[l].trim(),this.$=t;break;case 76:this.$=""}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:70,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:71,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:72,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:73,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{14:[1,74]},t(Q,[2,13],{43:23,29:49,30:61,32:62,20:75,34:l,36:o,37:h,38:d,39:u,40:p,41:y,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W}),t(Q,[2,14]),t($,[2,16],{12:[1,76]}),t(Q,[2,36],{12:[1,77]}),t(H,[2,19]),t(H,[2,20]),{25:[1,78]},{27:[1,79]},t(H,[2,23]),{35:80,75:81,76:q,77:V,79:G,80:J},{35:86,75:81,76:q,77:V,79:G,80:J},{35:87,75:81,76:q,77:V,79:G,80:J},{35:88,75:81,76:q,77:V,79:G,80:J},{35:89,75:81,76:q,77:V,79:G,80:J},{35:90,75:81,76:q,77:V,79:G,80:J},{35:91,75:81,76:q,77:V,79:G,80:J},{35:92,75:81,76:q,77:V,79:G,80:J},{35:93,75:81,76:q,77:V,79:G,80:J},{35:94,75:81,76:q,77:V,79:G,80:J},{35:95,75:81,76:q,77:V,79:G,80:J},{35:96,75:81,76:q,77:V,79:G,80:J},{35:97,75:81,76:q,77:V,79:G,80:J},{35:98,75:81,76:q,77:V,79:G,80:J},{35:99,75:81,76:q,77:V,79:G,80:J},{35:100,75:81,76:q,77:V,79:G,80:J},{35:101,75:81,76:q,77:V,79:G,80:J},{35:102,75:81,76:q,77:V,79:G,80:J},{35:103,75:81,76:q,77:V,79:G,80:J},{35:104,75:81,76:q,77:V,79:G,80:J},t(Z,[2,59]),{35:105,75:81,76:q,77:V,79:G,80:J},{35:106,75:81,76:q,77:V,79:G,80:J},{35:107,75:81,76:q,77:V,79:G,80:J},{35:108,75:81,76:q,77:V,79:G,80:J},{35:109,75:81,76:q,77:V,79:G,80:J},{35:110,75:81,76:q,77:V,79:G,80:J},{35:111,75:81,76:q,77:V,79:G,80:J},{35:112,75:81,76:q,77:V,79:G,80:J},{35:113,75:81,76:q,77:V,79:G,80:J},{35:114,75:81,76:q,77:V,79:G,80:J},{35:115,75:81,76:q,77:V,79:G,80:J},{20:116,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{12:[1,118],33:[1,117]},{35:119,75:81,76:q,77:V,79:G,80:J},{35:120,75:81,76:q,77:V,79:G,80:J},{35:121,75:81,76:q,77:V,79:G,80:J},{35:122,75:81,76:q,77:V,79:G,80:J},{35:123,75:81,76:q,77:V,79:G,80:J},{35:124,75:81,76:q,77:V,79:G,80:J},{35:125,75:81,76:q,77:V,79:G,80:J},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(Q,[2,15]),t($,[2,17],{21:22,19:130,22:e,23:a,24:n,26:i,28:r}),t(Q,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:a,24:n,26:i,28:r,34:l,36:o,37:h,38:d,39:u,40:p,41:y,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W}),t(H,[2,21]),t(H,[2,22]),t(Z,[2,39]),t(tt,[2,71],{75:81,35:132,76:q,77:V,79:G,80:J}),t(et,[2,73]),{78:[1,133]},t(et,[2,75]),t(et,[2,76]),t(Z,[2,40]),t(Z,[2,41]),t(Z,[2,42]),t(Z,[2,43]),t(Z,[2,44]),t(Z,[2,45]),t(Z,[2,46]),t(Z,[2,47]),t(Z,[2,48]),t(Z,[2,49]),t(Z,[2,50]),t(Z,[2,51]),t(Z,[2,52]),t(Z,[2,53]),t(Z,[2,54]),t(Z,[2,55]),t(Z,[2,56]),t(Z,[2,57]),t(Z,[2,58]),t(Z,[2,60]),t(Z,[2,61]),t(Z,[2,62]),t(Z,[2,63]),t(Z,[2,64]),t(Z,[2,65]),t(Z,[2,66]),t(Z,[2,67]),t(Z,[2,68]),t(Z,[2,69]),t(Z,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(at,[2,28]),t(at,[2,29]),t(at,[2,30]),t(at,[2,31]),t(at,[2,32]),t(at,[2,33]),t(at,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t($,[2,18]),t(Q,[2,38]),t(tt,[2,72]),t(et,[2,74]),t(Z,[2,24]),t(Z,[2,35]),t(nt,[2,25]),t(nt,[2,26],{12:[1,138]}),t(nt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:(0,s.K2)(function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)},"parseError"),parse:(0,s.K2)(function(t){var e=this,a=[0],n=[],i=[null],r=[],l=this.table,o="",c=0,h=0,d=0,u=r.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var f=p.yylloc;r.push(f);var b=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=n.pop()||p.lex()||1)&&(t instanceof Array&&(t=(n=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)(function(t){a.length=a.length-2*t,i.length=i.length-t,r.length=r.length-t},"popStack"),(0,s.K2)(x,"lex");for(var _,m,E,S,A,C,w,k,O,T={};;){if(E=a[a.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==_&&(_=x()),S=l[E]&&l[E][_]),void 0===S||!S.length||!S[0]){var v="";for(C in O=[],l[E])this.terminals_[C]&&C>2&&O.push("'"+this.terminals_[C]+"'");v=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+O.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(v,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:f,expected:O})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(S[0]){case 1:a.push(_),i.push(p.yytext),r.push(p.yylloc),a.push(S[1]),_=null,m?(_=m,m=null):(h=p.yyleng,o=p.yytext,c=p.yylineno,f=p.yylloc,d>0&&d--);break;case 2:if(w=this.productions_[S[1]][1],T.$=i[i.length-w],T._$={first_line:r[r.length-(w||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(w||1)].first_column,last_column:r[r.length-1].last_column},b&&(T._$.range=[r[r.length-(w||1)].range[0],r[r.length-1].range[1]]),void 0!==(A=this.performAction.apply(T,[o,h,c,y.yy,S[1],i,r].concat(u))))return A;w&&(a=a.slice(0,-1*w*2),i=i.slice(0,-1*w),r=r.slice(0,-1*w)),a.push(this.productions_[S[1]][0]),i.push(T.$),r.push(T._$),k=l[a[a.length-2]][a[a.length-1]],a.push(k);break;case 3:return!0}}return!0},"parse")},rt=function(){return{EOF:1,parseError:(0,s.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,s.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,s.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,s.K2)(function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===n.length?this.yylloc.first_column:0)+n[n.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,s.K2)(function(){return this._more=!0,this},"more"),reject:(0,s.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,s.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,s.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,s.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,s.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,s.K2)(function(t,e){var a,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var r in i)this[r]=i[r];return!1}return!1},"test_match"),next:(0,s.K2)(function(){if(this.done)return this.EOF;var t,e,a,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),r=0;re[0].length)){if(e=a,n=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,i[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,s.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,s.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,s.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,s.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,s.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,s.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,s.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,s.K2)(function(t,e,a,n){switch(a){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 73:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 16:case 70:break;case 14:c;break;case 15:return 12;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:case 53:return this.begin("rel_u"),66;case 54:case 55:return this.begin("rel_d"),67;case 56:case 57:return this.begin("rel_l"),68;case 58:case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:case 79:this.popState(),this.popState();break;case 69:case 71:return 80;case 72:this.begin("string");break;case 74:case 80:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}}}();function st(){this.yy={}}return it.lexer=rt,(0,s.K2)(st,"Parser"),st.prototype=it,it.Parser=st,new st}();h.parser=h;var d,u=h,p=[],y=[""],g="global",f="",b=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],x=[],_="",m=!1,E=4,S=2,A=(0,s.K2)(function(){return d},"getC4Type"),C=(0,s.K2)(function(t){let e=(0,r.jZ)(t,(0,r.D7)());d=e},"setC4Type"),w=(0,s.K2)(function(t,e,a,n,i,r,s,l,o){if(null==t||null==e||null==a||null==n)return;let c={};const h=x.find(t=>t.from===e&&t.to===a);if(h?c=h:x.push(c),c.type=t,c.from=e,c.to=a,c.label={text:n},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.sprite=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];c[t]=e}else c.tags=l;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.link=o;c.wrap=H()},"addRel"),k=(0,s.K2)(function(t,e,a,n,i,r,s){if(null===e||null===a)return;let l={};const o=p.find(t=>t.alias===e);if(o&&e===o.alias?l=o:(l.alias=e,p.push(l)),l.label=null==a?{text:""}:{text:a},null==n)l.descr={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];l[t]={text:e}}else l.descr={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.sprite=i;if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=e}else l.tags=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=g,l.wrap=H()},"addPersonOrSystem"),O=(0,s.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=p.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,p.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.techn={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.techn={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.sprite=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=H(),o.typeC4Shape={text:t},o.parentBoundary=g},"addContainer"),T=(0,s.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=p.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,p.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.techn={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.techn={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.sprite=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=H(),o.typeC4Shape={text:t},o.parentBoundary=g},"addComponent"),v=(0,s.K2)(function(t,e,a,n,i){if(null===t||null===e)return;let r={};const s=b.find(e=>e.alias===t);if(s&&t===s.alias?r=s:(r.alias=t,b.push(r)),r.label=null==e?{text:""}:{text:e},null==a)r.type={text:"system"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];r[t]={text:e}}else r.type={text:a};if("object"==typeof n){let[t,e]=Object.entries(n)[0];r[t]=e}else r.tags=n;if("object"==typeof i){let[t,e]=Object.entries(i)[0];r[t]=e}else r.link=i;r.parentBoundary=g,r.wrap=H(),f=g,g=t,y.push(f)},"addPersonOrSystemBoundary"),R=(0,s.K2)(function(t,e,a,n,i){if(null===t||null===e)return;let r={};const s=b.find(e=>e.alias===t);if(s&&t===s.alias?r=s:(r.alias=t,b.push(r)),r.label=null==e?{text:""}:{text:e},null==a)r.type={text:"container"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];r[t]={text:e}}else r.type={text:a};if("object"==typeof n){let[t,e]=Object.entries(n)[0];r[t]=e}else r.tags=n;if("object"==typeof i){let[t,e]=Object.entries(i)[0];r[t]=e}else r.link=i;r.parentBoundary=g,r.wrap=H(),f=g,g=t,y.push(f)},"addContainerBoundary"),D=(0,s.K2)(function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=b.find(t=>t.alias===e);if(c&&e===c.alias?o=c:(o.alias=e,b.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.type={text:"node"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.type={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.nodeType=t,o.parentBoundary=g,o.wrap=H(),f=g,g=e,y.push(f)},"addDeploymentNode"),N=(0,s.K2)(function(){g=f,y.pop(),f=y.pop(),y.push(f)},"popBoundaryParseStack"),P=(0,s.K2)(function(t,e,a,n,i,r,s,l,o,c,h){let d=p.find(t=>t.alias===e);if(void 0!==d||(d=b.find(t=>t.alias===e),void 0!==d)){if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];d[t]=e}else d.bgColor=a;if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];d[t]=e}else d.fontColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];d[t]=e}else d.borderColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];d[t]=e}else d.shadowing=r;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];d[t]=e}else d.shape=s;if(null!=l)if("object"==typeof l){let[t,e]=Object.entries(l)[0];d[t]=e}else d.sprite=l;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];d[t]=e}else d.techn=o;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];d[t]=e}else d.legendText=c;if(null!=h)if("object"==typeof h){let[t,e]=Object.entries(h)[0];d[t]=e}else d.legendSprite=h}},"updateElStyle"),B=(0,s.K2)(function(t,e,a,n,i,r,s){const l=x.find(t=>t.from===e&&t.to===a);if(void 0!==l){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];l[t]=e}else l.textColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.lineColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=parseInt(e)}else l.offsetX=parseInt(r);if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=parseInt(e)}else l.offsetY=parseInt(s)}},"updateRelStyle"),I=(0,s.K2)(function(t,e,a){let n=E,i=S;if("object"==typeof e){const t=Object.values(e)[0];n=parseInt(t)}else n=parseInt(e);if("object"==typeof a){const t=Object.values(a)[0];i=parseInt(t)}else i=parseInt(a);n>=1&&(E=n),i>=1&&(S=i)},"updateLayoutConfig"),M=(0,s.K2)(function(){return E},"getC4ShapeInRow"),j=(0,s.K2)(function(){return S},"getC4BoundaryInRow"),K=(0,s.K2)(function(){return g},"getCurrentBoundaryParse"),L=(0,s.K2)(function(){return f},"getParentBoundaryParse"),Y=(0,s.K2)(function(t){return null==t?p:p.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),U=(0,s.K2)(function(t){return p.find(e=>e.alias===t)},"getC4Shape"),F=(0,s.K2)(function(t){return Object.keys(Y(t))},"getC4ShapeKeys"),X=(0,s.K2)(function(t){return null==t?b:b.filter(e=>e.parentBoundary===t)},"getBoundaries"),z=X,W=(0,s.K2)(function(){return x},"getRels"),Q=(0,s.K2)(function(){return _},"getTitle"),$=(0,s.K2)(function(t){m=t},"setWrap"),H=(0,s.K2)(function(){return m},"autoWrap"),q=(0,s.K2)(function(){p=[],b=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],f="",g="global",y=[""],x=[],y=[""],_="",m=!1,E=4,S=2},"clear"),V=(0,s.K2)(function(t){let e=(0,r.jZ)(t,(0,r.D7)());_=e},"setTitle"),G={addPersonOrSystem:k,addPersonOrSystemBoundary:v,addContainer:O,addContainerBoundary:R,addComponent:T,addDeploymentNode:D,popBoundaryParseStack:N,addRel:w,updateElStyle:P,updateRelStyle:B,updateLayoutConfig:I,autoWrap:H,setWrap:$,getC4ShapeArray:Y,getC4Shape:U,getC4ShapeKeys:F,getBoundaries:X,getBoundarys:z,getCurrentBoundaryParse:K,getParentBoundaryParse:L,getRels:W,getTitle:Q,getC4Type:A,getC4ShapeInRow:M,getC4BoundaryInRow:j,setAccTitle:r.SV,getAccTitle:r.iN,getAccDescription:r.m7,setAccDescription:r.EI,getConfig:(0,s.K2)(()=>(0,r.D7)().c4,"getConfig"),clear:q,LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:V,setC4Type:C},J=(0,s.K2)(function(t,e){return(0,n.tk)(t,e)},"drawRect"),Z=(0,s.K2)(function(t,e,a,n,i,r){const s=t.append("image");s.attr("width",e),s.attr("height",a),s.attr("x",n),s.attr("y",i);let l=r.startsWith("data:image/png;base64")?r:(0,o.J)(r);s.attr("xlink:href",l)},"drawImage"),tt=(0,s.K2)((t,e,a)=>{const n=t.append("g");let i=0;for(let r of e){let t=r.textColor?r.textColor:"#444444",e=r.lineColor?r.lineColor:"#444444",s=r.offsetX?parseInt(r.offsetX):0,l=r.offsetY?parseInt(r.offsetY):0,o="";if(0===i){let t=n.append("line");t.attr("x1",r.startPoint.x),t.attr("y1",r.startPoint.y),t.attr("x2",r.endPoint.x),t.attr("y2",r.endPoint.y),t.attr("stroke-width","1"),t.attr("stroke",e),t.style("fill","none"),"rel_b"!==r.type&&t.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+o+"#arrowend)"),i=-1}else{let t=n.append("path");t.attr("fill","none").attr("stroke-width","1").attr("stroke",e).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",r.startPoint.x).replaceAll("starty",r.startPoint.y).replaceAll("controlx",r.startPoint.x+(r.endPoint.x-r.startPoint.x)/2-(r.endPoint.x-r.startPoint.x)/4).replaceAll("controly",r.startPoint.y+(r.endPoint.y-r.startPoint.y)/2).replaceAll("stopx",r.endPoint.x).replaceAll("stopy",r.endPoint.y)),"rel_b"!==r.type&&t.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+o+"#arrowend)")}let c=a.messageFont();ut(a)(r.label.text,n,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+s,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+l,r.label.width,r.label.height,{fill:t},c),r.techn&&""!==r.techn.text&&(c=a.messageFont(),ut(a)("["+r.techn.text+"]",n,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+s,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+a.messageFontSize+5+l,Math.max(r.label.width,r.techn.width),r.techn.height,{fill:t,"font-style":"italic"},c))}},"drawRels"),et=(0,s.K2)(function(t,e,a){const n=t.append("g");let i=e.bgColor?e.bgColor:"none",r=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let o={x:e.x,y:e.y,fill:i,stroke:r,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};J(n,o);let c=a.boundaryFont();c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=s,ut(a)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},c),e.type&&""!==e.type.text&&(c=a.boundaryFont(),c.fontColor=s,ut(a)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},c)),e.descr&&""!==e.descr.text&&(c=a.boundaryFont(),c.fontSize=c.fontSize-2,c.fontColor=s,ut(a)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},c))},"drawBoundary"),at=(0,s.K2)(function(t,e,a){let i=e.bgColor?e.bgColor:a[e.typeC4Shape.text+"_bg_color"],r=e.borderColor?e.borderColor:a[e.typeC4Shape.text+"_border_color"],s=e.fontColor?e.fontColor:"#FFFFFF",l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="}const o=t.append("g");o.attr("class","person-man");const c=(0,n.PB)();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":c.x=e.x,c.y=e.y,c.fill=i,c.width=e.width,c.height=e.height,c.stroke=r,c.rx=2.5,c.ry=2.5,c.attrs={"stroke-width":.5},J(o,c);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2))}let h=dt(a,e.typeC4Shape.text);switch(o.append("text").attr("fill",s).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":Z(o,48,48,e.x+e.width/2-24,e.y+e.image.Y,l)}let d=a[e.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=s,ut(a)(e.label.text,o,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},d),d=a[e.typeC4Shape.text+"Font"](),d.fontColor=s,e.techn&&""!==e.techn?.text?ut(a)(e.techn.text,o,e.x,e.y+e.techn.Y,e.width,e.height,{fill:s,"font-style":"italic"},d):e.type&&""!==e.type.text&&ut(a)(e.type.text,o,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,"font-style":"italic"},d),e.descr&&""!==e.descr.text&&(d=a.personFont(),d.fontColor=s,ut(a)(e.descr.text,o,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},d)),e.height},"drawC4Shape"),nt=(0,s.K2)(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),it=(0,s.K2)(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),rt=(0,s.K2)(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),st=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),lt=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),ot=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),ct=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),ht=(0,s.K2)(function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),dt=(0,s.K2)((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),ut=function(){function t(t,e,a,i,r,s,l){n(e.append("text").attr("x",a+r/2).attr("y",i+s/2+5).style("text-anchor","middle").text(t),l)}function e(t,e,a,i,s,l,o,c){const{fontSize:h,fontFamily:d,fontWeight:u}=c,p=t.split(r.Y2.lineBreakRegex);for(let r=0;r=this.data.widthLimit||a>=this.data.widthLimit||this.nextData.cnt>ft)&&(e=this.nextData.startx+t.margin+xt.nextLinePaddingX,n=this.nextData.stopy+2*t.margin,this.nextData.stopx=a=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=n+t.height,this.nextData.cnt=1),t.x=e,t.y=n,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",n,Math.min),this.updateVal(this.data,"stopx",a,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",n,Math.min),this.updateVal(this.nextData,"stopx",a,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},mt(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},mt=(0,s.K2)(function(t){(0,r.hH)(xt,t),t.fontFamily&&(xt.personFontFamily=xt.systemFontFamily=xt.messageFontFamily=t.fontFamily),t.fontSize&&(xt.personFontSize=xt.systemFontSize=xt.messageFontSize=t.fontSize),t.fontWeight&&(xt.personFontWeight=xt.systemFontWeight=xt.messageFontWeight=t.fontWeight)},"setConf"),Et=(0,s.K2)((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),St=(0,s.K2)(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),At=(0,s.K2)(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");function Ct(t,e,a,n,s){if(!e[t].width)if(a)e[t].text=(0,i.bH)(e[t].text,s,n),e[t].textLines=e[t].text.split(r.Y2.lineBreakRegex).length,e[t].width=s,e[t].height=(0,i.ru)(e[t].text,n);else{let a=e[t].text.split(r.Y2.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(const r of a)e[t].width=Math.max((0,i.Un)(r,n),e[t].width),s=(0,i.ru)(r,n),e[t].height=e[t].height+s}}(0,s.K2)(Ct,"calcC4ShapeTextWH");var wt=(0,s.K2)(function(t,e,a){e.x=a.data.startx,e.y=a.data.starty,e.width=a.data.stopx-a.data.startx,e.height=a.data.stopy-a.data.starty,e.label.y=xt.c4ShapeMargin-35;let n=e.wrap&&xt.wrap,r=St(xt);r.fontSize=r.fontSize+2,r.fontWeight="bold",Ct("label",e,n,r,(0,i.Un)(e.label.text,r)),pt.drawBoundary(t,e,xt)},"drawBoundary"),kt=(0,s.K2)(function(t,e,a,n){let r=0;for(const s of n){r=0;const n=a[s];let l=Et(xt,n.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,n.typeC4Shape.width=(0,i.Un)("\xab"+n.typeC4Shape.text+"\xbb",l),n.typeC4Shape.height=l.fontSize+2,n.typeC4Shape.Y=xt.c4ShapePadding,r=n.typeC4Shape.Y+n.typeC4Shape.height-4,n.image={width:0,height:0,Y:0},n.typeC4Shape.text){case"person":case"external_person":n.image.width=48,n.image.height=48,n.image.Y=r,r=n.image.Y+n.image.height}n.sprite&&(n.image.width=48,n.image.height=48,n.image.Y=r,r=n.image.Y+n.image.height);let o=n.wrap&&xt.wrap,c=xt.width-2*xt.c4ShapePadding,h=Et(xt,n.typeC4Shape.text);if(h.fontSize=h.fontSize+2,h.fontWeight="bold",Ct("label",n,o,h,c),n.label.Y=r+8,r=n.label.Y+n.label.height,n.type&&""!==n.type.text){n.type.text="["+n.type.text+"]",Ct("type",n,o,Et(xt,n.typeC4Shape.text),c),n.type.Y=r+5,r=n.type.Y+n.type.height}else if(n.techn&&""!==n.techn.text){n.techn.text="["+n.techn.text+"]",Ct("techn",n,o,Et(xt,n.techn.text),c),n.techn.Y=r+5,r=n.techn.Y+n.techn.height}let d=r,u=n.label.width;if(n.descr&&""!==n.descr.text){Ct("descr",n,o,Et(xt,n.typeC4Shape.text),c),n.descr.Y=r+20,r=n.descr.Y+n.descr.height,u=Math.max(n.label.width,n.descr.width),d=r-5*n.descr.textLines}u+=xt.c4ShapePadding,n.width=Math.max(n.width||xt.width,u,xt.width),n.height=Math.max(n.height||xt.height,d,xt.height),n.margin=n.margin||xt.c4ShapeMargin,t.insert(n),pt.drawC4Shape(e,n,xt)}t.bumpLastMargin(xt.c4ShapeMargin)},"drawC4ShapeArray"),Ot=class{static{(0,s.K2)(this,"Point")}constructor(t,e){this.x=t,this.y=e}},Tt=(0,s.K2)(function(t,e){let a=t.x,n=t.y,i=e.x,r=e.y,s=a+t.width/2,l=n+t.height/2,o=Math.abs(a-i),c=Math.abs(n-r),h=c/o,d=t.height/t.width,u=null;return n==r&&ai?u=new Ot(a,l):a==i&&nr&&(u=new Ot(s,n)),a>i&&n=h?new Ot(a,l+h*t.width/2):new Ot(s-o/c*t.height/2,n+t.height):a=h?new Ot(a+t.width,l+h*t.width/2):new Ot(s+o/c*t.height/2,n+t.height):ar?u=d>=h?new Ot(a+t.width,l-h*t.width/2):new Ot(s+t.height/2*o/c,n):a>i&&n>r&&(u=d>=h?new Ot(a,l-t.width/2*h):new Ot(s-t.height/2*o/c,n)),u},"getIntersectPoint"),vt=(0,s.K2)(function(t,e){let a={x:0,y:0};a.x=e.x+e.width/2,a.y=e.y+e.height/2;let n=Tt(t,a);return a.x=t.x+t.width/2,a.y=t.y+t.height/2,{startPoint:n,endPoint:Tt(e,a)}},"getIntersectPoints"),Rt=(0,s.K2)(function(t,e,a,n){let r=0;for(let s of e){r+=1;let t=s.wrap&&xt.wrap,e=At(xt);"C4Dynamic"===n.db.getC4Type()&&(s.label.text=r+": "+s.label.text);let l=(0,i.Un)(s.label.text,e);Ct("label",s,t,e,l),s.techn&&""!==s.techn.text&&(l=(0,i.Un)(s.techn.text,e),Ct("techn",s,t,e,l)),s.descr&&""!==s.descr.text&&(l=(0,i.Un)(s.descr.text,e),Ct("descr",s,t,e,l));let o=a(s.from),c=a(s.to),h=vt(o,c);s.startPoint=h.startPoint,s.endPoint=h.endPoint}pt.drawRels(t,e,xt)},"drawRels");function Dt(t,e,a,n,i){let r=new _t(i);r.data.widthLimit=a.data.widthLimit/Math.min(bt,n.length);for(let[s,l]of n.entries()){let n=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=n,n=l.image.Y+l.image.height);let o=l.wrap&&xt.wrap,c=St(xt);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",Ct("label",l,o,c,r.data.widthLimit),l.label.Y=n+8,n=l.label.Y+l.label.height,l.type&&""!==l.type.text){l.type.text="["+l.type.text+"]",Ct("type",l,o,St(xt),r.data.widthLimit),l.type.Y=n+5,n=l.type.Y+l.type.height}if(l.descr&&""!==l.descr.text){let t=St(xt);t.fontSize=t.fontSize-2,Ct("descr",l,o,t,r.data.widthLimit),l.descr.Y=n+20,n=l.descr.Y+l.descr.height}if(0==s||s%bt===0){let t=a.data.startx+xt.diagramMarginX,e=a.data.stopy+xt.diagramMarginY+n;r.setData(t,t,e,e)}else{let t=r.data.stopx!==r.data.startx?r.data.stopx+xt.diagramMarginX:r.data.startx,e=r.data.starty;r.setData(t,t,e,e)}r.name=l.alias;let h=i.db.getC4ShapeArray(l.alias),d=i.db.getC4ShapeKeys(l.alias);d.length>0&&kt(r,t,h,d),e=l.alias;let u=i.db.getBoundaries(e);u.length>0&&Dt(t,e,r,u,i),"global"!==l.alias&&wt(t,l,r),a.data.stopy=Math.max(r.data.stopy+xt.c4ShapeMargin,a.data.stopy),a.data.stopx=Math.max(r.data.stopx+xt.c4ShapeMargin,a.data.stopx),yt=Math.max(yt,a.data.stopx),gt=Math.max(gt,a.data.stopy)}}(0,s.K2)(Dt,"drawInsideBoundary");var Nt={drawPersonOrSystemArray:kt,drawBoundary:wt,setConf:mt,draw:(0,s.K2)(function(t,e,a,n){xt=(0,r.D7)().c4;const i=(0,r.D7)().securityLevel;let o;"sandbox"===i&&(o=(0,l.Ltv)("#i"+e));const c="sandbox"===i?(0,l.Ltv)(o.nodes()[0].contentDocument.body):(0,l.Ltv)("body");let h=n.db;n.db.setWrap(xt.wrap),ft=h.getC4ShapeInRow(),bt=h.getC4BoundaryInRow(),s.Rm.debug(`C:${JSON.stringify(xt,null,2)}`);const d="sandbox"===i?c.select(`[id="${e}"]`):(0,l.Ltv)(`[id="${e}"]`);pt.insertComputerIcon(d),pt.insertDatabaseIcon(d),pt.insertClockIcon(d);let u=new _t(n);u.setData(xt.diagramMarginX,xt.diagramMarginX,xt.diagramMarginY,xt.diagramMarginY),u.data.widthLimit=screen.availWidth,yt=xt.diagramMarginX,gt=xt.diagramMarginY;const p=n.db.getTitle();Dt(d,"",u,n.db.getBoundaries(""),n),pt.insertArrowHead(d),pt.insertArrowEnd(d),pt.insertArrowCrossHead(d),pt.insertArrowFilledHead(d),Rt(d,n.db.getRels(),n.db.getC4Shape,n),u.data.stopx=yt,u.data.stopy=gt;const y=u.data;let g=y.stopy-y.starty+2*xt.diagramMarginY;const f=y.stopx-y.startx+2*xt.diagramMarginX;p&&d.append("text").text(p).attr("x",(y.stopx-y.startx)/2-4*xt.diagramMarginX).attr("y",y.starty+xt.diagramMarginY),(0,r.a$)(d,g,f,xt.useMaxWidth);const b=p?60:0;d.attr("viewBox",y.startx-xt.diagramMarginX+" -"+(xt.diagramMarginY+b)+" "+f+" "+(g+b)),s.Rm.debug("models:",y)},"draw")},Pt={parser:u,db:G,renderer:Nt,styles:(0,s.K2)(t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,"getStyles"),init:(0,s.K2)(({c4:t,wrap:e})=>{Nt.setConf(t),G.setWrap(e)},"init")}}}]); \ No newline at end of file diff --git a/user/assets/js/5480.078da633.js b/user/assets/js/5480.078da633.js new file mode 100644 index 0000000..0d7bb4e --- /dev/null +++ b/user/assets/js/5480.078da633.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[5480],{2501:(t,e,n)=>{n.d(e,{o:()=>i});var i=(0,n(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},2875:(t,e,n)=>{n.d(e,{CP:()=>h,HT:()=>y,PB:()=>u,aC:()=>c,lC:()=>o,m:()=>l,tk:()=>a});var i=n(7633),s=n(797),r=n(6750),a=(0,s.K2)((t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),e.name&&n.attr("name",e.name),e.rx&&n.attr("rx",e.rx),e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for(const i in e.attrs)n.attr(i,e.attrs[i]);return e.class&&n.attr("class",e.class),n},"drawRect"),o=(0,s.K2)((t,e)=>{const n={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};a(t,n).lower()},"drawBackgroundRect"),l=(0,s.K2)((t,e)=>{const n=e.text.replace(i.H1," "),s=t.append("text");s.attr("x",e.x),s.attr("y",e.y),s.attr("class","legend"),s.style("text-anchor",e.anchor),e.class&&s.attr("class",e.class);const r=s.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(n),s},"drawText"),c=(0,s.K2)((t,e,n,i)=>{const s=t.append("image");s.attr("x",e),s.attr("y",n);const a=(0,r.J)(i);s.attr("xlink:href",a)},"drawImage"),h=(0,s.K2)((t,e,n,i)=>{const s=t.append("use");s.attr("x",e),s.attr("y",n);const a=(0,r.J)(i);s.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),u=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),y=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},5480:(t,e,n)=>{n.d(e,{diagram:()=>X});var i=n(2875),s=n(2501),r=n(7633),a=n(797),o=n(451),l=function(){var t=(0,a.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[6,8,10,11,12,14,16,17,18],n=[1,9],i=[1,10],s=[1,11],r=[1,12],o=[1,13],l=[1,14],c={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:(0,a.K2)(function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 13:i.addTask(r[o-1],r[o]),this.$="task"}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:s,16:r,17:o,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:n,12:i,14:s,16:r,17:o,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,l="",c=0,h=0,u=0,y=r.slice.call(arguments,1),p=Object.create(this.lexer),d={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(d.yy[f]=this.yy[f]);p.setInput(t,d.yy),d.yy.lexer=p,d.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var g=p.yylloc;r.push(g);var x=p.options&&p.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,a.K2)(m,"lex");for(var k,_,b,w,v,K,$,T,M,S={};;){if(b=n[n.length-1],this.defaultActions[b]?w=this.defaultActions[b]:(null==k&&(k=m()),w=o[b]&&o[b][k]),void 0===w||!w.length||!w[0]){var C="";for(K in M=[],o[b])this.terminals_[K]&&K>2&&M.push("'"+this.terminals_[K]+"'");C=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:g,expected:M})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+k);switch(w[0]){case 1:n.push(k),s.push(p.yytext),r.push(p.yylloc),n.push(w[1]),k=null,_?(k=_,_=null):(h=p.yyleng,l=p.yytext,c=p.yylineno,g=p.yylloc,u>0&&u--);break;case 2:if($=this.productions_[w[1]][1],S.$=s[s.length-$],S._$={first_line:r[r.length-($||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-($||1)].first_column,last_column:r[r.length-1].last_column},x&&(S._$.range=[r[r.length-($||1)].range[0],r[r.length-1].range[1]]),void 0!==(v=this.performAction.apply(S,[l,h,c,d.yy,w[1],s,r].concat(y))))return v;$&&(n=n.slice(0,-1*$*2),s=s.slice(0,-1*$),r=r.slice(0,-1*$)),n.push(this.productions_[w[1]][0]),s.push(S.$),r.push(S._$),T=o[n[n.length-2]][n[n.length-1]],n.push(T);break;case 3:return!0}}return!0},"parse")},h=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}}}();function u(){this.yy={}}return c.lexer=h,(0,a.K2)(u,"Parser"),u.prototype=c,c.Parser=u,new u}();l.parser=l;var c=l,h="",u=[],y=[],p=[],d=(0,a.K2)(function(){u.length=0,y.length=0,h="",p.length=0,(0,r.IU)()},"clear"),f=(0,a.K2)(function(t){h=t,u.push(t)},"addSection"),g=(0,a.K2)(function(){return u},"getSections"),x=(0,a.K2)(function(){let t=b();let e=0;for(;!t&&e<100;)t=b(),e++;return y.push(...p),y},"getTasks"),m=(0,a.K2)(function(){const t=[];y.forEach(e=>{e.people&&t.push(...e.people)});return[...new Set(t)].sort()},"updateActors"),k=(0,a.K2)(function(t,e){const n=e.substr(1).split(":");let i=0,s=[];1===n.length?(i=Number(n[0]),s=[]):(i=Number(n[0]),s=n[1].split(","));const r=s.map(t=>t.trim()),a={section:h,type:h,people:r,task:t,score:i};p.push(a)},"addTask"),_=(0,a.K2)(function(t){const e={section:h,type:h,description:t,task:t,classes:[]};y.push(e)},"addTaskOrg"),b=(0,a.K2)(function(){const t=(0,a.K2)(function(t){return p[t].processed},"compileTask");let e=!0;for(const[n,i]of p.entries())t(n),e=e&&i.processed;return e},"compileTasks"),w=(0,a.K2)(function(){return m()},"getActors"),v={getConfig:(0,a.K2)(()=>(0,r.D7)().journey,"getConfig"),clear:d,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:f,getSections:g,getTasks:x,addTask:k,addTaskOrg:_,getActors:w},K=(0,a.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n font-family: ${t.fontFamily};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n ${(0,s.o)()}\n`,"getStyles"),$=(0,a.K2)(function(t,e){return(0,i.tk)(t,e)},"drawRect"),T=(0,a.K2)(function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),s=t.append("g");function r(t){const i=(0,o.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function l(t){const i=(0,o.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function c(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),s.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,a.K2)(r,"smile"),(0,a.K2)(l,"sad"),(0,a.K2)(c,"ambivalent"),e.score>3?r(s):e.score<3?l(s):c(s),i},"drawFace"),M=(0,a.K2)(function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},"drawCircle"),S=(0,a.K2)(function(t,e){return(0,i.m)(t,e)},"drawText"),C=(0,a.K2)(function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,a.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,S(t,e)},"drawLabel"),E=(0,a.K2)(function(t,e,n){const s=t.append("g"),r=(0,i.PB)();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width*e.taskCount+n.diagramMarginX*(e.taskCount-1),r.height=n.height,r.class="journey-section section-type-"+e.num,r.rx=3,r.ry=3,$(s,r),j(n)(e.text,s,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),I=-1,P=(0,a.K2)(function(t,e,n){const s=e.x+n.width/2,r=t.append("g");I++;r.append("line").attr("id","task"+I).attr("x1",s).attr("y1",e.y).attr("x2",s).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),T(r,{cx:s,cy:300+30*(5-e.score),score:e.score});const a=(0,i.PB)();a.x=e.x,a.y=e.y,a.fill=e.fill,a.width=n.width,a.height=n.height,a.class="task task-type-"+e.num,a.rx=3,a.ry=3,$(r,a);let o=e.x+14;e.people.forEach(t=>{const n=e.actors[t].color,i={cx:o,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};M(r,i),o+=10}),j(n)(e.task,r,a.x,a.y,a.width,a.height,{class:"task"},n,e.colour)},"drawTask"),A=(0,a.K2)(function(t,e){(0,i.lC)(t,e)},"drawBackgroundRect"),j=function(){function t(t,e,n,s,r,a,o,l){i(e.append("text").attr("x",n+r/2).attr("y",s+a/2+5).style("font-color",l).style("text-anchor","middle").text(t),o)}function e(t,e,n,s,r,a,o,l,c){const{taskFontSize:h,taskFontFamily:u}=l,y=t.split(//gi);for(let p=0;p{const r=L[s].color,a={cx:20,cy:i,r:7,fill:r,stroke:"#000",pos:L[s].position};B.drawCircle(t,a);let o=t.append("text").attr("visibility","hidden").text(s);const l=o.node().getBoundingClientRect().width;o.remove();let c=[];if(l<=n)c=[s];else{const e=s.split(" ");let i="";o=t.append("text").attr("visibility","hidden"),e.forEach(t=>{const e=i?`${i} ${t}`:t;o.text(e);if(o.node().getBoundingClientRect().width>n){if(i&&c.push(i),i=t,o.text(t),o.node().getBoundingClientRect().width>n){let e="";for(const i of t)e+=i,o.text(e+"-"),o.node().getBoundingClientRect().width>n&&(c.push(e.slice(0,-1)+"-"),e=i);i=e}}else i=e}),i&&c.push(i),o.remove()}c.forEach((n,s)=>{const r={x:40,y:i+7+20*s,fill:"#666",text:n,textMargin:e.boxTextMargin??5},a=B.drawText(t,r).node().getBoundingClientRect().width;a>D&&a>e.leftMargin-a&&(D=a)}),i+=Math.max(20,20*c.length)})}(0,a.K2)(V,"drawActorLegend");var R=(0,r.D7)().journey,O=0,N=(0,a.K2)(function(t,e,n,i){const s=(0,r.D7)(),a=s.journey.titleColor,l=s.journey.titleFontSize,c=s.journey.titleFontFamily,h=s.securityLevel;let u;"sandbox"===h&&(u=(0,o.Ltv)("#i"+e));const y="sandbox"===h?(0,o.Ltv)(u.nodes()[0].contentDocument.body):(0,o.Ltv)("body");z.init();const p=y.select("#"+e);B.initGraphics(p);const d=i.db.getTasks(),f=i.db.getDiagramTitle(),g=i.db.getActors();for(const r in L)delete L[r];let x=0;g.forEach(t=>{L[t]={color:R.actorColours[x%R.actorColours.length],position:x},x++}),V(p),O=R.leftMargin+D,z.insert(0,0,O,50*Object.keys(L).length),q(p,d,0);const m=z.getBounds();f&&p.append("text").text(f).attr("x",O).attr("font-size",l).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",c);const k=m.stopy-m.starty+2*R.diagramMarginY,_=O+m.stopx+2*R.diagramMarginX;(0,r.a$)(p,k,_,R.useMaxWidth),p.append("line").attr("x1",O).attr("y1",4*R.height).attr("x2",_-O-4).attr("y2",4*R.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const b=f?70:0;p.attr("viewBox",`${m.startx} -25 ${_} ${k+b}`),p.attr("preserveAspectRatio","xMinYMin meet"),p.attr("height",k+b+25)},"draw"),z={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:(0,a.K2)(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:(0,a.K2)(function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},"updateVal"),updateBounds:(0,a.K2)(function(t,e,n,i){const s=(0,r.D7)().journey,o=this;let l=0;function c(r){return(0,a.K2)(function(a){l++;const c=o.sequenceItems.length-l+1;o.updateVal(a,"starty",e-c*s.boxMargin,Math.min),o.updateVal(a,"stopy",i+c*s.boxMargin,Math.max),o.updateVal(z.data,"startx",t-c*s.boxMargin,Math.min),o.updateVal(z.data,"stopx",n+c*s.boxMargin,Math.max),"activation"!==r&&(o.updateVal(a,"startx",t-c*s.boxMargin,Math.min),o.updateVal(a,"stopx",n+c*s.boxMargin,Math.max),o.updateVal(z.data,"starty",e-c*s.boxMargin,Math.min),o.updateVal(z.data,"stopy",i+c*s.boxMargin,Math.max))},"updateItemBounds")}(0,a.K2)(c,"updateFn"),this.sequenceItems.forEach(c())},"updateBounds"),insert:(0,a.K2)(function(t,e,n,i){const s=Math.min(t,n),r=Math.max(t,n),a=Math.min(e,i),o=Math.max(e,i);this.updateVal(z.data,"startx",s,Math.min),this.updateVal(z.data,"starty",a,Math.min),this.updateVal(z.data,"stopx",r,Math.max),this.updateVal(z.data,"stopy",o,Math.max),this.updateBounds(s,a,r,o)},"insert"),bumpVerticalPos:(0,a.K2)(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:(0,a.K2)(function(){return this.verticalPos},"getVerticalPos"),getBounds:(0,a.K2)(function(){return this.data},"getBounds")},W=R.sectionFills,Y=R.sectionColours,q=(0,a.K2)(function(t,e,n){const i=(0,r.D7)().journey;let s="";const a=n+(2*i.height+i.diagramMarginY);let o=0,l="#CCC",c="black",h=0;for(const[r,u]of e.entries()){if(s!==u.section){l=W[o%W.length],h=o%W.length,c=Y[o%Y.length];let n=0;const a=u.section;for(let t=r;t(L[e]&&(t[e]=L[e]),t),{});u.x=r*i.taskMargin+r*i.width+O,u.y=a,u.width=i.diagramMarginX,u.height=i.diagramMarginY,u.colour=c,u.fill=l,u.num=h,u.actors=n,B.drawTask(t,u,i),z.insert(u.x,u.y,u.x+u.width+i.taskMargin,450)}},"drawTasks"),J={setConf:F,draw:N},X={parser:c,db:v,renderer:J,styles:K,init:(0,a.K2)(t=>{J.setConf(t.journey),v.clear()},"init")}}}]); \ No newline at end of file diff --git a/user/assets/js/5901.07e3450a.js b/user/assets/js/5901.07e3450a.js new file mode 100644 index 0000000..cec6d81 --- /dev/null +++ b/user/assets/js/5901.07e3450a.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[5901],{5901:(s,e,a)=>{a.d(e,{createTreemapServices:()=>c.d});var c=a(1633);a(7960)}}]); \ No newline at end of file diff --git a/user/assets/js/5955.fc1ce015.js b/user/assets/js/5955.fc1ce015.js new file mode 100644 index 0000000..7a8d10c --- /dev/null +++ b/user/assets/js/5955.fc1ce015.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[5955],{5955:(t,i,e)=>{e.d(i,{diagram:()=>it});var s=e(3590),a=e(92),n=e(3226),h=e(7633),o=e(797),r=e(451),l=function(){var t=(0,o.K2)(function(t,i,e,s){for(e=e||{},s=t.length;s--;e[t[s]]=i);return e},"o"),i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],a=[1,5],n=[1,6],h=[1,7],r=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],c=[1,26],g=[1,28],u=[1,29],x=[1,30],d=[1,31],p=[1,32],f=[1,33],y=[1,34],m=[1,35],b=[1,36],A=[1,37],w=[1,43],S=[1,42],C=[1,47],k=[1,50],_=[1,10,12,14,16,18,19,21,23,34,35,36],T=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],R=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],L={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:(0,o.K2)(function(t,i,e,s,a,n,h){var o=n.length-1;switch(a){case 5:s.setOrientation(n[o]);break;case 9:s.setDiagramTitle(n[o].text.trim());break;case 12:s.setLineData({text:"",type:"text"},n[o]);break;case 13:s.setLineData(n[o-1],n[o]);break;case 14:s.setBarData({text:"",type:"text"},n[o]);break;case 15:s.setBarData(n[o-1],n[o]);break;case 16:this.$=n[o].trim(),s.setAccTitle(this.$);break;case 17:case 18:this.$=n[o].trim(),s.setAccDescription(this.$);break;case 19:case 27:this.$=n[o-1];break;case 20:this.$=[Number(n[o-2]),...n[o]];break;case 21:this.$=[Number(n[o])];break;case 22:s.setXAxisTitle(n[o]);break;case 23:s.setXAxisTitle(n[o-1]);break;case 24:s.setXAxisTitle({type:"text",text:""});break;case 25:s.setXAxisBand(n[o]);break;case 26:s.setXAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 28:this.$=[n[o-2],...n[o]];break;case 29:this.$=[n[o]];break;case 30:s.setYAxisTitle(n[o]);break;case 31:s.setYAxisTitle(n[o-1]);break;case 32:s.setYAxisTitle({type:"text",text:""});break;case 33:s.setYAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 37:case 38:this.$={text:n[o],type:"text"};break;case 39:this.$={text:n[o],type:"markdown"};break;case 40:this.$=n[o];break;case 41:this.$=n[o-1]+""+n[o]}},"anonymous"),table:[t(i,e,{3:1,4:2,7:4,5:s,34:a,35:n,36:h}),{1:[3]},t(i,e,{4:2,7:4,3:8,5:s,34:a,35:n,36:h}),t(i,e,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:a,35:n,36:h}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(r,[2,34]),t(r,[2,35]),t(r,[2,36]),{1:[2,1]},t(i,e,{4:2,7:4,3:21,5:s,34:a,35:n,36:h}),{1:[2,3]},t(r,[2,5]),t(i,[2,7],{4:22,34:a,35:n,36:h}),{11:23,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:39,13:38,24:w,27:S,29:40,30:41,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:45,15:44,27:C,33:46,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:49,17:48,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:52,17:51,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{20:[1,53]},{22:[1,54]},t(_,[2,18]),{1:[2,2]},t(_,[2,8]),t(_,[2,9]),t(T,[2,37],{40:55,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A}),t(T,[2,38]),t(T,[2,39]),t(R,[2,40]),t(R,[2,42]),t(R,[2,43]),t(R,[2,44]),t(R,[2,45]),t(R,[2,46]),t(R,[2,47]),t(R,[2,48]),t(R,[2,49]),t(R,[2,50]),t(R,[2,51]),t(_,[2,10]),t(_,[2,22],{30:41,29:56,24:w,27:S}),t(_,[2,24]),t(_,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,11]),t(_,[2,30],{33:60,27:C}),t(_,[2,32]),{31:[1,61]},t(_,[2,12]),{17:62,24:k},{25:63,27:D},t(_,[2,14]),{17:65,24:k},t(_,[2,16]),t(_,[2,17]),t(R,[2,41]),t(_,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(_,[2,31]),{27:[1,69]},t(_,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(_,[2,15]),t(_,[2,26]),t(_,[2,27]),{11:59,32:72,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,33]),t(_,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:(0,o.K2)(function(t,i){if(!i.recoverable){var e=new Error(t);throw e.hash=i,e}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var i=this,e=[0],s=[],a=[null],n=[],h=this.table,r="",l=0,c=0,g=0,u=n.slice.call(arguments,1),x=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);x.setInput(t,d.yy),d.yy.lexer=x,d.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var f=x.yylloc;n.push(f);var y=x.options&&x.options.ranges;function m(){var t;return"number"!=typeof(t=s.pop()||x.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=i.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){e.length=e.length-2*t,a.length=a.length-t,n.length=n.length-t},"popStack"),(0,o.K2)(m,"lex");for(var b,A,w,S,C,k,_,T,R,D={};;){if(w=e[e.length-1],this.defaultActions[w]?S=this.defaultActions[w]:(null==b&&(b=m()),S=h[w]&&h[w][b]),void 0===S||!S.length||!S[0]){var L="";for(k in R=[],h[w])this.terminals_[k]&&k>2&&R.push("'"+this.terminals_[k]+"'");L=x.showPosition?"Parse error on line "+(l+1)+":\n"+x.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[b]||b,line:x.yylineno,loc:f,expected:R})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+b);switch(S[0]){case 1:e.push(b),a.push(x.yytext),n.push(x.yylloc),e.push(S[1]),b=null,A?(b=A,A=null):(c=x.yyleng,r=x.yytext,l=x.yylineno,f=x.yylloc,g>0&&g--);break;case 2:if(_=this.productions_[S[1]][1],D.$=a[a.length-_],D._$={first_line:n[n.length-(_||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(_||1)].first_column,last_column:n[n.length-1].last_column},y&&(D._$.range=[n[n.length-(_||1)].range[0],n[n.length-1].range[1]]),void 0!==(C=this.performAction.apply(D,[r,c,l,d.yy,S[1],a,n].concat(u))))return C;_&&(e=e.slice(0,-1*_*2),a=a.slice(0,-1*_),n=n.slice(0,-1*_)),e.push(this.productions_[S[1]][0]),a.push(D.$),n.push(D._$),T=h[e[e.length-2]][e[e.length-1]],e.push(T);break;case 3:return!0}}return!0},"parse")},P=function(){return{EOF:1,parseError:(0,o.K2)(function(t,i){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,i)},"parseError"),setInput:(0,o.K2)(function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var i=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),e.length-1&&(this.yylineno-=e.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:e?(e.length===s.length?this.yylloc.first_column:0)+s[s.length-e.length].length-e[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+i+"^"},"showPosition"),test_match:(0,o.K2)(function(t,i){var e,s,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),(s=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var n in a)this[n]=a[n];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,i,e,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),n=0;ni[0].length)){if(i=e,s=n,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,a[n])))return t;if(this._backtrack){i=!1;continue}return!1}if(!this.options.flex)break}return i?!1!==(t=this.test_match(i,a[s]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)(function(t,i,e,s){switch(e){case 0:case 1:case 5:case 44:break;case 2:case 3:return this.popState(),34;case 4:return 34;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:case 26:case 28:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";case 18:return this.pushState("axis_data"),"Y_AXIS";case 19:return this.pushState("axis_band_data"),24;case 20:return 31;case 21:return this.pushState("data"),16;case 22:return this.pushState("data"),18;case 23:return this.pushState("data_inner"),24;case 24:return 27;case 25:return this.popState(),26;case 27:this.pushState("string");break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 45:return 35;case 46:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}}}();function E(){this.yy={}}return L.lexer=P,(0,o.K2)(E,"Parser"),E.prototype=L,L.Parser=E,new E}();l.parser=l;var c=l;function g(t){return"bar"===t.type}function u(t){return"band"===t.type}function x(t){return"linear"===t.type}(0,o.K2)(g,"isBarPlot"),(0,o.K2)(u,"isBandAxisData"),(0,o.K2)(x,"isLinearAxisData");var d=class{constructor(t){this.parentGroup=t}static{(0,o.K2)(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce((t,i)=>Math.max(i.length,t),0)*i,height:i};const e={width:0,height:0},s=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const n of t){const t=(0,a.W6)(s,1,n),h=t?t.width:n.length*i,o=t?t.height:i;e.width=Math.max(e.width,h),e.height=Math.max(e.height,o)}return s.remove(),e}},p=class{constructor(t,i,e,s){this.axisConfig=t,this.title=i,this.textDimensionCalculator=e,this.axisThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{(0,o.K2)(this,"BaseAxis")}setRange(t){this.range=t,"left"===this.axisPosition||"right"===this.axisPosition?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){const t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>2*this.outerPadding&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let i=t.height;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.width;this.outerPadding=Math.min(e.width/2,s);const a=e.height+2*this.axisConfig.labelPadding;this.labelTextHeight=e.height,a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-i}calculateSpaceIfDrawnVertical(t){let i=t.width;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.height;this.outerPadding=Math.min(e.height/2,s);const a=e.width+2*this.axisConfig.labelPadding;a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return"left"===this.axisPosition||"right"===this.axisPosition?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(t),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const i=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${i},${this.getScaleValue(t)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(t)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${i} L ${this.getScaleValue(t)},${i+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+2*this.axisConfig.titlePadding:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(t=>({path:`M ${this.getScaleValue(t)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(t)},${i+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if("left"===this.axisPosition)return this.getDrawableElementsForLeftAxis();if("right"===this.axisPosition)throw Error("Drawing of right axis is not implemented");return"bottom"===this.axisPosition?this.getDrawableElementsForBottomAxis():"top"===this.axisPosition?this.getDrawableElementsForTopAxis():[]}},f=class extends p{static{(0,o.K2)(this,"BandAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.categories=e,this.scale=(0,r.WH)().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=(0,r.WH)().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),o.Rm.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}},y=class extends p{static{(0,o.K2)(this,"LinearAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.domain=e,this.scale=(0,r.m4Y)().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];"left"===this.axisPosition&&t.reverse(),this.scale=(0,r.m4Y)().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}};function m(t,i,e,s){const a=new d(s);return u(t)?new f(i,e,t.categories,t.title,a):new y(i,e,[t.min,t.max],t.title,a)}(0,o.K2)(m,"getAxis");var b=class{constructor(t,i,e,s){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=e,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{(0,o.K2)(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){const i=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),e=Math.max(i.width,t.width),s=i.height+2*this.chartConfig.titlePadding;return i.width<=e&&i.height<=s&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=e,this.boundingRect.height=s,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};function A(t,i,e,s){const a=new d(s);return new b(a,t,i,e)}(0,o.K2)(A,"getChartTitleComponent");var w=class{constructor(t,i,e,s,a){this.plotData=t,this.xAxis=i,this.yAxis=e,this.orientation=s,this.plotIndex=a}static{(0,o.K2)(this,"LinePlot")}getDrawableElement(){const t=this.plotData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]);let i;return i="horizontal"===this.orientation?(0,r.n8j)().y(t=>t[0]).x(t=>t[1])(t):(0,r.n8j)().x(t=>t[0]).y(t=>t[1])(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}},S=class{constructor(t,i,e,s,a,n){this.barData=t,this.boundingRect=i,this.xAxis=e,this.yAxis=s,this.orientation=a,this.plotIndex=n}static{(0,o.K2)(this,"BarPlot")}getDrawableElement(){const t=this.barData.data.map(t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]),i=.95*Math.min(2*this.xAxis.getAxisOuterPadding(),this.xAxis.getTickDistance()),e=i/2;return"horizontal"===this.orientation?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(t=>({x:this.boundingRect.x,y:t[0]-e,height:i,width:t[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(t=>({x:t[0]-e,y:t[1],width:i,height:this.boundingRect.y+this.boundingRect.height-t[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}},C=class{constructor(t,i,e){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=e,this.boundingRect={x:0,y:0,width:0,height:0}}static{(0,o.K2)(this,"BasePlot")}setAxes(t,i){this.xAxis=t,this.yAxis=i}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!this.xAxis||!this.yAxis)throw Error("Axes must be passed to render Plots");const t=[];for(const[i,e]of this.chartData.plots.entries())switch(e.type){case"line":{const s=new w(e,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}break;case"bar":{const s=new S(e,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}}return t}};function k(t,i,e){return new C(t,i,e)}(0,o.K2)(k,"getPlotComponent");var _,T=class{constructor(t,i,e,s){this.chartConfig=t,this.chartData=i,this.componentStore={title:A(t,i,e,s),plot:k(t,i,e),xAxis:m(i.xAxis,t.xAxis,{titleColor:e.xAxisTitleColor,labelColor:e.xAxisLabelColor,tickColor:e.xAxisTickColor,axisLineColor:e.xAxisLineColor},s),yAxis:m(i.yAxis,t.yAxis,{titleColor:e.yAxisTitleColor,labelColor:e.yAxisLabelColor,tickColor:e.yAxisTickColor,axisLineColor:e.yAxisLineColor},s)}}static{(0,o.K2)(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),n=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),h=this.componentStore.plot.calculateSpace({width:a,height:n});t-=h.width,i-=h.height,h=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=h.height,i-=h.height,this.componentStore.xAxis.setAxisPosition("bottom"),h=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=h.height,this.componentStore.yAxis.setAxisPosition("left"),h=this.componentStore.yAxis.calculateSpace({width:t,height:i}),e=h.width,t-=h.width,t>0&&(a+=t,t=0),i>0&&(n+=i,i=0),this.componentStore.plot.calculateSpace({width:a,height:n}),this.componentStore.plot.setBoundingBoxXY({x:e,y:s}),this.componentStore.xAxis.setRange([e,e+a]),this.componentStore.xAxis.setBoundingBoxXY({x:e,y:s+n}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:s}),this.chartData.plots.some(t=>g(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=0,n=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),h=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),o=this.componentStore.plot.calculateSpace({width:n,height:h});t-=o.width,i-=o.height,o=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),e=o.height,i-=o.height,this.componentStore.xAxis.setAxisPosition("left"),o=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=o.width,s=o.width,this.componentStore.yAxis.setAxisPosition("top"),o=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=o.height,a=e+o.height,t>0&&(n+=t,t=0),i>0&&(h+=i,i=0),this.componentStore.plot.calculateSpace({width:n,height:h}),this.componentStore.plot.setBoundingBoxXY({x:s,y:a}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:s,y:e}),this.componentStore.xAxis.setRange([a,a+h]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(t=>g(t))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){"horizontal"===this.chartConfig.chartOrientation?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const i of Object.values(this.componentStore))t.push(...i.getDrawableElements());return t}},R=class{static{(0,o.K2)(this,"XYChartBuilder")}static build(t,i,e,s){return new T(t,i,e,s).getDrawableElement()}},D=0,L=M(),P=$(),E=z(),v=P.plotColorPalette.split(",").map(t=>t.trim()),K=!1,I=!1;function $(){const t=(0,h.P$)(),i=(0,h.zj)();return(0,n.$t)(t.xyChart,i.themeVariables.xyChart)}function M(){const t=(0,h.zj)();return(0,n.$t)(h.UI.xyChart,t.xyChart)}function z(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function B(t){const i=(0,h.zj)();return(0,h.jZ)(t.trim(),i)}function W(t){_=t}function O(t){L.chartOrientation="horizontal"===t?"horizontal":"vertical"}function F(t){E.xAxis.title=B(t.text)}function N(t,i){E.xAxis={type:"linear",title:E.xAxis.title,min:t,max:i},K=!0}function X(t){E.xAxis={type:"band",title:E.xAxis.title,categories:t.map(t=>B(t.text))},K=!0}function V(t){E.yAxis.title=B(t.text)}function Y(t,i){E.yAxis={type:"linear",title:E.yAxis.title,min:t,max:i},I=!0}function H(t){const i=Math.min(...t),e=Math.max(...t),s=x(E.yAxis)?E.yAxis.min:1/0,a=x(E.yAxis)?E.yAxis.max:-1/0;E.yAxis={type:"linear",title:E.yAxis.title,min:Math.min(s,i),max:Math.max(a,e)}}function U(t){let i=[];if(0===t.length)return i;if(!K){const i=x(E.xAxis)?E.xAxis.min:1/0,e=x(E.xAxis)?E.xAxis.max:-1/0;N(Math.min(i,1),Math.max(e,t.length))}if(I||H(t),u(E.xAxis)&&(i=E.xAxis.categories.map((i,e)=>[i,t[e]])),x(E.xAxis)){const e=E.xAxis.min,s=E.xAxis.max,a=(s-e)/(t.length-1),n=[];for(let t=e;t<=s;t+=a)n.push(`${t}`);i=n.map((i,e)=>[i,t[e]])}return i}function j(t){return v[0===t?0:t%v.length]}function G(t,i){const e=U(i);E.plots.push({type:"line",strokeFill:j(D),strokeWidth:2,data:e}),D++}function Q(t,i){const e=U(i);E.plots.push({type:"bar",fill:j(D),data:e}),D++}function Z(){if(0===E.plots.length)throw Error("No Plot to render, please provide a plot with some data");return E.title=(0,h.ab)(),R.build(L,E,P,_)}function q(){return P}function J(){return L}function tt(){return E}(0,o.K2)($,"getChartDefaultThemeConfig"),(0,o.K2)(M,"getChartDefaultConfig"),(0,o.K2)(z,"getChartDefaultData"),(0,o.K2)(B,"textSanitizer"),(0,o.K2)(W,"setTmpSVGG"),(0,o.K2)(O,"setOrientation"),(0,o.K2)(F,"setXAxisTitle"),(0,o.K2)(N,"setXAxisRangeData"),(0,o.K2)(X,"setXAxisBand"),(0,o.K2)(V,"setYAxisTitle"),(0,o.K2)(Y,"setYAxisRangeData"),(0,o.K2)(H,"setYAxisRangeFromPlotData"),(0,o.K2)(U,"transformDataWithoutCategory"),(0,o.K2)(j,"getPlotColorFromPalette"),(0,o.K2)(G,"setLineData"),(0,o.K2)(Q,"setBarData"),(0,o.K2)(Z,"getDrawableElem"),(0,o.K2)(q,"getChartThemeConfig"),(0,o.K2)(J,"getChartConfig"),(0,o.K2)(tt,"getXYChartData");var it={parser:c,db:{getDrawableElem:Z,clear:(0,o.K2)(function(){(0,h.IU)(),D=0,L=M(),E={yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]},P=$(),v=P.plotColorPalette.split(",").map(t=>t.trim()),K=!1,I=!1},"clear"),setAccTitle:h.SV,getAccTitle:h.iN,setDiagramTitle:h.ke,getDiagramTitle:h.ab,getAccDescription:h.m7,setAccDescription:h.EI,setOrientation:O,setXAxisTitle:F,setXAxisRangeData:N,setXAxisBand:X,setYAxisTitle:V,setYAxisRangeData:Y,setLineData:G,setBarData:Q,setTmpSVGG:W,getChartThemeConfig:q,getChartConfig:J,getXYChartData:tt},renderer:{draw:(0,o.K2)((t,i,e,a)=>{const n=a.db,r=n.getChartThemeConfig(),l=n.getChartConfig(),c=n.getXYChartData().plots[0].data.map(t=>t[1]);function g(t){return"top"===t?"text-before-edge":"middle"}function u(t){return"left"===t?"start":"right"===t?"end":"middle"}function x(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,o.K2)(g,"getDominantBaseLine"),(0,o.K2)(u,"getTextAnchor"),(0,o.K2)(x,"getTextTransformation"),o.Rm.debug("Rendering xychart chart\n"+t);const d=(0,s.D)(i),p=d.append("g").attr("class","main"),f=p.append("rect").attr("width",l.width).attr("height",l.height).attr("class","background");(0,h.a$)(d,l.height,l.width,!0),d.attr("viewBox",`0 0 ${l.width} ${l.height}`),f.attr("fill",r.backgroundColor),n.setTmpSVGG(d.append("g").attr("class","mermaid-tmp-group"));const y=n.getDrawableElem(),m={};function b(t){let i=p,e="";for(const[s]of t.entries()){let a=p;s>0&&m[e]&&(a=m[e]),e+=t[s],i=m[e],i||(i=m[e]=a.append("g").attr("class",t[s]))}return i}(0,o.K2)(b,"getGroup");for(const s of y){if(0===s.data.length)continue;const t=b(s.groupTexts);switch(s.type){case"rect":if(t.selectAll("rect").data(s.data).enter().append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth),l.showDataLabel)if("horizontal"===l.chartOrientation){let i=function(t,i){const{data:s,label:a}=t;return i*a.length*e<=s.width-10};(0,o.K2)(i,"fitsHorizontally");const e=.7,a=s.data.map((t,i)=>({data:t,label:c[i].toString()})).filter(t=>t.data.width>0&&t.data.height>0),n=a.map(t=>{const{data:e}=t;let s=.7*e.height;for(;!i(t,s)&&s>0;)s-=1;return s}),h=Math.floor(Math.min(...n));t.selectAll("text").data(a).enter().append("text").attr("x",t=>t.data.x+t.data.width-10).attr("y",t=>t.data.y+t.data.height/2).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",`${h}px`).text(t=>t.label)}else{let i=function(t,i,e){const{data:s,label:a}=t,n=i*a.length*.7,h=s.x+s.width/2,o=h+n/2,r=h-n/2>=s.x&&o<=s.x+s.width,l=s.y+e+i<=s.y+s.height;return r&&l};(0,o.K2)(i,"fitsInBar");const e=10,a=s.data.map((t,i)=>({data:t,label:c[i].toString()})).filter(t=>t.data.width>0&&t.data.height>0),n=a.map(t=>{const{data:s,label:a}=t;let n=s.width/(.7*a.length);for(;!i(t,n,e)&&n>0;)n-=1;return n}),h=Math.floor(Math.min(...n));t.selectAll("text").data(a).enter().append("text").attr("x",t=>t.data.x+t.data.width/2).attr("y",t=>t.data.y+e).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",`${h}px`).text(t=>t.label)}break;case"text":t.selectAll("text").data(s.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>g(t.verticalPos)).attr("text-anchor",t=>u(t.horizontalPos)).attr("transform",t=>x(t)).text(t=>t.text);break;case"path":t.selectAll("path").data(s.data).enter().append("path").attr("d",t=>t.path).attr("fill",t=>t.fill?t.fill:"none").attr("stroke",t=>t.strokeFill).attr("stroke-width",t=>t.strokeWidth)}}},"draw")}}}}]); \ No newline at end of file diff --git a/user/assets/js/5996.f2c2add4.js b/user/assets/js/5996.f2c2add4.js new file mode 100644 index 0000000..ba03371 --- /dev/null +++ b/user/assets/js/5996.f2c2add4.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[5996],{697:(t,e,r)=>{r.d(e,{T:()=>a.T});var a=r(7981)},2501:(t,e,r)=>{r.d(e,{o:()=>a});var a=(0,r(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},5937:(t,e,r)=>{r.d(e,{A:()=>i});var a=r(2453),s=r(4886);const i=(t,e)=>a.A.lang.round(s.A.parse(t)[e])},5996:(t,e,r)=>{r.d(e,{diagram:()=>we});var a=r(2501),s=r(8698),i=r(3245),n=r(92),o=r(3226),l=r(7633),c=r(797),d=r(53),h=r(5582),g=r(5937),u=r(451),p=r(697),y=function(){var t=(0,c.K2)(function(t,e,r,a){for(r=r||{},a=t.length;a--;r[t[a]]=e);return r},"o"),e=[1,15],r=[1,7],a=[1,13],s=[1,14],i=[1,19],n=[1,16],o=[1,17],l=[1,18],d=[8,30],h=[8,10,21,28,29,30,31,39,43,46],g=[1,23],u=[1,24],p=[8,10,15,16,21,28,29,30,31,39,43,46],y=[8,10,15,16,21,27,28,29,30,31,39,43,46],b=[1,49],x={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:(0,c.K2)(function(t,e,r,a,s,i,n){var o=i.length-1;switch(s){case 4:a.getLogger().debug("Rule: separator (NL) ");break;case 5:a.getLogger().debug("Rule: separator (Space) ");break;case 6:a.getLogger().debug("Rule: separator (EOF) ");break;case 7:a.getLogger().debug("Rule: hierarchy: ",i[o-1]),a.setHierarchy(i[o-1]);break;case 8:a.getLogger().debug("Stop NL ");break;case 9:a.getLogger().debug("Stop EOF ");break;case 10:a.getLogger().debug("Stop NL2 ");break;case 11:a.getLogger().debug("Stop EOF2 ");break;case 12:a.getLogger().debug("Rule: statement: ",i[o]),"number"==typeof i[o].length?this.$=i[o]:this.$=[i[o]];break;case 13:a.getLogger().debug("Rule: statement #2: ",i[o-1]),this.$=[i[o-1]].concat(i[o]);break;case 14:a.getLogger().debug("Rule: link: ",i[o],t),this.$={edgeTypeStr:i[o],label:""};break;case 15:a.getLogger().debug("Rule: LABEL link: ",i[o-3],i[o-1],i[o]),this.$={edgeTypeStr:i[o],label:i[o-1]};break;case 18:const e=parseInt(i[o]),r=a.generateId();this.$={id:r,type:"space",label:"",width:e,children:[]};break;case 23:a.getLogger().debug("Rule: (nodeStatement link node) ",i[o-2],i[o-1],i[o]," typestr: ",i[o-1].edgeTypeStr);const s=a.edgeStrToEdgeData(i[o-1].edgeTypeStr);this.$=[{id:i[o-2].id,label:i[o-2].label,type:i[o-2].type,directions:i[o-2].directions},{id:i[o-2].id+"-"+i[o].id,start:i[o-2].id,end:i[o].id,label:i[o-1].label,type:"edge",directions:i[o].directions,arrowTypeEnd:s,arrowTypeStart:"arrow_open"},{id:i[o].id,label:i[o].label,type:a.typeStr2Type(i[o].typeStr),directions:i[o].directions}];break;case 24:a.getLogger().debug("Rule: nodeStatement (abc88 node size) ",i[o-1],i[o]),this.$={id:i[o-1].id,label:i[o-1].label,type:a.typeStr2Type(i[o-1].typeStr),directions:i[o-1].directions,widthInColumns:parseInt(i[o],10)};break;case 25:a.getLogger().debug("Rule: nodeStatement (node) ",i[o]),this.$={id:i[o].id,label:i[o].label,type:a.typeStr2Type(i[o].typeStr),directions:i[o].directions,widthInColumns:1};break;case 26:a.getLogger().debug("APA123",this?this:"na"),a.getLogger().debug("COLUMNS: ",i[o]),this.$={type:"column-setting",columns:"auto"===i[o]?-1:parseInt(i[o])};break;case 27:a.getLogger().debug("Rule: id-block statement : ",i[o-2],i[o-1]);a.generateId();this.$={...i[o-2],type:"composite",children:i[o-1]};break;case 28:a.getLogger().debug("Rule: blockStatement : ",i[o-2],i[o-1],i[o]);const n=a.generateId();this.$={id:n,type:"composite",label:"",children:i[o-1]};break;case 29:a.getLogger().debug("Rule: node (NODE_ID separator): ",i[o]),this.$={id:i[o]};break;case 30:a.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",i[o-1],i[o]),this.$={id:i[o-1],label:i[o].label,typeStr:i[o].typeStr,directions:i[o].directions};break;case 31:a.getLogger().debug("Rule: dirList: ",i[o]),this.$=[i[o]];break;case 32:a.getLogger().debug("Rule: dirList: ",i[o-1],i[o]),this.$=[i[o-1]].concat(i[o]);break;case 33:a.getLogger().debug("Rule: nodeShapeNLabel: ",i[o-2],i[o-1],i[o]),this.$={typeStr:i[o-2]+i[o],label:i[o-1]};break;case 34:a.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",i[o-3],i[o-2]," #3:",i[o-1],i[o]),this.$={typeStr:i[o-3]+i[o],label:i[o-2],directions:i[o-1]};break;case 35:case 36:this.$={type:"classDef",id:i[o-1].trim(),css:i[o].trim()};break;case 37:this.$={type:"applyClass",id:i[o-1].trim(),styleClass:i[o].trim()};break;case 38:this.$={type:"applyStyles",id:i[o-1].trim(),stylesStr:i[o].trim()}}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:e,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{8:[1,20]},t(d,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:e,21:r,28:a,29:s,31:i,39:n,43:o,46:l}),t(h,[2,16],{14:22,15:g,16:u}),t(h,[2,17]),t(h,[2,18]),t(h,[2,19]),t(h,[2,20]),t(h,[2,21]),t(h,[2,22]),t(p,[2,25],{27:[1,25]}),t(h,[2,26]),{19:26,26:12,31:i},{10:e,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},t(y,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},t(d,[2,13]),{26:35,31:i},{31:[2,14]},{17:[1,36]},t(p,[2,24]),{10:e,11:37,13:4,14:22,15:g,16:u,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},t(y,[2,30]),{18:[1,43]},{18:[1,44]},t(p,[2,23]),{18:[1,45]},{30:[1,46]},t(h,[2,28]),t(h,[2,35]),t(h,[2,36]),t(h,[2,37]),t(h,[2,38]),{36:[1,47]},{33:48,34:b},{15:[1,50]},t(h,[2,27]),t(y,[2,33]),{38:[1,51]},{33:52,34:b,38:[2,31]},{31:[2,15]},t(y,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var r=new Error(t);throw r.hash=e,r}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,r=[0],a=[],s=[null],i=[],n=this.table,o="",l=0,d=0,h=0,g=i.slice.call(arguments,1),u=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);u.setInput(t,p.yy),p.yy.lexer=u,p.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var b=u.yylloc;i.push(b);var x=u.options&&u.options.ranges;function f(){var t;return"number"!=typeof(t=a.pop()||u.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){r.length=r.length-2*t,s.length=s.length-t,i.length=i.length-t},"popStack"),(0,c.K2)(f,"lex");for(var m,w,_,L,k,S,v,E,D,C={};;){if(_=r[r.length-1],this.defaultActions[_]?L=this.defaultActions[_]:(null==m&&(m=f()),L=n[_]&&n[_][m]),void 0===L||!L.length||!L[0]){var R="";for(S in D=[],n[_])this.terminals_[S]&&S>2&&D.push("'"+this.terminals_[S]+"'");R=u.showPosition?"Parse error on line "+(l+1)+":\n"+u.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(R,{text:u.match,token:this.terminals_[m]||m,line:u.yylineno,loc:b,expected:D})}if(L[0]instanceof Array&&L.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+m);switch(L[0]){case 1:r.push(m),s.push(u.yytext),i.push(u.yylloc),r.push(L[1]),m=null,w?(m=w,w=null):(d=u.yyleng,o=u.yytext,l=u.yylineno,b=u.yylloc,h>0&&h--);break;case 2:if(v=this.productions_[L[1]][1],C.$=s[s.length-v],C._$={first_line:i[i.length-(v||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(v||1)].first_column,last_column:i[i.length-1].last_column},x&&(C._$.range=[i[i.length-(v||1)].range[0],i[i.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[o,d,l,p.yy,L[1],s,i].concat(g))))return k;v&&(r=r.slice(0,-1*v*2),s=s.slice(0,-1*v),i=i.slice(0,-1*v)),r.push(this.productions_[L[1]][0]),s.push(C.$),i.push(C._$),E=n[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0},"parse")},f=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===a.length?this.yylloc.first_column:0)+a[a.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var r,a,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],r=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var i in s)this[i]=s[i];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,r,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;ie[0].length)){if(e=r,a=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,s[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:(0,c.K2)(function(t,e,r,a){switch(r){case 0:return t.getLogger().debug("Found block-beta"),10;case 1:return t.getLogger().debug("Found id-block"),29;case 2:return t.getLogger().debug("Found block"),10;case 3:t.getLogger().debug(".",e.yytext);break;case 4:t.getLogger().debug("_",e.yytext);break;case 5:return 5;case 6:return e.yytext=-1,28;case 7:return e.yytext=e.yytext.replace(/columns\s+/,""),t.getLogger().debug("COLUMNS (LEX)",e.yytext),28;case 8:case 76:case 77:case 99:this.pushState("md_string");break;case 9:return"MD_STR";case 10:case 34:case 79:this.popState();break;case 11:this.pushState("string");break;case 12:t.getLogger().debug("LEX: POPPING STR:",e.yytext),this.popState();break;case 13:return t.getLogger().debug("LEX: STR end:",e.yytext),"STR";case 14:return e.yytext=e.yytext.replace(/space\:/,""),t.getLogger().debug("SPACE NUM (LEX)",e.yytext),21;case 15:return e.yytext="1",t.getLogger().debug("COLUMNS (LEX)",e.yytext),21;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 21:return this.popState(),this.pushState("CLASSDEFID"),40;case 22:return this.popState(),41;case 23:return this.pushState("CLASS"),43;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;case 25:return this.popState(),45;case 26:return this.pushState("STYLE_STMNT"),46;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;case 28:return this.popState(),48;case 29:return this.pushState("acc_title"),"acc_title";case 30:return this.popState(),"acc_title_value";case 31:return this.pushState("acc_descr"),"acc_descr";case 32:return this.popState(),"acc_descr_value";case 33:this.pushState("acc_descr_multiline");break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:case 38:case 40:case 41:case 44:return this.popState(),t.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),t.getLogger().debug("Lex: ))"),"NODE_DEND";case 42:return this.popState(),t.getLogger().debug("Lex: (-"),"NODE_DEND";case 43:return this.popState(),t.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),t.getLogger().debug("Lex: ]]"),"NODE_DEND";case 46:return this.popState(),t.getLogger().debug("Lex: ("),"NODE_DEND";case 47:return this.popState(),t.getLogger().debug("Lex: ])"),"NODE_DEND";case 48:case 49:return this.popState(),t.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),t.getLogger().debug("Lex: )]"),"NODE_DEND";case 51:return this.popState(),t.getLogger().debug("Lex: )"),"NODE_DEND";case 52:return this.popState(),t.getLogger().debug("Lex: ]>"),"NODE_DEND";case 53:return this.popState(),t.getLogger().debug("Lex: ]"),"NODE_DEND";case 54:return t.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;case 55:return t.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;case 56:return t.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;case 57:case 59:case 60:case 61:case 64:return t.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 58:return t.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;case 62:return t.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;case 63:return t.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;case 65:case 66:case 67:case 68:case 69:case 70:case 71:return this.pushState("NODE"),35;case 72:return t.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;case 73:return this.pushState("BLOCK_ARROW"),t.getLogger().debug("LEX ARR START"),37;case 74:return t.getLogger().debug("Lex: NODE_ID",e.yytext),31;case 75:return t.getLogger().debug("Lex: EOF",e.yytext),8;case 78:return"NODE_DESCR";case 80:t.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:t.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return t.getLogger().debug("LEX: NODE_DESCR:",e.yytext),"NODE_DESCR";case 83:t.getLogger().debug("LEX POPPING"),this.popState();break;case 84:t.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (right): dir:",e.yytext),"DIR";case 86:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (left):",e.yytext),"DIR";case 87:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (x):",e.yytext),"DIR";case 88:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (y):",e.yytext),"DIR";case 89:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (up):",e.yytext),"DIR";case 90:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (down):",e.yytext),"DIR";case 91:return e.yytext="]>",t.getLogger().debug("Lex (ARROW_DIR end):",e.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 92:return t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 93:case 94:case 95:return t.getLogger().debug("Lex: LINK",e.yytext),15;case 96:case 97:case 98:return t.getLogger().debug("Lex: START_LINK",e.yytext),this.pushState("LLABEL"),16;case 100:return t.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 101:return this.popState(),t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 102:case 103:return this.popState(),t.getLogger().debug("Lex: LINK",e.yytext),15;case 104:return t.getLogger().debug("Lex: COLON",e.yytext),e.yytext=e.yytext.slice(1),27}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}}}();function m(){this.yy={}}return x.lexer=f,(0,c.K2)(m,"Parser"),m.prototype=x,x.Parser=m,new m}();y.parser=y;var b=y,x=new Map,f=[],m=new Map,w="color",_="fill",L=(0,l.D7)(),k=new Map,S=(0,c.K2)(t=>l.Y2.sanitizeText(t,L),"sanitizeText"),v=(0,c.K2)(function(t,e=""){let r=k.get(t);r||(r={id:t,styles:[],textStyles:[]},k.set(t,r)),null!=e&&e.split(",").forEach(t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(w).exec(t)){const t=e.replace(_,"bgFill").replace(w,_);r.textStyles.push(t)}r.styles.push(e)})},"addStyleClass"),E=(0,c.K2)(function(t,e=""){const r=x.get(t);null!=e&&(r.styles=e.split(","))},"addStyle2Node"),D=(0,c.K2)(function(t,e){t.split(",").forEach(function(t){let r=x.get(t);if(void 0===r){const e=t.trim();r={id:e,type:"na",children:[]},x.set(e,r)}r.classes||(r.classes=[]),r.classes.push(e)})},"setCssClass"),C=(0,c.K2)((t,e)=>{const r=t.flat(),a=[],s=r.find(t=>"column-setting"===t?.type),i=s?.columns??-1;for(const n of r)if("number"==typeof i&&i>0&&"column-setting"!==n.type&&"number"==typeof n.widthInColumns&&n.widthInColumns>i&&c.Rm.warn(`Block ${n.id} width ${n.widthInColumns} exceeds configured column width ${i}`),n.label&&(n.label=S(n.label)),"classDef"!==n.type)if("applyClass"!==n.type)if("applyStyles"!==n.type)if("column-setting"===n.type)e.columns=n.columns??-1;else if("edge"===n.type){const t=(m.get(n.id)??0)+1;m.set(n.id,t),n.id=t+"-"+n.id,f.push(n)}else{n.label||("composite"===n.type?n.label="":n.label=n.id);const t=x.get(n.id);if(void 0===t?x.set(n.id,n):("na"!==n.type&&(t.type=n.type),n.label!==n.id&&(t.label=n.label)),n.children&&C(n.children,n),"space"===n.type){const t=n.width??1;for(let e=0;e{c.Rm.debug("Clear called"),(0,l.IU)(),K={id:"root",type:"composite",children:[],columns:-1},x=new Map([["root",K]]),R=[],k=new Map,f=[],m=new Map},"clear");function N(t){switch(c.Rm.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return c.Rm.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function T(t){return c.Rm.debug("typeStr2Type",t),"=="===t?"thick":"normal"}function A(t){switch(t.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}(0,c.K2)(N,"typeStr2Type"),(0,c.K2)(T,"edgeTypeStr2Type"),(0,c.K2)(A,"edgeStrToEdgeData");var I=0,O=(0,c.K2)(()=>(I++,"id-"+Math.random().toString(36).substr(2,12)+"-"+I),"generateId"),B=(0,c.K2)(t=>{K.children=t,C(t,K),R=K.children},"setHierarchy"),z=(0,c.K2)(t=>{const e=x.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),M=(0,c.K2)(()=>[...x.values()],"getBlocksFlat"),P=(0,c.K2)(()=>R||[],"getBlocks"),Y=(0,c.K2)(()=>f,"getEdges"),F=(0,c.K2)(t=>x.get(t),"getBlock"),j=(0,c.K2)(t=>{x.set(t.id,t)},"setBlock"),W=(0,c.K2)(()=>c.Rm,"getLogger"),X=(0,c.K2)(function(){return k},"getClasses"),H={getConfig:(0,c.K2)(()=>(0,l.zj)().block,"getConfig"),typeStr2Type:N,edgeTypeStr2Type:T,edgeStrToEdgeData:A,getLogger:W,getBlocksFlat:M,getBlocks:P,getEdges:Y,setHierarchy:B,getBlock:F,setBlock:j,getColumns:z,getClasses:X,clear:$,generateId:O},U=(0,c.K2)((t,e)=>{const r=g.A,a=r(t,"r"),s=r(t,"g"),i=r(t,"b");return h.A(a,s,i,e)},"fade"),Z=(0,c.K2)(t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span,p {\n color: ${t.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${U(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .node .cluster {\n // fill: ${U(t.mainBkg,.5)};\n fill: ${U(t.clusterBkg,.5)};\n stroke: ${U(t.clusterBorder,.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span,p {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n ${(0,a.o)()}\n`,"getStyles"),q=(0,c.K2)((t,e,r,a)=>{e.forEach(e=>{G[e](t,r,a)})},"insertMarkers"),G={extension:(0,c.K2)((t,e,r)=>{c.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),composition:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),aggregation:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),dependency:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),lollipop:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),point:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),circle:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cross:(0,c.K2)((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),barb:(0,c.K2)((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb")},J=q,V=(0,l.D7)()?.block?.padding??8;function Q(t,e){if(0===t||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(1===t)return{px:0,py:e};return{px:e%t,py:Math.floor(e/t)}}(0,c.K2)(Q,"calculateBlockPosition");var tt=(0,c.K2)(t=>{let e=0,r=0;for(const a of t.children){const{width:s,height:i,x:n,y:o}=a.size??{width:0,height:0,x:0,y:0};c.Rm.debug("getMaxChildSize abc95 child:",a.id,"width:",s,"height:",i,"x:",n,"y:",o,a.type),"space"!==a.type&&(s>e&&(e=s/(t.widthInColumns??1)),i>r&&(r=i))}return{width:e,height:r}},"getMaxChildSize");function et(t,e,r=0,a=0){c.Rm.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"siblingWidth",r),t?.size?.width||(t.size={width:r,height:a,x:0,y:0});let s=0,i=0;if(t.children?.length>0){for(const r of t.children)et(r,e);const n=tt(t);s=n.width,i=n.height,c.Rm.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",s,i);for(const e of t.children)e.size&&(c.Rm.debug(`abc95 Setting size of children of ${t.id} id=${e.id} ${s} ${i} ${JSON.stringify(e.size)}`),e.size.width=s*(e.widthInColumns??1)+V*((e.widthInColumns??1)-1),e.size.height=i,e.size.x=0,e.size.y=0,c.Rm.debug(`abc95 updating size of ${t.id} children child:${e.id} maxWidth:${s} maxHeight:${i}`));for(const r of t.children)et(r,e,s,i);const o=t.columns??-1;let l=0;for(const e of t.children)l+=e.widthInColumns??1;let d=t.children.length;o>0&&o0?Math.min(t.children.length,o):t.children.length;if(e>0){const r=(g-e*V-V)/e;c.Rm.debug("abc95 (growing to fit) width",t.id,g,t.size?.width,r);for(const e of t.children)e.size&&(e.size.width=r)}}t.size={width:g,height:u,x:0,y:0}}c.Rm.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function rt(t,e){c.Rm.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);const r=t.columns??-1;if(c.Rm.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){const a=t?.children[0]?.size?.width??0,s=t.children.length*a+(t.children.length-1)*V;c.Rm.debug("widthOfChildren 88",s,"posX");let i=0;c.Rm.debug("abc91 block?.size?.x",t.id,t?.size?.x);let n=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-V,o=0;for(const l of t.children){const a=t;if(!l.size)continue;const{width:s,height:d}=l.size,{px:h,py:g}=Q(r,i);if(g!=o&&(o=g,n=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-V,c.Rm.debug("New row in layout for block",t.id," and child ",l.id,o)),c.Rm.debug(`abc89 layout blocks (child) id: ${l.id} Pos: ${i} (px, py) ${h},${g} (${a?.size?.x},${a?.size?.y}) parent: ${a.id} width: ${s}${V}`),a.size){const t=s/2;l.size.x=n+V+t,c.Rm.debug(`abc91 layout blocks (calc) px, pyid:${l.id} startingPos=X${n} new startingPosX${l.size.x} ${t} padding=${V} width=${s} halfWidth=${t} => x:${l.size.x} y:${l.size.y} ${l.widthInColumns} (width * (child?.w || 1)) / 2 ${s*(l?.widthInColumns??1)/2}`),n=l.size.x+t,l.size.y=a.size.y-a.size.height/2+g*(d+V)+d/2+V,c.Rm.debug(`abc88 layout blocks (calc) px, pyid:${l.id}startingPosX${n}${V}${t}=>x:${l.size.x}y:${l.size.y}${l.widthInColumns}(width * (child?.w || 1)) / 2${s*(l?.widthInColumns??1)/2}`)}l.children&&rt(l,e);let u=l?.widthInColumns??1;r>0&&(u=Math.min(u,r-i%r)),i+=u,c.Rm.debug("abc88 columnsPos",l,i)}}c.Rm.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function at(t,{minX:e,minY:r,maxX:a,maxY:s}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&"root"!==t.id){const{x:i,y:n,width:o,height:l}=t.size;i-o/2a&&(a=i+o/2),n+l/2>s&&(s=n+l/2)}if(t.children)for(const i of t.children)({minX:e,minY:r,maxX:a,maxY:s}=at(i,{minX:e,minY:r,maxX:a,maxY:s}));return{minX:e,minY:r,maxX:a,maxY:s}}function st(t){const e=t.getBlock("root");if(!e)return;et(e,t,0,0),rt(e,t),c.Rm.debug("getBlocks",JSON.stringify(e,null,2));const{minX:r,minY:a,maxX:s,maxY:i}=at(e);return{x:r,y:a,width:s-r,height:i-a}}function it(t,e){e&&t.attr("style",e)}function nt(t,e){const r=(0,u.Ltv)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),a=r.append("xhtml:div"),s=t.label,i=t.isNode?"nodeLabel":"edgeLabel",n=a.append("span");return n.html((0,l.jZ)(s,e)),it(n,t.labelStyle),n.attr("class",i),it(a,t.labelStyle),a.style("display","inline-block"),a.style("white-space","nowrap"),a.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}(0,c.K2)(et,"setBlockSizes"),(0,c.K2)(rt,"layoutBlocks"),(0,c.K2)(at,"findBounds"),(0,c.K2)(st,"layout"),(0,c.K2)(it,"applyStyle"),(0,c.K2)(nt,"addHtmlLabel");var ot=(0,c.K2)(async(t,e,r,a)=>{let s=t||"";"object"==typeof s&&(s=s[0]);const i=(0,l.D7)();if((0,l._3)(i.flowchart.htmlLabels)){s=s.replace(/\\n|\n/g,"
    "),c.Rm.debug("vertexText"+s);return nt({isNode:a,label:await(0,n.hE)((0,o.Sm)(s)),labelStyle:e.replace("fill:","color:")},i)}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let a=[];a="string"==typeof s?s.split(/\\n|\n|/gi):Array.isArray(s)?s:[];for(const e of a){const a=document.createElementNS("http://www.w3.org/2000/svg","tspan");a.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),a.setAttribute("dy","1em"),a.setAttribute("x","0"),r?a.setAttribute("class","title-row"):a.setAttribute("class","row"),a.textContent=e.trim(),t.appendChild(a)}return t}},"createLabel"),lt=(0,c.K2)((t,e,r,a,s)=>{e.arrowTypeStart&&dt(t,"start",e.arrowTypeStart,r,a,s),e.arrowTypeEnd&&dt(t,"end",e.arrowTypeEnd,r,a,s)},"addEdgeMarkers"),ct={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},dt=(0,c.K2)((t,e,r,a,s,i)=>{const n=ct[r];if(!n)return void c.Rm.warn(`Unknown arrow type: ${r}`);const o="start"===e?"Start":"End";t.attr(`marker-${e}`,`url(${a}#${s}_${i}-${n}${o})`)},"addEdgeMarker"),ht={},gt={},ut=(0,c.K2)(async(t,e)=>{const r=(0,l.D7)(),a=(0,l._3)(r.flowchart.htmlLabels),s="markdown"===e.labelType?(0,n.GZ)(t,e.label,{style:e.labelStyle,useHtmlLabels:a,addSvgBackground:!0},r):await ot(e.label,e.labelStyle),i=t.insert("g").attr("class","edgeLabel"),o=i.insert("g").attr("class","label");o.node().appendChild(s);let c,d=s.getBBox();if(a){const t=s.children[0],e=(0,u.Ltv)(s);d=t.getBoundingClientRect(),e.attr("width",d.width),e.attr("height",d.height)}if(o.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),ht[e.id]=i,e.width=d.width,e.height=d.height,e.startLabelLeft){const r=await ot(e.startLabelLeft,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),gt[e.id]||(gt[e.id]={}),gt[e.id].startLeft=a,pt(c,e.startLabelLeft)}if(e.startLabelRight){const r=await ot(e.startLabelRight,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=a.node().appendChild(r),s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),gt[e.id]||(gt[e.id]={}),gt[e.id].startRight=a,pt(c,e.startLabelRight)}if(e.endLabelLeft){const r=await ot(e.endLabelLeft,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),a.node().appendChild(r),gt[e.id]||(gt[e.id]={}),gt[e.id].endLeft=a,pt(c,e.endLabelLeft)}if(e.endLabelRight){const r=await ot(e.endLabelRight,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),a.node().appendChild(r),gt[e.id]||(gt[e.id]={}),gt[e.id].endRight=a,pt(c,e.endLabelRight)}return s},"insertEdgeLabel");function pt(t,e){(0,l.D7)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,c.K2)(pt,"setTerminalWidth");var yt=(0,c.K2)((t,e)=>{c.Rm.debug("Moving label abc88 ",t.id,t.label,ht[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath;const a=(0,l.D7)(),{subGraphTitleTotalMargin:s}=(0,i.O)(a);if(t.label){const a=ht[t.id];let i=t.x,n=t.y;if(r){const a=o._K.calcLabelPosition(r);c.Rm.debug("Moving label "+t.label+" from (",i,",",n,") to (",a.x,",",a.y,") abc88"),e.updatedPath&&(i=a.x,n=a.y)}a.attr("transform",`translate(${i}, ${n+s/2})`)}if(t.startLabelLeft){const e=gt[t.id].startLeft;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.startLabelRight){const e=gt[t.id].startRight;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.endLabelLeft){const e=gt[t.id].endLeft;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.endLabelRight){const e=gt[t.id].endRight;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}},"positionEdgeLabel"),bt=(0,c.K2)((t,e)=>{const r=t.x,a=t.y,s=Math.abs(e.x-r),i=Math.abs(e.y-a),n=t.width/2,o=t.height/2;return s>=n||i>=o},"outsideNode"),xt=(0,c.K2)((t,e,r)=>{c.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const a=t.x,s=t.y,i=Math.abs(a-r.x),n=t.width/2;let o=r.xMath.abs(a-e.x)*l){let t=r.y{c.Rm.debug("abc88 cutPathAtIntersect",t,e);let r=[],a=t[0],s=!1;return t.forEach(t=>{if(bt(e,t)||s)a=t,s||r.push(t);else{const i=xt(e,a,t);let n=!1;r.forEach(t=>{n=n||t.x===i.x&&t.y===i.y}),r.some(t=>t.x===i.x&&t.y===i.y)||r.push(i),s=!0}}),r},"cutPathAtIntersect"),mt=(0,c.K2)(function(t,e,r,a,i,n,o){let d=r.points;c.Rm.debug("abc88 InsertEdge: edge=",r,"e=",e);let h=!1;const g=n.node(e.v);var p=n.node(e.w);p?.intersect&&g?.intersect&&(d=d.slice(1,r.points.length-1),d.unshift(g.intersect(d[0])),d.push(p.intersect(d[d.length-1]))),r.toCluster&&(c.Rm.debug("to cluster abc88",a[r.toCluster]),d=ft(r.points,a[r.toCluster].node),h=!0),r.fromCluster&&(c.Rm.debug("from cluster abc88",a[r.fromCluster]),d=ft(d.reverse(),a[r.fromCluster].node).reverse(),h=!0);const y=d.filter(t=>!Number.isNaN(t.y));let b=u.qrM;!r.curve||"graph"!==i&&"flowchart"!==i||(b=r.curve);const{x:x,y:f}=(0,s.RI)(r),m=(0,u.n8j)().x(x).y(f).curve(b);let w;switch(r.thickness){case"normal":w="edge-thickness-normal";break;case"thick":case"invisible":w="edge-thickness-thick";break;default:w=""}switch(r.pattern){case"solid":w+=" edge-pattern-solid";break;case"dotted":w+=" edge-pattern-dotted";break;case"dashed":w+=" edge-pattern-dashed"}const _=t.append("path").attr("d",m(y)).attr("id",r.id).attr("class"," "+w+(r.classes?" "+r.classes:"")).attr("style",r.style);let L="";((0,l.D7)().flowchart.arrowMarkerAbsolute||(0,l.D7)().state.arrowMarkerAbsolute)&&(L=(0,l.ID)(!0)),lt(_,r,L,o,i);let k={};return h&&(k.updatedPath=d),k.originalPath=r.points,k},"insertEdge"),wt=(0,c.K2)(t=>{const e=new Set;for(const r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r)}return e},"expandAndDeduplicateDirections"),_t=(0,c.K2)((t,e,r)=>{const a=wt(t),s=e.height+2*r.padding,i=s/2,n=e.width+2*i+r.padding,o=r.padding/2;return a.has("right")&&a.has("left")&&a.has("up")&&a.has("down")?[{x:0,y:0},{x:i,y:0},{x:n/2,y:2*o},{x:n-i,y:0},{x:n,y:0},{x:n,y:-s/3},{x:n+2*o,y:-s/2},{x:n,y:-2*s/3},{x:n,y:-s},{x:n-i,y:-s},{x:n/2,y:-s-2*o},{x:i,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*o,y:-s/2},{x:0,y:-s/3}]:a.has("right")&&a.has("left")&&a.has("up")?[{x:i,y:0},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}]:a.has("right")&&a.has("left")&&a.has("down")?[{x:0,y:0},{x:i,y:-s},{x:n-i,y:-s},{x:n,y:0}]:a.has("right")&&a.has("up")&&a.has("down")?[{x:0,y:0},{x:n,y:-i},{x:n,y:-s+i},{x:0,y:-s}]:a.has("left")&&a.has("up")&&a.has("down")?[{x:n,y:0},{x:0,y:-i},{x:0,y:-s+i},{x:n,y:-s}]:a.has("right")&&a.has("left")?[{x:i,y:0},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s},{x:0,y:-s/2}]:a.has("up")&&a.has("down")?[{x:n/2,y:0},{x:0,y:-o},{x:i,y:-o},{x:i,y:-s+o},{x:0,y:-s+o},{x:n/2,y:-s},{x:n,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o},{x:n,y:-o}]:a.has("right")&&a.has("up")?[{x:0,y:0},{x:n,y:-i},{x:0,y:-s}]:a.has("right")&&a.has("down")?[{x:0,y:0},{x:n,y:0},{x:0,y:-s}]:a.has("left")&&a.has("up")?[{x:n,y:0},{x:0,y:-i},{x:n,y:-s}]:a.has("left")&&a.has("down")?[{x:n,y:0},{x:0,y:0},{x:n,y:-s}]:a.has("right")?[{x:i,y:-o},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s+o}]:a.has("left")?[{x:i,y:0},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s},{x:0,y:-s/2}]:a.has("up")?[{x:i,y:-o},{x:i,y:-s+o},{x:0,y:-s+o},{x:n/2,y:-s},{x:n,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o}]:a.has("down")?[{x:n/2,y:0},{x:0,y:-o},{x:i,y:-o},{x:i,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o},{x:n,y:-o}]:[{x:0,y:0}]},"getArrowPoints");function Lt(t,e){return t.intersect(e)}(0,c.K2)(Lt,"intersectNode");var kt=Lt;function St(t,e,r,a){var s=t.x,i=t.y,n=s-a.x,o=i-a.y,l=Math.sqrt(e*e*o*o+r*r*n*n),c=Math.abs(e*r*n/l);a.x0}(0,c.K2)(Ct,"intersectLine"),(0,c.K2)(Rt,"sameSign");var Kt=Ct,$t=Nt;function Nt(t,e,r){var a=t.x,s=t.y,i=[],n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach(function(t){n=Math.min(n,t.x),o=Math.min(o,t.y)}):(n=Math.min(n,e.x),o=Math.min(o,e.y));for(var l=a-t.width/2-n,c=s-t.height/2-o,d=0;d1&&i.sort(function(t,e){var a=t.x-r.x,s=t.y-r.y,i=Math.sqrt(a*a+s*s),n=e.x-r.x,o=e.y-r.y,l=Math.sqrt(n*n+o*o);return i{var r,a,s=t.x,i=t.y,n=e.x-s,o=e.y-i,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(n)*c?(o<0&&(c=-c),r=0===o?0:c*n/o,a=c):(n<0&&(l=-l),r=l,a=0===n?0:l*o/n),{x:s+r,y:i+a}},"intersectRect")},At=(0,c.K2)(async(t,e,r,a)=>{const s=(0,l.D7)();let i;const d=e.useHtmlLabels||(0,l._3)(s.flowchart.htmlLabels);i=r||"node default";const h=t.insert("g").attr("class",i).attr("id",e.domId||e.id),g=h.insert("g").attr("class","label").attr("style",e.labelStyle);let p;p=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0];const y=g.node();let b;b="markdown"===e.labelType?(0,n.GZ)(g,(0,l.jZ)((0,o.Sm)(p),s),{useHtmlLabels:d,width:e.width||s.flowchart.wrappingWidth,classes:"markdown-node-label"},s):y.appendChild(await ot((0,l.jZ)((0,o.Sm)(p),s),e.labelStyle,!1,a));let x=b.getBBox();const f=e.padding/2;if((0,l._3)(s.flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b),r=t.getElementsByTagName("img");if(r){const t=""===p.replace(/]*>/g,"").trim();await Promise.all([...r].map(e=>new Promise(r=>{function a(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=s.fontSize?s.fontSize:window.getComputedStyle(document.body).fontSize,r=5,a=parseInt(t,10)*r+"px";e.style.minWidth=a,e.style.maxWidth=a}else e.style.width="100%";r(e)}(0,c.K2)(a,"setupImage"),setTimeout(()=>{e.complete&&a()}),e.addEventListener("error",a),e.addEventListener("load",a)})))}x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}return d?g.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"):g.attr("transform","translate(0, "+-x.height/2+")"),e.centerLabel&&g.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"),g.insert("rect",":first-child"),{shapeSvg:h,bbox:x,halfPadding:f,label:g}},"labelHelper"),It=(0,c.K2)((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");function Ot(t,e,r,a){return t.insert("polygon",":first-child").attr("points",a.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}(0,c.K2)(Ot,"insertPolygonShape");var Bt=(0,c.K2)(async(t,e)=>{e.useHtmlLabels||(0,l.D7)().flowchart.htmlLabels||(e.centerLabel=!0);const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes,!0);c.Rm.info("Classes = ",e.classes);const i=r.insert("rect",":first-child");return i.attr("rx",e.rx).attr("ry",e.ry).attr("x",-a.width/2-s).attr("y",-a.height/2-s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r},"note"),zt=(0,c.K2)(t=>t?" "+t:"","formatClass"),Mt=(0,c.K2)((t,e)=>`${e||"node default"}${zt(t.classes)} ${zt(t.class)}`,"getClassesFromNode"),Pt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding+(a.height+e.padding),i=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];c.Rm.info("Question main (Circle)");const n=Ot(r,s,s,i);return n.attr("style",e.style),It(e,n),e.intersect=function(t){return c.Rm.warn("Intersect called"),Tt.polygon(e,i,t)},r},"question"),Yt=(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return r.insert("polygon",":first-child").attr("points",a.map(function(t){return t.x+","+t.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return Tt.circle(e,14,t)},r},"choice"),Ft=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.height+e.padding,i=s/4,n=a.width+2*i+e.padding,o=[{x:i,y:0},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}],l=Ot(r,n,s,o);return l.attr("style",e.style),It(e,l),e.intersect=function(t){return Tt.polygon(e,o,t)},r},"hexagon"),jt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,void 0,!0),s=a.height+2*e.padding,i=s/2,n=a.width+2*i+e.padding,o=_t(e.directions,a,e),l=Ot(r,n,s,o);return l.attr("style",e.style),It(e,l),e.intersect=function(t){return Tt.polygon(e,o,t)},r},"block_arrow"),Wt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-i/2,y:0},{x:s,y:0},{x:s,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}];return Ot(r,s,i,n).attr("style",e.style),e.width=s+i,e.height=i,e.intersect=function(t){return Tt.polygon(e,n,t)},r},"rect_left_inv_arrow"),Xt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-2*i/6,y:0},{x:s-i/6,y:0},{x:s+2*i/6,y:-i},{x:i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"lean_right"),Ht=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:2*i/6,y:0},{x:s+i/6,y:0},{x:s-2*i/6,y:-i},{x:-i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"lean_left"),Ut=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-2*i/6,y:0},{x:s+2*i/6,y:0},{x:s-i/6,y:-i},{x:i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"trapezoid"),Zt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:i/6,y:0},{x:s-i/6,y:0},{x:s+2*i/6,y:-i},{x:-2*i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"inv_trapezoid"),qt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:0,y:0},{x:s+i/2,y:0},{x:s,y:-i/2},{x:s+i/2,y:-i},{x:0,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"rect_right_inv_arrow"),Gt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=s/2,n=i/(2.5+s/50),o=a.height+n+e.padding,l="M 0,"+n+" a "+i+","+n+" 0,0,0 "+s+" 0 a "+i+","+n+" 0,0,0 "+-s+" 0 l 0,"+o+" a "+i+","+n+" 0,0,0 "+s+" 0 l 0,"+-o,c=r.attr("label-offset-y",n).insert("path",":first-child").attr("style",e.style).attr("d",l).attr("transform","translate("+-s/2+","+-(o/2+n)+")");return It(e,c),e.intersect=function(t){const r=Tt.rect(e,t),a=r.x-e.x;if(0!=i&&(Math.abs(a)e.height/2-n)){let s=n*n*(1-a*a/(i*i));0!=s&&(s=Math.sqrt(s)),s=n-s,t.y-e.y>0&&(s=-s),r.y+=s}return r},r},"cylinder"),Jt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes+" "+e.class,!0),i=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,l=e.positioned?-n/2:-a.width/2-s,d=e.positioned?-o/2:-a.height/2-s;if(i.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(i,e.props.borders,n,o),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r},"rect"),Vt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes,!0),i=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,l=e.positioned?-n/2:-a.width/2-s,d=e.positioned?-o/2:-a.height/2-s;if(i.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(i,e.props.borders,n,o),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r},"composite"),Qt=(0,c.K2)(async(t,e)=>{const{shapeSvg:r}=await At(t,e,"label",!0);c.Rm.trace("Classes = ",e.class);const a=r.insert("rect",":first-child");if(a.attr("width",0).attr("height",0),r.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(a,e.props.borders,0,0),t.delete("borders")),t.forEach(t=>{c.Rm.warn(`Unknown node property ${t}`)})}return It(e,a),e.intersect=function(t){return Tt.rect(e,t)},r},"labelRect");function te(t,e,r,a){const s=[],i=(0,c.K2)(t=>{s.push(t,0)},"addBorder"),n=(0,c.K2)(t=>{s.push(0,t)},"skipBorder");e.includes("t")?(c.Rm.debug("add top border"),i(r)):n(r),e.includes("r")?(c.Rm.debug("add right border"),i(a)):n(a),e.includes("b")?(c.Rm.debug("add bottom border"),i(r)):n(r),e.includes("l")?(c.Rm.debug("add left border"),i(a)):n(a),t.attr("stroke-dasharray",s.join(" "))}(0,c.K2)(te,"applyNodePropertyBorders");var ee=(0,c.K2)(async(t,e)=>{let r;r=e.classes?"node "+e.classes:"node default";const a=t.insert("g").attr("class",r).attr("id",e.domId||e.id),s=a.insert("rect",":first-child"),i=a.insert("line"),n=a.insert("g").attr("class","label"),o=e.labelText.flat?e.labelText.flat():e.labelText;let d="";d="object"==typeof o?o[0]:o,c.Rm.info("Label text abc79",d,o,"object"==typeof o);const h=n.node().appendChild(await ot(d,e.labelStyle,!0,!0));let g={width:0,height:0};if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=h.children[0],e=(0,u.Ltv)(h);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}c.Rm.info("Text 2",o);const p=o.slice(1,o.length);let y=h.getBBox();const b=n.node().appendChild(await ot(p.join?p.join("
    "):p,e.labelStyle,!0,!0));if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}const x=e.padding/2;return(0,u.Ltv)(b).attr("transform","translate( "+(g.width>y.width?0:(y.width-g.width)/2)+", "+(y.height+x+5)+")"),(0,u.Ltv)(h).attr("transform","translate( "+(g.width{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.height+e.padding,i=a.width+s/4+e.padding,n=r.insert("rect",":first-child").attr("style",e.style).attr("rx",s/2).attr("ry",s/2).attr("x",-i/2).attr("y",-s/2).attr("width",i).attr("height",s);return It(e,n),e.intersect=function(t){return Tt.rect(e,t)},r},"stadium"),ae=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,Mt(e,void 0),!0),i=r.insert("circle",":first-child");return i.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),c.Rm.info("Circle main"),It(e,i),e.intersect=function(t){return c.Rm.info("Circle intersect",e,a.width/2+s,t),Tt.circle(e,a.width/2+s,t)},r},"circle"),se=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,Mt(e,void 0),!0),i=r.insert("g",":first-child"),n=i.insert("circle"),o=i.insert("circle");return i.attr("class",e.class),n.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s+5).attr("width",a.width+e.padding+10).attr("height",a.height+e.padding+10),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),c.Rm.info("DoubleCircle main"),It(e,n),e.intersect=function(t){return c.Rm.info("DoubleCircle intersect",e,a.width/2+s+5,t),Tt.circle(e,a.width/2+s+5,t)},r},"doublecircle"),ie=(0,c.K2)(async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:0,y:0},{x:s,y:0},{x:s,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:s+8,y:0},{x:s+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r},"subroutine"),ne=(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child");return a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),It(e,a),e.intersect=function(t){return Tt.circle(e,7,t)},r},"start"),oe=(0,c.K2)((t,e,r)=>{const a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let s=70,i=10;"LR"===r&&(s=10,i=70);const n=a.append("rect").attr("x",-1*s/2).attr("y",-1*i/2).attr("width",s).attr("height",i).attr("class","fork-join");return It(e,n),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Tt.rect(e,t)},a},"forkJoin"),le={rhombus:Pt,composite:Vt,question:Pt,rect:Jt,labelRect:Qt,rectWithTitle:ee,choice:Yt,circle:ae,doublecircle:se,stadium:re,hexagon:Ft,block_arrow:jt,rect_left_inv_arrow:Wt,lean_right:Xt,lean_left:Ht,trapezoid:Ut,inv_trapezoid:Zt,rect_right_inv_arrow:qt,cylinder:Gt,start:ne,end:(0,c.K2)((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child"),s=r.insert("circle",":first-child");return s.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),a.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),It(e,s),e.intersect=function(t){return Tt.circle(e,7,t)},r},"end"),note:Bt,subroutine:ie,fork:oe,join:oe,class_box:(0,c.K2)(async(t,e)=>{const r=e.padding/2;let a;a=e.classes?"node "+e.classes:"node default";const s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),i=s.insert("rect",":first-child"),n=s.insert("line"),o=s.insert("line");let c=0,d=4;const h=s.insert("g").attr("class","label");let g=0;const p=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xab"+e.classData.annotations[0]+"\xbb":"",b=h.node().appendChild(await ot(y,e.labelStyle,!0,!0));let x=b.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+4,c+=x.width);let f=e.classData.label;void 0!==e.classData.type&&""!==e.classData.type&&((0,l.D7)().flowchart.htmlLabels?f+="<"+e.classData.type+">":f+="<"+e.classData.type+">");const m=h.node().appendChild(await ot(f,e.labelStyle,!0,!0));(0,u.Ltv)(m).attr("class","classTitle");let w=m.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=m.children[0],e=(0,u.Ltv)(m);w=t.getBoundingClientRect(),e.attr("width",w.width),e.attr("height",w.height)}d+=w.height+4,w.width>c&&(c=w.width);const _=[];e.classData.members.forEach(async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.D7)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=h.node().appendChild(await ot(a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0));let i=s.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=s.children[0],e=(0,u.Ltv)(s);i=t.getBoundingClientRect(),e.attr("width",i.width),e.attr("height",i.height)}i.width>c&&(c=i.width),d+=i.height+4,_.push(s)}),d+=8;const L=[];if(e.classData.methods.forEach(async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.D7)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=h.node().appendChild(await ot(a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0));let i=s.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=s.children[0],e=(0,u.Ltv)(s);i=t.getBoundingClientRect(),e.attr("width",i.width),e.attr("height",i.height)}i.width>c&&(c=i.width),d+=i.height+4,L.push(s)}),d+=8,p){let t=(c-x.width)/2;(0,u.Ltv)(b).attr("transform","translate( "+(-1*c/2+t)+", "+-1*d/2+")"),g=x.height+4}let k=(c-w.width)/2;return(0,u.Ltv)(m).attr("transform","translate( "+(-1*c/2+k)+", "+(-1*d/2+g)+")"),g+=w.height+4,n.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+g).attr("y2",-d/2-r+8+g),g+=8,_.forEach(t=>{(0,u.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+g+4)+")");const e=t?.getBBox();g+=(e?.height??0)+4}),g+=8,o.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+g).attr("y2",-d/2-r+8+g),g+=8,L.forEach(t=>{(0,u.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+g)+")");const e=t?.getBBox();g+=(e?.height??0)+4}),i.attr("style",e.style).attr("class","outer title-state").attr("x",-c/2-r).attr("y",-d/2-r).attr("width",c+e.padding).attr("height",d+e.padding),It(e,i),e.intersect=function(t){return Tt.rect(e,t)},s},"class_box")},ce={},de=(0,c.K2)(async(t,e,r)=>{let a,s;if(e.link){let i;"sandbox"===(0,l.D7)().securityLevel?i="_top":e.linkTarget&&(i=e.linkTarget||"_blank"),a=t.insert("svg:a").attr("xlink:href",e.link).attr("target",i),s=await le[e.shape](a,e,r)}else s=await le[e.shape](t,e,r),a=s;return e.tooltip&&s.attr("title",e.tooltip),e.class&&s.attr("class","node default "+e.class),ce[e.id]=a,e.haveCallback&&ce[e.id].attr("class",ce[e.id].attr("class")+" clickable"),a},"insertNode"),he=(0,c.K2)(t=>{const e=ce[t.id];c.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r},"positionNode");function ge(t,e,r=!1){const a=t;let s="default";(a?.classes?.length||0)>0&&(s=(a?.classes??[]).join(" ")),s+=" flowchart-label";let i,n=0,c="";switch(a.type){case"round":n=5,c="rect";break;case"composite":n=0,c="composite",i=0;break;case"square":case"group":default:c="rect";break;case"diamond":c="question";break;case"hexagon":c="hexagon";break;case"block_arrow":c="block_arrow";break;case"odd":case"rect_left_inv_arrow":c="rect_left_inv_arrow";break;case"lean_right":c="lean_right";break;case"lean_left":c="lean_left";break;case"trapezoid":c="trapezoid";break;case"inv_trapezoid":c="inv_trapezoid";break;case"circle":c="circle";break;case"ellipse":c="ellipse";break;case"stadium":c="stadium";break;case"subroutine":c="subroutine";break;case"cylinder":c="cylinder";break;case"doublecircle":c="doublecircle"}const d=(0,o.sM)(a?.styles??[]),h=a.label,g=a.size??{width:0,height:0,x:0,y:0};return{labelStyle:d.labelStyle,shape:c,labelText:h,rx:n,ry:n,class:s,style:d.style,id:a.id,directions:a.directions,width:g.width,height:g.height,x:g.x,y:g.y,positioned:r,intersect:void 0,type:a.type,padding:i??(0,l.zj)()?.block?.padding??0}}async function ue(t,e,r){const a=ge(e,0,!1);if("group"===a.type)return;const s=(0,l.zj)(),i=await de(t,a,{config:s}),n=i.node().getBBox(),o=r.getBlock(a.id);o.size={width:n.width,height:n.height,x:0,y:0,node:i},r.setBlock(o),i.remove()}async function pe(t,e,r){const a=ge(e,0,!0);if("space"!==r.getBlock(a.id).type){const r=(0,l.zj)();await de(t,a,{config:r}),e.intersect=a?.intersect,he(a)}}async function ye(t,e,r,a){for(const s of e)await a(t,s,r),s.children&&await ye(t,s.children,r,a)}async function be(t,e,r){await ye(t,e,r,ue)}async function xe(t,e,r){await ye(t,e,r,pe)}async function fe(t,e,r,a,s){const i=new p.T({multigraph:!0,compound:!0});i.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const n of r)n.size&&i.setNode(n.id,{width:n.size.width,height:n.size.height,intersect:n.intersect});for(const n of e)if(n.start&&n.end){const e=a.getBlock(n.start),r=a.getBlock(n.end);if(e?.size&&r?.size){const a=e.size,o=r.size,l=[{x:a.x,y:a.y},{x:a.x+(o.x-a.x)/2,y:a.y+(o.y-a.y)/2},{x:o.x,y:o.y}];mt(t,{v:n.start,w:n.end,name:n.id},{...n,arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",i,s),n.label&&(await ut(t,{...n,label:n.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),yt({...n,x:l[1].x,y:l[1].y},{originalPath:l}))}}}(0,c.K2)(ge,"getNodeFromBlock"),(0,c.K2)(ue,"calculateBlockSize"),(0,c.K2)(pe,"insertBlockPositioned"),(0,c.K2)(ye,"performOperations"),(0,c.K2)(be,"calculateBlockSizes"),(0,c.K2)(xe,"insertBlocks"),(0,c.K2)(fe,"insertEdges");var me=(0,c.K2)(function(t,e){return e.db.getClasses()},"getClasses"),we={parser:b,db:H,renderer:{draw:(0,c.K2)(async function(t,e,r,a){const{securityLevel:s,block:i}=(0,l.zj)(),n=a.db;let o;"sandbox"===s&&(o=(0,u.Ltv)("#i"+e));const d="sandbox"===s?(0,u.Ltv)(o.nodes()[0].contentDocument.body):(0,u.Ltv)("body"),h="sandbox"===s?d.select(`[id="${e}"]`):(0,u.Ltv)(`[id="${e}"]`);J(h,["point","circle","cross"],a.type,e);const g=n.getBlocks(),p=n.getBlocksFlat(),y=n.getEdges(),b=h.insert("g").attr("class","block");await be(b,g,n);const x=st(n);if(await xe(b,g,n),await fe(b,y,p,n,e),x){const t=x,e=Math.max(1,Math.round(t.width/t.height*.125)),r=t.height+e+10,a=t.width+10,{useMaxWidth:s}=i;(0,l.a$)(h,r,a,!!s),c.Rm.debug("Here Bounds",x,t),h.attr("viewBox",`${t.x-5} ${t.y-5} ${t.width+10} ${t.height+10}`)}},"draw"),getClasses:me},styles:Z}},7981:(t,e,r)=>{r.d(e,{T:()=>f});var a=r(9142),s=r(9610),i=r(7422),n=r(4092),o=r(6401),l=r(8058),c=r(9592),d=r(3588),h=r(4326),g=r(9902),u=r(3533);const p=(0,h.A)(function(t){return(0,g.A)((0,d.A)(t,1,u.A,!0))});var y=r(8207),b=r(9463),x="\0";class f{constructor(t={}){this._isDirected=!Object.prototype.hasOwnProperty.call(t,"directed")||t.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(t,"multigraph")&&t.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=a.A(void 0),this._defaultEdgeLabelFn=a.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[x]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return s.A(t)||(t=a.A(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return i.A(this._nodes)}sources(){var t=this;return n.A(this.nodes(),function(e){return o.A(t._in[e])})}sinks(){var t=this;return n.A(this.nodes(),function(e){return o.A(t._out[e])})}setNodes(t,e){var r=arguments,a=this;return l.A(t,function(t){r.length>1?a.setNode(t,e):a.setNode(t)}),this}setNode(t,e){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=x,this._children[t]={},this._children[x][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var e=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],l.A(this.children(t),t=>{this.setParent(t)}),delete this._children[t]),l.A(i.A(this._in[t]),e),delete this._in[t],delete this._preds[t],l.A(i.A(this._out[t]),e),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(c.A(e))e=x;else{for(var r=e+="";!c.A(r);r=this.parent(r))if(r===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==x)return e}}children(t){if(c.A(t)&&(t=x),this._isCompound){var e=this._children[t];if(e)return i.A(e)}else{if(t===x)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return i.A(e)}successors(t){var e=this._sucs[t];if(e)return i.A(e)}neighbors(t){var e=this.predecessors(t);if(e)return p(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var r=this;l.A(this._nodes,function(r,a){t(a)&&e.setNode(a,r)}),l.A(this._edgeObjs,function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,r.edge(t))});var a={};function s(t){var i=r.parent(t);return void 0===i||e.hasNode(i)?(a[t]=i,i):i in a?a[i]:s(i)}return this._isCompound&&l.A(e.nodes(),function(t){e.setParent(t,s(t))}),e}setDefaultEdgeLabel(t){return s.A(t)||(t=a.A(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return y.A(this._edgeObjs)}setPath(t,e){var r=this,a=arguments;return b.A(t,function(t,s){return a.length>1?r.setEdge(t,s,e):r.setEdge(t,s),s}),this}setEdge(){var t,e,r,a,s=!1,i=arguments[0];"object"==typeof i&&null!==i&&"v"in i?(t=i.v,e=i.w,r=i.name,2===arguments.length&&(a=arguments[1],s=!0)):(t=i,e=arguments[1],r=arguments[3],arguments.length>2&&(a=arguments[2],s=!0)),t=""+t,e=""+e,c.A(r)||(r=""+r);var n=_(this._isDirected,t,e,r);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,n))return s&&(this._edgeLabels[n]=a),this;if(!c.A(r)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[n]=s?a:this._defaultEdgeLabelFn(t,e,r);var o=function(t,e,r,a){var s=""+e,i=""+r;if(!t&&s>i){var n=s;s=i,i=n}var o={v:s,w:i};a&&(o.name=a);return o}(this._isDirected,t,e,r);return t=o.v,e=o.w,Object.freeze(o),this._edgeObjs[n]=o,m(this._preds[e],t),m(this._sucs[t],e),this._in[e][n]=o,this._out[t][n]=o,this._edgeCount++,this}edge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r);return this._edgeLabels[a]}hasEdge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r);return Object.prototype.hasOwnProperty.call(this._edgeLabels,a)}removeEdge(t,e,r){var a=1===arguments.length?L(this._isDirected,arguments[0]):_(this._isDirected,t,e,r),s=this._edgeObjs[a];return s&&(t=s.v,e=s.w,delete this._edgeLabels[a],delete this._edgeObjs[a],w(this._preds[e],t),w(this._sucs[t],e),delete this._in[e][a],delete this._out[t][a],this._edgeCount--),this}inEdges(t,e){var r=this._in[t];if(r){var a=y.A(r);return e?n.A(a,function(t){return t.v===e}):a}}outEdges(t,e){var r=this._out[t];if(r){var a=y.A(r);return e?n.A(a,function(t){return t.w===e}):a}}nodeEdges(t,e){var r=this.inEdges(t,e);if(r)return r.concat(this.outEdges(t,e))}}function m(t,e){t[e]?t[e]++:t[e]=1}function w(t,e){--t[e]||delete t[e]}function _(t,e,r,a){var s=""+e,i=""+r;if(!t&&s>i){var n=s;s=i,i=n}return s+"\x01"+i+"\x01"+(c.A(a)?"\0":a)}function L(t,e){return _(t,e.v,e.w,e.name)}f.prototype._nodeCount=0,f.prototype._edgeCount=0}}]); \ No newline at end of file diff --git a/user/assets/js/5e95c892.cc50fa5c.js b/user/assets/js/5e95c892.cc50fa5c.js new file mode 100644 index 0000000..47f3a6a --- /dev/null +++ b/user/assets/js/5e95c892.cc50fa5c.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[9647],{7121:(s,e,r)=>{r.r(e),r.d(e,{default:()=>o});r(6540);var u=r(4164),a=r(7559),c=r(5500),l=r(2831),t=r(4042),i=r(4848);function o(s){return(0,i.jsx)(c.e3,{className:(0,u.A)(a.G.wrapper.docsPages),children:(0,i.jsx)(t.A,{children:(0,l.v)(s.route.routes)})})}}}]); \ No newline at end of file diff --git a/user/assets/js/617.e43b118d.js b/user/assets/js/617.e43b118d.js new file mode 100644 index 0000000..c8b9bc0 --- /dev/null +++ b/user/assets/js/617.e43b118d.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[617],{617:(s,e,c)=>{c.d(e,{createPieServices:()=>i.f});var i=c(9150);c(7960)}}]); \ No newline at end of file diff --git a/user/assets/js/6241.0bf2e0bf.js b/user/assets/js/6241.0bf2e0bf.js new file mode 100644 index 0000000..c003098 --- /dev/null +++ b/user/assets/js/6241.0bf2e0bf.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[6241],{2501:(t,e,n)=>{n.d(e,{o:()=>i});var i=(0,n(797).K2)(()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n","getIconStyles")},6241:(t,e,n)=>{n.d(e,{diagram:()=>I});var i=n(3590),s=n(2501),r=n(3981),o=n(5894),a=(n(3245),n(2387),n(92),n(3226),n(7633)),c=n(797),l=n(3219),h=n(8041),u=n(5263),g=function(){var t=(0,c.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],a=[1,19],l=[6,7,8],h=[1,26],u=[1,24],g=[1,25],d=[6,7,11],p=[1,31],y=[6,7,11,24],f=[1,6,13,16,17,20,23],m=[1,35],b=[1,36],_=[1,6,7,11,13,16,17,20,23],k=[1,38],E={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:(0,c.K2)(function(t,e,n,i,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",r[a-1].id),i.addNode(r[a-2].length,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 16:i.getLogger().info("Node: ",r[a].id),i.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 17:i.getLogger().trace("Icon: ",r[a]),i.decorateNode({icon:r[a]});break;case 18:case 23:i.decorateNode({class:r[a]});break;case 19:i.getLogger().trace("SPACELIST");break;case 20:i.getLogger().trace("Node: ",r[a-1].id),i.addNode(0,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 21:i.getLogger().trace("Node: ",r[a].id),i.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 22:i.decorateNode({icon:r[a]});break;case 27:i.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 28:this.$={id:r[a],descr:r[a],type:0};break;case 29:i.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 30:this.$=r[a-1]+r[a];break;case 31:this.$=r[a]}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:n,9:22,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:h,7:u,10:23,11:g},t(d,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:o,23:a}),t(d,[2,19]),t(d,[2,21],{15:30,24:p}),t(d,[2,22]),t(d,[2,23]),t(y,[2,25]),t(y,[2,26]),t(y,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:u,10:34,11:g},{1:[2,7],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(f,[2,14],{7:m,11:b}),t(_,[2,8]),t(_,[2,9]),t(_,[2,10]),t(d,[2,16],{15:37,24:p}),t(d,[2,17]),t(d,[2,18]),t(d,[2,20],{24:k}),t(y,[2,31]),{21:[1,39]},{22:[1,40]},t(f,[2,13],{7:m,11:b}),t(_,[2,11]),t(_,[2,12]),t(d,[2,15],{24:k}),t(y,[2,30]),{22:[1,41]},t(y,[2,27]),t(y,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,a="",l=0,h=0,u=0,g=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var f=d.yylloc;r.push(f);var m=d.options&&d.options.ranges;function b(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,c.K2)(b,"lex");for(var _,k,E,S,N,x,D,L,I,v={};;){if(E=n[n.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==_&&(_=b()),S=o[E]&&o[E][_]),void 0===S||!S.length||!S[0]){var C="";for(x in I=[],o[E])this.terminals_[x]&&x>2&&I.push("'"+this.terminals_[x]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[_]||_,line:d.yylineno,loc:f,expected:I})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(S[0]){case 1:n.push(_),s.push(d.yytext),r.push(d.yylloc),n.push(S[1]),_=null,k?(_=k,k=null):(h=d.yyleng,a=d.yytext,l=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(D=this.productions_[S[1]][1],v.$=s[s.length-D],v._$={first_line:r[r.length-(D||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(D||1)].first_column,last_column:r[r.length-1].last_column},m&&(v._$.range=[r[r.length-(D||1)].range[0],r[r.length-1].range[1]]),void 0!==(N=this.performAction.apply(v,[a,h,l,p.yy,S[1],s,r].concat(g))))return N;D&&(n=n.slice(0,-1*D*2),s=s.slice(0,-1*D),r=r.slice(0,-1*D)),n.push(this.productions_[S[1]][0]),s.push(v.$),r.push(v._$),L=o[n[n.length-2]][n[n.length-1]],n.push(L);break;case 3:return!0}}return!0},"parse")},S=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,n,i){switch(n){case 0:return this.pushState("shapeData"),e.yytext="",24;case 1:return this.pushState("shapeDataStr"),24;case 2:return this.popState(),24;case 3:const n=/\n\s*/g;return e.yytext=e.yytext.replace(n,"
    "),24;case 4:return 24;case 5:case 10:case 29:case 32:this.popState();break;case 6:return t.getLogger().trace("Found comment",e.yytext),6;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;case 11:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return t.getLogger().trace("SPACELINE"),6;case 13:return 7;case 14:return 16;case 15:t.getLogger().trace("end icon"),this.popState();break;case 16:return t.getLogger().trace("Exploding node"),this.begin("NODE"),20;case 17:return t.getLogger().trace("Cloud"),this.begin("NODE"),20;case 18:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;case 19:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;case 20:case 21:case 22:case 23:return this.begin("NODE"),20;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 30:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 33:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 34:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 35:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 36:case 39:case 40:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 37:case 38:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 41:case 42:return t.getLogger().trace("Long description:",e.yytext),21}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}}}();function N(){this.yy={}}return E.lexer=S,(0,c.K2)(N,"Parser"),N.prototype=E,E.Parser=N,new N}();g.parser=g;var d=g,p=[],y=[],f=0,m={},b=(0,c.K2)(()=>{p=[],y=[],f=0,m={}},"clear"),_=(0,c.K2)(t=>{if(0===p.length)return null;const e=p[0].level;let n=null;for(let i=p.length-1;i>=0;i--)if(p[i].level!==e||n||(n=p[i]),p[i].levelt.parentId===i.id);for(const r of s){const e={id:r.id,parentId:i.id,label:(0,a.jZ)(r.label??"",n),isGroup:!1,ticket:r?.ticket,priority:r?.priority,assigned:r?.assigned,icon:r?.icon,shape:"kanbanItem",level:r.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(e)}}return{nodes:t,edges:[],other:{},config:(0,a.D7)()}},"getData"),S=(0,c.K2)((t,e,n,i,s)=>{const o=(0,a.D7)();let c=o.mindmap?.padding??a.UI.mindmap.padding;switch(i){case N.ROUNDED_RECT:case N.RECT:case N.HEXAGON:c*=2}const l={id:(0,a.jZ)(e,o)||"kbn"+f++,level:t,label:(0,a.jZ)(n,o),width:o.mindmap?.maxNodeWidth??a.UI.mindmap.maxNodeWidth,padding:c,isGroup:!1};if(void 0!==s){let t;t=s.includes("\n")?s+"\n":"{\n"+s+"\n}";const e=(0,r.H)(t,{schema:r.r});if(e.shape&&(e.shape!==e.shape.toLowerCase()||e.shape.includes("_")))throw new Error(`No such shape: ${e.shape}. Shape names should be lowercase.`);e?.shape&&"kanbanItem"===e.shape&&(l.shape=e?.shape),e?.label&&(l.label=e?.label),e?.icon&&(l.icon=e?.icon.toString()),e?.assigned&&(l.assigned=e?.assigned.toString()),e?.ticket&&(l.ticket=e?.ticket.toString()),e?.priority&&(l.priority=e?.priority)}const h=_(t);h?l.parentId=h.id||"kbn"+f++:y.push(l),p.push(l)},"addNode"),N={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},x={clear:b,addNode:S,getSections:k,getData:E,nodeType:N,getType:(0,c.K2)((t,e)=>{switch(c.Rm.debug("In get type",t,e),t){case"[":return N.RECT;case"(":return")"===e?N.ROUNDED_RECT:N.CLOUD;case"((":return N.CIRCLE;case")":return N.CLOUD;case"))":return N.BANG;case"{{":return N.HEXAGON;default:return N.DEFAULT}},"getType"),setElementForId:(0,c.K2)((t,e)=>{m[t]=e},"setElementForId"),decorateNode:(0,c.K2)(t=>{if(!t)return;const e=(0,a.D7)(),n=p[p.length-1];t.icon&&(n.icon=(0,a.jZ)(t.icon,e)),t.class&&(n.cssClasses=(0,a.jZ)(t.class,e))},"decorateNode"),type2Str:(0,c.K2)(t=>{switch(t){case N.DEFAULT:return"no-border";case N.RECT:return"rect";case N.ROUNDED_RECT:return"rounded-rect";case N.CIRCLE:return"circle";case N.CLOUD:return"cloud";case N.BANG:return"bang";case N.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),getLogger:(0,c.K2)(()=>c.Rm,"getLogger"),getElementById:(0,c.K2)(t=>m[t],"getElementById")},D={draw:(0,c.K2)(async(t,e,n,s)=>{c.Rm.debug("Rendering kanban diagram\n"+t);const r=s.db.getData(),l=(0,a.D7)();l.htmlLabels=!1;const h=(0,i.D)(e),u=h.append("g");u.attr("class","sections");const g=h.append("g");g.attr("class","items");const d=r.nodes.filter(t=>t.isGroup);let p=0;const y=[];let f=25;for(const i of d){const t=l?.kanban?.sectionWidth||200;p+=1,i.x=t*p+10*(p-1)/2,i.width=t,i.y=0,i.height=3*t,i.rx=5,i.ry=5,i.cssClasses=i.cssClasses+" section-"+p;const e=await(0,o.U)(u,i);f=Math.max(f,e?.labelBBox?.height),y.push(e)}let m=0;for(const i of d){const t=y[m];m+=1;const e=l?.kanban?.sectionWidth||200,n=3*-e/2+f;let s=n;const a=r.nodes.filter(t=>t.parentId===i.id);for(const r of a){if(r.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");r.x=i.x,r.width=e-15;const t=(await(0,o.on)(g,r,{config:l})).node().getBBox();r.y=s+t.height/2,await(0,o.U_)(r),s=r.y+t.height/2+5}const c=t.cluster.select("rect"),h=Math.max(s-n+30,50)+(f-25);c.attr("height",h)}(0,a.ot)(void 0,h,l.mindmap?.padding??a.UI.kanban.padding,l.mindmap?.useMaxWidth??a.UI.kanban.useMaxWidth)},"draw")},L=(0,c.K2)(t=>{let e="";for(let i=0;it.darkMode?(0,u.A)(e,n):(0,h.A)(e,n),"adjuster");for(let i=0;i`\n .edge {\n stroke-width: 3;\n }\n ${L(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .cluster-label, .label {\n color: ${t.textColor};\n fill: ${t.textColor};\n }\n .kanban-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n ${(0,s.o)()}\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/user/assets/js/6319.d86288e7.js b/user/assets/js/6319.d86288e7.js new file mode 100644 index 0000000..7380bff --- /dev/null +++ b/user/assets/js/6319.d86288e7.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[6319],{2938:(t,r,e)=>{e.d(r,{m:()=>o});var n=e(797),o=class{constructor(t){this.init=t,this.records=this.init()}static{(0,n.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},5871:(t,r,e)=>{function n(t,r){t.accDescr&&r.setAccDescription?.(t.accDescr),t.accTitle&&r.setAccTitle?.(t.accTitle),t.title&&r.setDiagramTitle?.(t.title)}e.d(r,{S:()=>n}),(0,e(797).K2)(n,"populateCommonDb")},6319:(t,r,e)=>{e.d(r,{diagram:()=>ut});var n=e(5871),o=e(2938),a=e(3226),c=e(7633),s=e(797),i=e(8731),h=e(451),d={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},m=c.UI.gitGraph,$=(0,s.K2)(()=>(0,a.$t)({...m,...(0,c.zj)().gitGraph}),"getConfig"),l=new o.m(()=>{const t=$(),r=t.mainBranchName,e=t.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:e}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}});function g(){return(0,a.yT)({length:7})}function y(t,r){const e=Object.create(null);return t.reduce((t,n)=>{const o=r(n);return e[o]||(e[o]=!0,t.push(n)),t},[])}(0,s.K2)(g,"getID"),(0,s.K2)(y,"uniqBy");var p=(0,s.K2)(function(t){l.records.direction=t},"setDirection"),x=(0,s.K2)(function(t){s.Rm.debug("options str",t),t=t?.trim(),t=t||"{}";try{l.records.options=JSON.parse(t)}catch(r){s.Rm.error("error while parsing gitGraph options",r.message)}},"setOptions"),f=(0,s.K2)(function(){return l.records.options},"getOptions"),u=(0,s.K2)(function(t){let r=t.msg,e=t.id;const n=t.type;let o=t.tags;s.Rm.info("commit",r,e,n,o),s.Rm.debug("Entering commit:",r,e,n,o);const a=$();e=c.Y2.sanitizeText(e,a),r=c.Y2.sanitizeText(r,a),o=o?.map(t=>c.Y2.sanitizeText(t,a));const i={id:e||l.records.seq+"-"+g(),message:r,seq:l.records.seq++,type:n??d.NORMAL,tags:o??[],parents:null==l.records.head?[]:[l.records.head.id],branch:l.records.currBranch};l.records.head=i,s.Rm.info("main branch",a.mainBranchName),l.records.commits.has(i.id)&&s.Rm.warn(`Commit ID ${i.id} already exists`),l.records.commits.set(i.id,i),l.records.branches.set(l.records.currBranch,i.id),s.Rm.debug("in pushCommit "+i.id)},"commit"),b=(0,s.K2)(function(t){let r=t.name;const e=t.order;if(r=c.Y2.sanitizeText(r,$()),l.records.branches.has(r))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${r}")`);l.records.branches.set(r,null!=l.records.head?l.records.head.id:null),l.records.branchConfig.set(r,{name:r,order:e}),E(r),s.Rm.debug("in createBranch")},"branch"),w=(0,s.K2)(t=>{let r=t.branch,e=t.id;const n=t.type,o=t.tags,a=$();r=c.Y2.sanitizeText(r,a),e&&(e=c.Y2.sanitizeText(e,a));const i=l.records.branches.get(l.records.currBranch),h=l.records.branches.get(r),m=i?l.records.commits.get(i):void 0,y=h?l.records.commits.get(h):void 0;if(m&&y&&m.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if(l.records.currBranch===r){const t=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(void 0===m||!m){const t=new Error(`Incorrect usage of "merge". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},t}if(!l.records.branches.has(r)){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},t}if(void 0===y||!y){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},t}if(m===y){const t=new Error('Incorrect usage of "merge". Both branches have same head');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(e&&l.records.commits.has(e)){const t=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom id");throw t.hash={text:`merge ${r} ${e} ${n} ${o?.join(" ")}`,token:`merge ${r} ${e} ${n} ${o?.join(" ")}`,expected:[`merge ${r} ${e}_UNIQUE ${n} ${o?.join(" ")}`]},t}const p=h||"",x={id:e||`${l.records.seq}-${g()}`,message:`merged branch ${r} into ${l.records.currBranch}`,seq:l.records.seq++,parents:null==l.records.head?[]:[l.records.head.id,p],branch:l.records.currBranch,type:d.MERGE,customType:n,customId:!!e,tags:o??[]};l.records.head=x,l.records.commits.set(x.id,x),l.records.branches.set(l.records.currBranch,x.id),s.Rm.debug(l.records.branches),s.Rm.debug("in mergeBranch")},"merge"),B=(0,s.K2)(function(t){let r=t.id,e=t.targetId,n=t.tags,o=t.parent;s.Rm.debug("Entering cherryPick:",r,e,n);const a=$();if(r=c.Y2.sanitizeText(r,a),e=c.Y2.sanitizeText(e,a),n=n?.map(t=>c.Y2.sanitizeText(t,a)),o=c.Y2.sanitizeText(o,a),!r||!l.records.commits.has(r)){const t=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const i=l.records.commits.get(r);if(void 0===i||!i)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(o&&(!Array.isArray(i.parents)||!i.parents.includes(o))){throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.")}const h=i.branch;if(i.type===d.MERGE&&!o){throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.")}if(!e||!l.records.commits.has(e)){if(h===l.records.currBranch){const t=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const t=l.records.branches.get(l.records.currBranch);if(void 0===t||!t){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const a=l.records.commits.get(t);if(void 0===a||!a){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const c={id:l.records.seq+"-"+g(),message:`cherry-picked ${i?.message} into ${l.records.currBranch}`,seq:l.records.seq++,parents:null==l.records.head?[]:[l.records.head.id,i.id],branch:l.records.currBranch,type:d.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${i.id}${i.type===d.MERGE?`|parent:${o}`:""}`]};l.records.head=c,l.records.commits.set(c.id,c),l.records.branches.set(l.records.currBranch,c.id),s.Rm.debug(l.records.branches),s.Rm.debug("in cherryPick")}},"cherryPick"),E=(0,s.K2)(function(t){if(t=c.Y2.sanitizeText(t,$()),!l.records.branches.has(t)){const r=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw r.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},r}{l.records.currBranch=t;const r=l.records.branches.get(l.records.currBranch);l.records.head=void 0!==r&&r?l.records.commits.get(r)??null:null}},"checkout");function k(t,r,e){const n=t.indexOf(r);-1===n?t.push(e):t.splice(n,1,e)}function C(t){const r=t.reduce((t,r)=>t.seq>r.seq?t:r,t[0]);let e="";t.forEach(function(t){e+=t===r?"\t*":"\t|"});const n=[e,r.id,r.seq];for(const o in l.records.branches)l.records.branches.get(o)===r.id&&n.push(o);if(s.Rm.debug(n.join(" ")),r.parents&&2==r.parents.length&&r.parents[0]&&r.parents[1]){const e=l.records.commits.get(r.parents[0]);k(t,r,e),r.parents[1]&&t.push(l.records.commits.get(r.parents[1]))}else{if(0==r.parents.length)return;if(r.parents[0]){const e=l.records.commits.get(r.parents[0]);k(t,r,e)}}C(t=y(t,t=>t.id))}(0,s.K2)(k,"upsert"),(0,s.K2)(C,"prettyPrintCommitHistory");var T=(0,s.K2)(function(){s.Rm.debug(l.records.commits);C([v()[0]])},"prettyPrint"),L=(0,s.K2)(function(){l.reset(),(0,c.IU)()},"clear"),K=(0,s.K2)(function(){return[...l.records.branchConfig.values()].map((t,r)=>null!==t.order&&void 0!==t.order?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),M=(0,s.K2)(function(){return l.records.branches},"getBranches"),R=(0,s.K2)(function(){return l.records.commits},"getCommits"),v=(0,s.K2)(function(){const t=[...l.records.commits.values()];return t.forEach(function(t){s.Rm.debug(t.id)}),t.sort((t,r)=>t.seq-r.seq),t},"getCommitsArray"),P={commitType:d,getConfig:$,setDirection:p,setOptions:x,getOptions:f,commit:u,branch:b,merge:w,cherryPick:B,checkout:E,prettyPrint:T,clear:L,getBranchesAsObjArray:K,getBranches:M,getCommits:R,getCommitsArray:v,getCurrentBranch:(0,s.K2)(function(){return l.records.currBranch},"getCurrentBranch"),getDirection:(0,s.K2)(function(){return l.records.direction},"getDirection"),getHead:(0,s.K2)(function(){return l.records.head},"getHead"),setAccTitle:c.SV,getAccTitle:c.iN,getAccDescription:c.m7,setAccDescription:c.EI,setDiagramTitle:c.ke,getDiagramTitle:c.ab},I=(0,s.K2)((t,r)=>{(0,n.S)(t,r),t.dir&&r.setDirection(t.dir);for(const e of t.statements)A(e,r)},"populate"),A=(0,s.K2)((t,r)=>{const e={Commit:(0,s.K2)(t=>r.commit(G(t)),"Commit"),Branch:(0,s.K2)(t=>r.branch(O(t)),"Branch"),Merge:(0,s.K2)(t=>r.merge(q(t)),"Merge"),Checkout:(0,s.K2)(t=>r.checkout(z(t)),"Checkout"),CherryPicking:(0,s.K2)(t=>r.cherryPick(D(t)),"CherryPicking")}[t.$type];e?e(t):s.Rm.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),G=(0,s.K2)(t=>({id:t.id,msg:t.message??"",type:void 0!==t.type?d[t.type]:d.NORMAL,tags:t.tags??void 0}),"parseCommit"),O=(0,s.K2)(t=>({name:t.name,order:t.order??0}),"parseBranch"),q=(0,s.K2)(t=>({branch:t.branch,id:t.id??"",type:void 0!==t.type?d[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),z=(0,s.K2)(t=>t.branch,"parseCheckout"),D=(0,s.K2)(t=>({id:t.id,targetId:"",tags:0===t.tags?.length?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),H={parse:(0,s.K2)(async t=>{const r=await(0,i.qg)("gitGraph",t);s.Rm.debug(r),I(r,P)},"parse")};var S=(0,c.D7)(),Y=S?.gitGraph,N=10,j=40,W=new Map,_=new Map,F=new Map,U=[],V=0,J="LR",Q=(0,s.K2)(()=>{W.clear(),_.clear(),F.clear(),V=0,U=[],J="LR"},"clear"),X=(0,s.K2)(t=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return("string"==typeof t?t.split(/\\n|\n|/gi):t).forEach(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","0"),e.setAttribute("class","row"),e.textContent=t.trim(),r.appendChild(e)}),r},"drawText"),Z=(0,s.K2)(t=>{let r,e,n;return"BT"===J?(e=(0,s.K2)((t,r)=>t<=r,"comparisonFunc"),n=1/0):(e=(0,s.K2)((t,r)=>t>=r,"comparisonFunc"),n=0),t.forEach(t=>{const o="TB"===J||"BT"==J?_.get(t)?.y:_.get(t)?.x;void 0!==o&&e(o,n)&&(r=t,n=o)}),r},"findClosestParent"),tt=(0,s.K2)(t=>{let r="",e=1/0;return t.forEach(t=>{const n=_.get(t).y;n<=e&&(r=t,e=n)}),r||void 0},"findClosestParentBT"),rt=(0,s.K2)((t,r,e)=>{let n=e,o=e;const a=[];t.forEach(t=>{const e=r.get(t);if(!e)throw new Error(`Commit not found for key ${t}`);e.parents.length?(n=nt(e),o=Math.max(n,o)):a.push(e),ot(e,n)}),n=o,a.forEach(t=>{at(t,n,e)}),t.forEach(t=>{const e=r.get(t);if(e?.parents.length){const t=tt(e.parents);n=_.get(t).y-j,n<=o&&(o=n);const r=W.get(e.branch).pos,a=n-N;_.set(e.id,{x:r,y:a})}})},"setParallelBTPos"),et=(0,s.K2)(t=>{const r=Z(t.parents.filter(t=>null!==t));if(!r)throw new Error(`Closest parent not found for commit ${t.id}`);const e=_.get(r)?.y;if(void 0===e)throw new Error(`Closest parent position not found for commit ${t.id}`);return e},"findClosestParentPos"),nt=(0,s.K2)(t=>et(t)+j,"calculateCommitPosition"),ot=(0,s.K2)((t,r)=>{const e=W.get(t.branch);if(!e)throw new Error(`Branch not found for commit ${t.id}`);const n=e.pos,o=r+N;return _.set(t.id,{x:n,y:o}),{x:n,y:o}},"setCommitPosition"),at=(0,s.K2)((t,r,e)=>{const n=W.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);const o=r+e,a=n.pos;_.set(t.id,{x:a,y:o})},"setRootPosition"),ct=(0,s.K2)((t,r,e,n,o,a)=>{if(a===d.HIGHLIGHT)t.append("rect").attr("x",e.x-10).attr("y",e.y-10).attr("width",20).attr("height",20).attr("class",`commit ${r.id} commit-highlight${o%8} ${n}-outer`),t.append("rect").attr("x",e.x-6).attr("y",e.y-6).attr("width",12).attr("height",12).attr("class",`commit ${r.id} commit${o%8} ${n}-inner`);else if(a===d.CHERRY_PICK)t.append("circle").attr("cx",e.x).attr("cy",e.y).attr("r",10).attr("class",`commit ${r.id} ${n}`),t.append("circle").attr("cx",e.x-3).attr("cy",e.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${n}`),t.append("circle").attr("cx",e.x+3).attr("cy",e.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${n}`),t.append("line").attr("x1",e.x+3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${n}`),t.append("line").attr("x1",e.x-3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${n}`);else{const c=t.append("circle");if(c.attr("cx",e.x),c.attr("cy",e.y),c.attr("r",r.type===d.MERGE?9:10),c.attr("class",`commit ${r.id} commit${o%8}`),a===d.MERGE){const a=t.append("circle");a.attr("cx",e.x),a.attr("cy",e.y),a.attr("r",6),a.attr("class",`commit ${n} ${r.id} commit${o%8}`)}if(a===d.REVERSE){t.append("path").attr("d",`M ${e.x-5},${e.y-5}L${e.x+5},${e.y+5}M${e.x-5},${e.y+5}L${e.x+5},${e.y-5}`).attr("class",`commit ${n} ${r.id} commit${o%8}`)}}},"drawCommitBullet"),st=(0,s.K2)((t,r,e,n)=>{if(r.type!==d.CHERRY_PICK&&(r.customId&&r.type===d.MERGE||r.type!==d.MERGE)&&Y?.showCommitLabel){const o=t.append("g"),a=o.insert("rect").attr("class","commit-label-bkg"),c=o.append("text").attr("x",n).attr("y",e.y+25).attr("class","commit-label").text(r.id),s=c.node()?.getBBox();if(s&&(a.attr("x",e.posWithOffset-s.width/2-2).attr("y",e.y+13.5).attr("width",s.width+4).attr("height",s.height+4),"TB"===J||"BT"===J?(a.attr("x",e.x-(s.width+16+5)).attr("y",e.y-12),c.attr("x",e.x-(s.width+16)).attr("y",e.y+s.height-12)):c.attr("x",e.posWithOffset-s.width/2),Y.rotateCommitLabel))if("TB"===J||"BT"===J)c.attr("transform","rotate(-45, "+e.x+", "+e.y+")"),a.attr("transform","rotate(-45, "+e.x+", "+e.y+")");else{const t=-7.5-(s.width+10)/25*9.5,r=10+s.width/25*8.5;o.attr("transform","translate("+t+", "+r+") rotate(-45, "+n+", "+e.y+")")}}},"drawCommitLabel"),it=(0,s.K2)((t,r,e,n)=>{if(r.tags.length>0){let o=0,a=0,c=0;const s=[];for(const n of r.tags.reverse()){const r=t.insert("polygon"),i=t.append("circle"),h=t.append("text").attr("y",e.y-16-o).attr("class","tag-label").text(n),d=h.node()?.getBBox();if(!d)throw new Error("Tag bbox not found");a=Math.max(a,d.width),c=Math.max(c,d.height),h.attr("x",e.posWithOffset-d.width/2),s.push({tag:h,hole:i,rect:r,yOffset:o}),o+=20}for(const{tag:t,hole:r,rect:i,yOffset:h}of s){const o=c/2,s=e.y-19.2-h;if(i.attr("class","tag-label-bkg").attr("points",`\n ${n-a/2-2},${s+2} \n ${n-a/2-2},${s-2}\n ${e.posWithOffset-a/2-4},${s-o-2}\n ${e.posWithOffset+a/2+4},${s-o-2}\n ${e.posWithOffset+a/2+4},${s+o+2}\n ${e.posWithOffset-a/2-4},${s+o+2}`),r.attr("cy",s).attr("cx",n-a/2+2).attr("r",1.5).attr("class","tag-hole"),"TB"===J||"BT"===J){const c=n+h;i.attr("class","tag-label-bkg").attr("points",`\n ${e.x},${c+2}\n ${e.x},${c-2}\n ${e.x+N},${c-o-2}\n ${e.x+N+a+4},${c-o-2}\n ${e.x+N+a+4},${c+o+2}\n ${e.x+N},${c+o+2}`).attr("transform","translate(12,12) rotate(45, "+e.x+","+n+")"),r.attr("cx",e.x+2).attr("cy",c).attr("transform","translate(12,12) rotate(45, "+e.x+","+n+")"),t.attr("x",e.x+5).attr("y",c+3).attr("transform","translate(14,14) rotate(45, "+e.x+","+n+")")}}}},"drawCommitTags"),ht=(0,s.K2)(t=>{switch(t.customType??t.type){case d.NORMAL:return"commit-normal";case d.REVERSE:return"commit-reverse";case d.HIGHLIGHT:return"commit-highlight";case d.MERGE:return"commit-merge";case d.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),dt=(0,s.K2)((t,r,e,n)=>{const o={x:0,y:0};if(!(t.parents.length>0)){if("TB"===r)return 30;if("BT"===r){return(n.get(t.id)??o).y-j}return 0}{const e=Z(t.parents);if(e){const a=n.get(e)??o;if("TB"===r)return a.y+j;if("BT"===r){return(n.get(t.id)??o).y-j}return a.x+j}}return 0},"calculatePosition"),mt=(0,s.K2)((t,r,e)=>{const n="BT"===J&&e?r:r+N,o="TB"===J||"BT"===J?n:W.get(t.branch)?.pos,a="TB"===J||"BT"===J?W.get(t.branch)?.pos:n;if(void 0===a||void 0===o)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:o,posWithOffset:n}},"getCommitPosition"),$t=(0,s.K2)((t,r,e)=>{if(!Y)throw new Error("GitGraph config not found");const n=t.append("g").attr("class","commit-bullets"),o=t.append("g").attr("class","commit-labels");let a="TB"===J||"BT"===J?30:0;const c=[...r.keys()],i=Y?.parallelCommits??!1,h=(0,s.K2)((t,e)=>{const n=r.get(t)?.seq,o=r.get(e)?.seq;return void 0!==n&&void 0!==o?n-o:0},"sortKeys");let d=c.sort(h);"BT"===J&&(i&&rt(d,r,a),d=d.reverse()),d.forEach(t=>{const c=r.get(t);if(!c)throw new Error(`Commit not found for key ${t}`);i&&(a=dt(c,J,a,_));const s=mt(c,a,i);if(e){const t=ht(c),r=c.customType??c.type,e=W.get(c.branch)?.index??0;ct(n,c,s,t,e,r),st(o,c,s,a),it(o,c,s,a)}"TB"===J||"BT"===J?_.set(c.id,{x:s.x,y:s.posWithOffset}):_.set(c.id,{x:s.posWithOffset,y:s.y}),a="BT"===J&&i?a+j:a+j+N,a>V&&(V=a)})},"drawCommits"),lt=(0,s.K2)((t,r,e,n,o)=>{const a=("TB"===J||"BT"===J?e.xt.branch===a,"isOnBranchToGetCurve"),i=(0,s.K2)(e=>e.seq>t.seq&&e.seqi(t)&&c(t))},"shouldRerouteArrow"),gt=(0,s.K2)((t,r,e=0)=>{const n=t+Math.abs(t-r)/2;if(e>5)return n;if(U.every(t=>Math.abs(t-n)>=10))return U.push(n),n;const o=Math.abs(t-r);return gt(t,r-o/5,e+1)},"findLane"),yt=(0,s.K2)((t,r,e,n)=>{const o=_.get(r.id),a=_.get(e.id);if(void 0===o||void 0===a)throw new Error(`Commit positions not found for commits ${r.id} and ${e.id}`);const c=lt(r,e,o,a,n);let s,i="",h="",m=0,$=0,l=W.get(e.branch)?.index;if(e.type===d.MERGE&&r.id!==e.parents[0]&&(l=W.get(r.branch)?.index),c){i="A 10 10, 0, 0, 0,",h="A 10 10, 0, 0, 1,",m=10,$=10;const t=o.ya.x&&(i="A 20 20, 0, 0, 0,",h="A 20 20, 0, 0, 1,",m=20,$=20,s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y-m} ${h} ${o.x-$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x+m} ${o.y} ${i} ${a.x} ${o.y+$} L ${a.x} ${a.y}`),o.x===a.x&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`)):"BT"===J?(o.xa.x&&(i="A 20 20, 0, 0, 0,",h="A 20 20, 0, 0, 1,",m=20,$=20,s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${i} ${o.x-$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`),o.x===a.x&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`)):(o.ya.y&&(s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${h} ${o.x+$} ${a.y} L ${a.x} ${a.y}`),o.y===a.y&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`));if(void 0===s)throw new Error("Line definition not found");t.append("path").attr("d",s).attr("class","arrow arrow"+l%8)},"drawArrow"),pt=(0,s.K2)((t,r)=>{const e=t.append("g").attr("class","commit-arrows");[...r.keys()].forEach(t=>{const n=r.get(t);n.parents&&n.parents.length>0&&n.parents.forEach(t=>{yt(e,r.get(t),n,r)})})},"drawArrows"),xt=(0,s.K2)((t,r)=>{const e=t.append("g");r.forEach((t,r)=>{const n=r%8,o=W.get(t.name)?.pos;if(void 0===o)throw new Error(`Position not found for branch ${t.name}`);const a=e.append("line");a.attr("x1",0),a.attr("y1",o),a.attr("x2",V),a.attr("y2",o),a.attr("class","branch branch"+n),"TB"===J?(a.attr("y1",30),a.attr("x1",o),a.attr("y2",V),a.attr("x2",o)):"BT"===J&&(a.attr("y1",V),a.attr("x1",o),a.attr("y2",30),a.attr("x2",o)),U.push(o);const c=t.name,s=X(c),i=e.insert("rect"),h=e.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+n);h.node().appendChild(s);const d=s.getBBox();i.attr("class","branchLabelBkg label"+n).attr("rx",4).attr("ry",4).attr("x",-d.width-4-(!0===Y?.rotateCommitLabel?30:0)).attr("y",-d.height/2+8).attr("width",d.width+18).attr("height",d.height+4),h.attr("transform","translate("+(-d.width-14-(!0===Y?.rotateCommitLabel?30:0))+", "+(o-d.height/2-1)+")"),"TB"===J?(i.attr("x",o-d.width/2-10).attr("y",0),h.attr("transform","translate("+(o-d.width/2-5)+", 0)")):"BT"===J?(i.attr("x",o-d.width/2-10).attr("y",V),h.attr("transform","translate("+(o-d.width/2-5)+", "+V+")")):i.attr("transform","translate(-19, "+(o-d.height/2)+")")})},"drawBranches"),ft=(0,s.K2)(function(t,r,e,n,o){return W.set(t,{pos:r,index:e}),r+=50+(o?40:0)+("TB"===J||"BT"===J?n.width/2:0)},"setBranchPosition");var ut={parser:H,db:P,renderer:{draw:(0,s.K2)(function(t,r,e,n){if(Q(),s.Rm.debug("in gitgraph renderer",t+"\n","id:",r,e),!Y)throw new Error("GitGraph config not found");const o=Y.rotateCommitLabel??!1,i=n.db;F=i.getCommits();const d=i.getBranchesAsObjArray();J=i.getDirection();const m=(0,h.Ltv)(`[id="${r}"]`);let $=0;d.forEach((t,r)=>{const e=X(t.name),n=m.append("g"),a=n.insert("g").attr("class","branchLabel"),c=a.insert("g").attr("class","label branch-label");c.node()?.appendChild(e);const s=e.getBBox();$=ft(t.name,$,r,s,o),c.remove(),a.remove(),n.remove()}),$t(m,F,!1),Y.showBranches&&xt(m,d),pt(m,F),$t(m,F,!0),a._K.insertTitle(m,"gitTitleText",Y.titleTopMargin??0,i.getDiagramTitle()),(0,c.mj)(void 0,m,Y.diagramPadding,Y.useMaxWidth)},"draw")},styles:(0,s.K2)(t=>`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0,1,2,3,4,5,6,7].map(r=>`\n .branch-label${r} { fill: ${t["gitBranchLabel"+r]}; }\n .commit${r} { stroke: ${t["git"+r]}; fill: ${t["git"+r]}; }\n .commit-highlight${r} { stroke: ${t["gitInv"+r]}; fill: ${t["gitInv"+r]}; }\n .label${r} { fill: ${t["git"+r]}; }\n .arrow${r} { stroke: ${t["git"+r]}; }\n `).join("\n")}\n\n .branch {\n stroke-width: 1;\n stroke: ${t.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n .commit-reverse {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`,"getStyles")}}}]); \ No newline at end of file diff --git a/user/assets/js/6366.aec59454.js b/user/assets/js/6366.aec59454.js new file mode 100644 index 0000000..a85a3c6 --- /dev/null +++ b/user/assets/js/6366.aec59454.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[6366],{6366:(s,e,c)=>{c.d(e,{createArchitectureServices:()=>r.S});var r=c(8980);c(7960)}}]); \ No newline at end of file diff --git a/user/assets/js/6567.b42e1678.js b/user/assets/js/6567.b42e1678.js new file mode 100644 index 0000000..68a1149 --- /dev/null +++ b/user/assets/js/6567.b42e1678.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[6567],{5871:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(797).K2)(r,"populateCommonDb")},6567:(t,e,a)=>{a.d(e,{diagram:()=>m});var r=a(3590),i=a(5871),s=a(3226),o=a(7633),n=a(797),l=a(8731),c=o.UI.packet,d=class{constructor(){this.packet=[],this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getAccDescription=o.m7,this.setAccDescription=o.EI}static{(0,n.K2)(this,"PacketDB")}getConfig(){const t=(0,s.$t)({...c,...(0,o.zj)().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){(0,o.IU)(),this.packet=[]}},p=(0,n.K2)((t,e)=>{(0,i.S)(t,e);let a=-1,r=[],s=1;const{bitsPerRow:o}=e.getConfig();for(let{start:i,end:l,bits:c,label:d}of t.blocks){if(void 0!==i&&void 0!==l&&l{if(void 0===t.start)throw new Error("start should have been set during first phase");if(void 0===t.end)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*a)return[t,void 0];const r=e*a-1,i=e*a;return[{start:t.start,end:r,label:t.label,bits:r-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),h={parser:{yy:void 0},parse:(0,n.K2)(async t=>{const e=await(0,l.qg)("packet",t),a=h.parser?.yy;if(!(a instanceof d))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");n.Rm.debug(e),p(e,a)},"parse")},k=(0,n.K2)((t,e,a,i)=>{const s=i.db,n=s.getConfig(),{rowHeight:l,paddingY:c,bitWidth:d,bitsPerRow:p}=n,b=s.getPacket(),h=s.getDiagramTitle(),k=l+c,u=k*(b.length+1)-(h?0:l),f=d*p+2,w=(0,r.D)(e);w.attr("viewbox",`0 0 ${f} ${u}`),(0,o.a$)(w,u,f,n.useMaxWidth);for(const[r,o]of b.entries())g(w,o,r,n);w.append("text").text(h).attr("x",f/2).attr("y",u-k/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),g=(0,n.K2)((t,e,a,{rowHeight:r,paddingX:i,paddingY:s,bitWidth:o,bitsPerRow:n,showBits:l})=>{const c=t.append("g"),d=a*(r+s)+s;for(const p of e){const t=p.start%n*o+1,e=(p.end-p.start+1)*o-i;if(c.append("rect").attr("x",t).attr("y",d).attr("width",e).attr("height",r).attr("class","packetBlock"),c.append("text").attr("x",t+e/2).attr("y",d+r/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(p.label),!l)continue;const a=p.end===p.start,s=d-2;c.append("text").attr("x",t+(a?e/2:0)).attr("y",s).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",a?"middle":"start").text(p.start),a||c.append("text").attr("x",t+e).attr("y",s).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(p.end)}},"drawWord"),u={draw:k},f={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},w=(0,n.K2)(({packet:t}={})=>{const e=(0,s.$t)(f,t);return`\n\t.packetByte {\n\t\tfont-size: ${e.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${e.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${e.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${e.labelColor};\n\t\tfont-size: ${e.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${e.titleColor};\n\t\tfont-size: ${e.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${e.blockStrokeColor};\n\t\tstroke-width: ${e.blockStrokeWidth};\n\t\tfill: ${e.blockFillColor};\n\t}\n\t`},"styles"),m={parser:h,get db(){return new d},renderer:u,styles:w}}}]); \ No newline at end of file diff --git a/user/assets/js/6992.a355b7e8.js b/user/assets/js/6992.a355b7e8.js new file mode 100644 index 0000000..9e605eb --- /dev/null +++ b/user/assets/js/6992.a355b7e8.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[6992],{5871:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(797).K2)(r,"populateCommonDb")},6992:(t,e,a)=>{a.d(e,{diagram:()=>z});var r=a(3590),n=a(5871),i=a(3226),s=a(7633),o=a(797),l=a(8731),c={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},d={axes:[],curves:[],options:c},g=structuredClone(d),u=s.UI.radar,h=(0,o.K2)(()=>(0,i.$t)({...u,...(0,s.zj)().radar}),"getConfig"),p=(0,o.K2)(()=>g.axes,"getAxes"),x=(0,o.K2)(()=>g.curves,"getCurves"),m=(0,o.K2)(()=>g.options,"getOptions"),$=(0,o.K2)(t=>{g.axes=t.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),f=(0,o.K2)(t=>{g.curves=t.map(t=>({name:t.name,label:t.label??t.name,entries:y(t.entries)}))},"setCurves"),y=(0,o.K2)(t=>{if(null==t[0].axis)return t.map(t=>t.value);const e=p();if(0===e.length)throw new Error("Axes must be populated before curves for reference entries");return e.map(e=>{const a=t.find(t=>t.axis?.$refText===e.name);if(void 0===a)throw new Error("Missing entry for axis "+e.label);return a.value})},"computeCurveEntries"),v={getAxes:p,getCurves:x,getOptions:m,setAxes:$,setCurves:f,setOptions:(0,o.K2)(t=>{const e=t.reduce((t,e)=>(t[e.name]=e,t),{});g.options={showLegend:e.showLegend?.value??c.showLegend,ticks:e.ticks?.value??c.ticks,max:e.max?.value??c.max,min:e.min?.value??c.min,graticule:e.graticule?.value??c.graticule}},"setOptions"),getConfig:h,clear:(0,o.K2)(()=>{(0,s.IU)(),g=structuredClone(d)},"clear"),setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,getAccDescription:s.m7,setAccDescription:s.EI},b=(0,o.K2)(t=>{(0,n.S)(t,v);const{axes:e,curves:a,options:r}=t;v.setAxes(e),v.setCurves(a),v.setOptions(r)},"populate"),w={parse:(0,o.K2)(async t=>{const e=await(0,l.qg)("radar",t);o.Rm.debug(e),b(e)},"parse")},C=(0,o.K2)((t,e,a,n)=>{const i=n.db,s=i.getAxes(),o=i.getCurves(),l=i.getOptions(),c=i.getConfig(),d=i.getDiagramTitle(),g=(0,r.D)(e),u=M(g,c),h=l.max??Math.max(...o.map(t=>Math.max(...t.entries))),p=l.min,x=Math.min(c.width,c.height)/2;K(u,s,x,l.ticks,l.graticule),T(u,s,x,c),L(u,s,o,p,h,l.graticule,c),O(u,o,l.showLegend,c),u.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)},"draw"),M=(0,o.K2)((t,e)=>{const a=e.width+e.marginLeft+e.marginRight,r=e.height+e.marginTop+e.marginBottom,n=e.marginLeft+e.width/2,i=e.marginTop+e.height/2;return t.attr("viewbox",`0 0 ${a} ${r}`).attr("width",a).attr("height",r),t.append("g").attr("transform",`translate(${n}, ${i})`)},"drawFrame"),K=(0,o.K2)((t,e,a,r,n)=>{if("circle"===n)for(let i=0;i{const a=2*e*Math.PI/n-Math.PI/2;return`${s*Math.cos(a)},${s*Math.sin(a)}`}).join(" ");t.append("polygon").attr("points",o).attr("class","radarGraticule")}}},"drawGraticule"),T=(0,o.K2)((t,e,a,r)=>{const n=e.length;for(let i=0;i{if(e.entries.length!==o)return;const c=e.entries.map((t,e)=>{const a=2*Math.PI*e/o-Math.PI/2,i=k(t,r,n,l);return{x:i*Math.cos(a),y:i*Math.sin(a)}});"circle"===i?t.append("path").attr("d",A(c,s.curveTension)).attr("class",`radarCurve-${a}`):"polygon"===i&&t.append("polygon").attr("points",c.map(t=>`${t.x},${t.y}`).join(" ")).attr("class",`radarCurve-${a}`)})}function k(t,e,a,r){return r*(Math.min(Math.max(t,e),a)-e)/(a-e)}function A(t,e){const a=t.length;let r=`M${t[0].x},${t[0].y}`;for(let n=0;n{const r=t.append("g").attr("transform",`translate(${n}, ${i+20*a})`);r.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${a}`),r.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(e.label)})}(0,o.K2)(L,"drawCurves"),(0,o.K2)(k,"relativeRadius"),(0,o.K2)(A,"closedRoundCurve"),(0,o.K2)(O,"drawLegend");var S={draw:C},I=(0,o.K2)((t,e)=>{let a="";for(let r=0;r{const e=(0,s.P$)(),a=(0,s.zj)(),r=(0,i.$t)(e,a.themeVariables);return{themeVariables:r,radarOptions:(0,i.$t)(r.radar,t)}},"buildRadarStyleOptions"),z={parser:w,db:v,renderer:S,styles:(0,o.K2)(({radar:t}={})=>{const{themeVariables:e,radarOptions:a}=D(t);return`\n\t.radarTitle {\n\t\tfont-size: ${e.fontSize};\n\t\tcolor: ${e.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${a.axisColor};\n\t\tstroke-width: ${a.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${a.axisLabelFontSize}px;\n\t\tcolor: ${a.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${a.graticuleColor};\n\t\tfill-opacity: ${a.graticuleOpacity};\n\t\tstroke: ${a.graticuleColor};\n\t\tstroke-width: ${a.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${a.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${I(e,a)}\n\t`},"styles")}}}]); \ No newline at end of file diff --git a/user/assets/js/7465.8110f7b6.js b/user/assets/js/7465.8110f7b6.js new file mode 100644 index 0000000..b38a7a0 --- /dev/null +++ b/user/assets/js/7465.8110f7b6.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[7465],{7465:(e,r,s)=>{s.d(r,{diagram:()=>g});var a=s(9264),t=s(3590),n=s(7633),i=s(797),d=s(8731),o={parse:(0,i.K2)(async e=>{const r=await(0,d.qg)("info",e);i.Rm.debug(r)},"parse")},p={version:a.n.version+""},g={parser:o,db:{getVersion:(0,i.K2)(()=>p.version,"getVersion")},renderer:{draw:(0,i.K2)((e,r,s)=>{i.Rm.debug("rendering info diagram\n"+e);const a=(0,t.D)(r);(0,n.a$)(a,100,400,!0);a.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${s}`)},"draw")}}}}]); \ No newline at end of file diff --git a/user/assets/js/7592.bb350f24.js b/user/assets/js/7592.bb350f24.js new file mode 100644 index 0000000..d08d180 --- /dev/null +++ b/user/assets/js/7592.bb350f24.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[7592],{2875:(t,e,a)=>{a.d(e,{CP:()=>h,HT:()=>p,PB:()=>d,aC:()=>l,lC:()=>o,m:()=>c,tk:()=>n});var r=a(7633),s=a(797),i=a(6750),n=(0,s.K2)((t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),e.rx&&a.attr("rx",e.rx),e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const r in e.attrs)a.attr(r,e.attrs[r]);return e.class&&a.attr("class",e.class),a},"drawRect"),o=(0,s.K2)((t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};n(t,a).lower()},"drawBackgroundRect"),c=(0,s.K2)((t,e)=>{const a=e.text.replace(r.H1," "),s=t.append("text");s.attr("x",e.x),s.attr("y",e.y),s.attr("class","legend"),s.style("text-anchor",e.anchor),e.class&&s.attr("class",e.class);const i=s.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(a),s},"drawText"),l=(0,s.K2)((t,e,a,r)=>{const s=t.append("image");s.attr("x",e),s.attr("y",a);const n=(0,i.J)(r);s.attr("xlink:href",n)},"drawImage"),h=(0,s.K2)((t,e,a,r)=>{const s=t.append("use");s.attr("x",e),s.attr("y",a);const n=(0,i.J)(r);s.attr("xlink:href",`#${n}`)},"drawEmbeddedImage"),d=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),p=(0,s.K2)(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")},2938:(t,e,a)=>{a.d(e,{m:()=>s});var r=a(797),s=class{constructor(t){this.init=t,this.records=this.init()}static{(0,r.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},7592:(t,e,a)=>{a.d(e,{diagram:()=>vt});var r=a(2875),s=a(3981),i=a(2938),n=a(3226),o=a(7633),c=a(797),l=a(451),h=a(6750),d=function(){var t=(0,c.K2)(function(t,e,a,r){for(a=a||{},r=t.length;r--;a[t[r]]=e);return a},"o"),e=[1,2],a=[1,3],r=[1,4],s=[2,4],i=[1,9],n=[1,11],o=[1,13],l=[1,14],h=[1,16],d=[1,17],p=[1,18],g=[1,24],u=[1,25],x=[1,26],y=[1,27],m=[1,28],b=[1,29],T=[1,30],f=[1,31],E=[1,32],w=[1,33],I=[1,34],L=[1,35],_=[1,36],P=[1,37],k=[1,38],N=[1,39],A=[1,41],v=[1,42],M=[1,43],O=[1,44],D=[1,45],S=[1,46],R=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,55,60,61,62,63,71],$=[2,71],C=[4,5,16,50,52,53],Y=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],K=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,55,60,61,62,63,71],B=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,55,60,61,62,63,71],V=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,55,60,61,62,63,71],F=[69,70,71],W=[1,127],q={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,actor_with_config:54,note:55,placement:56,text2:57,over:58,actor_pair:59,links:60,link:61,properties:62,details:63,spaceList:64,",":65,left_of:66,right_of:67,signaltype:68,"+":69,"-":70,ACTOR:71,config_object:72,CONFIG_START:73,CONFIG_CONTENT:74,CONFIG_END:75,SOLID_OPEN_ARROW:76,DOTTED_OPEN_ARROW:77,SOLID_ARROW:78,BIDIRECTIONAL_SOLID_ARROW:79,DOTTED_ARROW:80,BIDIRECTIONAL_DOTTED_ARROW:81,SOLID_CROSS:82,DOTTED_CROSS:83,SOLID_POINT:84,DOTTED_POINT:85,TXT:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",55:"note",58:"over",60:"links",61:"link",62:"properties",63:"details",65:",",66:"left_of",67:"right_of",69:"+",70:"-",71:"ACTOR",73:"CONFIG_START",74:"CONFIG_CONTENT",75:"CONFIG_END",76:"SOLID_OPEN_ARROW",77:"DOTTED_OPEN_ARROW",78:"SOLID_ARROW",79:"BIDIRECTIONAL_SOLID_ARROW",80:"DOTTED_ARROW",81:"BIDIRECTIONAL_DOTTED_ARROW",82:"SOLID_CROSS",83:"DOTTED_CROSS",84:"SOLID_POINT",85:"DOTTED_POINT",86:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[64,2],[64,1],[59,3],[59,1],[56,1],[56,1],[17,5],[17,5],[17,4],[54,2],[72,3],[22,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[57,1]],performAction:(0,c.K2)(function(t,e,a,r,s,i,n){var o=i.length-1;switch(s){case 3:return r.apply(i[o]),i[o];case 4:case 9:case 8:case 13:this.$=[];break;case 5:case 10:i[o-1].push(i[o]),this.$=i[o-1];break;case 6:case 7:case 11:case 12:case 63:this.$=i[o];break;case 15:i[o].type="createParticipant",this.$=i[o];break;case 16:i[o-1].unshift({type:"boxStart",boxData:r.parseBoxData(i[o-2])}),i[o-1].push({type:"boxEnd",boxText:i[o-2]}),this.$=i[o-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-2]),sequenceIndexStep:Number(i[o-1]),sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:r.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:i[o-1].actor};break;case 23:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:i[o-1].actor};break;case 29:r.setDiagramTitle(i[o].substring(6)),this.$=i[o].substring(6);break;case 30:r.setDiagramTitle(i[o].substring(7)),this.$=i[o].substring(7);break;case 31:this.$=i[o].trim(),r.setAccTitle(this.$);break;case 32:case 33:this.$=i[o].trim(),r.setAccDescription(this.$);break;case 34:i[o-1].unshift({type:"loopStart",loopText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.LOOP_START}),i[o-1].push({type:"loopEnd",loopText:i[o-2],signalType:r.LINETYPE.LOOP_END}),this.$=i[o-1];break;case 35:i[o-1].unshift({type:"rectStart",color:r.parseMessage(i[o-2]),signalType:r.LINETYPE.RECT_START}),i[o-1].push({type:"rectEnd",color:r.parseMessage(i[o-2]),signalType:r.LINETYPE.RECT_END}),this.$=i[o-1];break;case 36:i[o-1].unshift({type:"optStart",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.OPT_START}),i[o-1].push({type:"optEnd",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.OPT_END}),this.$=i[o-1];break;case 37:i[o-1].unshift({type:"altStart",altText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.ALT_START}),i[o-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=i[o-1];break;case 38:i[o-1].unshift({type:"parStart",parText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.PAR_START}),i[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=i[o-1];break;case 39:i[o-1].unshift({type:"parStart",parText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.PAR_OVER_START}),i[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=i[o-1];break;case 40:i[o-1].unshift({type:"criticalStart",criticalText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.CRITICAL_START}),i[o-1].push({type:"criticalEnd",signalType:r.LINETYPE.CRITICAL_END}),this.$=i[o-1];break;case 41:i[o-1].unshift({type:"breakStart",breakText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.BREAK_START}),i[o-1].push({type:"breakEnd",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.BREAK_END}),this.$=i[o-1];break;case 43:this.$=i[o-3].concat([{type:"option",optionText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.CRITICAL_OPTION},i[o]]);break;case 45:this.$=i[o-3].concat([{type:"and",parText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.PAR_AND},i[o]]);break;case 47:this.$=i[o-3].concat([{type:"else",altText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.ALT_ELSE},i[o]]);break;case 48:i[o-3].draw="participant",i[o-3].type="addParticipant",i[o-3].description=r.parseMessage(i[o-1]),this.$=i[o-3];break;case 49:case 53:i[o-1].draw="participant",i[o-1].type="addParticipant",this.$=i[o-1];break;case 50:i[o-3].draw="actor",i[o-3].type="addParticipant",i[o-3].description=r.parseMessage(i[o-1]),this.$=i[o-3];break;case 51:i[o-1].draw="actor",i[o-1].type="addParticipant",this.$=i[o-1];break;case 52:i[o-1].type="destroyParticipant",this.$=i[o-1];break;case 54:this.$=[i[o-1],{type:"addNote",placement:i[o-2],actor:i[o-1].actor,text:i[o]}];break;case 55:i[o-2]=[].concat(i[o-1],i[o-1]).slice(0,2),i[o-2][0]=i[o-2][0].actor,i[o-2][1]=i[o-2][1].actor,this.$=[i[o-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:i[o-2].slice(0,2),text:i[o]}];break;case 56:this.$=[i[o-1],{type:"addLinks",actor:i[o-1].actor,text:i[o]}];break;case 57:this.$=[i[o-1],{type:"addALink",actor:i[o-1].actor,text:i[o]}];break;case 58:this.$=[i[o-1],{type:"addProperties",actor:i[o-1].actor,text:i[o]}];break;case 59:this.$=[i[o-1],{type:"addDetails",actor:i[o-1].actor,text:i[o]}];break;case 62:this.$=[i[o-2],i[o]];break;case 64:this.$=r.PLACEMENT.LEFTOF;break;case 65:this.$=r.PLACEMENT.RIGHTOF;break;case 66:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o],activate:!0},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:i[o-1].actor}];break;case 67:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:i[o-4].actor}];break;case 68:this.$=[i[o-3],i[o-1],{type:"addMessage",from:i[o-3].actor,to:i[o-1].actor,signalType:i[o-2],msg:i[o]}];break;case 69:this.$={type:"addParticipant",actor:i[o-1],config:i[o]};break;case 70:this.$=i[o-1].trim();break;case 71:this.$={type:"addParticipant",actor:i[o]};break;case 72:this.$=r.LINETYPE.SOLID_OPEN;break;case 73:this.$=r.LINETYPE.DOTTED_OPEN;break;case 74:this.$=r.LINETYPE.SOLID;break;case 75:this.$=r.LINETYPE.BIDIRECTIONAL_SOLID;break;case 76:this.$=r.LINETYPE.DOTTED;break;case 77:this.$=r.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 78:this.$=r.LINETYPE.SOLID_CROSS;break;case 79:this.$=r.LINETYPE.DOTTED_CROSS;break;case 80:this.$=r.LINETYPE.SOLID_POINT;break;case 81:this.$=r.LINETYPE.DOTTED_POINT;break;case 82:this.$=r.parseMessage(i[o].trim().substring(1))}},"anonymous"),table:[{3:1,4:e,5:a,6:r},{1:[3]},{3:5,4:e,5:a,6:r},{3:6,4:e,5:a,6:r},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],s,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:n,8:8,9:10,12:12,13:o,14:l,17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},t(R,[2,5]),{9:47,12:12,13:o,14:l,17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},t(R,[2,7]),t(R,[2,8]),t(R,[2,14]),{12:48,50:P,52:k,53:N},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,71:S},{22:55,71:S},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(R,[2,29]),t(R,[2,30]),{32:[1,61]},{34:[1,62]},t(R,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,54:72,71:[1,73]},{22:74,71:S},{22:75,71:S},{68:76,76:[1,77],77:[1,78],78:[1,79],79:[1,80],80:[1,81],81:[1,82],82:[1,83],83:[1,84],84:[1,85],85:[1,86]},{56:87,58:[1,88],66:[1,89],67:[1,90]},{22:91,71:S},{22:92,71:S},{22:93,71:S},{22:94,71:S},t([5,51,65,76,77,78,79,80,81,82,83,84,85,86],$),t(R,[2,6]),t(R,[2,15]),t(C,[2,9],{10:95}),t(R,[2,17]),{5:[1,97],19:[1,96]},{5:[1,98]},t(R,[2,21]),{5:[1,99]},{5:[1,100]},t(R,[2,24]),t(R,[2,25]),t(R,[2,26]),t(R,[2,27]),t(R,[2,28]),t(R,[2,31]),t(R,[2,32]),t(Y,s,{7:101}),t(Y,s,{7:102}),t(Y,s,{7:103}),t(K,s,{40:104,7:105}),t(B,s,{42:106,7:107}),t(B,s,{7:107,42:108}),t(V,s,{45:109,7:110}),t(Y,s,{7:111}),{5:[1,113],51:[1,112]},{5:[1,114]},t([5,51],$,{72:115,73:[1,116]}),{5:[1,118],51:[1,117]},{5:[1,119]},{22:122,69:[1,120],70:[1,121],71:S},t(F,[2,72]),t(F,[2,73]),t(F,[2,74]),t(F,[2,75]),t(F,[2,76]),t(F,[2,77]),t(F,[2,78]),t(F,[2,79]),t(F,[2,80]),t(F,[2,81]),{22:123,71:S},{22:125,59:124,71:S},{71:[2,64]},{71:[2,65]},{57:126,86:W},{57:128,86:W},{57:129,86:W},{57:130,86:W},{4:[1,133],5:[1,135],11:132,12:134,16:[1,131],50:P,52:k,53:N},{5:[1,136]},t(R,[2,19]),t(R,[2,20]),t(R,[2,22]),t(R,[2,23]),{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,137],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,138],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,139],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,140]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,46],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,49:[1,141],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,142]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,44],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,48:[1,143],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,144]},{16:[1,145]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,42],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,47:[1,146],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,147],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{15:[1,148]},t(R,[2,49]),t(R,[2,53]),{5:[2,69]},{74:[1,149]},{15:[1,150]},t(R,[2,51]),t(R,[2,52]),{22:151,71:S},{22:152,71:S},{57:153,86:W},{57:154,86:W},{57:155,86:W},{65:[1,156],86:[2,63]},{5:[2,56]},{5:[2,82]},{5:[2,57]},{5:[2,58]},{5:[2,59]},t(R,[2,16]),t(C,[2,10]),{12:157,50:P,52:k,53:N},t(C,[2,12]),t(C,[2,13]),t(R,[2,18]),t(R,[2,34]),t(R,[2,35]),t(R,[2,36]),t(R,[2,37]),{15:[1,158]},t(R,[2,38]),{15:[1,159]},t(R,[2,39]),t(R,[2,40]),{15:[1,160]},t(R,[2,41]),{5:[1,161]},{75:[1,162]},{5:[1,163]},{57:164,86:W},{57:165,86:W},{5:[2,68]},{5:[2,54]},{5:[2,55]},{22:166,71:S},t(C,[2,11]),t(K,s,{7:105,40:167}),t(B,s,{7:107,42:168}),t(V,s,{7:110,45:169}),t(R,[2,48]),{5:[2,70]},t(R,[2,50]),{5:[2,66]},{5:[2,67]},{86:[2,62]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],89:[2,64],90:[2,65],115:[2,69],126:[2,56],127:[2,82],128:[2,57],129:[2,58],130:[2,59],153:[2,68],154:[2,54],155:[2,55],162:[2,70],164:[2,66],165:[2,67],166:[2,62],167:[2,47],168:[2,45],169:[2,43]},parseError:(0,c.K2)(function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)},"parseError"),parse:(0,c.K2)(function(t){var e=this,a=[0],r=[],s=[null],i=[],n=this.table,o="",l=0,h=0,d=0,p=i.slice.call(arguments,1),g=Object.create(this.lexer),u={yy:{}};for(var x in this.yy)Object.prototype.hasOwnProperty.call(this.yy,x)&&(u.yy[x]=this.yy[x]);g.setInput(t,u.yy),u.yy.lexer=g,u.yy.parser=this,void 0===g.yylloc&&(g.yylloc={});var y=g.yylloc;i.push(y);var m=g.options&&g.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||g.lex()||1)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(t){a.length=a.length-2*t,s.length=s.length-t,i.length=i.length-t},"popStack"),(0,c.K2)(b,"lex");for(var T,f,E,w,I,L,_,P,k,N={};;){if(E=a[a.length-1],this.defaultActions[E]?w=this.defaultActions[E]:(null==T&&(T=b()),w=n[E]&&n[E][T]),void 0===w||!w.length||!w[0]){var A="";for(L in k=[],n[E])this.terminals_[L]&&L>2&&k.push("'"+this.terminals_[L]+"'");A=g.showPosition?"Parse error on line "+(l+1)+":\n"+g.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[T]||T)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==T?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(A,{text:g.match,token:this.terminals_[T]||T,line:g.yylineno,loc:y,expected:k})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+T);switch(w[0]){case 1:a.push(T),s.push(g.yytext),i.push(g.yylloc),a.push(w[1]),T=null,f?(T=f,f=null):(h=g.yyleng,o=g.yytext,l=g.yylineno,y=g.yylloc,d>0&&d--);break;case 2:if(_=this.productions_[w[1]][1],N.$=s[s.length-_],N._$={first_line:i[i.length-(_||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(_||1)].first_column,last_column:i[i.length-1].last_column},m&&(N._$.range=[i[i.length-(_||1)].range[0],i[i.length-1].range[1]]),void 0!==(I=this.performAction.apply(N,[o,h,l,u.yy,w[1],s,i].concat(p))))return I;_&&(a=a.slice(0,-1*_*2),s=s.slice(0,-1*_),i=i.slice(0,-1*_)),a.push(this.productions_[w[1]][0]),s.push(N.$),i.push(N._$),P=n[a[a.length-2]][a[a.length-1]],a.push(P);break;case 3:return!0}}return!0},"parse")},z=function(){return{EOF:1,parseError:(0,c.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,c.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,c.K2)(function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===r.length?this.yylloc.first_column:0)+r[r.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,c.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,c.K2)(function(t,e){var a,r,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var i in s)this[i]=s[i];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var t,e,a,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;ie[0].length)){if(e=a,r=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,s[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,c.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(t,e,a,r){switch(a){case 0:case 56:case 72:return 5;case 1:case 2:case 3:case 4:case 5:break;case 6:return 19;case 7:return this.begin("CONFIG"),73;case 8:return 74;case 9:return this.popState(),this.popState(),75;case 10:case 57:return e.yytext=e.yytext.trim(),71;case 11:case 17:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),71;case 12:return this.begin("LINE"),14;case 13:return this.begin("ID"),50;case 14:return this.begin("ID"),52;case 15:return 13;case 16:return this.begin("ID"),53;case 18:return this.popState(),this.popState(),this.begin("LINE"),51;case 19:return this.popState(),this.popState(),5;case 20:return this.begin("LINE"),36;case 21:return this.begin("LINE"),37;case 22:return this.begin("LINE"),38;case 23:return this.begin("LINE"),39;case 24:return this.begin("LINE"),49;case 25:return this.begin("LINE"),41;case 26:return this.begin("LINE"),43;case 27:return this.begin("LINE"),48;case 28:return this.begin("LINE"),44;case 29:return this.begin("LINE"),47;case 30:return this.begin("LINE"),46;case 31:return this.popState(),15;case 32:return 16;case 33:return 66;case 34:return 67;case 35:return 60;case 36:return 61;case 37:return 62;case 38:return 63;case 39:return 58;case 40:return 55;case 41:return this.begin("ID"),21;case 42:return this.begin("ID"),23;case 43:return 29;case 44:return 30;case 45:return this.begin("acc_title"),31;case 46:return this.popState(),"acc_title_value";case 47:return this.begin("acc_descr"),33;case 48:return this.popState(),"acc_descr_value";case 49:this.begin("acc_descr_multiline");break;case 50:this.popState();break;case 51:return"acc_descr_multiline_value";case 52:return 6;case 53:return 18;case 54:return 20;case 55:return 65;case 58:return 78;case 59:return 79;case 60:return 80;case 61:return 81;case 62:return 76;case 63:return 77;case 64:return 82;case 65:return 83;case 66:return 84;case 67:return 85;case 68:case 69:return 86;case 70:return 69;case 71:return 70;case 73:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^\<->\->:\n,;@]+?([\-]*[^\<->\->:\n,;@]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^<\->\->:\n,;]+?([\-]*[^<\->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[50,51],inclusive:!1},acc_descr:{rules:[48],inclusive:!1},acc_title:{rules:[46],inclusive:!1},ID:{rules:[2,3,7,10,11,17],inclusive:!1},ALIAS:{rules:[2,3,18,19],inclusive:!1},LINE:{rules:[2,3,31],inclusive:!1},CONFIG:{rules:[8,9],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,12,13,14,15,16,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73],inclusive:!0}}}}();function H(){this.yy={}}return q.lexer=z,(0,c.K2)(H,"Parser"),H.prototype=q,q.Parser=H,new H}();d.parser=d;var p=d,g={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},u={FILLED:0,OPEN:1},x={LEFTOF:0,RIGHTOF:1,OVER:2},y="actor",m="control",b="database",T="entity",f=class{constructor(){this.state=new i.m(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),this.setAccTitle=o.SV,this.setAccDescription=o.EI,this.setDiagramTitle=o.ke,this.getAccTitle=o.iN,this.getAccDescription=o.m7,this.getDiagramTitle=o.ab,this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap((0,o.D7)().wrap),this.LINETYPE=g,this.ARROWTYPE=u,this.PLACEMENT=x}static{(0,c.K2)(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,e,a,r,i){let n,o=this.state.records.currentBox;if(void 0!==i){let t;t=i.includes("\n")?i+"\n":"{\n"+i+"\n}",n=(0,s.H)(t,{schema:s.r})}r=n?.type??r;const c=this.state.records.actors.get(t);if(c){if(this.state.records.currentBox&&c.box&&this.state.records.currentBox!==c.box)throw new Error(`A same participant should only be defined in one Box: ${c.name} can't be in '${c.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(o=c.box?c.box:this.state.records.currentBox,c.box=o,c&&e===c.name&&null==a)return}if(null==a?.text&&(a={text:e,type:r}),null!=r&&null!=a.text||(a={text:e,type:r}),this.state.records.actors.set(t,{box:o,name:e,description:a.text,wrap:a.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:r??"participant"}),this.state.records.prevActor){const e=this.state.records.actors.get(this.state.records.prevActor);e&&(e.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let e,a=0;if(!t)return 0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:e,message:a?.text??"",wrap:a?.wrap??this.autoWrap(),type:r,activate:s}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(void 0===t)return{};t=t.trim();const e=null!==/^:?wrap:/.exec(t)||null===/^:?nowrap:/.exec(t)&&void 0;return{cleanedText:(void 0===e?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}}autoWrap(){return void 0!==this.state.records.wrapEnabled?this.state.records.wrapEnabled:(0,o.D7)().sequence?.wrap??!1}clear(){this.state.reset(),(0,o.IU)()}parseMessage(t){const e=t.trim(),{wrap:a,cleanedText:r}=this.extractWrap(e),s={text:r,wrap:a};return c.Rm.debug(`parseMessage: ${JSON.stringify(s)}`),s}parseBoxData(t){const e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t);let a=e?.[1]?e[1].trim():"transparent",r=e?.[2]?e[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",a)||(a="transparent",r=t.trim());else{const e=(new Option).style;e.color=a,e.color!==a&&(a="transparent",r=t.trim())}const{wrap:s,cleanedText:i}=this.extractWrap(r);return{text:i?(0,o.jZ)(i,(0,o.D7)()):void 0,color:a,wrap:s}}addNote(t,e,a){const r={actor:t,placement:e,message:a.text,wrap:a.wrap??this.autoWrap()},s=[].concat(t,t);this.state.records.notes.push(r),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:s[0],to:s[1],message:a.text,wrap:a.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:e})}addLinks(t,e){const a=this.getActor(t);try{let t=(0,o.jZ)(e.text,(0,o.D7)());t=t.replace(/=/g,"="),t=t.replace(/&/g,"&");const r=JSON.parse(t);this.insertLinks(a,r)}catch(r){c.Rm.error("error while parsing actor link text",r)}}addALink(t,e){const a=this.getActor(t);try{const t={};let r=(0,o.jZ)(e.text,(0,o.D7)());const s=r.indexOf("@");r=r.replace(/=/g,"="),r=r.replace(/&/g,"&");const i=r.slice(0,s-1).trim(),n=r.slice(s+1).trim();t[i]=n,this.insertLinks(a,t)}catch(r){c.Rm.error("error while parsing actor link text",r)}}insertLinks(t,e){if(null==t.links)t.links=e;else for(const a in e)t.links[a]=e[a]}addProperties(t,e){const a=this.getActor(t);try{const t=(0,o.jZ)(e.text,(0,o.D7)()),r=JSON.parse(t);this.insertProperties(a,r)}catch(r){c.Rm.error("error while parsing actor properties text",r)}}insertProperties(t,e){if(null==t.properties)t.properties=e;else for(const a in e)t.properties[a]=e[a]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,e){const a=this.getActor(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&this.insertProperties(a,e.properties),e.links&&this.insertLinks(a,e.links)}catch(s){c.Rm.error("error while parsing actor details text",s)}}getActorProperty(t,e){if(void 0!==t?.properties)return t.properties[e]}apply(t){if(Array.isArray(t))t.forEach(t=>{this.apply(t)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":(0,o.SV)(t.text);break;case"parStart":case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType)}}getConfig(){return(0,o.D7)().sequence}},E=(0,c.K2)(t=>`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n \n .innerArc {\n stroke-width: 1.5;\n stroke-dasharray: none;\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n\n`,"getStyles"),w="actor-top",I="actor-bottom",L="actor-box",_="actor-man",P=(0,c.K2)(function(t,e){return(0,r.tk)(t,e)},"drawRect"),k=(0,c.K2)(function(t,e,a,r,s){if(void 0===e.links||null===e.links||0===Object.keys(e.links).length)return{height:0,width:0};const i=e.links,n=e.actorCnt,o=e.rectData;var c="none";s&&(c="block !important");const l=t.append("g");l.attr("id","actor"+n+"_popup"),l.attr("class","actorPopupMenu"),l.attr("display",c);var d="";void 0!==o.class&&(d=" "+o.class);let p=o.width>a?o.width:a;const g=l.append("rect");if(g.attr("class","actorPopupMenuPanel"+d),g.attr("x",o.x),g.attr("y",o.height),g.attr("fill",o.fill),g.attr("stroke",o.stroke),g.attr("width",p),g.attr("height",o.height),g.attr("rx",o.rx),g.attr("ry",o.ry),null!=i){var u=20;for(let t in i){var x=l.append("a"),y=(0,h.J)(i[t]);x.attr("xlink:href",y),x.attr("target","_blank"),st(r)(t,x,o.x+10,o.height+u,p,20,{class:"actor"},r),u+=30}}return g.attr("height",u),{height:o.height+u,width:p}},"drawPopup"),N=(0,c.K2)(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),A=(0,c.K2)(async function(t,e,a=null){let r=t.append("foreignObject");const s=await(0,o.dj)(e.text,(0,o.zj)()),i=r.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(s).node().getBoundingClientRect();if(r.attr("height",Math.round(i.height)).attr("width",Math.round(i.width)),"noteText"===e.class){const a=t.node().firstChild;a.setAttribute("height",i.height+2*e.textMargin);const s=a.getBBox();r.attr("x",Math.round(s.x+s.width/2-i.width/2)).attr("y",Math.round(s.y+s.height/2-i.height/2))}else if(a){let{startx:t,stopx:s,starty:n}=a;if(t>s){const e=t;t=s,s=e}r.attr("x",Math.round(t+Math.abs(t-s)/2-i.width/2)),"loopText"===e.class?r.attr("y",Math.round(n)):r.attr("y",Math.round(n-i.height))}return[r]},"drawKatex"),v=(0,c.K2)(function(t,e){let a=0,r=0;const s=e.text.split(o.Y2.lineBreakRegex),[i,l]=(0,n.I5)(e.fontSize);let h=[],d=0,p=(0,c.K2)(()=>e.y,"yfunc");if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":p=(0,c.K2)(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":p=(0,c.K2)(()=>Math.round(e.y+(a+r+e.textMargin)/2),"yfunc");break;case"bottom":case"end":p=(0,c.K2)(()=>Math.round(e.y+(a+r+2*e.textMargin)-e.textMargin),"yfunc")}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[o,c]of s.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==i&&(d=o*i);const s=t.append("text");s.attr("x",e.x),s.attr("y",p()),void 0!==e.anchor&&s.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&s.style("font-family",e.fontFamily),void 0!==l&&s.style("font-size",l),void 0!==e.fontWeight&&s.style("font-weight",e.fontWeight),void 0!==e.fill&&s.attr("fill",e.fill),void 0!==e.class&&s.attr("class",e.class),void 0!==e.dy?s.attr("dy",e.dy):0!==d&&s.attr("dy",d);const g=c||n.pe;if(e.tspan){const t=s.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(g)}else s.text(g);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(s._groups||s)[0][0].getBBox().height,a=r),h.push(s)}return h},"drawText"),M=(0,c.K2)(function(t,e){function a(t,e,a,r,s){return t+","+e+" "+(t+a)+","+e+" "+(t+a)+","+(e+r-s)+" "+(t+a-1.2*s)+","+(e+r)+" "+t+","+(e+r)}(0,c.K2)(a,"genPoints");const r=t.append("polygon");return r.attr("points",a(e.x,e.y,e.width,e.height,7)),r.attr("class","labelBox"),e.y=e.y+e.height/2,v(t,e),r},"drawLabel"),O=-1,D=(0,c.K2)((t,e,a,r)=>{t.select&&a.forEach(a=>{const s=e.get(a),i=t.select("#actor"+s.actorCnt);!r.mirrorActors&&s.stopy?i.attr("y2",s.stopy+s.height/2):r.mirrorActors&&i.attr("y2",s.stopy)})},"fixLifeLineHeights"),S=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();var h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();var p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.rx=3,d.ry=3,d.name=e.name;const g=P(h,d);if(e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,r.CP)(h,d.x+d.width-20,d.y+10,t.substr(1)):(0,r.aC)(h,d.x+d.width-20,d.y+10,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y,d.width,d.height,{class:`actor ${L}`},a);let u=e.height;if(g.node){const t=g.node().getBBox();e.height=t.height,u=t.height}return u},"drawActorTypeParticipant"),R=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();var h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();var p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name;const g={...d,x:d.x+-6,y:d.y+6,class:"actor"},u=P(h,d);if(P(h,g),e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,r.CP)(h,d.x+d.width-20,d.y+10,t.substr(1)):(0,r.aC)(h,d.x+d.width-20,d.y+10,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x-6,d.y+6,d.width,d.height,{class:`actor ${L}`},a);let x=e.height;if(u.node){const t=u.node().getBBox();e.height=t.height,x=t.height}return x},"drawActorTypeCollections"),$=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();let h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();let p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name;const g=d.height/2,u=g/(2.5+d.height/50),x=h.append("g"),y=h.append("g");if(x.append("path").attr("d",`M ${d.x},${d.y+g}\n a ${u},${g} 0 0 0 0,${d.height}\n h ${d.width-2*u}\n a ${u},${g} 0 0 0 0,-${d.height}\n Z\n `).attr("class",p),y.append("path").attr("d",`M ${d.x},${d.y+g}\n a ${u},${g} 0 0 0 0,${d.height}`).attr("stroke","#666").attr("stroke-width","1px").attr("class",p),x.attr("transform",`translate(${u}, ${-d.height/2})`),y.attr("transform",`translate(${d.width-u}, ${-d.height/2})`),e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim(),a=d.x+d.width-20,s=d.y+10;"@"===t.charAt(0)?(0,r.CP)(h,a,s,t.substr(1)):(0,r.aC)(h,a,s,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y,d.width,d.height,{class:`actor ${L}`},a);let m=e.height;const b=x.select("path:last-child");if(b.node()){const t=b.node().getBBox();e.height=t.height,m=t.height}return m},"drawActorTypeQueue"),C=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+75,l=t.append("g").lower();s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor";const g=e.x+e.width/2,u=i+30;h.append("defs").append("marker").attr("id","filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),h.append("circle").attr("cx",g).attr("cy",u).attr("r",18).attr("fill","#eaeaf7").attr("stroke","#666").attr("stroke-width",1.2),h.append("line").attr("marker-end","url(#filled-head-control)").attr("transform",`translate(${g}, ${u-18})`);const x=h.node().getBBox();return e.height=x.height+2*(a?.sequence?.labelBoxHeight??0),rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+18+(s?5:10),p.width,p.height,{class:`actor ${_}`},a),e.height},"drawActorTypeControl"),Y=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+75,l=t.append("g").lower(),h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor";const g=e.x+e.width/2,u=i+(s?10:25),x=18;h.append("circle").attr("cx",g).attr("cy",u).attr("r",x).attr("width",e.width).attr("height",e.height),h.append("line").attr("x1",g-x).attr("x2",g+x).attr("y1",u+x).attr("y2",u+x).attr("stroke","#333").attr("stroke-width",2);const y=h.node().getBBox();return e.height=y.height+(a?.sequence?.labelBoxHeight??0),s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O),rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+(s?(u-i+x-5)/2:(u+x-i)/2),p.width,p.height,{class:`actor ${_}`},a),h.attr("transform","translate(0, 9)"),e.height},"drawActorTypeEntity"),K=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height+2*a.boxTextMargin,l=t.append("g").lower();let h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();let p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name,d.x=e.x,d.y=i;const g=d.width/4,u=d.width/4,x=g/2,y=x/(2.5+g/50),m=h.append("g"),b=`\n M ${d.x},${d.y+y}\n a ${x},${y} 0 0 0 ${g},0\n a ${x},${y} 0 0 0 -${g},0\n l 0,${u-2*y}\n a ${x},${y} 0 0 0 ${g},0\n l 0,-${u-2*y}\n`;m.append("path").attr("d",b).attr("fill","#eaeaea").attr("stroke","#000").attr("stroke-width",1).attr("class",p),s?m.attr("transform",`translate(${1.5*g}, ${d.height/4-2*y})`):m.attr("transform",`translate(${1.5*g}, ${(d.height+y)/4})`),e.rectData=d,rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y+(s?(d.height+u)/4:(d.height+y)/2),d.width,d.height,{class:`actor ${L}`},a);const T=m.select("path:last-child");if(T.node()){const t=T.node().getBBox();e.height=t.height+(a.sequence.labelBoxHeight??0)}return e.height},"drawActorTypeDatabase"),B=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+80,l=30,h=t.append("g").lower();s||(O++,h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const d=t.append("g");let p=_;p+=s?` ${I}`:` ${w}`,d.attr("class",p),d.attr("name",e.name);const g=(0,r.PB)();g.x=e.x,g.y=i,g.fill="#eaeaea",g.width=e.width,g.height=e.height,g.class="actor",d.append("line").attr("id","actor-man-torso"+O).attr("x1",e.x+e.width/2-75).attr("y1",i+10).attr("x2",e.x+e.width/2-15).attr("y2",i+10),d.append("line").attr("id","actor-man-arms"+O).attr("x1",e.x+e.width/2-75).attr("y1",i+0).attr("x2",e.x+e.width/2-75).attr("y2",i+20),d.append("circle").attr("cx",e.x+e.width/2).attr("cy",i+10).attr("r",l);const u=d.node().getBBox();return e.height=u.height+(a.sequence.labelBoxHeight??0),rt(a,(0,o.Wi)(e.description))(e.description,d,g.x,g.y+(s?11:18),g.width,g.height,{class:`actor ${_}`},a),d.attr("transform","translate(0,22)"),e.height},"drawActorTypeBoundary"),V=(0,c.K2)(function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+80,l=t.append("g").lower();s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor",p.rx=3,p.ry=3,h.append("line").attr("id","actor-man-torso"+O).attr("x1",n).attr("y1",i+25).attr("x2",n).attr("y2",i+45),h.append("line").attr("id","actor-man-arms"+O).attr("x1",n-18).attr("y1",i+33).attr("x2",n+18).attr("y2",i+33),h.append("line").attr("x1",n-18).attr("y1",i+60).attr("x2",n).attr("y2",i+45),h.append("line").attr("x1",n).attr("y1",i+45).attr("x2",n+18-2).attr("y2",i+60);const g=h.append("circle");g.attr("cx",e.x+e.width/2),g.attr("cy",i+10),g.attr("r",15),g.attr("width",e.width),g.attr("height",e.height);const u=h.node().getBBox();return e.height=u.height,rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+35,p.width,p.height,{class:`actor ${_}`},a),e.height},"drawActorTypeActor"),F=(0,c.K2)(async function(t,e,a,r){switch(e.type){case"actor":return await V(t,e,a,r);case"participant":return await S(t,e,a,r);case"boundary":return await B(t,e,a,r);case"control":return await C(t,e,a,r);case"entity":return await Y(t,e,a,r);case"database":return await K(t,e,a,r);case"collections":return await R(t,e,a,r);case"queue":return await $(t,e,a,r)}},"drawActor"),W=(0,c.K2)(function(t,e,a){const r=t.append("g");j(r,e),e.name&&rt(a)(e.name,r,e.x,e.y+a.boxTextMargin+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},a),r.lower()},"drawBox"),q=(0,c.K2)(function(t){return t.append("g")},"anchorElement"),z=(0,c.K2)(function(t,e,a,s,i){const n=(0,r.PB)(),o=e.anchored;n.x=e.startx,n.y=e.starty,n.class="activation"+i%3,n.width=e.stopx-e.startx,n.height=a-e.starty,P(o,n)},"drawActivation"),H=(0,c.K2)(async function(t,e,a,s){const{boxMargin:i,boxTextMargin:n,labelBoxHeight:l,labelBoxWidth:h,messageFontFamily:d,messageFontSize:p,messageFontWeight:g}=s,u=t.append("g"),x=(0,c.K2)(function(t,e,a,r){return u.append("line").attr("x1",t).attr("y1",e).attr("x2",a).attr("y2",r).attr("class","loopLine")},"drawLoopLine");x(e.startx,e.starty,e.stopx,e.starty),x(e.stopx,e.starty,e.stopx,e.stopy),x(e.startx,e.stopy,e.stopx,e.stopy),x(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach(function(t){x(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")});let y=(0,r.HT)();y.text=a,y.x=e.startx,y.y=e.starty,y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.anchor="middle",y.valign="middle",y.tspan=!1,y.width=h||50,y.height=l||20,y.textMargin=n,y.class="labelText",M(u,y),y=et(),y.text=e.title,y.x=e.startx+h/2+(e.stopx-e.startx)/2,y.y=e.starty+i+n,y.anchor="middle",y.valign="middle",y.textMargin=n,y.class="loopText",y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.wrap=!0;let m=(0,o.Wi)(y.text)?await A(u,y,e):v(u,y);if(void 0!==e.sectionTitles)for(const[r,c]of Object.entries(e.sectionTitles))if(c.message){y.text=c.message,y.x=e.startx+(e.stopx-e.startx)/2,y.y=e.sections[r].y+i+n,y.class="loopText",y.anchor="middle",y.valign="middle",y.tspan=!1,y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.wrap=e.wrap,(0,o.Wi)(y.text)?(e.starty=e.sections[r].y,await A(u,y,e)):v(u,y);let t=Math.round(m.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));e.sections[r].height+=t-(i+n)}return e.height=Math.round(e.stopy-e.starty),u},"drawLoop"),j=(0,c.K2)(function(t,e){(0,r.lC)(t,e)},"drawBackgroundRect"),U=(0,c.K2)(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),G=(0,c.K2)(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),X=(0,c.K2)(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),J=(0,c.K2)(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),Z=(0,c.K2)(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),Q=(0,c.K2)(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),tt=(0,c.K2)(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),et=(0,c.K2)(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),at=(0,c.K2)(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),rt=function(){function t(t,e,a,r,i,n,o){s(e.append("text").attr("x",a+i/2).attr("y",r+n/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,a,r,i,c,l,h){const{actorFontSize:d,actorFontFamily:p,actorFontWeight:g}=h,[u,x]=(0,n.I5)(d),y=t.split(o.Y2.lineBreakRegex);for(let n=0;nt.height||0))+(0===this.loops.length?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.messages.length?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(0===this.notes.length?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:(0,c.K2)(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:(0,c.K2)(function(t){this.boxes.push(t)},"addBox"),addActor:(0,c.K2)(function(t){this.actors.push(t)},"addActor"),addLoop:(0,c.K2)(function(t){this.loops.push(t)},"addLoop"),addMessage:(0,c.K2)(function(t){this.messages.push(t)},"addMessage"),addNote:(0,c.K2)(function(t){this.notes.push(t)},"addNote"),lastActor:(0,c.K2)(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:(0,c.K2)(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:(0,c.K2)(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:(0,c.K2)(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:(0,c.K2)(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,mt((0,o.D7)())},"init"),updateVal:(0,c.K2)(function(t,e,a,r){void 0===t[e]?t[e]=a:t[e]=r(a,t[e])},"updateVal"),updateBounds:(0,c.K2)(function(t,e,a,r){const s=this;let i=0;function n(n){return(0,c.K2)(function(o){i++;const c=s.sequenceItems.length-i+1;s.updateVal(o,"starty",e-c*nt.boxMargin,Math.min),s.updateVal(o,"stopy",r+c*nt.boxMargin,Math.max),s.updateVal(ot.data,"startx",t-c*nt.boxMargin,Math.min),s.updateVal(ot.data,"stopx",a+c*nt.boxMargin,Math.max),"activation"!==n&&(s.updateVal(o,"startx",t-c*nt.boxMargin,Math.min),s.updateVal(o,"stopx",a+c*nt.boxMargin,Math.max),s.updateVal(ot.data,"starty",e-c*nt.boxMargin,Math.min),s.updateVal(ot.data,"stopy",r+c*nt.boxMargin,Math.max))},"updateItemBounds")}(0,c.K2)(n,"updateFn"),this.sequenceItems.forEach(n()),this.activations.forEach(n("activation"))},"updateBounds"),insert:(0,c.K2)(function(t,e,a,r){const s=o.Y2.getMin(t,a),i=o.Y2.getMax(t,a),n=o.Y2.getMin(e,r),c=o.Y2.getMax(e,r);this.updateVal(ot.data,"startx",s,Math.min),this.updateVal(ot.data,"starty",n,Math.min),this.updateVal(ot.data,"stopx",i,Math.max),this.updateVal(ot.data,"stopy",c,Math.max),this.updateBounds(s,n,i,c)},"insert"),newActivation:(0,c.K2)(function(t,e,a){const r=a.get(t.from),s=bt(t.from).length||0,i=r.x+r.width/2+(s-1)*nt.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+nt.activationWidth,stopy:void 0,actor:t.from,anchored:it.anchorElement(e)})},"newActivation"),endActivation:(0,c.K2)(function(t){const e=this.activations.map(function(t){return t.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:(0,c.K2)(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:(0,c.K2)(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:(0,c.K2)(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:(0,c.K2)(function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap},"isLoopOverlap"),addSectionToLoop:(0,c.K2)(function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ot.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:(0,c.K2)(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:(0,c.K2)(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:(0,c.K2)(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=o.Y2.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:(0,c.K2)(function(){return this.verticalPos},"getVerticalPos"),getBounds:(0,c.K2)(function(){return{bounds:this.data,models:this.models}},"getBounds")},ct=(0,c.K2)(async function(t,e){ot.bumpVerticalPos(nt.boxMargin),e.height=nt.boxMargin,e.starty=ot.getVerticalPos();const a=(0,r.PB)();a.x=e.startx,a.y=e.starty,a.width=e.width||nt.width,a.class="note";const s=t.append("g"),i=it.drawRect(s,a),n=(0,r.HT)();n.x=e.startx,n.y=e.starty,n.width=a.width,n.dy="1em",n.text=e.message,n.class="noteText",n.fontFamily=nt.noteFontFamily,n.fontSize=nt.noteFontSize,n.fontWeight=nt.noteFontWeight,n.anchor=nt.noteAlign,n.textMargin=nt.noteMargin,n.valign="center";const c=(0,o.Wi)(n.text)?await A(s,n):v(s,n),l=Math.round(c.map(t=>(t._groups||t)[0][0].getBBox().height).reduce((t,e)=>t+e));i.attr("height",l+2*nt.noteMargin),e.height+=l+2*nt.noteMargin,ot.bumpVerticalPos(l+2*nt.noteMargin),e.stopy=e.starty+l+2*nt.noteMargin,e.stopx=e.startx+a.width,ot.insert(e.startx,e.starty,e.stopx,e.stopy),ot.models.addNote(e)},"drawNote"),lt=(0,c.K2)(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),ht=(0,c.K2)(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),dt=(0,c.K2)(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");async function pt(t,e){ot.bumpVerticalPos(10);const{startx:a,stopx:r,message:s}=e,i=o.Y2.splitBreaks(s).length,c=(0,o.Wi)(s),l=c?await(0,o.Dl)(s,(0,o.D7)()):n._K.calculateTextDimensions(s,lt(nt));if(!c){const t=l.height/i;e.height+=t,ot.bumpVerticalPos(t)}let h,d=l.height-10;const p=l.width;if(a===r){h=ot.getVerticalPos()+d,nt.rightAngles||(d+=nt.boxMargin,h=ot.getVerticalPos()+d),d+=30;const t=o.Y2.getMax(p/2,nt.width/2);ot.insert(a-t,ot.getVerticalPos()-10+d,r+t,ot.getVerticalPos()+30+d)}else d+=nt.boxMargin,h=ot.getVerticalPos()+d,ot.insert(a,h-10,r,h);return ot.bumpVerticalPos(d),e.height+=d,e.stopy=e.starty+e.height,ot.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),h}(0,c.K2)(pt,"boundMessage");var gt=(0,c.K2)(async function(t,e,a,s){const{startx:i,stopx:c,starty:l,message:h,type:d,sequenceIndex:p,sequenceVisible:g}=e,u=n._K.calculateTextDimensions(h,lt(nt)),x=(0,r.HT)();x.x=i,x.y=l+10,x.width=c-i,x.class="messageText",x.dy="1em",x.text=h,x.fontFamily=nt.messageFontFamily,x.fontSize=nt.messageFontSize,x.fontWeight=nt.messageFontWeight,x.anchor=nt.messageAlign,x.valign="center",x.textMargin=nt.wrapPadding,x.tspan=!1,(0,o.Wi)(x.text)?await A(t,x,{startx:i,stopx:c,starty:a}):v(t,x);const y=u.width;let m;i===c?m=nt.rightAngles?t.append("path").attr("d",`M ${i},${a} H ${i+o.Y2.getMax(nt.width/2,y/2)} V ${a+25} H ${i}`):t.append("path").attr("d","M "+i+","+a+" C "+(i+60)+","+(a-10)+" "+(i+60)+","+(a+30)+" "+i+","+(a+20)):(m=t.append("line"),m.attr("x1",i),m.attr("y1",a),m.attr("x2",c),m.attr("y2",a)),d===s.db.LINETYPE.DOTTED||d===s.db.LINETYPE.DOTTED_CROSS||d===s.db.LINETYPE.DOTTED_POINT||d===s.db.LINETYPE.DOTTED_OPEN||d===s.db.LINETYPE.BIDIRECTIONAL_DOTTED?(m.style("stroke-dasharray","3, 3"),m.attr("class","messageLine1")):m.attr("class","messageLine0");let b="";if(nt.arrowMarkerAbsolute&&(b=(0,o.ID)(!0)),m.attr("stroke-width",2),m.attr("stroke","none"),m.style("fill","none"),d!==s.db.LINETYPE.SOLID&&d!==s.db.LINETYPE.DOTTED||m.attr("marker-end","url("+b+"#arrowhead)"),d!==s.db.LINETYPE.BIDIRECTIONAL_SOLID&&d!==s.db.LINETYPE.BIDIRECTIONAL_DOTTED||(m.attr("marker-start","url("+b+"#arrowhead)"),m.attr("marker-end","url("+b+"#arrowhead)")),d!==s.db.LINETYPE.SOLID_POINT&&d!==s.db.LINETYPE.DOTTED_POINT||m.attr("marker-end","url("+b+"#filled-head)"),d!==s.db.LINETYPE.SOLID_CROSS&&d!==s.db.LINETYPE.DOTTED_CROSS||m.attr("marker-end","url("+b+"#crosshead)"),g||nt.showSequenceNumbers){if(d===s.db.LINETYPE.BIDIRECTIONAL_SOLID||d===s.db.LINETYPE.BIDIRECTIONAL_DOTTED){const t=6;is&&(s=c.height),c.width+a.x>i&&(i=c.width+a.x)}return{maxHeight:s,maxWidth:i}},"drawActorsPopup"),mt=(0,c.K2)(function(t){(0,o.hH)(nt,t),t.fontFamily&&(nt.actorFontFamily=nt.noteFontFamily=nt.messageFontFamily=t.fontFamily),t.fontSize&&(nt.actorFontSize=nt.noteFontSize=nt.messageFontSize=t.fontSize),t.fontWeight&&(nt.actorFontWeight=nt.noteFontWeight=nt.messageFontWeight=t.fontWeight)},"setConf"),bt=(0,c.K2)(function(t){return ot.activations.filter(function(e){return e.actor===t})},"actorActivations"),Tt=(0,c.K2)(function(t,e){const a=e.get(t),r=bt(t);return[r.reduce(function(t,e){return o.Y2.getMin(t,e.startx)},a.x+a.width/2-1),r.reduce(function(t,e){return o.Y2.getMax(t,e.stopx)},a.x+a.width/2+1)]},"activationBounds");function ft(t,e,a,r,s){ot.bumpVerticalPos(a);let i=r;if(e.id&&e.message&&t[e.id]){const a=t[e.id].width,s=lt(nt);e.message=n._K.wrapLabel(`[${e.message}]`,a-2*nt.wrapPadding,s),e.width=a,e.wrap=!0;const l=n._K.calculateTextDimensions(e.message,s),h=o.Y2.getMax(l.height,nt.labelBoxHeight);i=r+h,c.Rm.debug(`${h} - ${e.message}`)}s(e),ot.bumpVerticalPos(i)}function Et(t,e,a,r,s,i,n){function o(a,r){a.x{t.add(e.from),t.add(e.to)}),m=m.filter(e=>t.has(e))}ut(p,g,u,m,0,b,!1);const I=await Nt(b,g,w,r);function L(t,e){const a=ot.endActivation(t);a.starty+18>e&&(a.starty=e-6,e+=12),it.drawActivation(p,a,e,nt,bt(t.from).length),ot.insert(a.startx,e-10,a.stopx,e)}it.insertArrowHead(p),it.insertArrowCrossHead(p),it.insertArrowFilledHead(p),it.insertSequenceNumber(p),(0,c.K2)(L,"activeEnd");let _=1,P=1;const k=[],N=[];let A=0;for(const o of b){let t,e,a;switch(o.type){case r.db.LINETYPE.NOTE:ot.resetVerticalPos(),e=o.noteModel,await ct(p,e);break;case r.db.LINETYPE.ACTIVE_START:ot.newActivation(o,p,g);break;case r.db.LINETYPE.ACTIVE_END:L(o,ot.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.LOOP_END:t=ot.endLoop(),await it.drawLoop(p,t,"loop",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.RECT_START:ft(I,o,nt.boxMargin,nt.boxMargin,t=>ot.newLoop(void 0,t.message));break;case r.db.LINETYPE.RECT_END:t=ot.endLoop(),N.push(t),ot.models.addLoop(t),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos());break;case r.db.LINETYPE.OPT_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.OPT_END:t=ot.endLoop(),await it.drawLoop(p,t,"opt",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.ALT_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.ALT_ELSE:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,t=>ot.addSectionToLoop(t));break;case r.db.LINETYPE.ALT_END:t=ot.endLoop(),await it.drawLoop(p,t,"alt",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t)),ot.saveVerticalPos();break;case r.db.LINETYPE.PAR_AND:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,t=>ot.addSectionToLoop(t));break;case r.db.LINETYPE.PAR_END:t=ot.endLoop(),await it.drawLoop(p,t,"par",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.AUTONUMBER:_=o.message.start||_,P=o.message.step||P,o.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.CRITICAL_OPTION:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,t=>ot.addSectionToLoop(t));break;case r.db.LINETYPE.CRITICAL_END:t=ot.endLoop(),await it.drawLoop(p,t,"critical",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.BREAK_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,t=>ot.newLoop(t));break;case r.db.LINETYPE.BREAK_END:t=ot.endLoop(),await it.drawLoop(p,t,"break",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;default:try{a=o.msgModel,a.starty=ot.getVerticalPos(),a.sequenceIndex=_,a.sequenceVisible=r.db.showSequenceNumbers();const t=await pt(0,a);Et(o,a,t,A,g,u,x),k.push({messageModel:a,lineStartY:t}),ot.models.addMessage(a)}catch(Y){c.Rm.error("error while drawing message",Y)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(o.type)&&(_+=P),A++}c.Rm.debug("createdActors",u),c.Rm.debug("destroyedActors",x),await xt(p,g,m,!1);for(const o of k)await gt(p,o.messageModel,o.lineStartY,r);nt.mirrorActors&&await xt(p,g,m,!0),N.forEach(t=>it.drawBackgroundRect(p,t)),D(p,g,m,nt);for(const o of ot.models.boxes){o.height=ot.getVerticalPos()-o.y,ot.insert(o.x,o.y,o.x+o.width,o.height);const t=2*nt.boxMargin;o.startx=o.x-t,o.starty=o.y-.25*t,o.stopx=o.startx+o.width+2*t,o.stopy=o.starty+o.height+.75*t,o.stroke="rgb(0,0,0, 0.5)",it.drawBox(p,o,nt)}f&&ot.bumpVerticalPos(nt.boxMargin);const v=yt(p,g,m,d),{bounds:M}=ot.getBounds();void 0===M.startx&&(M.startx=0),void 0===M.starty&&(M.starty=0),void 0===M.stopx&&(M.stopx=0),void 0===M.stopy&&(M.stopy=0);let O=M.stopy-M.starty;O{const a=lt(nt);let r=e.actorKeys.reduce((e,a)=>e+(t.get(a).width+(t.get(a).margin||0)),0);r+=8*nt.boxMargin,r-=2*nt.boxTextMargin,e.wrap&&(e.name=n._K.wrapLabel(e.name,r-2*nt.wrapPadding,a));const i=n._K.calculateTextDimensions(e.name,a);s=o.Y2.getMax(i.height,s);const c=o.Y2.getMax(r,i.width+2*nt.wrapPadding);if(e.margin=nt.boxTextMargin,rt.textMaxHeight=s),o.Y2.getMax(r,nt.height)}(0,c.K2)(_t,"calculateActorMargins");var Pt=(0,c.K2)(async function(t,e,a){const r=e.get(t.from),s=e.get(t.to),i=r.x,l=s.x,h=t.wrap&&t.message;let d=(0,o.Wi)(t.message)?await(0,o.Dl)(t.message,(0,o.D7)()):n._K.calculateTextDimensions(h?n._K.wrapLabel(t.message,nt.width,ht(nt)):t.message,ht(nt));const p={width:h?nt.width:o.Y2.getMax(nt.width,d.width+2*nt.noteMargin),height:0,startx:r.x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===a.db.PLACEMENT.RIGHTOF?(p.width=h?o.Y2.getMax(nt.width,d.width):o.Y2.getMax(r.width/2+s.width/2,d.width+2*nt.noteMargin),p.startx=i+(r.width+nt.actorMargin)/2):t.placement===a.db.PLACEMENT.LEFTOF?(p.width=h?o.Y2.getMax(nt.width,d.width+2*nt.noteMargin):o.Y2.getMax(r.width/2+s.width/2,d.width+2*nt.noteMargin),p.startx=i-p.width+(r.width-nt.actorMargin)/2):t.to===t.from?(d=n._K.calculateTextDimensions(h?n._K.wrapLabel(t.message,o.Y2.getMax(nt.width,r.width),ht(nt)):t.message,ht(nt)),p.width=h?o.Y2.getMax(nt.width,r.width):o.Y2.getMax(r.width,nt.width,d.width+2*nt.noteMargin),p.startx=i+(r.width-p.width)/2):(p.width=Math.abs(i+r.width/2-(l+s.width/2))+nt.actorMargin,p.startx=i2,u=(0,c.K2)(t=>h?-t:t,"adjustValue");t.from===t.to?p=d:(t.activate&&!g&&(p+=u(nt.activationWidth/2-1)),[a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(p+=u(3)),[a.db.LINETYPE.BIDIRECTIONAL_SOLID,a.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(d-=u(3)));const x=[r,s,i,l],y=Math.abs(d-p);t.wrap&&t.message&&(t.message=n._K.wrapLabel(t.message,o.Y2.getMax(y+2*nt.wrapPadding,nt.width),lt(nt)));const m=n._K.calculateTextDimensions(t.message,lt(nt));return{width:o.Y2.getMax(t.wrap?0:m.width+2*nt.wrapPadding,y+2*nt.wrapPadding,nt.width),height:0,startx:d,stopx:p,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,x),toBounds:Math.max.apply(null,x)}},"buildMessageModel"),Nt=(0,c.K2)(async function(t,e,a,r){const s={},i=[];let n,l,h;for(const c of t){switch(c.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:i.push({id:c.id,msg:c.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:c.message&&(n=i.pop(),s[n.id]=n,s[c.id]=n,i.push(n));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:n=i.pop(),s[n.id]=n;break;case r.db.LINETYPE.ACTIVE_START:{const t=e.get(c.from?c.from:c.to.actor),a=bt(c.from?c.from:c.to.actor).length,r=t.x+t.width/2+(a-1)*nt.activationWidth/2,s={startx:r,stopx:r+nt.activationWidth,actor:c.from,enabled:!0};ot.activations.push(s)}break;case r.db.LINETYPE.ACTIVE_END:{const t=ot.activations.map(t=>t.actor).lastIndexOf(c.from);ot.activations.splice(t,1).splice(0,1)}}void 0!==c.placement?(l=await Pt(c,e,r),c.noteModel=l,i.forEach(t=>{n=t,n.from=o.Y2.getMin(n.from,l.startx),n.to=o.Y2.getMax(n.to,l.startx+l.width),n.width=o.Y2.getMax(n.width,Math.abs(n.from-n.to))-nt.labelBoxWidth})):(h=kt(c,e,r),c.msgModel=h,h.startx&&h.stopx&&i.length>0&&i.forEach(t=>{if(n=t,h.startx===h.stopx){const t=e.get(c.from),a=e.get(c.to);n.from=o.Y2.getMin(t.x-h.width/2,t.x-t.width/2,n.from),n.to=o.Y2.getMax(a.x+h.width/2,a.x+t.width/2,n.to),n.width=o.Y2.getMax(n.width,Math.abs(n.to-n.from))-nt.labelBoxWidth}else n.from=o.Y2.getMin(h.startx,n.from),n.to=o.Y2.getMax(h.stopx,n.to),n.width=o.Y2.getMax(n.width,h.width)-nt.labelBoxWidth}))}return ot.activations=[],c.Rm.debug("Loop type widths:",s),s},"calculateLoopBounds"),At={bounds:ot,drawActors:xt,drawActorsPopup:yt,setConf:mt,draw:wt},vt={parser:p,get db(){return new f},renderer:At,styles:E,init:(0,c.K2)(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,(0,o.XV)({sequence:{wrap:t.wrap}}))},"init")}}}]); \ No newline at end of file diff --git a/user/assets/js/7873.36c0782a.js b/user/assets/js/7873.36c0782a.js new file mode 100644 index 0000000..60a2f9e --- /dev/null +++ b/user/assets/js/7873.36c0782a.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[7873],{7873:(e,n,t)=>{t.r(n),t.d(n,{render:()=>k});var r=t(5164),i=(t(8698),t(5894)),a=t(3245),o=(t(2387),t(92),t(3226),t(7633)),d=t(797),s=t(2334),c=t(9592),g=t(53),l=t(4722);t(7981);function f(e){var n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:h(e),edges:p(e)};return c.A(e.graph())||(n.value=g.A(e.graph())),n}function h(e){return l.A(e.nodes(),function(n){var t=e.node(n),r=e.parent(n),i={v:n};return c.A(t)||(i.value=t),c.A(r)||(i.parent=r),i})}function p(e){return l.A(e.edges(),function(n){var t=e.edge(n),r={v:n.v,w:n.w};return c.A(n.name)||(r.name=n.name),c.A(t)||(r.value=t),r})}var u=t(697),m=new Map,w=new Map,R=new Map,v=(0,d.K2)(()=>{w.clear(),R.clear(),m.clear()},"clear"),y=(0,d.K2)((e,n)=>{const t=w.get(n)||[];return d.Rm.trace("In isDescendant",n," ",e," = ",t.includes(e)),t.includes(e)},"isDescendant"),X=(0,d.K2)((e,n)=>{const t=w.get(n)||[];return d.Rm.info("Descendants of ",n," is ",t),d.Rm.info("Edge is ",e),e.v!==n&&e.w!==n&&(t?t.includes(e.v)||y(e.v,n)||y(e.w,n)||t.includes(e.w):(d.Rm.debug("Tilt, ",n,",not in descendants"),!1))},"edgeInCluster"),b=(0,d.K2)((e,n,t,r)=>{d.Rm.warn("Copying children of ",e,"root",r,"data",n.node(e),r);const i=n.children(e)||[];e!==r&&i.push(e),d.Rm.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach(i=>{if(n.children(i).length>0)b(i,n,t,r);else{const a=n.node(i);d.Rm.info("cp ",i," to ",r," with parent ",e),t.setNode(i,a),r!==n.parent(i)&&(d.Rm.warn("Setting parent",i,n.parent(i)),t.setParent(i,n.parent(i))),e!==r&&i!==e?(d.Rm.debug("Setting parent",i,e),t.setParent(i,e)):(d.Rm.info("In copy ",e,"root",r,"data",n.node(e),r),d.Rm.debug("Not Setting parent for node=",i,"cluster!==rootId",e!==r,"node!==clusterId",i!==e));const o=n.edges(i);d.Rm.debug("Copying Edges",o),o.forEach(i=>{d.Rm.info("Edge",i);const a=n.edge(i.v,i.w,i.name);d.Rm.info("Edge data",a,r);try{X(i,r)?(d.Rm.info("Copying as ",i.v,i.w,a,i.name),t.setEdge(i.v,i.w,a,i.name),d.Rm.info("newGraph edges ",t.edges(),t.edge(t.edges()[0]))):d.Rm.info("Skipping copy of edge ",i.v,"--\x3e",i.w," rootId: ",r," clusterId:",e)}catch(o){d.Rm.error(o)}})}d.Rm.debug("Removing node",i),n.removeNode(i)})},"copy"),E=(0,d.K2)((e,n)=>{const t=n.children(e);let r=[...t];for(const i of t)R.set(i,e),r=[...r,...E(i,n)];return r},"extractDescendants"),N=(0,d.K2)((e,n,t)=>{const r=e.edges().filter(e=>e.v===n||e.w===n),i=e.edges().filter(e=>e.v===t||e.w===t),a=r.map(e=>({v:e.v===n?t:e.v,w:e.w===n?n:e.w})),o=i.map(e=>({v:e.v,w:e.w}));return a.filter(e=>o.some(n=>e.v===n.v&&e.w===n.w))},"findCommonEdges"),C=(0,d.K2)((e,n,t)=>{const r=n.children(e);if(d.Rm.trace("Searching children of id ",e,r),r.length<1)return e;let i;for(const a of r){const e=C(a,n,t),r=N(n,t,e);if(e){if(!(r.length>0))return e;i=e}}return i},"findNonClusterChild"),S=(0,d.K2)(e=>m.has(e)&&m.get(e).externalConnections&&m.has(e)?m.get(e).id:e,"getAnchorId"),x=(0,d.K2)((e,n)=>{if(!e||n>10)d.Rm.debug("Opting out, no graph ");else{d.Rm.debug("Opting in, graph "),e.nodes().forEach(function(n){e.children(n).length>0&&(d.Rm.warn("Cluster identified",n," Replacement id in edges: ",C(n,e,n)),w.set(n,E(n,e)),m.set(n,{id:C(n,e,n),clusterData:e.node(n)}))}),e.nodes().forEach(function(n){const t=e.children(n),r=e.edges();t.length>0?(d.Rm.debug("Cluster identified",n,w),r.forEach(e=>{y(e.v,n)^y(e.w,n)&&(d.Rm.warn("Edge: ",e," leaves cluster ",n),d.Rm.warn("Descendants of XXX ",n,": ",w.get(n)),m.get(n).externalConnections=!0)})):d.Rm.debug("Not a cluster ",n,w)});for(let n of m.keys()){const t=m.get(n).id,r=e.parent(t);r!==n&&m.has(r)&&!m.get(r).externalConnections&&(m.get(n).id=r)}e.edges().forEach(function(n){const t=e.edge(n);d.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),d.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let r=n.v,i=n.w;if(d.Rm.warn("Fix XXX",m,"ids:",n.v,n.w,"Translating: ",m.get(n.v)," --- ",m.get(n.w)),m.get(n.v)||m.get(n.w)){if(d.Rm.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),r=S(n.v),i=S(n.w),e.removeEdge(n.v,n.w,n.name),r!==n.v){const i=e.parent(r);m.get(i).externalConnections=!0,t.fromCluster=n.v}if(i!==n.w){const r=e.parent(i);m.get(r).externalConnections=!0,t.toCluster=n.w}d.Rm.warn("Fix Replacing with XXX",r,i,n.name),e.setEdge(r,i,t,n.name)}}),d.Rm.warn("Adjusted Graph",f(e)),I(e,0),d.Rm.trace(m)}},"adjustClustersAndEdges"),I=(0,d.K2)((e,n)=>{if(d.Rm.warn("extractor - ",n,f(e),e.children("D")),n>10)return void d.Rm.error("Bailing out");let t=e.nodes(),r=!1;for(const i of t){const n=e.children(i);r=r||n.length>0}if(r){d.Rm.debug("Nodes = ",t,n);for(const r of t)if(d.Rm.debug("Extracting node",r,m,m.has(r)&&!m.get(r).externalConnections,!e.parent(r),e.node(r),e.children("D")," Depth ",n),m.has(r))if(!m.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){d.Rm.warn("Cluster without external connections, without a parent and with children",r,n);let t="TB"===e.graph().rankdir?"LR":"TB";m.get(r)?.clusterData?.dir&&(t=m.get(r).clusterData.dir,d.Rm.warn("Fixing dir",m.get(r).clusterData.dir,t));const i=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:t,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});d.Rm.warn("Old graph before copy",f(e)),b(r,e,i,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:m.get(r).clusterData,label:m.get(r).label,graph:i}),d.Rm.warn("New graph after copy node: (",r,")",f(i)),d.Rm.debug("Old graph after copy",f(e))}else d.Rm.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!m.get(r).externalConnections," no parent: ",!e.parent(r)," children ",e.children(r)&&e.children(r).length>0,e.children("D"),n),d.Rm.debug(m);else d.Rm.debug("Not a cluster",r,n);t=e.nodes(),d.Rm.warn("New list of nodes",t);for(const r of t){const t=e.node(r);d.Rm.warn(" Now next level",r,t),t?.clusterNode&&I(t.graph,n+1)}}else d.Rm.debug("Done, no node has children",e.nodes())},"extractor"),D=(0,d.K2)((e,n)=>{if(0===n.length)return[];let t=Object.assign([],n);return n.forEach(n=>{const r=e.children(n),i=D(e,r);t=[...t,...i]}),t},"sorter"),A=(0,d.K2)(e=>D(e,e.children()),"sortNodesByHierarchy"),O=(0,d.K2)(async(e,n,t,o,c,g)=>{d.Rm.warn("Graph in recursive render:XAX",f(n),c);const l=n.graph().rankdir;d.Rm.trace("Dir in recursive render - dir:",l);const h=e.insert("g").attr("class","root");n.nodes()?d.Rm.info("Recursive render XXX",n.nodes()):d.Rm.info("No nodes found for",n),n.edges().length>0&&d.Rm.info("Recursive edges",n.edge(n.edges()[0]));const p=h.insert("g").attr("class","clusters"),u=h.insert("g").attr("class","edgePaths"),w=h.insert("g").attr("class","edgeLabels"),R=h.insert("g").attr("class","nodes");await Promise.all(n.nodes().map(async function(e){const r=n.node(e);if(void 0!==c){const t=JSON.parse(JSON.stringify(c.clusterData));d.Rm.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",t.height,"\nParent cluster",c.height),n.setNode(c.id,t),n.parent(e)||(d.Rm.trace("Setting parent",e,c.id),n.setParent(e,c.id,t))}if(d.Rm.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),r?.clusterNode){d.Rm.info("Cluster identified XBX",e,r.width,n.node(e));const{ranksep:a,nodesep:s}=n.graph();r.graph.setGraph({...r.graph.graph(),ranksep:a+25,nodesep:s});const c=await O(R,r.graph,t,o,n.node(e),g),l=c.elem;(0,i.lC)(r,l),r.diff=c.diff||0,d.Rm.info("New compound node after recursive render XAX",e,"width",r.width,"height",r.height),(0,i.U7)(l,r)}else n.children(e).length>0?(d.Rm.trace("Cluster - the non recursive path XBX",e,r.id,r,r.width,"Graph:",n),d.Rm.trace(C(r.id,n)),m.set(r.id,{id:C(r.id,n),node:r})):(d.Rm.trace("Node - the non recursive path XAX",e,R,n.node(e),l),await(0,i.on)(R,n.node(e),{config:g,dir:l}))}));const v=(0,d.K2)(async()=>{const e=n.edges().map(async function(e){const t=n.edge(e.v,e.w,e.name);d.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),d.Rm.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(n.edge(e))),d.Rm.info("Fix",m,"ids:",e.v,e.w,"Translating: ",m.get(e.v),m.get(e.w)),await(0,r.jP)(w,t)});await Promise.all(e)},"processEdges");await v(),d.Rm.info("Graph before layout:",JSON.stringify(f(n))),d.Rm.info("############################################# XXX"),d.Rm.info("### Layout ### XXX"),d.Rm.info("############################################# XXX"),(0,s.Zp)(n),d.Rm.info("Graph after layout:",JSON.stringify(f(n)));let y=0,{subGraphTitleTotalMargin:X}=(0,a.O)(g);return await Promise.all(A(n).map(async function(e){const t=n.node(e);if(d.Rm.info("Position XBX => "+e+": ("+t.x,","+t.y,") width: ",t.width," height: ",t.height),t?.clusterNode)t.y+=X,d.Rm.info("A tainted cluster node XBX1",e,t.id,t.width,t.height,t.x,t.y,n.parent(e)),m.get(t.id).node=t,(0,i.U_)(t);else if(n.children(e).length>0){d.Rm.info("A pure cluster node XBX1",e,t.id,t.x,t.y,t.width,t.height,n.parent(e)),t.height+=X,n.node(t.parentId);const r=t?.padding/2||0,a=t?.labelBBox?.height||0,o=a-r||0;d.Rm.debug("OffsetY",o,"labelHeight",a,"halfPadding",r),await(0,i.U)(p,t),m.get(t.id).node=t}else{const e=n.node(t.parentId);t.y+=X/2,d.Rm.info("A regular node XBX1 - using the padding",t.id,"parent",t.parentId,t.width,t.height,t.x,t.y,"offsetY",t.offsetY,"parent",e,e?.offsetY,t),(0,i.U_)(t)}})),n.edges().forEach(function(e){const i=n.edge(e);d.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(i),i),i.points.forEach(e=>e.y+=X/2);const a=n.node(e.v);var s=n.node(e.w);const c=(0,r.Jo)(u,i,m,t,a,s,o);(0,r.T_)(i,c)}),n.nodes().forEach(function(e){const t=n.node(e);d.Rm.info(e,t.type,t.diff),t.isGroup&&(y=t.diff)}),d.Rm.warn("Returning from recursive render XAX",h,y),{elem:h,diff:y}},"recursiveRender"),k=(0,d.K2)(async(e,n)=>{const t=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=n.select("g");(0,r.g0)(a,e.markers,e.type,e.diagramId),(0,i.gh)(),(0,r.IU)(),(0,i.IU)(),v(),e.nodes.forEach(e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)}),d.Rm.debug("Edges:",e.edges),e.edges.forEach(e=>{if(e.start===e.end){const n=e.start,r=n+"---"+n+"---1",i=n+"---"+n+"---2",a=t.node(n);t.setNode(r,{domId:r,id:r,parentId:a.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(r,a.parentId),t.setNode(i,{domId:i,id:i,parentId:a.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(i,a.parentId);const o=structuredClone(e),d=structuredClone(e),s=structuredClone(e);o.label="",o.arrowTypeEnd="none",o.id=n+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=n+"-cyclic-special-mid",s.label="",a.isGroup&&(o.fromCluster=n,s.toCluster=n),s.id=n+"-cyclic-special-2",s.arrowTypeStart="none",t.setEdge(n,r,o,n+"-cyclic-special-0"),t.setEdge(r,i,d,n+"-cyclic-special-1"),t.setEdge(i,n,s,n+"-cyce&&(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)),this.labelHeight>i&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-i)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-i),this.setHeight(this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==n.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var r=new h(e,i),n=t.inverseTransformPoint(r);this.setLocation(n.x,n.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";function r(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(t){this.x=t},r.prototype.setY=function(t){this.y=t},r.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=r},function(t,e,i){"use strict";var r=i(2),n=i(10),o=i(0),s=i(6),a=i(3),h=i(1),l=i(13),g=i(12),u=i(11);function c(t,e,i){r.call(this,i),this.estimatedSize=n.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var d in c.prototype=Object.create(r.prototype),r)c[d]=r[d];c.prototype.getNodes=function(){return this.nodes},c.prototype.getEdges=function(){return this.edges},c.prototype.getGraphManager=function(){return this.graphManager},c.prototype.getParent=function(){return this.parent},c.prototype.getLeft=function(){return this.left},c.prototype.getRight=function(){return this.right},c.prototype.getTop=function(){return this.top},c.prototype.getBottom=function(){return this.bottom},c.prototype.isConnected=function(){return this.isConnected},c.prototype.add=function(t,e,i){if(null==e&&null==i){var r=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(r)>-1)throw"Node already in graph!";return r.owner=this,this.getNodes().push(r),r}var n=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(n.source=e,n.target=i,n.isInterGraph=!1,this.getEdges().push(n),e.edges.push(n),i!=e&&i.edges.push(n),n)},c.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),r=i.length,n=0;n-1&&g>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(g,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},c.prototype.updateLeftTop=function(){for(var t,e,i,r=n.MAX_VALUE,o=n.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h(t=l.getTop())&&(r=t),o>(e=l.getLeft())&&(o=e)}return r==n.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=r-i,new g(this.left,this.top))},c.prototype.updateBounds=function(t){for(var e,i,r,o,s,a=n.MAX_VALUE,h=-n.MAX_VALUE,g=n.MAX_VALUE,u=-n.MAX_VALUE,c=this.nodes,d=c.length,p=0;p(e=f.getLeft())&&(a=e),h<(i=f.getRight())&&(h=i),g>(r=f.getTop())&&(g=r),u<(o=f.getBottom())&&(u=o)}var y=new l(a,g,h-a,u-g);a==n.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=c[0].getParent().paddingLeft?c[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},c.calculateBounds=function(t){for(var e,i,r,o,s=n.MAX_VALUE,a=-n.MAX_VALUE,h=n.MAX_VALUE,g=-n.MAX_VALUE,u=t.length,c=0;c(e=d.getLeft())&&(s=e),a<(i=d.getRight())&&(a=i),h>(r=d.getTop())&&(h=r),g<(o=d.getBottom())&&(g=o)}return new l(s,h,a-s,g-h)},c.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},c.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},c.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,r=0;r=this.nodes.length){var h=0;n.forEach(function(e){e.owner==t&&h++}),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=c},function(t,e,i){"use strict";var r,n=i(1);function o(t){r=i(5),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,r,n){if(null==i&&null==r&&null==n){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}n=i,i=t;var o=(r=e).getOwner(),s=n.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,r,n);if(i.isInterGraph=!0,i.source=r,i.target=n,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof r){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]s)return i[0]=r,i[1]=h,i[2]=o,i[3]=A,!1;if(no)return i[0]=a,i[1]=n,i[2]=E,i[3]=s,!1;if(ro?(i[0]=g,i[1]=u,L=!0):(i[0]=l,i[1]=h,L=!0):O===D&&(r>o?(i[0]=a,i[1]=h,L=!0):(i[0]=c,i[1]=u,L=!0)),-I===D?o>r?(i[2]=v,i[3]=A,m=!0):(i[2]=E,i[3]=y,m=!0):I===D&&(o>r?(i[2]=f,i[3]=y,m=!0):(i[2]=N,i[3]=A,m=!0)),L&&m)return!1;if(r>o?n>s?(w=this.getCardinalDirection(O,D,4),R=this.getCardinalDirection(I,D,2)):(w=this.getCardinalDirection(-O,D,3),R=this.getCardinalDirection(-I,D,1)):n>s?(w=this.getCardinalDirection(-O,D,1),R=this.getCardinalDirection(-I,D,3)):(w=this.getCardinalDirection(O,D,2),R=this.getCardinalDirection(I,D,4)),!L)switch(w){case 1:M=h,C=r+-p/D,i[0]=C,i[1]=M;break;case 2:C=c,M=n+d*D,i[0]=C,i[1]=M;break;case 3:M=u,C=r+p/D,i[0]=C,i[1]=M;break;case 4:C=g,M=n+-d*D,i[0]=C,i[1]=M}if(!m)switch(R){case 1:x=y,G=o+-_/D,i[2]=G,i[3]=x;break;case 2:G=N,x=s+T*D,i[2]=G,i[3]=x;break;case 3:x=A,G=o+_/D,i[2]=G,i[3]=x;break;case 4:G=v,x=s+-T*D,i[2]=G,i[3]=x}}return!1},n.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},n.getIntersection=function(t,e,i,n){if(null==n)return this.getIntersection2(t,e,i);var o,s,a,h,l,g,u,c=t.x,d=t.y,p=e.x,f=e.y,y=i.x,E=i.y,v=n.x,A=n.y;return 0===(u=(o=f-d)*(h=y-v)-(s=A-E)*(a=c-p))?null:new r((a*(g=v*E-y*A)-h*(l=p*d-c*f))/u,(s*l-o*g)/u)},n.angleOfVector=function(t,e,i,r){var n=void 0;return t!==i?(n=Math.atan((r-e)/(i-t)),i0?1:t<0?-1:0},r.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},r.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=r},function(t,e,i){"use strict";function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,t.exports=r},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i0&&e;){for(a.push(l[0]);a.length>0&&e;){var g=a[0];a.splice(0,1),s.add(g);var u=g.getEdges();for(o=0;o-1&&l.splice(f,1)}s=new Set,h=new Map}else t=[]}return t},c.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,r=this.graphManager.calcLowestCommonAncestor(t.source,t.target),n=0;n0){for(var n=this.edgeToDummyNodes.get(i),o=0;o=0&&e.splice(u,1),g.getNeighborsList().forEach(function(t){if(i.indexOf(t)<0){var e=r.get(t)-1;1==e&&h.push(t),r.set(t,e)}})}i=i.concat(h),1!=e.length&&2!=e.length||(n=!0,o=e[0])}return o},c.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=c},function(t,e,i){"use strict";function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=1e4*Math.sin(r.seed++),r.x-Math.floor(r.x)},t.exports=r},function(t,e,i){"use strict";var r=i(4);function n(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}n.prototype.getWorldOrgX=function(){return this.lworldOrgX},n.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},n.prototype.getWorldOrgY=function(){return this.lworldOrgY},n.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},n.prototype.getWorldExtX=function(){return this.lworldExtX},n.prototype.setWorldExtX=function(t){this.lworldExtX=t},n.prototype.getWorldExtY=function(){return this.lworldExtY},n.prototype.setWorldExtY=function(t){this.lworldExtY=t},n.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},n.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},n.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},n.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},n.prototype.getDeviceExtX=function(){return this.ldeviceExtX},n.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},n.prototype.getDeviceExtY=function(){return this.ldeviceExtY},n.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},n.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},n.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},n.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},n.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},n.prototype.inverseTransformPoint=function(t){return new r(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=n},function(t,e,i){"use strict";var r=i(15),n=i(7),o=i(0),s=i(8),a=i(9);function h(){r.call(this),this.useSmartIdealEdgeLengthCalculation=n.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=n.DEFAULT_EDGE_LENGTH,this.springConstant=n.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=n.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=n.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=n.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=n.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=n.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*n.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=n.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=n.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=n.MAX_ITERATIONS}for(var l in h.prototype=Object.create(r.prototype),r)h[l]=r[l];h.prototype.initParameters=function(){r.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=n.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,r,s,a,h=this.getGraphManager().getAllEdges(),l=0;ln.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*n.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-n.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>n.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(n.COOLING_ADAPTATION_FACTOR,1-(t-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*(1-n.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%n.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*n,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*n*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=a.length||l>=a[0].length))for(var g=0;gt}}]),t}();t.exports=o},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=r,this.mismatch_penalty=n,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s=0;i--){var r=this.listeners[i];r.event===t&&r.callback===e&&this.listeners.splice(i,1)}},n.emit=function(t,e){for(var i=0;i0&&(s=i.getGraphManager().add(i.newGraph(),o),this.processChildrenList(s,u,i))}},u.prototype.stop=function(){return this.stopped=!0,this};var d=function(t){t("layout","cose-bilkent",u)};"undefined"!=typeof cytoscape&&d(cytoscape),t.exports=d}])},t.exports=r(i(7799))},7799:function(t,e,i){var r;r=function(t){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=7)}([function(e,i){e.exports=t},function(t,e,i){"use strict";var r=i(0).FDLayoutConstants;function n(){}for(var o in r)n[o]=r[o];n.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,n.DEFAULT_RADIAL_SEPARATION=r.DEFAULT_EDGE_LENGTH,n.DEFAULT_COMPONENT_SEPERATION=60,n.TILE=!0,n.TILING_PADDING_VERTICAL=10,n.TILING_PADDING_HORIZONTAL=10,n.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=n},function(t,e,i){"use strict";var r=i(0).FDLayoutEdge;function n(t,e,i){r.call(this,t,e,i)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).LGraph;function n(t,e,i){r.call(this,t,e,i)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).LGraphManager;function n(t){r.call(this,t)}for(var o in n.prototype=Object.create(r.prototype),r)n[o]=r[o];t.exports=n},function(t,e,i){"use strict";var r=i(0).FDLayoutNode,n=i(0).IMath;function o(t,e,i,n){r.call(this,t,e,i,n)}for(var s in o.prototype=Object.create(r.prototype),r)o[s]=r[s];o.prototype.move=function(){var t=this.graphManager.getLayout();this.displacementX=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*n.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*n.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,r=this.getChild().getNodes(),n=0;n0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},v.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},v.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i1)for(a=0;ar&&(r=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new c(g.WORLD_CENTER_X-s.x/2,g.WORLD_CENTER_Y-s.y/2))},v.radialLayout=function(t,e,i){var r=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);v.branchRadialLayout(e,null,0,359,0,r);var n=y.calculateBounds(t),o=new E;o.setDeviceOrgX(n.getMinX()),o.setDeviceOrgY(n.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s1;){var E=y[0];y.splice(0,1);var A=g.indexOf(E);A>=0&&g.splice(A,1),p--,u--}c=null!=e?(g.indexOf(y[0])+1)%p:0;for(var N=Math.abs(r-i)/u,T=c;d!=u;T=++T%p){var _=g[T].getOtherEnd(t);if(_!=e){var L=(i+d*N)%360,m=(L+N)%360;v.branchRadialLayout(_,t,L,m,n+o,o),d++}}},v.maxDiagonalInTree=function(t){for(var e=p.MIN_VALUE,i=0;ie&&(e=r)}return e},v.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},v.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],r=this.graphManager.getAllNodes(),n=0;n1){var r="DummyCompound_"+i;t.memberGroups[r]=e[i];var n=e[i][0].getParent(),o=new s(t.graphManager);o.id=r,o.paddingLeft=n.paddingLeft||0,o.paddingRight=n.paddingRight||0,o.paddingBottom=n.paddingBottom||0,o.paddingTop=n.paddingTop||0,t.idToDummyNode[r]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=n.getChild();h.add(o);for(var l=0;l=0;t--){var e=this.compoundOrder[t],i=e.id,r=e.paddingLeft,n=e.paddingTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,r,n)}},v.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(i){var r=t.idToDummyNode[i],n=r.paddingLeft,o=r.paddingTop;t.adjustLocations(e[i],r.rect.x,r.rect.y,n,o)})},v.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var r=i.getNodes(),n=0;n0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},v.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,r=0;rh&&(h=g.rect.height)}i+=h+t.verticalPadding}},v.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(r){var n=e[r];i.tiledMemberPack[r]=i.tileNodes(t[r],n.paddingLeft+n.paddingRight),n.rect.width=i.tiledMemberPack[r].width,n.rect.height=i.tiledMemberPack[r].height})},v.prototype.tileNodes=function(t,e){var i={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:h.TILING_PADDING_VERTICAL,horizontalPadding:h.TILING_PADDING_HORIZONTAL};t.sort(function(t,e){return t.rect.width*t.rect.height>e.rect.width*e.rect.height?-1:t.rect.width*t.rect.height0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},v.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,r=0;ri&&(e=r,i=t.rowWidth[r]);return e},v.prototype.canAddHorizontal=function(t,e,i){var r=this.getShortestRowIndex(t);if(r<0)return!0;var n=t.rowWidth[r];if(n+t.horizontalPadding+e<=t.width)return!0;var o,s,a=0;return t.rowHeight[r]0&&(a=i+t.verticalPadding-t.rowHeight[r]),o=t.width-n>=e+t.horizontalPadding?(t.height+a)/(n+e+t.horizontalPadding):(t.height+a)/t.width,a=i+t.verticalPadding,(s=t.widtho&&e!=i){r.splice(-1,1),t.rows[i].push(n),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;as&&(s=r[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]0)for(var g=n;g<=o;g++)h[0]+=this.grid[g][s-1].length+this.grid[g][s].length-1;if(o0)for(g=s;g<=a;g++)h[3]+=this.grid[n-1][g].length+this.grid[n][g].length-1;for(var u,c,d=p.MAX_VALUE,f=0;f{"use strict";i.r(e),i.d(e,{render:()=>p});var r=i(797),n=i(165),o=i(3457),s=i(451);function a(t,e){t.forEach(t=>{const i={id:t.id,labelText:t.label,height:t.height,width:t.width,padding:t.padding??0};Object.keys(t).forEach(e=>{["id","label","height","width","padding","x","y"].includes(e)||(i[e]=t[e])}),e.add({group:"nodes",data:i,position:{x:t.x??0,y:t.y??0}})})}function h(t,e){t.forEach(t=>{const i={id:t.id,source:t.start,target:t.end};Object.keys(t).forEach(e=>{["id","start","end"].includes(e)||(i[e]=t[e])}),e.add({group:"edges",data:i})})}function l(t){return new Promise(e=>{const i=(0,s.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),o=(0,n.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});i.remove(),a(t.nodes,o),h(t.edges,o),o.nodes().forEach(function(t){t.layoutDimensions=()=>{const e=t.data();return{w:e.width,h:e.height}}});o.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),o.ready(t=>{r.Rm.info("Cytoscape ready",t),e(o)})})}function g(t){return t.nodes().map(t=>{const e=t.data(),i=t.position(),r={id:e.id,x:i.x,y:i.y};return Object.keys(e).forEach(t=>{"id"!==t&&(r[t]=e[t])}),r})}function u(t){return t.edges().map(t=>{const e=t.data(),i=t._private.rscratch,r={id:e.id,source:e.source,target:e.target,startX:i.startX,startY:i.startY,midX:i.midX,midY:i.midY,endX:i.endX,endY:i.endY};return Object.keys(e).forEach(t=>{["id","source","target"].includes(t)||(r[t]=e[t])}),r})}async function c(t,e){r.Rm.debug("Starting cose-bilkent layout algorithm");try{d(t);const e=await l(t),i=g(e),n=u(e);return r.Rm.debug(`Layout completed: ${i.length} nodes, ${n.length} edges`),{nodes:i,edges:n}}catch(i){throw r.Rm.error("Error in cose-bilkent layout algorithm:",i),i}}function d(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(t.edges))throw new Error("Edges array is required in layout data");return!0}n.A.use(o),(0,r.K2)(a,"addNodes"),(0,r.K2)(h,"addEdges"),(0,r.K2)(l,"createCytoscapeInstance"),(0,r.K2)(g,"extractPositionedNodes"),(0,r.K2)(u,"extractPositionedEdges"),(0,r.K2)(c,"executeCoseBilkentLayout"),(0,r.K2)(d,"validateLayoutData");var p=(0,r.K2)(async(t,e,{insertCluster:i,insertEdge:r,insertEdgeLabel:n,insertMarkers:o,insertNode:s,log:a,positionEdgeLabel:h},{algorithm:l})=>{const g={},u={},d=e.select("g");o(d,t.markers,t.type,t.diagramId);const p=d.insert("g").attr("class","subgraphs"),f=d.insert("g").attr("class","edgePaths"),y=d.insert("g").attr("class","edgeLabels"),E=d.insert("g").attr("class","nodes");a.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map(async e=>{if(e.isGroup){const t={...e};u[e.id]=t,g[e.id]=t,await i(p,e)}else{const i={...e};g[e.id]=i;const r=await s(E,e,{config:t.config,dir:t.direction||"TB"}),n=r.node().getBBox();i.width=n.width,i.height=n.height,i.domId=r,a.debug(`Node ${e.id} dimensions: ${n.width}x${n.height}`)}})),a.debug("Running cose-bilkent layout algorithm");const v={...t,nodes:t.nodes.map(t=>{const e=g[t.id];return{...t,width:e.width,height:e.height}})},A=await c(v,t.config);a.debug("Positioning nodes based on layout results"),A.nodes.forEach(t=>{const e=g[t.id];e?.domId&&(e.domId.attr("transform",`translate(${t.x}, ${t.y})`),e.x=t.x,e.y=t.y,a.debug(`Positioned node ${e.id} at center (${t.x}, ${t.y})`))}),A.edges.forEach(e=>{const i=t.edges.find(t=>t.id===e.id);i&&(i.points=[{x:e.startX,y:e.startY},{x:e.midX,y:e.midY},{x:e.endX,y:e.endY}])}),a.debug("Inserting and positioning edges"),await Promise.all(t.edges.map(async e=>{await n(y,e);const i=g[e.start??""],o=g[e.end??""];if(i&&o){const n=A.edges.find(t=>t.id===e.id);if(n){a.debug("APA01 positionedEdge",n);const s={...e},l=r(f,s,u,t.type,i,o,t.diagramId);h(s,l)}else{const n={...e,points:[{x:i.x||0,y:i.y||0},{x:o.x||0,y:o.y||0}]},s=r(f,n,u,t.type,i,o,t.diagramId);h(n,s)}}})),a.debug("Cose-bilkent rendering completed")},"render")}}]); \ No newline at end of file diff --git a/user/assets/js/8142.5ca4bf46.js b/user/assets/js/8142.5ca4bf46.js new file mode 100644 index 0000000..7e92385 --- /dev/null +++ b/user/assets/js/8142.5ca4bf46.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8142],{8142:(t,e,a)=>{a.d(e,{diagram:()=>R});var i,n=a(4616),r=(a(9625),a(1152),a(45),a(5164),a(8698),a(5894),a(3245),a(2387),a(92),a(3226)),d=a(7633),s=a(797),o=a(451),g=a(2334),p=a(697),h=(0,s.K2)(t=>t.append("circle").attr("class","start-state").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit),"drawStartState"),c=(0,s.K2)(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",(0,d.D7)().state.textHeight).attr("class","divider").attr("x2",2*(0,d.D7)().state.textHeight).attr("y1",0).attr("y2",0),"drawDivider"),l=(0,s.K2)((t,e)=>{const a=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+2*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),i=a.node().getBBox();return t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",i.width+2*(0,d.D7)().state.padding).attr("height",i.height+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),a},"drawSimpleState"),x=(0,s.K2)((t,e)=>{const a=(0,s.K2)(function(t,e,a){const i=t.append("tspan").attr("x",2*(0,d.D7)().state.padding).text(e);a||i.attr("dy",(0,d.D7)().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+1.3*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),n=i.height,r=t.append("text").attr("x",(0,d.D7)().state.padding).attr("y",n+.4*(0,d.D7)().state.padding+(0,d.D7)().state.dividerMargin+(0,d.D7)().state.textHeight).attr("class","state-description");let o=!0,g=!0;e.descriptions.forEach(function(t){o||(a(r,t,g),g=!1),o=!1});const p=t.append("line").attr("x1",(0,d.D7)().state.padding).attr("y1",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("y2",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("class","descr-divider"),h=r.node().getBBox(),c=Math.max(h.width,i.width);return p.attr("x2",c+3*(0,d.D7)().state.padding),t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",c+2*(0,d.D7)().state.padding).attr("height",h.height+n+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),t},"drawDescrState"),D=(0,s.K2)((t,e,a)=>{const i=(0,d.D7)().state.padding,n=2*(0,d.D7)().state.padding,r=t.node().getBBox(),s=r.width,o=r.x,g=t.append("text").attr("x",0).attr("y",(0,d.D7)().state.titleShift).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),p=g.node().getBBox().width+n;let h,c=Math.max(p,s);c===s&&(c+=n);const l=t.node().getBBox();e.doc,h=o-i,p>s&&(h=(s-c)/2+i),Math.abs(o-l.x)s&&(h=o-(p-s)/2);const x=1-(0,d.D7)().state.textHeight;return t.insert("rect",":first-child").attr("x",h).attr("y",x).attr("class",a?"alt-composit":"composit").attr("width",c).attr("height",l.height+(0,d.D7)().state.textHeight+(0,d.D7)().state.titleShift+1).attr("rx","0"),g.attr("x",h+i),p<=s&&g.attr("x",o+(c-n)/2-p/2+i),t.insert("rect",":first-child").attr("x",h).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",3*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t.insert("rect",":first-child").attr("x",h).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",l.height+3+2*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t},"addTitleAndBox"),u=(0,s.K2)(t=>(t.append("circle").attr("class","end-state-outer").attr("r",(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2)),"drawEndState"),f=(0,s.K2)((t,e)=>{let a=(0,d.D7)().state.forkWidth,i=(0,d.D7)().state.forkHeight;if(e.parentId){let t=a;a=i,i=t}return t.append("rect").style("stroke","black").style("fill","black").attr("width",a).attr("height",i).attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding)},"drawForkJoinState"),y=(0,s.K2)((t,e,a,i)=>{let n=0;const r=i.append("text");r.style("text-anchor","start"),r.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");const o=s.split(d.Y2.lineBreakRegex);let g=1.25*(0,d.D7)().state.noteMargin;for(const p of o){const t=p.trim();if(t.length>0){const i=r.append("tspan");if(i.text(t),0===g){g+=i.node().getBBox().height}n+=g,i.attr("x",e+(0,d.D7)().state.noteMargin),i.attr("y",a+n+1.25*(0,d.D7)().state.noteMargin)}}return{textWidth:r.node().getBBox().width,textHeight:n}},"_drawLongText"),w=(0,s.K2)((t,e)=>{e.attr("class","state-note");const a=e.append("rect").attr("x",0).attr("y",(0,d.D7)().state.padding),i=e.append("g"),{textWidth:n,textHeight:r}=y(t,0,0,i);return a.attr("height",r+2*(0,d.D7)().state.noteMargin),a.attr("width",n+2*(0,d.D7)().state.noteMargin),a},"drawNote"),m=(0,s.K2)(function(t,e){const a=e.id,i={id:a,label:e.id,width:0,height:0},n=t.append("g").attr("id",a).attr("class","stateGroup");"start"===e.type&&h(n),"end"===e.type&&u(n),"fork"!==e.type&&"join"!==e.type||f(n,e),"note"===e.type&&w(e.note.text,n),"divider"===e.type&&c(n),"default"===e.type&&0===e.descriptions.length&&l(n,e),"default"===e.type&&e.descriptions.length>0&&x(n,e);const r=n.node().getBBox();return i.width=r.width+2*(0,d.D7)().state.padding,i.height=r.height+2*(0,d.D7)().state.padding,i},"drawState"),b=0,B=(0,s.K2)(function(t,e,a){const i=(0,s.K2)(function(t){switch(t){case n.u4.relationType.AGGREGATION:return"aggregation";case n.u4.relationType.EXTENSION:return"extension";case n.u4.relationType.COMPOSITION:return"composition";case n.u4.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(t=>!Number.isNaN(t.y));const g=e.points,p=(0,o.n8j)().x(function(t){return t.x}).y(function(t){return t.y}).curve(o.qrM),h=t.append("path").attr("d",p(g)).attr("id","edge"+b).attr("class","transition");let c="";if((0,d.D7)().state.arrowMarkerAbsolute&&(c=(0,d.ID)(!0)),h.attr("marker-end","url("+c+"#"+i(n.u4.relationType.DEPENDENCY)+"End)"),void 0!==a.title){const i=t.append("g").attr("class","stateLabel"),{x:n,y:o}=r._K.calcLabelPosition(e.points),g=d.Y2.getRows(a.title);let p=0;const h=[];let c=0,l=0;for(let t=0;t<=g.length;t++){const e=i.append("text").attr("text-anchor","middle").text(g[t]).attr("x",n).attr("y",o+p),a=e.node().getBBox();if(c=Math.max(c,a.width),l=Math.min(l,a.x),s.Rm.info(a.x,n,o+p),0===p){const t=e.node().getBBox();p=t.height,s.Rm.info("Title height",p,o)}h.push(e)}let x=p*g.length;if(g.length>1){const t=(g.length-1)*p*.5;h.forEach((e,a)=>e.attr("y",o+a*p-t)),x=p*g.length}const D=i.node().getBBox();i.insert("rect",":first-child").attr("class","box").attr("x",n-c/2-(0,d.D7)().state.padding/2).attr("y",o-x/2-(0,d.D7)().state.padding/2-3.5).attr("width",c+(0,d.D7)().state.padding).attr("height",x+(0,d.D7)().state.padding),s.Rm.info(D)}b++},"drawEdge"),k={},S=(0,s.K2)(function(){},"setConf"),N=(0,s.K2)(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),E=(0,s.K2)(function(t,e,a,n){i=(0,d.D7)().state;const r=(0,d.D7)().securityLevel;let g;"sandbox"===r&&(g=(0,o.Ltv)("#i"+e));const p="sandbox"===r?(0,o.Ltv)(g.nodes()[0].contentDocument.body):(0,o.Ltv)("body"),h="sandbox"===r?g.nodes()[0].contentDocument:document;s.Rm.debug("Rendering diagram "+t);const c=p.select(`[id='${e}']`);N(c);const l=n.db.getRootDoc();v(l,c,void 0,!1,p,h,n);const x=i.padding,D=c.node().getBBox(),u=D.width+2*x,f=D.height+2*x,y=1.75*u;(0,d.a$)(c,f,y,i.useMaxWidth),c.attr("viewBox",`${D.x-i.padding} ${D.y-i.padding} `+u+" "+f)},"draw"),M=(0,s.K2)(t=>t?t.length*i.fontSizeFactor:1,"getLabelWidth"),v=(0,s.K2)((t,e,a,n,r,o,h)=>{const c=new p.T({compound:!0,multigraph:!0});let l,x=!0;for(l=0;l{const e=t.parentElement;let a=0,i=0;e&&(e.parentElement&&(a=e.parentElement.getBBox().width),i=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(i)&&(i=0)),t.setAttribute("x1",0-i+8),t.setAttribute("x2",a-i-8)})}else s.Rm.debug("No Node "+t+": "+JSON.stringify(c.node(t)))});let S=b.getBBox();c.edges().forEach(function(t){void 0!==t&&void 0!==c.edge(t)&&(s.Rm.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(c.edge(t))),B(e,c.edge(t),c.edge(t).relation))}),S=b.getBBox();const N={id:a||"root",label:a||"root",width:0,height:0};return N.width=S.width+2*i.padding,N.height=S.height+2*i.padding,s.Rm.debug("Doc rendered",N,c),N},"renderDoc"),K={setConf:S,draw:E},R={parser:n.Zk,get db(){return new n.u4(1)},renderer:K,styles:n.tM,init:(0,s.K2)(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/user/assets/js/8249.9f2fda74.js b/user/assets/js/8249.9f2fda74.js new file mode 100644 index 0000000..69ff0b9 --- /dev/null +++ b/user/assets/js/8249.9f2fda74.js @@ -0,0 +1 @@ +(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8249],{1709:function(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={45:(t,e,i)=>{var n={};n.layoutBase=i(551),n.CoSEConstants=i(806),n.CoSEEdge=i(767),n.CoSEGraph=i(880),n.CoSEGraphManager=i(578),n.CoSELayout=i(765),n.CoSENode=i(991),n.ConstraintHandler=i(902),t.exports=n},806:(t,e,i)=>{var n=i(551).FDLayoutConstants;function r(){}for(var o in n)r[o]=n[o];r.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,r.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,r.DEFAULT_COMPONENT_SEPERATION=60,r.TILE=!0,r.TILING_PADDING_VERTICAL=10,r.TILING_PADDING_HORIZONTAL=10,r.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,r.ENFORCE_CONSTRAINTS=!0,r.APPLY_LAYOUT=!0,r.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,r.TREE_REDUCTION_ON_INCREMENTAL=!0,r.PURE_INCREMENTAL=r.DEFAULT_INCREMENTAL,t.exports=r},767:(t,e,i)=>{var n=i(551).FDLayoutEdge;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},880:(t,e,i)=>{var n=i(551).LGraph;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},578:(t,e,i)=>{var n=i(551).LGraphManager;function r(t){n.call(this,t)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},765:(t,e,i)=>{var n=i(551).FDLayout,r=i(578),o=i(880),s=i(991),a=i(767),h=i(806),l=i(902),d=i(551).FDLayoutConstants,c=i(551).LayoutConstants,g=i(551).Point,u=i(551).PointD,f=i(551).DimensionD,p=i(551).Layout,y=i(551).Integer,v=i(551).IGeometry,m=i(551).LGraph,E=i(551).Transform,N=i(551).LinkedList;function T(){n.call(this),this.toBeTiled={},this.constraints={}}for(var A in T.prototype=Object.create(n.prototype),n)T[A]=n[A];T.prototype.newGraphManager=function(){var t=new r(this);return this.graphManager=t,t},T.prototype.newGraph=function(t){return new o(null,this.graphManager,t)},T.prototype.newNode=function(t){return new s(this.graphManager,t)},T.prototype.newEdge=function(t){return new a(null,null,t)},T.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=d.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=d.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=d.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},T.prototype.initSpringEmbedder=function(){n.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/d.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},T.prototype.layout=function(){return c.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},T.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental)h.TREE_REDUCTION_ON_INCREMENTAL&&(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)}),this.graphManager.setAllNodesToApplyGravitation(i));else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter(function(t){return e.has(t)});this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(l.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),h.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%d.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter(function(e){return t.has(e)});this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),h.PURE_INCREMENTAL?this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),h.PURE_INCREMENTAL?this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,n=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,n),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i0&&this.updateDisplacements(),e=0;e0&&(n.fixedNodeWeight=o)}if(this.constraints.relativePlacementConstraint){var s=new Map,a=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(e){t.fixedNodesOnHorizontal.add(e),t.fixedNodesOnVertical.add(e)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical){var l=this.constraints.alignmentConstraint.vertical;for(i=0;i=2*t.length/3;n--)e=Math.floor(Math.random()*(n+1)),i=t[n],t[n]=t[e],t[e]=i;return t},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(e){if(e.left){var i=s.has(e.left)?s.get(e.left):e.left,n=s.has(e.right)?s.get(e.right):e.right;t.nodesInRelativeHorizontal.includes(i)||(t.nodesInRelativeHorizontal.push(i),t.nodeToRelativeConstraintMapHorizontal.set(i,[]),t.dummyToNodeForVerticalAlignment.has(i)?t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(i)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(i).getCenterX())),t.nodesInRelativeHorizontal.includes(n)||(t.nodesInRelativeHorizontal.push(n),t.nodeToRelativeConstraintMapHorizontal.set(n,[]),t.dummyToNodeForVerticalAlignment.has(n)?t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(n)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(n).getCenterX())),t.nodeToRelativeConstraintMapHorizontal.get(i).push({right:n,gap:e.gap}),t.nodeToRelativeConstraintMapHorizontal.get(n).push({left:i,gap:e.gap})}else{var r=a.has(e.top)?a.get(e.top):e.top,o=a.has(e.bottom)?a.get(e.bottom):e.bottom;t.nodesInRelativeVertical.includes(r)||(t.nodesInRelativeVertical.push(r),t.nodeToRelativeConstraintMapVertical.set(r,[]),t.dummyToNodeForHorizontalAlignment.has(r)?t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(r)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(r).getCenterY())),t.nodesInRelativeVertical.includes(o)||(t.nodesInRelativeVertical.push(o),t.nodeToRelativeConstraintMapVertical.set(o,[]),t.dummyToNodeForHorizontalAlignment.has(o)?t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(o)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(o).getCenterY())),t.nodeToRelativeConstraintMapVertical.get(r).push({bottom:o,gap:e.gap}),t.nodeToRelativeConstraintMapVertical.get(o).push({top:r,gap:e.gap})}});else{var c=new Map,g=new Map;this.constraints.relativePlacementConstraint.forEach(function(t){if(t.left){var e=s.has(t.left)?s.get(t.left):t.left,i=s.has(t.right)?s.get(t.right):t.right;c.has(e)?c.get(e).push(i):c.set(e,[i]),c.has(i)?c.get(i).push(e):c.set(i,[e])}else{var n=a.has(t.top)?a.get(t.top):t.top,r=a.has(t.bottom)?a.get(t.bottom):t.bottom;g.has(n)?g.get(n).push(r):g.set(n,[r]),g.has(r)?g.get(r).push(n):g.set(r,[n])}});var u=function(t,e){var i=[],n=[],r=new N,o=new Set,s=0;return t.forEach(function(a,h){if(!o.has(h)){i[s]=[],n[s]=!1;var l=h;for(r.push(l),o.add(l),i[s].push(l);0!=r.length;)l=r.shift(),e.has(l)&&(n[s]=!0),t.get(l).forEach(function(t){o.has(t)||(r.push(t),o.add(t),i[s].push(t))});s++}}),{components:i,isFixed:n}},f=u(c,t.fixedNodesOnHorizontal);this.componentsOnHorizontal=f.components,this.fixedComponentsOnHorizontal=f.isFixed;var p=u(g,t.fixedNodesOnVertical);this.componentsOnVertical=p.components,this.fixedComponentsOnVertical=p.isFixed}}},T.prototype.updateDisplacements=function(){var t=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(e){var i=t.idToNodeMap.get(e.nodeId);i.displacementX=0,i.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var e=this.constraints.alignmentConstraint.vertical,i=0;i1)for(a=0;an&&(n=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new u(c.WORLD_CENTER_X-s.x/2,c.WORLD_CENTER_Y-s.y/2))},T.radialLayout=function(t,e,i){var n=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(e,null,0,359,0,n);var r=m.calculateBounds(t),o=new E;o.setDeviceOrgX(r.getMinX()),o.setDeviceOrgY(r.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s1;){var y=p[0];p.splice(0,1);var m=d.indexOf(y);m>=0&&d.splice(m,1),f--,c--}g=null!=e?(d.indexOf(p[0])+1)%f:0;for(var E=Math.abs(n-i)/c,N=g;u!=c;N=++N%f){var A=d[N].getOtherEnd(t);if(A!=e){var w=(i+u*E)%360,L=(w+E)%360;T.branchRadialLayout(A,t,w,L,r+o,o),u++}}},T.maxDiagonalInTree=function(t){for(var e=y.MIN_VALUE,i=0;ie&&(e=n)}return e},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],n=this.graphManager.getAllNodes(),r=0;r1){var n="DummyCompound_"+i;t.memberGroups[n]=e[i];var r=e[i][0].getParent(),o=new s(t.graphManager);o.id=n,o.paddingLeft=r.paddingLeft||0,o.paddingRight=r.paddingRight||0,o.paddingBottom=r.paddingBottom||0,o.paddingTop=r.paddingTop||0,t.idToDummyNode[n]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=r.getChild();h.add(o);for(var l=0;lr?(n.rect.x-=(n.labelWidth-r)/2,n.setWidth(n.labelWidth),n.labelMarginLeft=(n.labelWidth-r)/2):"right"==n.labelPosHorizontal&&n.setWidth(r+n.labelWidth)),n.labelHeight&&("top"==n.labelPosVertical?(n.rect.y-=n.labelHeight,n.setHeight(o+n.labelHeight),n.labelMarginTop=n.labelHeight):"center"==n.labelPosVertical&&n.labelHeight>o?(n.rect.y-=(n.labelHeight-o)/2,n.setHeight(n.labelHeight),n.labelMarginTop=(n.labelHeight-o)/2):"bottom"==n.labelPosVertical&&n.setHeight(o+n.labelHeight))}})},T.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],i=e.id,n=e.paddingLeft,r=e.paddingTop,o=e.labelMarginLeft,s=e.labelMarginTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,n,r,o,s)}},T.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach(function(i){var n=t.idToDummyNode[i],r=n.paddingLeft,o=n.paddingTop,s=n.labelMarginLeft,a=n.labelMarginTop;t.adjustLocations(e[i],n.rect.x,n.rect.y,r,o,s,a)})},T.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var n=i.getNodes(),r=0;r0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},T.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,n=0;nd&&(d=g.rect.height)}i+=d+t.verticalPadding}},T.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach(function(n){var r=e[n];if(i.tiledMemberPack[n]=i.tileNodes(t[n],r.paddingLeft+r.paddingRight),r.rect.width=i.tiledMemberPack[n].width,r.rect.height=i.tiledMemberPack[n].height,r.setCenter(i.tiledMemberPack[n].centerX,i.tiledMemberPack[n].centerY),r.labelMarginLeft=0,r.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var o=r.rect.width,s=r.rect.height;r.labelWidth&&("left"==r.labelPosHorizontal?(r.rect.x-=r.labelWidth,r.setWidth(o+r.labelWidth),r.labelMarginLeft=r.labelWidth):"center"==r.labelPosHorizontal&&r.labelWidth>o?(r.rect.x-=(r.labelWidth-o)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-o)/2):"right"==r.labelPosHorizontal&&r.setWidth(o+r.labelWidth)),r.labelHeight&&("top"==r.labelPosVertical?(r.rect.y-=r.labelHeight,r.setHeight(s+r.labelHeight),r.labelMarginTop=r.labelHeight):"center"==r.labelPosVertical&&r.labelHeight>s?(r.rect.y-=(r.labelHeight-s)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-s)/2):"bottom"==r.labelPosVertical&&r.setHeight(s+r.labelHeight))}})},T.prototype.tileNodes=function(t,e){var i=this.tileNodesByFavoringDim(t,e,!0),n=this.tileNodesByFavoringDim(t,e,!1),r=this.getOrgRatio(i);return this.getOrgRatio(n)a&&(a=t.getWidth())});var l,d=o/r,c=s/r,g=Math.pow(i-n,2)+4*(d+n)*(c+i)*r,u=(n-i+Math.sqrt(g))/(2*(d+n));e?(l=Math.ceil(u))==u&&l++:l=Math.floor(u);var f=l*(d+n)-n;return a>f&&(f=a),f+=2*n},T.prototype.tileNodesByFavoringDim=function(t,e,i){var n=h.TILING_PADDING_VERTICAL,r=h.TILING_PADDING_HORIZONTAL,o=h.TILING_COMPARE_BY,s={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:n,horizontalPadding:r,centerX:0,centerY:0};o&&(s.idealRowWidth=this.calcIdealRowWidth(t,i));var a=function(t){return t.rect.width*t.rect.height},l=function(t,e){return a(e)-a(t)};t.sort(function(t,e){var i=l;return s.idealRowWidth?(i=o)(t.id,e.id):i(t,e)});for(var d=0,c=0,g=0;g0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},T.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,n=0;ni&&(e=n,i=t.rowWidth[n]);return e},T.prototype.canAddHorizontal=function(t,e,i){if(t.idealRowWidth){var n=t.rows.length-1;return t.rowWidth[n]+e+t.horizontalPadding<=t.idealRowWidth}var r=this.getShortestRowIndex(t);if(r<0)return!0;var o=t.rowWidth[r];if(o+t.horizontalPadding+e<=t.width)return!0;var s,a,h=0;return t.rowHeight[r]0&&(h=i+t.verticalPadding-t.rowHeight[r]),s=t.width-o>=e+t.horizontalPadding?(t.height+h)/(o+e+t.horizontalPadding):(t.height+h)/t.width,h=i+t.verticalPadding,(a=t.widtho&&e!=i){n.splice(-1,1),t.rows[i].push(r),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;as&&(s=n[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]0)for(var c=r;c<=o;c++)l[0]+=this.grid[c][s-1].length+this.grid[c][s].length-1;if(o0)for(c=s;c<=a;c++)l[3]+=this.grid[r-1][c].length+this.grid[r][c].length-1;for(var g,u,f=y.MAX_VALUE,p=0;p{var n=i(551).FDLayoutNode,r=i(551).IMath;function o(t,e,i,r){n.call(this,t,e,i,r)}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];o.prototype.calculateDisplacement=function(){var t=this.graphManager.getLayout();null!=this.getChild()&&this.fixedNodeWeight?(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,n=this.getChild().getNodes(),r=0;r{function n(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e0){var o=0;n.forEach(function(t){"horizontal"==e?(c.set(t,h.has(t)?l[h.get(t)]:r.get(t)),o+=c.get(t)):(c.set(t,h.has(t)?d[h.get(t)]:r.get(t)),o+=c.get(t))}),o/=n.length,t.forEach(function(t){i.has(t)||c.set(t,o)})}else{var s=0;t.forEach(function(t){s+="horizontal"==e?h.has(t)?l[h.get(t)]:r.get(t):h.has(t)?d[h.get(t)]:r.get(t)}),s/=t.length,t.forEach(function(t){c.set(t,s)})}});for(var f=function(){var n=u.shift();t.get(n).forEach(function(t){if(c.get(t.id)s&&(s=m),Ea&&(a=E)}}catch(_){u=!0,f=_}finally{try{!g&&y.return&&y.return()}finally{if(u)throw f}}var N=(n+s)/2-(o+a)/2,T=!0,A=!1,w=void 0;try{for(var L,C=t[Symbol.iterator]();!(T=(L=C.next()).done);T=!0){var I=L.value;c.set(I,c.get(I)+N)}}catch(_){A=!0,w=_}finally{try{!T&&C.return&&C.return()}finally{if(A)throw w}}})}return c},v=function(t){var e=0,i=0,n=0,r=0;if(t.forEach(function(t){t.left?l[h.get(t.left)]-l[h.get(t.right)]>=0?e++:i++:d[h.get(t.top)]-d[h.get(t.bottom)]>=0?n++:r++}),e>i&&n>r)for(var o=0;oi)for(var s=0;sr)for(var a=0;a1)e.fixedNodeConstraint.forEach(function(t,e){T[e]=[t.position.x,t.position.y],A[e]=[l[h.get(t.nodeId)],d[h.get(t.nodeId)]]}),w=!0;else if(e.alignmentConstraint)!function(){var t=0;if(e.alignmentConstraint.vertical){for(var i=e.alignmentConstraint.vertical,r=function(e){var r=new Set;i[e].forEach(function(t){r.add(t)});var o=new Set([].concat(n(r)).filter(function(t){return C.has(t)})),s=void 0;s=o.size>0?l[h.get(o.values().next().value)]:p(r).x,i[e].forEach(function(e){T[t]=[s,d[h.get(e)]],A[t]=[l[h.get(e)],d[h.get(e)]],t++})},o=0;o0?l[h.get(r.values().next().value)]:p(i).y,s[e].forEach(function(e){T[t]=[l[h.get(e)],o],A[t]=[l[h.get(e)],d[h.get(e)]],t++})},c=0;cx&&(x=M[D].length,O=D);if(x<_.size/2)v(e.relativePlacementConstraint),w=!1,L=!1;else{var R=new Map,b=new Map,F=[];M[O].forEach(function(t){I.get(t).forEach(function(e){"horizontal"==e.direction?(R.has(t)?R.get(t).push(e):R.set(t,[e]),R.has(e.id)||R.set(e.id,[]),F.push({left:t,right:e.id})):(b.has(t)?b.get(t).push(e):b.set(t,[e]),b.has(e.id)||b.set(e.id,[]),F.push({top:t,bottom:e.id}))})}),v(F),L=!1;var G=y(R,"horizontal"),S=y(b,"vertical");M[O].forEach(function(t,e){A[e]=[l[h.get(t)],d[h.get(t)]],T[e]=[],G.has(t)?T[e][0]=G.get(t):T[e][0]=l[h.get(t)],S.has(t)?T[e][1]=S.get(t):T[e][1]=d[h.get(t)]}),w=!0}}if(w){for(var P,U=s.transpose(T),Y=s.transpose(A),k=0;k0){var j={x:0,y:0};e.fixedNodeConstraint.forEach(function(t,e){var i,n,r={x:l[h.get(t.nodeId)],y:d[h.get(t.nodeId)]},o=t.position,s=(n=r,{x:(i=o).x-n.x,y:i.y-n.y});j.x+=s.x,j.y+=s.y}),j.x/=e.fixedNodeConstraint.length,j.y/=e.fixedNodeConstraint.length,l.forEach(function(t,e){l[e]+=j.x}),d.forEach(function(t,e){d[e]+=j.y}),e.fixedNodeConstraint.forEach(function(t){l[h.get(t.nodeId)]=t.position.x,d[h.get(t.nodeId)]=t.position.y})}if(e.alignmentConstraint){if(e.alignmentConstraint.vertical)for(var $=e.alignmentConstraint.vertical,q=function(t){var e=new Set;$[t].forEach(function(t){e.add(t)});var i=new Set([].concat(n(e)).filter(function(t){return C.has(t)})),r=void 0;r=i.size>0?l[h.get(i.values().next().value)]:p(e).x,e.forEach(function(t){C.has(t)||(l[h.get(t)]=r)})},K=0;K<$.length;K++)q(K);if(e.alignmentConstraint.horizontal)for(var Z=e.alignmentConstraint.horizontal,Q=function(t){var e=new Set;Z[t].forEach(function(t){e.add(t)});var i=new Set([].concat(n(e)).filter(function(t){return C.has(t)})),r=void 0;r=i.size>0?d[h.get(i.values().next().value)]:p(e).y,e.forEach(function(t){C.has(t)||(d[h.get(t)]=r)})},J=0;J{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(45);return n})()},t.exports=n(i(6679))},5871:(t,e,i)=>{"use strict";function n(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}i.d(e,{S:()=>n}),(0,i(797).K2)(n,"populateCommonDb")},6527:function(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={658:t=>{t.exports=null!=Object.assign?Object.assign.bind(Object):function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;n{var n=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var i=[],n=!0,r=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(i.push(s.value),!e||i.length!==e);n=!0);}catch(h){r=!0,o=h}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=i(140).layoutBase.LinkedList,o={getTopMostNodes:function(t){for(var e={},i=0;i0&&l.merge(t)});for(var d=0;d1){l=a[0],d=l.connectedEdges().length,a.forEach(function(t){t.connectedEdges().length0&&n.set("dummy"+(n.size+1),u),f},relocateComponent:function(t,e,i){if(!i.fixedNodeConstraint){var r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;if("draft"==i.quality){var h=!0,l=!1,d=void 0;try{for(var c,g=e.nodeIndexes[Symbol.iterator]();!(h=(c=g.next()).done);h=!0){var u=c.value,f=n(u,2),p=f[0],y=f[1],v=i.cy.getElementById(p);if(v){var m=v.boundingBox(),E=e.xCoords[y]-m.w/2,N=e.xCoords[y]+m.w/2,T=e.yCoords[y]-m.h/2,A=e.yCoords[y]+m.h/2;Eo&&(o=N),Ta&&(a=A)}}}catch(_){l=!0,d=_}finally{try{!h&&g.return&&g.return()}finally{if(l)throw d}}var w=t.x-(o+r)/2,L=t.y-(a+s)/2;e.xCoords=e.xCoords.map(function(t){return t+w}),e.yCoords=e.yCoords.map(function(t){return t+L})}else{Object.keys(e).forEach(function(t){var i=e[t],n=i.getRect().x,h=i.getRect().x+i.getRect().width,l=i.getRect().y,d=i.getRect().y+i.getRect().height;no&&(o=h),la&&(a=d)});var C=t.x-(o+r)/2,I=t.y-(a+s)/2;Object.keys(e).forEach(function(t){var i=e[t];i.setCenter(i.getCenterX()+C,i.getCenterY()+I)})}}},calcBoundingBox:function(t,e,i,n){for(var r=Number.MAX_SAFE_INTEGER,o=Number.MIN_SAFE_INTEGER,s=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER,h=void 0,l=void 0,d=void 0,c=void 0,g=t.descendants().not(":parent"),u=g.length,f=0;f(h=e[n.get(p.id())]-p.width()/2)&&(r=h),o<(l=e[n.get(p.id())]+p.width()/2)&&(o=l),s>(d=i[n.get(p.id())]-p.height()/2)&&(s=d),a<(c=i[n.get(p.id())]+p.height()/2)&&(a=c)}var y={};return y.topLeftX=r,y.topLeftY=s,y.width=o-r,y.height=a-s,y},calcParentsWithoutChildren:function(t,e){var i=t.collection();return e.nodes(":parent").forEach(function(t){var e=!1;t.children().forEach(function(t){"none"!=t.css("display")&&(e=!0)}),e||i.merge(t)}),i}};t.exports=o},816:(t,e,i)=>{var n=i(548),r=i(140).CoSELayout,o=i(140).CoSENode,s=i(140).layoutBase.PointD,a=i(140).layoutBase.DimensionD,h=i(140).layoutBase.LayoutConstants,l=i(140).layoutBase.FDLayoutConstants,d=i(140).CoSEConstants;t.exports={coseLayout:function(t,e){var i=t.cy,c=t.eles,g=c.nodes(),u=c.edges(),f=void 0,p=void 0,y=void 0,v={};t.randomize&&(f=e.nodeIndexes,p=e.xCoords,y=e.yCoords);var m=function(t){return"function"==typeof t},E=function(t,e){return m(t)?t(e):t},N=n.calcParentsWithoutChildren(i,c);null!=t.nestingFactor&&(d.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.nestingFactor),null!=t.gravity&&(d.DEFAULT_GRAVITY_STRENGTH=l.DEFAULT_GRAVITY_STRENGTH=t.gravity),null!=t.numIter&&(d.MAX_ITERATIONS=l.MAX_ITERATIONS=t.numIter),null!=t.gravityRange&&(d.DEFAULT_GRAVITY_RANGE_FACTOR=l.DEFAULT_GRAVITY_RANGE_FACTOR=t.gravityRange),null!=t.gravityCompound&&(d.DEFAULT_COMPOUND_GRAVITY_STRENGTH=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.gravityCompound),null!=t.gravityRangeCompound&&(d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.gravityRangeCompound),null!=t.initialEnergyOnIncremental&&(d.DEFAULT_COOLING_FACTOR_INCREMENTAL=l.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.initialEnergyOnIncremental),null!=t.tilingCompareBy&&(d.TILING_COMPARE_BY=t.tilingCompareBy),"proof"==t.quality?h.QUALITY=2:h.QUALITY=0,d.NODE_DIMENSIONS_INCLUDE_LABELS=l.NODE_DIMENSIONS_INCLUDE_LABELS=h.NODE_DIMENSIONS_INCLUDE_LABELS=t.nodeDimensionsIncludeLabels,d.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!t.randomize,d.ANIMATE=l.ANIMATE=h.ANIMATE=t.animate,d.TILE=t.tile,d.TILING_PADDING_VERTICAL="function"==typeof t.tilingPaddingVertical?t.tilingPaddingVertical.call():t.tilingPaddingVertical,d.TILING_PADDING_HORIZONTAL="function"==typeof t.tilingPaddingHorizontal?t.tilingPaddingHorizontal.call():t.tilingPaddingHorizontal,d.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!0,d.PURE_INCREMENTAL=!t.randomize,h.DEFAULT_UNIFORM_LEAF_NODE_SIZES=t.uniformNodeDimensions,"transformed"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,d.ENFORCE_CONSTRAINTS=!1,d.APPLY_LAYOUT=!1),"enforced"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!0,d.APPLY_LAYOUT=!1),"cose"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!1,d.APPLY_LAYOUT=!0),"all"==t.step&&(t.randomize?d.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!0,d.APPLY_LAYOUT=!0),t.fixedNodeConstraint||t.alignmentConstraint||t.relativePlacementConstraint?d.TREE_REDUCTION_ON_INCREMENTAL=!1:d.TREE_REDUCTION_ON_INCREMENTAL=!0;var T=new r,A=T.newGraphManager();return function t(e,i,r,h){for(var l=i.length,d=0;d0&&t(r.getGraphManager().add(r.newGraph(),u),g,r,h)}}(A.addRoot(),n.getTopMostNodes(g),T,t),function(e,i,n){for(var r=0,o=0,s=0;s0?d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=r/o:m(t.idealEdgeLength)?d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=50:d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=t.idealEdgeLength,d.MIN_REPULSION_DIST=l.MIN_REPULSION_DIST=l.DEFAULT_EDGE_LENGTH/10,d.DEFAULT_RADIAL_SEPARATION=l.DEFAULT_EDGE_LENGTH)}(T,A,u),function(t,e){e.fixedNodeConstraint&&(t.constraints.fixedNodeConstraint=e.fixedNodeConstraint),e.alignmentConstraint&&(t.constraints.alignmentConstraint=e.alignmentConstraint),e.relativePlacementConstraint&&(t.constraints.relativePlacementConstraint=e.relativePlacementConstraint)}(T,t),T.runLayout(),v}}},212:(t,e,i)=>{var n=function(){function t(t,e){for(var i=0;i0)if(c){var g=o.getTopMostNodes(t.eles.nodes());if((h=o.connectComponents(e,t.eles,g)).forEach(function(t){var e=t.boundingBox();l.push({x:e.x1+e.w/2,y:e.y1+e.h/2})}),t.randomize&&h.forEach(function(e){t.eles=e,n.push(s(t))}),"default"==t.quality||"proof"==t.quality){var u=e.collection();if(t.tile){var f=new Map,p=0,y={nodeIndexes:f,xCoords:[],yCoords:[]},v=[];if(h.forEach(function(t,e){0==t.edges().length&&(t.nodes().forEach(function(e,i){u.merge(t.nodes()[i]),e.isParent()||(y.nodeIndexes.set(t.nodes()[i].id(),p++),y.xCoords.push(t.nodes()[0].position().x),y.yCoords.push(t.nodes()[0].position().y))}),v.push(e))}),u.length>1){var m=u.boundingBox();l.push({x:m.x1+m.w/2,y:m.y1+m.h/2}),h.push(u),n.push(y);for(var E=v.length-1;E>=0;E--)h.splice(v[E],1),n.splice(v[E],1),l.splice(v[E],1)}}h.forEach(function(e,i){t.eles=e,r.push(a(t,n[i])),o.relocateComponent(l[i],r[i],t)})}else h.forEach(function(e,i){o.relocateComponent(l[i],n[i],t)});var N=new Set;if(h.length>1){var T=[],A=i.filter(function(t){return"none"==t.css("display")});h.forEach(function(e,i){var s=void 0;if("draft"==t.quality&&(s=n[i].nodeIndexes),e.nodes().not(A).length>0){var a={edges:[],nodes:[]},h=void 0;e.nodes().not(A).forEach(function(e){if("draft"==t.quality)if(e.isParent()){var l=o.calcBoundingBox(e,n[i].xCoords,n[i].yCoords,s);a.nodes.push({x:l.topLeftX,y:l.topLeftY,width:l.width,height:l.height})}else h=s.get(e.id()),a.nodes.push({x:n[i].xCoords[h]-e.boundingbox().w/2,y:n[i].yCoords[h]-e.boundingbox().h/2,width:e.boundingbox().w,height:e.boundingbox().h});else r[i][e.id()]&&a.nodes.push({x:r[i][e.id()].getLeft(),y:r[i][e.id()].getTop(),width:r[i][e.id()].getWidth(),height:r[i][e.id()].getHeight()})}),e.edges().forEach(function(e){var h=e.source(),l=e.target();if("none"!=h.css("display")&&"none"!=l.css("display"))if("draft"==t.quality){var d=s.get(h.id()),c=s.get(l.id()),g=[],u=[];if(h.isParent()){var f=o.calcBoundingBox(h,n[i].xCoords,n[i].yCoords,s);g.push(f.topLeftX+f.width/2),g.push(f.topLeftY+f.height/2)}else g.push(n[i].xCoords[d]),g.push(n[i].yCoords[d]);if(l.isParent()){var p=o.calcBoundingBox(l,n[i].xCoords,n[i].yCoords,s);u.push(p.topLeftX+p.width/2),u.push(p.topLeftY+p.height/2)}else u.push(n[i].xCoords[c]),u.push(n[i].yCoords[c]);a.edges.push({startX:g[0],startY:g[1],endX:u[0],endY:u[1]})}else r[i][h.id()]&&r[i][l.id()]&&a.edges.push({startX:r[i][h.id()].getCenterX(),startY:r[i][h.id()].getCenterY(),endX:r[i][l.id()].getCenterX(),endY:r[i][l.id()].getCenterY()})}),a.nodes.length>0&&(T.push(a),N.add(i))}});var w=d.packComponents(T,t.randomize).shifts;if("draft"==t.quality)n.forEach(function(t,e){var i=t.xCoords.map(function(t){return t+w[e].dx}),n=t.yCoords.map(function(t){return t+w[e].dy});t.xCoords=i,t.yCoords=n});else{var L=0;N.forEach(function(t){Object.keys(r[t]).forEach(function(e){var i=r[t][e];i.setCenter(i.getCenterX()+w[L].dx,i.getCenterY()+w[L].dy)}),L++})}}}else{var C=t.eles.boundingBox();if(l.push({x:C.x1+C.w/2,y:C.y1+C.h/2}),t.randomize){var I=s(t);n.push(I)}"default"==t.quality||"proof"==t.quality?(r.push(a(t,n[0])),o.relocateComponent(l[0],r[0],t)):o.relocateComponent(l[0],n[0],t)}var _=function(e,i){if("default"==t.quality||"proof"==t.quality){"number"==typeof e&&(e=i);var o=void 0,s=void 0,a=e.data("id");return r.forEach(function(t){a in t&&(o={x:t[a].getRect().getCenterX(),y:t[a].getRect().getCenterY()},s=t[a])}),t.nodeDimensionsIncludeLabels&&(s.labelWidth&&("left"==s.labelPosHorizontal?o.x+=s.labelWidth/2:"right"==s.labelPosHorizontal&&(o.x-=s.labelWidth/2)),s.labelHeight&&("top"==s.labelPosVertical?o.y+=s.labelHeight/2:"bottom"==s.labelPosVertical&&(o.y-=s.labelHeight/2))),null==o&&(o={x:e.position("x"),y:e.position("y")}),{x:o.x,y:o.y}}var h=void 0;return n.forEach(function(t){var i=t.nodeIndexes.get(e.id());null!=i&&(h={x:t.xCoords[i],y:t.yCoords[i]})}),null==h&&(h={x:e.position("x"),y:e.position("y")}),{x:h.x,y:h.y}};if("default"==t.quality||"proof"==t.quality||t.randomize){var M=o.calcParentsWithoutChildren(e,i),x=i.filter(function(t){return"none"==t.css("display")});t.eles=i.not(x),i.nodes().not(":parent").not(x).layoutPositions(this,t,_),M.length>0&&M.forEach(function(t){t.position(_(t))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")}}]),t}();t.exports=l},657:(t,e,i)=>{var n=i(548),r=i(140).layoutBase.Matrix,o=i(140).layoutBase.SVD;t.exports={spectralLayout:function(t){var e=t.cy,i=t.eles,s=i.nodes(),a=i.nodes(":parent"),h=new Map,l=new Map,d=new Map,c=[],g=[],u=[],f=[],p=[],y=[],v=[],m=[],E=void 0,N=1e8,T=1e-9,A=t.piTol,w=t.samplingType,L=t.nodeSeparation,C=void 0,I=function(t,e,i){for(var n=[],r=0,o=0,s=0,a=void 0,h=[],d=0,g=1,u=0;u=r;){s=n[r++];for(var f=c[s],v=0;vd&&(d=p[T],g=T)}return g};n.connectComponents(e,i,n.getTopMostNodes(s),h),a.forEach(function(t){n.connectComponents(e,i,n.getTopMostNodes(t.descendants().intersection(i)),h)});for(var _=0,M=0;M0&&(n.isParent()?c[e].push(d.get(n.id())):c[e].push(n.id()))})});var S=function(t){var i=l.get(t),n=void 0;h.get(t).forEach(function(r){n=e.getElementById(r).isParent()?d.get(r):r,c[i].push(n),c[l.get(n)].push(t)})},P=!0,U=!1,Y=void 0;try{for(var k,H=h.keys()[Symbol.iterator]();!(P=(k=H.next()).done);P=!0)S(k.value)}catch(K){U=!0,Y=K}finally{try{!P&&H.return&&H.return()}finally{if(U)throw Y}}var X=void 0;if((E=l.size)>2){C=E=1)break;l=h}for(var f=0;f=1)break;l=h}for(var v=0;v{var n=i(212),r=function(t){t&&t("layout","fcose",n)};"undefined"!=typeof cytoscape&&r(cytoscape),t.exports=r},140:e=>{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(579);return n})()},t.exports=n(i(1709))},6679:function(t){var e;e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=28)}([function(t,e,i){"use strict";function n(){}n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(8),o=i(9);function s(t,e,i){n.call(this,i),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=i,this.bendpoints=[],this.source=t,this.target=e}for(var a in s.prototype=Object.create(n.prototype),n)s[a]=n[a];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(t,e){for(var i=this.getOtherEnd(t),n=e.getGraphManager().getRoot();;){if(i.getOwner()==e)return i;if(i.getOwner()==n)break;i=i.getOwner().getParent()}return null},s.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=r.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,i){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(13),s=i(0),a=i(16),h=i(5);function l(t,e,i,s){null==i&&null==s&&(s=e),n.call(this,s),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=r.MIN_VALUE,this.inclusionTreeDepth=r.MAX_VALUE,this.vGraphObject=s,this.edges=[],this.graphManager=t,this.rect=null!=i&&null!=e?new o(e.x,e.y,i.width,i.height):new o}for(var d in l.prototype=Object.create(n.prototype),n)l[d]=n[d];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(t){this.rect.width=t},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(t){this.rect.height=t},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new h(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new h(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},l.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},l.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},l.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},l.prototype.getEdgeListToNode=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.target==t){if(n.source!=i)throw"Incorrect edge source!";e.push(n)}}),e},l.prototype.getEdgesBetween=function(t){var e=[],i=this;return i.edges.forEach(function(n){if(n.source!=i&&n.target!=i)throw"Incorrect edge source and/or target";n.target!=t&&n.source!=t||e.push(n)}),e},l.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach(function(i){if(i.source==e)t.add(i.target);else{if(i.target!=e)throw"Incorrect incidency!";t.add(i.source)}}),t},l.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),i=0;ie?(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)):"right"==this.labelPosHorizontal&&this.setWidth(e+this.labelWidth)),this.labelHeight&&("top"==this.labelPosVertical?(this.rect.y-=this.labelHeight,this.setHeight(i+this.labelHeight)):"center"==this.labelPosVertical&&this.labelHeight>i?(this.rect.y-=(this.labelHeight-i)/2,this.setHeight(this.labelHeight)):"bottom"==this.labelPosVertical&&this.setHeight(i+this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==r.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var n=new h(e,i),r=t.inverseTransformPoint(n);this.setLocation(r.x,r.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";var n=i(0);function r(){}for(var o in n)r[o]=n[o];r.MAX_ITERATIONS=2500,r.DEFAULT_EDGE_LENGTH=50,r.DEFAULT_SPRING_STRENGTH=.45,r.DEFAULT_REPULSION_STRENGTH=4500,r.DEFAULT_GRAVITY_STRENGTH=.4,r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,r.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,r.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,r.COOLING_ADAPTATION_FACTOR=.33,r.ADAPTATION_LOWER_NODE_LIMIT=1e3,r.ADAPTATION_UPPER_NODE_LIMIT=5e3,r.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,r.MAX_NODE_DISPLACEMENT=3*r.MAX_NODE_DISPLACEMENT_INCREMENTAL,r.MIN_REPULSION_DIST=r.DEFAULT_EDGE_LENGTH/10,r.CONVERGENCE_CHECK_PERIOD=100,r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,r.MIN_EDGE_LENGTH=1,r.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=r},function(t,e,i){"use strict";function n(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(t){this.x=t},n.prototype.setY=function(t){this.y=t},n.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(0),s=i(7),a=i(3),h=i(1),l=i(13),d=i(12),c=i(11);function g(t,e,i){n.call(this,i),this.estimatedSize=r.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var u in g.prototype=Object.create(n.prototype),n)g[u]=n[u];g.prototype.getNodes=function(){return this.nodes},g.prototype.getEdges=function(){return this.edges},g.prototype.getGraphManager=function(){return this.graphManager},g.prototype.getParent=function(){return this.parent},g.prototype.getLeft=function(){return this.left},g.prototype.getRight=function(){return this.right},g.prototype.getTop=function(){return this.top},g.prototype.getBottom=function(){return this.bottom},g.prototype.isConnected=function(){return this.isConnected},g.prototype.add=function(t,e,i){if(null==e&&null==i){var n=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(n)>-1)throw"Node already in graph!";return n.owner=this,this.getNodes().push(n),n}var r=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(r.source=e,r.target=i,r.isInterGraph=!1,this.getEdges().push(r),e.edges.push(r),i!=e&&i.edges.push(r),r)},g.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),n=i.length,r=0;r-1&&d>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(d,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},g.prototype.updateLeftTop=function(){for(var t,e,i,n=r.MAX_VALUE,o=r.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h(t=l.getTop())&&(n=t),o>(e=l.getLeft())&&(o=e)}return n==r.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=n-i,new d(this.left,this.top))},g.prototype.updateBounds=function(t){for(var e,i,n,o,s,a=r.MAX_VALUE,h=-r.MAX_VALUE,d=r.MAX_VALUE,c=-r.MAX_VALUE,g=this.nodes,u=g.length,f=0;f(e=p.getLeft())&&(a=e),h<(i=p.getRight())&&(h=i),d>(n=p.getTop())&&(d=n),c<(o=p.getBottom())&&(c=o)}var y=new l(a,d,h-a,c-d);a==r.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=g[0].getParent().paddingLeft?g[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},g.calculateBounds=function(t){for(var e,i,n,o,s=r.MAX_VALUE,a=-r.MAX_VALUE,h=r.MAX_VALUE,d=-r.MAX_VALUE,c=t.length,g=0;g(e=u.getLeft())&&(s=e),a<(i=u.getRight())&&(a=i),h>(n=u.getTop())&&(h=n),d<(o=u.getBottom())&&(d=o)}return new l(s,h,a-s,d-h)},g.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},g.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},g.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,n=0;n=this.nodes.length){var h=0;r.forEach(function(e){e.owner==t&&h++}),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=g},function(t,e,i){"use strict";var n,r=i(1);function o(t){n=i(6),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,n,r){if(null==i&&null==n&&null==r){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}r=i,i=t;var o=(n=e).getOwner(),s=r.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,n,r);if(i.isInterGraph=!0,i.source=n,i.target=r,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof n){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]s)return i[0]=n,i[1]=h,i[2]=o,i[3]=E,!1;if(ro)return i[0]=a,i[1]=r,i[2]=v,i[3]=s,!1;if(no?(i[0]=d,i[1]=c,w=!0):(i[0]=l,i[1]=h,w=!0):C===_&&(n>o?(i[0]=a,i[1]=h,w=!0):(i[0]=g,i[1]=c,w=!0)),-I===_?o>n?(i[2]=m,i[3]=E,L=!0):(i[2]=v,i[3]=y,L=!0):I===_&&(o>n?(i[2]=p,i[3]=y,L=!0):(i[2]=N,i[3]=E,L=!0)),w&&L)return!1;if(n>o?r>s?(M=this.getCardinalDirection(C,_,4),x=this.getCardinalDirection(I,_,2)):(M=this.getCardinalDirection(-C,_,3),x=this.getCardinalDirection(-I,_,1)):r>s?(M=this.getCardinalDirection(-C,_,1),x=this.getCardinalDirection(-I,_,3)):(M=this.getCardinalDirection(C,_,2),x=this.getCardinalDirection(I,_,4)),!w)switch(M){case 1:D=h,O=n+-f/_,i[0]=O,i[1]=D;break;case 2:O=g,D=r+u*_,i[0]=O,i[1]=D;break;case 3:D=c,O=n+f/_,i[0]=O,i[1]=D;break;case 4:O=d,D=r+-u*_,i[0]=O,i[1]=D}if(!L)switch(x){case 1:b=y,R=o+-A/_,i[2]=R,i[3]=b;break;case 2:R=N,b=s+T*_,i[2]=R,i[3]=b;break;case 3:b=E,R=o+A/_,i[2]=R,i[3]=b;break;case 4:R=m,b=s+-T*_,i[2]=R,i[3]=b}}return!1},r.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},r.getIntersection=function(t,e,i,r){if(null==r)return this.getIntersection2(t,e,i);var o,s,a,h,l,d,c,g=t.x,u=t.y,f=e.x,p=e.y,y=i.x,v=i.y,m=r.x,E=r.y;return 0===(c=(o=p-u)*(h=y-m)-(s=E-v)*(a=g-f))?null:new n((a*(d=m*v-y*E)-h*(l=f*u-g*p))/c,(s*l-o*d)/c)},r.angleOfVector=function(t,e,i,n){var r=void 0;return t!==i?(r=Math.atan((n-e)/(i-t)),i=0){var d=(-h+Math.sqrt(h*h-4*a*l))/(2*a),c=(-h-Math.sqrt(h*h-4*a*l))/(2*a);return d>=0&&d<=1?[d]:c>=0&&c<=1?[c]:null}return null},r.HALF_PI=.5*Math.PI,r.ONE_AND_HALF_PI=1.5*Math.PI,r.TWO_PI=2*Math.PI,r.THREE_PI=3*Math.PI,t.exports=r},function(t,e,i){"use strict";function n(){}n.sign=function(t){return t>0?1:t<0?-1:0},n.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},n.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=n},function(t,e,i){"use strict";function n(){}n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i0&&e;){for(a.push(l[0]);a.length>0&&e;){var d=a[0];a.splice(0,1),s.add(d);var c=d.getEdges();for(o=0;o-1&&l.splice(p,1)}s=new Set,h=new Map}else t=[]}return t},g.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,n=this.graphManager.calcLowestCommonAncestor(t.source,t.target),r=0;r0){for(var r=this.edgeToDummyNodes.get(i),o=0;o=0&&e.splice(c,1),d.getNeighborsList().forEach(function(t){if(i.indexOf(t)<0){var e=n.get(t)-1;1==e&&h.push(t),n.set(t,e)}})}i=i.concat(h),1!=e.length&&2!=e.length||(r=!0,o=e[0])}return o},g.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=g},function(t,e,i){"use strict";function n(){}n.seed=1,n.x=0,n.nextDouble=function(){return n.x=1e4*Math.sin(n.seed++),n.x-Math.floor(n.x)},t.exports=n},function(t,e,i){"use strict";var n=i(5);function r(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}r.prototype.getWorldOrgX=function(){return this.lworldOrgX},r.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},r.prototype.getWorldOrgY=function(){return this.lworldOrgY},r.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},r.prototype.getWorldExtX=function(){return this.lworldExtX},r.prototype.setWorldExtX=function(t){this.lworldExtX=t},r.prototype.getWorldExtY=function(){return this.lworldExtY},r.prototype.setWorldExtY=function(t){this.lworldExtY=t},r.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},r.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},r.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},r.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},r.prototype.getDeviceExtX=function(){return this.ldeviceExtX},r.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},r.prototype.getDeviceExtY=function(){return this.ldeviceExtY},r.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},r.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},r.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},r.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},r.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},r.prototype.inverseTransformPoint=function(t){return new n(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=r},function(t,e,i){"use strict";var n=i(15),r=i(4),o=i(0),s=i(8),a=i(9);function h(){n.call(this),this.useSmartIdealEdgeLengthCalculation=r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=r.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=r.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=r.MAX_ITERATIONS}for(var l in h.prototype=Object.create(n.prototype),n)h[l]=n[l];h.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,n,s,a,h,l=this.getGraphManager().getAllEdges(),d=0;dr.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*r.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-r.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>r.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(r.COOLING_ADAPTATION_FACTOR,1-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*(1-r.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=a.length||l>=a[0].length))for(var d=0;dt}}]),t}();t.exports=o},function(t,e,i){"use strict";function n(){}n.svd=function(t){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=t.length,this.n=t[0].length;var e=Math.min(this.m,this.n);this.s=function(t){for(var e=[];t-- >0;)e.push(0);return e}(Math.min(this.m+1,this.n)),this.U=function t(e){if(0==e.length)return 0;for(var i=[],n=0;n0;)e.push(0);return e}(this.n),r=function(t){for(var e=[];t-- >0;)e.push(0);return e}(this.m),o=Math.min(this.m-1,this.n),s=Math.max(0,Math.min(this.n-2,this.m)),a=0;a=0;_--)if(0!==this.s[_]){for(var M=_+1;M=0;G--){if(function(t,e){return t&&e}(G0;){var B=void 0,V=void 0;for(B=L-2;B>=-1&&-1!==B;B--)if(Math.abs(i[B])<=z+X*(Math.abs(this.s[B])+Math.abs(this.s[B+1]))){i[B]=0;break}if(B===L-2)V=4;else{var W=void 0;for(W=L-1;W>=B&&W!==B;W--){var j=(W!==L?Math.abs(i[W]):0)+(W!==B+1?Math.abs(i[W-1]):0);if(Math.abs(this.s[W])<=z+X*j){this.s[W]=0;break}}W===B?V=3:W===L-1?V=1:(V=2,B=W)}switch(B++,V){case 1:var $=i[L-2];i[L-2]=0;for(var q=L-2;q>=B;q--){var K=n.hypot(this.s[q],$),Z=this.s[q]/K,Q=$/K;this.s[q]=K,q!==B&&($=-Q*i[q-1],i[q-1]=Z*i[q-1]);for(var J=0;J=this.s[B+1]);){var Lt=this.s[B];if(this.s[B]=this.s[B+1],this.s[B+1]=Lt,BMath.abs(e)?(i=e/t,i=Math.abs(t)*Math.sqrt(1+i*i)):0!=e?(i=t/e,i=Math.abs(e)*Math.sqrt(1+i*i)):i=0,i},t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=n,this.mismatch_penalty=r,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s=0;i--){var n=this.listeners[i];n.event===t&&n.callback===e&&this.listeners.splice(i,1)}},r.emit=function(t,e){for(var i=0;i{"use strict";i.d(e,{diagram:()=>Z});var n=i(3590),r=i(92),o=i(5871),s=i(3226),a=i(7633),h=i(797),l=i(8731),d=i(165),c=i(6527),g=i(451),u={L:"left",R:"right",T:"top",B:"bottom"},f={L:(0,h.K2)(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:(0,h.K2)(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:(0,h.K2)(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:(0,h.K2)(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},p={L:(0,h.K2)((t,e)=>t-e+2,"L"),R:(0,h.K2)((t,e)=>t-2,"R"),T:(0,h.K2)((t,e)=>t-e+2,"T"),B:(0,h.K2)((t,e)=>t-2,"B")},y=(0,h.K2)(function(t){return m(t)?"L"===t?"R":"L":"T"===t?"B":"T"},"getOppositeArchitectureDirection"),v=(0,h.K2)(function(t){return"L"===t||"R"===t||"T"===t||"B"===t},"isArchitectureDirection"),m=(0,h.K2)(function(t){return"L"===t||"R"===t},"isArchitectureDirectionX"),E=(0,h.K2)(function(t){return"T"===t||"B"===t},"isArchitectureDirectionY"),N=(0,h.K2)(function(t,e){const i=m(t)&&E(e),n=E(t)&&m(e);return i||n},"isArchitectureDirectionXY"),T=(0,h.K2)(function(t){const e=t[0],i=t[1],n=m(e)&&E(i),r=E(e)&&m(i);return n||r},"isArchitecturePairXY"),A=(0,h.K2)(function(t){return"LL"!==t&&"RR"!==t&&"TT"!==t&&"BB"!==t},"isValidArchitectureDirectionPair"),w=(0,h.K2)(function(t,e){const i=`${t}${e}`;return A(i)?i:void 0},"getArchitectureDirectionPair"),L=(0,h.K2)(function([t,e],i){const n=i[0],r=i[1];return m(n)?E(r)?[t+("L"===n?-1:1),e+("T"===r?1:-1)]:[t+("L"===n?-1:1),e]:m(r)?[t+("L"===r?1:-1),e+("T"===n?1:-1)]:[t,e+("T"===n?1:-1)]},"shiftPositionByArchitectureDirectionPair"),C=(0,h.K2)(function(t){return"LT"===t||"TL"===t?[1,1]:"BL"===t||"LB"===t?[1,-1]:"BR"===t||"RB"===t?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),I=(0,h.K2)(function(t,e){return N(t,e)?"bend":m(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),_=(0,h.K2)(function(t){return"service"===t.type},"isArchitectureService"),M=(0,h.K2)(function(t){return"junction"===t.type},"isArchitectureJunction"),x=(0,h.K2)(t=>t.data(),"edgeData"),O=(0,h.K2)(t=>t.data(),"nodeData"),D=a.UI.architecture,R=class{constructor(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.elements={},this.setAccTitle=a.SV,this.getAccTitle=a.iN,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.getAccDescription=a.m7,this.setAccDescription=a.EI,this.clear()}static{(0,h.K2)(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},(0,a.IU)()}addService({id:t,icon:e,in:i,title:n,iconText:r}){if(void 0!==this.registeredIds[t])throw new Error(`The service id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The service [${t}] cannot be placed within itself`);if(void 0===this.registeredIds[i])throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if("node"===this.registeredIds[i])throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:e,iconText:r,title:n,edges:[],in:i}}getServices(){return Object.values(this.nodes).filter(_)}addJunction({id:t,in:e}){this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:e}}getJunctions(){return Object.values(this.nodes).filter(M)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:e,in:i,title:n}){if(void 0!==this.registeredIds?.[t])throw new Error(`The group id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The group [${t}] cannot be placed within itself`);if(void 0===this.registeredIds?.[i])throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if("node"===this.registeredIds?.[i])throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:e,title:n,in:i}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:e,lhsDir:i,rhsDir:n,lhsInto:r,rhsInto:o,lhsGroup:s,rhsGroup:a,title:h}){if(!v(i))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${String(i)}`);if(!v(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${String(n)}`);if(void 0===this.nodes[t]&&void 0===this.groups[t])throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(void 0===this.nodes[e]&&void 0===this.groups[e])throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);const l=this.nodes[t].in,d=this.nodes[e].in;if(s&&l&&d&&l==d)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(a&&l&&d&&l==d)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);const c={lhsId:t,lhsDir:i,lhsInto:r,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:o,rhsGroup:a,title:h};this.edges.push(c),this.nodes[t]&&this.nodes[e]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[e].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(void 0===this.dataStructures){const t={},e=Object.entries(this.nodes).reduce((e,[i,n])=>(e[i]=n.edges.reduce((e,n)=>{const r=this.getNode(n.lhsId)?.in,o=this.getNode(n.rhsId)?.in;if(r&&o&&r!==o){const e=I(n.lhsDir,n.rhsDir);"bend"!==e&&(t[r]??={},t[r][o]=e,t[o]??={},t[o][r]=e)}if(n.lhsId===i){const t=w(n.lhsDir,n.rhsDir);t&&(e[t]=n.rhsId)}else{const t=w(n.rhsDir,n.lhsDir);t&&(e[t]=n.lhsId)}return e},{}),e),{}),i=Object.keys(e)[0],n={[i]:1},r=Object.keys(e).reduce((t,e)=>e===i?t:{...t,[e]:1},{}),o=(0,h.K2)(t=>{const i={[t]:[0,0]},o=[t];for(;o.length>0;){const t=o.shift();if(t){n[t]=1,delete r[t];const s=e[t],[a,h]=i[t];Object.entries(s).forEach(([t,e])=>{n[e]||(i[e]=L([a,h],t),o.push(e))})}}return i},"BFS"),s=[o(i)];for(;Object.keys(r).length>0;)s.push(o(Object.keys(r)[0]));this.dataStructures={adjList:e,spatialMaps:s,groupAlignments:t}}return this.dataStructures}setElementForId(t,e){this.elements[t]=e}getElementById(t){return this.elements[t]}getConfig(){return(0,s.$t)({...D,...(0,a.zj)().architecture})}getConfigField(t){return this.getConfig()[t]}},b=(0,h.K2)((t,e)=>{(0,o.S)(t,e),t.groups.map(t=>e.addGroup(t)),t.services.map(t=>e.addService({...t,type:"service"})),t.junctions.map(t=>e.addJunction({...t,type:"junction"})),t.edges.map(t=>e.addEdge(t))},"populateDb"),F={parser:{yy:void 0},parse:(0,h.K2)(async t=>{const e=await(0,l.qg)("architecture",t);h.Rm.debug(e);const i=F.parser?.yy;if(!(i instanceof R))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");b(e,i)},"parse")},G=(0,h.K2)(t=>`\n .edge {\n stroke-width: ${t.archEdgeWidth};\n stroke: ${t.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${t.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${t.archGroupBorderColor};\n stroke-width: ${t.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`,"getStyles"),S=(0,h.K2)(t=>`${t}`,"wrapIcon"),P={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:S('')},server:{body:S('')},disk:{body:S('')},internet:{body:S('')},cloud:{body:S('')},unknown:r.Gc,blank:{body:S("")}}},U=(0,h.K2)(async function(t,e,i){const n=i.getConfigField("padding"),o=i.getConfigField("iconSize"),h=o/2,l=o/6,d=l/2;await Promise.all(e.edges().map(async e=>{const{source:o,sourceDir:c,sourceArrow:g,sourceGroup:u,target:y,targetDir:v,targetArrow:A,targetGroup:L,label:I}=x(e);let{x:_,y:M}=e[0].sourceEndpoint();const{x:O,y:D}=e[0].midpoint();let{x:R,y:b}=e[0].targetEndpoint();const F=n+4;if(u&&(m(c)?_+="L"===c?-F:F:M+="T"===c?-F:F+18),L&&(m(v)?R+="L"===v?-F:F:b+="T"===v?-F:F+18),u||"junction"!==i.getNode(o)?.type||(m(c)?_+="L"===c?h:-h:M+="T"===c?h:-h),L||"junction"!==i.getNode(y)?.type||(m(v)?R+="L"===v?h:-h:b+="T"===v?h:-h),e[0]._private.rscratch){const e=t.insert("g");if(e.insert("path").attr("d",`M ${_},${M} L ${O},${D} L${R},${b} `).attr("class","edge").attr("id",(0,s.rY)(o,y,{prefix:"L"})),g){const t=m(c)?p[c](_,l):_-d,i=E(c)?p[c](M,l):M-d;e.insert("polygon").attr("points",f[c](l)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(A){const t=m(v)?p[v](R,l):R-d,i=E(v)?p[v](b,l):b-d;e.insert("polygon").attr("points",f[v](l)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(I){const t=N(c,v)?"XY":m(c)?"X":"Y";let i=0;i="X"===t?Math.abs(_-R):"Y"===t?Math.abs(M-b)/1.5:Math.abs(_-R)/2;const n=e.append("g");if(await(0,r.GZ)(n,I,{useHtmlLabels:!1,width:i,classes:"architecture-service-label"},(0,a.D7)()),n.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),"X"===t)n.attr("transform","translate("+O+", "+D+")");else if("Y"===t)n.attr("transform","translate("+O+", "+D+") rotate(-90)");else if("XY"===t){const t=w(c,v);if(t&&T(t)){const e=n.node().getBoundingClientRect(),[i,r]=C(t);n.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*i*r*45})`);const o=n.node().getBoundingClientRect();n.attr("transform",`\n translate(${O}, ${D-e.height/2})\n translate(${i*o.width/2}, ${r*o.height/2})\n rotate(${-1*i*r*45}, 0, ${e.height/2})\n `)}}}}}))},"drawEdges"),Y=(0,h.K2)(async function(t,e,i){const n=.75*i.getConfigField("padding"),o=i.getConfigField("fontSize"),s=i.getConfigField("iconSize")/2;await Promise.all(e.nodes().map(async e=>{const h=O(e);if("group"===h.type){const{h:l,w:d,x1:c,y1:g}=e.boundingBox(),u=t.append("rect");u.attr("id",`group-${h.id}`).attr("x",c+s).attr("y",g+s).attr("width",d).attr("height",l).attr("class","node-bkg");const f=t.append("g");let p=c,y=g;if(h.icon){const t=f.append("g");t.html(`${await(0,r.WY)(h.icon,{height:n,width:n,fallbackPrefix:P.prefix})}`),t.attr("transform","translate("+(p+s+1)+", "+(y+s+1)+")"),p+=n,y+=o/2-1-2}if(h.label){const t=f.append("g");await(0,r.GZ)(t,h.label,{useHtmlLabels:!1,width:d,classes:"architecture-service-label"},(0,a.D7)()),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),t.attr("transform","translate("+(p+s+4)+", "+(y+s+2)+")")}i.setElementForId(h.id,u)}}))},"drawGroups"),k=(0,h.K2)(async function(t,e,i){const n=(0,a.D7)();for(const o of i){const i=e.append("g"),s=t.getConfigField("iconSize");if(o.title){const t=i.append("g");await(0,r.GZ)(t,o.title,{useHtmlLabels:!1,width:1.5*s,classes:"architecture-service-label"},n),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),t.attr("transform","translate("+s/2+", "+s+")")}const h=i.append("g");if(o.icon)h.html(`${await(0,r.WY)(o.icon,{height:s,width:s,fallbackPrefix:P.prefix})}`);else if(o.iconText){h.html(`${await(0,r.WY)("blank",{height:s,width:s,fallbackPrefix:P.prefix})}`);const t=h.append("g").append("foreignObject").attr("width",s).attr("height",s).append("div").attr("class","node-icon-text").attr("style",`height: ${s}px;`).append("div").html((0,a.jZ)(o.iconText,n)),e=parseInt(window.getComputedStyle(t.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;t.attr("style",`-webkit-line-clamp: ${Math.floor((s-2)/e)};`)}else h.append("path").attr("class","node-bkg").attr("id","node-"+o.id).attr("d",`M0 ${s} v${-s} q0,-5 5,-5 h${s} q5,0 5,5 v${s} H0 Z`);i.attr("id",`service-${o.id}`).attr("class","architecture-service");const{width:l,height:d}=i.node().getBBox();o.width=l,o.height=d,t.setElementForId(o.id,i)}return 0},"drawServices"),H=(0,h.K2)(function(t,e,i){i.forEach(i=>{const n=e.append("g"),r=t.getConfigField("iconSize");n.append("g").append("rect").attr("id","node-"+i.id).attr("fill-opacity","0").attr("width",r).attr("height",r),n.attr("class","architecture-junction");const{width:o,height:s}=n._groups[0][0].getBBox();n.width=o,n.height=s,t.setElementForId(i.id,n)})},"drawJunctions");function X(t,e,i){t.forEach(t=>{e.add({group:"nodes",data:{type:"service",id:t.id,icon:t.icon,label:t.title,parent:t.in,width:i.getConfigField("iconSize"),height:i.getConfigField("iconSize")},classes:"node-service"})})}function z(t,e,i){t.forEach(t=>{e.add({group:"nodes",data:{type:"junction",id:t.id,parent:t.in,width:i.getConfigField("iconSize"),height:i.getConfigField("iconSize")},classes:"node-junction"})})}function B(t,e){e.nodes().map(e=>{const i=O(e);if("group"===i.type)return;i.x=e.position().x,i.y=e.position().y;t.getElementById(i.id).attr("transform","translate("+(i.x||0)+","+(i.y||0)+")")})}function V(t,e){t.forEach(t=>{e.add({group:"nodes",data:{type:"group",id:t.id,icon:t.icon,label:t.title,parent:t.in},classes:"node-group"})})}function W(t,e){t.forEach(t=>{const{lhsId:i,rhsId:n,lhsInto:r,lhsGroup:o,rhsInto:s,lhsDir:a,rhsDir:h,rhsGroup:l,title:d}=t,c=N(t.lhsDir,t.rhsDir)?"segments":"straight",g={id:`${i}-${n}`,label:d,source:i,sourceDir:a,sourceArrow:r,sourceGroup:o,sourceEndpoint:"L"===a?"0 50%":"R"===a?"100% 50%":"T"===a?"50% 0":"50% 100%",target:n,targetDir:h,targetArrow:s,targetGroup:l,targetEndpoint:"L"===h?"0 50%":"R"===h?"100% 50%":"T"===h?"50% 0":"50% 100%"};e.add({group:"edges",data:g,classes:c})})}function j(t,e,i){const n=(0,h.K2)((t,e)=>Object.entries(t).reduce((t,[n,r])=>{let o=0;const s=Object.entries(r);if(1===s.length)return t[n]=s[0][1],t;for(let a=0;a{const i={},r={};return Object.entries(e).forEach(([e,[n,o]])=>{const s=t.getNode(e)?.in??"default";i[o]??={},i[o][s]??=[],i[o][s].push(e),r[n]??={},r[n][s]??=[],r[n][s].push(e)}),{horiz:Object.values(n(i,"horizontal")).filter(t=>t.length>1),vert:Object.values(n(r,"vertical")).filter(t=>t.length>1)}}),[o,s]=r.reduce(([t,e],{horiz:i,vert:n})=>[[...t,...i],[...e,...n]],[[],[]]);return{horizontal:o,vertical:s}}function $(t,e){const i=[],n=(0,h.K2)(t=>`${t[0]},${t[1]}`,"posToStr"),r=(0,h.K2)(t=>t.split(",").map(t=>parseInt(t)),"strToPos");return t.forEach(t=>{const o=Object.fromEntries(Object.entries(t).map(([t,e])=>[n(e),t])),s=[n([0,0])],a={},h={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){const t=s.shift();if(t){a[t]=1;const l=o[t];if(l){const d=r(t);Object.entries(h).forEach(([t,r])=>{const h=n([d[0]+r[0],d[1]+r[1]]),c=o[h];c&&!a[h]&&(s.push(h),i.push({[u[t]]:c,[u[y(t)]]:l,gap:1.5*e.getConfigField("iconSize")}))})}}}}),i}function q(t,e,i,n,r,{spatialMaps:o,groupAlignments:s}){return new Promise(a=>{const l=(0,g.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),c=(0,d.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${r.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${r.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});l.remove(),V(i,c),X(t,c,r),z(e,c,r),W(n,c);const u=j(r,o,s),f=$(o,r),p=c.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:o}=O(i);return n===o?1.5*r.getConfigField("iconSize"):.5*r.getConfigField("iconSize")},edgeElasticity(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:r}=O(i);return n===r?.45:.001},alignmentConstraint:u,relativePlacementConstraint:f});p.one("layoutstop",()=>{function t(t,e,i,n){let r,o;const{x:s,y:a}=t,{x:h,y:l}=e;o=(n-a+(s-i)*(a-l)/(s-h))/Math.sqrt(1+Math.pow((a-l)/(s-h),2)),r=Math.sqrt(Math.pow(n-a,2)+Math.pow(i-s,2)-Math.pow(o,2));r/=Math.sqrt(Math.pow(h-s,2)+Math.pow(l-a,2));let d=(h-s)*(n-a)-(l-a)*(i-s);switch(!0){case d>=0:d=1;break;case d<0:d=-1}let c=(h-s)*(i-s)+(l-a)*(n-a);switch(!0){case c>=0:c=1;break;case c<0:c=-1}return o=Math.abs(o)*d,r*=c,{distances:o,weights:r}}(0,h.K2)(t,"getSegmentWeights"),c.startBatch();for(const e of Object.values(c.edges()))if(e.data?.()){const{x:i,y:n}=e.source().position(),{x:r,y:o}=e.target().position();if(i!==r&&n!==o){const i=e.sourceEndpoint(),n=e.targetEndpoint(),{sourceDir:r}=x(e),[o,s]=E(r)?[i.x,n.y]:[n.x,i.y],{weights:a,distances:h}=t(i,n,o,s);e.style("segment-distances",h),e.style("segment-weights",a)}}c.endBatch(),p.run()}),p.run(),c.ready(t=>{h.Rm.info("Ready",t),a(c)})})}(0,r.pC)([{name:P.prefix,icons:P}]),d.A.use(c),(0,h.K2)(X,"addServices"),(0,h.K2)(z,"addJunctions"),(0,h.K2)(B,"positionNodes"),(0,h.K2)(V,"addGroups"),(0,h.K2)(W,"addEdges"),(0,h.K2)(j,"getAlignments"),(0,h.K2)($,"getRelativeConstraints"),(0,h.K2)(q,"layoutArchitecture");var K={draw:(0,h.K2)(async(t,e,i,r)=>{const o=r.db,s=o.getServices(),h=o.getJunctions(),l=o.getGroups(),d=o.getEdges(),c=o.getDataStructures(),g=(0,n.D)(e),u=g.append("g");u.attr("class","architecture-edges");const f=g.append("g");f.attr("class","architecture-services");const p=g.append("g");p.attr("class","architecture-groups"),await k(o,f,s),H(o,f,h);const y=await q(s,h,l,d,o,c);await U(u,y,o),await Y(p,y,o),B(o,y),(0,a.ot)(void 0,g,o.getConfigField("padding"),o.getConfigField("useMaxWidth"))},"draw")},Z={parser:F,get db(){return new R},renderer:K,styles:G}}}]); \ No newline at end of file diff --git a/user/assets/js/8525.0f81c924.js b/user/assets/js/8525.0f81c924.js new file mode 100644 index 0000000..cc93ee3 --- /dev/null +++ b/user/assets/js/8525.0f81c924.js @@ -0,0 +1 @@ +(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8525],{1336:(e,n,t)=>{"use strict";t.d(n,{A:()=>We});var s=t(6540),a=t(8453),r=t(5260),i=t(2303),c=t(4164),o=t(5293),l=t(6342);function d(){const{prism:e}=(0,l.p)(),{colorMode:n}=(0,o.G)(),t=e.theme,s=e.darkTheme||t;return"dark"===n?s:t}var u=t(7559),m=t(8426),h=t.n(m),f=t(9532),p=t(4848);const x=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,j={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},v={...j,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},b=Object.keys(j);function N(e,n){const t=e.map(e=>{const{start:t,end:s}=v[e];return`(?:${t}\\s*(${n.flatMap(e=>[e.line,e.block?.start,e.block?.end].filter(Boolean)).join("|")})\\s*${s})`}).join("|");return new RegExp(`^\\s*(?:${t})\\s*$`)}function A({showLineNumbers:e,metastring:n}){return"boolean"==typeof e?e?1:void 0:"number"==typeof e?e:function(e){const n=e?.split(" ").find(e=>e.startsWith("showLineNumbers"));if(n){if(n.startsWith("showLineNumbers=")){const e=n.replace("showLineNumbers=","");return parseInt(e,10)}return 1}}(n)}function y(e,n){const{language:t,magicComments:s}=n;if(void 0===t)return{lineClassNames:{},code:e};const a=function(e,n){switch(e){case"js":case"javascript":case"ts":case"typescript":return N(["js","jsBlock"],n);case"jsx":case"tsx":return N(["js","jsBlock","jsx"],n);case"html":return N(["js","jsBlock","html"],n);case"python":case"py":case"bash":return N(["bash"],n);case"markdown":case"md":return N(["html","jsx","bash"],n);case"tex":case"latex":case"matlab":return N(["tex"],n);case"lua":case"haskell":return N(["lua"],n);case"sql":return N(["lua","jsBlock"],n);case"wasm":return N(["wasm"],n);case"vb":case"vba":case"visual-basic":return N(["vb","rem"],n);case"vbnet":return N(["vbnet","rem"],n);case"batch":return N(["rem"],n);case"basic":return N(["rem","f90"],n);case"fsharp":return N(["js","ml"],n);case"ocaml":case"sml":return N(["ml"],n);case"fortran":return N(["f90"],n);case"cobol":return N(["cobol"],n);default:return N(b,n)}}(t,s),r=e.split(/\r?\n/),i=Object.fromEntries(s.map(e=>[e.className,{start:0,range:""}])),c=Object.fromEntries(s.filter(e=>e.line).map(({className:e,line:n})=>[n,e])),o=Object.fromEntries(s.filter(e=>e.block).map(({className:e,block:n})=>[n.start,e])),l=Object.fromEntries(s.filter(e=>e.block).map(({className:e,block:n})=>[n.end,e]));for(let u=0;u<r.length;){const e=r[u].match(a);if(!e){u+=1;continue}const n=e.slice(1).find(e=>void 0!==e);c[n]?i[c[n]].range+=`${u},`:o[n]?i[o[n]].start=u:l[n]&&(i[l[n]].range+=`${i[l[n]].start}-${u-1},`),r.splice(u,1)}const d={};return Object.entries(i).forEach(([e,{range:n}])=>{h()(n).forEach(n=>{d[n]??=[],d[n].push(e)})}),{code:r.join("\n"),lineClassNames:d}}function C(e,n){const t=e.replace(/\r?\n$/,"");return function(e,{metastring:n,magicComments:t}){if(n&&g.test(n)){const s=n.match(g).groups.range;if(0===t.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${n}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const a=t[0].className,r=h()(s).filter(e=>e>0).map(e=>[e-1,[a]]);return{lineClassNames:Object.fromEntries(r),code:e}}return null}(t,{...n})??y(t,{...n})}function w(e){const n=function(e){return n=e.language??function(e){if(!e)return;const n=e.split(" ").find(e=>e.startsWith("language-"));return n?.replace(/language-/,"")}(e.className)??e.defaultLanguage,n?.toLowerCase()??"text";var n}({language:e.language,defaultLanguage:e.defaultLanguage,className:e.className}),{lineClassNames:t,code:s}=C(e.code,{metastring:e.metastring,magicComments:e.magicComments,language:n}),a=function({className:e,language:n}){return(0,c.A)(e,n&&!e?.includes(`language-${n}`)&&`language-${n}`)}({className:e.className,language:n}),r=(i=e.metastring,(i?.match(x)?.groups.title??"")||e.title);var i;const o=A({showLineNumbers:e.showLineNumbers,metastring:e.metastring});return{codeInput:e.code,code:s,className:a,language:n,title:r,lineNumbersStart:o,lineClassNames:t}}const k=(0,s.createContext)(null);function L({metadata:e,wordWrap:n,children:t}){const a=(0,s.useMemo)(()=>({metadata:e,wordWrap:n}),[e,n]);return(0,p.jsx)(k.Provider,{value:a,children:t})}function B(){const e=(0,s.useContext)(k);if(null===e)throw new f.dV("CodeBlockContextProvider");return e}const T="codeBlockContainer_Ckt0";function _({as:e,...n}){const t=function(e){const n={color:"--prism-color",backgroundColor:"--prism-background-color"},t={};return Object.entries(e.plain).forEach(([e,s])=>{const a=n[e];a&&"string"==typeof s&&(t[a]=s)}),t}(d());return(0,p.jsx)(e,{...n,style:t,className:(0,c.A)(n.className,T,u.G.common.codeBlock)})}const E="codeBlock_bY9V",H="codeBlockStandalone_MEMb",M="codeBlockLines_e6Vv",S="codeBlockLinesWithNumbering_o6Pm";function I({children:e,className:n}){return(0,p.jsx)(_,{as:"pre",tabIndex:0,className:(0,c.A)(H,"thin-scrollbar",n),children:(0,p.jsx)("code",{className:M,children:e})})}const U={attributes:!0,characterData:!0,childList:!0,subtree:!0};function z(e,n){const[t,a]=(0,s.useState)(),r=(0,s.useCallback)(()=>{a(e.current?.closest("[role=tabpanel][hidden]"))},[e,a]);(0,s.useEffect)(()=>{r()},[r]),function(e,n,t=U){const a=(0,f._q)(n),r=(0,f.Be)(t);(0,s.useEffect)(()=>{const n=new MutationObserver(a);return e&&n.observe(e,r),()=>n.disconnect()},[e,a,r])}(t,e=>{e.forEach(e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(n(),r())})},{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function R({children:e}){return e}var V=t(1765);function O({line:e,token:n,...t}){return(0,p.jsx)("span",{...t})}const $="codeLine_lJS_",P="codeLineNumber_Tfdd",W="codeLineContent_feaV";function q({line:e,classNames:n,showLineNumbers:t,getLineProps:s,getTokenProps:a}){const r=function(e){const n=1===e.length&&"\n"===e[0].content?e[0]:void 0;return n?[{...n,content:""}]:e}(e),i=s({line:r,className:(0,c.A)(n,t&&$)}),o=r.map((e,n)=>{const t=a({token:e});return(0,p.jsx)(O,{...t,line:r,token:e,children:t.children},n)});return(0,p.jsxs)("span",{...i,children:[t?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("span",{className:P}),(0,p.jsx)("span",{className:W,children:o})]}):o,(0,p.jsx)("br",{})]})}const D=s.forwardRef((e,n)=>(0,p.jsx)("pre",{ref:n,tabIndex:0,...e,className:(0,c.A)(e.className,E,"thin-scrollbar")}));function F(e){const{metadata:n}=B();return(0,p.jsx)("code",{...e,className:(0,c.A)(e.className,M,void 0!==n.lineNumbersStart&&S),style:{...e.style,counterReset:void 0===n.lineNumbersStart?void 0:"line-count "+(n.lineNumbersStart-1)}})}function G({className:e}){const{metadata:n,wordWrap:t}=B(),s=d(),{code:a,language:r,lineNumbersStart:i,lineClassNames:o}=n;return(0,p.jsx)(V.f4,{theme:s,code:a,language:r,children:({className:n,style:s,tokens:a,getLineProps:r,getTokenProps:l})=>(0,p.jsx)(D,{ref:t.codeBlockRef,className:(0,c.A)(e,n),style:s,children:(0,p.jsx)(F,{children:a.map((e,n)=>(0,p.jsx)(q,{line:e,getLineProps:r,getTokenProps:l,classNames:o[n],showLineNumbers:void 0!==i},n))})})})}function J({children:e,fallback:n}){return(0,i.A)()?(0,p.jsx)(p.Fragment,{children:e?.()}):n??null}var Z=t(1312);function X({className:e,...n}){return(0,p.jsx)("button",{type:"button",...n,className:(0,c.A)("clean-btn",e)})}function Y(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function Q(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const K={copyButtonCopied:"copyButtonCopied_Vdqa",copyButtonIcons:"copyButtonIcons_IEyt",copyButtonIcon:"copyButtonIcon_TrPX",copyButtonSuccessIcon:"copyButtonSuccessIcon_cVMy"};function ee(e){return e?(0,Z.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,Z.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"})}function ne({className:e}){const{copyCode:n,isCopied:t}=function(){const{metadata:{code:e}}=B(),[n,t]=(0,s.useState)(!1),a=(0,s.useRef)(void 0),r=(0,s.useCallback)(()=>{navigator.clipboard.writeText(e).then(()=>{t(!0),a.current=window.setTimeout(()=>{t(!1)},1e3)})},[e]);return(0,s.useEffect)(()=>()=>window.clearTimeout(a.current),[]),{copyCode:r,isCopied:n}}();return(0,p.jsx)(X,{"aria-label":ee(t),title:(0,Z.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,c.A)(e,K.copyButton,t&&K.copyButtonCopied),onClick:n,children:(0,p.jsxs)("span",{className:K.copyButtonIcons,"aria-hidden":"true",children:[(0,p.jsx)(Y,{className:K.copyButtonIcon}),(0,p.jsx)(Q,{className:K.copyButtonSuccessIcon})]})})}function te(e){return(0,p.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,p.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const se="wordWrapButtonIcon_b1P5",ae="wordWrapButtonEnabled_uzNF";function re({className:e}){const{wordWrap:n}=B();if(!(n.isEnabled||n.isCodeScrollable))return!1;const t=(0,Z.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,p.jsx)(X,{onClick:()=>n.toggle(),className:(0,c.A)(e,n.isEnabled&&ae),"aria-label":t,title:t,children:(0,p.jsx)(te,{className:se,"aria-hidden":"true"})})}const ie="buttonGroup_M5ko";function ce({className:e}){return(0,p.jsx)(J,{children:()=>(0,p.jsxs)("div",{className:(0,c.A)(e,ie),children:[(0,p.jsx)(re,{}),(0,p.jsx)(ne,{})]})})}const oe="codeBlockContent_QJqH",le="codeBlockTitle_OeMC";function de({className:e}){const{metadata:n}=B();return(0,p.jsxs)(_,{as:"div",className:(0,c.A)(e,n.className),children:[n.title&&(0,p.jsx)("div",{className:le,children:(0,p.jsx)(R,{children:n.title})}),(0,p.jsxs)("div",{className:oe,children:[(0,p.jsx)(G,{}),(0,p.jsx)(ce,{})]})]})}function ue(e){const n=function(e){const{prism:n}=(0,l.p)();return w({code:e.children,className:e.className,metastring:e.metastring,magicComments:n.magicComments,defaultLanguage:n.defaultLanguage,language:e.language,title:e.title,showLineNumbers:e.showLineNumbers})}(e),t=function(){const[e,n]=(0,s.useState)(!1),[t,a]=(0,s.useState)(!1),r=(0,s.useRef)(null),i=(0,s.useCallback)(()=>{const t=r.current.querySelector("code");e?t.removeAttribute("style"):(t.style.whiteSpace="pre-wrap",t.style.overflowWrap="anywhere"),n(e=>!e)},[r,e]),c=(0,s.useCallback)(()=>{const{scrollWidth:e,clientWidth:n}=r.current,t=e>n||r.current.querySelector("code").hasAttribute("style");a(t)},[r]);return z(r,c),(0,s.useEffect)(()=>{c()},[e,c]),(0,s.useEffect)(()=>(window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)}),[c]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:t,toggle:i}}();return(0,p.jsx)(L,{metadata:n,wordWrap:t,children:(0,p.jsx)(de,{})})}function me({children:e,...n}){const t=(0,i.A)(),a=function(e){return s.Children.toArray(e).some(e=>(0,s.isValidElement)(e))?e:Array.isArray(e)?e.join(""):e}(e),r="string"==typeof a?ue:I;return(0,p.jsx)(r,{...n,children:a},String(t))}function he(e){return(0,p.jsx)("code",{...e})}var fe=t(8774),pe=t(3535);var xe=t(3427),ge=t(1422);const je="details_lb9f",ve="isBrowser_bmU9",be="collapsibleContent_i85q";function Ne(e){return!!e&&("SUMMARY"===e.tagName||Ne(e.parentElement))}function Ae(e,n){return!!e&&(e===n||Ae(e.parentElement,n))}function ye({summary:e,children:n,...t}){(0,xe.A)().collectAnchor(t.id);const a=(0,i.A)(),r=(0,s.useRef)(null),{collapsed:o,setCollapsed:l}=(0,ge.u)({initialState:!t.open}),[d,u]=(0,s.useState)(t.open),m=s.isValidElement(e)?e:(0,p.jsx)("summary",{children:e??"Details"});return(0,p.jsxs)("details",{...t,ref:r,open:d,"data-collapsed":o,className:(0,c.A)(je,a&&ve,t.className),onMouseDown:e=>{Ne(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const n=e.target;Ne(n)&&Ae(n,r.current)&&(e.preventDefault(),o?(l(!1),u(!0)):l(!0))},children:[m,(0,p.jsx)(ge.N,{lazy:!1,collapsed:o,onCollapseTransitionEnd:e=>{l(e),u(!e)},children:(0,p.jsx)("div",{className:be,children:n})})]})}const Ce="details_b_Ee";function we({...e}){return(0,p.jsx)(ye,{...e,className:(0,c.A)("alert alert--info",Ce,e.className)})}function ke(e){const n=s.Children.toArray(e.children),t=n.find(e=>s.isValidElement(e)&&"summary"===e.type),a=(0,p.jsx)(p.Fragment,{children:n.filter(e=>e!==t)});return(0,p.jsx)(we,{...e,summary:t,children:a})}var Le=t(1107);function Be(e){return(0,p.jsx)(Le.A,{...e})}const Te="containsTaskList_mC6p";function _e(e){if(void 0!==e)return(0,c.A)(e,e?.includes("contains-task-list")&&Te)}const Ee="img_ev3q";var He=t(7293),Me=t(7489),Se=t(2181);let Ie=null;async function Ue(){return Ie||(Ie=async function(){return(await t.e(2279).then(t.bind(t,2279))).default}()),Ie}function ze(){const{colorMode:e}=(0,o.G)(),n=(0,l.p)().mermaid,t=n.theme[e],{options:a}=n;return(0,s.useMemo)(()=>({startOnLoad:!1,...a,theme:t}),[t,a])}function Re({text:e,config:n}){const[t,a]=(0,s.useState)(null),r=(0,s.useState)(`mermaid-svg-${Math.round(1e7*Math.random())}`)[0],i=ze(),c=n??i;return(0,s.useEffect)(()=>{(async function({id:e,text:n,config:t}){const s=await Ue();s.initialize(t);try{return await s.render(e,n)}catch(a){throw document.querySelector(`#d${e}`)?.remove(),a}})({id:r,text:e,config:c}).then(a).catch(e=>{a(()=>{throw e})})},[r,e,c]),t}const Ve="container_lyt7";function Oe({renderResult:e}){const n=(0,s.useRef)(null);return(0,s.useEffect)(()=>{const t=n.current;e.bindFunctions?.(t)},[e]),(0,p.jsx)("div",{ref:n,className:`docusaurus-mermaid-container ${Ve}`,dangerouslySetInnerHTML:{__html:e.svg}})}function $e({value:e}){const n=Re({text:e});return null===n?null:(0,p.jsx)(Oe,{renderResult:n})}const Pe={Head:r.A,details:ke,Details:ke,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every(e=>"string"==typeof e&&!e.includes("\n"))}(e)?(0,p.jsx)(he,{...e}):(0,p.jsx)(me,{...e})},a:function(e){const n=(0,pe.v)(e.id);return(0,p.jsx)(fe.A,{...e,className:(0,c.A)(n,e.className)})},pre:function(e){return(0,p.jsx)(p.Fragment,{children:e.children})},ul:function(e){return(0,p.jsx)("ul",{...e,className:_e(e.className)})},li:function(e){(0,xe.A)().collectAnchor(e.id);const n=(0,pe.v)(e.id);return(0,p.jsx)("li",{className:(0,c.A)(n,e.className),...e})},img:function(e){return(0,p.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(n=e.className,(0,c.A)(n,Ee))});var n},h1:e=>(0,p.jsx)(Be,{as:"h1",...e}),h2:e=>(0,p.jsx)(Be,{as:"h2",...e}),h3:e=>(0,p.jsx)(Be,{as:"h3",...e}),h4:e=>(0,p.jsx)(Be,{as:"h4",...e}),h5:e=>(0,p.jsx)(Be,{as:"h5",...e}),h6:e=>(0,p.jsx)(Be,{as:"h6",...e}),admonition:He.A,mermaid:function(e){return(0,p.jsx)(Me.A,{fallback:e=>(0,p.jsx)(Se.MN,{...e}),children:(0,p.jsx)($e,{...e})})}};function We({children:e}){return(0,p.jsx)(a.x,{components:Pe,children:e})}},2153:(e,n,t)=>{"use strict";t.d(n,{A:()=>g});t(6540);var s=t(4164),a=t(1312),r=t(7559),i=t(8774);const c={iconEdit:"iconEdit_Z9Sw"};var o=t(4848);function l({className:e,...n}){return(0,o.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.A)(c.iconEdit,e),"aria-hidden":"true",...n,children:(0,o.jsx)("g",{children:(0,o.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function d({editUrl:e}){return(0,o.jsxs)(i.A,{to:e,className:r.G.common.editThisPage,children:[(0,o.jsx)(l,{}),(0,o.jsx)(a.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var u=t(4586);function m(e={}){const{i18n:{currentLocale:n}}=(0,u.A)(),t=function(){const{i18n:{currentLocale:e,localeConfigs:n}}=(0,u.A)();return n[e].calendar}();return new Intl.DateTimeFormat(n,{calendar:t,...e})}function h({lastUpdatedAt:e}){const n=new Date(e),t=m({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,o.jsx)(a.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,o.jsx)("b",{children:(0,o.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:t})})},children:" on {date}"})}function f({lastUpdatedBy:e}){return(0,o.jsx)(a.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,o.jsx)("b",{children:e})},children:" by {user}"})}function p({lastUpdatedAt:e,lastUpdatedBy:n}){return(0,o.jsxs)("span",{className:r.G.common.lastUpdated,children:[(0,o.jsx)(a.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:e?(0,o.jsx)(h,{lastUpdatedAt:e}):"",byUser:n?(0,o.jsx)(f,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const x={lastUpdated:"lastUpdated_JAkA",noPrint:"noPrint_WFHX"};function g({className:e,editUrl:n,lastUpdatedAt:t,lastUpdatedBy:a}){return(0,o.jsxs)("div",{className:(0,s.A)("row",e),children:[(0,o.jsx)("div",{className:(0,s.A)("col",x.noPrint),children:n&&(0,o.jsx)(d,{editUrl:n})}),(0,o.jsx)("div",{className:(0,s.A)("col",x.lastUpdated),children:(t||a)&&(0,o.jsx)(p,{lastUpdatedAt:t,lastUpdatedBy:a})})]})}},5195:(e,n,t)=>{"use strict";t.d(n,{A:()=>p});var s=t(6540),a=t(6342);function r(e){const n=e.map(e=>({...e,parentIndex:-1,children:[]})),t=Array(7).fill(-1);n.forEach((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n});const s=[];return n.forEach(e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):s.push(a)}),s}function i({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return e.flatMap(e=>{const s=i({toc:e.children,minHeadingLevel:n,maxHeadingLevel:t});return function(e){return e.level>=n&&e.level<=t}(e)?[{...e,children:s}]:s})}function c(e){const n=e.getBoundingClientRect();return n.top===n.bottom?c(e.parentNode):n}function o(e,{anchorTopOffset:n}){const t=e.find(e=>c(e).top>=n);if(t){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(c(t))?t:e[e.indexOf(t)-1]??null}return e[e.length-1]??null}function l(){const e=(0,s.useRef)(0),{navbar:{hideOnScroll:n}}=(0,a.p)();return(0,s.useEffect)(()=>{e.current=n?0:document.querySelector(".navbar").clientHeight},[n]),e}function d(e){const n=(0,s.useRef)(void 0),t=l();(0,s.useEffect)(()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:r,maxHeadingLevel:i}=e;function c(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),c=function({minHeadingLevel:e,maxHeadingLevel:n}){const t=[];for(let s=e;s<=n;s+=1)t.push(`h${s}.anchor`);return Array.from(document.querySelectorAll(t.join()))}({minHeadingLevel:r,maxHeadingLevel:i}),l=o(c,{anchorTopOffset:t.current}),d=e.find(e=>l&&l.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e));e.forEach(e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)})}return document.addEventListener("scroll",c),document.addEventListener("resize",c),c(),()=>{document.removeEventListener("scroll",c),document.removeEventListener("resize",c)}},[e,t])}var u=t(8774),m=t(4848);function h({toc:e,className:n,linkClassName:t,isChild:s}){return e.length?(0,m.jsx)("ul",{className:s?void 0:n,children:e.map(e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:t??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:n,linkClassName:t})]},e.id))}):null}const f=s.memo(h);function p({toc:e,className:n="table-of-contents table-of-contents__left-border",linkClassName:t="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:o,maxHeadingLevel:l,...u}){const h=(0,a.p)(),p=o??h.tableOfContents.minHeadingLevel,x=l??h.tableOfContents.maxHeadingLevel,g=function({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return(0,s.useMemo)(()=>i({toc:r(e),minHeadingLevel:n,maxHeadingLevel:t}),[e,n,t])}({toc:e,minHeadingLevel:p,maxHeadingLevel:x});return d((0,s.useMemo)(()=>{if(t&&c)return{linkClassName:t,linkActiveClassName:c,minHeadingLevel:p,maxHeadingLevel:x}},[t,c,p,x])),(0,m.jsx)(f,{toc:g,className:n,linkClassName:t,...u})}},6896:(e,n,t)=>{"use strict";t.d(n,{A:()=>g});t(6540);var s=t(4164),a=t(1312),r=t(5260),i=t(4848);function c(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function o(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function l(){return(0,i.jsx)(r.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function d(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function u(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}var m=t(7559),h=t(7293);function f({className:e}){return(0,i.jsx)(h.A,{type:"caution",title:(0,i.jsx)(d,{}),className:(0,s.A)(e,m.G.common.draftBanner),children:(0,i.jsx)(u,{})})}function p({className:e}){return(0,i.jsx)(h.A,{type:"caution",title:(0,i.jsx)(c,{}),className:(0,s.A)(e,m.G.common.unlistedBanner),children:(0,i.jsx)(o,{})})}function x(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(l,{}),(0,i.jsx)(p,{...e})]})}function g({metadata:e}){const{unlisted:n,frontMatter:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(n||t.unlisted)&&(0,i.jsx)(x,{}),t.draft&&(0,i.jsx)(f,{})]})}},7293:(e,n,t)=>{"use strict";t.d(n,{A:()=>H});var s=t(6540),a=t(4848);function r(e){const{mdxAdmonitionTitle:n,rest:t}=function(e){const n=s.Children.toArray(e),t=n.find(e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type),r=n.filter(e=>e!==t),i=t?.props.children;return{mdxAdmonitionTitle:i,rest:r.length>0?(0,a.jsx)(a.Fragment,{children:r}):null}}(e.children),r=e.title??n;return{...e,...r&&{title:r},children:t}}var i=t(4164),c=t(1312),o=t(7559);const l="admonition_xJq3",d="admonitionHeading_Gvgb",u="admonitionIcon_Rf37",m="admonitionContent_BuS1";function h({type:e,className:n,children:t}){return(0,a.jsx)("div",{className:(0,i.A)(o.G.common.admonition,o.G.common.admonitionType(e),l,n),children:t})}function f({icon:e,title:n}){return(0,a.jsxs)("div",{className:d,children:[(0,a.jsx)("span",{className:u,children:e}),n]})}function p({children:e}){return e?(0,a.jsx)("div",{className:m,children:e}):null}function x(e){const{type:n,icon:t,title:s,children:r,className:i}=e;return(0,a.jsxs)(h,{type:n,className:i,children:[s||t?(0,a.jsx)(f,{title:s,icon:t}):null,(0,a.jsx)(p,{children:r})]})}function g(e){return(0,a.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const j={icon:(0,a.jsx)(g,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function v(e){return(0,a.jsx)(x,{...j,...e,className:(0,i.A)("alert alert--secondary",e.className),children:e.children})}function b(e){return(0,a.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const N={icon:(0,a.jsx)(b,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function A(e){return(0,a.jsx)(x,{...N,...e,className:(0,i.A)("alert alert--success",e.className),children:e.children})}function y(e){return(0,a.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const C={icon:(0,a.jsx)(y,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function w(e){return(0,a.jsx)(x,{...C,...e,className:(0,i.A)("alert alert--info",e.className),children:e.children})}function k(e){return(0,a.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const L={icon:(0,a.jsx)(k,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function B(e){return(0,a.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const T={icon:(0,a.jsx)(B,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const _={icon:(0,a.jsx)(k,{}),title:(0,a.jsx)(c.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const E={...{note:v,tip:A,info:w,warning:function(e){return(0,a.jsx)(x,{...L,...e,className:(0,i.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,a.jsx)(x,{...T,...e,className:(0,i.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,a.jsx)(v,{title:"secondary",...e}),important:e=>(0,a.jsx)(w,{title:"important",...e}),success:e=>(0,a.jsx)(A,{title:"success",...e}),caution:function(e){return(0,a.jsx)(x,{..._,...e,className:(0,i.A)("alert alert--warning",e.className),children:e.children})}}};function H(e){const n=r(e),t=(s=n.type,E[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),E.info));var s;return(0,a.jsx)(t,{...n})}},7763:(e,n,t)=>{"use strict";t.d(n,{A:()=>l});t(6540);var s=t(4164),a=t(5195);const r={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var i=t(4848);const c="table-of-contents__link toc-highlight",o="table-of-contents__link--active";function l({className:e,...n}){return(0,i.jsx)("div",{className:(0,s.A)(r.tableOfContents,"thin-scrollbar",e),children:(0,i.jsx)(a.A,{...n,linkClassName:c,linkActiveClassName:o})})}},8426:(e,n)=>{function t(e){let n,t=[];for(let s of e.split(",").map(e=>e.trim()))if(/^-?\d+$/.test(s))t.push(parseInt(s,10));else if(n=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,r]=n;if(s&&r){s=parseInt(s),r=parseInt(r);const e=s<r?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(r+=e);for(let n=s;n!==r;n+=e)t.push(n)}}return t}n.default=t,e.exports=t}}]); \ No newline at end of file diff --git a/user/assets/js/8565.8f05675d.js b/user/assets/js/8565.8f05675d.js new file mode 100644 index 0000000..a858ea0 --- /dev/null +++ b/user/assets/js/8565.8f05675d.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8565],{8565:(t,e,n)=>{n.d(e,{diagram:()=>D});var i=n(9625),s=n(1152),r=n(45),o=(n(5164),n(8698),n(5894),n(3245),n(2387),n(92),n(3226),n(7633)),a=n(797);const c={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let h;const l=new Uint8Array(16);const d=[];for(let L=0;L<256;++L)d.push((L+256).toString(16).slice(1));function g(t,e=0){return(d[t[e+0]]+d[t[e+1]]+d[t[e+2]]+d[t[e+3]]+"-"+d[t[e+4]]+d[t[e+5]]+"-"+d[t[e+6]]+d[t[e+7]]+"-"+d[t[e+8]]+d[t[e+9]]+"-"+d[t[e+10]]+d[t[e+11]]+d[t[e+12]]+d[t[e+13]]+d[t[e+14]]+d[t[e+15]]).toLowerCase()}const u=function(t,e,n){if(c.randomUUID&&!e&&!t)return c.randomUUID();const i=(t=t||{}).random??t.rng?.()??function(){if(!h){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");h=crypto.getRandomValues.bind(crypto)}return h(l)}();if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[n+t]=i[t];return e}return g(i)};var p=n(3219),y=n(8041),m=n(5263),f=function(){var t=(0,a.K2)(function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],c=[1,19],h=[6,7,8],l=[1,26],d=[1,24],g=[1,25],u=[6,7,11],p=[1,6,13,15,16,19,22],y=[1,33],m=[1,34],f=[1,6,7,11,13,15,16,19,22],_={trace:(0,a.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:(0,a.K2)(function(t,e,n,i,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",r[a].id),i.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 16:i.getLogger().trace("Icon: ",r[a]),i.decorateNode({icon:r[a]});break;case 17:case 21:i.decorateNode({class:r[a]});break;case 18:i.getLogger().trace("SPACELIST");break;case 19:i.getLogger().trace("Node: ",r[a].id),i.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 20:i.decorateNode({icon:r[a]});break;case 25:i.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 26:this.$={id:r[a],descr:r[a],type:i.nodeType.DEFAULT};break;case 27:i.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:i.getType(r[a-2],r[a])}}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},t(h,[2,3]),{1:[2,2]},t(h,[2,4]),t(h,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},{6:n,9:22,12:11,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},{6:l,7:d,10:23,11:g},t(u,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:o,22:c}),t(u,[2,18]),t(u,[2,19]),t(u,[2,20]),t(u,[2,21]),t(u,[2,23]),t(u,[2,24]),t(u,[2,26],{19:[1,30]}),{20:[1,31]},{6:l,7:d,10:32,11:g},{1:[2,7],6:n,12:21,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},t(p,[2,14],{7:y,11:m}),t(f,[2,8]),t(f,[2,9]),t(f,[2,10]),t(u,[2,15]),t(u,[2,16]),t(u,[2,17]),{20:[1,35]},{21:[1,36]},t(p,[2,13],{7:y,11:m}),t(f,[2,11]),t(f,[2,12]),{21:[1,37]},t(u,[2,25]),t(u,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,a.K2)(function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},"parseError"),parse:(0,a.K2)(function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,c="",h=0,l=0,d=0,g=r.slice.call(arguments,1),u=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);u.setInput(t,p.yy),p.yy.lexer=u,p.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var m=u.yylloc;r.push(m);var f=u.options&&u.options.ranges;function _(){var t;return"number"!=typeof(t=i.pop()||u.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)(function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,a.K2)(_,"lex");for(var b,E,S,N,k,D,L,I,T,x={};;){if(S=n[n.length-1],this.defaultActions[S]?N=this.defaultActions[S]:(null==b&&(b=_()),N=o[S]&&o[S][b]),void 0===N||!N.length||!N[0]){var v="";for(D in T=[],o[S])this.terminals_[D]&&D>2&&T.push("'"+this.terminals_[D]+"'");v=u.showPosition?"Parse error on line "+(h+1)+":\n"+u.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(v,{text:u.match,token:this.terminals_[b]||b,line:u.yylineno,loc:m,expected:T})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+b);switch(N[0]){case 1:n.push(b),s.push(u.yytext),r.push(u.yylloc),n.push(N[1]),b=null,E?(b=E,E=null):(l=u.yyleng,c=u.yytext,h=u.yylineno,m=u.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[N[1]][1],x.$=s[s.length-L],x._$={first_line:r[r.length-(L||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(L||1)].first_column,last_column:r[r.length-1].last_column},f&&(x._$.range=[r[r.length-(L||1)].range[0],r[r.length-1].range[1]]),void 0!==(k=this.performAction.apply(x,[c,l,h,p.yy,N[1],s,r].concat(g))))return k;L&&(n=n.slice(0,-1*L*2),s=s.slice(0,-1*L),r=r.slice(0,-1*L)),n.push(this.productions_[N[1]][0]),s.push(x.$),r.push(x._$),I=o[n[n.length-2]][n[n.length-1]],n.push(I);break;case 3:return!0}}return!0},"parse")},b=function(){return{EOF:1,parseError:(0,a.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,a.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,a.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,a.K2)(function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,a.K2)(function(){return this._more=!0,this},"more"),reject:(0,a.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,a.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,a.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,a.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,a.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,a.K2)(function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1},"test_match"),next:(0,a.K2)(function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;r<s.length;r++)if((n=this._input.match(this.rules[s[r]]))&&(!e||n[0].length>e[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,a.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,a.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,a.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,a.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,a.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,a.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,a.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)(function(t,e,n,i){switch(n){case 0:return t.getLogger().trace("Found comment",e.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:case 23:case 26:this.popState();break;case 5:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return t.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:t.getLogger().trace("end icon"),this.popState();break;case 10:return t.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return t.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:case 15:case 16:case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 24:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 27:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 30:case 33:case 34:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 31:case 32:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 35:case 36:return t.getLogger().trace("Long description:",e.yytext),20}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}}}();function E(){this.yy={}}return _.lexer=b,(0,a.K2)(E,"Parser"),E.prototype=_,_.Parser=E,new E}();f.parser=f;var _=f,b={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},E=class{constructor(){this.nodes=[],this.count=0,this.elements={},this.getLogger=this.getLogger.bind(this),this.nodeType=b,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{(0,a.K2)(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let e=this.nodes.length-1;e>=0;e--)if(this.nodes[e].level<t)return this.nodes[e];return null}getMindmap(){return this.nodes.length>0?this.nodes[0]:null}addNode(t,e,n,i){a.Rm.info("addNode",t,e,n,i);let s=!1;0===this.nodes.length?(this.baseLevel=t,t=0,s=!0):void 0!==this.baseLevel&&(t-=this.baseLevel,s=!1);const r=(0,o.D7)();let c=r.mindmap?.padding??o.UI.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:c*=2}const h={id:this.count++,nodeId:(0,o.jZ)(e,r),level:t,descr:(0,o.jZ)(n,r),type:i,children:[],width:r.mindmap?.maxNodeWidth??o.UI.mindmap.maxNodeWidth,padding:c,isRoot:s},l=this.getParent(t);if(l)l.children.push(h),this.nodes.push(h);else{if(!s)throw new Error(`There can be only one root. No parent could be found for ("${h.descr}")`);this.nodes.push(h)}}getType(t,e){switch(a.Rm.debug("In get type",t,e),t){case"[":return this.nodeType.RECT;case"(":return")"===e?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,e){this.elements[t]=e}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;const e=(0,o.D7)(),n=this.nodes[this.nodes.length-1];t.icon&&(n.icon=(0,o.jZ)(t.icon,e)),t.class&&(n.class=(0,o.jZ)(t.class,e))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,e){if(0===t.level?t.section=void 0:t.section=e,t.children)for(const[n,i]of t.children.entries()){const s=0===t.level?n:e;this.assignSections(i,s)}}flattenNodes(t,e){const n=["mindmap-node"];!0===t.isRoot?n.push("section-root","section--1"):void 0!==t.section&&n.push(`section-${t.section}`),t.class&&n.push(t.class);const i=n.join(" "),s=(0,a.K2)(t=>{switch(t){case b.CIRCLE:return"mindmapCircle";case b.RECT:return"rect";case b.ROUNDED_RECT:return"rounded";case b.CLOUD:return"cloud";case b.BANG:return"bang";case b.HEXAGON:return"hexagon";case b.DEFAULT:return"defaultMindmapNode";default:return"rect"}},"getShapeFromType"),r={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,isGroup:!1,shape:s(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:i,cssStyles:[],look:"default",icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(e.push(r),t.children)for(const o of t.children)this.flattenNodes(o,e)}generateEdges(t,e){if(t.children)for(const n of t.children){let i="edge";void 0!==n.section&&(i+=` section-edge-${n.section}`);i+=` edge-depth-${t.level+1}`;const s={id:`edge_${t.id}_${n.id}`,start:t.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:i,depth:t.level,section:n.section};e.push(s),this.generateEdges(n,e)}}getData(){const t=this.getMindmap(),e=(0,o.D7)(),n=e;if(void 0!==(0,o.TM)().layout||(n.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:n};a.Rm.debug("getData: mindmapRoot",t,e),this.assignSections(t);const i=[],s=[];this.flattenNodes(t,i),this.generateEdges(t,s),a.Rm.debug(`getData: processed ${i.length} nodes and ${s.length} edges`);const r=new Map;for(const o of i)r.set(o.id,{shape:o.shape,width:o.width,height:o.height,padding:o.padding});return{nodes:i,edges:s,config:n,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(r),type:"mindmap",diagramId:"mindmap-"+u()}}getLogger(){return a.Rm}},S={draw:(0,a.K2)(async(t,e,n,c)=>{a.Rm.debug("Rendering mindmap diagram\n"+t);const h=c.db,l=h.getData(),d=(0,i.A)(e,l.config.securityLevel);l.type=c.type,l.layoutAlgorithm=(0,r.q7)(l.config.layout,{fallback:"cose-bilkent"}),l.diagramId=e;h.getMindmap()&&(l.nodes.forEach(t=>{"rounded"===t.shape?(t.radius=15,t.taper=15,t.stroke="none",t.width=0,t.padding=15):"circle"===t.shape?t.padding=10:"rect"===t.shape&&(t.width=0,t.padding=10)}),await(0,r.XX)(l,d),(0,s.P)(d,l.config.mindmap?.padding??o.UI.mindmap.padding,"mindmapDiagram",l.config.mindmap?.useMaxWidth??o.UI.mindmap.useMaxWidth))},"draw")},N=(0,a.K2)(t=>{let e="";for(let n=0;n<t.THEME_COLOR_LIMIT;n++)t["lineColor"+n]=t["lineColor"+n]||t["cScaleInv"+n],(0,p.A)(t["lineColor"+n])?t["lineColor"+n]=(0,y.A)(t["lineColor"+n],20):t["lineColor"+n]=(0,m.A)(t["lineColor"+n],20);for(let n=0;n<t.THEME_COLOR_LIMIT;n++){const i=""+(17-3*n);e+=`\n .section-${n-1} rect, .section-${n-1} path, .section-${n-1} circle, .section-${n-1} polygon, .section-${n-1} path {\n fill: ${t["cScale"+n]};\n }\n .section-${n-1} text {\n fill: ${t["cScaleLabel"+n]};\n }\n .node-icon-${n-1} {\n font-size: 40px;\n color: ${t["cScaleLabel"+n]};\n }\n .section-edge-${n-1}{\n stroke: ${t["cScale"+n]};\n }\n .edge-depth-${n-1}{\n stroke-width: ${i};\n }\n .section-${n-1} line {\n stroke: ${t["cScaleInv"+n]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `}return e},"genSections"),k=(0,a.K2)(t=>`\n .edge {\n stroke-width: 3;\n }\n ${N(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .section-root span {\n color: ${t.gitBranchLabel0};\n }\n .section-2 span {\n color: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`,"getStyles"),D={get db(){return new E},renderer:S,parser:_,styles:k}}}]); \ No newline at end of file diff --git a/user/assets/js/8577.f6652b3e.js b/user/assets/js/8577.f6652b3e.js new file mode 100644 index 0000000..ba282ea --- /dev/null +++ b/user/assets/js/8577.f6652b3e.js @@ -0,0 +1 @@ +(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8577],{549:(s,c,l)=>{"use strict";l.d(c,{A:()=>a});var u=l(8291);const a=u},5741:()=>{}}]); \ No newline at end of file diff --git a/user/assets/js/8591.534ea4e8.js b/user/assets/js/8591.534ea4e8.js new file mode 100644 index 0000000..925d9da --- /dev/null +++ b/user/assets/js/8591.534ea4e8.js @@ -0,0 +1,2 @@ +/*! For license information please see 8591.534ea4e8.js.LICENSE.txt */ +(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8591],{392:(e,t,n)=>{"use strict";var i=n(6220),r=n(1622),s=n(6766);e.exports=function(e,t,n,o){var a=s(e.as._ua);if(a&&a[0]>=3&&a[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(e){return e[n.source]};if(!n.index)return i.error("Missing 'index' key");var l=n.index;return o=o||{},function(a,c){e.search(a,t,function(e,a){if(e)i.error(e.message);else{if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var d=s(l.as._ua);return d&&d[0]>=3&&d[1]>20&&(t.additionalUA="autocomplete.js "+r),void l.search(u(h),p,function(e,t){if(e)i.error(e.message);else{var n=[];if(o.includeAll){var r=o.allTitle||"All departments";n.push(i.mixin({facet:{value:r,count:t.nbHits}},i.cloneDeep(h)))}i.each(t.facets,function(e,t){i.each(e,function(e,r){n.push(i.mixin({facet:{facet:t,value:r,count:e}},i.cloneDeep(h)))})});for(var s=1;s<a.hits.length;++s)n.push(a.hits[s]);c(n,a)}})}c([])}})}}},819:(e,t,n)=>{"use strict";var i=n(6220),r={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(r.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&i.isMsie()<=7&&i.mixin(r.input,{marginTop:"-1px"}),e.exports=r},874:(e,t,n)=>{"use strict";var i,r,s,o=[n(5741),n(1856),n(1015),n(6486),n(5723),n(6345)],a=-1,u=[],l=!1;function c(){i&&r&&(i=!1,r.length?u=r.concat(u):a=-1,u.length&&h())}function h(){if(!i){l=!1,i=!0;for(var e=u.length,t=setTimeout(c);e;){for(r=u,u=[];r&&++a<e;)r[a].run();a=-1,e=u.length}r=null,a=-1,i=!1,clearTimeout(t)}}for(var p=-1,d=o.length;++p<d;)if(o[p]&&o[p].test&&o[p].test()){s=o[p].install(h);break}function f(e,t){this.fun=e,this.array=t}f.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},e.exports=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new f(e,t)),l||i||(l=!0,s())}},1015:(e,t)=>{"use strict";var n=globalThis.MutationObserver||globalThis.WebKitMutationObserver;t.test=function(){return n},t.install=function(e){var t=0,i=new n(e),r=globalThis.document.createTextNode("");return i.observe(r,{characterData:!0}),function(){r.data=t=++t%2}}},1242:(e,t,n)=>{"use strict";var i=n(6220),r=n(1622),s=n(6766);e.exports=function(e,t){var n=s(e.as._ua);return n&&n[0]>=3&&n[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),function(n,r){e.search(n,t,function(e,t){e?i.error(e.message):r(t.hits,t)})}}},1337:e=>{"use strict";e.exports={element:null}},1622:e=>{e.exports="0.37.1"},1805:(e,t,n)=>{"use strict";var i=n(874),r=/\s+/;function s(e,t,n,i){var s;if(!n)return this;for(t=t.split(r),n=i?function(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}(n,i):n,this._callbacks=this._callbacks||{};s=t.shift();)this._callbacks[s]=this._callbacks[s]||{sync:[],async:[]},this._callbacks[s][e].push(n);return this}function o(e,t,n){return function(){for(var i,r=0,s=e.length;!i&&r<s;r+=1)i=!1===e[r].apply(t,n);return!i}}e.exports={onSync:function(e,t,n){return s.call(this,"sync",e,t,n)},onAsync:function(e,t,n){return s.call(this,"async",e,t,n)},off:function(e){var t;if(!this._callbacks)return this;e=e.split(r);for(;t=e.shift();)delete this._callbacks[t];return this},trigger:function(e){var t,n,s,a,u;if(!this._callbacks)return this;e=e.split(r),s=[].slice.call(arguments,1);for(;(t=e.shift())&&(n=this._callbacks[t]);)a=o(n.sync,this,[t].concat(s)),u=o(n.async,this,[t].concat(s)),a()&&i(u);return this}}},1856:(e,t)=>{"use strict";t.test=function(){return"function"==typeof globalThis.queueMicrotask},t.install=function(e){return function(){globalThis.queueMicrotask(e)}}},2731:(e,t,n)=>{"use strict";var i=n(6220),r=n(1337),s=n(1805),o=n(9324),a=n(819);function u(e){var t,n,s,o=this;(e=e||{}).menu||i.error("menu is required"),i.isArray(e.datasets)||i.isObject(e.datasets)||i.error("1 or more datasets required"),e.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=e.minLength||0,this.templates={},this.appendTo=e.appendTo||!1,this.css=i.mixin({},a,e.appendTo?a.appendTo:{}),this.cssClasses=e.cssClasses=i.mixin({},a.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),t=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),s=i.bind(this._onSuggestionMouseLeave,this);var l=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=r.element(e.menu).on("mouseenter.aa",l,n).on("mouseleave.aa",l,s).on("click.aa",l,t),this.$container=e.appendTo?e.wrapper:this.$menu,e.templates&&e.templates.header&&(this.templates.header=i.templatify(e.templates.header),this.$menu.prepend(this.templates.header())),e.templates&&e.templates.empty&&(this.templates.empty=i.templatify(e.templates.empty),this.$empty=r.element('<div class="'+i.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(e.datasets,function(t){return function(e,t,n){return new u.Dataset(i.mixin({$menu:e,cssClasses:n},t))}(o.$menu,t,e.cssClasses)}),i.each(this.datasets,function(e){var t=e.getRoot();t&&0===t.parent().length&&o.$menu.append(t),e.onSync("rendered",o._onRendered,o)}),e.templates&&e.templates.footer&&(this.templates.footer=i.templatify(e.templates.footer),this.$menu.append(this.templates.footer()));var c=this;r.element(window).resize(function(){c._redraw()})}i.mixin(u.prototype,s,{_onSuggestionClick:function(e){this.trigger("suggestionClicked",r.element(e.currentTarget))},_onSuggestionMouseEnter:function(e){var t=r.element(e.currentTarget);if(!t.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout(function(){n._setCursor(t,!1)},0)}},_onSuggestionMouseLeave:function(e){if(e.relatedTarget&&r.element(e.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(e,t){if(this.isEmpty=i.every(this.datasets,function(e){return e.isEmpty()}),this.isEmpty)if(t.length>=this.minLength&&this.trigger("empty"),this.$empty)if(t.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else i.any(this.datasets,function(e){return e.templates&&e.templates.empty})?t.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),t.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(e,t){e.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",t)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(e){var t,n,i,r;this.isOpen&&(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),-1!==(i=((i=t.index(n)+e)+1)%(t.length+1)-1)?(i<-1&&(i=t.length-1),this._setCursor(r=t.eq(i),!0),this._ensureVisible(r)):this.trigger("cursorRemoved"))},_ensureVisible:function(e){var t,n,i,r;n=(t=e.position().top)+e.height()+parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),i=this.$menu.scrollTop(),r=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),t<0?this.$menu.scrollTop(i+t):r<n&&this.$menu.scrollTop(i+(n-r))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:o.extractDatum(e),value:o.extractValue(e),datasetName:o.extractDatasetName(e)}),t},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(e){i.each(this.datasets,function(t){t.update(e)})},empty:function(){i.each(this.datasets,function(e){e.clear()}),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,i.each(this.datasets,function(e){e.destroy()})}}),u.Dataset=o,e.exports=u},3704:e=>{var t;t=window,e.exports=function(e){var t,n,i=function(){var t,n,i,r,s,o,a=[],u=a.concat,l=a.filter,c=a.slice,h=e.document,p={},d={},f={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,v=/^(?:body|html)$/i,x=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],w=["after","prepend","before","append"],S=h.createElement("table"),C=h.createElement("tr"),E={tr:h.createElement("tbody"),tbody:S,thead:S,tfoot:S,td:C,th:C,"*":h.createElement("div")},k=/complete|loaded|interactive/,_=/^[\w-]*$/,T={},L=T.toString,O={},A=h.createElement("div"),$={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},P=Array.isArray||function(e){return e instanceof Array};function I(e){return null==e?String(e):T[L.call(e)]||"object"}function Q(e){return"function"==I(e)}function R(e){return null!=e&&e==e.window}function N(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function D(e){return"object"==I(e)}function F(e){return D(e)&&!R(e)&&Object.getPrototypeOf(e)==Object.prototype}function j(e){var t=!!e&&"length"in e&&e.length,n=i.type(e);return"function"!=n&&!R(e)&&("array"==n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function H(e){return l.call(e,function(e){return null!=e})}function V(e){return e.length>0?i.fn.concat.apply([],e):e}function B(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function M(e){return e in d?d[e]:d[e]=new RegExp("(^|\\s)"+e+"(\\s|$)")}function q(e,t){return"number"!=typeof t||f[B(e)]?t:t+"px"}function z(e){var t,n;return p[e]||(t=h.createElement(e),h.body.appendChild(t),n=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==n&&(n="block"),p[e]=n),p[e]}function K(e){return"children"in e?c.call(e.children):i.map(e.childNodes,function(e){if(1==e.nodeType)return e})}function W(e,t){var n,i=e?e.length:0;for(n=0;n<i;n++)this[n]=e[n];this.length=i,this.selector=t||""}function U(e,i,r){for(n in i)r&&(F(i[n])||P(i[n]))?(F(i[n])&&!F(e[n])&&(e[n]={}),P(i[n])&&!P(e[n])&&(e[n]=[]),U(e[n],i[n],r)):i[n]!==t&&(e[n]=i[n])}function G(e,t){return null==t?i(e):i(e).filter(t)}function Z(e,t,n,i){return Q(t)?t.call(e,n,i):t}function J(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function X(e,n){var i=e.className||"",r=i&&i.baseVal!==t;if(n===t)return r?i.baseVal:i;r?i.baseVal=n:e.className=n}function Y(e){try{return e?"true"==e||"false"!=e&&("null"==e?null:+e+""==e?+e:/^[\[\{]/.test(e)?i.parseJSON(e):e):e}catch(t){return e}}function ee(e,t){t(e);for(var n=0,i=e.childNodes.length;n<i;n++)ee(e.childNodes[n],t)}return O.matches=function(e,t){if(!t||!e||1!==e.nodeType)return!1;var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.matchesSelector;if(n)return n.call(e,t);var i,r=e.parentNode,s=!r;return s&&(r=A).appendChild(e),i=~O.qsa(r,t).indexOf(e),s&&A.removeChild(e),i},s=function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},o=function(e){return l.call(e,function(t,n){return e.indexOf(t)==n})},O.fragment=function(e,n,r){var s,o,a;return m.test(e)&&(s=i(h.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(y,"<$1></$2>")),n===t&&(n=g.test(e)&&RegExp.$1),n in E||(n="*"),(a=E[n]).innerHTML=""+e,s=i.each(c.call(a.childNodes),function(){a.removeChild(this)})),F(r)&&(o=i(s),i.each(r,function(e,t){b.indexOf(e)>-1?o[e](t):o.attr(e,t)})),s},O.Z=function(e,t){return new W(e,t)},O.isZ=function(e){return e instanceof O.Z},O.init=function(e,n){var r;if(!e)return O.Z();if("string"==typeof e)if("<"==(e=e.trim())[0]&&g.test(e))r=O.fragment(e,RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=O.qsa(h,e)}else{if(Q(e))return i(h).ready(e);if(O.isZ(e))return e;if(P(e))r=H(e);else if(D(e))r=[e],e=null;else if(g.test(e))r=O.fragment(e.trim(),RegExp.$1,n),e=null;else{if(n!==t)return i(n).find(e);r=O.qsa(h,e)}}return O.Z(r,e)},(i=function(e,t){return O.init(e,t)}).extend=function(e){var t,n=c.call(arguments,1);return"boolean"==typeof e&&(t=e,e=n.shift()),n.forEach(function(n){U(e,n,t)}),e},O.qsa=function(e,t){var n,i="#"==t[0],r=!i&&"."==t[0],s=i||r?t.slice(1):t,o=_.test(s);return e.getElementById&&o&&i?(n=e.getElementById(s))?[n]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:c.call(o&&!i&&e.getElementsByClassName?r?e.getElementsByClassName(s):e.getElementsByTagName(t):e.querySelectorAll(t))},i.contains=h.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},i.type=I,i.isFunction=Q,i.isWindow=R,i.isArray=P,i.isPlainObject=F,i.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},i.isNumeric=function(e){var t=Number(e),n=typeof e;return null!=e&&"boolean"!=n&&("string"!=n||e.length)&&!isNaN(t)&&isFinite(t)||!1},i.inArray=function(e,t,n){return a.indexOf.call(t,e,n)},i.camelCase=s,i.trim=function(e){return null==e?"":String.prototype.trim.call(e)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(e,t){var n,i,r,s=[];if(j(e))for(i=0;i<e.length;i++)null!=(n=t(e[i],i))&&s.push(n);else for(r in e)null!=(n=t(e[r],r))&&s.push(n);return V(s)},i.each=function(e,t){var n,i;if(j(e)){for(n=0;n<e.length;n++)if(!1===t.call(e[n],n,e[n]))return e}else for(i in e)if(!1===t.call(e[i],i,e[i]))return e;return e},i.grep=function(e,t){return l.call(e,t)},e.JSON&&(i.parseJSON=JSON.parse),i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){T["[object "+t+"]"]=t.toLowerCase()}),i.fn={constructor:O.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var e,t,n=[];for(e=0;e<arguments.length;e++)t=arguments[e],n[e]=O.isZ(t)?t.toArray():t;return u.apply(O.isZ(this)?this.toArray():this,n)},map:function(e){return i(i.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return i(c.apply(this,arguments))},ready:function(e){return k.test(h.readyState)&&h.body?e(i):h.addEventListener("DOMContentLoaded",function(){e(i)},!1),this},get:function(e){return e===t?c.call(this):this[e>=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(e){return a.every.call(this,function(t,n){return!1!==e.call(t,n,t)}),this},filter:function(e){return Q(e)?this.not(this.not(e)):i(l.call(this,function(t){return O.matches(t,e)}))},add:function(e,t){return i(o(this.concat(i(e,t))))},is:function(e){return this.length>0&&O.matches(this[0],e)},not:function(e){var n=[];if(Q(e)&&e.call!==t)this.each(function(t){e.call(this,t)||n.push(this)});else{var r="string"==typeof e?this.filter(e):j(e)&&Q(e.item)?c.call(e):i(e);this.forEach(function(e){r.indexOf(e)<0&&n.push(e)})}return i(n)},has:function(e){return this.filter(function(){return D(e)?i.contains(this,e):i(this).find(e).size()})},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!D(e)?e:i(e)},last:function(){var e=this[this.length-1];return e&&!D(e)?e:i(e)},find:function(e){var t=this;return e?"object"==typeof e?i(e).filter(function(){var e=this;return a.some.call(t,function(t){return i.contains(t,e)})}):1==this.length?i(O.qsa(this[0],e)):this.map(function(){return O.qsa(this,e)}):i()},closest:function(e,t){var n=[],r="object"==typeof e&&i(e);return this.each(function(i,s){for(;s&&!(r?r.indexOf(s)>=0:O.matches(s,e));)s=s!==t&&!N(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)}),i(n)},parents:function(e){for(var t=[],n=this;n.length>0;)n=i.map(n,function(e){if((e=e.parentNode)&&!N(e)&&t.indexOf(e)<0)return t.push(e),e});return G(t,e)},parent:function(e){return G(o(this.pluck("parentNode")),e)},children:function(e){return G(this.map(function(){return K(this)}),e)},contents:function(){return this.map(function(){return this.contentDocument||c.call(this.childNodes)})},siblings:function(e){return G(this.map(function(e,t){return l.call(K(t.parentNode),function(e){return e!==t})}),e)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(e){return i.map(this,function(t){return t[e]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=z(this.nodeName))})},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var t=Q(e);if(this[0]&&!t)var n=i(e).get(0),r=n.parentNode||this.length>1;return this.each(function(s){i(this).wrapAll(t?e.call(this,s):r?n.cloneNode(!0):n)})},wrapAll:function(e){if(this[0]){var t;for(i(this[0]).before(e=i(e));(t=e.children()).length;)e=t.first();i(e).append(this)}return this},wrapInner:function(e){var t=Q(e);return this.each(function(n){var r=i(this),s=r.contents(),o=t?e.call(this,n):e;s.length?s.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){i(this).replaceWith(i(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(e){return this.each(function(){var n=i(this);(e===t?"none"==n.css("display"):e)?n.show():n.hide()})},prev:function(e){return i(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return i(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each(function(t){var n=this.innerHTML;i(this).empty().append(Z(this,e,t,n))}):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each(function(t){var n=Z(this,e,t,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(e,i){var r;return"string"!=typeof e||1 in arguments?this.each(function(t){if(1===this.nodeType)if(D(e))for(n in e)J(this,n,e[n]);else J(this,e,Z(this,i,t,this.getAttribute(e)))}):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(e))?r:t},removeAttr:function(e){return this.each(function(){1===this.nodeType&&e.split(" ").forEach(function(e){J(this,e)},this)})},prop:function(e,t){return e=$[e]||e,1 in arguments?this.each(function(n){this[e]=Z(this,t,n,this[e])}):this[0]&&this[0][e]},removeProp:function(e){return e=$[e]||e,this.each(function(){delete this[e]})},data:function(e,n){var i="data-"+e.replace(x,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?Y(r):t},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each(function(t){this.value=Z(this,e,t,this.value)})):this[0]&&(this[0].multiple?i(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=i(this),r=Z(this,t,e,n.offset()),s=n.offsetParent().offset(),o={top:r.top-s.top,left:r.left-s.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+e.pageXOffset,top:n.top+e.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(e,t){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[s(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(P(e)){if(!r)return;var o={},a=getComputedStyle(r,"");return i.each(e,function(e,t){o[t]=r.style[s(t)]||a.getPropertyValue(t)}),o}}var u="";if("string"==I(e))t||0===t?u=B(e)+":"+q(e,t):this.each(function(){this.style.removeProperty(B(e))});else for(n in e)e[n]||0===e[n]?u+=B(n)+":"+q(n,e[n])+";":this.each(function(){this.style.removeProperty(B(n))});return this.each(function(){this.style.cssText+=";"+u})},index:function(e){return e?this.indexOf(i(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&a.some.call(this,function(e){return this.test(X(e))},M(e))},addClass:function(e){return e?this.each(function(t){if("className"in this){r=[];var n=X(this);Z(this,e,t,n).split(/\s+/g).forEach(function(e){i(this).hasClass(e)||r.push(e)},this),r.length&&X(this,n+(n?" ":"")+r.join(" "))}}):this},removeClass:function(e){return this.each(function(n){if("className"in this){if(e===t)return X(this,"");r=X(this),Z(this,e,n,r).split(/\s+/g).forEach(function(e){r=r.replace(M(e)," ")}),X(this,r.trim())}})},toggleClass:function(e,n){return e?this.each(function(r){var s=i(this);Z(this,e,r,X(this)).split(/\s+/g).forEach(function(e){(n===t?!s.hasClass(e):n)?s.addClass(e):s.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var e=this[0],t=this.offsetParent(),n=this.offset(),r=v.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(i(e).css("margin-top"))||0,n.left-=parseFloat(i(e).css("margin-left"))||0,r.top+=parseFloat(i(t[0]).css("border-top-width"))||0,r.left+=parseFloat(i(t[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||h.body;e&&!v.test(e.nodeName)&&"static"==i(e).css("position");)e=e.offsetParent;return e})}},i.fn.detach=i.fn.remove,["width","height"].forEach(function(e){var n=e.replace(/./,function(e){return e[0].toUpperCase()});i.fn[e]=function(r){var s,o=this[0];return r===t?R(o)?o["inner"+n]:N(o)?o.documentElement["scroll"+n]:(s=this.offset())&&s[e]:this.each(function(t){(o=i(this)).css(e,Z(this,r,t,o[e]()))})}}),w.forEach(function(n,r){var s=r%2;i.fn[n]=function(){var n,o,a=i.map(arguments,function(e){var r=[];return"array"==(n=I(e))?(e.forEach(function(e){return e.nodeType!==t?r.push(e):i.zepto.isZ(e)?r=r.concat(e.get()):void(r=r.concat(O.fragment(e)))}),r):"object"==n||null==e?e:O.fragment(e)}),u=this.length>1;return a.length<1?this:this.each(function(t,n){o=s?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var l=i.contains(h.documentElement,o);a.forEach(function(t){if(u)t=t.cloneNode(!0);else if(!o)return i(t).remove();o.insertBefore(t,n),l&&ee(t,function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var n=t.ownerDocument?t.ownerDocument.defaultView:e;n.eval.call(n,t.innerHTML)}})})})},i.fn[s?n+"To":"insert"+(r?"Before":"After")]=function(e){return i(e)[n](this),this}}),O.Z.prototype=W.prototype=i.fn,O.uniq=o,O.deserializeValue=Y,i.zepto=O,i}();return function(t){var n,i=1,r=Array.prototype.slice,s=t.isFunction,o=function(e){return"string"==typeof e},a={},u={},l="onfocusin"in e,c={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(e){return e._zid||(e._zid=i++)}function d(e,t,n,i){if((t=f(t)).ns)var r=g(t.ns);return(a[p(e)]||[]).filter(function(e){return e&&(!t.e||e.e==t.e)&&(!t.ns||r.test(e.ns))&&(!n||p(e.fn)===p(n))&&(!i||e.sel==i)})}function f(e){var t=(""+e).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function g(e){return new RegExp("(?:^| )"+e.replace(" "," .* ?")+"(?: |$)")}function m(e,t){return e.del&&!l&&e.e in c||!!t}function y(e){return h[e]||l&&c[e]||e}function v(e,i,r,s,o,u,l){var c=p(e),d=a[c]||(a[c]=[]);i.split(/\s/).forEach(function(i){if("ready"==i)return t(document).ready(r);var a=f(i);a.fn=r,a.sel=o,a.e in h&&(r=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var c=u||r;a.proxy=function(t){if(!(t=E(t)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(t,"data");i&&!i.writable||(t.data=s)}catch(t){}var r=c.apply(e,t._args==n?[t]:[t].concat(t._args));return!1===r&&(t.preventDefault(),t.stopPropagation()),r}},a.i=d.length,d.push(a),"addEventListener"in e&&e.addEventListener(y(a.e),a.proxy,m(a,l))})}function x(e,t,n,i,r){var s=p(e);(t||"").split(/\s/).forEach(function(t){d(e,t,n,i).forEach(function(t){delete a[s][t.i],"removeEventListener"in e&&e.removeEventListener(y(t.e),t.proxy,m(t,r))})})}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",t.event={add:v,remove:x},t.proxy=function(e,n){var i=2 in arguments&&r.call(arguments,2);if(s(e)){var a=function(){return e.apply(n,i?i.concat(r.call(arguments)):arguments)};return a._zid=p(e),a}if(o(n))return i?(i.unshift(e[n],e),t.proxy.apply(null,i)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(e,t,n){return this.on(e,t,n)},t.fn.unbind=function(e,t){return this.off(e,t)},t.fn.one=function(e,t,n,i){return this.on(e,t,n,i,1)};var b=function(){return!0},w=function(){return!1},S=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,C={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function E(e,i){if(i||!e.isDefaultPrevented){i||(i=e),t.each(C,function(t,n){var r=i[t];e[t]=function(){return this[n]=b,r&&r.apply(i,arguments)},e[n]=w});try{e.timeStamp||(e.timeStamp=Date.now())}catch(r){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=b)}return e}function k(e){var t,i={originalEvent:e};for(t in e)S.test(t)||e[t]===n||(i[t]=e[t]);return E(i,e)}t.fn.delegate=function(e,t,n){return this.on(t,e,n)},t.fn.undelegate=function(e,t,n){return this.off(t,e,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,i,a,u,l){var c,h,p=this;return e&&!o(e)?(t.each(e,function(e,t){p.on(e,i,a,t,l)}),p):(o(i)||s(u)||!1===u||(u=a,a=i,i=n),u!==n&&!1!==a||(u=a,a=n),!1===u&&(u=w),p.each(function(n,s){l&&(c=function(e){return x(s,e.type,u),u.apply(this,arguments)}),i&&(h=function(e){var n,o=t(e.target).closest(i,s).get(0);if(o&&o!==s)return n=t.extend(k(e),{currentTarget:o,liveFired:s}),(c||u).apply(o,[n].concat(r.call(arguments,1)))}),v(s,e,u,a,i,h||c)}))},t.fn.off=function(e,i,r){var a=this;return e&&!o(e)?(t.each(e,function(e,t){a.off(e,i,t)}),a):(o(i)||s(r)||!1===r||(r=i,i=n),!1===r&&(r=w),a.each(function(){x(this,e,r,i)}))},t.fn.trigger=function(e,n){return(e=o(e)||t.isPlainObject(e)?t.Event(e):E(e))._args=n,this.each(function(){e.type in c&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){(i=k(o(e)?t.Event(e):e))._args=n,i.target=a,t.each(d(a,e.type||e),function(e,t){if(r=t.proxy(i),i.isImmediatePropagationStopped())return!1})}),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(e,t){o(e)||(e=(t=e).type);var n=document.createEvent(u[e]||"Events"),i=!0;if(t)for(var r in t)"bubbles"==r?i=!!t[r]:n[r]=t[r];return n.initEvent(e,i,!0),E(n)}}(i),n=[],i.fn.remove=function(){return this.each(function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",t&&clearTimeout(t),t=setTimeout(function(){n=[]},6e4)),this.parentNode.removeChild(this))})},function(e){var t={},n=e.fn.data,i=e.camelCase,r=e.expando="Zepto"+ +new Date,s=[];function o(s,o){var u=s[r],l=u&&t[u];if(void 0===o)return l||a(s);if(l){if(o in l)return l[o];var c=i(o);if(c in l)return l[c]}return n.call(e(s),o)}function a(n,s,o){var a=n[r]||(n[r]=++e.uuid),l=t[a]||(t[a]=u(n));return void 0!==s&&(l[i(s)]=o),l}function u(t){var n={};return e.each(t.attributes||s,function(t,r){0==r.name.indexOf("data-")&&(n[i(r.name.replace("data-",""))]=e.zepto.deserializeValue(r.value))}),n}e.fn.data=function(t,n){return void 0===n?e.isPlainObject(t)?this.each(function(n,i){e.each(t,function(e,t){a(i,e,t)})}):0 in this?o(this[0],t):void 0:this.each(function(){a(this,t,n)})},e.data=function(t,n,i){return e(t).data(n,i)},e.hasData=function(n){var i=n[r],s=i&&t[i];return!!s&&!e.isEmptyObject(s)},e.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each(function(){var s=this[r],o=s&&t[s];o&&e.each(n||o,function(e){delete o[n?i(this):e]})})},["remove","empty"].forEach(function(t){var n=e.fn[t];e.fn[t]=function(){var e=this.find("*");return"remove"===t&&(e=e.add(this)),e.removeData(),n.call(this)}})}(i),i}(t)},4045:(e,t,n)=>{"use strict";var i=n(6220),r=n(1337);function s(e){e&&e.el||i.error("EventBus initialized without el"),this.$el=r.element(e.el)}i.mixin(s.prototype,{trigger:function(e,t,n,r){var s=i.Event("autocomplete:"+e);return this.$el.trigger(s,[t,n,r]),s}}),e.exports=s},4498:(e,t,n)=>{"use strict";e.exports=n(5275)},4499:e=>{"use strict";e.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},4710:(e,t,n)=>{"use strict";e.exports={hits:n(1242),popularIn:n(392)}},4714:(e,t,n)=>{var i=n(9110);i.Template=n(9549).Template,i.template=i.Template,e.exports=i},5275:(e,t,n)=>{"use strict";var i=n(3704);n(1337).element=i;var r=n(6220);r.isArray=i.isArray,r.isFunction=i.isFunction,r.isObject=i.isPlainObject,r.bind=i.proxy,r.each=function(e,t){i.each(e,function(e,n){return t(n,e)})},r.map=i.map,r.mixin=i.extend,r.Event=i.Event;var s="aaAutocomplete",o=n(8693),a=n(4045);function u(e,t,n,u){n=r.isArray(n)?n:[].slice.call(arguments,2);var l=i(e).each(function(e,r){var l=i(r),c=new a({el:l}),h=u||new o({input:l,eventBus:c,dropdownMenuContainer:t.dropdownMenuContainer,hint:void 0===t.hint||!!t.hint,minLength:t.minLength,autoselect:t.autoselect,autoselectOnBlur:t.autoselectOnBlur,tabAutocomplete:t.tabAutocomplete,openOnFocus:t.openOnFocus,templates:t.templates,debug:t.debug,clearOnSelected:t.clearOnSelected,cssClasses:t.cssClasses,datasets:n,keyboardShortcuts:t.keyboardShortcuts,appendTo:t.appendTo,autoWidth:t.autoWidth,ariaLabel:t.ariaLabel||r.getAttribute("aria-label")});l.data(s,h)});return l.autocomplete={},r.each(["open","close","getVal","setVal","destroy","getWrapper"],function(e){l.autocomplete[e]=function(){var t,n=arguments;return l.each(function(r,o){var a=i(o).data(s);t=a[e].apply(a,n)}),t}}),l}u.sources=o.sources,u.escapeHighlightedString=r.escapeHighlightedString;var l="autocomplete"in window,c=window.autocomplete;u.noConflict=function(){return l?window.autocomplete=c:delete window.autocomplete,u},e.exports=u},5723:(e,t)=>{"use strict";t.test=function(){return"document"in globalThis&&"onreadystatechange"in globalThis.document.createElement("script")},t.install=function(e){return function(){var t=globalThis.document.createElement("script");return t.onreadystatechange=function(){e(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},globalThis.document.documentElement.appendChild(t),e}}},5765:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var i=n(4714),r=n.n(i),s=n(549);s.A.tokenizer.separator=/[\s\-/]+/;const o=class{constructor(e,t,n="/",i){this.searchDocs=e,this.lunrIndex=s.A.Index.load(t),this.baseUrl=n,this.maxHits=i}getLunrResult(e){return this.lunrIndex.query(function(t){const n=s.A.tokenizer(e);t.term(n,{boost:10}),t.term(n,{wildcard:s.A.Query.wildcard.TRAILING})})}getHit(e,t,n){return{hierarchy:{lvl0:e.pageTitle||e.title,lvl1:0===e.type?null:e.title},url:e.url,version:e.version,_snippetResult:n?{content:{value:n,matchLevel:"full"}}:null,_highlightResult:{hierarchy:{lvl0:{value:0===e.type?t||e.title:e.pageTitle},lvl1:0===e.type?null:{value:t||e.title}}}}}getTitleHit(e,t,n){const i=t[0],r=t[0]+n;let s=e.title.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.title.substring(i,r)+"</span>"+e.title.substring(r,e.title.length);return this.getHit(e,s)}getKeywordHit(e,t,n){const i=t[0],r=t[0]+n;let s=e.title+"<br /><i>Keywords: "+e.keywords.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.keywords.substring(i,r)+"</span>"+e.keywords.substring(r,e.keywords.length)+"</i>";return this.getHit(e,s)}getContentHit(e,t){const n=t[0],i=t[0]+t[1];let r=n,s=i,o=!0,a=!0;for(let l=0;l<3;l++){const t=e.content.lastIndexOf(" ",r-2),n=e.content.lastIndexOf(".",r-2);if(n>0&&n>t){r=n+1,o=!1;break}if(t<0){r=0,o=!1;break}r=t+1}for(let l=0;l<10;l++){const t=e.content.indexOf(" ",s+1),n=e.content.indexOf(".",s+1);if(n>0&&n<t){s=n,a=!1;break}if(t<0){s=e.content.length,a=!1;break}s=t}let u=e.content.substring(r,n);return o&&(u="... "+u),u+='<span class="algolia-docsearch-suggestion--highlight">'+e.content.substring(n,i)+"</span>",u+=e.content.substring(i,s),a&&(u+=" ..."),this.getHit(e,null,u)}search(e){return new Promise((t,n)=>{const i=this.getLunrResult(e),r=[];i.length>this.maxHits&&(i.length=this.maxHits),this.titleHitsRes=[],this.contentHitsRes=[],i.forEach(t=>{const n=this.searchDocs[t.ref],{metadata:i}=t.matchData;for(let s in i)if(i[s].title){if(!this.titleHitsRes.includes(t.ref)){const o=i[s].title.position[0];r.push(this.getTitleHit(n,o,e.length)),this.titleHitsRes.push(t.ref)}}else if(i[s].content){const e=i[s].content.position[0];r.push(this.getContentHit(n,e))}else if(i[s].keywords){const o=i[s].keywords.position[0];r.push(this.getKeywordHit(n,o,e.length)),this.titleHitsRes.push(t.ref)}}),r.length>this.maxHits&&(r.length=this.maxHits),t(r)})}};var a=n(4498),u=n.n(a);const l="algolia-docsearch",c=`${l}-suggestion`,h={suggestion:`\n <a class="${c}\n {{#isCategoryHeader}}${c}__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}${c}__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="${c}--category-header">\n <span class="${c}--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="${c}--wrapper">\n <div class="${c}--subcategory-column">\n <span class="${c}--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="${c}--content">\n <div class="${c}--subcategory-inline">{{{subcategory}}}</div>\n <div class="${c}--title">{{{title}}}</div>\n {{#text}}<div class="${c}--text">{{{text}}}</div>{{/text}}\n {{#version}}<div class="${c}--version">{{version}}</div>{{/version}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n `,suggestionSimple:`\n <div class="${c}\n {{#isCategoryHeader}}${c}__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}${c}__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="${c}--category-header">\n {{^isLvl0}}\n <span class="${c}--category-header-lvl0 ${c}--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="${c}--category-header-lvl1 ${c}--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="${c}--title ${c}--category-header-item">\n {{#isLvl2}}\n {{{title}}}\n {{/isLvl2}}\n {{#isLvl1}}\n {{{subcategory}}}\n {{/isLvl1}}\n {{#isLvl0}}\n {{{category}}}\n {{/isLvl0}}\n </div>\n </div>\n <div class="${c}--wrapper">\n {{#text}}\n <div class="${c}--content">\n <div class="${c}--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n `,footer:`\n <div class="${`${l}-footer`}">\n </div>\n `,empty:`\n <div class="${c}">\n <div class="${c}--wrapper">\n <div class="${c}--content ${c}--no-results">\n <div class="${c}--title">\n <div class="${c}--text">\n No results found for query <b>"{{query}}"</b>\n </div>\n </div>\n </div>\n </div>\n </div>\n `,searchBox:'\n <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n <div role="search" class="searchbox__wrapper">\n <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n <button type="submit" title="Submit your search query." class="searchbox__submit" >\n <svg width=12 height=12 role="img" aria-label="Search">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n </svg>\n </button>\n <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n <svg width=12 height=12 role="img" aria-label="Reset">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n </svg>\n </button>\n </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n <svg xmlns="http://www.w3.org/2000/svg">\n <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n </svg>\n</div>\n '};var p=n(3704),d=n.n(p);const f={mergeKeyWithParent(e,t){if(void 0===e[t])return e;if("object"!=typeof e[t])return e;const n=d().extend({},e,e[t]);return delete n[t],n},groupBy(e,t){const n={};return d().each(e,(e,i)=>{if(void 0===i[t])throw new Error(`[groupBy]: Object has no key ${t}`);let r=i[t];"string"==typeof r&&(r=r.toLowerCase()),Object.prototype.hasOwnProperty.call(n,r)||(n[r]=[]),n[r].push(i)}),n},values:e=>Object.keys(e).map(t=>e[t]),flatten(e){const t=[];return e.forEach(e=>{Array.isArray(e)?e.forEach(e=>{t.push(e)}):t.push(e)}),t},flattenAndFlagFirst(e,t){const n=this.values(e).map(e=>e.map((e,n)=>(e[t]=0===n,e)));return this.flatten(n)},compact(e){const t=[];return e.forEach(e=>{e&&t.push(e)}),t},getHighlightedValue:(e,t)=>e._highlightResult&&e._highlightResult.hierarchy_camel&&e._highlightResult.hierarchy_camel[t]&&e._highlightResult.hierarchy_camel[t].matchLevel&&"none"!==e._highlightResult.hierarchy_camel[t].matchLevel&&e._highlightResult.hierarchy_camel[t].value?e._highlightResult.hierarchy_camel[t].value:e._highlightResult&&e._highlightResult&&e._highlightResult[t]&&e._highlightResult[t].value?e._highlightResult[t].value:e[t],getSnippetedValue(e,t){if(!e._snippetResult||!e._snippetResult[t]||!e._snippetResult[t].value)return e[t];let n=e._snippetResult[t].value;return n[0]!==n[0].toUpperCase()&&(n=`\u2026${n}`),-1===[".","!","?"].indexOf(n[n.length-1])&&(n=`${n}\u2026`),n},deepClone:e=>JSON.parse(JSON.stringify(e))};class g{constructor({searchDocs:e,searchIndex:t,inputSelector:n,debug:i=!1,baseUrl:r="/",queryDataCallback:s=null,autocompleteOptions:a={debug:!1,hint:!1,autoselect:!0},transformData:l=!1,queryHook:c=!1,handleSelected:p=!1,enhancedSearchInput:f=!1,layout:m="column",maxHits:y=5}){this.input=g.getInputFromSelector(n),this.queryDataCallback=s||null;const v=!(!a||!a.debug)&&a.debug;a.debug=i||v,this.autocompleteOptions=a,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";const x=this.input&&"function"==typeof this.input.attr&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||x||"search input",this.isSimpleLayout="simple"===m,this.client=new o(e,t,r,y),f&&(this.input=g.injectSearchBox(this.input)),this.autocomplete=u()(this.input,a,[{source:this.getAutocompleteSource(l,c),templates:{suggestion:g.getSuggestionTemplate(this.isSimpleLayout),footer:h.footer,empty:g.getEmptyTemplate()}}]);const b=p;this.handleSelected=b||this.handleSelected,b&&d()(".algolia-autocomplete").on("click",".ds-suggestions a",e=>{e.preventDefault()}),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),f&&g.bindSearchBoxEvent(),document.addEventListener("keydown",e=>{(e.ctrlKey||e.metaKey)&&"k"==e.key&&(this.input.focus(),e.preventDefault())})}static injectSearchBox(e){e.before(h.searchBox);const t=e.prev().prev().find("input");return e.remove(),t}static bindSearchBoxEvent(){d()('.searchbox [type="reset"]').on("click",function(){d()("input#docsearch").focus(),d()(this).addClass("hide"),u().autocomplete.setVal("")}),d()("input#docsearch").on("keyup",()=>{const e=document.querySelector("input#docsearch"),t=document.querySelector('.searchbox [type="reset"]');t.className="searchbox__reset",0===e.value.length&&(t.className+=" hide")})}static getInputFromSelector(e){const t=d()(e).filter("input");return t.length?d()(t[0]):null}getAutocompleteSource(e,t){return(n,i)=>{t&&(n=t(n)||n),this.client.search(n).then(t=>{this.queryDataCallback&&"function"==typeof this.queryDataCallback&&this.queryDataCallback(t),e&&(t=e(t)||t),i(g.formatHits(t))})}}static formatHits(e){const t=f.deepClone(e).map(e=>(e._highlightResult&&(e._highlightResult=f.mergeKeyWithParent(e._highlightResult,"hierarchy")),f.mergeKeyWithParent(e,"hierarchy")));let n=f.groupBy(t,"lvl0");return d().each(n,(e,t)=>{const i=f.groupBy(t,"lvl1"),r=f.flattenAndFlagFirst(i,"isSubCategoryHeader");n[e]=r}),n=f.flattenAndFlagFirst(n,"isCategoryHeader"),n.map(e=>{const t=g.formatURL(e),n=f.getHighlightedValue(e,"lvl0"),i=f.getHighlightedValue(e,"lvl1")||n,r=f.compact([f.getHighlightedValue(e,"lvl2")||i,f.getHighlightedValue(e,"lvl3"),f.getHighlightedValue(e,"lvl4"),f.getHighlightedValue(e,"lvl5"),f.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> \u203a </span>'),s=f.getSnippetedValue(e,"content"),o=i&&""!==i||r&&""!==r,a=!i||""===i||i===n,u=r&&""!==r&&r!==i,l=!u&&i&&""!==i&&i!==n,c=!l&&!u,h=e.version;return{isLvl0:c,isLvl1:l,isLvl2:u,isLvl1EmptyOrDuplicate:a,isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:o,category:n,subcategory:i,title:r,text:s,url:t,version:h}})}static formatURL(e){const{url:t,anchor:n}=e;if(t){return-1!==t.indexOf("#")?t:n?`${e.url}#${e.anchor}`:t}return n?`#${e.anchor}`:(console.warn("no anchor nor url for : ",JSON.stringify(e)),null)}static getEmptyTemplate(){return e=>r().compile(h.empty).render(e)}static getSuggestionTemplate(e){const t=e?h.suggestionSimple:h.suggestion,n=r().compile(t);return e=>n.render(e)}handleSelected(e,t,n,i,r={}){"click"!==r.selectionMethod&&(e.setVal(""),window.location.assign(n.url))}handleShown(e){const t=e.offset().left+e.width()/2;let n=d()(document).width()/2;isNaN(n)&&(n=900);const i=t-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",r=t-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",s=d()(".algolia-autocomplete");s.hasClass(i)||s.addClass(i),s.hasClass(r)&&s.removeClass(r)}}const m=g},6220:(e,t,n)=>{"use strict";var i,r=n(1337);function s(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}e.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(e){if(void 0===e&&(e=navigator.userAgent),/(msie|trident)/i.test(e)){var t=e.match(/(msie |rv:)(\d+(.\d+)?)/i);if(t)return t[2]}return!1},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(e){return"number"==typeof e},toStr:function(e){return null==e?"":e+""},cloneDeep:function(e){var t=this.mixin({},e),n=this;return this.each(t,function(e,i){e&&(n.isArray(e)?t[i]=[].concat(e):n.isObject(e)&&(t[i]=n.cloneDeep(e)))}),t},error:function(e){throw new Error(e)},every:function(e,t){var n=!0;return e?(this.each(e,function(i,r){n&&(n=t.call(null,i,r,e)&&n)}),!!n):n},any:function(e,t){var n=!1;return e?(this.each(e,function(i,r){if(t.call(null,i,r,e))return n=!0,!1}),n):n},getUniqueId:(i=0,function(){return i++}),templatify:function(e){if(this.isFunction(e))return e;var t=r.element(e);return"SCRIPT"===t.prop("tagName")?function(){return t.text()}:function(){return String(e)}},defer:function(e){setTimeout(e,0)},noop:function(){},formatPrefix:function(e,t){return t?"":e+"-"},className:function(e,t,n){return(n?"":".")+e+t},escapeHighlightedString:function(e,t,n){t=t||"<em>";var i=document.createElement("div");i.appendChild(document.createTextNode(t)),n=n||"</em>";var r=document.createElement("div");r.appendChild(document.createTextNode(n));var o=document.createElement("div");return o.appendChild(document.createTextNode(e)),o.innerHTML.replace(RegExp(s(i.innerHTML),"g"),t).replace(RegExp(s(r.innerHTML),"g"),n)}}},6345:(e,t)=>{"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},6486:(e,t)=>{"use strict";t.test=function(){return!globalThis.setImmediate&&void 0!==globalThis.MessageChannel},t.install=function(e){var t=new globalThis.MessageChannel;return t.port1.onmessage=e,function(){t.port2.postMessage(0)}}},6766:e=>{"use strict";e.exports=function(e){var t=e.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||e.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(t)return[t[1],t[2],t[3]]}},7748:(e,t,n)=>{"use strict";var i;i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var r=n(6220),s=n(1337),o=n(1805);function a(e){var t,n,o,a,u,l=this;(e=e||{}).input||r.error("input is missing"),t=r.bind(this._onBlur,this),n=r.bind(this._onFocus,this),o=r.bind(this._onKeydown,this),a=r.bind(this._onInput,this),this.$hint=s.element(e.hint),this.$input=s.element(e.input).on("blur.aa",t).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=r.noop),r.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function(e){i[e.which||e.keyCode]||r.defer(r.bind(l._onInput,l,e))}):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,s.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}a.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},r.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=i[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,i,r;switch(e){case"tab":i=this.getHint(),r=this.getInputValue(),n=i&&i!==r&&!u(t);break;case"up":case"down":n=!u(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;if("tab"===e)n=!u(t);else n=!0;return n},_checkInputValue:function(){var e,t,n,i,r;e=this.getInputValue(),i=e,r=this.query,n=!(!(t=a.normalizeQuery(i)===a.normalizeQuery(r))||!this.query)&&this.query.length!==e.length,this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){void 0===e&&(e=this.query),this.$input.val(e),t?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(e){this.$input.attr("aria-activedescendant",e)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),""!==e&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,t,n;return e=this.$input.val().length,t=this.$input[0].selectionStart,r.isNumber(t)?t===e:!document.selection||((n=document.selection.createRange()).moveStart("character",-e),e===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),e.exports=a},8291:(e,t,n)=>{var i,r;!function(){var s,o,a,u,l,c,h,p,d,f,g,m,y,v,x,b,w,S,C,E,k,_,T,L,O,A,$,P,I,Q,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.9",R.utils={},R.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?"":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var r=n[i],s=e[r];if(Array.isArray(s))t[r]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[r]=s}}return t},R.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},R.FieldRef.joiner="/",R.FieldRef.fromString=function(e){var t=e.indexOf(R.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),i=e.slice(t+1);return new R.FieldRef(i,n,e)},R.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+R.FieldRef.joiner+this.docRef),this._stringValue},R.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},R.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},R.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},R.Set.prototype.contains=function(e){return!!this.elements[e]},R.Set.prototype.intersect=function(e){var t,n,i,r=[];if(e===R.Set.complete)return this;if(e===R.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in n.elements&&r.push(o)}return new R.Set(r)},R.Set.prototype.union=function(e){return e===R.Set.complete?R.Set.complete:e===R.Set.empty?this:new R.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},R.idf=function(e,t){var n=0;for(var i in e)"_index"!=i&&(n+=Object.keys(e[i]).length);var r=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(r))},R.Token=function(e,t){this.str=e||"",this.metadata=t||{}},R.Token.prototype.toString=function(){return this.str},R.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},R.Token.prototype.clone=function(e){return e=e||function(e){return e},new R.Token(e(this.str,this.metadata),this.metadata)},R.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return new R.Token(R.utils.asString(e).toLowerCase(),R.utils.clone(t))});for(var n=e.toString().toLowerCase(),i=n.length,r=[],s=0,o=0;s<=i;s++){var a=s-o;if(n.charAt(s).match(R.tokenizer.separator)||s==i){if(a>0){var u=R.utils.clone(t)||{};u.position=[o,a],u.index=r.length,r.push(new R.Token(n.slice(o,s),u))}o=s+1}}return r},R.tokenizer.separator=/[\s\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn("Overwriting existing registered function: "+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach(function(e){var n=R.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)}),t},R.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var i=this._stack[n],r=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)r.push(o[a]);else r.push(o)}e=r}return e},R.Pipeline.prototype.runString=function(e,t){var n=new R.Token(e,t);return this.run([n]).map(function(e){return e.toString()})},R.Pipeline.prototype.reset=function(){this._stack=[]},R.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return R.Pipeline.warnIfFunctionNotRegistered(e),e.label})},R.Vector=function(e){this._magnitude=0,this.elements=e||[]},R.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,i=n-t,r=Math.floor(i/2),s=this.elements[2*r];i>1&&(s<e&&(t=r),s>e&&(n=r),s!=e);)i=n-t,r=t+Math.floor(i/2),s=this.elements[2*r];return s==e||s>e?2*r:s<e?2*(r+1):void 0},R.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},R.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],t):this.elements.splice(i,0,e,t)},R.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},R.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,i=e.elements,r=n.length,s=i.length,o=0,a=0,u=0,l=0;u<r&&l<s;)(o=n[u])<(a=i[l])?u+=2:o>a?l+=2:o==a&&(t+=n[u+1]*i[l+1],u+=2,l+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},R.Vector.prototype.toJSON=function(){return this.elements},R.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},a={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},h="^("+(l="[^aeiou][^aeiouy]*")+")?"+(c=(u="[aeiouy]")+"[aeiou]*")+l+"("+c+")?$",p="^("+l+")?"+c+l+c+l,d="^("+l+")?"+u,f=new RegExp("^("+l+")?"+c+l),g=new RegExp(p),m=new RegExp(h),y=new RegExp(d),v=/^(.+?)(ss|i)es$/,x=/^(.+?)([^s])s$/,b=/^(.+?)eed$/,w=/^(.+?)(ed|ing)$/,S=/.$/,C=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+l+u+"[^aeiouwxy]$"),_=/^(.+?[^aeiou])y$/,T=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,L=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,O=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,A=/^(.+?)(s|t)(ion)$/,$=/^(.+?)e$/,P=/ll$/,I=new RegExp("^"+l+u+"[^aeiouwxy]$"),Q=function(e){var t,n,i,r,s,u,l;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=x,(r=v).test(e)?e=e.replace(r,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=w,(r=b).test(e)){var c=r.exec(e);(r=f).test(c[1])&&(r=S,e=e.replace(r,""))}else s.test(e)&&(t=(c=s.exec(e))[1],(s=y).test(t)&&(u=E,l=k,(s=C).test(e=t)?e+="e":u.test(e)?(r=S,e=e.replace(r,"")):l.test(e)&&(e+="e")));return(r=_).test(e)&&(e=(t=(c=r.exec(e))[1])+"i"),(r=T).test(e)&&(t=(c=r.exec(e))[1],n=c[2],(r=f).test(t)&&(e=t+o[n])),(r=L).test(e)&&(t=(c=r.exec(e))[1],n=c[2],(r=f).test(t)&&(e=t+a[n])),s=A,(r=O).test(e)?(t=(c=r.exec(e))[1],(r=g).test(t)&&(e=t)):s.test(e)&&(t=(c=s.exec(e))[1]+c[2],(s=g).test(t)&&(e=t)),(r=$).test(e)&&(t=(c=r.exec(e))[1],s=m,u=I,((r=g).test(t)||s.test(t)&&!u.test(t))&&(e=t)),s=g,(r=P).test(e)&&s.test(e)&&(r=S,e=e.replace(r,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(Q)}),R.Pipeline.registerFunction(R.stemmer,"stemmer"),R.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},R.stopWordFilter=R.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),R.Pipeline.registerFunction(R.stopWordFilter,"stopWordFilter"),R.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},R.Pipeline.registerFunction(R.trimmer,"trimmer"),R.TokenSet=function(){this.final=!1,this.edges={},this.id=R.TokenSet._nextId,R.TokenSet._nextId+=1},R.TokenSet._nextId=1,R.TokenSet.fromArray=function(e){for(var t=new R.TokenSet.Builder,n=0,i=e.length;n<i;n++)t.insert(e[n]);return t.finish(),t.root},R.TokenSet.fromClause=function(e){return"editDistance"in e?R.TokenSet.fromFuzzyString(e.term,e.editDistance):R.TokenSet.fromString(e.term)},R.TokenSet.fromFuzzyString=function(e,t){for(var n=new R.TokenSet,i=[{node:n,editsRemaining:t,str:e}];i.length;){var r=i.pop();if(r.str.length>0){var s,o=r.str.charAt(0);o in r.node.edges?s=r.node.edges[o]:(s=new R.TokenSet,r.node.edges[o]=s),1==r.str.length&&(s.final=!0),i.push({node:s,editsRemaining:r.editsRemaining,str:r.str.slice(1)})}if(0!=r.editsRemaining){if("*"in r.node.edges)var a=r.node.edges["*"];else{a=new R.TokenSet;r.node.edges["*"]=a}if(0==r.str.length&&(a.final=!0),i.push({node:a,editsRemaining:r.editsRemaining-1,str:r.str}),r.str.length>1&&i.push({node:r.node,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)}),1==r.str.length&&(r.node.final=!0),r.str.length>=1){if("*"in r.node.edges)var u=r.node.edges["*"];else{u=new R.TokenSet;r.node.edges["*"]=u}1==r.str.length&&(u.final=!0),i.push({node:u,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)})}if(r.str.length>1){var l,c=r.str.charAt(0),h=r.str.charAt(1);h in r.node.edges?l=r.node.edges[h]:(l=new R.TokenSet,r.node.edges[h]=l),1==r.str.length&&(l.final=!0),i.push({node:l,editsRemaining:r.editsRemaining-1,str:c+r.str.slice(2)})}}}return n},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,n=t,i=0,r=e.length;i<r;i++){var s=e[i],o=i==r-1;if("*"==s)t.edges[s]=t,t.final=o;else{var a=new R.TokenSet;a.final=o,t.edges[s]=a,t=a}}return n},R.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),i=Object.keys(n.node.edges),r=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var s=0;s<r;s++){var o=i[s];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},R.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,i=0;i<n;i++){var r=t[i];e=e+r+this.edges[r].id}return e},R.TokenSet.prototype.intersect=function(e){for(var t=new R.TokenSet,n=void 0,i=[{qNode:e,output:t,node:this}];i.length;){n=i.pop();for(var r=Object.keys(n.qNode.edges),s=r.length,o=Object.keys(n.node.edges),a=o.length,u=0;u<s;u++)for(var l=r[u],c=0;c<a;c++){var h=o[c];if(h==l||"*"==l){var p=n.node.edges[h],d=n.qNode.edges[l],f=p.final&&d.final,g=void 0;h in n.output.edges?(g=n.output.edges[h]).final=g.final||f:((g=new R.TokenSet).final=f,n.output.edges[h]=g),i.push({qNode:d,output:g,node:p})}}}return t},R.TokenSet.Builder=function(){this.previousWord="",this.root=new R.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},R.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=n;i<e.length;i++){var r=new R.TokenSet,s=e[i];t.edges[s]=r,this.uncheckedNodes.push({parent:t,char:s,child:r}),t=r}t.final=!0,this.previousWord=e},R.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},R.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query(function(t){new R.QueryParser(e,t).parse()})},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),n=Object.create(null),i=Object.create(null),r=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new R.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],l=null,c=R.Set.empty;l=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<l.length;h++){var p=l[h];u.term=p;var d=R.TokenSet.fromClause(u),f=this.tokenSet.intersect(d).toArray();if(0===f.length&&u.presence===R.Query.presence.REQUIRED){for(var g=0;g<u.fields.length;g++){s[$=u.fields[g]]=R.Set.empty}break}for(var m=0;m<f.length;m++){var y=f[m],v=this.invertedIndex[y],x=v._index;for(g=0;g<u.fields.length;g++){var b=v[$=u.fields[g]],w=Object.keys(b),S=y+"/"+$,C=new R.Set(w);if(u.presence==R.Query.presence.REQUIRED&&(c=c.union(C),void 0===s[$]&&(s[$]=R.Set.complete)),u.presence!=R.Query.presence.PROHIBITED){if(i[$].upsert(x,u.boost,function(e,t){return e+t}),!r[S]){for(var E=0;E<w.length;E++){var k,_=w[E],T=new R.FieldRef(_,$),L=b[_];void 0===(k=n[T])?n[T]=new R.MatchData(y,$,L):k.add(y,$,L)}r[S]=!0}}else void 0===o[$]&&(o[$]=R.Set.empty),o[$]=o[$].union(C)}}}if(u.presence===R.Query.presence.REQUIRED)for(g=0;g<u.fields.length;g++){s[$=u.fields[g]]=s[$].intersect(c)}}var O=R.Set.complete,A=R.Set.empty;for(a=0;a<this.fields.length;a++){var $;s[$=this.fields[a]]&&(O=O.intersect(s[$])),o[$]&&(A=A.union(o[$]))}var P=Object.keys(n),I=[],Q=Object.create(null);if(t.isNegated()){P=Object.keys(this.fieldVectors);for(a=0;a<P.length;a++){T=P[a];var N=R.FieldRef.fromString(T);n[T]=new R.MatchData}}for(a=0;a<P.length;a++){var D=(N=R.FieldRef.fromString(P[a])).docRef;if(O.contains(D)&&!A.contains(D)){var F,j=this.fieldVectors[N],H=i[N.fieldName].similarity(j);if(void 0!==(F=Q[D]))F.score+=H,F.matchData.combine(n[N]);else{var V={ref:D,score:H,matchData:n[N]};Q[D]=V,I.push(V)}}}return I.sort(function(e,t){return t.score-e.score})},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),t=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},n={},i=e.fieldVectors,r=Object.create(null),s=e.invertedIndex,o=new R.TokenSet.Builder,a=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var l=(h=i[u])[0],c=h[1];n[l]=new R.Vector(c)}for(u=0;u<s.length;u++){var h,p=(h=s[u])[0],d=h[1];o.insert(p),r[p]=d}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=r,t.tokenSet=o.root,t.pipeline=a,new R.Index(t)},R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var r=0;r<i.length;r++){var s=i[r],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new R.FieldRef(n,s),h=Object.create(null);this.fieldTermFrequencies[c]=h,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var p=0;p<l.length;p++){var d=l[p];if(null==h[d]&&(h[d]=0),h[d]+=1,null==this.invertedIndex[d]){var f=Object.create(null);f._index=this.termIndex,this.termIndex+=1;for(var g=0;g<i.length;g++)f[i[g]]=Object.create(null);this.invertedIndex[d]=f}null==this.invertedIndex[d][s][n]&&(this.invertedIndex[d][s][n]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var y=this.metadataWhitelist[m],v=d.metadata[y];null==this.invertedIndex[d][s][n][y]&&(this.invertedIndex[d][s][n][y]=[]),this.invertedIndex[d][s][n][y].push(v)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},i={},r=0;r<t;r++){var s=R.FieldRef.fromString(e[r]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(r=0;r<a.length;r++){var u=a[r];n[u]=n[u]/i[u]}this.averageFieldLength=n},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,i=Object.create(null),r=0;r<n;r++){for(var s=R.FieldRef.fromString(t[r]),o=s.fieldName,a=this.fieldLengths[s],u=new R.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),h=c.length,p=this._fields[o].boost||1,d=this._documents[s.docRef].boost||1,f=0;f<h;f++){var g,m,y,v=c[f],x=l[v],b=this.invertedIndex[v]._index;void 0===i[v]?(g=R.idf(this.invertedIndex[v],this.documentCount),i[v]=g):g=i[v],m=g*((this._k1+1)*x)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+x),m*=p,m*=d,y=Math.round(1e3*m)/1e3,u.insert(b,y)}e[s]=u}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,n){for(var i=Object.create(null),r=Object.keys(n||{}),s=0;s<r.length;s++){var o=r[s];i[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var i=t[n],r=Object.keys(e.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<r.length;s++){var o=r[s],a=Object.keys(e.metadata[i][o]);null==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];null==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},R.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var i=Object.keys(n),r=0;r<i.length;r++){var s=i[r];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(n[s]):this.metadata[e][t][s]=n[s]}else this.metadata[e][t]=n},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach(function(e){this.term(e,R.utils.clone(t))},this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},R.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new R.QueryParseError(n,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(n,t.start,t.end)}var i=e.peekLexeme();if(null==i){n="expecting term or field, found nothing";throw new R.QueryParseError(n,t.start,t.end)}switch(i.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:n="expecting term or field, found '"+i.type+"'";throw new R.QueryParseError(n,i.start,i.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+n;throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var r=e.peekLexeme();if(null==r){i="expecting term, found nothing";throw new R.QueryParseError(i,t.start,t.end)}if(r.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;i="expecting term, found '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="boost must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.boost=n;var r=e.peekLexeme();if(null!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}else e.nextClause()}},void 0===(r="function"==typeof(i=function(){return R})?i.call(t,n,t,e):i)||(e.exports=r)}()},8693:(e,t,n)=>{"use strict";var i="aaAttrs",r=n(6220),s=n(1337),o=n(4045),a=n(7748),u=n(2731),l=n(4499),c=n(819);function h(e){var t,n;if((e=e||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!e.debug,this.autoselect=!!e.autoselect,this.autoselectOnBlur=!!e.autoselectOnBlur,this.openOnFocus=!!e.openOnFocus,this.minLength=r.isNumber(e.minLength)?e.minLength:1,this.autoWidth=void 0===e.autoWidth||!!e.autoWidth,this.clearOnSelected=!!e.clearOnSelected,this.tabAutocomplete=void 0===e.tabAutocomplete||!!e.tabAutocomplete,e.hint=!!e.hint,e.hint&&e.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=e.css=r.mixin({},c,e.appendTo?c.appendTo:{}),this.cssClasses=e.cssClasses=r.mixin({},c.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=e.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var a=function(e){var t,n,o,a;t=s.element(e.input),n=s.element(l.wrapper.replace("%ROOT%",e.cssClasses.root)).css(e.css.wrapper),e.appendTo||"block"!==t.css("display")||"table"!==t.parent().css("display")||n.css("display","table-cell");var u=l.dropdown.replace("%PREFIX%",e.cssClasses.prefix).replace("%DROPDOWN_MENU%",e.cssClasses.dropdownMenu);o=s.element(u).css(e.css.dropdown).attr({role:"listbox",id:e.listboxId}),e.templates&&e.templates.dropdownMenu&&o.html(r.templatify(e.templates.dropdownMenu)());a=t.clone().css(e.css.hint).css(function(e){return{backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}}(t)),a.val("").addClass(r.className(e.cssClasses.prefix,e.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();t.data(i,{"aria-autocomplete":t.attr("aria-autocomplete"),"aria-expanded":t.attr("aria-expanded"),"aria-owns":t.attr("aria-owns"),autocomplete:t.attr("autocomplete"),dir:t.attr("dir"),role:t.attr("role"),spellcheck:t.attr("spellcheck"),style:t.attr("style"),type:t.attr("type")}),t.addClass(r.className(e.cssClasses.prefix,e.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":e.datasets&&e.datasets[0]&&e.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":e.ariaLabel,"aria-owns":e.listboxId}).css(e.hint?e.css.input:e.css.inputWithNoHint);try{t.attr("dir")||t.attr("dir","auto")}catch(c){}return n=e.appendTo?n.appendTo(s.element(e.appendTo).eq(0)).eq(0):t.wrap(n).parent(),n.prepend(e.hint?a:null).append(o),{wrapper:n,input:t,hint:a,menu:o}}(e);this.$node=a.wrapper;var u=this.$input=a.input;t=a.menu,n=a.hint,e.dropdownMenuContainer&&s.element(e.dropdownMenuContainer).css("position","relative").append(t.css("top","0")),u.on("blur.aa",function(e){var n=document.activeElement;r.isMsie()&&(t[0]===n||t[0].contains(n))&&(e.preventDefault(),e.stopImmediatePropagation(),r.defer(function(){u.focus()}))}),t.on("mousedown.aa",function(e){e.preventDefault()}),this.eventBus=e.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:e.appendTo,wrapper:this.$node,menu:t,datasets:e.datasets,templates:e.templates,cssClasses:e.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(e),this._setLanguageDirection()}r.mixin(h.prototype,{_bindKeyboardShortcuts:function(e){if(e.keyboardShortcuts){var t=this.$input,n=[];r.each(e.keyboardShortcuts,function(e){"string"==typeof e&&(e=e.toUpperCase().charCodeAt(0)),n.push(e)}),s.element(document).keydown(function(e){var i=e.target||e.srcElement,r=i.tagName;if(!i.isContentEditable&&"INPUT"!==r&&"SELECT"!==r&&"TEXTAREA"!==r){var s=e.which||e.keyCode;-1!==n.indexOf(s)&&(t.focus(),e.stopPropagation(),e.preventDefault())}})}},_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(e,t){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(t&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var e=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",e.width+"px");var t=this.$node[0].getBoundingClientRect(),n=e.bottom-t.top;this.$node.css("top",n+"px");var i=e.left-t.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var e=this.input.getQuery();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var e,t;e=this.dropdown.getDatumForCursor(),t=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&e?this._select(e,n):this.autoselectOnBlur&&t?this._select(t,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(e,t){var n,i;n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion();var r={selectionMethod:"enterKey"};n?(this._select(n,r),t.preventDefault()):this.autoselect&&i&&(this._select(i,r),t.preventDefault())},_onTabKeyed:function(e,t){if(this.tabAutocomplete){var n;(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),t.preventDefault()):this._autocomplete(!0)}else this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e=this.input.getLanguageDirection();this.dir!==e&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,t,n,i,s;(e=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(t=this.input.getInputValue(),n=a.normalizeQuery(t),i=r.escapeRegExChars(n),(s=new RegExp("^(?:"+i+")(.+$)","i").exec(e.value))?this.input.setHint(t+s[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,i,r;t=this.input.getHint(),n=this.input.getQuery(),i=e||this.input.isCursorAtEnd(),t&&n!==t&&i&&((r=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(r.value),this.eventBus.trigger("autocompleted",r.raw,r.datasetName))},_select:function(e,t){void 0!==e.value&&this.input.setQuery(e.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(e.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",e.raw,e.datasetName,t).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var e=this.input.getInputValue();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=r.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(e,t){var n=e.find(r.className(t.prefix,t.input));r.each(n.data(i),function(e,t){void 0===e?n.removeAttr(t):n.attr(t,e)}),n.detach().removeClass(r.className(t.prefix,t.input,!0)).insertAfter(e),n.removeData&&n.removeData(i);e.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(4710),e.exports=h},9110:(e,t)=>{!function(e){var t=/\S/,n=/\"/g,i=/\n/g,r=/\r/g,s=/\\/g,o=/\u2028/,a=/\u2029/;function u(e){"}"===e.n.substr(e.n.length-1)&&(e.n=e.n.substring(0,e.n.length-1))}function l(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function c(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var i=1,r=e.length;i<r;i++)if(t.charAt(n+i)!=e.charAt(i))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,i){var r=n.length,s=0,o=null,a=null,h="",p=[],d=!1,f=0,g=0,m="{{",y="}}";function v(){h.length>0&&(p.push({tag:"_t",text:new String(h)}),h="")}function x(n,i){if(v(),n&&function(){for(var n=!0,i=g;i<p.length;i++)if(!(n=e.tags[p[i].tag]<e.tags._v||"_t"==p[i].tag&&null===p[i].text.match(t)))return!1;return n}())for(var r,s=g;s<p.length;s++)p[s].text&&((r=p[s+1])&&">"==r.tag&&(r.indent=p[s].text.toString()),p.splice(s,1));else i||p.push({tag:"\n"});d=!1,g=p.length}function b(e,t){var n="="+y,i=e.indexOf(n,t),r=l(e.substring(e.indexOf("=",t)+1,i)).split(" ");return m=r[0],y=r[r.length-1],i+n.length-1}for(i&&(i=i.split(" "),m=i[0],y=i[1]),f=0;f<r;f++)0==s?c(m,n,f)?(--f,v(),s=1):"\n"==n.charAt(f)?x(d):h+=n.charAt(f):1==s?(f+=m.length-1,"="==(o=(a=e.tags[n.charAt(f+1)])?n.charAt(f+1):"_v")?(f=b(n,f),s=0):(a&&f++,s=2),d=f):c(y,n,f)?(p.push({tag:o,n:l(h),otag:m,ctag:y,i:"/"==o?d-m.length:f+y.length}),h="",f+=y.length-1,s=0,"{"==o&&("}}"==y?f++:u(p[p.length-1]))):h+=n.charAt(f);return x(d,!0),p};var h={_t:!0,"\n":!0,$:!0,"/":!0};function p(t,n,i,r){var s,o=[],a=null,u=null;for(s=i[i.length-1];t.length>0;){if(u=t.shift(),s&&"<"==s.tag&&!(u.tag in h))throw new Error("Illegal content in < super tag.");if(e.tags[u.tag]<=e.tags.$||d(u,r))i.push(u),u.nodes=p(t,u.tag,i,r);else{if("/"==u.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+u.n);if(a=i.pop(),u.n!=a.n&&!f(u.n,a.n,r))throw new Error("Nesting error: "+a.n+" vs. "+u.n);return a.end=u.i,o}"\n"==u.tag&&(u.last=0==t.length||"\n"==t[0].tag)}o.push(u)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return o}function d(e,t){for(var n=0,i=t.length;n<i;n++)if(t[n].o==e.n)return e.tag="#",!0}function f(e,t,n){for(var i=0,r=n.length;i<r;i++)if(n[i].c==e&&n[i].o==t)return!0}function g(e){var t=[];for(var n in e.partials)t.push('"'+y(n)+'":{name:"'+y(e.partials[n].name)+'", '+g(e.partials[n])+"}");return"partials: {"+t.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+y(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(e.subs)}e.stringify=function(t,n,i){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+g(t)+"}"};var m=0;function y(e){return e.replace(s,"\\\\").replace(n,'\\"').replace(i,"\\n").replace(r,"\\r").replace(o,"\\u2028").replace(a,"\\u2029")}function v(e){return~e.indexOf(".")?"d":"f"}function x(e,t){var n="<"+(t.prefix||"")+e.n+m++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+y(n)+'",c,p,"'+(e.indent||"")+'"));',n}function b(e,t){t.code+="t.b(t.t(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'}function w(e){return"t.b("+e+");"}e.generate=function(t,n,i){m=0;var r={code:"",subs:{},partials:{}};return e.walk(t,r),i.asString?this.stringify(r,n,i):this.makeTemplate(r,n,i)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var i=this.makePartials(e);return i.code=new Function("c","p","i",this.wrapMain(e.code)),new this.template(i,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=new Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+v(t.n)+'("'+y(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":x,"<":function(t,n){var i={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,i);var r=n.partials[x(t,n)];r.subs=i.subs,r.partials=i.partials},$:function(t,n){var i={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,i),n.subs[t.n]=i.code,n.inPartial||(n.code+='t.sub("'+y(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=w('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+v(e.n)+'("'+y(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=w('"'+y(e.text)+'"')},"{":b,"&":b},e.walk=function(t,n){for(var i,r=0,s=t.length;r<s;r++)(i=e.codegen[t[r].tag])&&i(t[r],n);return n},e.parse=function(e,t,n){return p(e,0,[],(n=n||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var i=e.cacheKey(t,n),r=this.cache[i];if(r){var s=r.partials;for(var o in s)delete s[o].instance;return r}return r=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[i]=r}}(t)},9324:(e,t,n)=>{"use strict";var i="aaDataset",r="aaValue",s="aaDatum",o=n(6220),a=n(1337),u=n(4499),l=n(819),c=n(1805);function h(e){var t;(e=e||{}).templates=e.templates||{},e.source||o.error("missing source"),e.name&&(t=e.name,!/^[_a-zA-Z0-9-]+$/.test(t))&&o.error("invalid dataset name: "+e.name),this.query=null,this._isEmpty=!0,this.highlight=!!e.highlight,this.name=void 0===e.name||null===e.name?o.getUniqueId():e.name,this.source=e.source,this.displayFn=function(e){return e=e||"value",o.isFunction(e)?e:t;function t(t){return t[e]}}(e.display||e.displayKey),this.debounce=e.debounce,this.cache=!1!==e.cache,this.templates=function(e,t){return{empty:e.empty&&o.templatify(e.empty),header:e.header&&o.templatify(e.header),footer:e.footer&&o.templatify(e.footer),suggestion:e.suggestion||n};function n(e){return"<p>"+t(e)+"</p>"}}(e.templates,this.displayFn),this.css=o.mixin({},l,e.appendTo?l.appendTo:{}),this.cssClasses=e.cssClasses=o.mixin({},l.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var n=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=e.$menu&&e.$menu.find(n+"-"+this.name).length>0?a.element(e.$menu.find(n+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=e.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(e){return a.element(e).data(i)},h.extractValue=function(e){return a.element(e).data(r)},h.extractDatum=function(e){var t=a.element(e).data(s);return"string"==typeof t&&(t=JSON.parse(t)),t},o.mixin(h.prototype,c,{_render:function(e,t){if(this.$el){var n,l=this,c=[].slice.call(arguments,2);if(this.$el.empty(),n=t&&t.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(function(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!0}].concat(t),l.templates.empty.apply(this,t)}.apply(this,c)).prepend(l.templates.header?h.apply(this,c):null).append(l.templates.footer?p.apply(this,c):null);else if(n)this.$el.html(function(){var e,n,c=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return e=a.element(p).css(this.css.suggestions),n=o.map(t,d),e.append.apply(e,n),e;function d(e){var t,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(t=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(l.templates.suggestion.apply(this,[e].concat(c)))).data(i,l.name),t.data(r,l.displayFn(e)||void 0),t.data(s,JSON.stringify(e)),t.children().each(function(){a.element(this).css(h.css.suggestionChild)}),t}}.apply(this,c)).prepend(l.templates.header?h.apply(this,c):null).append(l.templates.footer?p.apply(this,c):null);else if(t&&!Array.isArray(t))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",e)}function h(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),l.templates.header.apply(this,t)}function p(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),l.templates.footer.apply(this,t)}},getRoot:function(){return this.$el},update:function(e){function t(t){if(!this.canceled&&e===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(e,t,n),this._render.apply(this,[e,t].concat(n))}}if(this.query=e,this.canceled=!1,this.shouldFetchFromCache(e))t.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(e,t.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(function(){n.debounceTimeout=null,i()},this.debounce)}else i()}},cacheSuggestions:function(e,t,n){this.cachedQuery=e,this.cachedSuggestions=t,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(e){return this.cache&&this.cachedQuery===e&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),e.exports=h},9549:(e,t)=>{!function(e){function t(e,t,n){var i;return t&&"object"==typeof t&&(void 0!==t[e]?i=t[e]:n&&t.get&&"function"==typeof t.get&&(i=t.get(e))),i}e.Template=function(e,t,n,i){e=e||{},this.r=e.code||this.r,this.c=n,this.options=i||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return e=u(e),a.test(e)?e.replace(n,"&").replace(i,"<").replace(r,">").replace(s,"'").replace(o,"""):e},t:u,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],i=t[n.name];if(n.instance&&n.base==i)return n.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=function(e,t,n,i,r,s){function o(){}function a(){}var u;o.prototype=e,a.prototype=e.subs;var l=new o;for(u in l.subs=new a,l.subsText={},l.buf="",i=i||{},l.stackSubs=i,l.subsText=s,t)i[u]||(i[u]=t[u]);for(u in i)l.subs[u]=i[u];for(u in r=r||{},l.stackPartials=r,n)r[u]||(r[u]=n[u]);for(u in r)l.partials[u]=r[u];return l}(i,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,i){var r=this.ep(e,n);return r?r.ri(t,n,i):""},rs:function(e,t,n){var i=e[e.length-1];if(l(i))for(var r=0;r<i.length;r++)e.push(i[r]),n(e,t,this),e.pop();else n(e,t,this)},s:function(e,t,n,i,r,s,o){var a;return(!l(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,i,r,s,o)),a=!!e,!i&&a&&t&&t.push("object"==typeof e?e:t[t.length-1]),a)},d:function(e,n,i,r){var s,o=e.split("."),a=this.f(o[0],n,i,r),u=this.options.modelGet,c=null;if("."===e&&l(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<o.length;h++)void 0!==(s=t(o[h],a,u))?(c=a,a=s):a="";return!(r&&!a)&&(r||"function"!=typeof a||(n.push(c),a=this.mv(a,n,i),n.pop()),a)},f:function(e,n,i,r){for(var s=!1,o=!1,a=this.options.modelGet,u=n.length-1;u>=0;u--)if(void 0!==(s=t(e,n[u],a))){o=!0;break}return o?(r||"function"!=typeof s||(s=this.mv(s,n,i)),s):!r&&""},ls:function(e,t,n,i,r){var s=this.options.delimiters;return this.options.delimiters=r,this.b(this.ct(u(e.call(t,i)),t,n)),this.options.delimiters=s,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,i,r,s,o){var a,u=t[t.length-1],l=e.call(u);return"function"==typeof l?!!i||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(l,u,n,a.substring(r,s),o)):l},mv:function(e,t,n){var i=t[t.length-1],r=e.call(i);return"function"==typeof r?this.ct(u(r.call(i)),i,n):r},sub:function(e,t,n,i){var r=this.subs[e];r&&(this.activeSub=e,r(t,n,this,i),this.activeSub=!1)}};var n=/&/g,i=/</g,r=/>/g,s=/\'/g,o=/\"/g,a=/[&<>\"\']/;function u(e){return String(null==e?"":e)}var l=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)}}]); \ No newline at end of file diff --git a/user/assets/js/8591.534ea4e8.js.LICENSE.txt b/user/assets/js/8591.534ea4e8.js.LICENSE.txt new file mode 100644 index 0000000..1cf473c --- /dev/null +++ b/user/assets/js/8591.534ea4e8.js.LICENSE.txt @@ -0,0 +1,61 @@ +/*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ + +/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ diff --git a/user/assets/js/8731.4b254795.js b/user/assets/js/8731.4b254795.js new file mode 100644 index 0000000..2f47a55 --- /dev/null +++ b/user/assets/js/8731.4b254795.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8731],{418:(e,t,n)=>{n.d(t,{Bd:()=>f,P3:()=>x,PV:()=>E,Rp:()=>T,S:()=>I,SS:()=>g,U5:()=>A,Uz:()=>k,Xq:()=>R,YV:()=>c,eb:()=>h,g4:()=>d,qO:()=>p});var r=n(1564),i=n(2151),s=n(2479),a=n(9683),o=n(6373),l=n(2806);function c(e,t){const n=new Set,r=function(e){return e.rules.find(e=>i.s7(e)&&e.entry)}(e);if(!r)return new Set(e.rules);const s=[r].concat(function(e){return e.rules.filter(e=>i.rE(e)&&e.hidden)}(e));for(const i of s)u(i,n,t);const a=new Set;for(const o of e.rules)(n.has(o.name)||i.rE(o)&&o.hidden)&&a.add(o);return a}function u(e,t,n){t.add(e.name),(0,a.Uo)(e).forEach(e=>{if(i.$g(e)||n&&i.lF(e)){const r=e.rule.ref;r&&!t.has(r.name)&&u(r,t,n)}})}function d(e){if(e.terminal)return e.terminal;if(e.type.ref){const t=A(e.type.ref);return null==t?void 0:t.terminal}}function h(e){return e.hidden&&!(0,l.Yv)(I(e))}function f(e,t){return e&&t?m(e,t,e.astNode,!0):[]}function p(e,t,n){if(!e||!t)return;const r=m(e,t,e.astNode,!0);return 0!==r.length?r[n=void 0!==n?Math.max(0,Math.min(n,r.length-1)):0]:void 0}function m(e,t,n,r){if(!r){const n=(0,a.XG)(e.grammarSource,i.wh);if(n&&n.feature===t)return[e]}return(0,s.mD)(e)&&e.astNode===n?e.content.flatMap(e=>m(e,t,n,!1)):[]}function g(e,t,n){if(!e)return;const r=y(e,t,null==e?void 0:e.astNode);return 0!==r.length?r[n=void 0!==n?Math.max(0,Math.min(n,r.length-1)):0]:void 0}function y(e,t,n){if(e.astNode!==n)return[];if(i.wb(e.grammarSource)&&e.grammarSource.value===t)return[e];const r=(0,o.NS)(e).iterator();let s;const a=[];do{if(s=r.next(),!s.done){const e=s.value;e.astNode===n?i.wb(e.grammarSource)&&e.grammarSource.value===t&&a.push(e):r.prune()}}while(!s.done);return a}function T(e){var t;const n=e.astNode;for(;n===(null===(t=e.container)||void 0===t?void 0:t.astNode);){const t=(0,a.XG)(e.grammarSource,i.wh);if(t)return t;e=e.container}}function A(e){let t=e;return i.SP(t)&&(i.ve(t.$container)?t=t.$container.$container:i.s7(t.$container)?t=t.$container:(0,r.d)(t.$container)),v(e,t,new Map)}function v(e,t,n){var r;function s(t,r){let s;return(0,a.XG)(t,i.wh)||(s=v(r,r,n)),n.set(e,s),s}if(n.has(e))return n.get(e);n.set(e,void 0);for(const o of(0,a.Uo)(t)){if(i.wh(o)&&"name"===o.feature.toLowerCase())return n.set(e,o),o;if(i.$g(o)&&i.s7(o.rule.ref))return s(o,o.rule.ref);if(i.D8(o)&&(null===(r=o.typeRef)||void 0===r?void 0:r.ref))return s(o,o.typeRef.ref)}}function R(e){return $(e,new Set)}function $(e,t){if(t.has(e))return!0;t.add(e);for(const n of(0,a.Uo)(e))if(i.$g(n)){if(!n.rule.ref)return!1;if(i.s7(n.rule.ref)&&!$(n.rule.ref,t))return!1}else{if(i.wh(n))return!1;if(i.ve(n))return!1}return Boolean(e.definition)}function E(e){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){const t=e.returnType.ref;if(t){if(i.s7(t))return t.name;if(i.S2(t)||i.Xj(t))return t.name}}}function k(e){var t;if(i.s7(e))return R(e)?e.name:null!==(t=E(e))&&void 0!==t?t:e.name;if(i.S2(e)||i.Xj(e)||i.fG(e))return e.name;if(i.ve(e)){const t=function(e){var t;if(e.inferredType)return e.inferredType.name;if(null===(t=e.type)||void 0===t?void 0:t.ref)return k(e.type.ref);return}(e);if(t)return t}else if(i.SP(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function x(e){var t,n,r;return i.rE(e)?null!==(n=null===(t=e.type)||void 0===t?void 0:t.name)&&void 0!==n?n:"string":null!==(r=E(e))&&void 0!==r?r:e.name}function I(e){const t={s:!1,i:!1,u:!1},n=N(e.definition,t),r=Object.entries(t).filter(([,e])=>e).map(([e])=>e).join("");return new RegExp(n,r)}const S=/[\s\S]/.source;function N(e,t){if(i.Fy(e))return w((a=e).elements.map(e=>N(e)).join("|"),{cardinality:a.cardinality,lookahead:a.lookahead});if(i.O4(e))return w((s=e).elements.map(e=>N(e)).join(""),{cardinality:s.cardinality,lookahead:s.lookahead});if(i.Bg(e))return function(e){if(e.right)return w(`[${C(e.left)}-${C(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1});return w(C(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1})}(e);if(i.lF(e)){const t=e.rule.ref;if(!t)throw new Error("Missing rule reference.");return w(N(t.definition),{cardinality:e.cardinality,lookahead:e.lookahead})}if(i.GL(e))return w(`(?!${N((r=e).terminal)})${S}*?`,{cardinality:r.cardinality,lookahead:r.lookahead});if(i.Mz(e))return w(`${S}*?${N((n=e).terminal)}`,{cardinality:n.cardinality,lookahead:n.lookahead});if(i.vd(e)){const n=e.regex.lastIndexOf("/"),r=e.regex.substring(1,n),i=e.regex.substring(n+1);return t&&(t.i=i.includes("i"),t.s=i.includes("s"),t.u=i.includes("u")),w(r,{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1})}if(i.z2(e))return w(S,{cardinality:e.cardinality,lookahead:e.lookahead});throw new Error(`Invalid terminal element: ${null==e?void 0:e.$type}`);var n,r,s,a}function C(e){return(0,l.Nt)(e.value)}function w(e,t){var n;return(!1!==t.wrap||t.lookahead)&&(e=`(${null!==(n=t.lookahead)&&void 0!==n?n:""}${e})`),t.cardinality?`${e}${t.cardinality}`:e}},966:(e,t)=>{function n(e){return"string"==typeof e||e instanceof String}function r(e){return Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.stringArray=t.array=t.func=t.error=t.number=t.string=t.boolean=void 0,t.boolean=function(e){return!0===e||!1===e},t.string=n,t.number=function(e){return"number"==typeof e||e instanceof Number},t.error=function(e){return e instanceof Error},t.func=function(e){return"function"==typeof e},t.array=r,t.stringArray=function(e){return r(e)&&e.every(e=>n(e))}},1477:(e,t,n)=>{n.d(t,{$:()=>c});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function c(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.AM,l);return t.ServiceRegistry.register(n),{shared:t,Packet:n}}(0,r.K2)(c,"createPacketServices")},1564:(e,t,n)=>{n.d(t,{W:()=>r,d:()=>i});class r extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}}function i(e){throw new Error("Error! The input value was not handled.")}},1633:(e,t,n)=>{n.d(t,{d:()=>f});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},l=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,c=class extends r.dg{static{(0,r.K2)(this,"TreemapValueConverter")}runCustomConverter(e,t,n){if("NUMBER2"===e.name)return parseFloat(t.replace(/,/g,""));if("SEPARATOR"===e.name)return t.substring(1,t.length-1);if("STRING2"===e.name)return t.substring(1,t.length-1);if("INDENTATION"===e.name)return t.length;if("ClassDef"===e.name){if("string"!=typeof t)return t;const e=l.exec(t);if(e)return{$type:"ClassDefStatement",className:e[1],styleText:e[2]||void 0}}}};function u(e){const t=e.validation.TreemapValidator,n=e.validation.ValidationRegistry;if(n){const e={Treemap:t.checkSingleRoot.bind(t)};n.register(e,t)}}(0,r.K2)(u,"registerValidationChecks");var d=class{static{(0,r.K2)(this,"TreemapValidator")}checkSingleRoot(e,t){let n;for(const r of e.TreemapRows)r.item&&(void 0===n&&void 0===r.indent?n=0:(void 0===r.indent||void 0!==n&&n>=parseInt(r.indent,10))&&t("error","Multiple root nodes are not allowed in a treemap.",{node:r,property:"item"}))}},h={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new c,"ValueConverter")},validation:{TreemapValidator:(0,r.K2)(()=>new d,"TreemapValidator")}};function f(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.eV,h);return t.ServiceRegistry.register(n),u(n),{shared:t,Treemap:n}}(0,r.K2)(f,"createTreemapServices")},1719:(e,t,n)=>{n.d(t,{B5:()=>a,Rf:()=>o,Td:()=>l,Vj:()=>c,fq:()=>r,iD:()=>u});class r{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){const e=this.iterator();return Boolean(e.next().done)}count(){const e=this.iterator();let t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){const e=[],t=this.iterator();let n;do{n=t.next(),void 0!==n.value&&e.push(n.value)}while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){const n=this.map(n=>[e?e(n):n,t?t(n):n]);return new Map(n)}toString(){return this.join()}concat(e){return new r(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),e=>{let t;if(!e.firstDone){do{if(t=this.nextFn(e.first),!t.done)return t}while(!t.done);e.firstDone=!0}do{if(t=e.iterator.next(),!t.done)return t}while(!t.done);return o})}join(e=","){const t=this.iterator();let n,r="",s=!1;do{n=t.next(),n.done||(s&&(r+=e),r+=i(n.value)),s=!0}while(!n.done);return r}indexOf(e,t=0){const n=this.iterator();let r=0,i=n.next();for(;!i.done;){if(r>=t&&i.value===e)return r;i=n.next(),r++}return-1}every(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){const t=this.iterator();let n=0,r=t.next();for(;!r.done;)e(r.value,n),r=t.next(),n++}map(e){return new r(this.startFn,t=>{const{done:n,value:r}=this.nextFn(t);return n?o:{done:!1,value:e(r)}})}filter(e){return new r(this.startFn,t=>{let n;do{if(n=this.nextFn(t),!n.done&&e(n.value))return n}while(!n.done);return o})}nonNullable(){return this.filter(e=>null!=e)}reduce(e,t){const n=this.iterator();let r=t,i=n.next();for(;!i.done;)r=void 0===r?i.value:e(r,i.value),i=n.next();return r}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){const r=e.next();if(r.done)return n;const i=this.recursiveReduce(e,t,n);return void 0===i?r.value:t(i,r.value)}find(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){const t=this.iterator();let n=0,r=t.next();for(;!r.done;){if(e(r.value))return n;r=t.next(),n++}return-1}includes(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(e){return new r(()=>({this:this.startFn()}),t=>{do{if(t.iterator){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}const{done:n,value:r}=this.nextFn(t.this);if(!n){const n=e(r);if(!s(n))return{done:!1,value:n};t.iterator=n[Symbol.iterator]()}}while(t.iterator);return o})}flat(e){if(void 0===e&&(e=1),e<=0)return this;const t=e>1?this.flat(e-1):this;return new r(()=>({this:t.startFn()}),e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}const{done:n,value:r}=t.nextFn(e.this);if(!n){if(!s(r))return{done:!1,value:r};e.iterator=r[Symbol.iterator]()}}while(e.iterator);return o})}head(){const e=this.iterator().next();if(!e.done)return e.value}tail(e=1){return new r(()=>{const t=this.startFn();for(let n=0;n<e;n++){if(this.nextFn(t).done)return t}return t},this.nextFn)}limit(e){return new r(()=>({size:0,state:this.startFn()}),t=>(t.size++,t.size>e?o:this.nextFn(t.state)))}distinct(e){return new r(()=>({set:new Set,internalState:this.startFn()}),t=>{let n;do{if(n=this.nextFn(t.internalState),!n.done){const r=e?e(n.value):n.value;if(!t.set.has(r))return t.set.add(r),n}}while(!n.done);return o})}exclude(e,t){const n=new Set;for(const r of e){const e=t?t(r):r;n.add(e)}return this.filter(e=>{const r=t?t(e):e;return!n.has(r)})}}function i(e){return"string"==typeof e?e:void 0===e?"undefined":"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e)}function s(e){return!!e&&"function"==typeof e[Symbol.iterator]}const a=new r(()=>{},()=>o),o=Object.freeze({done:!0,value:void 0});function l(...e){if(1===e.length){const t=e[0];if(t instanceof r)return t;if(s(t))return new r(()=>t[Symbol.iterator](),e=>e.next());if("number"==typeof t.length)return new r(()=>({index:0}),e=>e.index<t.length?{done:!1,value:t[e.index++]}:o)}return e.length>1?new r(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex<t.array.length)return{done:!1,value:t.array[t.arrIndex++]};t.array=void 0,t.arrIndex=0}if(t.collIndex<e.length){const n=e[t.collIndex++];s(n)?t.iterator=n[Symbol.iterator]():n&&"number"==typeof n.length&&(t.array=n)}}while(t.iterator||t.array||t.collIndex<e.length);return o}):a}class c extends r{constructor(e,t,n){super(()=>({iterators:(null==n?void 0:n.includeRoot)?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),e=>{for(e.pruned&&(e.iterators.pop(),e.pruned=!1);e.iterators.length>0;){const n=e.iterators[e.iterators.length-1].next();if(!n.done)return e.iterators.push(t(n.value)[Symbol.iterator]()),n;e.iterators.pop()}return o})}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}}var u;!function(e){e.sum=function(e){return e.reduce((e,t)=>e+t,0)},e.product=function(e){return e.reduce((e,t)=>e*t,0)},e.min=function(e){return e.reduce((e,t)=>Math.min(e,t))},e.max=function(e){return e.reduce((e,t)=>Math.max(e,t))}}(u||(u={}))},1885:(e,t,n)=>{n.d(t,{v:()=>c});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function c(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.e5,l);return t.ServiceRegistry.register(n),{shared:t,Info:n}}(0,r.K2)(c,"createInfoServices")},1945:(e,t,n)=>{n.d(t,{Q:()=>c});var r=n(9637),i=n(2151),s=n(9683),a=n(418),o=n(2806),l=n(1719);class c{constructor(){this.diagnostics=[]}buildTokens(e,t){const n=(0,l.Td)((0,a.YV)(e,!1)),r=this.buildTerminalTokens(n),i=this.buildKeywordTokens(n,r,t);return r.forEach(e=>{const t=e.PATTERN;"object"==typeof t&&t&&"test"in t&&(0,o.Yv)(t)?i.unshift(e):i.push(e)}),i}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){const e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(i.rE).filter(e=>!e.fragment).map(e=>this.buildTerminalToken(e)).toArray()}buildTerminalToken(e){const t=(0,a.S)(e),n=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,i={name:e.name,PATTERN:n};return"function"==typeof n&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=(0,o.Yv)(t)?r.JG.SKIPPED:"hidden"),i}requiresCustomPattern(e){return!(!e.flags.includes("u")&&!e.flags.includes("s"))||!(!e.source.includes("?<=")&&!e.source.includes("?<!"))}regexPatternFunction(e){const t=new RegExp(e,e.flags+"y");return(e,n)=>{t.lastIndex=n;return t.exec(e)}}buildKeywordTokens(e,t,n){return e.filter(i.s7).flatMap(e=>(0,s.Uo)(e).filter(i.wb)).distinct(e=>e.value).toArray().sort((e,t)=>t.value.length-e.value.length).map(e=>this.buildKeywordToken(e,t,Boolean(null==n?void 0:n.caseInsensitive)))}buildKeywordToken(e,t,n){const r=this.buildKeywordPattern(e,n),i={name:e.value,PATTERN:r,LONGER_ALT:this.findLongerAlt(e,t)};return"function"==typeof r&&(i.LINE_BREAKS=!0),i}buildKeywordPattern(e,t){return t?new RegExp((0,o.Ao)(e.value)):e.value}findLongerAlt(e,t){return t.reduce((t,n)=>{const r=null==n?void 0:n.PATTERN;return(null==r?void 0:r.source)&&(0,o.PC)("^"+r.source+"$",e.value)&&t.push(n),t},[])}}},2151:(e,t,n)=>{n.d(t,{$g:()=>fe,Bg:()=>J,Ct:()=>S,Cz:()=>p,D8:()=>U,FO:()=>re,Fy:()=>me,GL:()=>ce,IZ:()=>se,Mz:()=>Ee,O4:()=>ye,QX:()=>Ie,RP:()=>T,S2:()=>k,SP:()=>$,TF:()=>L,Tu:()=>g,Xj:()=>V,_c:()=>te,cY:()=>Re,fG:()=>M,jp:()=>X,lF:()=>Ae,r1:()=>u,rE:()=>K,s7:()=>O,vd:()=>de,ve:()=>z,wb:()=>oe,wh:()=>Q,z2:()=>xe});var r=n(2479);const i="AbstractRule";const s="AbstractType";const a="Condition";const o="TypeDefinition";const l="ValueLiteral";const c="AbstractElement";function u(e){return Se.isInstance(e,c)}const d="ArrayLiteral";const h="ArrayType";const f="BooleanLiteral";function p(e){return Se.isInstance(e,f)}const m="Conjunction";function g(e){return Se.isInstance(e,m)}const y="Disjunction";function T(e){return Se.isInstance(e,y)}const A="Grammar";const v="GrammarImport";const R="InferredType";function $(e){return Se.isInstance(e,R)}const E="Interface";function k(e){return Se.isInstance(e,E)}const x="NamedArgument";const I="Negation";function S(e){return Se.isInstance(e,I)}const N="NumberLiteral";const C="Parameter";const w="ParameterReference";function L(e){return Se.isInstance(e,w)}const b="ParserRule";function O(e){return Se.isInstance(e,b)}const _="ReferenceType";const P="ReturnType";function M(e){return Se.isInstance(e,P)}const D="SimpleType";function U(e){return Se.isInstance(e,D)}const F="StringLiteral";const G="TerminalRule";function K(e){return Se.isInstance(e,G)}const B="Type";function V(e){return Se.isInstance(e,B)}const j="TypeAttribute";const H="UnionType";const W="Action";function z(e){return Se.isInstance(e,W)}const Y="Alternatives";function X(e){return Se.isInstance(e,Y)}const q="Assignment";function Q(e){return Se.isInstance(e,q)}const Z="CharacterRange";function J(e){return Se.isInstance(e,Z)}const ee="CrossReference";function te(e){return Se.isInstance(e,ee)}const ne="EndOfFile";function re(e){return Se.isInstance(e,ne)}const ie="Group";function se(e){return Se.isInstance(e,ie)}const ae="Keyword";function oe(e){return Se.isInstance(e,ae)}const le="NegatedToken";function ce(e){return Se.isInstance(e,le)}const ue="RegexToken";function de(e){return Se.isInstance(e,ue)}const he="RuleCall";function fe(e){return Se.isInstance(e,he)}const pe="TerminalAlternatives";function me(e){return Se.isInstance(e,pe)}const ge="TerminalGroup";function ye(e){return Se.isInstance(e,ge)}const Te="TerminalRuleCall";function Ae(e){return Se.isInstance(e,Te)}const ve="UnorderedGroup";function Re(e){return Se.isInstance(e,ve)}const $e="UntilToken";function Ee(e){return Se.isInstance(e,$e)}const ke="Wildcard";function xe(e){return Se.isInstance(e,ke)}class Ie extends r.kD{getAllTypes(){return[c,i,s,W,Y,d,h,q,f,Z,a,m,ee,y,ne,A,v,ie,R,E,ae,x,le,I,N,C,w,b,_,ue,P,he,D,F,pe,ge,G,Te,B,j,o,H,ve,$e,l,ke]}computeIsSubtype(e,t){switch(e){case W:case Y:case q:case Z:case ee:case ne:case ie:case ae:case le:case ue:case he:case pe:case ge:case Te:case ve:case $e:case ke:return this.isSubtype(c,t);case d:case N:case F:return this.isSubtype(l,t);case h:case _:case D:case H:return this.isSubtype(o,t);case f:return this.isSubtype(a,t)||this.isSubtype(l,t);case m:case y:case I:case w:return this.isSubtype(a,t);case R:case E:case B:return this.isSubtype(s,t);case b:return this.isSubtype(i,t)||this.isSubtype(s,t);case G:return this.isSubtype(i,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;switch(t){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return s;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return i;case"Grammar:usedGrammars":return A;case"NamedArgument:parameter":case"ParameterReference:parameter":return C;case"TerminalRuleCall:rule":return G;default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case c:return{name:c,properties:[{name:"cardinality"},{name:"lookahead"}]};case d:return{name:d,properties:[{name:"elements",defaultValue:[]}]};case h:return{name:h,properties:[{name:"elementType"}]};case f:return{name:f,properties:[{name:"true",defaultValue:!1}]};case m:return{name:m,properties:[{name:"left"},{name:"right"}]};case y:return{name:y,properties:[{name:"left"},{name:"right"}]};case A:return{name:A,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case v:return{name:v,properties:[{name:"path"}]};case R:return{name:R,properties:[{name:"name"}]};case E:return{name:E,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case x:return{name:x,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case I:return{name:I,properties:[{name:"value"}]};case N:return{name:N,properties:[{name:"value"}]};case C:return{name:C,properties:[{name:"name"}]};case w:return{name:w,properties:[{name:"parameter"}]};case b:return{name:b,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case _:return{name:_,properties:[{name:"referenceType"}]};case P:return{name:P,properties:[{name:"name"}]};case D:return{name:D,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case F:return{name:F,properties:[{name:"value"}]};case G:return{name:G,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case B:return{name:B,properties:[{name:"name"},{name:"type"}]};case j:return{name:j,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case H:return{name:H,properties:[{name:"types",defaultValue:[]}]};case W:return{name:W,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Y:return{name:Y,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case q:return{name:q,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Z:return{name:Z,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case ee:return{name:ee,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case ne:return{name:ne,properties:[{name:"cardinality"},{name:"lookahead"}]};case ie:return{name:ie,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case ae:return{name:ae,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case le:return{name:le,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case ue:return{name:ue,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case he:return{name:he,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case pe:return{name:pe,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case ge:return{name:ge,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Te:return{name:Te,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case ve:return{name:ve,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case $e:return{name:$e,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case ke:return{name:ke,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}}const Se=new Ie},2479:(e,t,n)=>{function r(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$type}function i(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$refText}function s(e){return"object"==typeof e&&null!==e&&"string"==typeof e.name&&"string"==typeof e.type&&"string"==typeof e.path}function a(e){return"object"==typeof e&&null!==e&&r(e.container)&&i(e.reference)&&"string"==typeof e.message}n.d(t,{A_:()=>i,FC:()=>c,Nr:()=>s,Zl:()=>a,br:()=>u,kD:()=>o,mD:()=>l,ng:()=>r});class o{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return r(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});const r=n[t];if(void 0!==r)return r;{const r=this.computeIsSubtype(e,t);return n[t]=r,r}}getAllSubTypes(e){const t=this.allSubtypes[e];if(t)return t;{const t=this.getAllTypes(),n=[];for(const r of t)this.isSubtype(r,e)&&n.push(r);return this.allSubtypes[e]=n,n}}}function l(e){return"object"==typeof e&&null!==e&&Array.isArray(e.content)}function c(e){return"object"==typeof e&&null!==e&&"object"==typeof e.tokenType}function u(e){return l(e)&&"string"==typeof e.fullText}},2676:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=t.Event=void 0;const r=n(9590);var i;!function(e){const t={dispose(){}};e.None=function(){return t}}(i||(t.Event=i={}));class s{add(e,t=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let n=!1;for(let r=0,i=this._callbacks.length;r<i;r++)if(this._callbacks[r]===e){if(this._contexts[r]===t)return this._callbacks.splice(r,1),void this._contexts.splice(r,1);n=!0}if(n)throw new Error("When adding a listener with a context, you should remove it with the same context")}invoke(...e){if(!this._callbacks)return[];const t=[],n=this._callbacks.slice(0),i=this._contexts.slice(0);for(let a=0,o=n.length;a<o;a++)try{t.push(n[a].apply(i[a],e))}catch(s){(0,r.default)().console.error(s)}return t}isEmpty(){return!this._callbacks||0===this._callbacks.length}dispose(){this._callbacks=void 0,this._contexts=void 0}}class a{constructor(e){this._options=e}get event(){return this._event||(this._event=(e,t,n)=>{this._callbacks||(this._callbacks=new s),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);const r={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),r.dispose=a._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(r),r}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}}t.Emitter=a,a._noop=function(){}},2806:(e,t,n)=>{n.d(t,{Ao:()=>h,Nt:()=>d,PC:()=>f,TH:()=>i,Yv:()=>u,lU:()=>l});var r=n(5186);const i=/\r?\n/gm,s=new r.H;class a extends r.z{constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){const t=String.fromCharCode(e.value);if(this.multiline||"\n"!==t||(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const e=d(t);this.endRegexpStack.push(e),this.isStarting&&(this.startRegexp+=e)}}visitSet(e){if(!this.multiline){const t=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(t);this.multiline=Boolean("\n".match(n))}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){if("Group"===e.type){if(e.quantifier)return}super.visitChildren(e)}}const o=new a;function l(e){try{return"string"==typeof e&&(e=new RegExp(e)),e=e.toString(),o.reset(e),o.visit(s.pattern(e)),o.multiline}catch(t){return!1}}const c="\f\n\r\t\v \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff".split("");function u(e){const t="string"==typeof e?new RegExp(e):e;return c.some(e=>t.test(e))}function d(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function h(e){return Array.prototype.map.call(e,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:d(e)).join("")}function f(e,t){const n=function(e){"string"==typeof e&&(e=new RegExp(e));const t=e,n=e.source;let r=0;function i(){let e,s="";function a(e){s+=n.substr(r,e),r+=e}function o(e){s+="(?:"+n.substr(r,e)+"|$)",r+=e}for(;r<n.length;)switch(n[r]){case"\\":switch(n[r+1]){case"c":o(3);break;case"x":o(4);break;case"u":t.unicode?"{"===n[r+2]?o(n.indexOf("}",r)-r+1):o(6):o(2);break;case"p":case"P":t.unicode?o(n.indexOf("}",r)-r+1):o(2);break;case"k":o(n.indexOf(">",r)-r+1);break;default:o(2)}break;case"[":e=/\[(?:\\.|.)*?\]/g,e.lastIndex=r,e=e.exec(n)||[],o(e[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":a(1);break;case"{":e=/\{\d+,?\d*\}/g,e.lastIndex=r,e=e.exec(n),e?a(e[0].length):o(1);break;case"(":if("?"===n[r+1])switch(n[r+2]){case":":s+="(?:",r+=3,s+=i()+"|$)";break;case"=":s+="(?=",r+=3,s+=i()+")";break;case"!":e=r,r+=3,i(),s+=n.substr(e,r-e);break;case"<":switch(n[r+3]){case"=":case"!":e=r,r+=4,i(),s+=n.substr(e,r-e);break;default:a(n.indexOf(">",r)-r+1),s+=i()+"|$)"}}else a(1),s+=i()+"|$)";break;case")":return++r,s;default:o(1)}return s}return new RegExp(i(),e.flags)}(e),r=t.match(n);return!!r&&r[0].length>0}},4298:(e,t,n)=>{n.d(t,{D:()=>i});class r{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}}const i={fileSystemProvider:()=>new r}},5033:(e,t,n)=>{n.d(t,{d:()=>a});var r,i=n(2151),s=n(418);class a{convert(e,t){let n=t.grammarSource;if((0,i._c)(n)&&(n=(0,s.g4)(n)),(0,i.$g)(n)){const r=n.rule.ref;if(!r)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(r,e,t)}return e}runConverter(e,t,n){var i;switch(e.name.toUpperCase()){case"INT":return r.convertInt(t);case"STRING":return r.convertString(t);case"ID":return r.convertID(t)}switch(null===(i=(0,s.P3)(e))||void 0===i?void 0:i.toLowerCase()){case"number":return r.convertNumber(t);case"boolean":return r.convertBoolean(t);case"bigint":return r.convertBigint(t);case"date":return r.convertDate(t);default:return t}}}!function(e){function t(e){switch(e){case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";case"v":return"\v";case"0":return"\0";default:return e}}e.convertString=function(e){let n="";for(let r=1;r<e.length-1;r++){const i=e.charAt(r);if("\\"===i){n+=t(e.charAt(++r))}else n+=i}return n},e.convertID=function(e){return"^"===e.charAt(0)?e.substring(1):e},e.convertInt=function(e){return parseInt(e)},e.convertBigint=function(e){return BigInt(e)},e.convertDate=function(e){return new Date(e)},e.convertNumber=function(e){return Number(e)},e.convertBoolean=function(e){return"true"===e.toLowerCase()}}(r||(r={}))},5186:(e,t,n)=>{function r(e){return e.charCodeAt(0)}function i(e,t){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}function s(e,t){if(!0===e[t])throw"duplicate flag "+t;e[t];e[t]=!0}function a(e){if(void 0===e)throw Error("Internal Error - Should never get here!");return!0}function o(){throw Error("Internal Error - Should never get here!")}function l(e){return"Character"===e.type}n.d(t,{z:()=>g,H:()=>m});const c=[];for(let y=r("0");y<=r("9");y++)c.push(y);const u=[r("_")].concat(c);for(let y=r("a");y<=r("z");y++)u.push(y);for(let y=r("A");y<=r("Z");y++)u.push(y);const d=[r(" "),r("\f"),r("\n"),r("\r"),r("\t"),r("\v"),r("\t"),r("\xa0"),r("\u1680"),r("\u2000"),r("\u2001"),r("\u2002"),r("\u2003"),r("\u2004"),r("\u2005"),r("\u2006"),r("\u2007"),r("\u2008"),r("\u2009"),r("\u200a"),r("\u2028"),r("\u2029"),r("\u202f"),r("\u205f"),r("\u3000"),r("\ufeff")],h=/[0-9a-fA-F]/,f=/[0-9]/,p=/[1-9]/;class m{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");const t=this.disjunction();this.consumeChar("/");const n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":s(n,"global");break;case"i":s(n,"ignoreCase");break;case"m":s(n,"multiLine");break;case"u":s(n,"unicode");break;case"y":s(n,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:t,loc:this.loc(0)}}disjunction(){const e=[],t=this.idx;for(e.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){const e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":let t;switch(this.consumeChar("?"),this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead"}a(t);const n=this.disjunction();return this.consumeChar(")"),{type:t,value:n,loc:this.loc(e)}}return o()}quantifier(e=!1){let t;const n=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":const n=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:n,atMost:n};break;case",":let e;this.isDigit()?(e=this.integerIncludingZero(),t={atLeast:n,atMost:e}):t={atLeast:n,atMost:1/0},this.consumeChar("}")}if(!0===e&&void 0===t)return;a(t)}if(!0!==e||void 0!==t)return a(t)?("?"===this.peekChar(0)?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(n),t):void 0}atom(){let e;const t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group()}return void 0===e&&this.isPatternCharacter()&&(e=this.patternCharacter()),a(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):o()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[r("\n"),r("\r"),r("\u2028"),r("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=c;break;case"D":e=c,t=!0;break;case"s":e=d;break;case"S":e=d,t=!0;break;case"w":e=u;break;case"W":e=u,t=!0}return a(e)?{type:"Set",value:e,complement:t}:o()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=r("\f");break;case"n":e=r("\n");break;case"r":e=r("\r");break;case"t":e=r("\t");break;case"v":e=r("\v")}return a(e)?{type:"Character",value:e}:o()}controlLetterEscapeAtom(){this.consumeChar("c");const e=this.popChar();if(!1===/[a-zA-Z]/.test(e))throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:r("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:r(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case"\n":case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:return{type:"Character",value:r(this.popChar())}}}characterClass(){const e=[];let t=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),t=!0);this.isClassAtom();){const t=this.classAtom();t.type;if(l(t)&&this.isRangeDash()){this.consumeChar("-");const n=this.classAtom();n.type;if(l(n)){if(n.value<t.value)throw Error("Range out of order in character class");e.push({from:t.value,to:n.value})}else i(t.value,e),e.push(r("-")),i(n.value,e)}else i(t.value,e)}return this.consumeChar("]"),{type:"Set",complement:t,value:e}}classAtom(){switch(this.peekChar()){case"]":case"\n":case"\r":case"\u2028":case"\u2029":throw Error("TBD");case"\\":return this.classEscape();default:return this.classPatternCharacterAtom()}}classEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"b":return this.consumeChar("b"),{type:"Character",value:r("\b")};case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}group(){let e=!0;if(this.consumeChar("("),"?"===this.peekChar(0))this.consumeChar("?"),this.consumeChar(":"),e=!1;else this.groupIdx++;const t=this.disjunction();this.consumeChar(")");const n={type:"Group",capturing:e,value:t};return e&&(n.idx=this.groupIdx),n}positiveInteger(){let e=this.popChar();if(!1===p.test(e))throw Error("Expecting a positive integer");for(;f.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}integerIncludingZero(){let e=this.popChar();if(!1===f.test(e))throw Error("Expecting an integer");for(;f.test(this.peekChar(0));)e+=this.popChar();return parseInt(e,10)}patternCharacter(){const e=this.popChar();switch(e){case"\n":case"\r":case"\u2028":case"\u2029":case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":throw Error("TBD");default:return{type:"Character",value:r(e)}}}isRegExpFlag(){switch(this.peekChar(0)){case"g":case"i":case"m":case"u":case"y":return!0;default:return!1}}isRangeDash(){return"-"===this.peekChar()&&this.isClassAtom(1)}isDigit(){return f.test(this.peekChar(0))}isClassAtom(e=0){switch(this.peekChar(e)){case"]":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}isTerm(){return this.isAtom()||this.isAssertion()}isAtom(){if(this.isPatternCharacter())return!0;switch(this.peekChar(0)){case".":case"\\":case"[":case"(":return!0;default:return!1}}isAssertion(){switch(this.peekChar(0)){case"^":case"$":return!0;case"\\":switch(this.peekChar(1)){case"b":case"B":return!0;default:return!1}case"(":return"?"===this.peekChar(1)&&("="===this.peekChar(2)||"!"===this.peekChar(2));default:return!1}}isQuantifier(){const e=this.saveState();try{return void 0!==this.quantifier(!0)}catch(t){return!1}finally{this.restoreState(e)}}isPatternCharacter(){switch(this.peekChar()){case"^":case"$":case"\\":case".":case"*":case"+":case"?":case"(":case")":case"[":case"|":case"/":case"\n":case"\r":case"\u2028":case"\u2029":return!1;default:return!0}}parseHexDigits(e){let t="";for(let n=0;n<e;n++){const e=this.popChar();if(!1===h.test(e))throw Error("Expecting a HexDecimal digits");t+=e}return{type:"Character",value:parseInt(t,16)}}peekChar(e=0){return this.input[this.idx+e]}popChar(){const e=this.peekChar(0);return this.consumeChar(void 0),e}consumeChar(e){if(void 0!==e&&this.input[this.idx]!==e)throw Error("Expected: '"+e+"' but found: '"+this.input[this.idx]+"' at offset: "+this.idx);if(this.idx>=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}class g{visitChildren(e){for(const t in e){const n=e[t];e.hasOwnProperty(t)&&(void 0!==n.type?this.visit(n):Array.isArray(n)&&n.forEach(e=>{this.visit(e)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e)}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}},6373:(e,t,n)=>{n.d(t,{El:()=>d,NS:()=>a,SX:()=>c,pO:()=>o,r4:()=>u,v:()=>h,wf:()=>l});var r,i=n(2479),s=n(1719);function a(e){return new s.Vj(e,e=>(0,i.mD)(e)?e.content:[],{includeRoot:!0})}function o(e,t){for(;e.container;)if((e=e.container)===t)return!0;return!1}function l(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function c(e){if(!e)return;const{offset:t,end:n,range:r}=e;return{range:r,offset:t,end:n,length:n-t}}function u(e,t){const n=function(e,t){if(e.end.line<t.start.line||e.end.line===t.start.line&&e.end.character<=t.start.character)return r.Before;if(e.start.line>t.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return r.After;const n=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,i=e.end.line<t.end.line||e.end.line===t.end.line&&e.end.character<=t.end.character;return n&&i?r.Inside:n?r.OverlapBack:i?r.OverlapFront:r.Outside}(e,t);return n>r.After}!function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"}(r||(r={}));const d=/^[\w\p{L}]$/u;function h(e,t){if(e){const n=function(e,t=!0){for(;e.container;){const n=e.container;let r=n.content.indexOf(e);for(;r>0;){r--;const e=n.content[r];if(t||!e.hidden)return e}e=n}return}(e,!0);if(n&&f(n,t))return n;if((0,i.br)(e)){for(let n=e.content.findIndex(e=>!e.hidden)-1;n>=0;n--){const r=e.content[n];if(f(r,t))return r}}}}function f(e,t){return(0,i.FC)(e)&&t.includes(e.tokenType.name)}},7539:(e,t,n)=>{n.d(t,{b:()=>c});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function c(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.eZ,l);return t.ServiceRegistry.register(n),{shared:t,GitGraph:n}}(0,r.K2)(c,"createGitGraphServices")},7608:(e,t,n)=>{var r;n.d(t,{A:()=>s,r:()=>i}),(()=>{var e={470:e=>{function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,s=-1,a=0,o=0;o<=e.length;++o){if(o<e.length)n=e.charCodeAt(o);else{if(47===n)break;n=47}if(47===n){if(s===o-1||1===a);else if(s!==o-1&&2===a){if(r.length<2||2!==i||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var l=r.lastIndexOf("/");if(l!==r.length-1){-1===l?(r="",i=0):i=(r=r.slice(0,l)).length-1-r.lastIndexOf("/"),s=o,a=0;continue}}else if(2===r.length||1===r.length){r="",i=0,s=o,a=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(s+1,o):r=e.slice(s+1,o),i=o-s-1;s=o,a=0}else 46===n&&-1!==a?++a:a=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,s=arguments.length-1;s>=-1&&!i;s--){var a;s>=0?a=arguments[s]:(void 0===e&&(e=process.cwd()),a=e),t(a),0!==a.length&&(r=a+"/"+r,i=47===a.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var i=arguments[n];t(i),i.length>0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;i<e.length&&47===e.charCodeAt(i);++i);for(var s=e.length,a=s-i,o=1;o<n.length&&47===n.charCodeAt(o);++o);for(var l=n.length-o,c=a<l?a:l,u=-1,d=0;d<=c;++d){if(d===c){if(l>c){if(47===n.charCodeAt(o+d))return n.slice(o+d+1);if(0===d)return n.slice(o+d)}else a>c&&(47===e.charCodeAt(i+d)?u=d:0===d&&(u=0));break}var h=e.charCodeAt(i+d);if(h!==n.charCodeAt(o+d))break;47===h&&(u=d)}var f="";for(d=i+u+1;d<=s;++d)d!==s&&47!==e.charCodeAt(d)||(0===f.length?f+="..":f+="/..");return f.length>0?f+n.slice(o+u):(o+=u,47===n.charCodeAt(o)&&++o,n.slice(o))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,s=!0,a=e.length-1;a>=1;--a)if(47===(n=e.charCodeAt(a))){if(!s){i=a;break}}else s=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,s=-1,a=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var o=n.length-1,l=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!a){i=r+1;break}}else-1===l&&(a=!1,l=r+1),o>=0&&(c===n.charCodeAt(o)?-1==--o&&(s=r):(o=-1,s=l))}return i===s?s=l:-1===s&&(s=e.length),e.slice(i,s)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!a){i=r+1;break}}else-1===s&&(a=!1,s=r+1);return-1===s?"":e.slice(i,s)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,s=!0,a=0,o=e.length-1;o>=0;--o){var l=e.charCodeAt(o);if(47!==l)-1===i&&(s=!1,i=o+1),46===l?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!s){r=o+1;break}}return-1===n||-1===i||0===a||1===a&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),s=47===i;s?(n.root="/",r=1):r=0;for(var a=-1,o=0,l=-1,c=!0,u=e.length-1,d=0;u>=r;--u)if(47!==(i=e.charCodeAt(u)))-1===l&&(c=!1,l=u+1),46===i?-1===a?a=u:1!==d&&(d=1):-1!==a&&(d=-1);else if(!c){o=u+1;break}return-1===a||-1===l||0===d||1===d&&a===l-1&&a===o+1?-1!==l&&(n.base=n.name=0===o&&s?e.slice(1,l):e.slice(o,l)):(0===o&&s?(n.name=e.slice(1,a),n.base=e.slice(1,l)):(n.name=e.slice(o,a),n.base=e.slice(o,l)),n.ext=e.slice(a,l)),o>0?n.dir=e.slice(0,o-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{let e;if(n.r(i),n.d(i,{URI:()=>u,Utils:()=>k}),"object"==typeof process)e="win32"===process.platform;else if("object"==typeof navigator){let t=navigator.userAgent;e=t.indexOf("Windows")>=0}const t=/^\w[\w\d+.-]*$/,r=/^\//,s=/^\/\//;function a(e,n){if(!e.scheme&&n)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!t.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!r.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(s.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}const o="",l="/",c=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class u{static isUri(e){return e instanceof u||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"string"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}scheme;authority;path;query;fragment;constructor(e,t,n,r,i,s=!1){"object"==typeof e?(this.scheme=e.scheme||o,this.authority=e.authority||o,this.path=e.path||o,this.query=e.query||o,this.fragment=e.fragment||o):(this.scheme=function(e,t){return e||t?e:"file"}(e,s),this.authority=t||o,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==l&&(t=l+t):t=l}return t}(this.scheme,n||o),this.query=r||o,this.fragment=i||o,a(this,s))}get fsPath(){return g(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:r,query:i,fragment:s}=e;return void 0===t?t=this.scheme:null===t&&(t=o),void 0===n?n=this.authority:null===n&&(n=o),void 0===r?r=this.path:null===r&&(r=o),void 0===i?i=this.query:null===i&&(i=o),void 0===s?s=this.fragment:null===s&&(s=o),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&s===this.fragment?this:new h(t,n,r,i,s)}static parse(e,t=!1){const n=c.exec(e);return n?new h(n[2]||o,v(n[4]||o),v(n[5]||o),v(n[7]||o),v(n[9]||o),t):new h(o,o,o,o,o)}static file(t){let n=o;if(e&&(t=t.replace(/\\/g,l)),t[0]===l&&t[1]===l){const e=t.indexOf(l,2);-1===e?(n=t.substring(2),t=l):(n=t.substring(2,e),t=t.substring(e)||l)}return new h("file",n,t,o,o)}static from(e){const t=new h(e.scheme,e.authority,e.path,e.query,e.fragment);return a(t,!0),t}toString(e=!1){return y(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof u)return e;{const t=new h(e);return t._formatted=e.external,t._fsPath=e._sep===d?e.fsPath:null,t}}return e}}const d=e?1:void 0;class h extends u{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=g(this,!1)),this._fsPath}toString(e=!1){return e?y(this,!0):(this._formatted||(this._formatted=y(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=d),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const f={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function p(e,t,n){let r,i=-1;for(let s=0;s<e.length;s++){const a=e.charCodeAt(s);if(a>=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57||45===a||46===a||95===a||126===a||t&&47===a||n&&91===a||n&&93===a||n&&58===a)-1!==i&&(r+=encodeURIComponent(e.substring(i,s)),i=-1),void 0!==r&&(r+=e.charAt(s));else{void 0===r&&(r=e.substr(0,s));const t=f[a];void 0!==t?(-1!==i&&(r+=encodeURIComponent(e.substring(i,s)),i=-1),r+=t):-1===i&&(i=s)}}return-1!==i&&(r+=encodeURIComponent(e.substring(i))),void 0!==r?r:e}function m(e){let t;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);35===r||63===r?(void 0===t&&(t=e.substr(0,n)),t+=f[r]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function g(t,n){let r;return r=t.authority&&t.path.length>1&&"file"===t.scheme?`//${t.authority}${t.path}`:47===t.path.charCodeAt(0)&&(t.path.charCodeAt(1)>=65&&t.path.charCodeAt(1)<=90||t.path.charCodeAt(1)>=97&&t.path.charCodeAt(1)<=122)&&58===t.path.charCodeAt(2)?n?t.path.substr(1):t.path[1].toLowerCase()+t.path.substr(2):t.path,e&&(r=r.replace(/\//g,"\\")),r}function y(e,t){const n=t?m:p;let r="",{scheme:i,authority:s,path:a,query:o,fragment:c}=e;if(i&&(r+=i,r+=":"),(s||"file"===i)&&(r+=l,r+=l),s){let e=s.indexOf("@");if(-1!==e){const t=s.substr(0,e);s=s.substr(e+1),e=t.lastIndexOf(":"),-1===e?r+=n(t,!1,!1):(r+=n(t.substr(0,e),!1,!1),r+=":",r+=n(t.substr(e+1),!1,!0)),r+="@"}s=s.toLowerCase(),e=s.lastIndexOf(":"),-1===e?r+=n(s,!1,!0):(r+=n(s.substr(0,e),!1,!0),r+=s.substr(e))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2)){const e=a.charCodeAt(1);e>=65&&e<=90&&(a=`/${String.fromCharCode(e+32)}:${a.substr(3)}`)}else if(a.length>=2&&58===a.charCodeAt(1)){const e=a.charCodeAt(0);e>=65&&e<=90&&(a=`${String.fromCharCode(e+32)}:${a.substr(2)}`)}r+=n(a,!0,!1)}return o&&(r+="?",r+=n(o,!1,!1)),c&&(r+="#",r+=t?c:p(c,!1,!1)),r}function T(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+T(e.substr(3)):e}}const A=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function v(e){return e.match(A)?e.replace(A,e=>T(e)):e}var R=n(470);const $=R.posix||R,E="/";var k;!function(e){e.joinPath=function(e,...t){return e.with({path:$.join(e.path,...t)})},e.resolvePath=function(e,...t){let n=e.path,r=!1;n[0]!==E&&(n=E+n,r=!0);let i=$.resolve(n,...t);return r&&i[0]===E&&!e.authority&&(i=i.substring(1)),e.with({path:i})},e.dirname=function(e){if(0===e.path.length||e.path===E)return e;let t=$.dirname(e.path);return 1===t.length&&46===t.charCodeAt(0)&&(t=""),e.with({path:t})},e.basename=function(e){return $.basename(e.path)},e.extname=function(e){return $.extname(e.path)}}(k||(k={}))})(),r=i})();const{URI:i,Utils:s}=r},7846:(e,t,n)=>{n.d(t,{f:()=>c});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},l={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new r.Tm,"ValueConverter")}};function c(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.YP,l);return t.ServiceRegistry.register(n),{shared:t,Radar:n}}(0,r.K2)(c,"createRadarServices")},7960:(e,t,n)=>{n.d(t,{mR:()=>xe,dg:()=>Ee,jE:()=>Te,Tm:()=>ke,eZ:()=>Ae,e5:()=>me,sr:()=>pe,AM:()=>ge,KX:()=>ye,YP:()=>ve,eV:()=>Re,K2:()=>m});var r=n(2479),i=n(8913),s=n(9364),a=n(2151),o=n(4298),l=n(7608);const c={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},u={AstReflection:()=>new a.QX};function d(e){var t;const n=function(){const e=(0,s.WQ)((0,i.u)(o.D),u),t=(0,s.WQ)((0,i.t)({shared:e}),c);return e.ServiceRegistry.register(t),t}(),r=n.serializer.JsonSerializer.deserialize(e);return n.shared.workspace.LangiumDocumentFactory.fromModel(r,l.r.parse(`memory://${null!==(t=r.name)&&void 0!==t?t:"grammar"}.langium`)),r}var h=n(5033),f=n(1945),p=Object.defineProperty,m=(e,t)=>p(e,"name",{value:t,configurable:!0}),g="Statement",y="Architecture";m(function(e){return J.isInstance(e,y)},"isArchitecture");var T="Axis",A="Branch";m(function(e){return J.isInstance(e,A)},"isBranch");var v="Checkout",R="CherryPicking",$="ClassDefStatement",E="Commit";m(function(e){return J.isInstance(e,E)},"isCommit");var k="Curve",x="Edge",I="Entry",S="GitGraph";m(function(e){return J.isInstance(e,S)},"isGitGraph");var N="Group",C="Info";m(function(e){return J.isInstance(e,C)},"isInfo");var w="Item",L="Junction",b="Merge";m(function(e){return J.isInstance(e,b)},"isMerge");var O="Option",_="Packet";m(function(e){return J.isInstance(e,_)},"isPacket");var P="PacketBlock";m(function(e){return J.isInstance(e,P)},"isPacketBlock");var M="Pie";m(function(e){return J.isInstance(e,M)},"isPie");var D="PieSection";m(function(e){return J.isInstance(e,D)},"isPieSection");var U="Radar",F="Service",G="Treemap";m(function(e){return J.isInstance(e,G)},"isTreemap");var K,B,V,j,H,W,z,Y="TreemapRow",X="Direction",q="Leaf",Q="Section",Z=class extends r.kD{static{m(this,"MermaidAstReflection")}getAllTypes(){return[y,T,A,v,R,$,E,k,X,x,I,S,N,C,w,L,q,b,O,_,P,M,D,U,Q,F,g,G,Y]}computeIsSubtype(e,t){switch(e){case A:case v:case R:case E:case b:return this.isSubtype(g,t);case X:return this.isSubtype(S,t);case q:case Q:return this.isSubtype(w,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;if("Entry:axis"===t)return T;throw new Error(`${t} is not a valid reference id.`)}getTypeMetaData(e){switch(e){case y:return{name:y,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case T:return{name:T,properties:[{name:"label"},{name:"name"}]};case A:return{name:A,properties:[{name:"name"},{name:"order"}]};case v:return{name:v,properties:[{name:"branch"}]};case R:return{name:R,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case $:return{name:$,properties:[{name:"className"},{name:"styleText"}]};case E:return{name:E,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case k:return{name:k,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case x:return{name:x,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case I:return{name:I,properties:[{name:"axis"},{name:"value"}]};case S:return{name:S,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case N:return{name:N,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case C:return{name:C,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case w:return{name:w,properties:[{name:"classSelector"},{name:"name"}]};case L:return{name:L,properties:[{name:"id"},{name:"in"}]};case b:return{name:b,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case O:return{name:O,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case _:return{name:_,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case P:return{name:P,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case M:return{name:M,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case D:return{name:D,properties:[{name:"label"},{name:"value"}]};case U:return{name:U,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case F:return{name:F,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case G:return{name:G,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case Y:return{name:Y,properties:[{name:"indent"},{name:"item"}]};case X:return{name:X,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case q:return{name:q,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case Q:return{name:Q,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:e,properties:[]}}}},J=new Z,ee=m(()=>K??(K=d('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"InfoGrammar"),te=m(()=>B??(B=d('{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"PacketGrammar"),ne=m(()=>V??(V=d('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"PieGrammar"),re=m(()=>j??(j=d('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),ie=m(()=>H??(H=d('{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}')),"GitGraphGrammar"),se=m(()=>W??(W=d('{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}')),"RadarGrammar"),ae=m(()=>z??(z=d('{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|\'[^\']*\'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}')),"TreemapGrammar"),oe={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},le={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ce={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ue={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},de={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},he={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},fe={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},pe={AstReflection:m(()=>new Z,"AstReflection")},me={Grammar:m(()=>ee(),"Grammar"),LanguageMetaData:m(()=>oe,"LanguageMetaData"),parser:{}},ge={Grammar:m(()=>te(),"Grammar"),LanguageMetaData:m(()=>le,"LanguageMetaData"),parser:{}},ye={Grammar:m(()=>ne(),"Grammar"),LanguageMetaData:m(()=>ce,"LanguageMetaData"),parser:{}},Te={Grammar:m(()=>re(),"Grammar"),LanguageMetaData:m(()=>ue,"LanguageMetaData"),parser:{}},Ae={Grammar:m(()=>ie(),"Grammar"),LanguageMetaData:m(()=>de,"LanguageMetaData"),parser:{}},ve={Grammar:m(()=>se(),"Grammar"),LanguageMetaData:m(()=>he,"LanguageMetaData"),parser:{}},Re={Grammar:m(()=>ae(),"Grammar"),LanguageMetaData:m(()=>fe,"LanguageMetaData"),parser:{}},$e={ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/accTitle[\t ]*:([^\n\r]*)/,TITLE:/title([\t ][^\n\r]*|)/},Ee=class extends h.d{static{m(this,"AbstractMermaidValueConverter")}runConverter(e,t,n){let r=this.runCommonConverter(e,t,n);return void 0===r&&(r=this.runCustomConverter(e,t,n)),void 0===r?super.runConverter(e,t,n):r}runCommonConverter(e,t,n){const r=$e[e.name];if(void 0===r)return;const i=r.exec(t);return null!==i?void 0!==i[1]?i[1].trim().replace(/[\t ]{2,}/gm," "):void 0!==i[2]?i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,"\n"):void 0:void 0}},ke=class extends Ee{static{m(this,"CommonValueConverter")}runCustomConverter(e,t,n){}},xe=class extends f.Q{static{m(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,n){const r=super.buildKeywordTokens(e,t,n);return r.forEach(e=>{this.keywords.has(e.name)&&void 0!==e.PATTERN&&(e.PATTERN=new RegExp(e.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),r}};(class extends xe{static{m(this,"CommonTokenBuilder")}})},8139:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(3588),i=n(4722);const s=function(e,t){return(0,r.A)((0,i.A)(e,t),1)}},8731:(e,t,n)=>{n.d(t,{qg:()=>a});n(7539),n(1885),n(1477),n(9150),n(8980),n(7846),n(1633);var r=n(7960),i={},s={info:(0,r.K2)(async()=>{const{createInfoServices:e}=await n.e(3490).then(n.bind(n,3490)),t=e().Info.parser.LangiumParser;i.info=t},"info"),packet:(0,r.K2)(async()=>{const{createPacketServices:e}=await n.e(2325).then(n.bind(n,2325)),t=e().Packet.parser.LangiumParser;i.packet=t},"packet"),pie:(0,r.K2)(async()=>{const{createPieServices:e}=await n.e(617).then(n.bind(n,617)),t=e().Pie.parser.LangiumParser;i.pie=t},"pie"),architecture:(0,r.K2)(async()=>{const{createArchitectureServices:e}=await n.e(6366).then(n.bind(n,6366)),t=e().Architecture.parser.LangiumParser;i.architecture=t},"architecture"),gitGraph:(0,r.K2)(async()=>{const{createGitGraphServices:e}=await n.e(4250).then(n.bind(n,1869)),t=e().GitGraph.parser.LangiumParser;i.gitGraph=t},"gitGraph"),radar:(0,r.K2)(async()=>{const{createRadarServices:e}=await n.e(1e3).then(n.bind(n,1e3)),t=e().Radar.parser.LangiumParser;i.radar=t},"radar"),treemap:(0,r.K2)(async()=>{const{createTreemapServices:e}=await n.e(5901).then(n.bind(n,5901)),t=e().Treemap.parser.LangiumParser;i.treemap=t},"treemap")};async function a(e,t){const n=s[e];if(!n)throw new Error(`Unknown diagram type: ${e}`);i[e]||await n();const r=i[e].parse(t);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new o(r);return r.value}(0,r.K2)(a,"parse");var o=class extends Error{constructor(e){super(`Parsing failed: ${e.lexerErrors.map(e=>e.message).join("\n")} ${e.parserErrors.map(e=>e.message).join("\n")}`),this.result=e}static{(0,r.K2)(this,"MermaidParseError")}}},8913:(e,t,n)=>{n.d(t,{t:()=>Fr,u:()=>Gr});var r=n(6373),i=n(418),s=n(2806),a=n(2151);var o=n(9637),l=n(4722),c=n(4092);function u(e,t,n){return`${e.name}_${t}_${n}`}class d{constructor(e){this.target=e}isEpsilon(){return!1}}class h extends d{constructor(e,t){super(e),this.tokenType=t}}class f extends d{constructor(e){super(e)}isEpsilon(){return!0}}class p extends d{constructor(e,t,n){super(e),this.rule=t,this.followState=n}isEpsilon(){return!0}}function m(e){const t={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};!function(e,t){const n=t.length;for(let r=0;r<n;r++){const n=t[r],i=x(e,n,void 0,{type:2}),s=x(e,n,void 0,{type:7});i.stop=s,e.ruleToStartState.set(n,i),e.ruleToStopState.set(n,s)}}(t,e);const n=e.length;for(let r=0;r<n;r++){const n=e[r],i=y(t,n,n);void 0!==i&&E(t,n,i)}return t}function g(e,t,n){return n instanceof o.BK?$(e,t,n.terminalType,n):n instanceof o.wL?function(e,t,n){const r=n.referencedRule,i=e.ruleToStartState.get(r),s=x(e,t,n,{type:1}),a=x(e,t,n,{type:1}),o=new p(i,r,a);return I(s,o),{left:s,right:a}}(e,t,n):n instanceof o.ak?function(e,t,n){const r=x(e,t,n,{type:1});v(e,r);const i=(0,l.A)(n.definition,n=>g(e,t,n)),s=R(e,t,r,n,...i);return s}(e,t,n):n instanceof o.c$?function(e,t,n){const r=x(e,t,n,{type:1});v(e,r);const i=R(e,t,r,n,y(e,t,n));return function(e,t,n,r){const i=r.left,s=r.right;return k(i,s),e.decisionMap[u(t,"Option",n.idx)]=i,r}(e,t,n,i)}(e,t,n):n instanceof o.Y2?function(e,t,n){const r=x(e,t,n,{type:5});v(e,r);const i=R(e,t,r,n,y(e,t,n));return A(e,t,n,i)}(e,t,n):n instanceof o.Pp?function(e,t,n){const r=x(e,t,n,{type:5});v(e,r);const i=R(e,t,r,n,y(e,t,n)),s=$(e,t,n.separator,n);return A(e,t,n,i,s)}(e,t,n):n instanceof o.$P?function(e,t,n){const r=x(e,t,n,{type:4});v(e,r);const i=R(e,t,r,n,y(e,t,n));return T(e,t,n,i)}(e,t,n):n instanceof o.Cy?function(e,t,n){const r=x(e,t,n,{type:4});v(e,r);const i=R(e,t,r,n,y(e,t,n)),s=$(e,t,n.separator,n);return T(e,t,n,i,s)}(e,t,n):y(e,t,n)}function y(e,t,n){const r=(0,c.A)((0,l.A)(n.definition,n=>g(e,t,n)),e=>void 0!==e);return 1===r.length?r[0]:0===r.length?void 0:function(e,t){const n=t.length;for(let s=0;s<n-1;s++){const n=t[s];let r;1===n.left.transitions.length&&(r=n.left.transitions[0]);const i=r instanceof p,a=r,o=t[s+1].left;1===n.left.type&&1===n.right.type&&void 0!==r&&(i&&a.followState===n.right||r.target===n.right)?(i?a.followState=o:r.target=o,S(e,n.right)):k(n.right,o)}const r=t[0],i=t[n-1];return{left:r.left,right:i.right}}(e,r)}function T(e,t,n,r,i){const s=r.left,a=r.right,o=x(e,t,n,{type:11});v(e,o);const l=x(e,t,n,{type:12});return s.loopback=o,l.loopback=o,e.decisionMap[u(t,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",n.idx)]=o,k(a,o),void 0===i?(k(o,s),k(o,l)):(k(o,l),k(o,i.left),k(i.right,s)),{left:s,right:l}}function A(e,t,n,r,i){const s=r.left,a=r.right,o=x(e,t,n,{type:10});v(e,o);const l=x(e,t,n,{type:12}),c=x(e,t,n,{type:9});return o.loopback=c,l.loopback=c,k(o,s),k(o,l),k(a,c),void 0!==i?(k(c,l),k(c,i.left),k(i.right,s)):k(c,o),e.decisionMap[u(t,i?"RepetitionWithSeparator":"Repetition",n.idx)]=o,{left:o,right:l}}function v(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}function R(e,t,n,r,...i){const s=x(e,t,r,{type:8,start:n});n.end=s;for(const o of i)void 0!==o?(k(n,o.left),k(o.right,s)):k(n,s);const a={left:n,right:s};return e.decisionMap[u(t,function(e){if(e instanceof o.ak)return"Alternation";if(e instanceof o.c$)return"Option";if(e instanceof o.Y2)return"Repetition";if(e instanceof o.Pp)return"RepetitionWithSeparator";if(e instanceof o.$P)return"RepetitionMandatory";if(e instanceof o.Cy)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}(r),r.idx)]=n,a}function $(e,t,n,r){const i=x(e,t,r,{type:1}),s=x(e,t,r,{type:1});return I(i,new h(s,n)),{left:i,right:s}}function E(e,t,n){const r=e.ruleToStartState.get(t);k(r,n.left);const i=e.ruleToStopState.get(t);k(n.right,i);return{left:r,right:i}}function k(e,t){I(e,new f(t))}function x(e,t,n,r){const i=Object.assign({atn:e,production:n,epsilonOnlyTransitions:!1,rule:t,transitions:[],nextTokenWithinRule:[],stateNumber:e.states.length},r);return e.states.push(i),i}function I(e,t){0===e.transitions.length&&(e.epsilonOnlyTransitions=t.isEpsilon()),e.transitions.push(t)}function S(e,t){e.states.splice(e.states.indexOf(t),1)}const N={};class C{constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){const t=w(e);t in this.map||(this.map[t]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return(0,l.A)(this.configs,e=>e.alt)}get key(){let e="";for(const t in this.map)e+=t+":";return e}}function w(e,t=!0){return`${t?`a${e.alt}`:""}s${e.state.stateNumber}:${e.stack.map(e=>e.stateNumber.toString()).join("_")}`}var L=n(6452),b=n(8139),O=n(3958),_=n(9902);const P=function(e,t){return e&&e.length?(0,_.A)(e,(0,O.A)(t,2)):[]};var M=n(4098),D=n(8058),U=n(6401),F=n(9463);function G(e,t){const n={};return r=>{const i=r.toString();let s=n[i];return void 0!==s||(s={atnStartState:e,decision:t,states:{}},n[i]=s),s}}class K{constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="";const t=this.predicates.length;for(let n=0;n<t;n++)e+=!0===this.predicates[n]?"1":"0";return e}}const B=new K;class V extends o.T6{constructor(e){var t;super(),this.logging=null!==(t=null==e?void 0:e.logging)&&void 0!==t?t:e=>console.log(e)}initialize(e){this.atn=m(e.rules),this.dfas=function(e){const t=e.decisionStates.length,n=Array(t);for(let r=0;r<t;r++)n[r]=G(e.decisionStates[r],r);return n}(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){const{prodOccurrence:t,rule:n,hasPredicates:r,dynamicTokensEnabled:i}=e,s=this.dfas,a=this.logging,c=u(n,"Alternation",t),d=this.atn.decisionMap[c].decision,h=(0,l.A)((0,o.jk)({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:n}),e=>(0,l.A)(e,e=>e[0]));if(j(h,!1)&&!i){const e=(0,F.A)(h,(e,t,n)=>((0,D.A)(t,t=>{t&&(e[t.tokenTypeIdx]=n,(0,D.A)(t.categoryMatches,t=>{e[t]=n}))}),e),{});return r?function(t){var n;const r=this.LA(1),i=e[r.tokenTypeIdx];if(void 0!==t&&void 0!==i){const e=null===(n=t[i])||void 0===n?void 0:n.GATE;if(void 0!==e&&!1===e.call(this))return}return i}:function(){const t=this.LA(1);return e[t.tokenTypeIdx]}}return r?function(e){const t=new K,n=void 0===e?0:e.length;for(let i=0;i<n;i++){const n=null==e?void 0:e[i].GATE;t.set(i,void 0===n||n.call(this))}const r=H.call(this,s,d,t,a);return"number"==typeof r?r:void 0}:function(){const e=H.call(this,s,d,B,a);return"number"==typeof e?e:void 0}}buildLookaheadForOptional(e){const{prodOccurrence:t,rule:n,prodType:r,dynamicTokensEnabled:i}=e,s=this.dfas,a=this.logging,c=u(n,r,t),d=this.atn.decisionMap[c].decision,h=(0,l.A)((0,o.jk)({maxLookahead:1,occurrence:t,prodType:r,rule:n}),e=>(0,l.A)(e,e=>e[0]));if(j(h)&&h[0][0]&&!i){const e=h[0],t=(0,M.A)(e);if(1===t.length&&(0,U.A)(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=(0,F.A)(t,(e,t)=>(void 0!==t&&(e[t.tokenTypeIdx]=!0,(0,D.A)(t.categoryMatches,t=>{e[t]=!0})),e),{});return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){const e=H.call(this,s,d,B,a);return"object"!=typeof e&&0===e}}}function j(e,t=!0){const n=new Set;for(const r of e){const e=new Set;for(const i of r){if(void 0===i){if(t)break;return!1}const r=[i.tokenTypeIdx].concat(i.categoryMatches);for(const t of r)if(n.has(t)){if(!e.has(t))return!1}else n.add(t),e.add(t)}}return!0}function H(e,t,n,r){const i=e[t](n);let s=i.start;if(void 0===s){s=ee(i,Z(te(i.atnStartState))),i.start=s}return W.apply(this,[i,s,n,r])}function W(e,t,n,r){let i=t,s=1;const a=[];let o=this.LA(s++);for(;;){let t=q(i,o);if(void 0===t&&(t=z.apply(this,[e,i,o,s,n,r])),t===N)return X(a,i,o);if(!0===t.isAcceptState)return t.prediction;i=t,a.push(o),o=this.LA(s++)}}function z(e,t,n,r,i,s){const a=function(e,t,n){const r=new C,i=[];for(const a of e.elements){if(!1===n.is(a.alt))continue;if(7===a.state.type){i.push(a);continue}const e=a.state.transitions.length;for(let n=0;n<e;n++){const e=Q(a.state.transitions[n],t);void 0!==e&&r.add({state:e,alt:a.alt,stack:a.stack})}}let s;0===i.length&&1===r.size&&(s=r);if(void 0===s){s=new C;for(const e of r.elements)ne(e,s)}if(i.length>0&&!function(e){for(const t of e.elements)if(7===t.state.type)return!0;return!1}(s))for(const a of i)s.add(a);return s}(t.configs,n,i);if(0===a.size)return J(e,t,n,N),N;let o=Z(a);const l=function(e,t){let n;for(const r of e.elements)if(!0===t.is(r.alt))if(void 0===n)n=r.alt;else if(n!==r.alt)return;return n}(a,i);if(void 0!==l)o.isAcceptState=!0,o.prediction=l,o.configs.uniqueAlt=l;else if(function(e){if(function(e){for(const t of e.elements)if(7!==t.state.type)return!1;return!0}(e))return!0;const t=function(e){const t=new Map;for(const n of e){const e=w(n,!1);let r=t.get(e);void 0===r&&(r={},t.set(e,r)),r[n.alt]=!0}return t}(e.elements);return function(e){for(const t of Array.from(e.values()))if(Object.keys(t).length>1)return!0;return!1}(t)&&!function(e){for(const t of Array.from(e.values()))if(1===Object.keys(t).length)return!0;return!1}(t)}(a)){const t=(0,L.A)(a.alts);o.isAcceptState=!0,o.prediction=t,o.configs.uniqueAlt=t,Y.apply(this,[e,r,a.alts,s])}return o=J(e,t,n,o),o}function Y(e,t,n,r){const i=[];for(let a=1;a<=t;a++)i.push(this.LA(a).tokenType);const s=e.atnStartState;r(function(e){const t=(0,l.A)(e.prefixPath,e=>(0,o.Sk)(e)).join(", "),n=0===e.production.idx?"":e.production.idx;let r=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${function(e){if(e instanceof o.wL)return"SUBRULE";if(e instanceof o.c$)return"OPTION";if(e instanceof o.ak)return"OR";if(e instanceof o.$P)return"AT_LEAST_ONE";if(e instanceof o.Cy)return"AT_LEAST_ONE_SEP";if(e instanceof o.Pp)return"MANY_SEP";if(e instanceof o.Y2)return"MANY";if(e instanceof o.BK)return"CONSUME";throw Error("non exhaustive match")}(e.production)}${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r}({topLevelRule:s.rule,ambiguityIndices:n,production:s.production,prefixPath:i}))}function X(e,t,n){const r=(0,b.A)(t.configs.elements,e=>e.state.transitions);return{actualToken:n,possibleTokenTypes:P(r.filter(e=>e instanceof h).map(e=>e.tokenType),e=>e.tokenTypeIdx),tokenPath:e}}function q(e,t){return e.edges[t.tokenTypeIdx]}function Q(e,t){if(e instanceof h&&(0,o.G)(t,e.tokenType))return e.target}function Z(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function J(e,t,n,r){return r=ee(e,r),t.edges[n.tokenTypeIdx]=r,r}function ee(e,t){if(t===N)return t;const n=t.configs.key,r=e.states[n];return void 0!==r?r:(t.configs.finalize(),e.states[n]=t,t)}function te(e){const t=new C,n=e.transitions.length;for(let r=0;r<n;r++){ne({state:e.transitions[r].target,alt:r,stack:[]},t)}return t}function ne(e,t){const n=e.state;if(7===n.type){if(e.stack.length>0){const n=[...e.stack];ne({state:n.pop(),alt:e.alt,stack:n},t)}else t.add(e);return}n.epsilonOnlyTransitions||t.add(e);const r=n.transitions.length;for(let i=0;i<r;i++){const r=re(e,n.transitions[i]);void 0!==r&&ne(r,t)}}function re(e,t){if(t instanceof f)return{state:t.target,alt:e.alt,stack:e.stack};if(t instanceof p){const n=[...e.stack,t.followState];return{state:t.target,alt:e.alt,stack:n}}}var ie,se,ae,oe,le,ce,ue,de,he,fe,pe,me,ge,ye,Te,Ae,ve,Re,$e,Ee,ke,xe,Ie,Se,Ne,Ce,we,Le,be,Oe,_e,Pe,Me,De,Ue,Fe,Ge,Ke,Be,Ve,je,He,We,ze,Ye,Xe,qe,Qe,Ze,Je,et,tt,nt,rt,it,st,at,ot,lt,ct,ut,dt,ht,ft,pt,mt,gt,yt,Tt,At,vt,Rt,$t,Et,kt,xt,It,St,Nt=n(9683);!function(e){e.is=function(e){return"string"==typeof e}}(ie||(ie={})),function(e){e.is=function(e){return"string"==typeof e}}(se||(se={})),function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647,e.is=function(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}}(ae||(ae={})),function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647,e.is=function(t){return"number"==typeof t&&e.MIN_VALUE<=t&&t<=e.MAX_VALUE}}(oe||(oe={})),function(e){e.create=function(e,t){return e===Number.MAX_VALUE&&(e=oe.MAX_VALUE),t===Number.MAX_VALUE&&(t=oe.MAX_VALUE),{line:e,character:t}},e.is=function(e){let t=e;return wt.objectLiteral(t)&&wt.uinteger(t.line)&&wt.uinteger(t.character)}}(le||(le={})),function(e){e.create=function(e,t,n,r){if(wt.uinteger(e)&&wt.uinteger(t)&&wt.uinteger(n)&&wt.uinteger(r))return{start:le.create(e,t),end:le.create(n,r)};if(le.is(e)&&le.is(t))return{start:e,end:t};throw new Error(`Range#create called with invalid arguments[${e}, ${t}, ${n}, ${r}]`)},e.is=function(e){let t=e;return wt.objectLiteral(t)&&le.is(t.start)&&le.is(t.end)}}(ce||(ce={})),function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){let t=e;return wt.objectLiteral(t)&&ce.is(t.range)&&(wt.string(t.uri)||wt.undefined(t.uri))}}(ue||(ue={})),function(e){e.create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},e.is=function(e){let t=e;return wt.objectLiteral(t)&&ce.is(t.targetRange)&&wt.string(t.targetUri)&&ce.is(t.targetSelectionRange)&&(ce.is(t.originSelectionRange)||wt.undefined(t.originSelectionRange))}}(de||(de={})),function(e){e.create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.numberRange(t.red,0,1)&&wt.numberRange(t.green,0,1)&&wt.numberRange(t.blue,0,1)&&wt.numberRange(t.alpha,0,1)}}(he||(he={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&ce.is(t.range)&&he.is(t.color)}}(fe||(fe={})),function(e){e.create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.string(t.label)&&(wt.undefined(t.textEdit)||Ee.is(t))&&(wt.undefined(t.additionalTextEdits)||wt.typedArray(t.additionalTextEdits,Ee.is))}}(pe||(pe={})),function(e){e.Comment="comment",e.Imports="imports",e.Region="region"}(me||(me={})),function(e){e.create=function(e,t,n,r,i,s){const a={startLine:e,endLine:t};return wt.defined(n)&&(a.startCharacter=n),wt.defined(r)&&(a.endCharacter=r),wt.defined(i)&&(a.kind=i),wt.defined(s)&&(a.collapsedText=s),a},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.uinteger(t.startLine)&&wt.uinteger(t.startLine)&&(wt.undefined(t.startCharacter)||wt.uinteger(t.startCharacter))&&(wt.undefined(t.endCharacter)||wt.uinteger(t.endCharacter))&&(wt.undefined(t.kind)||wt.string(t.kind))}}(ge||(ge={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){let t=e;return wt.defined(t)&&ue.is(t.location)&&wt.string(t.message)}}(ye||(ye={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(Te||(Te={})),function(e){e.Unnecessary=1,e.Deprecated=2}(Ae||(Ae={})),function(e){e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.string(t.href)}}(ve||(ve={})),function(e){e.create=function(e,t,n,r,i,s){let a={range:e,message:t};return wt.defined(n)&&(a.severity=n),wt.defined(r)&&(a.code=r),wt.defined(i)&&(a.source=i),wt.defined(s)&&(a.relatedInformation=s),a},e.is=function(e){var t;let n=e;return wt.defined(n)&&ce.is(n.range)&&wt.string(n.message)&&(wt.number(n.severity)||wt.undefined(n.severity))&&(wt.integer(n.code)||wt.string(n.code)||wt.undefined(n.code))&&(wt.undefined(n.codeDescription)||wt.string(null===(t=n.codeDescription)||void 0===t?void 0:t.href))&&(wt.string(n.source)||wt.undefined(n.source))&&(wt.undefined(n.relatedInformation)||wt.typedArray(n.relatedInformation,ye.is))}}(Re||(Re={})),function(e){e.create=function(e,t,...n){let r={title:e,command:t};return wt.defined(n)&&n.length>0&&(r.arguments=n),r},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.title)&&wt.string(t.command)}}($e||($e={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.string(t.newText)&&ce.is(t.range)}}(Ee||(Ee={})),function(e){e.create=function(e,t,n){const r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},e.is=function(e){const t=e;return wt.objectLiteral(t)&&wt.string(t.label)&&(wt.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(wt.string(t.description)||void 0===t.description)}}(ke||(ke={})),function(e){e.is=function(e){const t=e;return wt.string(t)}}(xe||(xe={})),function(e){e.replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},e.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},e.del=function(e,t){return{range:e,newText:"",annotationId:t}},e.is=function(e){const t=e;return Ee.is(t)&&(ke.is(t.annotationId)||xe.is(t.annotationId))}}(Ie||(Ie={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){let t=e;return wt.defined(t)&&_e.is(t.textDocument)&&Array.isArray(t.edits)}}(Se||(Se={})),function(e){e.create=function(e,t,n){let r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){let t=e;return t&&"create"===t.kind&&wt.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||wt.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||wt.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(Ne||(Ne={})),function(e){e.create=function(e,t,n,r){let i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},e.is=function(e){let t=e;return t&&"rename"===t.kind&&wt.string(t.oldUri)&&wt.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||wt.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||wt.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(Ce||(Ce={})),function(e){e.create=function(e,t,n){let r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){let t=e;return t&&"delete"===t.kind&&wt.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||wt.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||wt.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||xe.is(t.annotationId))}}(we||(we={})),function(e){e.is=function(e){let t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every(e=>wt.string(e.kind)?Ne.is(e)||Ce.is(e)||we.is(e):Se.is(e)))}}(Le||(Le={}));!function(e){e.create=function(e){return{uri:e}},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.uri)}}(be||(be={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.uri)&&wt.integer(t.version)}}(Oe||(Oe={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.uri)&&(null===t.version||wt.integer(t.version))}}(_e||(_e={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){let t=e;return wt.defined(t)&&wt.string(t.uri)&&wt.string(t.languageId)&&wt.integer(t.version)&&wt.string(t.text)}}(Pe||(Pe={})),function(e){e.PlainText="plaintext",e.Markdown="markdown",e.is=function(t){const n=t;return n===e.PlainText||n===e.Markdown}}(Me||(Me={})),function(e){e.is=function(e){const t=e;return wt.objectLiteral(e)&&Me.is(t.kind)&&wt.string(t.value)}}(De||(De={})),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}(Ue||(Ue={})),function(e){e.PlainText=1,e.Snippet=2}(Fe||(Fe={})),function(e){e.Deprecated=1}(Ge||(Ge={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){const t=e;return t&&wt.string(t.newText)&&ce.is(t.insert)&&ce.is(t.replace)}}(Ke||(Ke={})),function(e){e.asIs=1,e.adjustIndentation=2}(Be||(Be={})),function(e){e.is=function(e){const t=e;return t&&(wt.string(t.detail)||void 0===t.detail)&&(wt.string(t.description)||void 0===t.description)}}(Ve||(Ve={})),function(e){e.create=function(e){return{label:e}}}(je||(je={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(He||(He={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){const t=e;return wt.string(t)||wt.objectLiteral(t)&&wt.string(t.language)&&wt.string(t.value)}}(We||(We={})),function(e){e.is=function(e){let t=e;return!!t&&wt.objectLiteral(t)&&(De.is(t.contents)||We.is(t.contents)||wt.typedArray(t.contents,We.is))&&(void 0===e.range||ce.is(e.range))}}(ze||(ze={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(Ye||(Ye={})),function(e){e.create=function(e,t,...n){let r={label:e};return wt.defined(t)&&(r.documentation=t),wt.defined(n)?r.parameters=n:r.parameters=[],r}}(Xe||(Xe={})),function(e){e.Text=1,e.Read=2,e.Write=3}(qe||(qe={})),function(e){e.create=function(e,t){let n={range:e};return wt.number(t)&&(n.kind=t),n}}(Qe||(Qe={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(Ze||(Ze={})),function(e){e.Deprecated=1}(Je||(Je={})),function(e){e.create=function(e,t,n,r,i){let s={name:e,kind:t,location:{uri:r,range:n}};return i&&(s.containerName=i),s}}(et||(et={})),function(e){e.create=function(e,t,n,r){return void 0!==r?{name:e,kind:t,location:{uri:n,range:r}}:{name:e,kind:t,location:{uri:n}}}}(tt||(tt={})),function(e){e.create=function(e,t,n,r,i,s){let a={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==s&&(a.children=s),a},e.is=function(e){let t=e;return t&&wt.string(t.name)&&wt.number(t.kind)&&ce.is(t.range)&&ce.is(t.selectionRange)&&(void 0===t.detail||wt.string(t.detail))&&(void 0===t.deprecated||wt.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}}(nt||(nt={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(rt||(rt={})),function(e){e.Invoked=1,e.Automatic=2}(it||(it={})),function(e){e.create=function(e,t,n){let r={diagnostics:e};return null!=t&&(r.only=t),null!=n&&(r.triggerKind=n),r},e.is=function(e){let t=e;return wt.defined(t)&&wt.typedArray(t.diagnostics,Re.is)&&(void 0===t.only||wt.typedArray(t.only,wt.string))&&(void 0===t.triggerKind||t.triggerKind===it.Invoked||t.triggerKind===it.Automatic)}}(st||(st={})),function(e){e.create=function(e,t,n){let r={title:e},i=!0;return"string"==typeof t?(i=!1,r.kind=t):$e.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},e.is=function(e){let t=e;return t&&wt.string(t.title)&&(void 0===t.diagnostics||wt.typedArray(t.diagnostics,Re.is))&&(void 0===t.kind||wt.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||$e.is(t.command))&&(void 0===t.isPreferred||wt.boolean(t.isPreferred))&&(void 0===t.edit||Le.is(t.edit))}}(at||(at={})),function(e){e.create=function(e,t){let n={range:e};return wt.defined(t)&&(n.data=t),n},e.is=function(e){let t=e;return wt.defined(t)&&ce.is(t.range)&&(wt.undefined(t.command)||$e.is(t.command))}}(ot||(ot={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){let t=e;return wt.defined(t)&&wt.uinteger(t.tabSize)&&wt.boolean(t.insertSpaces)}}(lt||(lt={})),function(e){e.create=function(e,t,n){return{range:e,target:t,data:n}},e.is=function(e){let t=e;return wt.defined(t)&&ce.is(t.range)&&(wt.undefined(t.target)||wt.string(t.target))}}(ct||(ct={})),function(e){e.create=function(e,t){return{range:e,parent:t}},e.is=function(t){let n=t;return wt.objectLiteral(n)&&ce.is(n.range)&&(void 0===n.parent||e.is(n.parent))}}(ut||(ut={})),function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"}(dt||(dt={})),function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"}(ht||(ht={})),function(e){e.is=function(e){const t=e;return wt.objectLiteral(t)&&(void 0===t.resultId||"string"==typeof t.resultId)&&Array.isArray(t.data)&&(0===t.data.length||"number"==typeof t.data[0])}}(ft||(ft={})),function(e){e.create=function(e,t){return{range:e,text:t}},e.is=function(e){const t=e;return null!=t&&ce.is(t.range)&&wt.string(t.text)}}(pt||(pt={})),function(e){e.create=function(e,t,n){return{range:e,variableName:t,caseSensitiveLookup:n}},e.is=function(e){const t=e;return null!=t&&ce.is(t.range)&&wt.boolean(t.caseSensitiveLookup)&&(wt.string(t.variableName)||void 0===t.variableName)}}(mt||(mt={})),function(e){e.create=function(e,t){return{range:e,expression:t}},e.is=function(e){const t=e;return null!=t&&ce.is(t.range)&&(wt.string(t.expression)||void 0===t.expression)}}(gt||(gt={})),function(e){e.create=function(e,t){return{frameId:e,stoppedLocation:t}},e.is=function(e){const t=e;return wt.defined(t)&&ce.is(e.stoppedLocation)}}(yt||(yt={})),function(e){e.Type=1,e.Parameter=2,e.is=function(e){return 1===e||2===e}}(Tt||(Tt={})),function(e){e.create=function(e){return{value:e}},e.is=function(e){const t=e;return wt.objectLiteral(t)&&(void 0===t.tooltip||wt.string(t.tooltip)||De.is(t.tooltip))&&(void 0===t.location||ue.is(t.location))&&(void 0===t.command||$e.is(t.command))}}(At||(At={})),function(e){e.create=function(e,t,n){const r={position:e,label:t};return void 0!==n&&(r.kind=n),r},e.is=function(e){const t=e;return wt.objectLiteral(t)&&le.is(t.position)&&(wt.string(t.label)||wt.typedArray(t.label,At.is))&&(void 0===t.kind||Tt.is(t.kind))&&void 0===t.textEdits||wt.typedArray(t.textEdits,Ee.is)&&(void 0===t.tooltip||wt.string(t.tooltip)||De.is(t.tooltip))&&(void 0===t.paddingLeft||wt.boolean(t.paddingLeft))&&(void 0===t.paddingRight||wt.boolean(t.paddingRight))}}(vt||(vt={})),function(e){e.createSnippet=function(e){return{kind:"snippet",value:e}}}(Rt||(Rt={})),function(e){e.create=function(e,t,n,r){return{insertText:e,filterText:t,range:n,command:r}}}($t||($t={})),function(e){e.create=function(e){return{items:e}}}(Et||(Et={})),function(e){e.Invoked=0,e.Automatic=1}(kt||(kt={})),function(e){e.create=function(e,t){return{range:e,text:t}}}(xt||(xt={})),function(e){e.create=function(e,t){return{triggerKind:e,selectedCompletionInfo:t}}}(It||(It={})),function(e){e.is=function(e){const t=e;return wt.objectLiteral(t)&&se.is(t.uri)&&wt.string(t.name)}}(St||(St={}));var Ct,wt;!function(e){function t(e,n){if(e.length<=1)return e;const r=e.length/2|0,i=e.slice(0,r),s=e.slice(r);t(i,n),t(s,n);let a=0,o=0,l=0;for(;a<i.length&&o<s.length;){let t=n(i[a],s[o]);e[l++]=t<=0?i[a++]:s[o++]}for(;a<i.length;)e[l++]=i[a++];for(;o<s.length;)e[l++]=s[o++];return e}e.create=function(e,t,n,r){return new Lt(e,t,n,r)},e.is=function(e){let t=e;return!!(wt.defined(t)&&wt.string(t.uri)&&(wt.undefined(t.languageId)||wt.string(t.languageId))&&wt.uinteger(t.lineCount)&&wt.func(t.getText)&&wt.func(t.positionAt)&&wt.func(t.offsetAt))},e.applyEdits=function(e,n){let r=e.getText(),i=t(n,(e,t)=>{let n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n}),s=r.length;for(let t=i.length-1;t>=0;t--){let n=i[t],a=e.offsetAt(n.range.start),o=e.offsetAt(n.range.end);if(!(o<=s))throw new Error("Overlapping edit");r=r.substring(0,a)+n.newText+r.substring(o,r.length),s=a}return r}}(Ct||(Ct={}));class Lt{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(void 0===this._lineOffsets){let e=[],t=this._content,n=!0;for(let r=0;r<t.length;r++){n&&(e.push(r),n=!1);let i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return le.create(0,e);for(;n<r;){let i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}let i=n-1;return le.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)}get lineCount(){return this.getLineOffsets().length}}!function(e){const t=Object.prototype.toString;e.defined=function(e){return void 0!==e},e.undefined=function(e){return void 0===e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.numberRange=function(e,n,r){return"[object Number]"===t.call(e)&&n<=e&&e<=r},e.integer=function(e){return"[object Number]"===t.call(e)&&-2147483648<=e&&e<=2147483647},e.uinteger=function(e){return"[object Number]"===t.call(e)&&0<=e&&e<=2147483647},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"==typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(wt||(wt={}));class bt{constructor(){this.nodeStack=[]}get current(){var e;return null!==(e=this.nodeStack[this.nodeStack.length-1])&&void 0!==e?e:this.rootNode}buildRootNode(e){return this.rootNode=new Dt(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){const t=new Pt;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){const n=new _t(e.startOffset,e.image.length,(0,r.wf)(e),e.tokenType,!t);return n.grammarSource=t,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){const t=e.container;if(t){const n=t.content.indexOf(e);n>=0&&t.content.splice(n,1)}}addHiddenNodes(e){const t=[];for(const s of e){const e=new _t(s.startOffset,s.image.length,(0,r.wf)(s),s.tokenType,!0);e.root=this.rootNode,t.push(e)}let n=this.current,i=!1;if(n.content.length>0)n.content.push(...t);else{for(;n.container;){const e=n.container.content.indexOf(n);if(e>0){n.container.content.splice(e,0,...t),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...t)}}construct(e){const t=this.current;"string"==typeof e.$type&&(this.current.astNode=e),e.$cstNode=t;const n=this.nodeStack.pop();0===(null==n?void 0:n.content.length)&&this.removeNode(n)}}class Ot{get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,t;const n="string"==typeof(null===(e=this._astNode)||void 0===e?void 0:e.$type)?this._astNode:null===(t=this.container)||void 0===t?void 0:t.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}}class _t extends Ot{get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,n,r,i=!1){super(),this._hidden=i,this._offset=e,this._tokenType=r,this._length=t,this._range=n}}class Pt extends Ot{constructor(){super(...arguments),this.content=new Mt(this)}get children(){return this.content}get offset(){var e,t;return null!==(t=null===(e=this.firstNonHiddenNode)||void 0===e?void 0:e.offset)&&void 0!==t?t:0}get length(){return this.end-this.offset}get end(){var e,t;return null!==(t=null===(e=this.lastNonHiddenNode)||void 0===e?void 0:e.end)&&void 0!==t?t:0}get range(){const e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(void 0===this._rangeCache){const{range:n}=e,{range:r}=t;this._rangeCache={start:n.start,end:r.end.line<n.start.line?n.start:r.end}}return this._rangeCache}return{start:le.create(0,0),end:le.create(0,0)}}get firstNonHiddenNode(){for(const e of this.content)if(!e.hidden)return e;return this.content[0]}get lastNonHiddenNode(){for(let e=this.content.length-1;e>=0;e--){const t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}}class Mt extends Array{constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,Mt.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,t,...n){return this.addParents(n),super.splice(e,t,...n)}addParents(e){for(const t of e)t.container=this.parent}}class Dt extends Pt{get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=null!=e?e:""}}const Ut=Symbol("Datatype");function Ft(e){return e.$type===Ut}const Gt=e=>e.endsWith("\u200b")?e:e+"\u200b";class Kt{constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;const t=this.lexer.definition,n="production"===e.LanguageMetaData.mode;this.wrapper=new zt(t,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}}class Bt extends Kt{get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new bt,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){const n=this.computeRuleType(e),r=this.wrapper.DEFINE_RULE(Gt(e.name),this.startImplementation(n,t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}computeRuleType(e){if(!e.fragment){if((0,i.Xq)(e))return Ut;{const t=(0,i.PV)(e);return null!=t?t:e.name}}}parse(e,t={}){this.nodeBuilder.buildRootNode(e);const n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;const r=t.rule?this.allRules.get(t.rule):this.mainRule;if(!r)throw new Error(t.rule?`No rule found with name '${t.rule}'`:"No main rule available.");const i=r.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:i,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,t){return n=>{const r=!this.isRecording()&&void 0!==e;if(r){const t={$type:e};this.stack.push(t),e===Ut&&(t.value="")}let i;try{i=t(n)}catch(s){i=void 0}return void 0===i&&r&&(i=this.construct()),i}}extractHiddenTokens(e){const t=this.lexerResult.hidden;if(!t.length)return[];const n=e.startOffset;for(let r=0;r<t.length;r++){if(t[r].startOffset>n)return t.splice(0,r)}return t.splice(0,t.length)}consume(e,t,n){const r=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(r)){const e=this.extractHiddenTokens(r);this.nodeBuilder.addHiddenNodes(e);const t=this.nodeBuilder.buildLeafNode(r,n),{assignment:i,isCrossRef:s}=this.getAssignment(n),o=this.current;if(i){const e=(0,a.wb)(n)?r.image:this.converter.convert(r.image,t);this.assign(i.operator,i.feature,e,t,s)}else if(Ft(o)){let e=r.image;(0,a.wb)(n)||(e=this.converter.convert(e,t).toString()),o.value+=e}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&"number"==typeof e.endOffset&&!isNaN(e.endOffset)}subrule(e,t,n,r,i){let s;this.isRecording()||n||(s=this.nodeBuilder.buildCompositeNode(r));const a=this.wrapper.wrapSubrule(e,t,i);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(a,r,s)}performSubruleAssignment(e,t,n){const{assignment:r,isCrossRef:i}=this.getAssignment(t);if(r)this.assign(r.operator,r.feature,e,n,i);else if(!r){const t=this.current;if(Ft(t))t.value+=e.toString();else if("object"==typeof e&&e){const n=this.assignWithoutOverride(e,t);this.stack.pop(),this.stack.push(n)}}}action(e,t){if(!this.isRecording()){let n=this.current;if(t.feature&&t.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode);this.nodeBuilder.buildCompositeNode(t).content.push(n.$cstNode);const r={$type:e};this.stack.push(r),this.assign(t.operator,t.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;const e=this.current;return(0,Nt.SD)(e),this.nodeBuilder.construct(e),this.stack.pop(),Ft(e)?this.converter.convert(e.value,e.$cstNode):((0,Nt.OP)(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){const t=(0,Nt.XG)(e,a.wh);this.assignmentMap.set(e,{assignment:t,isCrossRef:!!t&&(0,a._c)(t.terminal)})}return this.assignmentMap.get(e)}assign(e,t,n,r,i){const s=this.current;let a;switch(a=i&&"string"==typeof n?this.linker.buildReference(s,t,r,n):n,e){case"=":s[t]=a;break;case"?=":s[t]=!0;break;case"+=":Array.isArray(s[t])||(s[t]=[]),s[t].push(a)}}assignWithoutOverride(e,t){for(const[r,i]of Object.entries(t)){const t=e[r];void 0===t?e[r]=i:Array.isArray(t)&&Array.isArray(i)&&(i.push(...t),e[r]=i)}const n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}}class Vt{buildMismatchTokenMessage(e){return o.my.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return o.my.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return o.my.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return o.my.buildEarlyExitMessage(e)}}class jt extends Vt{buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}}class Ht extends Kt{constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();const t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){const n=this.wrapper.DEFINE_RULE(Gt(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{const n=this.keepStackSize();try{e(t)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){const e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,n){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,n,r,i){this.before(r),this.wrapper.wrapSubrule(e,t,i),this.after(r)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){const t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}}const Wt={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new jt};class zt extends o.jr{constructor(e,t){const n=t&&"maxLookahead"in t;super(e,Object.assign(Object.assign(Object.assign({},Wt),{lookaheadStrategy:n?new o.T6({maxLookahead:t.maxLookahead}):new V({logging:t.skipValidations?()=>{}:void 0})}),t))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t){return this.RULE(e,t)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t)}wrapSubrule(e,t,n){return this.subrule(e,t,{ARGS:[n]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}}var Yt=n(1564),Xt=n(1719);function qt(e,t,n){return function(e,t){const n=(0,i.YV)(t,!1),r=(0,Xt.Td)(t.rules).filter(a.s7).filter(e=>n.has(e));for(const i of r){const t=Object.assign(Object.assign({},e),{consume:1,optional:1,subrule:1,many:1,or:1});e.parser.rule(i,Qt(t,i.definition))}}({parser:t,tokens:n,ruleNames:new Map},e),t}function Qt(e,t,n=!1){let r;if((0,a.wb)(t))r=function(e,t){const n=e.consume++,r=e.tokens[t.value];if(!r)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(n,r,t)}(e,t);else if((0,a.ve)(t))r=function(e,t){const n=(0,i.Uz)(t);return()=>e.parser.action(n,t)}(e,t);else if((0,a.wh)(t))r=Qt(e,t.terminal);else if((0,a._c)(t))r=en(e,t);else if((0,a.$g)(t))r=function(e,t){const n=t.rule.ref;if((0,a.s7)(n)){const r=e.subrule++,i=n.fragment,s=t.arguments.length>0?function(e,t){const n=t.map(e=>Zt(e.value));return t=>{const r={};for(let i=0;i<n.length;i++){const s=e.parameters[i],a=n[i];r[s.name]=a(t)}return r}}(n,t.arguments):()=>({});return a=>e.parser.subrule(r,nn(e,n),i,t,s(a))}if((0,a.rE)(n)){const r=e.consume++,i=rn(e,n.name);return()=>e.parser.consume(r,i,t)}if(!n)throw new Yt.W(t.$cstNode,`Undefined rule: ${t.rule.$refText}`);(0,Yt.d)(n)}(e,t);else if((0,a.jp)(t))r=function(e,t){if(1===t.elements.length)return Qt(e,t.elements[0]);{const n=[];for(const i of t.elements){const t={ALT:Qt(e,i,!0)},r=Jt(i);r&&(t.GATE=Zt(r)),n.push(t)}const r=e.or++;return t=>e.parser.alternatives(r,n.map(e=>{const n={ALT:()=>e.ALT(t)},r=e.GATE;return r&&(n.GATE=()=>r(t)),n}))}}(e,t);else if((0,a.cY)(t))r=function(e,t){if(1===t.elements.length)return Qt(e,t.elements[0]);const n=[];for(const o of t.elements){const t={ALT:Qt(e,o,!0)},r=Jt(o);r&&(t.GATE=Zt(r)),n.push(t)}const r=e.or++,i=(e,t)=>`uGroup_${e}_${t.getRuleStack().join("-")}`,s=t=>e.parser.alternatives(r,n.map((n,s)=>{const a={ALT:()=>!0},o=e.parser;a.ALT=()=>{if(n.ALT(t),!o.isRecording()){const e=i(r,o);o.unorderedGroups.get(e)||o.unorderedGroups.set(e,[]);const t=o.unorderedGroups.get(e);void 0===(null==t?void 0:t[s])&&(t[s]=!0)}};const l=n.GATE;return a.GATE=l?()=>l(t):()=>{const e=o.unorderedGroups.get(i(r,o));return!(null==e?void 0:e[s])},a})),a=tn(e,Jt(t),s,"*");return t=>{a(t),e.parser.isRecording()||e.parser.unorderedGroups.delete(i(r,e.parser))}}(e,t);else if((0,a.IZ)(t))r=function(e,t){const n=t.elements.map(t=>Qt(e,t));return e=>n.forEach(t=>t(e))}(e,t);else{if(!(0,a.FO)(t))throw new Yt.W(t.$cstNode,`Unexpected element type: ${t.$type}`);{const n=e.consume++;r=()=>e.parser.consume(n,o.LT,t)}}return tn(e,n?void 0:Jt(t),r,t.cardinality)}function Zt(e){if((0,a.RP)(e)){const t=Zt(e.left),n=Zt(e.right);return e=>t(e)||n(e)}if((0,a.Tu)(e)){const t=Zt(e.left),n=Zt(e.right);return e=>t(e)&&n(e)}if((0,a.Ct)(e)){const t=Zt(e.value);return e=>!t(e)}if((0,a.TF)(e)){const t=e.parameter.ref.name;return e=>void 0!==e&&!0===e[t]}if((0,a.Cz)(e)){const t=Boolean(e.true);return()=>t}(0,Yt.d)(e)}function Jt(e){if((0,a.IZ)(e))return e.guardCondition}function en(e,t,n=t.terminal){if(n){if((0,a.$g)(n)&&(0,a.s7)(n.rule.ref)){const r=n.rule.ref,i=e.subrule++;return n=>e.parser.subrule(i,nn(e,r),!1,t,n)}if((0,a.$g)(n)&&(0,a.rE)(n.rule.ref)){const r=e.consume++,i=rn(e,n.rule.ref.name);return()=>e.parser.consume(r,i,t)}if((0,a.wb)(n)){const r=e.consume++,i=rn(e,n.value);return()=>e.parser.consume(r,i,t)}throw new Error("Could not build cross reference parser")}{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);const n=(0,i.U5)(t.type.ref),r=null==n?void 0:n.terminal;if(!r)throw new Error("Could not find name assignment for type: "+(0,i.Uz)(t.type.ref));return en(e,t,r)}}function tn(e,t,n,r){const i=t&&Zt(t);if(!r){if(i){const t=e.or++;return r=>e.parser.alternatives(t,[{ALT:()=>n(r),GATE:()=>i(r)},{ALT:(0,o.mT)(),GATE:()=>!i(r)}])}return n}if("*"===r){const t=e.many++;return r=>e.parser.many(t,{DEF:()=>n(r),GATE:i?()=>i(r):void 0})}if("+"===r){const t=e.many++;if(i){const r=e.or++;return s=>e.parser.alternatives(r,[{ALT:()=>e.parser.atLeastOne(t,{DEF:()=>n(s)}),GATE:()=>i(s)},{ALT:(0,o.mT)(),GATE:()=>!i(s)}])}return r=>e.parser.atLeastOne(t,{DEF:()=>n(r)})}if("?"===r){const t=e.optional++;return r=>e.parser.optional(t,{DEF:()=>n(r),GATE:i?()=>i(r):void 0})}(0,Yt.d)(r)}function nn(e,t){const n=function(e,t){if((0,a.s7)(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let n=t,r=n.$container,i=t.$type;for(;!(0,a.s7)(r);){if((0,a.IZ)(r)||(0,a.jp)(r)||(0,a.cY)(r)){i=r.elements.indexOf(n).toString()+":"+i}n=r,r=r.$container}return i=r.name+":"+i,e.ruleNames.set(t,i),i}}(e,t),r=e.parser.getRule(n);if(!r)throw new Error(`Rule "${n}" not found."`);return r}function rn(e,t){const n=e.tokens[t];if(!n)throw new Error(`Token "${t}" not found."`);return n}function sn(e){const t=function(e){const t=e.Grammar,n=e.parser.Lexer,r=new Bt(e);return qt(t,r,n.definition)}(e);return t.finalize(),t}var an=n(1945),on=n(5033),ln=n(9850),cn=n(2479);let un=0,dn=10;const hn=Symbol("OperationCancelled");function fn(e){return e===hn}async function pn(e){if(e===ln.XO.None)return;const t=performance.now();if(t-un>=dn&&(un=t,await new Promise(e=>{"undefined"==typeof setImmediate?setTimeout(e,0):setImmediate(e)}),un=performance.now()),e.isCancellationRequested)throw hn}class mn{constructor(){this.promise=new Promise((e,t)=>{this.resolve=t=>(e(t),this),this.reject=e=>(t(e),this)})}}class gn{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){const t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){for(const n of e)if(gn.isIncremental(n)){const e=Rn(n.range),t=this.offsetAt(e.start),r=this.offsetAt(e.end);this._content=this._content.substring(0,t)+n.text+this._content.substring(r,this._content.length);const i=Math.max(e.start.line,0),s=Math.max(e.end.line,0);let a=this._lineOffsets;const o=An(n.text,!1,t);if(s-i===o.length)for(let n=0,c=o.length;n<c;n++)a[n+i+1]=o[n];else o.length<1e4?a.splice(i+1,s-i,...o):this._lineOffsets=a=a.slice(0,i+1).concat(o,a.slice(s+1));const l=n.text.length-(r-t);if(0!==l)for(let n=i+1+o.length,c=a.length;n<c;n++)a[n]=a[n]+l}else{if(!gn.isFull(n))throw new Error("Unknown change event received");this._content=n.text,this._lineOffsets=void 0}this._version=t}getLineOffsets(){return void 0===this._lineOffsets&&(this._lineOffsets=An(this._content,!0)),this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);const t=this.getLineOffsets();let n=0,r=t.length;if(0===r)return{line:0,character:e};for(;n<r;){const i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}const i=n-1;return{line:i,character:(e=this.ensureBeforeEOL(e,t[i]))-t[i]}}offsetAt(e){const t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;const n=t[e.line];if(e.character<=0)return n;const r=e.line+1<t.length?t[e.line+1]:this._content.length,i=Math.min(n+e.character,r);return this.ensureBeforeEOL(i,n)}ensureBeforeEOL(e,t){for(;e>t&&vn(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)}static isFull(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength}}var yn;function Tn(e,t){if(e.length<=1)return e;const n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);Tn(r,t),Tn(i,t);let s=0,a=0,o=0;for(;s<r.length&&a<i.length;){const n=t(r[s],i[a]);e[o++]=n<=0?r[s++]:i[a++]}for(;s<r.length;)e[o++]=r[s++];for(;a<i.length;)e[o++]=i[a++];return e}function An(e,t,n=0){const r=t?[n]:[];for(let i=0;i<e.length;i++){const t=e.charCodeAt(i);vn(t)&&(13===t&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,r.push(n+i+1))}return r}function vn(e){return 13===e||10===e}function Rn(e){const t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function $n(e){const t=Rn(e.range);return t!==e.range?{newText:e.newText,range:t}:e}!function(e){e.create=function(e,t,n,r){return new gn(e,t,n,r)},e.update=function(e,t,n){if(e instanceof gn)return e.update(t,n),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){const n=e.getText(),r=Tn(t.map($n),(e,t)=>{const n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n});let i=0;const s=[];for(const a of r){const t=e.offsetAt(a.range.start);if(t<i)throw new Error("Overlapping edit");t>i&&s.push(n.substring(i,t)),a.newText.length&&s.push(a.newText),i=e.offsetAt(a.range.end)}return s.push(n.substr(i)),s.join("")}}(yn||(yn={}));var En,kn=n(7608);!function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"}(En||(En={}));class xn{constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=ln.XO.None){const n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,t)}fromTextDocument(e,t,n){return t=null!=t?t:kn.r.parse(e.uri),ln.XO.is(n)?this.createAsync(t,e,n):this.create(t,e,n)}fromString(e,t,n){return ln.XO.is(n)?this.createAsync(t,e,n):this.create(t,e,n)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,n){if("string"==typeof t){const r=this.parse(e,t,n);return this.createLangiumDocument(r,e,void 0,t)}if("$model"in t){const n={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}{const r=this.parse(e,t.getText(),n);return this.createLangiumDocument(r,e,t)}}async createAsync(e,t,n){if("string"==typeof t){const r=await this.parseAsync(e,t,n);return this.createLangiumDocument(r,e,void 0,t)}{const r=await this.parseAsync(e,t.getText(),n);return this.createLangiumDocument(r,e,t)}}createLangiumDocument(e,t,n,r){let i;if(n)i={parseResult:e,uri:t,state:En.Parsed,references:[],textDocument:n};else{const n=this.createTextDocumentGetter(t,r);i={parseResult:e,uri:t,state:En.Parsed,references:[],get textDocument(){return n()}}}return e.value.$document=i,i}async update(e,t){var n,r;const i=null===(n=e.parseResult.value.$cstNode)||void 0===n?void 0:n.root.fullText,s=null===(r=this.textDocuments)||void 0===r?void 0:r.get(e.uri.toString()),a=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{const t=this.createTextDocumentGetter(e.uri,a);Object.defineProperty(e,"textDocument",{get:t})}return i!==a&&(e.parseResult=await this.parseAsync(e.uri,a,t),e.parseResult.value.$document=e),e.state=En.Parsed,e}parse(e,t,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,n)}parseAsync(e,t,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,n)}createTextDocumentGetter(e,t){const n=this.serviceRegistry;let r;return()=>null!=r?r:r=yn.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,null!=t?t:"")}}class In{constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return(0,Xt.Td)(this.documentMap.values())}addDocument(e){const t=e.uri.toString();if(this.documentMap.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentMap.set(t,e)}getDocument(e){const t=e.toString();return this.documentMap.get(t)}async getOrCreateDocument(e,t){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(n),n)}createDocument(e,t,n){if(n)return this.langiumDocumentFactory.fromString(t,e,n).then(e=>(this.addDocument(e),e));{const n=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(n),n}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){const t=e.toString(),n=this.documentMap.get(t);if(n){this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=En.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0}return n}deleteDocument(e){const t=e.toString(),n=this.documentMap.get(t);return n&&(n.state=En.Changed,this.documentMap.delete(t)),n}}const Sn=Symbol("ref_resolving");class Nn{constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,t=ln.XO.None){for(const n of(0,Nt.jm)(e.parseResult.value))await pn(t),(0,Nt.DM)(n).forEach(t=>this.doLink(t,e))}doLink(e,t){var n;const r=e.reference;if(void 0===r._ref){r._ref=Sn;try{const t=this.getCandidate(e);if((0,cn.Zl)(t))r._ref=t;else if(r._nodeDescription=t,this.langiumDocuments().hasDocument(t.documentUri)){const n=this.loadAstNode(t);r._ref=null!=n?n:this.createLinkingError(e,t)}else r._ref=void 0}catch(i){console.error(`An error occurred while resolving reference to '${r.$refText}':`,i);const t=null!==(n=i.message)&&void 0!==n?n:String(i);r._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${r.$refText}': ${t}`})}t.references.push(r)}}unlink(e){for(const t of e.references)delete t._ref,delete t._nodeDescription;e.references=[]}getCandidate(e){const t=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return null!=t?t:this.createLinkingError(e)}buildReference(e,t,n,r){const i=this,s={$refNode:n,$refText:r,get ref(){var n;if((0,cn.ng)(this._ref))return this._ref;if((0,cn.Nr)(this._nodeDescription)){const n=i.loadAstNode(this._nodeDescription);this._ref=null!=n?n:i.createLinkingError({reference:s,container:e,property:t},this._nodeDescription)}else if(void 0===this._ref){this._ref=Sn;const r=(0,Nt.cQ)(e).$document,a=i.getLinkedNode({reference:s,container:e,property:t});if(a.error&&r&&r.state<En.ComputedScopes)return this._ref=void 0;this._ref=null!==(n=a.node)&&void 0!==n?n:a.error,this._nodeDescription=a.descr,null==r||r.references.push(this)}else if(this._ref===Sn)throw new Error(`Cyclic reference resolution detected: ${i.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`);return(0,cn.ng)(this._ref)?this._ref:void 0},get $nodeDescription(){return this._nodeDescription},get error(){return(0,cn.Zl)(this._ref)?this._ref:void 0}};return s}getLinkedNode(e){var t;try{const t=this.getCandidate(e);if((0,cn.Zl)(t))return{error:t};const n=this.loadAstNode(t);return n?{node:n,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(n){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,n);const r=null!==(t=n.message)&&void 0!==t?t:String(n);return{error:Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`})}}}loadAstNode(e){if(e.node)return e.node;const t=this.langiumDocuments().getDocument(e.documentUri);return t?this.astNodeLocator.getAstNode(t.parseResult.value,e.path):void 0}createLinkingError(e,t){const n=(0,Nt.cQ)(e.container).$document;n&&n.state<En.ComputedScopes&&console.warn(`Attempted reference resolution before document reached ComputedScopes state (${n.uri}).`);const r=this.reflection.getReferenceType(e);return Object.assign(Object.assign({},e),{message:`Could not resolve reference to ${r} named '${e.reference.$refText}'.`,targetDescription:t})}}class Cn{getName(e){if(function(e){return"string"==typeof e.name}(e))return e.name}getNameNode(e){return(0,i.qO)(e.$cstNode,"name")}}var wn;!function(e){e.basename=kn.A.basename,e.dirname=kn.A.dirname,e.extname=kn.A.extname,e.joinPath=kn.A.joinPath,e.resolvePath=kn.A.resolvePath,e.equals=function(e,t){return(null==e?void 0:e.toString())===(null==t?void 0:t.toString())},e.relative=function(e,t){const n="string"==typeof e?e:e.path,r="string"==typeof t?t:t.path,i=n.split("/").filter(e=>e.length>0),s=r.split("/").filter(e=>e.length>0);let a=0;for(;a<i.length&&i[a]===s[a];a++);return"../".repeat(i.length-a)+s.slice(a).join("/")},e.normalize=function(e){return kn.r.parse(e.toString()).toString()}}(wn||(wn={}));class Ln{constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){const t=(0,i.Rp)(e),n=e.astNode;if(t&&n){const r=n[t.feature];if((0,cn.A_)(r))return r.ref;if(Array.isArray(r))for(const t of r)if((0,cn.A_)(t)&&t.$refNode&&t.$refNode.offset<=e.offset&&t.$refNode.end>=e.end)return t.ref}if(n){const t=this.nameProvider.getNameNode(n);if(t&&(t===e||(0,r.pO)(e,t)))return n}}}findDeclarationNode(e){const t=this.findDeclaration(e);if(null==t?void 0:t.$cstNode){const e=this.nameProvider.getNameNode(t);return null!=e?e:t.$cstNode}}findReferences(e,t){const n=[];if(t.includeDeclaration){const t=this.getReferenceToSelf(e);t&&n.push(t)}let r=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(r=r.filter(e=>wn.equals(e.sourceUri,t.documentUri))),n.push(...r),(0,Xt.Td)(n)}getReferenceToSelf(e){const t=this.nameProvider.getNameNode(e);if(t){const n=(0,Nt.YE)(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:(0,r.SX)(t),local:!0}}}}class bn{constructor(e){if(this.map=new Map,e)for(const[t,n]of e)this.add(t,n)}get size(){return Xt.iD.sum((0,Xt.Td)(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(void 0===t)return this.map.delete(e);{const n=this.map.get(e);if(n){const r=n.indexOf(t);if(r>=0)return 1===n.length?this.map.delete(e):n.splice(r,1),!0}return!1}}get(e){var t;return null!==(t=this.map.get(e))&&void 0!==t?t:[]}has(e,t){if(void 0===t)return this.map.has(e);{const n=this.map.get(e);return!!n&&n.indexOf(t)>=0}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,n)=>t.forEach(t=>e(t,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return(0,Xt.Td)(this.map.entries()).flatMap(([e,t])=>t.map(t=>[e,t]))}keys(){return(0,Xt.Td)(this.map.keys())}values(){return(0,Xt.Td)(this.map.values()).flat()}entriesGroupedByKey(){return(0,Xt.Td)(this.map.entries())}}class On{get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(const[t,n]of e)this.set(t,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){const t=this.map.get(e);return void 0!==t&&(this.map.delete(e),this.inverse.delete(t),!0)}}class _n{constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,t=ln.XO.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,t)}async computeExportsForNode(e,t,n=Nt.VN,r=ln.XO.None){const i=[];this.exportNode(e,i,t);for(const s of n(e))await pn(r),this.exportNode(s,i,t);return i}exportNode(e,t,n){const r=this.nameProvider.getName(e);r&&t.push(this.descriptions.createDescription(e,r,n))}async computeLocalScopes(e,t=ln.XO.None){const n=e.parseResult.value,r=new bn;for(const i of(0,Nt.Uo)(n))await pn(t),this.processNode(i,e,r);return r}processNode(e,t,n){const r=e.$container;if(r){const i=this.nameProvider.getName(e);i&&n.add(r,this.descriptions.createDescription(e,i,t))}}}class Pn{constructor(e,t,n){var r;this.elements=e,this.outerScope=t,this.caseInsensitive=null!==(r=null==n?void 0:n.caseInsensitive)&&void 0!==r&&r}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){const t=this.caseInsensitive?this.elements.find(t=>t.name.toLowerCase()===e.toLowerCase()):this.elements.find(t=>t.name===e);return t||(this.outerScope?this.outerScope.getElement(e):void 0)}}class Mn{constructor(e,t,n){var r;this.elements=new Map,this.caseInsensitive=null!==(r=null==n?void 0:n.caseInsensitive)&&void 0!==r&&r;for(const i of e){const e=this.caseInsensitive?i.name.toLowerCase():i.name;this.elements.set(e,i)}this.outerScope=t}getElement(e){const t=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(t);return n||(this.outerScope?this.outerScope.getElement(e):void 0)}getAllElements(){let e=(0,Xt.Td)(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}}class Dn{constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}}class Un extends Dn{constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){const n=t();return this.cache.set(e,n),n}}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}}class Fn extends Dn{constructor(e){super(),this.cache=new Map,this.converter=null!=e?e:e=>e}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,n){this.throwIfDisposed(),this.cacheForContext(e).set(t,n)}get(e,t,n){this.throwIfDisposed();const r=this.cacheForContext(e);if(r.has(t))return r.get(t);if(n){const e=n();return r.set(t,e),e}}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){const t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){const t=this.converter(e);let n=this.cache.get(t);return n||(n=new Map,this.cache.set(t,n)),n}}class Gn extends Un{constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((e,t)=>{t.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}class Kn{constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new Gn(e.shared)}getScope(e){const t=[],n=this.reflection.getReferenceType(e),r=(0,Nt.YE)(e.container).precomputedScopes;if(r){let i=e.container;do{const e=r.get(i);e.length>0&&t.push((0,Xt.Td)(e).filter(e=>this.reflection.isSubtype(e.type,n))),i=i.$container}while(i)}let i=this.getGlobalScope(n,e);for(let s=t.length-1;s>=0;s--)i=this.createScope(t[s],i);return i}createScope(e,t,n){return new Pn((0,Xt.Td)(e),t,n)}createScopeForNodes(e,t,n){const r=(0,Xt.Td)(e).map(e=>{const t=this.nameProvider.getName(e);if(t)return this.descriptions.createDescription(e,t)}).nonNullable();return new Pn(r,t,n)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new Mn(this.indexManager.allElements(e)))}}function Bn(e){return"object"==typeof e&&!!e&&("$ref"in e||"$error"in e)}class Vn{constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){const n=null!=t?t:{},r=null==t?void 0:t.replacer,i=(e,t)=>this.replacer(e,t,n),s=r?(e,t)=>r(e,t,i):i;try{return this.currentDocument=(0,Nt.YE)(e),JSON.stringify(e,s,null==t?void 0:t.space)}finally{this.currentDocument=void 0}}deserialize(e,t){const n=null!=t?t:{},r=JSON.parse(e);return this.linkNode(r,r,n),r}replacer(e,t,{refText:n,sourceText:r,textRegions:i,comments:s,uriConverter:a}){var o,l,c,u;if(!this.ignoreProperties.has(e)){if((0,cn.A_)(t)){const e=t.ref,r=n?t.$refText:void 0;if(e){const n=(0,Nt.YE)(e);let i="";this.currentDocument&&this.currentDocument!==n&&(i=a?a(n.uri,t):n.uri.toString());return{$ref:`${i}#${this.astNodeLocator.getAstNodePath(e)}`,$refText:r}}return{$error:null!==(l=null===(o=t.error)||void 0===o?void 0:o.message)&&void 0!==l?l:"Could not resolve reference",$refText:r}}if((0,cn.ng)(t)){let n;if(i&&(n=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},t)),e&&!t.$document||!(null==n?void 0:n.$textRegion)||(n.$textRegion.documentURI=null===(c=this.currentDocument)||void 0===c?void 0:c.uri.toString())),r&&!e&&(null!=n||(n=Object.assign({},t)),n.$sourceText=null===(u=t.$cstNode)||void 0===u?void 0:u.text),s){null!=n||(n=Object.assign({},t));const e=this.commentProvider.getComment(t);e&&(n.$comment=e.replace(/\r/g,""))}return null!=n?n:t}return t}}addAstNodeRegionWithAssignmentsTo(e){const t=e=>({offset:e.offset,end:e.end,length:e.length,range:e.range});if(e.$cstNode){const n=(e.$textRegion=t(e.$cstNode)).assignments={};return Object.keys(e).filter(e=>!e.startsWith("$")).forEach(r=>{const s=(0,i.Bd)(e.$cstNode,r).map(t);0!==s.length&&(n[r]=s)}),e}}linkNode(e,t,n,r,i,s){for(const[o,l]of Object.entries(e))if(Array.isArray(l))for(let r=0;r<l.length;r++){const i=l[r];Bn(i)?l[r]=this.reviveReference(e,o,t,i,n):(0,cn.ng)(i)&&this.linkNode(i,t,n,e,o,r)}else Bn(l)?e[o]=this.reviveReference(e,o,t,l,n):(0,cn.ng)(l)&&this.linkNode(l,t,n,e,o);const a=e;a.$container=r,a.$containerProperty=i,a.$containerIndex=s}reviveReference(e,t,n,r,i){let s=r.$refText,a=r.$error;if(r.$ref){const e=this.getRefNode(n,r.$ref,i.uriConverter);if((0,cn.ng)(e))return s||(s=this.nameProvider.getName(e)),{$refText:null!=s?s:"",ref:e};a=e}if(a){const n={$refText:null!=s?s:""};return n.error={container:e,property:t,message:a,reference:n},n}}getRefNode(e,t,n){try{const r=t.indexOf("#");if(0===r){const n=this.astNodeLocator.getAstNode(e,t.substring(1));return n||"Could not resolve path: "+t}if(r<0){const e=n?n(t):kn.r.parse(t),r=this.langiumDocuments.getDocument(e);return r?r.parseResult.value:"Could not find document for URI: "+t}const i=n?n(t.substring(0,r)):kn.r.parse(t.substring(0,r)),s=this.langiumDocuments.getDocument(i);if(!s)return"Could not find document for URI: "+t;if(r===t.length-1)return s.parseResult.value;const a=this.astNodeLocator.getAstNode(s.parseResult.value,t.substring(r+1));return a||"Could not resolve URI: "+t}catch(r){return String(r)}}}class jn{get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=null==e?void 0:e.workspace.TextDocuments}register(e){const t=e.LanguageMetaData;for(const n of t.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${t.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(t.languageId,e),1===this.languageIdMap.size?this.singleton=e:this.singleton=void 0}getServices(e){var t,n;if(void 0!==this.singleton)return this.singleton;if(0===this.languageIdMap.size)throw new Error("The service registry is empty. Use `register` to register the services of a language.");const r=null===(n=null===(t=this.textDocuments)||void 0===t?void 0:t.get(e))||void 0===n?void 0:n.languageId;if(void 0!==r){const e=this.languageIdMap.get(r);if(e)return e}const i=wn.extname(e),s=this.fileExtensionMap.get(i);if(!s)throw r?new Error(`The service registry contains no services for the extension '${i}' for language '${r}'.`):new Error(`The service registry contains no services for the extension '${i}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch(t){return!1}}get all(){return Array.from(this.languageIdMap.values())}}function Hn(e){return{code:e}}var Wn,zn;!function(e){e.all=["fast","slow","built-in"]}(Wn||(Wn={}));class Yn{constructor(e){this.entries=new bn,this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,t=this,n="fast"){if("built-in"===n)throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(const[r,i]of Object.entries(e)){const e=i;if(Array.isArray(e))for(const i of e){const e={check:this.wrapValidationException(i,t),category:n};this.addEntry(r,e)}else if("function"==typeof e){const i={check:this.wrapValidationException(e,t),category:n};this.addEntry(r,i)}else(0,Yt.d)(e)}}wrapValidationException(e,t){return async(n,r,i)=>{await this.handleException(()=>e.call(t,n,r,i),"An error occurred during validation",r,n)}}async handleException(e,t,n,r){try{await e()}catch(i){if(fn(i))throw i;console.error(`${t}:`,i),i instanceof Error&&i.stack&&console.error(i.stack);n("error",`${t}: ${i instanceof Error?i.message:String(i)}`,{node:r})}}addEntry(e,t){if("AstNode"!==e)for(const n of this.reflection.getAllSubTypes(e))this.entries.add(n,t);else this.entries.add("AstNode",t)}getChecks(e,t){let n=(0,Xt.Td)(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(n=n.filter(e=>t.includes(e.category))),n.map(e=>e.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,n){return async(r,i,s,a)=>{await this.handleException(()=>e.call(n,r,i,s,a),t,i,r)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}class Xn{constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,t={},n=ln.XO.None){const r=e.parseResult,i=[];if(await pn(n),!t.categories||t.categories.includes("built-in")){if(this.processLexingErrors(r,i,t),t.stopAfterLexingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.LexingError}))return i;if(this.processParsingErrors(r,i,t),t.stopAfterParsingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.ParsingError}))return i;if(this.processLinkingErrors(e,i,t),t.stopAfterLinkingErrors&&i.some(e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===zn.LinkingError}))return i}try{i.push(...await this.validateAst(r.value,t,n))}catch(s){if(fn(s))throw s;console.error("An error occurred during validation:",s)}return await pn(n),i}processLexingErrors(e,t,n){var r,i,s;const a=[...e.lexerErrors,...null!==(i=null===(r=e.lexerReport)||void 0===r?void 0:r.diagnostics)&&void 0!==i?i:[]];for(const o of a){const e=null!==(s=o.severity)&&void 0!==s?s:"error",n={severity:Qn(e),range:{start:{line:o.line-1,character:o.column-1},end:{line:o.line-1,character:o.column+o.length-1}},message:o.message,data:Zn(e),source:this.getSource()};t.push(n)}}processParsingErrors(e,t,n){for(const i of e.parserErrors){let e;if(isNaN(i.token.startOffset)){if("previousToken"in i){const t=i.previousToken;if(isNaN(t.startOffset)){const t={line:0,character:0};e={start:t,end:t}}else{const n={line:t.endLine-1,character:t.endColumn};e={start:n,end:n}}}}else e=(0,r.wf)(i.token);if(e){const n={severity:Qn("error"),range:e,message:i.message,data:Hn(zn.ParsingError),source:this.getSource()};t.push(n)}}}processLinkingErrors(e,t,n){for(const r of e.references){const e=r.error;if(e){const n={node:e.container,property:e.property,index:e.index,data:{code:zn.LinkingError,containerType:e.container.$type,property:e.property,refText:e.reference.$refText}};t.push(this.toDiagnostic("error",e.message,n))}}}async validateAst(e,t,n=ln.XO.None){const r=[],i=(e,t,n)=>{r.push(this.toDiagnostic(e,t,n))};return await this.validateAstBefore(e,t,i,n),await this.validateAstNodes(e,t,i,n),await this.validateAstAfter(e,t,i,n),r}async validateAstBefore(e,t,n,r=ln.XO.None){var i;const s=this.validationRegistry.checksBefore;for(const a of s)await pn(r),await a(e,n,null!==(i=t.categories)&&void 0!==i?i:[],r)}async validateAstNodes(e,t,n,r=ln.XO.None){await Promise.all((0,Nt.jm)(e).map(async e=>{await pn(r);const i=this.validationRegistry.getChecks(e.$type,t.categories);for(const t of i)await t(e,n,r)}))}async validateAstAfter(e,t,n,r=ln.XO.None){var i;const s=this.validationRegistry.checksAfter;for(const a of s)await pn(r),await a(e,n,null!==(i=t.categories)&&void 0!==i?i:[],r)}toDiagnostic(e,t,n){return{message:t,range:qn(n),severity:Qn(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}}function qn(e){if(e.range)return e.range;let t;return"string"==typeof e.property?t=(0,i.qO)(e.node.$cstNode,e.property,e.index):"string"==typeof e.keyword&&(t=(0,i.SS)(e.node.$cstNode,e.keyword,e.index)),null!=t||(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function Qn(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function Zn(e){switch(e){case"error":return Hn(zn.LexingError);case"warning":return Hn(zn.LexingWarning);case"info":return Hn(zn.LexingInfo);case"hint":return Hn(zn.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}!function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"}(zn||(zn={}));class Jn{constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,n){const i=null!=n?n:(0,Nt.YE)(e);null!=t||(t=this.nameProvider.getName(e));const s=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${s} has no name.`);let a;const o=()=>{var t;return null!=a?a:a=(0,r.SX)(null!==(t=this.nameProvider.getNameNode(e))&&void 0!==t?t:e.$cstNode)};return{node:e,name:t,get nameSegment(){return o()},selectionSegment:(0,r.SX)(e.$cstNode),type:e.$type,documentUri:i.uri,path:s}}}class er{constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=ln.XO.None){const n=[],r=e.parseResult.value;for(const i of(0,Nt.jm)(r))await pn(t),(0,Nt.DM)(i).filter(e=>!(0,cn.Zl)(e)).forEach(e=>{const t=this.createDescription(e);t&&n.push(t)});return n}createDescription(e){const t=e.reference.$nodeDescription,n=e.reference.$refNode;if(!t||!n)return;const i=(0,Nt.YE)(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:t.documentUri,targetPath:t.path,segment:(0,r.SX)(n),local:wn.equals(t.documentUri,i)}}}class tr{constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){const t=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return t+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return void 0!==t?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((e,t)=>{if(!e||0===t.length)return e;const n=t.indexOf(this.indexSeparator);if(n>0){const r=t.substring(0,n),i=parseInt(t.substring(n+1)),s=e[r];return null==s?void 0:s[i]}return e[t]},e)}}var nr,rr=n(2676);class ir{constructor(e){this._ready=new mn,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new rr.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var t,n;this.workspaceConfig=null!==(n=null===(t=e.capabilities.workspace)||void 0===t?void 0:t.configuration)&&void 0!==n&&n}async initialized(e){if(this.workspaceConfig){if(e.register){const t=this.serviceRegistry.all;e.register({section:t.map(e=>this.toSectionName(e.LanguageMetaData.languageId))})}if(e.fetchConfiguration){const t=this.serviceRegistry.all.map(e=>({section:this.toSectionName(e.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(t);t.forEach((e,t)=>{this.updateSectionConfiguration(e.section,n[t])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(t=>{const n=e.settings[t];this.updateSectionConfiguration(t,n),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:n})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;const n=this.toSectionName(e);if(this.settings[n])return this.settings[n][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}!function(e){e.create=function(e){return{dispose:async()=>await e()}}}(nr||(nr={}));class sr{constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new bn,this.documentPhaseListeners=new bn,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=En.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},n=ln.XO.None){var r,i;for(const s of e){const e=s.uri.toString();if(s.state===En.Validated){if("boolean"==typeof t.validation&&t.validation)s.state=En.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(e);else if("object"==typeof t.validation){const n=this.buildState.get(e),a=null===(r=null==n?void 0:n.result)||void 0===r?void 0:r.validationChecks;if(a){const r=(null!==(i=t.validation.categories)&&void 0!==i?i:Wn.all).filter(e=>!a.includes(e));r.length>0&&(this.buildState.set(e,{completed:!1,options:{validation:Object.assign(Object.assign({},t.validation),{categories:r})},result:n.result}),s.state=En.IndexedReferences)}}}else this.buildState.delete(e)}this.currentState=En.Changed,await this.emitUpdate(e.map(e=>e.uri),[]),await this.buildDocuments(e,t,n)}async update(e,t,n=ln.XO.None){this.currentState=En.Changed;for(const s of t)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(const s of e){if(!this.langiumDocuments.invalidateDocument(s)){const e=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);e.state=En.Changed,this.langiumDocuments.addDocument(e)}this.buildState.delete(s.toString())}const r=(0,Xt.Td)(e).concat(t).map(e=>e.toString()).toSet();this.langiumDocuments.all.filter(e=>!r.has(e.uri.toString())&&this.shouldRelink(e,r)).forEach(e=>{this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e),e.state=Math.min(e.state,En.ComputedScopes),e.diagnostics=void 0}),await this.emitUpdate(e,t),await pn(n);const i=this.sortDocuments(this.langiumDocuments.all.filter(e=>{var t;return e.state<En.Linked||!(null===(t=this.buildState.get(e.uri.toString()))||void 0===t?void 0:t.completed)}).toArray());await this.buildDocuments(i,this.updateBuildOptions,n)}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(n=>n(e,t)))}sortDocuments(e){let t=0,n=e.length-1;for(;t<n;){for(;t<e.length&&this.hasTextDocument(e[t]);)t++;for(;n>=0&&!this.hasTextDocument(e[n]);)n--;t<n&&([e[t],e[n]]=[e[n],e[t]])}return e}hasTextDocument(e){var t;return Boolean(null===(t=this.textDocuments)||void 0===t?void 0:t.get(e.uri))}shouldRelink(e,t){return!!e.references.some(e=>void 0!==e.error)||this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),nr.create(()=>{const t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}async buildDocuments(e,t,n){this.prepareBuild(e,t),await this.runCancelable(e,En.Parsed,n,e=>this.langiumDocumentFactory.update(e,n)),await this.runCancelable(e,En.IndexedContent,n,e=>this.indexManager.updateContent(e,n)),await this.runCancelable(e,En.ComputedScopes,n,async e=>{const t=this.serviceRegistry.getServices(e.uri).references.ScopeComputation;e.precomputedScopes=await t.computeLocalScopes(e,n)}),await this.runCancelable(e,En.Linked,n,e=>this.serviceRegistry.getServices(e.uri).references.Linker.link(e,n)),await this.runCancelable(e,En.IndexedReferences,n,e=>this.indexManager.updateReferences(e,n));const r=e.filter(e=>this.shouldValidate(e));await this.runCancelable(r,En.Validated,n,e=>this.validate(e,n));for(const i of e){const e=this.buildState.get(i.uri.toString());e&&(e.completed=!0)}}prepareBuild(e,t){for(const n of e){const e=n.uri.toString(),r=this.buildState.get(e);r&&!r.completed||this.buildState.set(e,{completed:!1,options:t,result:null==r?void 0:r.result})}}async runCancelable(e,t,n,r){const i=e.filter(e=>e.state<t);for(const a of i)await pn(n),await r(a),a.state=t,await this.notifyDocumentPhase(a,t,n);const s=e.filter(e=>e.state===t);await this.notifyBuildPhase(s,t,n),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),nr.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),nr.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,n){let r;if(t&&"path"in t?r=t:n=t,null!=n||(n=ln.XO.None),r){const t=this.langiumDocuments.getDocument(r);if(t&&t.state>e)return Promise.resolve(r)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(hn):new Promise((t,i)=>{const s=this.onBuildPhase(e,()=>{if(s.dispose(),a.dispose(),r){const e=this.langiumDocuments.getDocument(r);t(null==e?void 0:e.uri)}else t(void 0)}),a=n.onCancellationRequested(()=>{s.dispose(),a.dispose(),i(hn)})})}async notifyDocumentPhase(e,t,n){const r=this.documentPhaseListeners.get(t).slice();for(const s of r)try{await s(e,n)}catch(i){if(!fn(i))throw i}}async notifyBuildPhase(e,t,n){if(0===e.length)return;const r=this.buildPhaseListeners.get(t).slice();for(const i of r)await pn(n),await i(e,n)}shouldValidate(e){return Boolean(this.getBuildOptions(e).validation)}async validate(e,t){var n,r;const i=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,a="object"==typeof s?s:void 0,o=await i.validateDocument(e,a,t);e.diagnostics?e.diagnostics.push(...o):e.diagnostics=o;const l=this.buildState.get(e.uri.toString());if(l){null!==(n=l.result)&&void 0!==n||(l.result={});const e=null!==(r=null==a?void 0:a.categories)&&void 0!==r?r:Wn.all;l.result.validationChecks?l.result.validationChecks.push(...e):l.result.validationChecks=[...e]}}getBuildOptions(e){var t,n;return null!==(n=null===(t=this.buildState.get(e.uri.toString()))||void 0===t?void 0:t.options)&&void 0!==n?n:{}}}class ar{constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Fn,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){const n=(0,Nt.YE)(e).uri,r=[];return this.referenceIndex.forEach(e=>{e.forEach(e=>{wn.equals(e.targetUri,n)&&e.targetPath===t&&r.push(e)})}),(0,Xt.Td)(r)}allElements(e,t){let n=(0,Xt.Td)(this.symbolIndex.keys());return t&&(n=n.filter(e=>!t||t.has(e))),n.map(t=>this.getFileDescriptions(t,e)).flat()}getFileDescriptions(e,t){var n;if(!t)return null!==(n=this.symbolIndex.get(e))&&void 0!==n?n:[];const r=this.symbolByTypeIndex.get(e,t,()=>{var n;return(null!==(n=this.symbolIndex.get(e))&&void 0!==n?n:[]).filter(e=>this.astReflection.isSubtype(e.type,t))});return r}remove(e){const t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t),this.referenceIndex.delete(t)}async updateContent(e,t=ln.XO.None){const n=this.serviceRegistry.getServices(e.uri),r=await n.references.ScopeComputation.computeExports(e,t),i=e.uri.toString();this.symbolIndex.set(i,r),this.symbolByTypeIndex.clear(i)}async updateReferences(e,t=ln.XO.None){const n=this.serviceRegistry.getServices(e.uri),r=await n.workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),r)}isAffected(e,t){const n=this.referenceIndex.get(e.uri.toString());return!!n&&n.some(e=>!e.local&&t.has(e.targetUri.toString()))}}class or{constructor(e){this.initialBuildOptions={},this._ready=new mn,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var t;this.folders=null!==(t=e.workspaceFolders)&&void 0!==t?t:void 0}initialized(e){return this.mutex.write(e=>{var t;return this.initializeWorkspace(null!==(t=this.folders)&&void 0!==t?t:[],e)})}async initializeWorkspace(e,t=ln.XO.None){const n=await this.performStartup(e);await pn(t),await this.documentBuilder.build(n,this.initialBuildOptions,t)}async performStartup(e){const t=this.serviceRegistry.all.flatMap(e=>e.LanguageMetaData.fileExtensions),n=[],r=e=>{n.push(e),this.langiumDocuments.hasDocument(e.uri)||this.langiumDocuments.addDocument(e)};return await this.loadAdditionalDocuments(e,r),await Promise.all(e.map(e=>[e,this.getRootFolder(e)]).map(async e=>this.traverseFolder(...e,t,r))),this._ready.resolve(),n}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return kn.r.parse(e.uri)}async traverseFolder(e,t,n,r){const i=await this.fileSystemProvider.readDirectory(t);await Promise.all(i.map(async t=>{if(this.includeEntry(e,t,n))if(t.isDirectory)await this.traverseFolder(e,t.uri,n,r);else if(t.isFile){const e=await this.langiumDocuments.getOrCreateDocument(t.uri);r(e)}}))}includeEntry(e,t,n){const r=wn.basename(t.uri);if(r.startsWith("."))return!1;if(t.isDirectory)return"node_modules"!==r&&"out"!==r;if(t.isFile){const e=wn.extname(t.uri);return n.includes(e)}return!1}}class lr{buildUnexpectedCharactersMessage(e,t,n,r,i){return o.PW.buildUnexpectedCharactersMessage(e,t,n,r,i)}buildUnableToPopLexerModeMessage(e){return o.PW.buildUnableToPopLexerModeMessage(e)}}const cr={mode:"full"};class ur{constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;const t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);const n=hr(t)?Object.values(t):t,r="production"===e.LanguageMetaData.mode;this.chevrotainLexer=new o.JG(n,{positionTracking:"full",skipValidations:r,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=cr){var n,r,i;const s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:null!==(n=s.groups.hidden)&&void 0!==n?n:[],report:null===(i=(r=this.tokenBuilder).flushLexingReport)||void 0===i?void 0:i.call(r,e)}}toTokenTypeDictionary(e){if(hr(e))return e;const t=dr(e)?Object.values(e.modes).flat():e,n={};return t.forEach(e=>n[e.name]=e),n}}function dr(e){return e&&"modes"in e&&"defaultMode"in e}function hr(e){return!function(e){return Array.isArray(e)&&(0===e.length||"name"in e[0])}(e)&&!dr(e)}function fr(e,t,n){let r,i;"string"==typeof e?(i=t,r=n):(i=e.range.start,r=t),i||(i=le.create(0,0));const s=function(e){var t,n,r;const i=[];let s=e.position.line,a=e.position.character;for(let o=0;o<e.lines.length;o++){const l=0===o,c=o===e.lines.length-1;let u=e.lines[o],d=0;if(l&&e.options.start){const n=null===(t=e.options.start)||void 0===t?void 0:t.exec(u);n&&(d=n.index+n[0].length)}else{const t=null===(n=e.options.line)||void 0===n?void 0:n.exec(u);t&&(d=t.index+t[0].length)}if(c){const t=null===(r=e.options.end)||void 0===r?void 0:r.exec(u);t&&(u=u.substring(0,t.index))}u=u.substring(0,Rr(u));if(vr(u,d)>=u.length){if(i.length>0){const e=le.create(s,a);i.push({type:"break",content:"",range:ce.create(e,e)})}}else{mr.lastIndex=d;const e=mr.exec(u);if(e){const t=e[0],n=e[1],r=le.create(s,a+d),o=le.create(s,a+d+t.length);i.push({type:"tag",content:n,range:ce.create(r,o)}),d+=t.length,d=vr(u,d)}if(d<u.length){const e=u.substring(d),t=Array.from(e.matchAll(gr));i.push(...yr(t,e,s,a+d))}}s++,a=0}if(i.length>0&&"break"===i[i.length-1].type)return i.slice(0,-1);return i}({lines:pr(e),position:i,options:Sr(r)});return function(e){var t,n,r,i;const s=le.create(e.position.line,e.position.character);if(0===e.tokens.length)return new Cr([],ce.create(s,s));const a=[];for(;e.index<e.tokens.length;){const t=$r(e,a[a.length-1]);t&&a.push(t)}const o=null!==(n=null===(t=a[0])||void 0===t?void 0:t.range.start)&&void 0!==n?n:s,l=null!==(i=null===(r=a[a.length-1])||void 0===r?void 0:r.range.end)&&void 0!==i?i:s;return new Cr(a,ce.create(o,l))}({index:0,tokens:s,position:i})}function pr(e){let t="";t="string"==typeof e?e:e.text;return t.split(s.TH)}const mr=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,gr=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function yr(e,t,n,r){const i=[];if(0===e.length){const e=le.create(n,r),s=le.create(n,r+t.length);i.push({type:"text",content:t,range:ce.create(e,s)})}else{let s=0;for(const o of e){const e=o.index,a=t.substring(s,e);a.length>0&&i.push({type:"text",content:t.substring(s,e),range:ce.create(le.create(n,s+r),le.create(n,e+r))});let l=a.length+1;const c=o[1];if(i.push({type:"inline-tag",content:c,range:ce.create(le.create(n,s+l+r),le.create(n,s+l+c.length+r))}),l+=c.length,4===o.length){l+=o[2].length;const e=o[3];i.push({type:"text",content:e,range:ce.create(le.create(n,s+l+r),le.create(n,s+l+e.length+r))})}else i.push({type:"text",content:"",range:ce.create(le.create(n,s+l+r),le.create(n,s+l+r))});s=e+o[0].length}const a=t.substring(s);a.length>0&&i.push({type:"text",content:a,range:ce.create(le.create(n,s+r),le.create(n,s+r+a.length))})}return i}const Tr=/\S/,Ar=/\s*$/;function vr(e,t){const n=e.substring(t).match(Tr);return n?t+n.index:e.length}function Rr(e){const t=e.match(Ar);if(t&&"number"==typeof t.index)return t.index}function $r(e,t){const n=e.tokens[e.index];return"tag"===n.type?xr(e,!1):"text"===n.type||"inline-tag"===n.type?Er(e):(function(e,t){if(t){const n=new br("",e.range);"inlines"in t?t.inlines.push(n):t.content.inlines.push(n)}}(n,t),void e.index++)}function Er(e){let t=e.tokens[e.index];const n=t;let r=t;const i=[];for(;t&&"break"!==t.type&&"tag"!==t.type;)i.push(kr(e)),r=t,t=e.tokens[e.index];return new Lr(i,ce.create(n.range.start,r.range.end))}function kr(e){return"inline-tag"===e.tokens[e.index].type?xr(e,!0):Ir(e)}function xr(e,t){const n=e.tokens[e.index++],r=n.content.substring(1),i=e.tokens[e.index];if("text"===(null==i?void 0:i.type)){if(t){const i=Ir(e);return new wr(r,new Lr([i],i.range),t,ce.create(n.range.start,i.range.end))}{const i=Er(e);return new wr(r,i,t,ce.create(n.range.start,i.range.end))}}{const e=n.range;return new wr(r,new Lr([],e),t,e)}}function Ir(e){const t=e.tokens[e.index++];return new br(t.content,t.range)}function Sr(e){if(!e)return Sr({start:"/**",end:"*/",line:"*"});const{start:t,end:n,line:r}=e;return{start:Nr(t,!0),end:Nr(n,!1),line:Nr(r,!0)}}function Nr(e,t){if("string"==typeof e||"object"==typeof e){const n="string"==typeof e?(0,s.Nt)(e):e.source;return t?new RegExp(`^\\s*${n}`):new RegExp(`\\s*${n}\\s*$`)}return e}class Cr{constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(const t of this.elements)if(0===e.length)e=t.toString();else{const n=t.toString();e+=Or(e)+n}return e.trim()}toMarkdown(e){let t="";for(const n of this.elements)if(0===t.length)t=n.toMarkdown(e);else{const r=n.toMarkdown(e);t+=Or(t)+r}return t.trim()}}class wr{constructor(e,t,n,r){this.name=e,this.content=t,this.inline=n,this.range=r}toString(){let e=`@${this.name}`;const t=this.content.toString();return 1===this.content.inlines.length?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e}\n${t}`),this.inline?`{${e}}`:e}toMarkdown(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.renderTag)||void 0===t?void 0:t.call(e,this))&&void 0!==n?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){const t=this.content.toMarkdown(e);if(this.inline){const n=function(e,t,n){var r,i;if("linkplain"===e||"linkcode"===e||"link"===e){const s=t.indexOf(" ");let a=t;if(s>0){const e=vr(t,s);a=t.substring(e),t=t.substring(0,s)}("linkcode"===e||"link"===e&&"code"===n.link)&&(a=`\`${a}\``);const o=null!==(i=null===(r=n.renderLink)||void 0===r?void 0:r.call(n,t,a))&&void 0!==i?i:function(e,t){try{return kn.r.parse(e,!0),`[${t}](${e})`}catch(r){return e}}(t,a);return o}return}(this.name,t,null!=e?e:{});if("string"==typeof n)return n}let n="";"italic"===(null==e?void 0:e.tag)||void 0===(null==e?void 0:e.tag)?n="*":"bold"===(null==e?void 0:e.tag)?n="**":"bold-italic"===(null==e?void 0:e.tag)&&(n="***");let r=`${n}@${this.name}${n}`;return 1===this.content.inlines.length?r=`${r} \u2014 ${t}`:this.content.inlines.length>1&&(r=`${r}\n${t}`),this.inline?`{${r}}`:r}}class Lr{constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;t<this.inlines.length;t++){const n=this.inlines[t],r=this.inlines[t+1];e+=n.toString(),r&&r.range.start.line>n.range.start.line&&(e+="\n")}return e}toMarkdown(e){let t="";for(let n=0;n<this.inlines.length;n++){const r=this.inlines[n],i=this.inlines[n+1];t+=r.toMarkdown(e),i&&i.range.start.line>r.range.start.line&&(t+="\n")}return t}}class br{constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}}function Or(e){return e.endsWith("\n")?"\n":"\n\n"}class _r{constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){const t=this.commentProvider.getComment(e);if(t&&function(e,t){const n=Sr(t),r=pr(e);if(0===r.length)return!1;const i=r[0],s=r[r.length-1],a=n.start,o=n.end;return Boolean(null==a?void 0:a.exec(i))&&Boolean(null==o?void 0:o.exec(s))}(t)){return fr(t).toMarkdown({renderLink:(t,n)=>this.documentationLinkRenderer(e,t,n),renderTag:t=>this.documentationTagRenderer(e,t)})}}documentationLinkRenderer(e,t,n){var r;const i=null!==(r=this.findNameInPrecomputedScopes(e,t))&&void 0!==r?r:this.findNameInGlobalScope(e,t);if(i&&i.nameSegment){const e=i.nameSegment.range.start.line+1,t=i.nameSegment.range.start.character+1;return`[${n}](${i.documentUri.with({fragment:`L${e},${t}`}).toString()})`}}documentationTagRenderer(e,t){}findNameInPrecomputedScopes(e,t){const n=(0,Nt.YE)(e).precomputedScopes;if(!n)return;let r=e;do{const e=n.get(r).find(e=>e.name===t);if(e)return e;r=r.$container}while(r)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(e=>e.name===t)}}class Pr{constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var t;return function(e){return"string"==typeof e.$comment}(e)?e.$comment:null===(t=(0,r.v)(e.$cstNode,this.grammarConfig().multilineCommentRules))||void 0===t?void 0:t.text}}class Mr{constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}}class Dr{constructor(){this.previousTokenSource=new ln.Qi,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();const t=(un=performance.now(),new ln.Qi);return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,n=ln.XO.None){const r=new mn,i={action:t,deferred:r,cancellationToken:n};return e.push(i),this.performNextOperation(),r.promise}async performNextOperation(){if(!this.done)return;const e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else{if(!(this.readQueue.length>0))return;e.push(...this.readQueue.splice(0,this.readQueue.length))}this.done=!1,await Promise.all(e.map(async({action:e,deferred:t,cancellationToken:n})=>{try{const r=await Promise.resolve().then(()=>e(n));t.resolve(r)}catch(r){fn(r)?t.resolve(void 0):t.reject(r)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}class Ur{constructor(e){this.grammarElementIdMap=new On,this.tokenTypeIdMap=new On,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(e=>Object.assign(Object.assign({},e),{message:e.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){const t=new Map,n=new Map;for(const r of(0,Nt.jm)(e))t.set(r,{});if(e.$cstNode)for(const i of(0,r.NS)(e.$cstNode))n.set(i,{});return{astNodes:t,cstNodes:n}}dehydrateAstNode(e,t){const n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,void 0!==e.$cstNode&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(const[r,i]of Object.entries(e))if(!r.startsWith("$"))if(Array.isArray(i)){const e=[];n[r]=e;for(const n of i)(0,cn.ng)(n)?e.push(this.dehydrateAstNode(n,t)):(0,cn.A_)(n)?e.push(this.dehydrateReference(n,t)):e.push(n)}else(0,cn.ng)(i)?n[r]=this.dehydrateAstNode(i,t):(0,cn.A_)(i)?n[r]=this.dehydrateReference(i,t):void 0!==i&&(n[r]=i);return n}dehydrateReference(e,t){const n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=t.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,t){const n=t.cstNodes.get(e);return(0,cn.br)(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=t.astNodes.get(e.astNode),(0,cn.mD)(e)?n.content=e.content.map(e=>this.dehydrateCstNode(e,t)):(0,cn.FC)(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){const t=e.value,n=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,n)}}createHydrationContext(e){const t=new Map,n=new Map;for(const r of(0,Nt.jm)(e))t.set(r,{});let i;if(e.$cstNode)for(const s of(0,r.NS)(e.$cstNode)){let e;"fullText"in s?(e=new Dt(s.fullText),i=e):"content"in s?e=new Pt:"tokenType"in s&&(e=this.hydrateCstLeafNode(s)),e&&(n.set(s,e),e.root=i)}return{astNodes:t,cstNodes:n}}hydrateAstNode(e,t){const n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=t.cstNodes.get(e.$cstNode));for(const[r,i]of Object.entries(e))if(!r.startsWith("$"))if(Array.isArray(i)){const e=[];n[r]=e;for(const s of i)(0,cn.ng)(s)?e.push(this.setParent(this.hydrateAstNode(s,t),n)):(0,cn.A_)(s)?e.push(this.hydrateReference(s,n,r,t)):e.push(s)}else(0,cn.ng)(i)?n[r]=this.setParent(this.hydrateAstNode(i,t),n):(0,cn.A_)(i)?n[r]=this.hydrateReference(i,n,r,t):void 0!==i&&(n[r]=i);return n}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,n,r){return this.linker.buildReference(t,n,r.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,n=0){const r=t.cstNodes.get(e);if("number"==typeof e.grammarSource&&(r.grammarSource=this.getGrammarElement(e.grammarSource)),r.astNode=t.astNodes.get(e.astNode),(0,cn.mD)(r))for(const i of e.content){const e=this.hydrateCstNode(i,t,n++);r.content.push(e)}return r}hydrateCstLeafNode(e){const t=this.getTokenType(e.tokenType),n=e.offset,r=e.length,i=e.startLine,s=e.startColumn,a=e.endLine,o=e.endColumn,l=e.hidden;return new _t(n,r,{start:{line:i,character:s},end:{line:a,character:o}},t,l)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return 0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap();return this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(const t of(0,Nt.jm)(this.grammar))(0,a.r1)(t)&&this.grammarElementIdMap.set(t,e++)}}function Fr(e){return{documentation:{CommentProvider:e=>new Pr(e),DocumentationProvider:e=>new _r(e)},parser:{AsyncParser:e=>new Mr(e),GrammarConfig:e=>function(e){const t=[],n=e.Grammar;for(const r of n.rules)(0,a.rE)(r)&&(0,i.eb)(r)&&(0,s.lU)((0,i.S)(r))&&t.push(r.name);return{multilineCommentRules:t,nameRegexp:r.El}}(e),LangiumParser:e=>sn(e),CompletionParser:e=>function(e){const t=e.Grammar,n=e.parser.Lexer,r=new Ht(e);return qt(t,r,n.definition),r.finalize(),r}(e),ValueConverter:()=>new on.d,TokenBuilder:()=>new an.Q,Lexer:e=>new ur(e),ParserErrorMessageProvider:()=>new jt,LexerErrorMessageProvider:()=>new lr},workspace:{AstNodeLocator:()=>new tr,AstNodeDescriptionProvider:e=>new Jn(e),ReferenceDescriptionProvider:e=>new er(e)},references:{Linker:e=>new Nn(e),NameProvider:()=>new Cn,ScopeProvider:e=>new Kn(e),ScopeComputation:e=>new _n(e),References:e=>new Ln(e)},serializer:{Hydrator:e=>new Ur(e),JsonSerializer:e=>new Vn(e)},validation:{DocumentValidator:e=>new Xn(e),ValidationRegistry:e=>new Yn(e)},shared:()=>e.shared}}function Gr(e){return{ServiceRegistry:e=>new jn(e),workspace:{LangiumDocuments:e=>new In(e),LangiumDocumentFactory:e=>new xn(e),DocumentBuilder:e=>new sr(e),IndexManager:e=>new ar(e),WorkspaceManager:e=>new or(e),FileSystemProvider:t=>e.fileSystemProvider(t),WorkspaceLock:()=>new Dr,ConfigurationProvider:e=>new ir(e)}}}},8980:(e,t,n)=>{n.d(t,{S:()=>u});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},l=class extends r.dg{static{(0,r.K2)(this,"ArchitectureValueConverter")}runCustomConverter(e,t,n){return"ARCH_ICON"===e.name?t.replace(/[()]/g,"").trim():"ARCH_TEXT_ICON"===e.name?t.replace(/["()]/g,""):"ARCH_TITLE"===e.name?t.replace(/[[\]]/g,"").trim():void 0}},c={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new l,"ValueConverter")}};function u(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.jE,c);return t.ServiceRegistry.register(n),{shared:t,Architecture:n}}(0,r.K2)(u,"createArchitectureServices")},9150:(e,t,n)=>{n.d(t,{f:()=>u});var r=n(7960),i=n(8913),s=n(9364),a=n(4298),o=class extends r.mR{static{(0,r.K2)(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},l=class extends r.dg{static{(0,r.K2)(this,"PieValueConverter")}runCustomConverter(e,t,n){if("PIE_SECTION_LABEL"===e.name)return t.replace(/"/g,"").trim()}},c={parser:{TokenBuilder:(0,r.K2)(()=>new o,"TokenBuilder"),ValueConverter:(0,r.K2)(()=>new l,"ValueConverter")}};function u(e=a.D){const t=(0,s.WQ)((0,i.u)(e),r.sr),n=(0,s.WQ)((0,i.t)({shared:t}),r.KX,c);return t.ServiceRegistry.register(n),{shared:t,Pie:n}}(0,r.K2)(u,"createPieServices")},9364:(e,t,n)=>{var r;function i(e,t,n,r,i,s,o,l,u){return a([e,t,n,r,i,s,o,l,u].reduce(c,{}))}n.d(t,{WQ:()=>i}),function(e){e.merge=(e,t)=>c(c({},e),t)}(r||(r={}));const s=Symbol("isProxy");function a(e,t){const n=new Proxy({},{deleteProperty:()=>!1,set:()=>{throw new Error("Cannot set property on injected service container")},get:(r,i)=>i===s||l(r,i,e,t||n),getOwnPropertyDescriptor:(r,i)=>(l(r,i,e,t||n),Object.getOwnPropertyDescriptor(r,i)),has:(t,n)=>n in e,ownKeys:()=>[...Object.getOwnPropertyNames(e)]});return n}const o=Symbol();function l(e,t,n,r){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:e[t]});if(e[t]===o)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}if(t in n){const s=n[t];e[t]=o;try{e[t]="function"==typeof s?s(r):a(s,r)}catch(i){throw e[t]=i instanceof Error?i:void 0,i}return e[t]}}function c(e,t){if(t)for(const[n,r]of Object.entries(t))if(void 0!==r){const t=e[n];e[n]=null!==t&&null!==r&&"object"==typeof t&&"object"==typeof r?c(t,r):r}return e}},9590:(e,t)=>{let n;function r(){if(void 0===n)throw new Error("No runtime abstraction layer installed");return n}Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.install=function(e){if(void 0===e)throw new Error("No runtime abstraction layer provided");n=e}}(r||(r={})),t.default=r},9637:(e,t,n)=>{n.d(t,{ak:()=>j,mT:()=>Pr,LT:()=>Xt,jr:()=>Dr,T6:()=>dr,JG:()=>Mt,wL:()=>M,c$:()=>F,Y2:()=>B,$P:()=>G,Cy:()=>K,Pp:()=>V,BK:()=>H,PW:()=>Ot,my:()=>Zt,jk:()=>En,Sk:()=>Dt,G:()=>Qt});var r=n(8058),i=n(8207),s=n(6401),a=n(4722),o=n(8585),l=n(53);function c(e){function t(){}t.prototype=e;const n=new t;function r(){return typeof n.bar}return r(),r(),e}const u=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(i);++r<i;)s[r]=e[r+t];return s};var d=n(8593);const h=function(e,t,n){var r=null==e?0:e.length;return r?(t=n||void 0===t?1:(0,d.A)(t),u(e,t<0?0:t,r)):[]};var f=n(9703),p=n(2851),m=n(2031),g=n(3767),y=n(8446),T=n(7271),A=n(7422),v=Object.prototype.hasOwnProperty;const R=(0,g.A)(function(e,t){if((0,T.A)(t)||(0,y.A)(t))(0,m.A)(t,(0,A.A)(t),e);else for(var n in t)v.call(t,n)&&(0,p.A)(e,n,t[n])});var $=n(5572),E=n(3958),k=n(9354),x=n(3973);const I=function(e,t){if(null==e)return{};var n=(0,$.A)((0,x.A)(e),function(e){return[e]});return t=(0,E.A)(t),(0,k.A)(e,n,function(e,n){return t(e,n[0])})};var S=n(8496),N=n(3098);const C=function(e){return(0,N.A)(e)&&"[object RegExp]"==(0,S.A)(e)};var w=n(2789),L=n(4841),b=L.A&&L.A.isRegExp;const O=b?(0,w.A)(b):C;function _(e){return t=e,(0,f.A)(t.LABEL)&&""!==t.LABEL?e.LABEL:e.name;var t}class P{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),(0,r.A)(this.definition,t=>{t.accept(e)})}}class M extends P{constructor(e){super([]),this.idx=1,R(this,I(e,e=>void 0!==e))}set definition(e){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(e){e.visit(this)}}class D extends P{constructor(e){super(e.definition),this.orgText="",R(this,I(e,e=>void 0!==e))}}class U extends P{constructor(e){super(e.definition),this.ignoreAmbiguities=!1,R(this,I(e,e=>void 0!==e))}}class F extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class G extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class K extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class B extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class V extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,e=>void 0!==e))}}class j extends P{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,R(this,I(e,e=>void 0!==e))}}class H{constructor(e){this.idx=1,R(this,I(e,e=>void 0!==e))}accept(e){e.visit(this)}}function W(e){function t(e){return(0,a.A)(e,W)}if(e instanceof M){const t={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return(0,f.A)(e.label)&&(t.label=e.label),t}if(e instanceof U)return{type:"Alternative",definition:t(e.definition)};if(e instanceof F)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof G)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof K)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:W(new H({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof V)return{type:"RepetitionWithSeparator",idx:e.idx,separator:W(new H({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof B)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof j)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof H){const t={type:"Terminal",name:e.terminalType.name,label:_(e.terminalType),idx:e.idx};(0,f.A)(e.label)&&(t.terminalLabel=e.label);const n=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(t.pattern=O(n)?n.source:n),t}if(e instanceof D)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}class z{visit(e){const t=e;switch(t.constructor){case M:return this.visitNonTerminal(t);case U:return this.visitAlternative(t);case F:return this.visitOption(t);case G:return this.visitRepetitionMandatory(t);case K:return this.visitRepetitionMandatoryWithSeparator(t);case V:return this.visitRepetitionWithSeparator(t);case B:return this.visitRepetition(t);case j:return this.visitAlternation(t);case H:return this.visitTerminal(t);case D:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}var Y=n(3736),X=n(6240);const q=function(e,t){var n;return(0,X.A)(e,function(e,r,i){return!(n=t(e,r,i))}),!!n};var Q=n(2049),Z=n(6832);const J=function(e,t,n){var r=(0,Q.A)(e)?Y.A:q;return n&&(0,Z.A)(e,t,n)&&(t=void 0),r(e,(0,E.A)(t,3))};var ee=n(818),te=Math.max;const ne=function(e,t,n,r){e=(0,y.A)(e)?e:(0,i.A)(e),n=n&&!r?(0,d.A)(n):0;var s=e.length;return n<0&&(n=te(s+n,0)),(0,f.A)(e)?n<=s&&e.indexOf(t,n)>-1:!!s&&(0,ee.A)(e,t,n)>-1};const re=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0};const ie=function(e,t){var n=!0;return(0,X.A)(e,function(e,r,i){return n=!!t(e,r,i)}),n};const se=function(e,t,n){var r=(0,Q.A)(e)?re:ie;return n&&(0,Z.A)(e,t,n)&&(t=void 0),r(e,(0,E.A)(t,3))};function ae(e,t=[]){return!!(e instanceof F||e instanceof B||e instanceof V)||(e instanceof j?J(e.definition,e=>ae(e,t)):!(e instanceof M&&ne(t,e))&&(e instanceof P&&(e instanceof M&&t.push(e),se(e.definition,e=>ae(e,t)))))}function oe(e){if(e instanceof M)return"SUBRULE";if(e instanceof F)return"OPTION";if(e instanceof j)return"OR";if(e instanceof G)return"AT_LEAST_ONE";if(e instanceof K)return"AT_LEAST_ONE_SEP";if(e instanceof V)return"MANY_SEP";if(e instanceof B)return"MANY";if(e instanceof H)return"CONSUME";throw Error("non exhaustive match")}class le{walk(e,t=[]){(0,r.A)(e.definition,(n,r)=>{const i=h(e.definition,r+1);if(n instanceof M)this.walkProdRef(n,i,t);else if(n instanceof H)this.walkTerminal(n,i,t);else if(n instanceof U)this.walkFlat(n,i,t);else if(n instanceof F)this.walkOption(n,i,t);else if(n instanceof G)this.walkAtLeastOne(n,i,t);else if(n instanceof K)this.walkAtLeastOneSep(n,i,t);else if(n instanceof V)this.walkManySep(n,i,t);else if(n instanceof B)this.walkMany(n,i,t);else{if(!(n instanceof j))throw Error("non exhaustive match");this.walkOr(n,i,t)}})}walkTerminal(e,t,n){}walkProdRef(e,t,n){}walkFlat(e,t,n){const r=t.concat(n);this.walk(e,r)}walkOption(e,t,n){const r=t.concat(n);this.walk(e,r)}walkAtLeastOne(e,t,n){const r=[new F({definition:e.definition})].concat(t,n);this.walk(e,r)}walkAtLeastOneSep(e,t,n){const r=ce(e,t,n);this.walk(e,r)}walkMany(e,t,n){const r=[new F({definition:e.definition})].concat(t,n);this.walk(e,r)}walkManySep(e,t,n){const r=ce(e,t,n);this.walk(e,r)}walkOr(e,t,n){const i=t.concat(n);(0,r.A)(e.definition,e=>{const t=new U({definition:[e]});this.walk(t,i)})}}function ce(e,t,n){return[new F({definition:[new H({terminalType:e.separator})].concat(e.definition)})].concat(t,n)}var ue=n(9902);const de=function(e){return e&&e.length?(0,ue.A)(e):[]};var he=n(4098);function fe(e){if(e instanceof M)return fe(e.referencedRule);if(e instanceof H)return[e.terminalType];if(function(e){return e instanceof U||e instanceof F||e instanceof B||e instanceof G||e instanceof K||e instanceof V||e instanceof H||e instanceof D}(e))return function(e){let t=[];const n=e.definition;let r,i=0,s=n.length>i,a=!0;for(;s&&a;)r=n[i],a=ae(r),t=t.concat(fe(r)),i+=1,s=n.length>i;return de(t)}(e);if(function(e){return e instanceof j}(e))return function(e){const t=(0,a.A)(e.definition,e=>fe(e));return de((0,he.A)(t))}(e);throw Error("non exhaustive match")}const pe="_~IN~_";class me extends le{constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,n){}walkProdRef(e,t,n){const r=(i=e.referencedRule,s=e.idx,i.name+s+pe+this.topProd.name);var i,s;const a=t.concat(n),o=fe(new U({definition:a}));this.follows[r]=o}}var ge=n(9592),ye=n(5186),Te=n(3068),Ae=n(2634),ve=n(1790);const Re=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}};const $e=function(e,t){return((0,Q.A)(e)?Ae.A:ve.A)(e,Re((0,E.A)(t,3)))};var Ee=n(9610),ke=Math.max;const xe=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:(0,d.A)(n);return i<0&&(i=ke(r+i,0)),(0,ee.A)(e,t,i)};var Ie=n(9463),Se=n(4092),Ne=n(2062),Ce=n(5530),we=n(7809),Le=n(4099);const be=function(e,t,n,r){var i=-1,s=Ce.A,a=!0,o=e.length,l=[],c=t.length;if(!o)return l;n&&(t=(0,$.A)(t,(0,w.A)(n))),r?(s=we.A,a=!1):t.length>=200&&(s=Le.A,a=!1,t=new Ne.A(t));e:for(;++i<o;){var u=e[i],d=null==n?u:n(u);if(u=r||0!==u?u:0,a&&d==d){for(var h=c;h--;)if(t[h]===d)continue e;l.push(u)}else s(t,d,r)||l.push(u)}return l};var Oe=n(3588),_e=n(4326),Pe=n(3533);const Me=(0,_e.A)(function(e,t){return(0,Pe.A)(e)?be(e,(0,Oe.A)(t,1,Pe.A,!0)):[]});const De=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var s=e[t];s&&(i[r++]=s)}return i};const Ue=function(e){return e&&e.length?e[0]:void 0};var Fe=n(6145);function Ge(e){console&&console.error&&console.error(`Error: ${e}`)}function Ke(e){console&&console.warn&&console.warn(`Warning: ${e}`)}let Be={};const Ve=new ye.H;function je(e){const t=e.toString();if(Be.hasOwnProperty(t))return Be[t];{const e=Ve.pattern(t);return Be[t]=e,e}}const He="Complement Sets are not supported for first char optimization",We='Unable to use "first char" lexer optimizations:\n';function ze(e,t=!1){try{const t=je(e);return Ye(t.value,{},t.flags.ignoreCase)}catch(n){if(n.message===He)t&&Ke(`${We}\tUnable to optimize: < ${e.toString()} >\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";t&&(n="\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."),Ge(`${We}\n\tFailed parsing: < ${e.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Ye(e,t,n){switch(e.type){case"Disjunction":for(let r=0;r<e.value.length;r++)Ye(e.value[r],t,n);break;case"Alternative":const i=e.value;for(let e=0;e<i.length;e++){const s=i[e];switch(s.type){case"EndAnchor":case"GroupBackReference":case"Lookahead":case"NegativeLookahead":case"StartAnchor":case"WordBoundary":case"NonWordBoundary":continue}const a=s;switch(a.type){case"Character":Xe(a.value,t,n);break;case"Set":if(!0===a.complement)throw Error(He);(0,r.A)(a.value,e=>{if("number"==typeof e)Xe(e,t,n);else{const r=e;if(!0===n)for(let e=r.from;e<=r.to;e++)Xe(e,t,n);else{for(let e=r.from;e<=r.to&&e<yt;e++)Xe(e,t,n);if(r.to>=yt){const e=r.from>=yt?r.from:yt,n=r.to,i=At(e),s=At(n);for(let r=i;r<=s;r++)t[r]=r}}}});break;case"Group":Ye(a.value,t,n);break;default:throw Error("Non Exhaustive Match")}const o=void 0!==a.quantifier&&0===a.quantifier.atLeast;if("Group"===a.type&&!1===Qe(a)||"Group"!==a.type&&!1===o)break}break;default:throw Error("non exhaustive match!")}return(0,i.A)(t)}function Xe(e,t,n){const r=At(e);t[r]=r,!0===n&&function(e,t){const n=String.fromCharCode(e),r=n.toUpperCase();if(r!==n){const e=At(r.charCodeAt(0));t[e]=e}else{const e=n.toLowerCase();if(e!==n){const n=At(e.charCodeAt(0));t[n]=n}}}(e,t)}function qe(e,t){return(0,Fe.A)(e.value,e=>{if("number"==typeof e)return ne(t,e);{const n=e;return void 0!==(0,Fe.A)(t,e=>n.from<=e&&e<=n.to)}})}function Qe(e){const t=e.quantifier;return!(!t||0!==t.atLeast)||!!e.value&&((0,Q.A)(e.value)?se(e.value,Qe):Qe(e.value))}class Ze extends ye.z{constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(!0!==this.found){switch(e.type){case"Lookahead":return void this.visitLookahead(e);case"NegativeLookahead":return void this.visitNegativeLookahead(e)}super.visitChildren(e)}}visitCharacter(e){ne(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?void 0===qe(e,this.targetCharCodes)&&(this.found=!0):void 0!==qe(e,this.targetCharCodes)&&(this.found=!0)}}function Je(e,t){if(t instanceof RegExp){const n=je(t),r=new Ze(e);return r.visit(n),r.found}return void 0!==(0,Fe.A)(t,t=>ne(e,t.charCodeAt(0)))}const et="PATTERN",tt="defaultMode",nt="modes";let rt="boolean"==typeof new RegExp("(?:)").sticky;function it(e,t){const n=(t=(0,Te.A)(t,{useSticky:rt,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r","\n"],tracer:(e,t)=>t()})).tracer;let i;n("initCharCodeToOptimizedIndexMap",()=>{!function(){if((0,s.A)(Tt)){Tt=new Array(65536);for(let e=0;e<65536;e++)Tt[e]=e>255?255+~~(e/255):e}}()}),n("Reject Lexer.NA",()=>{i=$e(e,e=>e[et]===Mt.NA)});let l,c,u,d,h,p,m,g,y,T,A,v=!1;n("Transform Patterns",()=>{v=!1,l=(0,a.A)(i,e=>{const n=e[et];if(O(n)){const e=n.source;return 1!==e.length||"^"===e||"$"===e||"."===e||n.ignoreCase?2!==e.length||"\\"!==e[0]||ne(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],e[1])?t.useSticky?ct(n):lt(n):e[1]:e}if((0,Ee.A)(n))return v=!0,{exec:n};if("object"==typeof n)return v=!0,n;if("string"==typeof n){if(1===n.length)return n;{const e=n.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),r=new RegExp(e);return t.useSticky?ct(r):lt(r)}}throw Error("non exhaustive match")})}),n("misc mapping",()=>{c=(0,a.A)(i,e=>e.tokenTypeIdx),u=(0,a.A)(i,e=>{const t=e.GROUP;if(t!==Mt.SKIPPED){if((0,f.A)(t))return t;if((0,ge.A)(t))return!1;throw Error("non exhaustive match")}}),d=(0,a.A)(i,e=>{const t=e.LONGER_ALT;if(t){return(0,Q.A)(t)?(0,a.A)(t,e=>xe(i,e)):[xe(i,t)]}}),h=(0,a.A)(i,e=>e.PUSH_MODE),p=(0,a.A)(i,e=>(0,o.A)(e,"POP_MODE"))}),n("Line Terminator Handling",()=>{const e=mt(t.lineTerminatorCharacters);m=(0,a.A)(i,e=>!1),"onlyOffset"!==t.positionTracking&&(m=(0,a.A)(i,t=>(0,o.A)(t,"LINE_BREAKS")?!!t.LINE_BREAKS:!1===pt(t,e)&&Je(e,t.PATTERN)))}),n("Misc Mapping #2",()=>{g=(0,a.A)(i,dt),y=(0,a.A)(l,ht),T=(0,Ie.A)(i,(e,t)=>{const n=t.GROUP;return(0,f.A)(n)&&n!==Mt.SKIPPED&&(e[n]=[]),e},{}),A=(0,a.A)(l,(e,t)=>({pattern:l[t],longerAlt:d[t],canLineTerminator:m[t],isCustom:g[t],short:y[t],group:u[t],push:h[t],pop:p[t],tokenTypeIdx:c[t],tokenType:i[t]}))});let R=!0,$=[];return t.safeMode||n("First Char Optimization",()=>{$=(0,Ie.A)(i,(e,n,i)=>{if("string"==typeof n.PATTERN){const t=At(n.PATTERN.charCodeAt(0));gt(e,t,A[i])}else if((0,Q.A)(n.START_CHARS_HINT)){let t;(0,r.A)(n.START_CHARS_HINT,n=>{const r=At("string"==typeof n?n.charCodeAt(0):n);t!==r&&(t=r,gt(e,r,A[i]))})}else if(O(n.PATTERN))if(n.PATTERN.unicode)R=!1,t.ensureOptimizations&&Ge(`${We}\tUnable to analyze < ${n.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const a=ze(n.PATTERN,t.ensureOptimizations);(0,s.A)(a)&&(R=!1),(0,r.A)(a,t=>{gt(e,t,A[i])})}else t.ensureOptimizations&&Ge(`${We}\tTokenType: <${n.name}> is using a custom token pattern without providing <start_chars_hint> parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),R=!1;return e},[])}),{emptyGroups:T,patternIdxToConfig:A,charCodeToPatternIdxToConfig:$,hasCustom:v,canBeOptimized:R}}function st(e,t){let n=[];const i=function(e){const t=(0,Se.A)(e,e=>!(0,o.A)(e,et)),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- missing static 'PATTERN' property",type:_t.MISSING_PATTERN,tokenTypes:[e]})),r=Me(e,t);return{errors:n,valid:r}}(e);n=n.concat(i.errors);const s=function(e){const t=(0,Se.A)(e,e=>{const t=e[et];return!(O(t)||(0,Ee.A)(t)||(0,o.A)(t,"exec")||(0,f.A)(t))}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:_t.INVALID_PATTERN,tokenTypes:[e]})),r=Me(e,t);return{errors:n,valid:r}}(i.valid),l=s.valid;return n=n.concat(s.errors),n=n.concat(function(e){let t=[];const n=(0,Se.A)(e,e=>O(e[et]));return t=t.concat(function(e){class t extends ye.z{constructor(){super(...arguments),this.found=!1}visitEndAnchor(e){this.found=!0}}const n=(0,Se.A)(e,e=>{const n=e.PATTERN;try{const e=je(n),r=new t;return r.visit(e),r.found}catch(r){return at.test(n.source)}}),r=(0,a.A)(n,e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:_t.EOI_ANCHOR_FOUND,tokenTypes:[e]}));return r}(n)),t=t.concat(function(e){class t extends ye.z{constructor(){super(...arguments),this.found=!1}visitStartAnchor(e){this.found=!0}}const n=(0,Se.A)(e,e=>{const n=e.PATTERN;try{const e=je(n),r=new t;return r.visit(e),r.found}catch(r){return ot.test(n.source)}}),r=(0,a.A)(n,e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:_t.SOI_ANCHOR_FOUND,tokenTypes:[e]}));return r}(n)),t=t.concat(function(e){const t=(0,Se.A)(e,e=>{const t=e[et];return t instanceof RegExp&&(t.multiline||t.global)}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:_t.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[e]}));return n}(n)),t=t.concat(function(e){const t=[];let n=(0,a.A)(e,n=>(0,Ie.A)(e,(e,r)=>(n.PATTERN.source!==r.PATTERN.source||ne(t,r)||r.PATTERN===Mt.NA||(t.push(r),e.push(r)),e),[]));n=De(n);const r=(0,Se.A)(n,e=>e.length>1),i=(0,a.A)(r,e=>{const t=(0,a.A)(e,e=>e.name);return{message:`The same RegExp pattern ->${Ue(e).PATTERN}<-has been used in all of the following Token Types: ${t.join(", ")} <-`,type:_t.DUPLICATE_PATTERNS_FOUND,tokenTypes:e}});return i}(n)),t=t.concat(function(e){const t=(0,Se.A)(e,e=>e.PATTERN.test("")),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' must not match an empty string",type:_t.EMPTY_MATCH_PATTERN,tokenTypes:[e]}));return n}(n)),t}(l)),n=n.concat(function(e){const t=(0,Se.A)(e,e=>{if(!(0,o.A)(e,"GROUP"))return!1;const t=e.GROUP;return t!==Mt.SKIPPED&&t!==Mt.NA&&!(0,f.A)(t)}),n=(0,a.A)(t,e=>({message:"Token Type: ->"+e.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:_t.INVALID_GROUP_TYPE_FOUND,tokenTypes:[e]}));return n}(l)),n=n.concat(function(e,t){const n=(0,Se.A)(e,e=>void 0!==e.PUSH_MODE&&!ne(t,e.PUSH_MODE)),r=(0,a.A)(n,e=>({message:`Token Type: ->${e.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${e.PUSH_MODE}<-which does not exist`,type:_t.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[e]}));return r}(l,t)),n=n.concat(function(e){const t=[],n=(0,Ie.A)(e,(e,t,n)=>{const r=t.PATTERN;return r===Mt.NA||((0,f.A)(r)?e.push({str:r,idx:n,tokenType:t}):O(r)&&function(e){const t=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return void 0===(0,Fe.A)(t,t=>-1!==e.source.indexOf(t))}(r)&&e.push({str:r.source,idx:n,tokenType:t})),e},[]);return(0,r.A)(e,(e,i)=>{(0,r.A)(n,({str:n,idx:r,tokenType:s})=>{if(i<r&&function(e,t){if(O(t)){const n=t.exec(e);return null!==n&&0===n.index}if((0,Ee.A)(t))return t(e,0,[],{});if((0,o.A)(t,"exec"))return t.exec(e,0,[],{});if("string"==typeof t)return t===e;throw Error("non exhaustive match")}(n,e.PATTERN)){const n=`Token: ->${s.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${e.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:n,type:_t.UNREACHABLE_PATTERN,tokenTypes:[e,s]})}})}),t}(l)),n}const at=/[^\\][$]/;const ot=/[^\\[][\^]|^\^/;function lt(e){const t=e.ignoreCase?"i":"";return new RegExp(`^(?:${e.source})`,t)}function ct(e){const t=e.ignoreCase?"iy":"y";return new RegExp(`${e.source}`,t)}function ut(e,t,n){const s=[];let a=!1;const l=De((0,he.A)((0,i.A)(e.modes))),c=$e(l,e=>e[et]===Mt.NA),u=mt(n);return t&&(0,r.A)(c,e=>{const t=pt(e,u);if(!1!==t){const n=function(e,t){if(t.issue===_t.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <${e.name}> Token Type\n\t Root cause: ${t.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===_t.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the <line_breaks> option.\n\tThe problem is in the <${e.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}(e,t),r={message:n,type:t.issue,tokenType:e};s.push(r)}else(0,o.A)(e,"LINE_BREAKS")?!0===e.LINE_BREAKS&&(a=!0):Je(u,e.PATTERN)&&(a=!0)}),t&&!a&&s.push({message:"Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n\tfor details.",type:_t.NO_LINE_BREAKS_FLAGS}),s}function dt(e){const t=e.PATTERN;if(O(t))return!1;if((0,Ee.A)(t))return!0;if((0,o.A)(t,"exec"))return!0;if((0,f.A)(t))return!1;throw Error("non exhaustive match")}function ht(e){return!(!(0,f.A)(e)||1!==e.length)&&e.charCodeAt(0)}const ft={test:function(e){const t=e.length;for(let n=this.lastIndex;n<t;n++){const t=e.charCodeAt(n);if(10===t)return this.lastIndex=n+1,!0;if(13===t)return 10===e.charCodeAt(n+1)?this.lastIndex=n+2:this.lastIndex=n+1,!0}return!1},lastIndex:0};function pt(e,t){if((0,o.A)(e,"LINE_BREAKS"))return!1;if(O(e.PATTERN)){try{Je(t,e.PATTERN)}catch(n){return{issue:_t.IDENTIFY_TERMINATOR,errMsg:n.message}}return!1}if((0,f.A)(e.PATTERN))return!1;if(dt(e))return{issue:_t.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}function mt(e){return(0,a.A)(e,e=>(0,f.A)(e)?e.charCodeAt(0):e)}function gt(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}const yt=256;let Tt=[];function At(e){return e<yt?e:Tt[e]}var vt=n(9008),Rt=n(2302),$t=n(6666);function Et(e){const t=(new Date).getTime(),n=e();return{time:(new Date).getTime()-t,value:n}}function kt(e,t){const n=e.tokenTypeIdx;return n===t.tokenTypeIdx||!0===t.isParent&&!0===t.categoryMatchesMap[n]}function xt(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}let It=1;const St={};function Nt(e){const t=function(e){let t=(0,l.A)(e),n=e,r=!0;for(;r;){n=De((0,he.A)((0,a.A)(n,e=>e.CATEGORIES)));const e=Me(n,t);t=t.concat(e),(0,s.A)(e)?r=!1:n=e}return t}(e);!function(e){(0,r.A)(e,e=>{var t;wt(e)||(St[It]=e,e.tokenTypeIdx=It++),Lt(e)&&!(0,Q.A)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Lt(e)||(e.CATEGORIES=[]),t=e,(0,o.A)(t,"categoryMatches")||(e.categoryMatches=[]),function(e){return(0,o.A)(e,"categoryMatchesMap")}(e)||(e.categoryMatchesMap={})})}(t),function(e){(0,r.A)(e,e=>{Ct([],e)})}(t),function(e){(0,r.A)(e,e=>{e.categoryMatches=[],(0,r.A)(e.categoryMatchesMap,(t,n)=>{e.categoryMatches.push(St[n].tokenTypeIdx)})})}(t),(0,r.A)(t,e=>{e.isParent=e.categoryMatches.length>0})}function Ct(e,t){(0,r.A)(e,e=>{t.categoryMatchesMap[e.tokenTypeIdx]=!0}),(0,r.A)(t.CATEGORIES,n=>{const r=e.concat(t);ne(r,n)||Ct(r,n)})}function wt(e){return(0,o.A)(e,"tokenTypeIdx")}function Lt(e){return(0,o.A)(e,"CATEGORIES")}function bt(e){return(0,o.A)(e,"tokenTypeIdx")}const Ot={buildUnableToPopLexerModeMessage:e=>`Unable to pop Lexer Mode after encountering Token ->${e.image}<- The Mode Stack is empty`,buildUnexpectedCharactersMessage:(e,t,n,r,i)=>`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${n} characters.`};var _t;!function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"}(_t||(_t={}));const Pt={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:["\n","\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:Ot,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Pt);class Mt{constructor(e,t=Pt){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(e,t)=>{if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${e}>`);const{time:r,value:i}=Et(t),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${e}> time: ${r}ms`),this.traceInitIndent--,i}return t()},"boolean"==typeof t)throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported");this.config=R({},Pt,t);const n=this.config.traceInitPerf;!0===n?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):"number"==typeof n&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,i=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Pt.lineTerminatorsPattern)this.config.lineTerminatorsPattern=ft;else if(this.config.lineTerminatorCharacters===Pt.lineTerminatorCharacters)throw Error("Error: Missing <lineTerminatorCharacters> property on the Lexer config.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS");if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),(0,Q.A)(e)?n={modes:{defaultMode:(0,l.A)(e)},defaultMode:tt}:(i=!1,n=(0,l.A)(e))}),!1===this.config.skipValidations&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(function(e){const t=[];return(0,o.A)(e,tt)||t.push({message:"A MultiMode Lexer cannot be initialized without a <"+tt+"> property in its definition\n",type:_t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,o.A)(e,nt)||t.push({message:"A MultiMode Lexer cannot be initialized without a <modes> property in its definition\n",type:_t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,o.A)(e,nt)&&(0,o.A)(e,tt)&&!(0,o.A)(e.modes,e.defaultMode)&&t.push({message:`A MultiMode Lexer cannot be initialized with a ${tt}: <${e.defaultMode}>which does not exist\n`,type:_t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,o.A)(e,nt)&&(0,r.A)(e.modes,(e,n)=>{(0,r.A)(e,(i,s)=>{if((0,ge.A)(i))t.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${n}> at index: <${s}>\n`,type:_t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if((0,o.A)(i,"LONGER_ALT")){const s=(0,Q.A)(i.LONGER_ALT)?i.LONGER_ALT:[i.LONGER_ALT];(0,r.A)(s,r=>{(0,ge.A)(r)||ne(e,r)||t.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${r.name}> on token <${i.name}> outside of mode <${n}>\n`,type:_t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),t}(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(ut(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},(0,r.A)(n.modes,(e,t)=>{n.modes[t]=$e(e,e=>(0,ge.A)(e))});const u=(0,A.A)(n.modes);if((0,r.A)(n.modes,(e,n)=>{this.TRACE_INIT(`Mode: <${n}> processing`,()=>{if(this.modes.push(n),!1===this.config.skipValidations&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(st(e,u))}),(0,s.A)(this.lexerDefinitionErrors)){let r;Nt(e),this.TRACE_INIT("analyzeTokenTypes",()=>{r=it(e,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[n]=r.patternIdxToConfig,this.charCodeToPatternIdxToConfig[n]=r.charCodeToPatternIdxToConfig,this.emptyGroups=R({},this.emptyGroups,r.emptyGroups),this.hasCustom=r.hasCustom||this.hasCustom,this.canModeBeOptimized[n]=r.canBeOptimized}})}),this.defaultMode=n.defaultMode,!(0,s.A)(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const e=(0,a.A)(this.lexerDefinitionErrors,e=>e.message).join("-----------------------\n");throw new Error("Errors detected in definition of Lexer:\n"+e)}(0,r.A)(this.lexerDefinitionWarning,e=>{Ke(e.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(rt?(this.chopInput=vt.A,this.match=this.matchWithTest):(this.updateLastIndex=Rt.A,this.match=this.matchWithExec),i&&(this.handleModes=Rt.A),!1===this.trackStartLines&&(this.computeNewColumn=vt.A),!1===this.trackEndLines&&(this.updateTokenEndLineColumnLocation=Rt.A),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else{if(!/onlyOffset/i.test(this.config.positionTracking))throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`);this.createTokenInstance=this.createOffsetOnlyToken}this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{const e=(0,Ie.A)(this.canModeBeOptimized,(e,t,n)=>(!1===t&&e.push(n),e),[]);if(t.ensureOptimizations&&!(0,s.A)(e))throw Error(`Lexer Modes: < ${e.join(", ")} > cannot be optimized.\n\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{Be={}}),this.TRACE_INIT("toFastProperties",()=>{c(this)})})}tokenize(e,t=this.defaultMode){if(!(0,s.A)(this.lexerDefinitionErrors)){const e=(0,a.A)(this.lexerDefinitionErrors,e=>e.message).join("-----------------------\n");throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n"+e)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let n,i,s,a,o,l,c,u,d,h,f,p,m,g,y;const T=e,v=T.length;let R=0,$=0;const E=this.hasCustom?0:Math.floor(e.length/10),k=new Array(E),x=[];let I=this.trackStartLines?1:void 0,S=this.trackStartLines?1:void 0;const N=function(e){const t={},n=(0,A.A)(e);return(0,r.A)(n,n=>{const r=e[n];if(!(0,Q.A)(r))throw Error("non exhaustive match");t[n]=[]}),t}(this.emptyGroups),C=this.trackStartLines,w=this.config.lineTerminatorsPattern;let L=0,b=[],O=[];const _=[],P=[];let M;function D(){return b}function U(e){const t=At(e),n=O[t];return void 0===n?P:n}Object.freeze(P);const F=e=>{if(1===_.length&&void 0===e.tokenType.PUSH_MODE){const t=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(e);x.push({offset:e.startOffset,line:e.startLine,column:e.startColumn,length:e.image.length,message:t})}else{_.pop();const e=(0,$t.A)(_);b=this.patternIdxToConfig[e],O=this.charCodeToPatternIdxToConfig[e],L=b.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;M=O&&t?U:D}};function G(e){_.push(e),O=this.charCodeToPatternIdxToConfig[e],b=this.patternIdxToConfig[e],L=b.length,L=b.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;M=O&&t?U:D}let K;G.call(this,t);const B=this.config.recoveryEnabled;for(;R<v;){l=null;const t=T.charCodeAt(R),r=M(t),A=r.length;for(n=0;n<A;n++){K=r[n];const i=K.pattern;c=null;const d=K.short;if(!1!==d?t===d&&(l=i):!0===K.isCustom?(y=i.exec(T,R,k,N),null!==y?(l=y[0],void 0!==y.payload&&(c=y.payload)):l=null):(this.updateLastIndex(i,R),l=this.match(i,e,R)),null!==l){if(o=K.longerAlt,void 0!==o){const t=o.length;for(s=0;s<t;s++){const t=b[o[s]],n=t.pattern;if(u=null,!0===t.isCustom?(y=n.exec(T,R,k,N),null!==y?(a=y[0],void 0!==y.payload&&(u=y.payload)):a=null):(this.updateLastIndex(n,R),a=this.match(n,e,R)),a&&a.length>l.length){l=a,c=u,K=t;break}}}break}}if(null!==l){if(d=l.length,h=K.group,void 0!==h&&(f=K.tokenTypeIdx,p=this.createTokenInstance(l,R,f,K.tokenType,I,S,d),this.handlePayload(p,c),!1===h?$=this.addToken(k,$,p):N[h].push(p)),e=this.chopInput(e,d),R+=d,S=this.computeNewColumn(S,d),!0===C&&!0===K.canLineTerminator){let e,t,n=0;w.lastIndex=0;do{e=w.test(l),!0===e&&(t=w.lastIndex-1,n++)}while(!0===e);0!==n&&(I+=n,S=d-t,this.updateTokenEndLineColumnLocation(p,h,t,n,I,S,d))}this.handleModes(K,F,G,p)}else{const t=R,n=I,r=S;let s=!1===B;for(;!1===s&&R<v;)for(e=this.chopInput(e,1),R++,i=0;i<L;i++){const t=b[i],n=t.pattern,r=t.short;if(!1!==r?T.charCodeAt(R)===r&&(s=!0):!0===t.isCustom?s=null!==n.exec(T,R,k,N):(this.updateLastIndex(n,R),s=null!==n.exec(e)),!0===s)break}if(m=R-t,S=this.computeNewColumn(S,m),g=this.config.errorMessageProvider.buildUnexpectedCharactersMessage(T,t,m,n,r),x.push({offset:t,line:n,column:r,length:m,message:g}),!1===B)break}}return this.hasCustom||(k.length=$),{tokens:k,groups:N,errors:x}}handleModes(e,t,n,r){if(!0===e.pop){const i=e.push;t(r),void 0!==i&&n.call(this,i)}else void 0!==e.push&&n.call(this,e.push)}chopInput(e,t){return e.substring(t)}updateLastIndex(e,t){e.lastIndex=t}updateTokenEndLineColumnLocation(e,t,n,r,i,s,a){let o,l;void 0!==t&&(o=n===a-1,l=o?-1:0,1===r&&!0===o||(e.endLine=i+l,e.endColumn=s-1-l))}computeNewColumn(e,t){return e+t}createOffsetOnlyToken(e,t,n,r){return{image:e,startOffset:t,tokenTypeIdx:n,tokenType:r}}createStartOnlyToken(e,t,n,r,i,s){return{image:e,startOffset:t,startLine:i,startColumn:s,tokenTypeIdx:n,tokenType:r}}createFullToken(e,t,n,r,i,s,a){return{image:e,startOffset:t,endOffset:t+a-1,startLine:i,endLine:i,startColumn:s,endColumn:s+a-1,tokenTypeIdx:n,tokenType:r}}addTokenUsingPush(e,t,n){return e.push(n),t}addTokenUsingMemberAccess(e,t,n){return e[t]=n,++t}handlePayloadNoCustom(e,t){}handlePayloadWithCustom(e,t){null!==t&&(e.payload=t)}matchWithTest(e,t,n){return!0===e.test(t)?t.substring(n,e.lastIndex):null}matchWithExec(e,t){const n=e.exec(t);return null!==n?n[0]:null}}function Dt(e){return Ut(e)?e.LABEL:e.name}function Ut(e){return(0,f.A)(e.LABEL)&&""!==e.LABEL}Mt.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",Mt.NA=/NOT_APPLICABLE/;const Ft="parent",Gt="categories",Kt="label",Bt="group",Vt="push_mode",jt="pop_mode",Ht="longer_alt",Wt="line_breaks",zt="start_chars_hint";function Yt(e){return function(e){const t=e.pattern,n={};n.name=e.name,(0,ge.A)(t)||(n.PATTERN=t);if((0,o.A)(e,Ft))throw"The parent property is no longer supported.\nSee: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.";(0,o.A)(e,Gt)&&(n.CATEGORIES=e[Gt]);Nt([n]),(0,o.A)(e,Kt)&&(n.LABEL=e[Kt]);(0,o.A)(e,Bt)&&(n.GROUP=e[Bt]);(0,o.A)(e,jt)&&(n.POP_MODE=e[jt]);(0,o.A)(e,Vt)&&(n.PUSH_MODE=e[Vt]);(0,o.A)(e,Ht)&&(n.LONGER_ALT=e[Ht]);(0,o.A)(e,Wt)&&(n.LINE_BREAKS=e[Wt]);(0,o.A)(e,zt)&&(n.START_CHARS_HINT=e[zt]);return n}(e)}const Xt=Yt({name:"EOF",pattern:Mt.NA});function qt(e,t,n,r,i,s,a,o){return{image:t,startOffset:n,endOffset:r,startLine:i,endLine:s,startColumn:a,endColumn:o,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}function Qt(e,t){return kt(e,t)}Nt([Xt]);const Zt={buildMismatchTokenMessage:({expected:e,actual:t,previous:n,ruleName:r})=>`Expecting ${Ut(e)?`--\x3e ${Dt(e)} <--`:`token of type --\x3e ${e.name} <--`} but found --\x3e '${t.image}' <--`,buildNotAllInputParsedMessage:({firstRedundant:e,ruleName:t})=>"Redundant input, expecting EOF but found: "+e.image,buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:n,customUserDescription:r,ruleName:i}){const s="Expecting: ",o="\nbut found: '"+Ue(t).image+"'";if(r)return s+r+o;{const t=(0,Ie.A)(e,(e,t)=>e.concat(t),[]),n=(0,a.A)(t,e=>`[${(0,a.A)(e,e=>Dt(e)).join(", ")}]`);return s+`one of these possible Token sequences:\n${(0,a.A)(n,(e,t)=>` ${t+1}. ${e}`).join("\n")}`+o}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:n,ruleName:r}){const i="Expecting: ",s="\nbut found: '"+Ue(t).image+"'";if(n)return i+n+s;return i+`expecting at least one iteration which starts with one of these possible Token sequences::\n <${(0,a.A)(e,e=>`[${(0,a.A)(e,e=>Dt(e)).join(",")}]`).join(" ,")}>`+s}};Object.freeze(Zt);const Jt={buildRuleNotFoundError:(e,t)=>"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+"<-\ninside top level rule: ->"+e.name+"<-"},en={buildDuplicateFoundError(e,t){const n=e.name,r=Ue(t),i=r.idx,s=oe(r),a=(o=r)instanceof H?o.terminalType.name:o instanceof M?o.nonTerminalName:"";var o;let l=`->${s}${i>0?i:""}<- ${a?`with argument: ->${a}<-`:""}\n appears more than once (${t.length} times) in the top level rule: ->${n}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;return l=l.replace(/[ \t]+/g," "),l=l.replace(/\s\s+/g,"\n"),l},buildNamespaceConflictError:e=>`Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`,buildAlternationPrefixAmbiguityError(e){const t=(0,a.A)(e.prefixPath,e=>Dt(e)).join(", "),n=0===e.alternation.idx?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix\nin <OR${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`},buildAlternationAmbiguityError(e){const t=(0,a.A)(e.prefixPath,e=>Dt(e)).join(", "),n=0===e.alternation.idx?"":e.alternation.idx;let r=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in <OR${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r},buildEmptyRepetitionError(e){let t=oe(e.repetition);0!==e.repetition.idx&&(t+=e.repetition.idx);return`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`},buildTokenNameError:e=>"deprecated",buildEmptyAlternationError:e=>`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in <OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`,buildTooManyAlternativesError:e=>`An Alternation cannot have more than 256 alternatives:\n<OR${e.alternation.idx}> inside <${e.topLevelRule.name}> Rule.\n has ${e.alternation.definition.length+1} alternatives.`,buildLeftRecursionError(e){const t=e.topLevelRule.name;return`Left Recursion found in grammar.\nrule: <${t}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${`${t} --\x3e ${(0,a.A)(e.leftRecursionPath,e=>e.name).concat([t]).join(" --\x3e ")}`}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError:e=>"deprecated",buildDuplicateRuleNameError(e){let t;t=e.topLevelRule instanceof D?e.topLevelRule.name:e.topLevelRule;return`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};class tn extends z{constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){(0,r.A)((0,i.A)(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){const t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{const t=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:t,type:Or.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}var nn=n(8139),rn=n(2528);const sn=function(e,t,n,r){for(var i=-1,s=null==e?0:e.length;++i<s;){var a=e[i];t(r,a,n(a),e)}return r};const an=function(e,t,n,r){return(0,X.A)(e,function(e,i,s){t(r,e,n(e),s)}),r};const on=function(e,t){return function(n,r){var i=(0,Q.A)(n)?sn:an,s=t?t():{};return i(n,e,(0,E.A)(r,2),s)}};var ln=Object.prototype.hasOwnProperty;const cn=on(function(e,t,n){ln.call(e,n)?e[n].push(t):(0,rn.A)(e,n,[t])});const un=function(e,t,n){var r=null==e?0:e.length;return r?(t=n||void 0===t?1:(0,d.A)(t),u(e,0,(t=r-t)<0?0:t)):[]};class dn extends le{constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,l.A)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,l.A)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){const r=t.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,r)}}updateExpectedNext(){(0,s.A)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}}class hn extends dn{constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){const e=t.concat(n),r=new U({definition:e});this.possibleTokTypes=fe(r),this.found=!0}}}class fn extends le{constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}}class pn extends fn{walkMany(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkMany(e,t,n)}}class mn extends fn{walkManySep(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkManySep(e,t,n)}}class gn extends fn{walkAtLeastOne(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkAtLeastOne(e,t,n)}}class yn extends fn{walkAtLeastOneSep(e,t,n){if(e.idx===this.occurrence){const e=Ue(t.concat(n));this.result.isEndOfRule=void 0===e,e instanceof H&&(this.result.token=e.terminalType,this.result.occurrence=e.idx)}else super.walkAtLeastOneSep(e,t,n)}}function Tn(e,t,n=[]){n=(0,l.A)(n);let i=[],a=0;function o(r){const s=Tn(r.concat(h(e,a+1)),t,n);return i.concat(s)}for(;n.length<t&&a<e.length;){const t=e[a];if(t instanceof U)return o(t.definition);if(t instanceof M)return o(t.definition);if(t instanceof F)i=o(t.definition);else{if(t instanceof G){return o(t.definition.concat([new B({definition:t.definition})]))}if(t instanceof K){return o([new U({definition:t.definition}),new B({definition:[new H({terminalType:t.separator})].concat(t.definition)})])}if(t instanceof V){const e=t.definition.concat([new B({definition:[new H({terminalType:t.separator})].concat(t.definition)})]);i=o(e)}else if(t instanceof B){const e=t.definition.concat([new B({definition:t.definition})]);i=o(e)}else{if(t instanceof j)return(0,r.A)(t.definition,e=>{!1===(0,s.A)(e.definition)&&(i=o(e.definition))}),i;if(!(t instanceof H))throw Error("non exhaustive match");n.push(t.terminalType)}}a++}return i.push({partialPath:n,suffixDef:h(e,a)}),i}function An(e,t,n,r){const i="EXIT_NONE_TERMINAL",a=[i],o="EXIT_ALTERNATIVE";let c=!1;const u=t.length,d=u-r-1,f=[],p=[];for(p.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!(0,s.A)(p);){const e=p.pop();if(e===o){c&&(0,$t.A)(p).idx<=d&&p.pop();continue}const r=e.def,m=e.idx,g=e.ruleStack,y=e.occurrenceStack;if((0,s.A)(r))continue;const T=r[0];if(T===i){const e={idx:m,def:h(r),ruleStack:un(g),occurrenceStack:un(y)};p.push(e)}else if(T instanceof H)if(m<u-1){const e=m+1;if(n(t[e],T.terminalType)){const t={idx:e,def:h(r),ruleStack:g,occurrenceStack:y};p.push(t)}}else{if(m!==u-1)throw Error("non exhaustive match");f.push({nextTokenType:T.terminalType,nextTokenOccurrence:T.idx,ruleStack:g,occurrenceStack:y}),c=!0}else if(T instanceof M){const e=(0,l.A)(g);e.push(T.nonTerminalName);const t=(0,l.A)(y);t.push(T.idx);const n={idx:m,def:T.definition.concat(a,h(r)),ruleStack:e,occurrenceStack:t};p.push(n)}else if(T instanceof F){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t={idx:m,def:T.definition.concat(h(r)),ruleStack:g,occurrenceStack:y};p.push(t)}else if(T instanceof G){const e=new B({definition:T.definition,idx:T.idx}),t={idx:m,def:T.definition.concat([e],h(r)),ruleStack:g,occurrenceStack:y};p.push(t)}else if(T instanceof K){const e=new H({terminalType:T.separator}),t=new B({definition:[e].concat(T.definition),idx:T.idx}),n={idx:m,def:T.definition.concat([t],h(r)),ruleStack:g,occurrenceStack:y};p.push(n)}else if(T instanceof V){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t=new H({terminalType:T.separator}),n=new B({definition:[t].concat(T.definition),idx:T.idx}),i={idx:m,def:T.definition.concat([n],h(r)),ruleStack:g,occurrenceStack:y};p.push(i)}else if(T instanceof B){const e={idx:m,def:h(r),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o);const t=new B({definition:T.definition,idx:T.idx}),n={idx:m,def:T.definition.concat([t],h(r)),ruleStack:g,occurrenceStack:y};p.push(n)}else if(T instanceof j)for(let t=T.definition.length-1;t>=0;t--){const e={idx:m,def:T.definition[t].definition.concat(h(r)),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o)}else if(T instanceof U)p.push({idx:m,def:T.definition.concat(h(r)),ruleStack:g,occurrenceStack:y});else{if(!(T instanceof D))throw Error("non exhaustive match");p.push(vn(T,m,g,y))}}return f}function vn(e,t,n,r){const i=(0,l.A)(n);i.push(e.name);const s=(0,l.A)(r);return s.push(1),{idx:t,def:e.definition,ruleStack:i,occurrenceStack:s}}var Rn;function $n(e){if(e instanceof F||"Option"===e)return Rn.OPTION;if(e instanceof B||"Repetition"===e)return Rn.REPETITION;if(e instanceof G||"RepetitionMandatory"===e)return Rn.REPETITION_MANDATORY;if(e instanceof K||"RepetitionMandatoryWithSeparator"===e)return Rn.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof V||"RepetitionWithSeparator"===e)return Rn.REPETITION_WITH_SEPARATOR;if(e instanceof j||"Alternation"===e)return Rn.ALTERNATION;throw Error("non exhaustive match")}function En(e){const{occurrence:t,rule:n,prodType:r,maxLookahead:i}=e,s=$n(r);return s===Rn.ALTERNATION?bn(t,n,i):On(t,n,s,i)}function kn(e,t,n,i){const s=e.length,l=se(e,e=>se(e,e=>1===e.length));if(t)return function(t){const r=(0,a.A)(t,e=>e.GATE);for(let i=0;i<s;i++){const t=e[i],s=t.length,a=r[i];if(void 0===a||!1!==a.call(this))e:for(let e=0;e<s;e++){const r=t[e],s=r.length;for(let e=0;e<s;e++){const t=this.LA(e+1);if(!1===n(t,r[e]))continue e}return i}}};if(l&&!i){const t=(0,a.A)(e,e=>(0,he.A)(e)),n=(0,Ie.A)(t,(e,t,n)=>((0,r.A)(t,t=>{(0,o.A)(e,t.tokenTypeIdx)||(e[t.tokenTypeIdx]=n),(0,r.A)(t.categoryMatches,t=>{(0,o.A)(e,t)||(e[t]=n)})}),e),{});return function(){const e=this.LA(1);return n[e.tokenTypeIdx]}}return function(){for(let t=0;t<s;t++){const r=e[t],i=r.length;e:for(let e=0;e<i;e++){const i=r[e],s=i.length;for(let e=0;e<s;e++){const t=this.LA(e+1);if(!1===n(t,i[e]))continue e}return t}}}}function xn(e,t,n){const i=se(e,e=>1===e.length),a=e.length;if(i&&!n){const t=(0,he.A)(e);if(1===t.length&&(0,s.A)(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=(0,Ie.A)(t,(e,t,n)=>(e[t.tokenTypeIdx]=!0,(0,r.A)(t.categoryMatches,t=>{e[t]=!0}),e),[]);return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){e:for(let n=0;n<a;n++){const r=e[n],i=r.length;for(let e=0;e<i;e++){const n=this.LA(e+1);if(!1===t(n,r[e]))continue e}return!0}return!1}}!function(e){e[e.OPTION=0]="OPTION",e[e.REPETITION=1]="REPETITION",e[e.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",e[e.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",e[e.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",e[e.ALTERNATION=5]="ALTERNATION"}(Rn||(Rn={}));class In extends le{constructor(e,t,n){super(),this.topProd=e,this.targetOccurrence=t,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,t,n,r){return e.idx===this.targetOccurrence&&this.targetProdType===t&&(this.restDef=n.concat(r),!0)}walkOption(e,t,n){this.checkIsTarget(e,Rn.OPTION,t,n)||super.walkOption(e,t,n)}walkAtLeastOne(e,t,n){this.checkIsTarget(e,Rn.REPETITION_MANDATORY,t,n)||super.walkOption(e,t,n)}walkAtLeastOneSep(e,t,n){this.checkIsTarget(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR,t,n)||super.walkOption(e,t,n)}walkMany(e,t,n){this.checkIsTarget(e,Rn.REPETITION,t,n)||super.walkOption(e,t,n)}walkManySep(e,t,n){this.checkIsTarget(e,Rn.REPETITION_WITH_SEPARATOR,t,n)||super.walkOption(e,t,n)}}class Sn extends z{constructor(e,t,n){super(),this.targetOccurrence=e,this.targetProdType=t,this.targetRef=n,this.result=[]}checkIsTarget(e,t){e.idx!==this.targetOccurrence||this.targetProdType!==t||void 0!==this.targetRef&&e!==this.targetRef||(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,Rn.OPTION)}visitRepetition(e){this.checkIsTarget(e,Rn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,Rn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,Rn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,Rn.ALTERNATION)}}function Nn(e){const t=new Array(e);for(let n=0;n<e;n++)t[n]=[];return t}function Cn(e){let t=[""];for(let n=0;n<e.length;n++){const r=e[n],i=[];for(let e=0;e<t.length;e++){const n=t[e];i.push(n+"_"+r.tokenTypeIdx);for(let e=0;e<r.categoryMatches.length;e++){const t="_"+r.categoryMatches[e];i.push(n+t)}}t=i}return t}function wn(e,t,n){for(let r=0;r<e.length;r++){if(r===n)continue;const i=e[r];for(let e=0;e<t.length;e++){if(!0===i[t[e]])return!1}}return!0}function Ln(e,t){const n=(0,a.A)(e,e=>Tn([e],1)),i=Nn(n.length),o=(0,a.A)(n,e=>{const t={};return(0,r.A)(e,e=>{const n=Cn(e.partialPath);(0,r.A)(n,e=>{t[e]=!0})}),t});let l=n;for(let a=1;a<=t;a++){const e=l;l=Nn(e.length);for(let n=0;n<e.length;n++){const c=e[n];for(let e=0;e<c.length;e++){const u=c[e].partialPath,d=c[e].suffixDef,h=Cn(u);if(wn(o,h,n)||(0,s.A)(d)||u.length===t){const e=i[n];if(!1===_n(e,u)){e.push(u);for(let e=0;e<h.length;e++){const t=h[e];o[n][t]=!0}}}else{const e=Tn(d,a+1,u);l[n]=l[n].concat(e),(0,r.A)(e,e=>{const t=Cn(e.partialPath);(0,r.A)(t,e=>{o[n][e]=!0})})}}}}return i}function bn(e,t,n,r){const i=new Sn(e,Rn.ALTERNATION,r);return t.accept(i),Ln(i.result,n)}function On(e,t,n,r){const i=new Sn(e,n);t.accept(i);const s=i.result,a=new In(t,e,n).startWalking();return Ln([new U({definition:s}),new U({definition:a})],r)}function _n(e,t){e:for(let n=0;n<e.length;n++){const r=e[n];if(r.length===t.length){for(let e=0;e<r.length;e++){const n=t[e],i=r[e];if(!1===(n===i||void 0!==i.categoryMatchesMap[n.tokenTypeIdx]))continue e}return!0}}return!1}function Pn(e){return se(e,e=>se(e,e=>se(e,e=>(0,s.A)(e.categoryMatches))))}function Mn(e,t,n,s){const o=(0,nn.A)(e,e=>function(e,t){const n=new Fn;e.accept(n);const r=n.allProductions,s=cn(r,Dn),o=I(s,e=>e.length>1),l=(0,a.A)((0,i.A)(o),n=>{const r=Ue(n),i=t.buildDuplicateFoundError(e,n),s=oe(r),a={message:i,type:Or.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:s,occurrence:r.idx},o=Un(r);return o&&(a.parameter=o),a});return l}(e,n)),l=function(e,t,n){const i=[],s=(0,a.A)(t,e=>e.name);return(0,r.A)(e,e=>{const t=e.name;if(ne(s,t)){const r=n.buildNamespaceConflictError(e);i.push({message:r,type:Or.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:t})}}),i}(e,t,n),c=(0,nn.A)(e,e=>function(e,t){const n=new Bn;e.accept(n);const r=n.alternations,i=(0,nn.A)(r,n=>n.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:n}),type:Or.TOO_MANY_ALTS,ruleName:e.name,occurrence:n.idx}]:[]);return i}(e,n)),u=(0,nn.A)(e,t=>function(e,t,n,r){const i=[],s=(0,Ie.A)(t,(t,n)=>n.name===e.name?t+1:t,0);if(s>1){const t=r.buildDuplicateRuleNameError({topLevelRule:e,grammarName:n});i.push({message:t,type:Or.DUPLICATE_RULE_NAME,ruleName:e.name})}return i}(t,e,s,n));return o.concat(l,c,u)}function Dn(e){return`${oe(e)}_#_${e.idx}_#_${Un(e)}`}function Un(e){return e instanceof H?e.terminalType.name:e instanceof M?e.nonTerminalName:""}class Fn extends z{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}}function Gn(e,t,n,r=[]){const i=[],a=Kn(t.definition);if((0,s.A)(a))return[];{const t=e.name;ne(a,e)&&i.push({message:n.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:r}),type:Or.LEFT_RECURSION,ruleName:t});const s=Me(a,r.concat([e])),o=(0,nn.A)(s,t=>{const i=(0,l.A)(r);return i.push(t),Gn(e,t,n,i)});return i.concat(o)}}function Kn(e){let t=[];if((0,s.A)(e))return t;const n=Ue(e);if(n instanceof M)t.push(n.referencedRule);else if(n instanceof U||n instanceof F||n instanceof G||n instanceof K||n instanceof V||n instanceof B)t=t.concat(Kn(n.definition));else if(n instanceof j)t=(0,he.A)((0,a.A)(n.definition,e=>Kn(e.definition)));else if(!(n instanceof H))throw Error("non exhaustive match");const r=ae(n),i=e.length>1;if(r&&i){const n=h(e);return t.concat(Kn(n))}return t}class Bn extends z{constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}}function Vn(e,t,n){const i=new Bn;e.accept(i);let s=i.alternations;s=$e(s,e=>!0===e.ignoreAmbiguities);const o=(0,nn.A)(s,i=>{const s=i.idx,o=i.maxLookahead||t,l=bn(s,e,o,i),c=function(e,t,n,i){const s=[],o=(0,Ie.A)(e,(n,i,a)=>(!0===t.definition[a].ignoreAmbiguities||(0,r.A)(i,i=>{const o=[a];(0,r.A)(e,(e,n)=>{a!==n&&_n(e,i)&&!0!==t.definition[n].ignoreAmbiguities&&o.push(n)}),o.length>1&&!_n(s,i)&&(s.push(i),n.push({alts:o,path:i}))}),n),[]),l=(0,a.A)(o,e=>{const r=(0,a.A)(e.alts,e=>e+1);return{message:i.buildAlternationAmbiguityError({topLevelRule:n,alternation:t,ambiguityIndices:r,prefixPath:e.path}),type:Or.AMBIGUOUS_ALTS,ruleName:n.name,occurrence:t.idx,alternatives:e.alts}});return l}(l,i,e,n),u=function(e,t,n,r){const i=(0,Ie.A)(e,(e,t,n)=>{const r=(0,a.A)(t,e=>({idx:n,path:e}));return e.concat(r)},[]),s=De((0,nn.A)(i,e=>{if(!0===t.definition[e.idx].ignoreAmbiguities)return[];const s=e.idx,o=e.path,l=(0,Se.A)(i,e=>{return!0!==t.definition[e.idx].ignoreAmbiguities&&e.idx<s&&(n=e.path,r=o,n.length<r.length&&se(n,(e,t)=>{const n=r[t];return e===n||n.categoryMatchesMap[e.tokenTypeIdx]}));var n,r});return(0,a.A)(l,e=>{const i=[e.idx+1,s+1],a=0===t.idx?"":t.idx;return{message:r.buildAlternationPrefixAmbiguityError({topLevelRule:n,alternation:t,ambiguityIndices:i,prefixPath:e.path}),type:Or.AMBIGUOUS_PREFIX_ALTS,ruleName:n.name,occurrence:a,alternatives:i}})}));return s}(l,i,e,n);return c.concat(u)});return o}class jn extends z{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}}function Hn(e){const t=(0,Te.A)(e,{errMsgProvider:Jt}),n={};return(0,r.A)(e.rules,e=>{n[e.name]=e}),function(e,t){const n=new tn(e,t);return n.resolveRefs(),n.errors}(n,t.errMsgProvider)}const Wn="MismatchedTokenException",zn="NoViableAltException",Yn="EarlyExitException",Xn="NotAllInputParsedException",qn=[Wn,zn,Yn,Xn];function Qn(e){return ne(qn,e.name)}Object.freeze(qn);class Zn extends Error{constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}class Jn extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=Wn}}class er extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=zn}}class tr extends Zn{constructor(e,t){super(e,t),this.name=Xn}}class nr extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=Yn}}const rr={},ir="InRuleRecoveryException";class sr extends Error{constructor(e){super(e),this.name=ir}}function ar(e,t,n,r,i,s,a){const o=this.getKeyForAutomaticLookahead(r,i);let l=this.firstAfterRepMap[o];if(void 0===l){const e=this.getCurrRuleFullName();l=new s(this.getGAstProductions()[e],i).startWalking(),this.firstAfterRepMap[o]=l}let c=l.token,u=l.occurrence;const d=l.isEndOfRule;1===this.RULE_STACK.length&&d&&void 0===c&&(c=Xt,u=1),void 0!==c&&void 0!==u&&this.shouldInRepetitionRecoveryBeTried(c,u,a)&&this.tryInRepetitionRecovery(e,t,n,c)}const or=1024,lr=1280,cr=1536;function ur(e,t,n){return n|t|e}class dr{constructor(e){var t;this.maxLookahead=null!==(t=null==e?void 0:e.maxLookahead)&&void 0!==t?t:Lr.maxLookahead}validate(e){const t=this.validateNoLeftRecursion(e.rules);if((0,s.A)(t)){const n=this.validateEmptyOrAlternatives(e.rules),r=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),i=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...t,...n,...r,...i]}return t}validateNoLeftRecursion(e){return(0,nn.A)(e,e=>Gn(e,e,en))}validateEmptyOrAlternatives(e){return(0,nn.A)(e,e=>function(e,t){const n=new Bn;e.accept(n);const r=n.alternations;return(0,nn.A)(r,n=>{const r=un(n.definition);return(0,nn.A)(r,(r,i)=>{const a=An([r],[],kt,1);return(0,s.A)(a)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:n,emptyChoiceIdx:i}),type:Or.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:n.idx,alternative:i+1}]:[]})})}(e,en))}validateAmbiguousAlternationAlternatives(e,t){return(0,nn.A)(e,e=>Vn(e,t,en))}validateSomeNonEmptyLookaheadPath(e,t){return function(e,t,n){const i=[];return(0,r.A)(e,e=>{const a=new jn;e.accept(a);const o=a.allProductions;(0,r.A)(o,r=>{const a=$n(r),o=r.maxLookahead||t,l=On(r.idx,e,a,o)[0];if((0,s.A)((0,he.A)(l))){const t=n.buildEmptyRepetitionError({topLevelRule:e,repetition:r});i.push({message:t,type:Or.NO_NON_EMPTY_LOOKAHEAD,ruleName:e.name})}})}),i}(e,t,en)}buildLookaheadForAlternation(e){return function(e,t,n,r,i,s){const a=bn(e,t,n);return s(a,r,Pn(a)?xt:kt,i)}(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,kn)}buildLookaheadForOptional(e){return function(e,t,n,r,i,s){const a=On(e,t,i,n),o=Pn(a)?xt:kt;return s(a[0],o,r)}(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,$n(e.prodType),xn)}}const hr=new class extends z{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}};function fr(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffset<t.endOffset==!0&&(e.endOffset=t.endOffset)}function pr(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.startColumn=t.startColumn,e.startLine=t.startLine,e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine):e.endOffset<t.endOffset==!0&&(e.endOffset=t.endOffset,e.endColumn=t.endColumn,e.endLine=t.endLine)}function mr(e,t){Object.defineProperty(e,"name",{enumerable:!1,configurable:!0,writable:!1,value:t})}function gr(e,t){const n=(0,A.A)(e),r=n.length;for(let i=0;i<r;i++){const r=e[n[i]],s=r.length;for(let e=0;e<s;e++){const n=r[e];void 0===n.tokenTypeIdx&&this[n.name](n.children,t)}}}function yr(e,t){const n=function(){};mr(n,e+"BaseSemantics");const r={visit:function(e,t){if((0,Q.A)(e)&&(e=e[0]),!(0,ge.A)(e))return this[e.name](e.children,t)},validateVisitor:function(){const e=function(e,t){const n=function(e,t){const n=(0,Se.A)(t,t=>!1===(0,Ee.A)(e[t])),r=(0,a.A)(n,t=>({msg:`Missing visitor method: <${t}> on ${e.constructor.name} CST Visitor.`,type:Tr.MISSING_METHOD,methodName:t}));return De(r)}(e,t);return n}(this,t);if(!(0,s.A)(e)){const t=(0,a.A)(e,e=>e.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${t.join("\n\n").replace(/\n/g,"\n\t")}`)}}};return(n.prototype=r).constructor=n,n._RULE_NAMES=t,n}var Tr;!function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"}(Tr||(Tr={}));var Ar=n(3149);const vr={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(vr);const Rr=!0,$r=Math.pow(2,8)-1,Er=Yt({name:"RECORDING_PHASE_TOKEN",pattern:Mt.NA});Nt([Er]);const kr=qt(Er,"This IToken indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",-1,-1,-1,-1,-1,-1);Object.freeze(kr);const xr={name:"This CSTNode indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",children:{}};function Ir(e,t,n,r=!1){Cr(n);const i=(0,$t.A)(this.recordingProdStack),s=(0,Ee.A)(t)?t:t.DEF,a=new e({definition:[],idx:n});return r&&(a.separator=t.SEP),(0,o.A)(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(a),s.call(this),i.definition.push(a),this.recordingProdStack.pop(),vr}function Sr(e,t){Cr(t);const n=(0,$t.A)(this.recordingProdStack),i=!1===(0,Q.A)(e),s=!1===i?e:e.DEF,a=new j({definition:[],idx:t,ignoreAmbiguities:i&&!0===e.IGNORE_AMBIGUITIES});(0,o.A)(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);const l=J(s,e=>(0,Ee.A)(e.GATE));return a.hasPredicates=l,n.definition.push(a),(0,r.A)(s,e=>{const t=new U({definition:[]});a.definition.push(t),(0,o.A)(e,"IGNORE_AMBIGUITIES")?t.ignoreAmbiguities=e.IGNORE_AMBIGUITIES:(0,o.A)(e,"GATE")&&(t.ignoreAmbiguities=!0),this.recordingProdStack.push(t),e.ALT.call(this),this.recordingProdStack.pop()}),vr}function Nr(e){return 0===e?"":`${e}`}function Cr(e){if(e<0||e>$r){const t=new Error(`Invalid DSL Method idx value: <${e}>\n\tIdx value must be a none negative value smaller than ${$r+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}const wr=qt(Xt,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(wr);const Lr=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Zt,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),br=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});var Or,_r;function Pr(e=void 0){return function(){return e}}!function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"}(Or||(Or={}));class Mr{static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated.\t\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;const t=this.className;this.TRACE_INIT("toFastProps",()=>{c(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),(0,r.A)(this.definedRulesNames,e=>{const t=this[e].originalGrammarAction;let n;this.TRACE_INIT(`${e} Rule`,()=>{n=this.topLevelRuleRecord(e,t)}),this.gastProductionsCache[e]=n})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Hn({rules:(0,i.A)(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if((0,s.A)(n)&&!1===this.skipValidations){const n=(e={rules:(0,i.A)(this.gastProductionsCache),tokenTypes:(0,i.A)(this.tokensMap),errMsgProvider:en,grammarName:t},Mn((e=(0,Te.A)(e,{errMsgProvider:en})).rules,e.tokenTypes,e.errMsgProvider,e.grammarName)),r=function(e){const t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return(0,a.A)(t,e=>Object.assign({type:Or.CUSTOM_LOOKAHEAD_VALIDATION},e))}({lookaheadStrategy:this.lookaheadStrategy,rules:(0,i.A)(this.gastProductionsCache),tokenTypes:(0,i.A)(this.tokensMap),grammarName:t});this.definitionErrors=this.definitionErrors.concat(n,r)}var e}),(0,s.A)(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{const e=function(e){const t={};return(0,r.A)(e,e=>{const n=new me(e).startWalking();R(t,n)}),t}((0,i.A)(this.gastProductionsCache));this.resyncFollows=e}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var e,t;null===(t=(e=this.lookaheadStrategy).initialize)||void 0===t||t.call(e,{rules:(0,i.A)(this.gastProductionsCache)}),this.preComputeLookaheadFunctions((0,i.A)(this.gastProductionsCache))})),!Mr.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,s.A)(this.definitionErrors))throw e=(0,a.A)(this.definitionErrors,e=>e.message),new Error(`Parser Definition Errors detected:\n ${e.join("\n-------------------------------\n")}`)})}constructor(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;const n=this;if(n.initErrorHandler(t),n.initLexerAdapter(),n.initLooksAhead(t),n.initRecognizerEngine(e,t),n.initRecoverable(t),n.initTreeBuilder(t),n.initContentAssist(),n.initGastRecorder(t),n.initPerformanceTracer(t),(0,o.A)(t,"ignoredIssues"))throw new Error("The <ignoredIssues> IParserConfig property has been deprecated.\n\tPlease use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.");this.skipValidations=(0,o.A)(t,"skipValidations")?t.skipValidations:Lr.skipValidations}}Mr.DEFER_DEFINITION_ERRORS_HANDLING=!1,_r=Mr,[class{initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,o.A)(e,"recoveryEnabled")?e.recoveryEnabled:Lr.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=ar)}getTokenToInsert(e){const t=qt(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,n,r){const i=this.findReSyncTokenType(),s=this.exportLexerState(),a=[];let o=!1;const l=this.LA(1);let c=this.LA(1);const u=()=>{const e=this.LA(0),t=this.errorMessageProvider.buildMismatchTokenMessage({expected:r,actual:l,previous:e,ruleName:this.getCurrRuleFullName()}),n=new Jn(t,l,this.LA(0));n.resyncedTokens=un(a),this.SAVE_ERROR(n)};for(;!o;){if(this.tokenMatcher(c,r))return void u();if(n.call(this))return u(),void e.apply(this,t);this.tokenMatcher(c,i)?o=!0:(c=this.SKIP_TOKEN(),this.addToResyncTokens(c,a))}this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,t,n){return!1!==n&&!this.tokenMatcher(this.LA(1),e)&&!this.isBackTracking()&&!this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t))}getFollowsForInRuleRecovery(e,t){const n=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){const e=this.SKIP_TOKEN();return this.consumeToken(),e}throw new sr("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e))return!1;if((0,s.A)(t))return!1;const n=this.LA(1);return void 0!==(0,Fe.A)(t,e=>this.tokenMatcher(n,e))}canRecoverWithSingleTokenDeletion(e){return!!this.canTokenTypeBeDeletedInRecovery(e)&&this.tokenMatcher(this.LA(2),e)}isInCurrentRuleReSyncSet(e){const t=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(t);return ne(n,e)}findReSyncTokenType(){const e=this.flattenFollowSet();let t=this.LA(1),n=2;for(;;){const r=(0,Fe.A)(e,e=>Qt(t,e));if(void 0!==r)return r;t=this.LA(n),n++}}getCurrFollowKey(){if(1===this.RULE_STACK.length)return rr;const e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){const e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return(0,a.A)(e,(n,r)=>0===r?rr:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:t[r],inRule:this.shortRuleNameToFullName(e[r-1])})}flattenFollowSet(){const e=(0,a.A)(this.buildFullFollowKeyStack(),e=>this.getFollowSetFromFollowKey(e));return(0,he.A)(e)}getFollowSetFromFollowKey(e){if(e===rr)return[Xt];const t=e.ruleName+e.idxInCallingRule+pe+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,Xt)||t.push(e),t}reSyncTo(e){const t=[];let n=this.LA(1);for(;!1===this.tokenMatcher(n,e);)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,t);return un(t)}attemptInRepetitionRecovery(e,t,n,r,i,s,a){}getCurrentGrammarPath(e,t){return{ruleStack:this.getHumanReadableRuleStack(),occurrenceStack:(0,l.A)(this.RULE_OCCURRENCE_STACK),lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return(0,a.A)(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}},class{initLooksAhead(e){this.dynamicTokensEnabled=(0,o.A)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Lr.dynamicTokensEnabled,this.maxLookahead=(0,o.A)(e,"maxLookahead")?e.maxLookahead:Lr.maxLookahead,this.lookaheadStrategy=(0,o.A)(e,"lookaheadStrategy")?e.lookaheadStrategy:new dr({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){(0,r.A)(e,e=>{this.TRACE_INIT(`${e.name} Rule Lookahead`,()=>{const{alternation:t,repetition:n,option:i,repetitionMandatory:s,repetitionMandatoryWithSeparator:a,repetitionWithSeparator:o}=function(e){hr.reset(),e.accept(hr);const t=hr.dslMethods;return hr.reset(),t}(e);(0,r.A)(t,t=>{const n=0===t.idx?"":t.idx;this.TRACE_INIT(`${oe(t)}${n}`,()=>{const n=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:t.idx,rule:e,maxLookahead:t.maxLookahead||this.maxLookahead,hasPredicates:t.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),r=ur(this.fullRuleNameToShort[e.name],256,t.idx);this.setLaFuncCache(r,n)})}),(0,r.A)(n,t=>{this.computeLookaheadFunc(e,t.idx,768,"Repetition",t.maxLookahead,oe(t))}),(0,r.A)(i,t=>{this.computeLookaheadFunc(e,t.idx,512,"Option",t.maxLookahead,oe(t))}),(0,r.A)(s,t=>{this.computeLookaheadFunc(e,t.idx,or,"RepetitionMandatory",t.maxLookahead,oe(t))}),(0,r.A)(a,t=>{this.computeLookaheadFunc(e,t.idx,cr,"RepetitionMandatoryWithSeparator",t.maxLookahead,oe(t))}),(0,r.A)(o,t=>{this.computeLookaheadFunc(e,t.idx,lr,"RepetitionWithSeparator",t.maxLookahead,oe(t))})})})}computeLookaheadFunc(e,t,n,r,i,s){this.TRACE_INIT(`${s}${0===t?"":t}`,()=>{const s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:r}),a=ur(this.fullRuleNameToShort[e.name],n,t);this.setLaFuncCache(a,s)})}getKeyForAutomaticLookahead(e,t){return ur(this.getLastExplicitRuleShortName(),e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},class{initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,o.A)(e,"nodeLocationTracking")?e.nodeLocationTracking:Lr.nodeLocationTracking,this.outputCst)if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=pr,this.setNodeLocationFromNode=pr,this.cstPostRule=Rt.A,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=fr,this.setNodeLocationFromNode=fr,this.cstPostRule=Rt.A,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else{if(!/none/i.test(this.nodeLocationTracking))throw Error(`Invalid <nodeLocationTracking> config option: "${e.nodeLocationTracking}"`);this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=Rt.A,this.setInitialNodeLocation=Rt.A}else this.cstInvocationStateUpdate=Rt.A,this.cstFinallyStateUpdate=Rt.A,this.cstPostTerminal=Rt.A,this.cstPostNonTerminal=Rt.A,this.cstPostRule=Rt.A}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){const t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){const t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){const t=this.LA(0),n=e.location;n.startOffset<=t.startOffset==1?(n.endOffset=t.endOffset,n.endLine=t.endLine,n.endColumn=t.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){const t=this.LA(0),n=e.location;n.startOffset<=t.startOffset==1?n.endOffset=t.endOffset:n.startOffset=NaN}cstPostTerminal(e,t){const n=this.CST_STACK[this.CST_STACK.length-1];var r,i,s;i=t,s=e,void 0===(r=n).children[s]?r.children[s]=[i]:r.children[s].push(i),this.setNodeLocationFromToken(n.location,t)}cstPostNonTerminal(e,t){const n=this.CST_STACK[this.CST_STACK.length-1];!function(e,t,n){void 0===e.children[t]?e.children[t]=[n]:e.children[t].push(n)}(n,t,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if((0,ge.A)(this.baseCstVisitorConstructor)){const e=yr(this.className,(0,A.A)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if((0,ge.A)(this.baseCstVisitorWithDefaultsConstructor)){const e=function(e,t,n){const i=function(){};mr(i,e+"BaseSemanticsWithDefaults");const s=Object.create(n.prototype);return(0,r.A)(t,e=>{s[e]=gr}),(i.prototype=s).constructor=i,i}(this.className,(0,A.A)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){const e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},class{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(!0!==this.selfAnalysisDone)throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):wr}LA(e){const t=this.currIdx+e;return t<0||this.tokVectorLength<=t?wr:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},class{initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=xt,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,o.A)(t,"serializedGrammar"))throw Error("The Parser's configuration can no longer contain a <serializedGrammar> property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.");if((0,Q.A)(e)){if((0,s.A)(e))throw Error("A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis no longer a Token vector (since v4.0).");if("number"==typeof e[0].startOffset)throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.")}if((0,Q.A)(e))this.tokensMap=(0,Ie.A)(e,(e,t)=>(e[t.name]=t,e),{});else if((0,o.A)(e,"modes")&&se((0,he.A)((0,i.A)(e.modes)),bt)){const t=(0,he.A)((0,i.A)(e.modes)),n=de(t);this.tokensMap=(0,Ie.A)(n,(e,t)=>(e[t.name]=t,e),{})}else{if(!(0,Ar.A)(e))throw new Error("<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap=(0,l.A)(e)}this.tokensMap.EOF=Xt;const n=(0,o.A)(e,"modes")?(0,he.A)((0,i.A)(e.modes)):(0,i.A)(e),r=se(n,e=>(0,s.A)(e.categoryMatches));this.tokenMatcher=r?xt:kt,Nt((0,i.A)(this.tokensMap))}defineRule(e,t,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const r=(0,o.A)(n,"resyncEnabled")?n.resyncEnabled:br.resyncEnabled,i=(0,o.A)(n,"recoveryValueFunc")?n.recoveryValueFunc:br.recoveryValueFunc,s=this.ruleShortNameIdx<<12;let a;return this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s,a=!0===this.outputCst?function(...n){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),t.apply(this,n);const r=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(r),r}catch(a){return this.invokeRuleCatch(a,r,i)}finally{this.ruleFinallyStateUpdate()}}:function(...n){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),t.apply(this,n)}catch(a){return this.invokeRuleCatch(a,r,i)}finally{this.ruleFinallyStateUpdate()}},Object.assign(a,{ruleName:e,originalGrammarAction:t})}invokeRuleCatch(e,t,n){const r=1===this.RULE_STACK.length,i=t&&!this.isBackTracking()&&this.recoveryEnabled;if(Qn(e)){const t=e;if(i){const r=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(r)){if(t.resyncedTokens=this.reSyncTo(r),this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];return e.recoveredNode=!0,e}return n(e)}if(this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];e.recoveredNode=!0,t.partialCstResult=e}throw t}if(r)return this.moveToTerminatedState(),n(e);throw t}throw e}optionInternal(e,t){const n=this.getKeyForAutomaticLookahead(512,t);return this.optionInternalLogic(e,t,n)}optionInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof e){r=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=()=>t.call(this)&&e.call(this)}}else r=e;if(!0===i.call(this))return r.call(this)}atLeastOneInternal(e,t){const n=this.getKeyForAutomaticLookahead(or,e);return this.atLeastOneInternalLogic(e,t,n)}atLeastOneInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;if(!0!==i.call(this))throw this.raiseEarlyExitException(e,Rn.REPETITION_MANDATORY,t.ERR_MSG);{let e=this.doSingleRepetition(r);for(;!0===i.call(this)&&!0===e;)e=this.doSingleRepetition(r)}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],i,or,e,gn)}atLeastOneSepFirstInternal(e,t){const n=this.getKeyForAutomaticLookahead(cr,e);this.atLeastOneSepFirstInternalLogic(e,t,n)}atLeastOneSepFirstInternalLogic(e,t,n){const r=t.DEF,i=t.SEP;if(!0!==this.getLaFuncFromCache(n).call(this))throw this.raiseEarlyExitException(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG);{r.call(this);const t=()=>this.tokenMatcher(this.LA(1),i);for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,r,yn],t,cr,e,yn)}}manyInternal(e,t){const n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,t,n)}manyInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;let s=!0;for(;!0===i.call(this)&&!0===s;)s=this.doSingleRepetition(r);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],i,768,e,pn,s)}manySepFirstInternal(e,t){const n=this.getKeyForAutomaticLookahead(lr,e);this.manySepFirstInternalLogic(e,t,n)}manySepFirstInternalLogic(e,t,n){const r=t.DEF,i=t.SEP;if(!0===this.getLaFuncFromCache(n).call(this)){r.call(this);const t=()=>this.tokenMatcher(this.LA(1),i);for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,r,mn],t,lr,e,mn)}}repetitionSepSecondInternal(e,t,n,r,i){for(;n();)this.CONSUME(t),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,n,r,i],n,cr,e,i)}doSingleRepetition(e){const t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){const n=this.getKeyForAutomaticLookahead(256,t),r=(0,Q.A)(e)?e:e.DEF,i=this.getLaFuncFromCache(n).call(this,r);if(void 0!==i)return r[i].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),0===this.RULE_STACK.length&&!1===this.isAtEndOfInput()){const e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new tr(t,e))}}subruleInternal(e,t,n){let r;try{const i=void 0!==n?n.ARGS:void 0;return this.subruleIdx=t,r=e.apply(this,i),this.cstPostNonTerminal(r,void 0!==n&&void 0!==n.LABEL?n.LABEL:e.ruleName),r}catch(i){throw this.subruleInternalError(i,n,e.ruleName)}}subruleInternalError(e,t,n){throw Qn(e)&&void 0!==e.partialCstResult&&(this.cstPostNonTerminal(e.partialCstResult,void 0!==t&&void 0!==t.LABEL?t.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,t,n){let r;try{const t=this.LA(1);!0===this.tokenMatcher(t,e)?(this.consumeToken(),r=t):this.consumeInternalError(e,t,n)}catch(i){r=this.consumeInternalRecovery(e,t,i)}return this.cstPostTerminal(void 0!==n&&void 0!==n.LABEL?n.LABEL:e.name,r),r}consumeInternalError(e,t,n){let r;const i=this.LA(0);throw r=void 0!==n&&n.ERR_MSG?n.ERR_MSG:this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Jn(r,t,i))}consumeInternalRecovery(e,t,n){if(!this.recoveryEnabled||"MismatchedTokenException"!==n.name||this.isBackTracking())throw n;{const i=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,i)}catch(r){throw r.name===ir?n:r}}}saveRecogState(){const e=this.errors,t=(0,l.A)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return 0!==this.isBackTrackingStack.length}getCurrRuleFullName(){const e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),Xt)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},class{ACTION(e){return e.call(this)}consume(e,t,n){return this.consumeInternal(t,e,n)}subrule(e,t,n){return this.subruleInternal(t,e,n)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,n=br){if(ne(this.definedRulesNames,e)){const t={message:en.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Or.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(t)}this.definedRulesNames.push(e);const r=this.defineRule(e,t,n);return this[e]=r,r}OVERRIDE_RULE(e,t,n=br){const r=function(e,t,n){const r=[];let i;return ne(t,e)||(i=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${n}<-as it is not defined in any of the super grammars `,r.push({message:i,type:Or.INVALID_RULE_OVERRIDE,ruleName:e})),r}(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(r);const i=this.defineRule(e,t,n);return this[e]=i,i}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);const n=this.saveRecogState();try{return e.apply(this,t),!0}catch(r){if(Qn(r))return!1;throw r}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return e=(0,i.A)(this.gastProductionsCache),(0,a.A)(e,W);var e}},class{initErrorHandler(e){this._errors=[],this.errorMessageProvider=(0,o.A)(e,"errorMessageProvider")?e.errorMessageProvider:Lr.errorMessageProvider}SAVE_ERROR(e){if(Qn(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,l.A)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return(0,l.A)(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,n){const r=this.getCurrRuleFullName(),i=On(e,this.getGAstProductions()[r],t,this.maxLookahead)[0],s=[];for(let o=1;o<=this.maxLookahead;o++)s.push(this.LA(o));const a=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:i,actual:s,previous:this.LA(0),customUserDescription:n,ruleName:r});throw this.SAVE_ERROR(new nr(a,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){const n=this.getCurrRuleFullName(),r=bn(e,this.getGAstProductions()[n],this.maxLookahead),i=[];for(let o=1;o<=this.maxLookahead;o++)i.push(this.LA(o));const s=this.LA(0),a=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:r,actual:i,previous:s,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new er(a,this.LA(1),s))}},class{initContentAssist(){}computeContentAssist(e,t){const n=this.gastProductionsCache[e];if((0,ge.A)(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return An([n],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){const t=Ue(e.ruleStack),n=this.getGAstProductions()[t];return new hn(n,e).startWalking()}},class{initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){const t=e>0?e:"";this[`CONSUME${t}`]=function(t,n){return this.consumeInternalRecord(t,e,n)},this[`SUBRULE${t}`]=function(t,n){return this.subruleInternalRecord(t,e,n)},this[`OPTION${t}`]=function(t){return this.optionInternalRecord(t,e)},this[`OR${t}`]=function(t){return this.orInternalRecord(t,e)},this[`MANY${t}`]=function(t){this.manyInternalRecord(e,t)},this[`MANY_SEP${t}`]=function(t){this.manySepFirstInternalRecord(e,t)},this[`AT_LEAST_ONE${t}`]=function(t){this.atLeastOneInternalRecord(e,t)},this[`AT_LEAST_ONE_SEP${t}`]=function(t){this.atLeastOneSepFirstInternalRecord(e,t)}}this.consume=function(e,t,n){return this.consumeInternalRecord(t,e,n)},this.subrule=function(e,t,n){return this.subruleInternalRecord(t,e,n)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{const e=this;for(let t=0;t<10;t++){const n=t>0?t:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return wr}topLevelRuleRecord(e,t){try{const n=new D({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),t.call(this),this.recordingProdStack.pop(),n}catch(n){if(!0!==n.KNOWN_RECORDER_ERROR)try{n.message=n.message+'\n\t This error was thrown during the "grammar recording phase" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording'}catch(r){throw n}throw n}}optionInternalRecord(e,t){return Ir.call(this,F,e,t)}atLeastOneInternalRecord(e,t){Ir.call(this,G,t,e)}atLeastOneSepFirstInternalRecord(e,t){Ir.call(this,K,t,e,Rr)}manyInternalRecord(e,t){Ir.call(this,B,t,e)}manySepFirstInternalRecord(e,t){Ir.call(this,V,t,e,Rr)}orInternalRecord(e,t){return Sr.call(this,e,t)}subruleInternalRecord(e,t,n){if(Cr(t),!e||!1===(0,o.A)(e,"ruleName")){const n=new Error(`<SUBRULE${Nr(t)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=(0,$t.A)(this.recordingProdStack),i=e.ruleName,s=new M({idx:t,nonTerminalName:i,label:null==n?void 0:n.LABEL,referencedRule:void 0});return r.definition.push(s),this.outputCst?xr:vr}consumeInternalRecord(e,t,n){if(Cr(t),!wt(e)){const n=new Error(`<CONSUME${Nr(t)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=(0,$t.A)(this.recordingProdStack),i=new H({idx:t,terminalType:e,label:null==n?void 0:n.LABEL});return r.definition.push(i),kr}},class{initPerformanceTracer(e){if((0,o.A)(e,"traceInitPerf")){const t=e.traceInitPerf,n="number"==typeof t;this.traceInitMaxIdent=n?t:1/0,this.traceInitPerf=n?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Lr.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent<this.traceInitMaxIdent&&console.log(`${n}--\x3e <${e}>`);const{time:r,value:i}=Et(t),s=r>10?console.warn:console.log;return this.traceInitIndent<this.traceInitMaxIdent&&s(`${n}<-- <${e}> time: ${r}ms`),this.traceInitIndent--,i}return t()}}].forEach(e=>{const t=e.prototype;Object.getOwnPropertyNames(t).forEach(n=>{if("constructor"===n)return;const r=Object.getOwnPropertyDescriptor(t,n);r&&(r.get||r.set)?Object.defineProperty(_r.prototype,n,r):_r.prototype[n]=e.prototype[n]})});class Dr extends Mr{constructor(e,t=Lr){const n=(0,l.A)(t);n.outputCst=!1,super(e,n)}}},9683:(e,t,n)=>{n.d(t,{DM:()=>p,OP:()=>m,SD:()=>a,Uo:()=>d,VN:()=>u,XG:()=>o,YE:()=>l,cQ:()=>c,jm:()=>h});var r=n(2479),i=n(1719),s=n(6373);function a(e){for(const[t,n]of Object.entries(e))t.startsWith("$")||(Array.isArray(n)?n.forEach((n,i)=>{(0,r.ng)(n)&&(n.$container=e,n.$containerProperty=t,n.$containerIndex=i)}):(0,r.ng)(n)&&(n.$container=e,n.$containerProperty=t))}function o(e,t){let n=e;for(;n;){if(t(n))return n;n=n.$container}}function l(e){const t=c(e).$document;if(!t)throw new Error("AST node has no document.");return t}function c(e){for(;e.$container;)e=e.$container;return e}function u(e,t){if(!e)throw new Error("Node must be an AstNode.");const n=null==t?void 0:t.range;return new i.fq(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){const i=t.keys[t.keyIndex];if(!i.startsWith("$")){const s=e[i];if((0,r.ng)(s)){if(t.keyIndex++,f(s,n))return{done:!1,value:s}}else if(Array.isArray(s)){for(;t.arrayIndex<s.length;){const e=s[t.arrayIndex++];if((0,r.ng)(e)&&f(e,n))return{done:!1,value:e}}t.arrayIndex=0}}t.keyIndex++}return i.Rf})}function d(e,t){if(!e)throw new Error("Root node must be an AstNode.");return new i.Vj(e,e=>u(e,t))}function h(e,t){if(!e)throw new Error("Root node must be an AstNode.");return(null==t?void 0:t.range)&&!f(e,t.range)?new i.Vj(e,()=>[]):new i.Vj(e,e=>u(e,t),{includeRoot:!0})}function f(e,t){var n;if(!t)return!0;const r=null===(n=e.$cstNode)||void 0===n?void 0:n.range;return!!r&&(0,s.r4)(r,t)}function p(e){return new i.fq(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndex<t.keys.length;){const n=t.keys[t.keyIndex];if(!n.startsWith("$")){const i=e[n];if((0,r.A_)(i))return t.keyIndex++,{done:!1,value:{reference:i,container:e,property:n}};if(Array.isArray(i)){for(;t.arrayIndex<i.length;){const s=t.arrayIndex++,a=i[s];if((0,r.A_)(a))return{done:!1,value:{reference:a,container:e,property:n,index:s}}}t.arrayIndex=0}}t.keyIndex++}return i.Rf})}function m(e,t){const n=e.getTypeMetaData(t.$type),r=t;for(const i of n.properties)void 0!==i.defaultValue&&void 0===r[i.name]&&(r[i.name]=g(i.defaultValue))}function g(e){return Array.isArray(e)?[...e.map(g)]:e}},9850:(e,t,n)=>{t.Qi=t.XO=void 0;const r=n(9590),i=n(966),s=n(2676);var a;!function(e){e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:s.Event.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:s.Event.None}),e.is=function(t){const n=t;return n&&(n===e.None||n===e.Cancelled||i.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}}(a||(t.XO=a={}));const o=Object.freeze(function(e,t){const n=(0,r.default)().timer.setTimeout(e.bind(t),0);return{dispose(){n.dispose()}}});class l{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?o:(this._emitter||(this._emitter=new s.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}}t.Qi=class{get token(){return this._token||(this._token=new l),this._token}cancel(){this._token?this._token.cancel():this._token=a.Cancelled}dispose(){this._token?this._token instanceof l&&this._token.dispose():this._token=a.None}}}}]); \ No newline at end of file diff --git a/user/assets/js/8756.923d7eef.js b/user/assets/js/8756.923d7eef.js new file mode 100644 index 0000000..8d7311a --- /dev/null +++ b/user/assets/js/8756.923d7eef.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8756],{5937:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(2453),n=s(4886);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])},8756:(t,e,s)=>{s.d(e,{diagram:()=>f});var i=s(9625),n=s(1152),r=s(45),a=(s(5164),s(8698),s(5894),s(3245),s(2387),s(92),s(3226)),c=s(7633),o=s(797),l=s(451),h=s(5582),u=s(5937),y=function(){var t=(0,o.K2)(function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],s=[1,10],i=[1,11],n=[1,12],r=[1,13],a=[1,20],c=[1,21],l=[1,22],h=[1,23],u=[1,24],y=[1,19],d=[1,25],p=[1,26],_=[1,18],g=[1,33],b=[1,34],m=[1,35],f=[1,36],E=[1,37],k=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],O=[1,42],S=[1,43],T=[1,52],A=[40,50,68,69],R=[1,63],N=[1,61],I=[1,58],C=[1,62],x=[1,64],D=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],v=[63,64,65,66,67],$=[1,81],K=[1,80],w=[1,78],L=[1,79],M=[6,10,42,47],F=[6,10,13,41,42,47,48,49],B=[1,89],Y=[1,88],P=[1,87],z=[19,56],G=[1,98],U=[1,97],Z=[19,56,58,60],j={trace:(0,o.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:(0,o.K2)(function(t,e,s,i,n,r,a){var c=r.length-1;switch(n){case 1:break;case 2:case 6:case 7:this.$=[];break;case 3:r[c-1].push(r[c]),this.$=r[c-1];break;case 4:case 5:case 55:case 78:case 62:case 63:case 66:this.$=r[c];break;case 8:i.addEntity(r[c-4]),i.addEntity(r[c-2]),i.addRelationship(r[c-4],r[c],r[c-2],r[c-3]);break;case 9:i.addEntity(r[c-8]),i.addEntity(r[c-4]),i.addRelationship(r[c-8],r[c],r[c-4],r[c-5]),i.setClass([r[c-8]],r[c-6]),i.setClass([r[c-4]],r[c-2]);break;case 10:i.addEntity(r[c-6]),i.addEntity(r[c-2]),i.addRelationship(r[c-6],r[c],r[c-2],r[c-3]),i.setClass([r[c-6]],r[c-4]);break;case 11:i.addEntity(r[c-6]),i.addEntity(r[c-4]),i.addRelationship(r[c-6],r[c],r[c-4],r[c-5]),i.setClass([r[c-4]],r[c-2]);break;case 12:i.addEntity(r[c-3]),i.addAttributes(r[c-3],r[c-1]);break;case 13:i.addEntity(r[c-5]),i.addAttributes(r[c-5],r[c-1]),i.setClass([r[c-5]],r[c-3]);break;case 14:i.addEntity(r[c-2]);break;case 15:i.addEntity(r[c-4]),i.setClass([r[c-4]],r[c-2]);break;case 16:i.addEntity(r[c]);break;case 17:i.addEntity(r[c-2]),i.setClass([r[c-2]],r[c]);break;case 18:i.addEntity(r[c-6],r[c-4]),i.addAttributes(r[c-6],r[c-1]);break;case 19:i.addEntity(r[c-8],r[c-6]),i.addAttributes(r[c-8],r[c-1]),i.setClass([r[c-8]],r[c-3]);break;case 20:i.addEntity(r[c-5],r[c-3]);break;case 21:i.addEntity(r[c-7],r[c-5]),i.setClass([r[c-7]],r[c-2]);break;case 22:i.addEntity(r[c-3],r[c-1]);break;case 23:i.addEntity(r[c-5],r[c-3]),i.setClass([r[c-5]],r[c]);break;case 24:case 25:this.$=r[c].trim(),i.setAccTitle(this.$);break;case 26:case 27:this.$=r[c].trim(),i.setAccDescription(this.$);break;case 32:i.setDirection("TB");break;case 33:i.setDirection("BT");break;case 34:i.setDirection("RL");break;case 35:i.setDirection("LR");break;case 36:this.$=r[c-3],i.addClass(r[c-2],r[c-1]);break;case 37:case 38:case 56:case 64:case 43:this.$=[r[c]];break;case 39:case 40:this.$=r[c-2].concat([r[c]]);break;case 41:this.$=r[c-2],i.setClass(r[c-1],r[c]);break;case 42:this.$=r[c-3],i.addCssStyles(r[c-2],r[c-1]);break;case 44:case 65:r[c-2].push(r[c]),this.$=r[c-2];break;case 46:this.$=r[c-1]+r[c];break;case 54:case 76:case 77:case 67:this.$=r[c].replace(/"/g,"");break;case 57:r[c].push(r[c-1]),this.$=r[c];break;case 58:this.$={type:r[c-1],name:r[c]};break;case 59:this.$={type:r[c-2],name:r[c-1],keys:r[c]};break;case 60:this.$={type:r[c-2],name:r[c-1],comment:r[c]};break;case 61:this.$={type:r[c-3],name:r[c-2],keys:r[c-1],comment:r[c]};break;case 68:this.$={cardA:r[c],relType:r[c-1],cardB:r[c-2]};break;case 69:this.$=i.Cardinality.ZERO_OR_ONE;break;case 70:this.$=i.Cardinality.ZERO_OR_MORE;break;case 71:this.$=i.Cardinality.ONE_OR_MORE;break;case 72:this.$=i.Cardinality.ONLY_ONE;break;case 73:this.$=i.Cardinality.MD_PARENT;break;case 74:this.$=i.Identification.NON_IDENTIFYING;break;case 75:this.$=i.Identification.IDENTIFYING}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:a,34:c,35:l,36:h,37:u,40:y,43:d,44:p,50:_},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:a,34:c,35:l,36:h,37:u,40:y,43:d,44:p,50:_},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:g,64:b,65:m,66:f,67:E}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(k,[2,54]),t(k,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:O,41:S},{16:44,40:O,41:S},{16:45,40:O,41:S},t(e,[2,4]),{11:46,40:y,50:_},{16:47,40:O,41:S},{18:48,19:[1,49],51:50,52:51,56:T},{11:53,40:y,50:_},{62:54,68:[1,55],69:[1,56]},t(A,[2,69]),t(A,[2,70]),t(A,[2,71]),t(A,[2,72]),t(A,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:R,38:57,41:N,42:I,45:59,46:60,48:C,49:x},t(D,[2,37]),t(D,[2,38]),{16:65,40:O,41:S,42:I},{13:R,38:66,41:N,42:I,45:59,46:60,48:C,49:x},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:I,63:g,64:b,65:m,66:f,67:E}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:T},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:g,64:b,65:m,66:f,67:E},t(v,[2,74]),t(v,[2,75]),{6:$,10:K,39:77,42:w,47:L},{40:[1,82],41:[1,83]},t(M,[2,43],{46:84,13:R,41:N,48:C,49:x}),t(F,[2,45]),t(F,[2,50]),t(F,[2,51]),t(F,[2,52]),t(F,[2,53]),t(e,[2,41],{42:I}),{6:$,10:K,39:85,42:w,47:L},{14:86,40:B,50:Y,70:P},{16:90,40:O,41:S},{11:91,40:y,50:_},{18:92,19:[1,93],51:50,52:51,56:T},t(e,[2,12]),{19:[2,57]},t(z,[2,58],{54:94,55:95,57:96,59:G,60:U}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:R,41:N,45:101,46:60,48:C,49:x},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(D,[2,39]),t(D,[2,40]),t(F,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:I},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(z,[2,59],{55:106,58:[1,107],60:U}),t(z,[2,60]),t(Z,[2,64]),t(z,[2,67]),t(Z,[2,66]),{18:108,19:[1,109],51:50,52:51,56:T},{16:110,40:O,41:S},t(M,[2,44],{46:84,13:R,41:N,48:C,49:x}),{14:111,40:B,50:Y,70:P},{16:112,40:O,41:S},{14:113,40:B,50:Y,70:P},t(e,[2,13]),t(z,[2,61]),{57:114,59:G},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:I}),t(e,[2,11]),{13:[1,117],42:I},t(e,[2,10]),t(Z,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:T},{14:120,40:B,50:Y,70:P},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:(0,o.K2)(function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},"parseError"),parse:(0,o.K2)(function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,c="",l=0,h=0,u=0,y=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(p.yy[_]=this.yy[_]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var g=d.yylloc;r.push(g);var b=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)(function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t},"popStack"),(0,o.K2)(m,"lex");for(var f,E,k,O,S,T,A,R,N,I={};;){if(k=s[s.length-1],this.defaultActions[k]?O=this.defaultActions[k]:(null==f&&(f=m()),O=a[k]&&a[k][f]),void 0===O||!O.length||!O[0]){var C="";for(T in N=[],a[k])this.terminals_[T]&&T>2&&N.push("'"+this.terminals_[T]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+N.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[f]||f,line:d.yylineno,loc:g,expected:N})}if(O[0]instanceof Array&&O.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+f);switch(O[0]){case 1:s.push(f),n.push(d.yytext),r.push(d.yylloc),s.push(O[1]),f=null,E?(f=E,E=null):(h=d.yyleng,c=d.yytext,l=d.yylineno,g=d.yylloc,u>0&&u--);break;case 2:if(A=this.productions_[O[1]][1],I.$=n[n.length-A],I._$={first_line:r[r.length-(A||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(A||1)].first_column,last_column:r[r.length-1].last_column},b&&(I._$.range=[r[r.length-(A||1)].range[0],r[r.length-1].range[1]]),void 0!==(S=this.performAction.apply(I,[c,h,l,p.yy,O[1],n,r].concat(y))))return S;A&&(s=s.slice(0,-1*A*2),n=n.slice(0,-1*A),r=r.slice(0,-1*A)),s.push(this.productions_[O[1]][0]),n.push(I.$),r.push(I._$),R=a[s[s.length-2]][s[s.length-1]],s.push(R);break;case 3:return!0}}return!0},"parse")},W=function(){return{EOF:1,parseError:(0,o.K2)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,o.K2)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,o.K2)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,o.K2)(function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,o.K2)(function(){return this._more=!0,this},"more"),reject:(0,o.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,o.K2)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,o.K2)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,o.K2)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,o.K2)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,o.K2)(function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,o.K2)(function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!e||s[0].length>e[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,o.K2)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,o.K2)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,o.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,o.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,o.K2)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,o.K2)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,o.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)(function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),24;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),26;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:case 23:case 28:case 35:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;case 18:case 19:case 38:return 49;case 20:case 37:return 42;case 21:return 15;case 22:case 36:return 13;case 24:return 59;case 25:case 26:return 56;case 27:return 60;case 29:return this.popState(),19;case 30:case 73:return e.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;case 34:return this.popState(),10;case 39:return this.begin("style"),37;case 40:return 43;case 41:case 45:case 46:case 59:return 63;case 42:case 43:case 44:case 52:case 54:case 61:return 65;case 47:case 48:case 49:case 50:case 51:case 53:case 60:return 64;case 55:case 56:case 57:case 58:return 66;case 62:return 67;case 63:case 66:case 67:case 68:return 68;case 64:case 65:return 69;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74],inclusive:!0}}}}();function X(){this.yy={}}return j.lexer=W,(0,o.K2)(X,"Parser"),X.prototype=j,j.Parser=X,new X}();y.parser=y;var d=y,p=class{constructor(){this.entities=new Map,this.relationships=[],this.classes=new Map,this.direction="TB",this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},this.setAccTitle=c.SV,this.getAccTitle=c.iN,this.setAccDescription=c.EI,this.getAccDescription=c.m7,this.setDiagramTitle=c.ke,this.getDiagramTitle=c.ab,this.getConfig=(0,o.K2)(()=>(0,c.D7)().er,"getConfig"),this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,o.K2)(this,"ErDB")}addEntity(t,e=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&e&&(this.entities.get(t).alias=e,o.Rm.info(`Add alias '${e}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:e,shape:"erBox",look:(0,c.D7)().look??"default",cssClasses:"default",cssStyles:[]}),o.Rm.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,e){const s=this.addEntity(t);let i;for(i=e.length-1;i>=0;i--)e[i].keys||(e[i].keys=[]),e[i].comment||(e[i].comment=""),s.attributes.push(e[i]),o.Rm.debug("Added attribute ",e[i].name)}addRelationship(t,e,s,i){const n=this.entities.get(t),r=this.entities.get(s);if(!n||!r)return;const a={entityA:n.id,roleA:e,entityB:r.id,relSpec:i};this.relationships.push(a),o.Rm.debug("Added new relationship :",a)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map(t=>t.trim())),t?.textStyles&&(e=[...e,...t.textStyles??[]].map(t=>t.trim()))}return e}addCssStyles(t,e){for(const s of t){const t=this.entities.get(s);if(!e||!t)return;for(const s of e)t.cssStyles.push(s)}}addClass(t,e){t.forEach(t=>{let s=this.classes.get(t);void 0===s&&(s={id:t,styles:[],textStyles:[]},this.classes.set(t,s)),e&&e.forEach(function(t){if(/color/.exec(t)){const e=t.replace("fill","bgFill");s.textStyles.push(e)}s.styles.push(t)})})}setClass(t,e){for(const s of t){const t=this.entities.get(s);if(t)for(const s of e)t.cssClasses+=" "+s}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],(0,c.IU)()}getData(){const t=[],e=[],s=(0,c.D7)();for(const n of this.entities.keys()){const e=this.entities.get(n);e&&(e.cssCompiledStyles=this.getCompiledStyles(e.cssClasses.split(" ")),t.push(e))}let i=0;for(const n of this.relationships){const t={id:(0,a.rY)(n.entityA,n.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:n.entityA,end:n.entityB,label:n.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:n.relSpec.cardB.toLowerCase(),arrowTypeEnd:n.relSpec.cardA.toLowerCase(),pattern:"IDENTIFYING"==n.relSpec.relType?"solid":"dashed",look:s.look};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:"TB"}}},_={};(0,o.VA)(_,{draw:()=>g});var g=(0,o.K2)(async function(t,e,s,h){o.Rm.info("REF0:"),o.Rm.info("Drawing er diagram (unified)",e);const{securityLevel:u,er:y,layout:d}=(0,c.D7)(),p=h.db.getData(),_=(0,i.A)(e,u);p.type=h.type,p.layoutAlgorithm=(0,r.q7)(d),p.config.flowchart.nodeSpacing=y?.nodeSpacing||140,p.config.flowchart.rankSpacing=y?.rankSpacing||80,p.direction=h.db.getDirection(),p.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],p.diagramId=e,await(0,r.XX)(p,_),"elk"===p.layoutAlgorithm&&_.select(".edges").lower();const g=_.selectAll('[id*="-background"]');Array.from(g).length>0&&g.each(function(){const t=(0,l.Ltv)(this),e=t.attr("id").replace("-background",""),s=_.select(`#${CSS.escape(e)}`);if(!s.empty()){const e=s.attr("transform");t.attr("transform",e)}});a._K.insertTitle(_,"erDiagramTitleText",y?.titleTopMargin??25,h.db.getDiagramTitle()),(0,n.P)(_,8,"erDiagram",y?.useMaxWidth??!0)},"draw"),b=(0,o.K2)((t,e)=>{const s=u.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return h.A(i,n,r,e)},"fade"),m=(0,o.K2)(t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .labelBkg {\n background-color: ${b(t.tertiaryColor,.5)};\n }\n\n .edgeLabel .label {\n fill: ${t.nodeBorder};\n font-size: 14px;\n }\n\n .label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .edge-pattern-dashed {\n stroke-dasharray: 8,8;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon\n {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n }\n\n .marker {\n fill: none !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n`,"getStyles"),f={parser:d,get db(){return new p},renderer:_,styles:m}}}]); \ No newline at end of file diff --git a/user/assets/js/9032.092c7c90.js b/user/assets/js/9032.092c7c90.js new file mode 100644 index 0000000..4b17ecb --- /dev/null +++ b/user/assets/js/9032.092c7c90.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[9032],{9032:(e,t,s)=>{s.d(t,{diagram:()=>p});var i=s(9625),n=s(1152),r=s(45),a=(s(5164),s(8698),s(5894),s(3245),s(2387),s(92),s(3226)),l=s(7633),c=s(797),o=function(){var e=(0,c.K2)(function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s},"o"),t=[1,3],s=[1,4],i=[1,5],n=[1,6],r=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],a=[1,22],l=[2,7],o=[1,26],h=[1,27],u=[1,28],y=[1,29],m=[1,33],E=[1,34],p=[1,35],R=[1,36],d=[1,37],_=[1,38],f=[1,24],g=[1,31],S=[1,32],I=[1,30],b=[1,39],T=[1,40],k=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],N=[1,61],q=[89,90],C=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],A=[27,29],v=[1,70],L=[1,71],O=[1,72],w=[1,73],D=[1,74],x=[1,75],M=[1,76],$=[1,83],F=[1,80],K=[1,84],P=[1,85],U=[1,86],V=[1,87],Y=[1,88],B=[1,89],Q=[1,90],H=[1,91],W=[1,92],j=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],G=[63,64],z=[1,101],X=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],J=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Z=[1,110],ee=[1,106],te=[1,107],se=[1,108],ie=[1,109],ne=[1,111],re=[1,116],ae=[1,117],le=[1,114],ce=[1,115],oe={trace:(0,c.K2)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:(0,c.K2)(function(e,t,s,i,n,r,a){var l=r.length-1;switch(n){case 4:this.$=r[l].trim(),i.setAccTitle(this.$);break;case 5:case 6:this.$=r[l].trim(),i.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:i.setDirection("TB");break;case 18:i.setDirection("BT");break;case 19:i.setDirection("RL");break;case 20:i.setDirection("LR");break;case 21:i.addRequirement(r[l-3],r[l-4]);break;case 22:i.addRequirement(r[l-5],r[l-6]),i.setClass([r[l-5]],r[l-3]);break;case 23:i.setNewReqId(r[l-2]);break;case 24:i.setNewReqText(r[l-2]);break;case 25:i.setNewReqRisk(r[l-2]);break;case 26:i.setNewReqVerifyMethod(r[l-2]);break;case 29:this.$=i.RequirementType.REQUIREMENT;break;case 30:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=i.RiskLevel.LOW_RISK;break;case 36:this.$=i.RiskLevel.MED_RISK;break;case 37:this.$=i.RiskLevel.HIGH_RISK;break;case 38:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=i.VerifyType.VERIFY_TEST;break;case 42:i.addElement(r[l-3]);break;case 43:i.addElement(r[l-5]),i.setClass([r[l-5]],r[l-3]);break;case 44:i.setNewElementType(r[l-2]);break;case 45:i.setNewElementDocRef(r[l-2]);break;case 48:i.addRelationship(r[l-2],r[l],r[l-4]);break;case 49:i.addRelationship(r[l-2],r[l-4],r[l]);break;case 50:this.$=i.Relationships.CONTAINS;break;case 51:this.$=i.Relationships.COPIES;break;case 52:this.$=i.Relationships.DERIVES;break;case 53:this.$=i.Relationships.SATISFIES;break;case 54:this.$=i.Relationships.VERIFIES;break;case 55:this.$=i.Relationships.REFINES;break;case 56:this.$=i.Relationships.TRACES;break;case 57:this.$=r[l-2],i.defineClass(r[l-1],r[l]);break;case 58:i.setClass(r[l-1],r[l]);break;case 59:i.setClass([r[l-2]],r[l]);break;case 60:case 62:case 65:this.$=[r[l]];break;case 61:case 63:this.$=r[l-2].concat([r[l]]);break;case 64:this.$=r[l-2],i.setCssStyle(r[l-1],r[l]);break;case 66:r[l-2].push(r[l]),this.$=r[l-2];break;case 68:this.$=r[l-1]+r[l]}},"anonymous"),table:[{3:1,4:2,6:t,9:s,11:i,13:n},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:s,11:i,13:n},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(r,[2,6]),{3:12,4:2,6:t,9:s,11:i,13:n},{1:[2,2]},{4:17,5:a,7:13,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},e(r,[2,4]),e(r,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:a,7:42,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:43,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:44,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:45,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:46,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:47,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:48,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:49,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:50,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:E,43:p,44:R,45:d,46:_,54:f,72:g,74:S,77:I,89:b,90:T},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(k,[2,17]),e(k,[2,18]),e(k,[2,19]),e(k,[2,20]),{30:60,33:62,75:N,89:b,90:T},{30:63,33:62,75:N,89:b,90:T},{30:64,33:62,75:N,89:b,90:T},e(q,[2,29]),e(q,[2,30]),e(q,[2,31]),e(q,[2,32]),e(q,[2,33]),e(q,[2,34]),e(C,[2,81]),e(C,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(A,[2,79]),e(A,[2,80]),{27:[1,67],29:[1,68]},e(A,[2,85]),e(A,[2,86]),{62:69,65:v,66:L,67:O,68:w,69:D,70:x,71:M},{62:77,65:v,66:L,67:O,68:w,69:D,70:x,71:M},{30:78,33:62,75:N,89:b,90:T},{73:79,75:$,76:F,78:81,79:82,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W},e(j,[2,60]),e(j,[2,62]),{73:93,75:$,76:F,78:81,79:82,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W},{30:94,33:62,75:N,76:F,89:b,90:T},{5:[1,95]},{30:96,33:62,75:N,89:b,90:T},{5:[1,97]},{30:98,33:62,75:N,89:b,90:T},{63:[1,99]},e(G,[2,50]),e(G,[2,51]),e(G,[2,52]),e(G,[2,53]),e(G,[2,54]),e(G,[2,55]),e(G,[2,56]),{64:[1,100]},e(k,[2,59],{76:F}),e(k,[2,64],{76:z}),{33:103,75:[1,102],89:b,90:T},e(X,[2,65],{79:104,75:$,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W}),e(J,[2,67]),e(J,[2,69]),e(J,[2,70]),e(J,[2,71]),e(J,[2,72]),e(J,[2,73]),e(J,[2,74]),e(J,[2,75]),e(J,[2,76]),e(J,[2,77]),e(J,[2,78]),e(k,[2,57],{76:z}),e(k,[2,58],{76:F}),{5:Z,28:105,31:ee,34:te,36:se,38:ie,40:ne},{27:[1,112],76:F},{5:re,40:ae,56:113,57:le,59:ce},{27:[1,118],76:F},{33:119,89:b,90:T},{33:120,89:b,90:T},{75:$,78:121,79:82,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W},e(j,[2,61]),e(j,[2,63]),e(J,[2,68]),e(k,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Z,28:126,31:ee,34:te,36:se,38:ie,40:ne},e(k,[2,28]),{5:[1,127]},e(k,[2,42]),{32:[1,128]},{32:[1,129]},{5:re,40:ae,56:130,57:le,59:ce},e(k,[2,47]),{5:[1,131]},e(k,[2,48]),e(k,[2,49]),e(X,[2,66],{79:104,75:$,80:K,81:P,82:U,83:V,84:Y,85:B,86:Q,87:H,88:W}),{33:132,89:b,90:T},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(k,[2,27]),{5:Z,28:145,31:ee,34:te,36:se,38:ie,40:ne},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(k,[2,46]),{5:re,40:ae,56:152,57:le,59:ce},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(k,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(k,[2,43]),{5:Z,28:159,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:160,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:161,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:162,31:ee,34:te,36:se,38:ie,40:ne},{5:re,40:ae,56:163,57:le,59:ce},{5:re,40:ae,56:164,57:le,59:ce},e(k,[2,23]),e(k,[2,24]),e(k,[2,25]),e(k,[2,26]),e(k,[2,44]),e(k,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:(0,c.K2)(function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)},"parseError"),parse:(0,c.K2)(function(e){var t=this,s=[0],i=[],n=[null],r=[],a=this.table,l="",o=0,h=0,u=0,y=r.slice.call(arguments,1),m=Object.create(this.lexer),E={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(E.yy[p]=this.yy[p]);m.setInput(e,E.yy),E.yy.lexer=m,E.yy.parser=this,void 0===m.yylloc&&(m.yylloc={});var R=m.yylloc;r.push(R);var d=m.options&&m.options.ranges;function _(){var e;return"number"!=typeof(e=i.pop()||m.lex()||1)&&(e instanceof Array&&(e=(i=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof E.yy.parseError?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)(function(e){s.length=s.length-2*e,n.length=n.length-e,r.length=r.length-e},"popStack"),(0,c.K2)(_,"lex");for(var f,g,S,I,b,T,k,N,q,C={};;){if(S=s[s.length-1],this.defaultActions[S]?I=this.defaultActions[S]:(null==f&&(f=_()),I=a[S]&&a[S][f]),void 0===I||!I.length||!I[0]){var A="";for(T in q=[],a[S])this.terminals_[T]&&T>2&&q.push("'"+this.terminals_[T]+"'");A=m.showPosition?"Parse error on line "+(o+1)+":\n"+m.showPosition()+"\nExpecting "+q.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(A,{text:m.match,token:this.terminals_[f]||f,line:m.yylineno,loc:R,expected:q})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+f);switch(I[0]){case 1:s.push(f),n.push(m.yytext),r.push(m.yylloc),s.push(I[1]),f=null,g?(f=g,g=null):(h=m.yyleng,l=m.yytext,o=m.yylineno,R=m.yylloc,u>0&&u--);break;case 2:if(k=this.productions_[I[1]][1],C.$=n[n.length-k],C._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},d&&(C._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[l,h,o,E.yy,I[1],n,r].concat(y))))return b;k&&(s=s.slice(0,-1*k*2),n=n.slice(0,-1*k),r=r.slice(0,-1*k)),s.push(this.productions_[I[1]][0]),n.push(C.$),r.push(C._$),N=a[s[s.length-2]][s[s.length-1]],s.push(N);break;case 3:return!0}}return!0},"parse")},he=function(){return{EOF:1,parseError:(0,c.K2)(function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},"parseError"),setInput:(0,c.K2)(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,c.K2)(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},"input"),unput:(0,c.K2)(function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},"unput"),more:(0,c.K2)(function(){return this._more=!0,this},"more"),reject:(0,c.K2)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,c.K2)(function(e){this.unput(this.match.slice(e))},"less"),pastInput:(0,c.K2)(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,c.K2)(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,c.K2)(function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},"showPosition"),test_match:(0,c.K2)(function(e,t){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},"test_match"),next:(0,c.K2)(function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if((s=this._input.match(this.rules[n[r]]))&&(!t||s[0].length>t[0].length)){if(t=s,i=r,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,n[r])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,n[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,c.K2)(function(){var e=this.next();return e||this.lex()},"lex"),begin:(0,c.K2)(function(e){this.conditionStack.push(e)},"begin"),popState:(0,c.K2)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,c.K2)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,c.K2)(function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},"topState"),pushState:(0,c.K2)(function(e){this.begin(e)},"pushState"),stateStackSize:(0,c.K2)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)(function(e,t,s,i){switch(s){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 58:case 65:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:case 14:case 15:case 56:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;case 50:case 68:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 57:case 64:this.begin("string");break;case 59:return this.begin("style"),72;case 60:return this.begin("style"),74;case 61:return 61;case 62:return 64;case 63:return 63;case 66:return"qString";case 67:return t.yytext=t.yytext.trim(),89;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}}}();function ue(){this.yy={}}return oe.lexer=he,(0,c.K2)(ue,"Parser"),ue.prototype=oe,oe.Parser=ue,new ue}();o.parser=o;var h=o,u=class{constructor(){this.relations=[],this.latestRequirement=this.getInitialRequirement(),this.requirements=new Map,this.latestElement=this.getInitialElement(),this.elements=new Map,this.classes=new Map,this.direction="TB",this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},this.setAccTitle=l.SV,this.getAccTitle=l.iN,this.setAccDescription=l.EI,this.getAccDescription=l.m7,this.setDiagramTitle=l.ke,this.getDiagramTitle=l.ab,this.getConfig=(0,c.K2)(()=>(0,l.D7)().requirement,"getConfig"),this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,c.K2)(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,t){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:t,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){void 0!==this.latestRequirement&&(this.latestRequirement.requirementId=e)}setNewReqText(e){void 0!==this.latestRequirement&&(this.latestRequirement.text=e)}setNewReqRisk(e){void 0!==this.latestRequirement&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){void 0!==this.latestRequirement&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),c.Rm.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){void 0!==this.latestElement&&(this.latestElement.type=e)}setNewElementDocRef(e){void 0!==this.latestElement&&(this.latestElement.docRef=e)}addRelationship(e,t,s){this.relations.push({type:e,src:t,dst:s})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,(0,l.IU)()}setCssStyle(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(!t||!e)return;for(const s of t)s.includes(",")?e.cssStyles.push(...s.split(",")):e.cssStyles.push(s)}}setClass(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(e)for(const s of t){e.classes.push(s);const t=this.classes.get(s)?.styles;t&&e.cssStyles.push(...t)}}}defineClass(e,t){for(const s of e){let e=this.classes.get(s);void 0===e&&(e={id:s,styles:[],textStyles:[]},this.classes.set(s,e)),t&&t.forEach(function(t){if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)}),this.requirements.forEach(e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap(e=>e.split(",")))}),this.elements.forEach(e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap(e=>e.split(",")))})}}getClasses(){return this.classes}getData(){const e=(0,l.D7)(),t=[],s=[];for(const i of this.requirements.values()){const s=i;s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),s.shape="requirementBox",s.look=e.look,t.push(s)}for(const i of this.elements.values()){const s=i;s.shape="requirementBox",s.look=e.look,s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),t.push(s)}for(const i of this.relations){let t=0;const n=i.type===this.Relationships.CONTAINS,r={id:`${i.src}-${i.dst}-${t}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",n?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:n?"normal":"dashed",arrowTypeStart:n?"requirement_contains":"",arrowTypeEnd:n?"":"requirement_arrow",look:e.look};s.push(r),t++}return{nodes:t,edges:s,other:{},config:e,direction:this.getDirection()}}},y=(0,c.K2)(e=>`\n\n marker {\n fill: ${e.relationColor};\n stroke: ${e.relationColor};\n }\n\n marker.cross {\n stroke: ${e.lineColor};\n }\n\n svg {\n font-family: ${e.fontFamily};\n font-size: ${e.fontSize};\n }\n\n .reqBox {\n fill: ${e.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${e.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${e.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${e.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${e.relationLabelColor};\n }\n .divider {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n }\n .label {\n font-family: ${e.fontFamily};\n color: ${e.nodeTextColor||e.textColor};\n }\n .label text,span {\n fill: ${e.nodeTextColor||e.textColor};\n color: ${e.nodeTextColor||e.textColor};\n }\n .labelBkg {\n background-color: ${e.edgeLabelBackground};\n }\n\n`,"getStyles"),m={};(0,c.VA)(m,{draw:()=>E});var E=(0,c.K2)(async function(e,t,s,o){c.Rm.info("REF0:"),c.Rm.info("Drawing requirement diagram (unified)",t);const{securityLevel:h,state:u,layout:y}=(0,l.D7)(),m=o.db.getData(),E=(0,i.A)(t,h);m.type=o.type,m.layoutAlgorithm=(0,r.q7)(y),m.nodeSpacing=u?.nodeSpacing??50,m.rankSpacing=u?.rankSpacing??50,m.markers=["requirement_contains","requirement_arrow"],m.diagramId=t,await(0,r.XX)(m,E);a._K.insertTitle(E,"requirementDiagramTitleText",u?.titleTopMargin??25,o.db.getDiagramTitle()),(0,n.P)(E,8,"requirementDiagram",u?.useMaxWidth??!0)},"draw"),p={parser:h,get db(){return new u},renderer:m,styles:y}}}]); \ No newline at end of file diff --git a/user/assets/js/9278.e08dee76.js b/user/assets/js/9278.e08dee76.js new file mode 100644 index 0000000..3116400 --- /dev/null +++ b/user/assets/js/9278.e08dee76.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[9278],{9278:(s,l,u)=>{u.r(l)}}]); \ No newline at end of file diff --git a/user/assets/js/9412.13820b1c.js b/user/assets/js/9412.13820b1c.js new file mode 100644 index 0000000..f5c6cdf --- /dev/null +++ b/user/assets/js/9412.13820b1c.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[9412],{5871:(e,t,a)=>{function i(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}a.d(t,{S:()=>i}),(0,a(797).K2)(i,"populateCommonDb")},9412:(e,t,a)=>{a.d(t,{diagram:()=>C});var i=a(3590),l=a(5871),n=a(3226),r=a(7633),s=a(797),o=a(8731),c=a(451),p=r.UI.pie,d={sections:new Map,showData:!1,config:p},u=d.sections,g=d.showData,h=structuredClone(p),f=(0,s.K2)(()=>structuredClone(h),"getConfig"),m=(0,s.K2)(()=>{u=new Map,g=d.showData,(0,r.IU)()},"clear"),w=(0,s.K2)(({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invalid value: ${t}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);u.has(e)||(u.set(e,t),s.Rm.debug(`added new section: ${e}, with value: ${t}`))},"addSection"),S=(0,s.K2)(()=>u,"getSections"),x=(0,s.K2)(e=>{g=e},"setShowData"),D=(0,s.K2)(()=>g,"getShowData"),T={getConfig:f,clear:m,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:w,getSections:S,setShowData:x,getShowData:D},$=(0,s.K2)((e,t)=>{(0,l.S)(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)},"populateDb"),b={parse:(0,s.K2)(async e=>{const t=await(0,o.qg)("pie",e);s.Rm.debug(t),$(t,T)},"parse")},v=(0,s.K2)(e=>`\n .pieCircle{\n stroke: ${e.pieStrokeColor};\n stroke-width : ${e.pieStrokeWidth};\n opacity : ${e.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${e.pieOuterStrokeColor};\n stroke-width: ${e.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${e.pieTitleTextSize};\n fill: ${e.pieTitleTextColor};\n font-family: ${e.fontFamily};\n }\n .slice {\n font-family: ${e.fontFamily};\n fill: ${e.pieSectionTextColor};\n font-size:${e.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${e.pieLegendTextColor};\n font-family: ${e.fontFamily};\n font-size: ${e.pieLegendTextSize};\n }\n`,"getStyles"),y=(0,s.K2)(e=>{const t=[...e.values()].reduce((e,t)=>e+t,0),a=[...e.entries()].map(([e,t])=>({label:e,value:t})).filter(e=>e.value/t*100>=1).sort((e,t)=>t.value-e.value);return(0,c.rLf)().value(e=>e.value)(a)},"createPieArcs"),C={parser:b,db:T,renderer:{draw:(0,s.K2)((e,t,a,l)=>{s.Rm.debug("rendering pie chart\n"+e);const o=l.db,p=(0,r.D7)(),d=(0,n.$t)(o.getConfig(),p.pie),u=18,g=450,h=g,f=(0,i.D)(t),m=f.append("g");m.attr("transform","translate(225,225)");const{themeVariables:w}=p;let[S]=(0,n.I5)(w.pieOuterStrokeWidth);S??=2;const x=d.textPosition,D=Math.min(h,g)/2-40,T=(0,c.JLW)().innerRadius(0).outerRadius(D),$=(0,c.JLW)().innerRadius(D*x).outerRadius(D*x);m.append("circle").attr("cx",0).attr("cy",0).attr("r",D+S/2).attr("class","pieOuterCircle");const b=o.getSections(),v=y(b),C=[w.pie1,w.pie2,w.pie3,w.pie4,w.pie5,w.pie6,w.pie7,w.pie8,w.pie9,w.pie10,w.pie11,w.pie12];let k=0;b.forEach(e=>{k+=e});const A=v.filter(e=>"0"!==(e.data.value/k*100).toFixed(0)),K=(0,c.UMr)(C);m.selectAll("mySlices").data(A).enter().append("path").attr("d",T).attr("fill",e=>K(e.data.label)).attr("class","pieCircle"),m.selectAll("mySlices").data(A).enter().append("text").text(e=>(e.data.value/k*100).toFixed(0)+"%").attr("transform",e=>"translate("+$.centroid(e)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(o.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");const R=[...b.entries()].map(([e,t])=>({label:e,value:t})),z=m.selectAll(".legend").data(R).enter().append("g").attr("class","legend").attr("transform",(e,t)=>"translate(216,"+(22*t-22*R.length/2)+")");z.append("rect").attr("width",u).attr("height",u).style("fill",e=>K(e.label)).style("stroke",e=>K(e.label)),z.append("text").attr("x",22).attr("y",14).text(e=>o.getShowData()?`${e.label} [${e.value}]`:e.label);const M=512+Math.max(...z.selectAll("text").nodes().map(e=>e?.getBoundingClientRect().width??0));f.attr("viewBox",`0 0 ${M} 450`),(0,r.a$)(f,g,M,d.useMaxWidth)},"draw")},styles:v}}}]); \ No newline at end of file diff --git a/user/assets/js/9510.8d35fea2.js b/user/assets/js/9510.8d35fea2.js new file mode 100644 index 0000000..8a4fe4a --- /dev/null +++ b/user/assets/js/9510.8d35fea2.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[9510],{9510:(s,r,e)=>{e.d(r,{diagram:()=>t});var a=e(1746),l=(e(2501),e(9625),e(1152),e(45),e(5164),e(8698),e(5894),e(3245),e(2387),e(92),e(3226),e(7633),e(797)),t={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,l.K2)(s=>{s.class||(s.class={}),s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute},"init")}}}]); \ No newline at end of file diff --git a/user/assets/js/96022abb.75270f4d.js b/user/assets/js/96022abb.75270f4d.js new file mode 100644 index 0000000..8b7e523 --- /dev/null +++ b/user/assets/js/96022abb.75270f4d.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[1887],{4744:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"dynamic-icons","title":"Dynamic Icons","description":"Many sensors in the Tibber Prices integration automatically change their icon based on their current state. This provides instant visual feedback about price levels, trends, and periods without needing to read the actual values.","source":"@site/docs/dynamic-icons.md","sourceDirName":".","slug":"/dynamic-icons","permalink":"/hass.tibber_prices/user/dynamic-icons","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/dynamic-icons.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Period Calculation","permalink":"/hass.tibber_prices/user/period-calculation"},"next":{"title":"Dynamic Icon Colors","permalink":"/hass.tibber_prices/user/icon-colors"}}');var r=i(4848),t=i(8453);const o={},c="Dynamic Icons",a={},l=[{value:"What are Dynamic Icons?",id:"what-are-dynamic-icons",level:2},{value:"How to Check if a Sensor Has Dynamic Icons",id:"how-to-check-if-a-sensor-has-dynamic-icons",level:2},{value:"Using Dynamic Icons in Your Dashboard",id:"using-dynamic-icons-in-your-dashboard",level:2},{value:"Standard Entity Cards",id:"standard-entity-cards",level:3},{value:"Glance Card",id:"glance-card",level:3},{value:"Custom Button Card",id:"custom-button-card",level:3},{value:"Mushroom Entity Card",id:"mushroom-entity-card",level:3},{value:"Overriding Dynamic Icons",id:"overriding-dynamic-icons",level:2},{value:"In Entity Cards",id:"in-entity-cards",level:3},{value:"In Custom Button Card",id:"in-custom-button-card",level:3},{value:"Combining with Dynamic Colors",id:"combining-with-dynamic-colors",level:2},{value:"Icon Behavior Details",id:"icon-behavior-details",level:2},{value:"Binary Sensors",id:"binary-sensors",level:3},{value:"State-Based Icons",id:"state-based-icons",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"See Also",id:"see-also",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"dynamic-icons",children:"Dynamic Icons"})}),"\n",(0,r.jsx)(n.p,{children:"Many sensors in the Tibber Prices integration automatically change their icon based on their current state. This provides instant visual feedback about price levels, trends, and periods without needing to read the actual values."}),"\n",(0,r.jsx)(n.h2,{id:"what-are-dynamic-icons",children:"What are Dynamic Icons?"}),"\n",(0,r.jsx)(n.p,{children:"Instead of having a fixed icon, some sensors update their icon to reflect their current state:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Price level sensors"})," show different cash/money icons depending on whether prices are cheap or expensive"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Price rating sensors"})," show thumbs up/down based on how the current price compares to average"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Volatility sensors"})," show different chart types based on price stability"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Binary sensors"})," show different icons when ON vs OFF (e.g., piggy bank when in best price period)"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The icons change automatically - no configuration needed!"}),"\n",(0,r.jsx)(n.h2,{id:"how-to-check-if-a-sensor-has-dynamic-icons",children:"How to Check if a Sensor Has Dynamic Icons"}),"\n",(0,r.jsx)(n.p,{children:"To see which icon a sensor currently uses:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Go to ",(0,r.jsx)(n.strong,{children:"Developer Tools"})," \u2192 ",(0,r.jsx)(n.strong,{children:"States"})," in Home Assistant"]}),"\n",(0,r.jsxs)(n.li,{children:["Search for your sensor (e.g., ",(0,r.jsx)(n.code,{children:"sensor.tibber_home_current_interval_price_level"}),")"]}),"\n",(0,r.jsx)(n.li,{children:"Look at the icon displayed in the entity row"}),"\n",(0,r.jsx)(n.li,{children:"Change conditions (wait for price changes) and check if the icon updates"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Common sensor types with dynamic icons:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Price level sensors (e.g., ",(0,r.jsx)(n.code,{children:"current_interval_price_level"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Price rating sensors (e.g., ",(0,r.jsx)(n.code,{children:"current_interval_price_rating"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Volatility sensors (e.g., ",(0,r.jsx)(n.code,{children:"volatility_today"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:["Binary sensors (e.g., ",(0,r.jsx)(n.code,{children:"best_price_period"}),", ",(0,r.jsx)(n.code,{children:"peak_price_period"}),")"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"using-dynamic-icons-in-your-dashboard",children:"Using Dynamic Icons in Your Dashboard"}),"\n",(0,r.jsx)(n.h3,{id:"standard-entity-cards",children:"Standard Entity Cards"}),"\n",(0,r.jsx)(n.p,{children:"Dynamic icons work automatically in standard Home Assistant cards:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"type: entities\nentities:\n - entity: sensor.tibber_home_current_interval_price_level\n - entity: sensor.tibber_home_current_interval_price_rating\n - entity: sensor.tibber_home_volatility_today\n - entity: binary_sensor.tibber_home_best_price_period\n"})}),"\n",(0,r.jsx)(n.p,{children:"The icons will update automatically as the sensor states change."}),"\n",(0,r.jsx)(n.h3,{id:"glance-card",children:"Glance Card"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"type: glance\nentities:\n - entity: sensor.tibber_home_current_interval_price_level\n name: Price Level\n - entity: sensor.tibber_home_current_interval_price_rating\n name: Rating\n - entity: binary_sensor.tibber_home_best_price_period\n name: Best Price\n"})}),"\n",(0,r.jsx)(n.h3,{id:"custom-button-card",children:"Custom Button Card"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_current_interval_price_level\nname: Current Price Level\nshow_state: true\n# Icon updates automatically - no need to specify it!\n"})}),"\n",(0,r.jsx)(n.h3,{id:"mushroom-entity-card",children:"Mushroom Entity Card"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"type: custom:mushroom-entity-card\nentity: sensor.tibber_home_volatility_today\nname: Price Volatility\n# Icon changes automatically based on volatility level\n"})}),"\n",(0,r.jsx)(n.h2,{id:"overriding-dynamic-icons",children:"Overriding Dynamic Icons"}),"\n",(0,r.jsx)(n.p,{children:"If you want to use a fixed icon instead of the dynamic one:"}),"\n",(0,r.jsx)(n.h3,{id:"in-entity-cards",children:"In Entity Cards"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"type: entities\nentities:\n - entity: sensor.tibber_home_current_interval_price_level\n icon: mdi:lightning-bolt # Fixed icon, won't change\n"})}),"\n",(0,r.jsx)(n.h3,{id:"in-custom-button-card",children:"In Custom Button Card"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_current_interval_price_rating\nname: Price Rating\nicon: mdi:chart-line # Fixed icon overrides dynamic behavior\nshow_state: true\n"})}),"\n",(0,r.jsx)(n.h2,{id:"combining-with-dynamic-colors",children:"Combining with Dynamic Colors"}),"\n",(0,r.jsxs)(n.p,{children:["Dynamic icons work great together with dynamic colors! See the ",(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"/hass.tibber_prices/user/icon-colors",children:"Dynamic Icon Colors Guide"})})," for examples."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example: Dynamic icon AND color"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_current_interval_price_level\nname: Current Price\nshow_state: true\n# Icon changes automatically (cheap/expensive cash icons)\nstyles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n"})}),"\n",(0,r.jsx)(n.p,{children:"This gives you both:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"\u2705 Different icon based on state (e.g., cash-plus when cheap, cash-remove when expensive)"}),"\n",(0,r.jsx)(n.li,{children:"\u2705 Different color based on state (e.g., green when cheap, red when expensive)"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"icon-behavior-details",children:"Icon Behavior Details"}),"\n",(0,r.jsx)(n.h3,{id:"binary-sensors",children:"Binary Sensors"}),"\n",(0,r.jsx)(n.p,{children:"Binary sensors may have different icons for different states:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ON state"}),": Typically shows an active/alert icon"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"OFF state"}),": May show different icons depending on whether future periods exist","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Has upcoming periods: Timer/waiting icon"}),"\n",(0,r.jsx)(n.li,{children:"No upcoming periods: Sleep/inactive icon"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Example:"})," ",(0,r.jsx)(n.code,{children:"binary_sensor.tibber_home_best_price_period"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"When ON: Shows a piggy bank (good time to save money)"}),"\n",(0,r.jsx)(n.li,{children:"When OFF with future periods: Shows a timer (waiting for next period)"}),"\n",(0,r.jsx)(n.li,{children:"When OFF without future periods: Shows a sleep icon (no periods expected soon)"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"state-based-icons",children:"State-Based Icons"}),"\n",(0,r.jsxs)(n.p,{children:["Sensors with text states (like ",(0,r.jsx)(n.code,{children:"cheap"}),", ",(0,r.jsx)(n.code,{children:"normal"}),", ",(0,r.jsx)(n.code,{children:"expensive"}),") typically show icons that match the meaning:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Lower/better values \u2192 More positive icons"}),"\n",(0,r.jsx)(n.li,{children:"Higher/worse values \u2192 More cautionary icons"}),"\n",(0,r.jsx)(n.li,{children:"Normal/average values \u2192 Neutral icons"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"The exact icons are chosen to be intuitive and meaningful in the Home Assistant ecosystem."}),"\n",(0,r.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Icon not changing:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Wait for the sensor state to actually change (prices update every 15 minutes)"}),"\n",(0,r.jsx)(n.li,{children:"Check in Developer Tools \u2192 States that the sensor state is changing"}),"\n",(0,r.jsx)(n.li,{children:"If you've set a custom icon in your card, it will override the dynamic icon"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Want to see the icon code:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Look at the entity in Developer Tools \u2192 States"}),"\n",(0,r.jsxs)(n.li,{children:["The ",(0,r.jsx)(n.code,{children:"icon"})," attribute shows the current Material Design icon code (e.g., ",(0,r.jsx)(n.code,{children:"mdi:cash-plus"}),")"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Want different icons:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"You can override icons in your card configuration (see examples above)"}),"\n",(0,r.jsx)(n.li,{children:"Or create a template sensor with your own icon logic"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"see-also",children:"See Also"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/hass.tibber_prices/user/icon-colors",children:"Dynamic Icon Colors"})," - Color your icons based on state"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/hass.tibber_prices/user/sensors",children:"Sensors Reference"})," - Complete list of available sensors"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"/hass.tibber_prices/user/automation-examples",children:"Automation Examples"})," - Use dynamic icons in automations"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/9c889300.5ac661e2.js b/user/assets/js/9c889300.5ac661e2.js new file mode 100644 index 0000000..3784b0b --- /dev/null +++ b/user/assets/js/9c889300.5ac661e2.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[9423],{8438:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>a});const o=JSON.parse('{"id":"icon-colors","title":"Dynamic Icon Colors","description":"Many sensors in the Tibber Prices integration provide an icon_color attribute that allows you to dynamically color elements in your dashboard based on the sensor\'s state. This is particularly useful for visual dashboards where you want instant recognition of price levels or states.","source":"@site/docs/icon-colors.md","sourceDirName":".","slug":"/icon-colors","permalink":"/hass.tibber_prices/user/icon-colors","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/icon-colors.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Dynamic Icons","permalink":"/hass.tibber_prices/user/dynamic-icons"},"next":{"title":"Actions (Services)","permalink":"/hass.tibber_prices/user/actions"}}');var t=r(4848),s=r(8453);const i={comments:!1},c="Dynamic Icon Colors",l={},a=[{value:"What is icon_color?",id:"what-is-icon_color",level:2},{value:"Why CSS Variables?",id:"why-css-variables",level:3},{value:"Which Sensors Support icon_color?",id:"which-sensors-support-icon_color",level:2},{value:"When to Use icon_color vs. State Value",id:"when-to-use-icon_color-vs-state-value",level:2},{value:"How to Use icon_color in Your Dashboard",id:"how-to-use-icon_color-in-your-dashboard",level:2},{value:"Method 1: Custom Button Card (Recommended)",id:"method-1-custom-button-card-recommended",level:3},{value:"Method 2: Entities Card with card_mod",id:"method-2-entities-card-with-card_mod",level:3},{value:"Method 3: Mushroom Cards",id:"method-3-mushroom-cards",level:3},{value:"Method 4: Glance Card with card_mod",id:"method-4-glance-card-with-card_mod",level:3},{value:"Complete Dashboard Example",id:"complete-dashboard-example",level:2},{value:"CSS Color Variables",id:"css-color-variables",level:2},{value:"Using Custom Colors",id:"using-custom-colors",level:3},{value:"Option 1: Use icon_color but Override in Your Theme",id:"option-1-use-icon_color-but-override-in-your-theme",level:4},{value:"Option 2: Interpret State Value Directly",id:"option-2-interpret-state-value-directly",level:4},{value:"Which Approach Should You Use?",id:"which-approach-should-you-use",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"See Also",id:"see-also",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"dynamic-icon-colors",children:"Dynamic Icon Colors"})}),"\n",(0,t.jsxs)(n.p,{children:["Many sensors in the Tibber Prices integration provide an ",(0,t.jsx)(n.code,{children:"icon_color"})," attribute that allows you to dynamically color elements in your dashboard based on the sensor's state. This is particularly useful for visual dashboards where you want instant recognition of price levels or states."]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"What makes icon_color special:"})," Instead of writing complex if/else logic to interpret the sensor state, you can simply use the ",(0,t.jsx)(n.code,{children:"icon_color"})," value directly - it already contains the appropriate CSS color variable for the current state."]}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Related:"})," Many sensors also automatically change their ",(0,t.jsx)(n.strong,{children:"icon"})," based on state. See the ",(0,t.jsx)(n.strong,{children:(0,t.jsx)(n.a,{href:"/hass.tibber_prices/user/dynamic-icons",children:"Dynamic Icons Guide"})})," for details."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"what-is-icon_color",children:"What is icon_color?"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"icon_color"})," attribute contains a ",(0,t.jsx)(n.strong,{children:"CSS variable name"})," (not a direct color value) that changes based on the sensor's state. For example:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Price level sensors"}),": ",(0,t.jsx)(n.code,{children:"var(--success-color)"})," for cheap, ",(0,t.jsx)(n.code,{children:"var(--error-color)"})," for expensive"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Binary sensors"}),": ",(0,t.jsx)(n.code,{children:"var(--success-color)"})," when in best price period, ",(0,t.jsx)(n.code,{children:"var(--error-color)"})," during peak price"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Volatility"}),": ",(0,t.jsx)(n.code,{children:"var(--success-color)"})," for low volatility, ",(0,t.jsx)(n.code,{children:"var(--error-color)"})," for very high"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"why-css-variables",children:"Why CSS Variables?"}),"\n",(0,t.jsxs)(n.p,{children:["Using CSS variables like ",(0,t.jsx)(n.code,{children:"var(--success-color)"})," instead of hardcoded colors (like ",(0,t.jsx)(n.code,{children:"#00ff00"}),") has important advantages:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\u2705 ",(0,t.jsx)(n.strong,{children:"Automatic theme adaptation"})," - Colors change with light/dark mode"]}),"\n",(0,t.jsxs)(n.li,{children:["\u2705 ",(0,t.jsx)(n.strong,{children:"Consistent with your theme"})," - Uses your theme's color scheme"]}),"\n",(0,t.jsxs)(n.li,{children:["\u2705 ",(0,t.jsx)(n.strong,{children:"Future-proof"})," - Works with custom themes and future HA updates"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["You can use the ",(0,t.jsx)(n.code,{children:"icon_color"})," attribute directly in your card templates, or interpret the sensor state yourself if you prefer custom colors (see examples below)."]}),"\n",(0,t.jsx)(n.h2,{id:"which-sensors-support-icon_color",children:"Which Sensors Support icon_color?"}),"\n",(0,t.jsxs)(n.p,{children:["Many sensors provide the ",(0,t.jsx)(n.code,{children:"icon_color"})," attribute for dynamic styling. To see if a sensor has this attribute:"]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Go to ",(0,t.jsx)(n.strong,{children:"Developer Tools"})," \u2192 ",(0,t.jsx)(n.strong,{children:"States"})," in Home Assistant"]}),"\n",(0,t.jsxs)(n.li,{children:["Search for your sensor (e.g., ",(0,t.jsx)(n.code,{children:"sensor.tibber_home_current_interval_price_level"}),")"]}),"\n",(0,t.jsxs)(n.li,{children:["Look for ",(0,t.jsx)(n.code,{children:"icon_color"})," in the attributes section"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Common sensor types with icon_color:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Price level sensors (e.g., ",(0,t.jsx)(n.code,{children:"current_interval_price_level"}),")"]}),"\n",(0,t.jsxs)(n.li,{children:["Price rating sensors (e.g., ",(0,t.jsx)(n.code,{children:"current_interval_price_rating"}),")"]}),"\n",(0,t.jsxs)(n.li,{children:["Volatility sensors (e.g., ",(0,t.jsx)(n.code,{children:"volatility_today"}),")"]}),"\n",(0,t.jsxs)(n.li,{children:["Price trend sensors (e.g., ",(0,t.jsx)(n.code,{children:"price_trend_next_3h"}),")"]}),"\n",(0,t.jsxs)(n.li,{children:["Binary sensors (e.g., ",(0,t.jsx)(n.code,{children:"best_price_period"}),", ",(0,t.jsx)(n.code,{children:"peak_price_period"}),")"]}),"\n",(0,t.jsxs)(n.li,{children:["Timing sensors (e.g., ",(0,t.jsx)(n.code,{children:"best_price_time_until_start"}),", ",(0,t.jsx)(n.code,{children:"best_price_progress"}),")"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"The colors adapt to the sensor's state - cheaper prices typically show green, expensive prices red, and neutral states gray."}),"\n",(0,t.jsx)(n.h2,{id:"when-to-use-icon_color-vs-state-value",children:"When to Use icon_color vs. State Value"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsxs)(n.strong,{children:["Use ",(0,t.jsx)(n.code,{children:"icon_color"})," when:"]})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"\u2705 You can apply the CSS variable directly (icons, text colors, borders)"}),"\n",(0,t.jsx)(n.li,{children:"\u2705 Your card supports CSS variable substitution"}),"\n",(0,t.jsx)(n.li,{children:"\u2705 You want simple, clean code without if/else logic"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Use the state value directly when:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"\u26a0\ufe0f You need to convert the color (e.g., CSS variable \u2192 RGBA with transparency)"}),"\n",(0,t.jsxs)(n.li,{children:["\u26a0\ufe0f You need different colors than what ",(0,t.jsx)(n.code,{children:"icon_color"})," provides"]}),"\n",(0,t.jsx)(n.li,{children:"\u26a0\ufe0f You're building complex conditional logic anyway"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Example of when NOT to use icon_color:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"# \u274c DON'T: Converting icon_color requires if/else anyway\ncard:\n - background: |\n [[[\n const color = entity.attributes.icon_color;\n if (color === 'var(--success-color)') return 'rgba(76, 175, 80, 0.1)';\n if (color === 'var(--error-color)') return 'rgba(244, 67, 54, 0.1)';\n // ... more if statements\n ]]]\n\n# \u2705 DO: Interpret state directly if you need custom logic\ncard:\n - background: |\n [[[\n const level = entity.state;\n if (level === 'very_cheap' || level === 'cheap') return 'rgba(76, 175, 80, 0.1)';\n if (level === 'very_expensive' || level === 'expensive') return 'rgba(244, 67, 54, 0.1)';\n return 'transparent';\n ]]]\n"})}),"\n",(0,t.jsxs)(n.p,{children:["The advantage of ",(0,t.jsx)(n.code,{children:"icon_color"})," is simplicity - if you need complex logic, you lose that advantage."]}),"\n",(0,t.jsx)(n.h2,{id:"how-to-use-icon_color-in-your-dashboard",children:"How to Use icon_color in Your Dashboard"}),"\n",(0,t.jsx)(n.h3,{id:"method-1-custom-button-card-recommended",children:"Method 1: Custom Button Card (Recommended)"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsxs)(n.a,{href:"https://github.com/custom-cards/button-card",children:["custom",":button-card"]})," from HACS supports dynamic icon colors."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Example: Icon color only"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_current_interval_price_level\nname: Current Price Level\nshow_state: true\nicon: mdi:cash\nstyles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Example: Icon AND state value with same color"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_current_interval_price_level\nname: Current Price Level\nshow_state: true\nicon: mdi:cash\nstyles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n state:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--primary-text-color)';\n ]]]\n - font-weight: bold\n"})}),"\n",(0,t.jsx)(n.h3,{id:"method-2-entities-card-with-card_mod",children:"Method 2: Entities Card with card_mod"}),"\n",(0,t.jsx)(n.p,{children:"Use Home Assistant's built-in entities card with card_mod for icon and state colors:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: entities\nentities:\n - entity: sensor.tibber_home_current_interval_price_level\ncard_mod:\n style:\n hui-generic-entity-row:\n $: |\n state-badge {\n color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important;\n }\n .info {\n color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important;\n }\n"})}),"\n",(0,t.jsx)(n.h3,{id:"method-3-mushroom-cards",children:"Method 3: Mushroom Cards"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.a,{href:"https://github.com/piitaya/lovelace-mushroom",children:"Mushroom cards"})," support card_mod for icon and text colors:"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Icon color only:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: custom:mushroom-entity-card\nentity: binary_sensor.tibber_home_best_price_period\nname: Best Price Period\nicon: mdi:piggy-bank\ncard_mod:\n style: |\n ha-card {\n --card-mod-icon-color: {{ state_attr('binary_sensor.tibber_home_best_price_period', 'icon_color') }};\n }\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Icon and state value:"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: custom:mushroom-entity-card\nentity: sensor.tibber_home_current_interval_price_level\nname: Price Level\ncard_mod:\n style: |\n ha-card {\n --card-mod-icon-color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }};\n --primary-text-color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }};\n }\n"})}),"\n",(0,t.jsx)(n.h3,{id:"method-4-glance-card-with-card_mod",children:"Method 4: Glance Card with card_mod"}),"\n",(0,t.jsx)(n.p,{children:"Combine multiple sensors with dynamic colors:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: glance\nentities:\n - entity: sensor.tibber_home_current_interval_price_level\n - entity: sensor.tibber_home_volatility_today\n - entity: binary_sensor.tibber_home_best_price_period\ncard_mod:\n style: |\n ha-card div.entity:nth-child(1) state-badge {\n color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important;\n }\n ha-card div.entity:nth-child(2) state-badge {\n color: {{ state_attr('sensor.tibber_home_volatility_today', 'icon_color') }} !important;\n }\n ha-card div.entity:nth-child(3) state-badge {\n color: {{ state_attr('binary_sensor.tibber_home_best_price_period', 'icon_color') }} !important;\n }\n"})}),"\n",(0,t.jsx)(n.h2,{id:"complete-dashboard-example",children:"Complete Dashboard Example"}),"\n",(0,t.jsx)(n.p,{children:"Here's a complete example combining multiple sensors with dynamic colors:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: vertical-stack\ncards:\n # Current price status\n - type: horizontal-stack\n cards:\n - type: custom:button-card\n entity: sensor.tibber_home_current_interval_price_level\n name: Price Level\n show_state: true\n styles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n\n - type: custom:button-card\n entity: sensor.tibber_home_current_interval_price_rating\n name: Price Rating\n show_state: true\n styles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n\n # Binary sensors for periods\n - type: horizontal-stack\n cards:\n - type: custom:button-card\n entity: binary_sensor.tibber_home_best_price_period\n name: Best Price Period\n show_state: true\n icon: mdi:piggy-bank\n styles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n\n - type: custom:button-card\n entity: binary_sensor.tibber_home_peak_price_period\n name: Peak Price Period\n show_state: true\n icon: mdi:alert-circle\n styles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n\n # Volatility and trends\n - type: horizontal-stack\n cards:\n - type: custom:button-card\n entity: sensor.tibber_home_volatility_today\n name: Volatility\n show_state: true\n styles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n\n - type: custom:button-card\n entity: sensor.tibber_home_price_trend_next_3h\n name: Next 3h Trend\n show_state: true\n styles:\n icon:\n - color: |\n [[[\n return entity.attributes.icon_color || 'var(--state-icon-color)';\n ]]]\n"})}),"\n",(0,t.jsx)(n.h2,{id:"css-color-variables",children:"CSS Color Variables"}),"\n",(0,t.jsx)(n.p,{children:"The integration uses Home Assistant's standard CSS variables for theme compatibility:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"var(--success-color)"})," - Green (good/cheap/low)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"var(--info-color)"})," - Blue (informational)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"var(--warning-color)"})," - Orange (caution/expensive)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"var(--error-color)"})," - Red (alert/very expensive/high)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"var(--state-icon-color)"})," - Gray (neutral/normal)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"var(--disabled-color)"})," - Light gray (no data/inactive)"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"These automatically adapt to your theme's light/dark mode and custom color schemes."}),"\n",(0,t.jsx)(n.h3,{id:"using-custom-colors",children:"Using Custom Colors"}),"\n",(0,t.jsx)(n.p,{children:"If you want to override the theme colors with your own, you have two options:"}),"\n",(0,t.jsx)(n.h4,{id:"option-1-use-icon_color-but-override-in-your-theme",children:"Option 1: Use icon_color but Override in Your Theme"}),"\n",(0,t.jsxs)(n.p,{children:["Define custom colors in your theme configuration (",(0,t.jsx)(n.code,{children:"themes.yaml"}),"):"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:'my_custom_theme:\n # Override standard variables\n success-color: "#00C853" # Custom green\n error-color: "#D32F2F" # Custom red\n warning-color: "#F57C00" # Custom orange\n info-color: "#0288D1" # Custom blue\n'})}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"icon_color"})," attribute will automatically use your custom theme colors."]}),"\n",(0,t.jsx)(n.h4,{id:"option-2-interpret-state-value-directly",children:"Option 2: Interpret State Value Directly"}),"\n",(0,t.jsxs)(n.p,{children:["Instead of using ",(0,t.jsx)(n.code,{children:"icon_color"}),", read the sensor state and apply your own colors:"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Example: Custom colors for price level"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_current_interval_price_level\nname: Current Price Level\nshow_state: true\nicon: mdi:cash\nstyles:\n icon:\n - color: |\n [[[\n const level = entity.state;\n if (level === 'very_cheap') return '#00E676'; // Bright green\n if (level === 'cheap') return '#66BB6A'; // Light green\n if (level === 'normal') return '#9E9E9E'; // Gray\n if (level === 'expensive') return '#FF9800'; // Orange\n if (level === 'very_expensive') return '#F44336'; // Red\n return 'var(--state-icon-color)'; // Fallback\n ]]]\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Example: Custom colors for binary sensor"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: binary_sensor.tibber_home_best_price_period\nname: Best Price Period\nshow_state: true\nicon: mdi:piggy-bank\nstyles:\n icon:\n - color: |\n [[[\n // Use state directly, not icon_color\n return entity.state === 'on' ? '#4CAF50' : '#9E9E9E';\n ]]]\n card:\n - background: |\n [[[\n return entity.state === 'on' ? 'rgba(76, 175, 80, 0.1)' : 'transparent';\n ]]]\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Example: Custom colors for volatility"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_volatility_today\nname: Volatility Today\nshow_state: true\nstyles:\n icon:\n - color: |\n [[[\n const volatility = entity.state;\n if (volatility === 'low') return '#4CAF50'; // Green\n if (volatility === 'moderate') return '#2196F3'; // Blue\n if (volatility === 'high') return '#FF9800'; // Orange\n if (volatility === 'very_high') return '#F44336'; // Red\n return 'var(--state-icon-color)';\n ]]]\n"})}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Example: Custom colors for price rating"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_current_interval_price_rating\nname: Price Rating\nshow_state: true\nstyles:\n icon:\n - color: |\n [[[\n const rating = entity.state;\n if (rating === 'low') return '#00C853'; // Dark green\n if (rating === 'normal') return '#78909C'; // Blue-gray\n if (rating === 'high') return '#D32F2F'; // Dark red\n return 'var(--state-icon-color)';\n ]]]\n"})}),"\n",(0,t.jsx)(n.h3,{id:"which-approach-should-you-use",children:"Which Approach Should You Use?"}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Use Case"}),(0,t.jsx)(n.th,{children:"Recommended Approach"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Want theme-consistent colors"}),(0,t.jsxs)(n.td,{children:["\u2705 Use ",(0,t.jsx)(n.code,{children:"icon_color"})," directly"]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Want light/dark mode support"}),(0,t.jsxs)(n.td,{children:["\u2705 Use ",(0,t.jsx)(n.code,{children:"icon_color"})," directly"]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Want custom theme colors"}),(0,t.jsx)(n.td,{children:"\u2705 Override CSS variables in theme"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Want specific hardcoded colors"}),(0,t.jsx)(n.td,{children:"\u26a0\ufe0f Interpret state value directly"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"Multiple themes with different colors"}),(0,t.jsxs)(n.td,{children:["\u2705 Use ",(0,t.jsx)(n.code,{children:"icon_color"})," directly"]})]})]})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Recommendation:"})," Use ",(0,t.jsx)(n.code,{children:"icon_color"})," whenever possible for better theme integration. Only interpret the state directly if you need very specific color values that shouldn't change with themes."]}),"\n",(0,t.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Icons not changing color:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Make sure you're using a card that supports custom styling (like custom",":button-card"," or card_mod)"]}),"\n",(0,t.jsxs)(n.li,{children:["Check that the entity actually has the ",(0,t.jsx)(n.code,{children:"icon_color"})," attribute (inspect in Developer Tools \u2192 States)"]}),"\n",(0,t.jsx)(n.li,{children:"Verify your Home Assistant theme supports the CSS variables"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Colors look wrong:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"The colors are theme-dependent. Try switching themes to see if they appear correctly"}),"\n",(0,t.jsx)(n.li,{children:"Some custom themes may override the standard CSS variables with unexpected colors"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Want different colors?"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"You can override the colors in your theme configuration"}),"\n",(0,t.jsxs)(n.li,{children:["Or use conditional logic in your card templates based on the state value instead of ",(0,t.jsx)(n.code,{children:"icon_color"})]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"see-also",children:"See Also"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"/hass.tibber_prices/user/sensors",children:"Sensors Reference"})," - Complete list of available sensors"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"/hass.tibber_prices/user/automation-examples",children:"Automation Examples"})," - Use color-coded sensors in automations"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"/hass.tibber_prices/user/configuration",children:"Configuration Guide"})," - Adjust thresholds for price levels and ratings"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/9d9f8394.d124aad1.js b/user/assets/js/9d9f8394.d124aad1.js new file mode 100644 index 0000000..ce085df --- /dev/null +++ b/user/assets/js/9d9f8394.d124aad1.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[9013],{7309:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>u,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"troubleshooting","title":"Troubleshooting","description":"Note: This guide is under construction.","source":"@site/docs/troubleshooting.md","sourceDirName":".","slug":"/troubleshooting","permalink":"/hass.tibber_prices/user/troubleshooting","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/troubleshooting.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"FAQ - Frequently Asked Questions","permalink":"/hass.tibber_prices/user/faq"}}');var t=i(4848),o=i(8453);const r={comments:!1},l="Troubleshooting",u={},c=[{value:"Common Issues",id:"common-issues",level:2},{value:"Debug Logging",id:"debug-logging",level:2},{value:"Getting Help",id:"getting-help",level:2}];function h(e){const s={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"troubleshooting",children:"Troubleshooting"})}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:[(0,t.jsx)(s.strong,{children:"Note:"})," This guide is under construction."]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"common-issues",children:"Common Issues"}),"\n",(0,t.jsx)(s.p,{children:"Coming soon..."}),"\n",(0,t.jsx)(s.h2,{id:"debug-logging",children:"Debug Logging"}),"\n",(0,t.jsx)(s.p,{children:"Coming soon..."}),"\n",(0,t.jsx)(s.h2,{id:"getting-help",children:"Getting Help"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["Check ",(0,t.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/issues",children:"existing issues"})]}),"\n",(0,t.jsxs)(s.li,{children:["Open a ",(0,t.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/issues/new",children:"new issue"})," with detailed information"]}),"\n",(0,t.jsx)(s.li,{children:"Include logs, configuration, and steps to reproduce"}),"\n"]})]})}function d(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/9ed00105.02f40c06.js b/user/assets/js/9ed00105.02f40c06.js new file mode 100644 index 0000000..aa1f2f8 --- /dev/null +++ b/user/assets/js/9ed00105.02f40c06.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[3873],{8633:(i,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"configuration","title":"Configuration","description":"Note: This guide is under construction. For now, please refer to the main README for configuration instructions.","source":"@site/docs/configuration.md","sourceDirName":".","slug":"/configuration","permalink":"/hass.tibber_prices/user/configuration","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/configuration.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Installation","permalink":"/hass.tibber_prices/user/installation"},"next":{"title":"Core Concepts","permalink":"/hass.tibber_prices/user/concepts"}}');var s=n(4848),o=n(8453);const r={},a="Configuration",c={},l=[{value:"Initial Setup",id:"initial-setup",level:2},{value:"Configuration Options",id:"configuration-options",level:2},{value:"Price Thresholds",id:"price-thresholds",level:2}];function u(i){const e={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",header:"header",p:"p",strong:"strong",...(0,o.R)(),...i.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.header,{children:(0,s.jsx)(e.h1,{id:"configuration",children:"Configuration"})}),"\n",(0,s.jsxs)(e.blockquote,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"Note:"})," This guide is under construction. For now, please refer to the ",(0,s.jsx)(e.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/README.md",children:"main README"})," for configuration instructions."]}),"\n"]}),"\n",(0,s.jsx)(e.h2,{id:"initial-setup",children:"Initial Setup"}),"\n",(0,s.jsx)(e.p,{children:"Coming soon..."}),"\n",(0,s.jsx)(e.h2,{id:"configuration-options",children:"Configuration Options"}),"\n",(0,s.jsx)(e.p,{children:"Coming soon..."}),"\n",(0,s.jsx)(e.h2,{id:"price-thresholds",children:"Price Thresholds"}),"\n",(0,s.jsx)(e.p,{children:"Coming soon..."})]})}function d(i={}){const{wrapper:e}={...(0,o.R)(),...i.components};return e?(0,s.jsx)(e,{...i,children:(0,s.jsx)(u,{...i})}):u(i)}}}]); \ No newline at end of file diff --git a/user/assets/js/a7456010.88ca9154.js b/user/assets/js/a7456010.88ca9154.js new file mode 100644 index 0000000..d756bb3 --- /dev/null +++ b/user/assets/js/a7456010.88ca9154.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[1235],{8552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/user/assets/js/a7bd4aaa.db239801.js b/user/assets/js/a7bd4aaa.db239801.js new file mode 100644 index 0000000..ddd5b8c --- /dev/null +++ b/user/assets/js/a7bd4aaa.db239801.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[7098],{1723:(n,s,e)=>{e.r(s),e.d(s,{default:()=>d});e(6540);var r=e(5500);function o(n,s){return`docs-${n}-${s}`}var t=e(3025),i=e(2831),c=e(1463),u=e(4848);function l(n){const{version:s}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.A,{version:s.version,tag:o(s.pluginId,s.version)}),(0,u.jsx)(r.be,{children:s.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function a(n){const{version:s,route:e}=n;return(0,u.jsx)(r.e3,{className:s.className,children:(0,u.jsx)(t.n,{version:s,children:(0,i.v)(e.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(l,{...n}),(0,u.jsx)(a,{...n})]})}}}]); \ No newline at end of file diff --git a/user/assets/js/a821f318.803fce84.js b/user/assets/js/a821f318.803fce84.js new file mode 100644 index 0000000..a141853 --- /dev/null +++ b/user/assets/js/a821f318.803fce84.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[5433],{5561:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next \ud83d\udea7","banner":"unreleased","badge":true,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","href":"/hass.tibber_prices/user/intro","label":"User Documentation","docId":"intro","unlisted":false},{"type":"category","label":"\ud83d\ude80 Getting Started","items":[{"type":"link","href":"/hass.tibber_prices/user/installation","label":"Installation","docId":"installation","unlisted":false},{"type":"link","href":"/hass.tibber_prices/user/configuration","label":"Configuration","docId":"configuration","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83d\udcd6 Core Concepts","items":[{"type":"link","href":"/hass.tibber_prices/user/concepts","label":"Core Concepts","docId":"concepts","unlisted":false},{"type":"link","href":"/hass.tibber_prices/user/glossary","label":"Glossary","docId":"glossary","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83d\udcca Features","items":[{"type":"link","href":"/hass.tibber_prices/user/sensors","label":"Sensors","docId":"sensors","unlisted":false},{"type":"link","href":"/hass.tibber_prices/user/period-calculation","label":"Period Calculation","docId":"period-calculation","unlisted":false},{"type":"link","href":"/hass.tibber_prices/user/dynamic-icons","label":"Dynamic Icons","docId":"dynamic-icons","unlisted":false},{"type":"link","href":"/hass.tibber_prices/user/icon-colors","label":"Dynamic Icon Colors","docId":"icon-colors","unlisted":false},{"type":"link","href":"/hass.tibber_prices/user/actions","label":"Actions (Services)","docId":"actions","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83c\udfa8 Visualization","items":[{"type":"link","href":"/hass.tibber_prices/user/dashboard-examples","label":"Dashboard Examples","docId":"dashboard-examples","unlisted":false},{"type":"link","href":"/hass.tibber_prices/user/chart-examples","label":"Chart Examples","docId":"chart-examples","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83e\udd16 Automation","items":[{"type":"link","href":"/hass.tibber_prices/user/automation-examples","label":"Automation Examples","docId":"automation-examples","unlisted":false}],"collapsible":true,"collapsed":false},{"type":"category","label":"\ud83d\udd27 Help & Support","items":[{"type":"link","href":"/hass.tibber_prices/user/faq","label":"FAQ - Frequently Asked Questions","docId":"faq","unlisted":false},{"type":"link","href":"/hass.tibber_prices/user/troubleshooting","label":"Troubleshooting","docId":"troubleshooting","unlisted":false}],"collapsible":true,"collapsed":false}]},"docs":{"actions":{"id":"actions","title":"Actions (Services)","description":"Home Assistant now surfaces these backend service endpoints as Actions in the UI (for example, Developer Tools \u2192 Actions or the Action editor inside dashboards). Behind the scenes they are still Home Assistant services that use the service: key, but this guide uses the word \u201caction\u201d whenever we refer to the user interface.","sidebar":"tutorialSidebar"},"automation-examples":{"id":"automation-examples","title":"Automation Examples","description":"Note: This guide is under construction.","sidebar":"tutorialSidebar"},"chart-examples":{"id":"chart-examples","title":"Chart Examples","description":"This guide showcases the different chart configurations available through the tibberprices.getapexcharts_yaml action.","sidebar":"tutorialSidebar"},"concepts":{"id":"concepts","title":"Core Concepts","description":"Understanding the fundamental concepts behind the Tibber Prices integration.","sidebar":"tutorialSidebar"},"configuration":{"id":"configuration","title":"Configuration","description":"Note: This guide is under construction. For now, please refer to the main README for configuration instructions.","sidebar":"tutorialSidebar"},"dashboard-examples":{"id":"dashboard-examples","title":"Dashboard Examples","description":"Beautiful dashboard layouts using Tibber Prices sensors.","sidebar":"tutorialSidebar"},"dynamic-icons":{"id":"dynamic-icons","title":"Dynamic Icons","description":"Many sensors in the Tibber Prices integration automatically change their icon based on their current state. This provides instant visual feedback about price levels, trends, and periods without needing to read the actual values.","sidebar":"tutorialSidebar"},"faq":{"id":"faq","title":"FAQ - Frequently Asked Questions","description":"Common questions about the Tibber Prices integration.","sidebar":"tutorialSidebar"},"glossary":{"id":"glossary","title":"Glossary","description":"Quick reference for terms used throughout the documentation.","sidebar":"tutorialSidebar"},"icon-colors":{"id":"icon-colors","title":"Dynamic Icon Colors","description":"Many sensors in the Tibber Prices integration provide an icon_color attribute that allows you to dynamically color elements in your dashboard based on the sensor\'s state. This is particularly useful for visual dashboards where you want instant recognition of price levels or states.","sidebar":"tutorialSidebar"},"installation":{"id":"installation","title":"Installation","description":"Note: This guide is under construction. For now, please refer to the main README for installation instructions.","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"User Documentation","description":"Welcome to the Tibber Prices custom integration for Home Assistant! This community-developed integration enhances your Home Assistant installation with detailed electricity price data from Tibber, featuring quarter-hourly precision, statistical analysis, and intelligent ratings.","sidebar":"tutorialSidebar"},"period-calculation":{"id":"period-calculation","title":"Period Calculation","description":"Learn how Best Price and Peak Price periods work, and how to configure them for your needs.","sidebar":"tutorialSidebar"},"sensors":{"id":"sensors","title":"Sensors","description":"Note: This guide is under construction. For now, please refer to the main README for available sensors.","sidebar":"tutorialSidebar"},"troubleshooting":{"id":"troubleshooting","title":"Troubleshooting","description":"Note: This guide is under construction.","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/user/assets/js/a94703ab.bb407384.js b/user/assets/js/a94703ab.bb407384.js new file mode 100644 index 0000000..a34bf74 --- /dev/null +++ b/user/assets/js/a94703ab.bb407384.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[9048],{3363:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var a=n(4164),i=n(1312),o=n(1107),s=n(4848);function l({className:e}){return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",e),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(i.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(i.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(i.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},8115:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ke});var a=n(6540),i=n(4164),o=n(5500),s=n(7559),l=n(4718),r=n(609),c=n(1312),d=n(3104),u=n(5062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(4848);function h(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:o,cancelScroll:s}=(0,d.gk)();return(0,d.Mq)(({scrollY:t},a)=>{const o=a?.scrollY;o&&(i.current?i.current=!1:t>=o?(s(),n(!1)):t<e?n(!1):t+window.innerHeight<document.documentElement.scrollHeight&&n(!0))}),(0,u.$)(e=>{e.location.hash&&(i.current=!0,n(!1))}),{shown:t,scrollToTop:()=>o(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,i.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3109),x=n(6347),j=n(4581),f=n(6342),_=n(3465);function g(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const v="collapseSidebarButton_PEFL",k="collapseSidebarButtonIcon_kv0_";function A({onClick:e}){return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,i.A)("button button--secondary button--outline",v),onClick:e,children:(0,b.jsx)(g,{className:k})})}var C=n(5041),S=n(9532);const T=Symbol("EmptyContext"),N=a.createContext(T);function I({children:e}){const[t,n]=(0,a.useState)(null),i=(0,a.useMemo)(()=>({expandedItem:t,setExpandedItem:n}),[t]);return(0,b.jsx)(N.Provider,{value:i,children:e})}var y=n(1422),B=n(9169),L=n(8774),w=n(2303),E=n(6654),M=n(3186);const H="menuExternalLink_NmtK",P="linkLabel_WmDU";function G({label:e}){return(0,b.jsx)("span",{title:e,className:P,children:e})}function W({item:e,onItemClick:t,activePath:n,level:a,index:o,...r}){const{href:c,label:d,className:u,autoAddBaseUrl:m}=e,h=(0,l.w8)(e,n),p=(0,E.A)(c);return(0,b.jsx)("li",{className:(0,i.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(a),"menu__list-item",u),children:(0,b.jsxs)(L.A,{className:(0,i.A)("menu__link",!p&&H,{"menu__link--active":h}),autoAddBaseUrl:m,"aria-current":h?"page":void 0,to:c,...p&&{onClick:t?()=>t(e):void 0},...r,children:[(0,b.jsx)(G,{label:d}),!p&&(0,b.jsx)(M.A,{})]})},d)}const R="categoryLink_byQd",D="categoryLinkLabel_W154";function U({collapsed:e,categoryLabel:t,onClick:n}){return(0,b.jsx)("button",{"aria-label":e?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:t}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:t}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:n})}function F({label:e}){return(0,b.jsx)("span",{title:e,className:D,children:e})}function V(e){return 0===(0,l.Y)(e.item.items,e.activePath).length?(0,b.jsx)(Y,{...e}):(0,b.jsx)(K,{...e})}function Y({item:e,...t}){if("string"!=typeof e.href)return null;const{type:n,collapsed:a,collapsible:i,items:o,linkUnlisted:s,...l}=e,r={type:"link",...l};return(0,b.jsx)(W,{item:r,...t})}function K({item:e,onItemClick:t,activePath:n,level:o,index:r,...c}){const{items:d,label:u,collapsible:m,className:h,href:p}=e,{docs:{sidebar:{autoCollapseCategories:x}}}=(0,f.p)(),j=function(e){const t=(0,w.A)();return(0,a.useMemo)(()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0,[e,t])}(e),_=(0,l.w8)(e,n),g=(0,B.ys)(p,n),{collapsed:v,setCollapsed:k}=(0,y.u)({initialState:()=>!!m&&(!_&&e.collapsed)}),{expandedItem:A,setExpandedItem:C}=function(){const e=(0,a.useContext)(N);if(e===T)throw new S.dV("DocSidebarItemsExpandedStateProvider");return e}(),I=(e=!v)=>{C(e?null:r),k(e)};!function({isActive:e,collapsed:t,updateCollapsed:n,activePath:i}){const o=(0,S.ZC)(e),s=(0,S.ZC)(i);(0,a.useEffect)(()=>{(e&&!o||e&&o&&i!==s)&&t&&n(!1)},[e,o,t,n,i,s])}({isActive:_,collapsed:v,updateCollapsed:I,activePath:n}),(0,a.useEffect)(()=>{m&&null!=A&&A!==r&&x&&k(!0)},[m,A,r,k,x]);return(0,b.jsxs)("li",{className:(0,i.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(o),"menu__list-item",{"menu__list-item--collapsed":v},h),children:[(0,b.jsxs)("div",{className:(0,i.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":g}),children:[(0,b.jsx)(L.A,{className:(0,i.A)(R,"menu__link",{"menu__link--sublist":m,"menu__link--sublist-caret":!p&&m,"menu__link--active":_}),onClick:n=>{t?.(e),m&&(p?g?(n.preventDefault(),I()):I(!1):(n.preventDefault(),I()))},"aria-current":g?"page":void 0,role:m&&!p?"button":void 0,"aria-expanded":m&&!p?!v:void 0,href:m?j??"#":j,...c,children:(0,b.jsx)(F,{label:u})}),p&&m&&(0,b.jsx)(U,{collapsed:v,categoryLabel:u,onClick:e=>{e.preventDefault(),I()}})]}),(0,b.jsx)(y.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:v,children:(0,b.jsx)(Z,{items:d,tabIndex:v?-1:0,onItemClick:t,activePath:n,level:o+1})})]})}const z="menuHtmlItem_M9Kj";function q({item:e,level:t,index:n}){const{value:a,defaultStyle:o,className:l}=e;return(0,b.jsx)("li",{className:(0,i.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(t),o&&[z,"menu__list-item"],l),dangerouslySetInnerHTML:{__html:a}},n)}function O({item:e,...t}){switch(e.type){case"category":return(0,b.jsx)(V,{item:e,...t});case"html":return(0,b.jsx)(q,{item:e,...t});default:return(0,b.jsx)(W,{item:e,...t})}}function Q({items:e,...t}){const n=(0,l.Y)(e,t.activePath);return(0,b.jsx)(I,{children:n.map((e,n)=>(0,b.jsx)(O,{item:e,index:n,...t},n))})}const Z=(0,a.memo)(Q),J="menu_SIkG",X="menuWithAnnouncementBar_GW3s";function $({path:e,sidebar:t,className:n}){const o=function(){const{isActive:e}=(0,C.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)(({scrollY:t})=>{e&&n(0===t)},[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,i.A)("menu thin-scrollbar",J,o&&X,n),children:(0,b.jsx)("ul",{className:(0,i.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(Z,{items:t,activePath:e,level:1})})})}const ee="sidebar_njMd",te="sidebarWithHideableNavbar_wUlq",ne="sidebarHidden_VK0M",ae="sidebarLogo_isFc";function ie({path:e,sidebar:t,onCollapse:n,isHidden:a}){const{navbar:{hideOnScroll:o},docs:{sidebar:{hideable:s}}}=(0,f.p)();return(0,b.jsxs)("div",{className:(0,i.A)(ee,o&&te,a&&ne),children:[o&&(0,b.jsx)(_.A,{tabIndex:-1,className:ae}),(0,b.jsx)($,{path:e,sidebar:t}),s&&(0,b.jsx)(A,{onClick:n})]})}const oe=a.memo(ie);var se=n(5600),le=n(2069);const re=({sidebar:e,path:t})=>{const n=(0,le.M)();return(0,b.jsx)("ul",{className:(0,i.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(Z,{items:e,activePath:t,onItemClick:e=>{"category"===e.type&&e.href&&n.toggle(),"link"===e.type&&n.toggle()},level:1})})};function ce(e){return(0,b.jsx)(se.GX,{component:re,props:e})}const de=a.memo(ce);function ue(e){const t=(0,j.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(oe,{...e}),a&&(0,b.jsx)(de,{...e})]})}const me={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function be({toggleSidebar:e}){return(0,b.jsx)("div",{className:me.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:e,onClick:e,children:(0,b.jsx)(g,{className:me.expandButtonIcon})})}const he={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function pe({children:e}){const t=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:e},t?.name??"noSidebar")}function xe({sidebar:e,hiddenSidebarContainer:t,setHiddenSidebarContainer:n}){const{pathname:o}=(0,x.zy)(),[l,r]=(0,a.useState)(!1),c=(0,a.useCallback)(()=>{l&&r(!1),!l&&(0,p.O)()&&r(!0),n(e=>!e)},[n,l]);return(0,b.jsx)("aside",{className:(0,i.A)(s.G.docs.docSidebarContainer,he.docSidebarContainer,t&&he.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(he.docSidebarContainer)&&t&&r(!0)},children:(0,b.jsx)(pe,{children:(0,b.jsxs)("div",{className:(0,i.A)(he.sidebarViewport,l&&he.sidebarViewportHidden),children:[(0,b.jsx)(ue,{sidebar:e,path:o,onCollapse:c,isHidden:l}),l&&(0,b.jsx)(be,{toggleSidebar:c})]})})})}const je={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function fe({hiddenSidebarContainer:e,children:t}){const n=(0,r.t)();return(0,b.jsx)("main",{className:(0,i.A)(je.docMainContainer,(e||!n)&&je.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,i.A)("container padding-top--md padding-bottom--lg",je.docItemWrapper,e&&je.docItemWrapperEnhanced),children:t})})}const _e={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function ge({children:e}){const t=(0,r.t)(),[n,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:_e.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:_e.docRoot,children:[t&&(0,b.jsx)(xe,{sidebar:t.items,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}),(0,b.jsx)(fe,{hiddenSidebarContainer:n,children:e})]})]})}var ve=n(3363);function ke(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(ve.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(o.e3,{className:(0,i.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(ge,{children:n})})})}}}]); \ No newline at end of file diff --git a/user/assets/js/aba21aa0.89e68a74.js b/user/assets/js/aba21aa0.89e68a74.js new file mode 100644 index 0000000..da4009d --- /dev/null +++ b/user/assets/js/aba21aa0.89e68a74.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[5742],{7093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/user/assets/js/bd0e57e2.0ec3fda9.js b/user/assets/js/bd0e57e2.0ec3fda9.js new file mode 100644 index 0000000..44a5135 --- /dev/null +++ b/user/assets/js/bd0e57e2.0ec3fda9.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4305],{3133:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"actions","title":"Actions (Services)","description":"Home Assistant now surfaces these backend service endpoints as Actions in the UI (for example, Developer Tools \u2192 Actions or the Action editor inside dashboards). Behind the scenes they are still Home Assistant services that use the service: key, but this guide uses the word \u201caction\u201d whenever we refer to the user interface.","source":"@site/docs/actions.md","sourceDirName":".","slug":"/actions","permalink":"/hass.tibber_prices/user/actions","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/actions.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Dynamic Icon Colors","permalink":"/hass.tibber_prices/user/icon-colors"},"next":{"title":"Dashboard Examples","permalink":"/hass.tibber_prices/user/dashboard-examples"}}');var i=s(4848),t=s(8453);const a={},o="Actions (Services)",l={},d=[{value:"Available Actions",id:"available-actions",level:2},{value:"tibber_prices.get_chartdata",id:"tibber_pricesget_chartdata",level:3},{value:"tibber_prices.get_apexcharts_yaml",id:"tibber_pricesget_apexcharts_yaml",level:3},{value:"tibber_prices.refresh_user_data",id:"tibber_pricesrefresh_user_data",level:3},{value:"Migration from Chart Data Export Sensor",id:"migration-from-chart-data-export-sensor",level:2}];function c(e){const r={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.header,{children:(0,i.jsx)(r.h1,{id:"actions-services",children:"Actions (Services)"})}),"\n",(0,i.jsxs)(r.p,{children:["Home Assistant now surfaces these backend service endpoints as ",(0,i.jsx)(r.strong,{children:"Actions"})," in the UI (for example, Developer Tools \u2192 Actions or the Action editor inside dashboards). Behind the scenes they are still Home Assistant services that use the ",(0,i.jsx)(r.code,{children:"service:"})," key, but this guide uses the word \u201caction\u201d whenever we refer to the user interface."]}),"\n",(0,i.jsxs)(r.p,{children:["You can still call them from automations, scripts, and dashboards the same way as before (",(0,i.jsx)(r.code,{children:"service: tibber_prices.get_chartdata"}),", etc.), just remember that the frontend officially lists them as actions."]}),"\n",(0,i.jsx)(r.h2,{id:"available-actions",children:"Available Actions"}),"\n",(0,i.jsx)(r.h3,{id:"tibber_pricesget_chartdata",children:"tibber_prices.get_chartdata"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Purpose:"})," Returns electricity price data in chart-friendly formats for visualization and analysis."]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Key Features:"})}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Flexible Output Formats"}),": Array of objects or array of arrays"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Time Range Selection"}),": Filter by day (yesterday, today, tomorrow)"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Price Filtering"}),": Filter by price level or rating"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Period Support"}),": Return best/peak price period summaries instead of intervals"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Resolution Control"}),": Interval (15-minute) or hourly aggregation"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Customizable Field Names"}),": Rename output fields to match your chart library"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Currency Control"}),": Major (EUR/NOK) or minor (ct/\xf8re) units"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Basic Example:"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-yaml",children:'service: tibber_prices.get_chartdata\ndata:\n entry_id: YOUR_ENTRY_ID\n day: ["today", "tomorrow"]\n output_format: array_of_objects\nresponse_variable: chart_data\n'})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Response Format:"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-json",children:'{\n "data": [\n {\n "start_time": "2025-11-17T00:00:00+01:00",\n "price_per_kwh": 0.2534\n },\n {\n "start_time": "2025-11-17T00:15:00+01:00",\n "price_per_kwh": 0.2498\n }\n ]\n}\n'})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Common Parameters:"})}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Parameter"}),(0,i.jsx)(r.th,{children:"Description"}),(0,i.jsx)(r.th,{children:"Default"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"entry_id"})}),(0,i.jsx)(r.td,{children:"Integration entry ID (required)"}),(0,i.jsx)(r.td,{children:"-"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"day"})}),(0,i.jsx)(r.td,{children:"Days to include: yesterday, today, tomorrow"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:'["today", "tomorrow"]'})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"output_format"})}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"array_of_objects"})," or ",(0,i.jsx)(r.code,{children:"array_of_arrays"})]}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"array_of_objects"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"resolution"})}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)(r.code,{children:"interval"})," (15-min) or ",(0,i.jsx)(r.code,{children:"hourly"})]}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"interval"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"minor_currency"})}),(0,i.jsx)(r.td,{children:"Return prices in ct/\xf8re instead of EUR/NOK"}),(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"false"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:(0,i.jsx)(r.code,{children:"round_decimals"})}),(0,i.jsx)(r.td,{children:"Decimal places (0-10)"}),(0,i.jsx)(r.td,{children:"4 (major) or 2 (minor)"})]})]})]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Rolling Window Mode:"})}),"\n",(0,i.jsxs)(r.p,{children:["Omit the ",(0,i.jsx)(r.code,{children:"day"})," parameter to get a dynamic 48-hour rolling window that automatically adapts to data availability:"]}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-yaml",children:"service: tibber_prices.get_chartdata\ndata:\n entry_id: YOUR_ENTRY_ID\n # Omit 'day' for rolling window\n output_format: array_of_objects\nresponse_variable: chart_data\n"})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Behavior:"})}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"When tomorrow data available"})," (typically after ~13:00): Returns today + tomorrow"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"When tomorrow data not available"}),": Returns yesterday + today"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:"This is useful for charts that should always show a 48-hour window without manual day selection."}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Period Filter Example:"})}),"\n",(0,i.jsx)(r.p,{children:"Get best price periods as summaries instead of intervals:"}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-yaml",children:'service: tibber_prices.get_chartdata\ndata:\n entry_id: YOUR_ENTRY_ID\n period_filter: best_price # or peak_price\n day: ["today", "tomorrow"]\n include_level: true\n include_rating_level: true\nresponse_variable: periods\n'})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Advanced Filtering:"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-yaml",children:'service: tibber_prices.get_chartdata\ndata:\n entry_id: YOUR_ENTRY_ID\n level_filter: ["VERY_CHEAP", "CHEAP"] # Only cheap periods\n rating_level_filter: ["LOW"] # Only low-rated prices\n insert_nulls: segments # Add nulls at segment boundaries\n'})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Complete Documentation:"})}),"\n",(0,i.jsxs)(r.p,{children:["For detailed parameter descriptions, open ",(0,i.jsx)(r.strong,{children:"Developer Tools \u2192 Actions"})," (the UI label) and select ",(0,i.jsx)(r.code,{children:"tibber_prices.get_chartdata"}),". The inline documentation is still stored in ",(0,i.jsx)(r.code,{children:"services.yaml"})," because actions are backed by services."]}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"tibber_pricesget_apexcharts_yaml",children:"tibber_prices.get_apexcharts_yaml"}),"\n",(0,i.jsxs)(r.blockquote,{children:["\n",(0,i.jsxs)(r.p,{children:["\u26a0\ufe0f ",(0,i.jsx)(r.strong,{children:"IMPORTANT:"})," This action generates a ",(0,i.jsx)(r.strong,{children:"basic example configuration"})," as a starting point, NOT a complete solution for all ApexCharts features."]}),"\n",(0,i.jsxs)(r.p,{children:["This integration is primarily a ",(0,i.jsx)(r.strong,{children:"data provider"}),". The generated YAML demonstrates how to use the ",(0,i.jsx)(r.code,{children:"get_chartdata"})," action to fetch price data. Due to the segmented nature of our data (different time periods per series) and the use of Home Assistant's service API instead of entity attributes, many advanced ApexCharts features (like ",(0,i.jsx)(r.code,{children:"in_header"}),", certain transformations) are ",(0,i.jsx)(r.strong,{children:"not compatible"})," or require manual customization."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"You are welcome to customize"})," the generated YAML for your specific needs, but comprehensive ApexCharts configuration support is beyond the scope of this integration. Community contributions with improved configurations are always appreciated!"]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"For custom solutions:"})," Use the ",(0,i.jsx)(r.code,{children:"get_chartdata"})," action directly to build your own charts with full control over the data format and visualization."]}),"\n"]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Purpose:"})," Generates a basic ApexCharts card YAML configuration example for visualizing electricity prices with automatic color-coding by price level."]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Prerequisites:"})}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://github.com/RomRider/apexcharts-card",children:"ApexCharts Card"})," (required for all configurations)"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"https://github.com/iantrich/config-template-card",children:"Config Template Card"})," (required only for rolling window modes - enables dynamic Y-axis scaling)"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"\u2728 Key Features:"})}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Automatic Color-Coded Series"}),": Separate series for each price level (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) or rating (LOW, NORMAL, HIGH)"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Dynamic Y-Axis Scaling"}),": Rolling window modes automatically use ",(0,i.jsx)(r.code,{children:"chart_metadata"})," sensor for optimal Y-axis bounds"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Best Price Period Highlights"}),": Optional vertical bands showing detected best price periods"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Translated Labels"}),": Automatically uses your Home Assistant language setting"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Clean Gap Visualization"}),": Proper NULL insertion for missing data segments"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Quick Example:"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-yaml",children:'service: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n day: today # Optional: yesterday, today, tomorrow, rolling_window, rolling_window_autozoom\n level_type: rating_level # or "level" for 5-level classification\n highlight_best_price: true # Show best price period overlays\nresponse_variable: apexcharts_config\n'})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Day Parameter Options:"})}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Fixed days"})," (",(0,i.jsx)(r.code,{children:"yesterday"}),", ",(0,i.jsx)(r.code,{children:"today"}),", ",(0,i.jsx)(r.code,{children:"tomorrow"}),"): Static 24-hour views, no additional dependencies"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Rolling Window"})," (default when omitted or ",(0,i.jsx)(r.code,{children:"rolling_window"}),"): Dynamic 48-hour window that automatically shifts between yesterday+today and today+tomorrow based on data availability","\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"\u2728 Includes dynamic Y-axis scaling"})," via ",(0,i.jsx)(r.code,{children:"chart_metadata"})," sensor"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Rolling Window (Auto-Zoom)"})," (",(0,i.jsx)(r.code,{children:"rolling_window_autozoom"}),"): Same as rolling window, but additionally zooms in progressively (2h lookback + remaining time until midnight, graph span decreases every 15 minutes)","\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"\u2728 Includes dynamic Y-axis scaling"})," via ",(0,i.jsx)(r.code,{children:"chart_metadata"})," sensor"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Dynamic Y-Axis Scaling (Rolling Window Modes):"})}),"\n",(0,i.jsxs)(r.p,{children:["Rolling window configurations automatically integrate with the ",(0,i.jsx)(r.code,{children:"chart_metadata"})," sensor for optimal chart appearance:"]}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Automatic bounds"}),": Y-axis min/max adjust to data range"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"No manual configuration"}),": Works out of the box if sensor is enabled"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Fallback behavior"}),": If sensor is disabled, uses ApexCharts auto-scaling"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Real-time updates"}),": Y-axis adapts when price data changes"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Example: Today's Prices (Static View)"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-yaml",children:"service: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n day: today\n level_type: rating_level\nresponse_variable: config\n\n# Use in dashboard:\ntype: custom:apexcharts-card\n# ... paste generated config\n"})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Example: Rolling 48h Window (Dynamic View)"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-yaml",children:"service: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n # Omit 'day' for rolling window (or use 'rolling_window')\n level_type: level # 5-level classification\n highlight_best_price: true\nresponse_variable: config\n\n# Use in dashboard:\ntype: custom:config-template-card\nentities:\n - sensor.tibber_home_tomorrow_data\n - sensor.tibber_home_chart_metadata # For dynamic Y-axis\ncard:\n # ... paste generated config\n"})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Screenshots:"})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.em,{children:"Screenshots coming soon for all 4 modes: today, tomorrow, rolling_window, rolling_window_autozoom"})}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Level Type Options:"})}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:(0,i.jsx)(r.code,{children:"rating_level"})})," (default): 3 series (LOW, NORMAL, HIGH) - based on your personal thresholds"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:(0,i.jsx)(r.code,{children:"level"})}),": 5 series (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) - absolute price ranges"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Best Price Period Highlights:"})}),"\n",(0,i.jsxs)(r.p,{children:["When ",(0,i.jsx)(r.code,{children:"highlight_best_price: true"}),":"]}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:"Vertical bands overlay the chart showing detected best price periods"}),"\n",(0,i.jsx)(r.li,{children:'Tooltip shows "Best Price Period" label when hovering over highlighted areas'}),"\n",(0,i.jsx)(r.li,{children:"Only appears when best price periods are configured and detected"}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Important Notes:"})}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.strong,{children:"Config Template Card"})," is only required for rolling window modes (enables dynamic Y-axis)"]}),"\n",(0,i.jsxs)(r.li,{children:["Fixed day views (",(0,i.jsx)(r.code,{children:"today"}),", ",(0,i.jsx)(r.code,{children:"tomorrow"}),", ",(0,i.jsx)(r.code,{children:"yesterday"}),") work with ApexCharts Card alone"]}),"\n",(0,i.jsx)(r.li,{children:"Generated YAML is a starting point - customize colors, styling, features as needed"}),"\n",(0,i.jsx)(r.li,{children:"All labels are automatically translated to your Home Assistant language"}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:"Use the response in Lovelace dashboards by copying the generated YAML."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Documentation:"})," Refer to ",(0,i.jsx)(r.strong,{children:"Developer Tools \u2192 Actions"})," for descriptions of the fields exposed by this action."]}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h3,{id:"tibber_pricesrefresh_user_data",children:"tibber_prices.refresh_user_data"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Purpose:"})," Forces an immediate refresh of user data (homes, subscriptions) from the Tibber API."]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Example:"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-yaml",children:"service: tibber_prices.refresh_user_data\ndata:\n entry_id: YOUR_ENTRY_ID\n"})}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Note:"})," User data is cached for 24 hours. Trigger this action only when you need immediate updates (e.g., after changing Tibber subscriptions)."]}),"\n",(0,i.jsx)(r.hr,{}),"\n",(0,i.jsx)(r.h2,{id:"migration-from-chart-data-export-sensor",children:"Migration from Chart Data Export Sensor"}),"\n",(0,i.jsxs)(r.p,{children:["If you're still using the ",(0,i.jsx)(r.code,{children:"sensor.tibber_home_chart_data_export"})," sensor, consider migrating to the ",(0,i.jsx)(r.code,{children:"tibber_prices.get_chartdata"})," action:"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Benefits:"})}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:"No HA restart required for configuration changes"}),"\n",(0,i.jsx)(r.li,{children:"More flexible filtering and formatting options"}),"\n",(0,i.jsx)(r.li,{children:"Better performance (on-demand instead of polling)"}),"\n",(0,i.jsx)(r.li,{children:"Future-proof (active development)"}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Migration Steps:"})}),"\n",(0,i.jsxs)(r.ol,{children:["\n",(0,i.jsx)(r.li,{children:"Note your current sensor configuration (Step 7 in Options Flow)"}),"\n",(0,i.jsxs)(r.li,{children:["Create automation/script that calls ",(0,i.jsx)(r.code,{children:"tibber_prices.get_chartdata"})," with the same parameters"]}),"\n",(0,i.jsx)(r.li,{children:"Test the new approach"}),"\n",(0,i.jsx)(r.li,{children:"Disable the old sensor when satisfied"}),"\n"]})]})}function h(e={}){const{wrapper:r}={...(0,t.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/c357e002.f99e6fbd.js b/user/assets/js/c357e002.f99e6fbd.js new file mode 100644 index 0000000..8dce5ae --- /dev/null +++ b/user/assets/js/c357e002.f99e6fbd.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2764],{9338:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"sensors","title":"Sensors","description":"Note: This guide is under construction. For now, please refer to the main README for available sensors.","source":"@site/docs/sensors.md","sourceDirName":".","slug":"/sensors","permalink":"/hass.tibber_prices/user/sensors","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/sensors.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Glossary","permalink":"/hass.tibber_prices/user/glossary"},"next":{"title":"Period Calculation","permalink":"/hass.tibber_prices/user/period-calculation"}}');var i=r(4848),t=r(8453);const a={comments:!1},o="Sensors",c={},l=[{value:"Binary Sensors",id:"binary-sensors",level:2},{value:"Best Price Period & Peak Price Period",id:"best-price-period--peak-price-period",level:3},{value:"Core Price Sensors",id:"core-price-sensors",level:2},{value:"Statistical Sensors",id:"statistical-sensors",level:2},{value:"Rating Sensors",id:"rating-sensors",level:2},{value:"Diagnostic Sensors",id:"diagnostic-sensors",level:2},{value:"Chart Metadata",id:"chart-metadata",level:3},{value:"Chart Data Export",id:"chart-data-export",level:3}];function d(e){const s={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.header,{children:(0,i.jsx)(s.h1,{id:"sensors",children:"Sensors"})}),"\n",(0,i.jsxs)(s.blockquote,{children:["\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"Note:"})," This guide is under construction. For now, please refer to the ",(0,i.jsx)(s.a,{href:"https://github.com/jpawlowski/hass.tibber_prices/blob/v0.20.0/README.md",children:"main README"})," for available sensors."]}),"\n"]}),"\n",(0,i.jsxs)(s.blockquote,{children:["\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"Tip:"})," Many sensors have dynamic icons and colors! See the ",(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.a,{href:"/hass.tibber_prices/user/dynamic-icons",children:"Dynamic Icons Guide"})})," and ",(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.a,{href:"/hass.tibber_prices/user/icon-colors",children:"Dynamic Icon Colors Guide"})})," to enhance your dashboards."]}),"\n"]}),"\n",(0,i.jsx)(s.h2,{id:"binary-sensors",children:"Binary Sensors"}),"\n",(0,i.jsx)(s.h3,{id:"best-price-period--peak-price-period",children:"Best Price Period & Peak Price Period"}),"\n",(0,i.jsxs)(s.p,{children:["These binary sensors indicate when you're in a detected best or peak price period. See the ",(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.a,{href:"/hass.tibber_prices/user/period-calculation",children:"Period Calculation Guide"})})," for a detailed explanation of how these periods are calculated and configured."]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Quick overview:"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Best Price Period"}),": Turns ON during periods with significantly lower prices than the daily average"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Peak Price Period"}),": Turns ON during periods with significantly higher prices than the daily average"]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"Both sensors include rich attributes with period details, intervals, relaxation status, and more."}),"\n",(0,i.jsx)(s.h2,{id:"core-price-sensors",children:"Core Price Sensors"}),"\n",(0,i.jsx)(s.p,{children:"Coming soon..."}),"\n",(0,i.jsx)(s.h2,{id:"statistical-sensors",children:"Statistical Sensors"}),"\n",(0,i.jsx)(s.p,{children:"Coming soon..."}),"\n",(0,i.jsx)(s.h2,{id:"rating-sensors",children:"Rating Sensors"}),"\n",(0,i.jsx)(s.p,{children:"Coming soon..."}),"\n",(0,i.jsx)(s.h2,{id:"diagnostic-sensors",children:"Diagnostic Sensors"}),"\n",(0,i.jsx)(s.h3,{id:"chart-metadata",children:"Chart Metadata"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"Entity ID:"})," ",(0,i.jsx)(s.code,{children:"sensor.tibber_home_NAME_chart_metadata"})]}),"\n",(0,i.jsxs)(s.blockquote,{children:["\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u2728 New Feature"}),": This sensor provides dynamic chart configuration metadata for optimal visualization. Perfect for use with the ",(0,i.jsx)(s.code,{children:"get_apexcharts_yaml"})," action!"]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"This diagnostic sensor provides essential chart configuration values as sensor attributes, enabling dynamic Y-axis scaling and optimal chart appearance in rolling window modes."}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Key Features:"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Dynamic Y-Axis Bounds"}),": Automatically calculates optimal ",(0,i.jsx)(s.code,{children:"yaxis_min"})," and ",(0,i.jsx)(s.code,{children:"yaxis_max"})," for your price data"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Automatic Updates"}),": Refreshes when price data changes (coordinator updates)"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Lightweight"}),": Metadata-only mode (no data processing) for fast response"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"State Indicator"}),": Shows ",(0,i.jsx)(s.code,{children:"pending"})," (initialization), ",(0,i.jsx)(s.code,{children:"ready"})," (data available), or ",(0,i.jsx)(s.code,{children:"error"})," (service call failed)"]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Attributes:"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"timestamp"})}),": When the metadata was last fetched"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"yaxis_min"})}),": Suggested minimum value for Y-axis (optimal scaling)"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"yaxis_max"})}),": Suggested maximum value for Y-axis (optimal scaling)"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"currency"})}),': Currency code (e.g., "EUR", "NOK")']}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"resolution"})}),": Interval duration in minutes (usually 15)"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"error"})}),": Error message if service call failed"]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Usage:"})}),"\n",(0,i.jsxs)(s.p,{children:["The ",(0,i.jsx)(s.code,{children:"tibber_prices.get_apexcharts_yaml"})," action ",(0,i.jsx)(s.strong,{children:"automatically uses this sensor"})," for dynamic Y-axis scaling in ",(0,i.jsx)(s.code,{children:"rolling_window"})," and ",(0,i.jsx)(s.code,{children:"rolling_window_autozoom"})," modes! No manual configuration needed - just enable the action's result with ",(0,i.jsx)(s.code,{children:"config-template-card"})," and the sensor provides optimal Y-axis bounds automatically."]}),"\n",(0,i.jsxs)(s.p,{children:["See the ",(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.a,{href:"/hass.tibber_prices/user/chart-examples",children:"Chart Examples Guide"})})," for practical examples!"]}),"\n",(0,i.jsx)(s.hr,{}),"\n",(0,i.jsx)(s.h3,{id:"chart-data-export",children:"Chart Data Export"}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"Entity ID:"})," ",(0,i.jsx)(s.code,{children:"sensor.tibber_home_NAME_chart_data_export"}),"\n",(0,i.jsx)(s.strong,{children:"Default State:"})," Disabled (must be manually enabled)"]}),"\n",(0,i.jsxs)(s.blockquote,{children:["\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u26a0\ufe0f Legacy Feature"}),": This sensor is maintained for backward compatibility. For new integrations, use the ",(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"tibber_prices.get_chartdata"})})," service instead, which offers more flexibility and better performance."]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"This diagnostic sensor provides cached chart-friendly price data that can be consumed by chart cards (ApexCharts, custom cards, etc.)."}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Key Features:"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Configurable via Options Flow"}),": Service parameters can be configured through the integration's options menu (Step 7 of 7)"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Automatic Updates"}),": Data refreshes on coordinator updates (every 15 minutes)"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"Attribute-Based Output"}),": Chart data is stored in sensor attributes for easy access"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:"State Indicator"}),": Shows ",(0,i.jsx)(s.code,{children:"pending"})," (before first call), ",(0,i.jsx)(s.code,{children:"ready"})," (data available), or ",(0,i.jsx)(s.code,{children:"error"})," (service call failed)"]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Important Notes:"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"\u26a0\ufe0f Disabled by default - must be manually enabled in entity settings"}),"\n",(0,i.jsx)(s.li,{children:"\u26a0\ufe0f Consider using the service instead for better control and flexibility"}),"\n",(0,i.jsx)(s.li,{children:"\u26a0\ufe0f Configuration updates require HA restart"}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Attributes:"})}),"\n",(0,i.jsx)(s.p,{children:"The sensor exposes chart data with metadata in attributes:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"timestamp"})}),": When the data was last fetched"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"error"})}),": Error message if service call failed"]}),"\n",(0,i.jsxs)(s.li,{children:[(0,i.jsx)(s.strong,{children:(0,i.jsx)(s.code,{children:"data"})})," (or custom name): Array of price data points in configured format"]}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Configuration:"})}),"\n",(0,i.jsx)(s.p,{children:"To configure the sensor's output format:"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsxs)(s.li,{children:["Go to ",(0,i.jsx)(s.strong,{children:"Settings \u2192 Devices & Services \u2192 Tibber Prices"})]}),"\n",(0,i.jsxs)(s.li,{children:["Click ",(0,i.jsx)(s.strong,{children:"Configure"})," on your Tibber home"]}),"\n",(0,i.jsxs)(s.li,{children:["Navigate through the options wizard to ",(0,i.jsx)(s.strong,{children:"Step 7: Chart Data Export Settings"})]}),"\n",(0,i.jsx)(s.li,{children:"Configure output format, filters, field names, and other options"}),"\n",(0,i.jsx)(s.li,{children:"Save and restart Home Assistant"}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Available Settings:"})}),"\n",(0,i.jsxs)(s.p,{children:["See the ",(0,i.jsx)(s.code,{children:"tibber_prices.get_chartdata"})," service documentation below for a complete list of available parameters. All service parameters can be configured through the options flow."]}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Example Usage:"})}),"\n",(0,i.jsx)(s.pre,{children:(0,i.jsx)(s.code,{className:"language-yaml",children:"# ApexCharts card consuming the sensor\ntype: custom:apexcharts-card\nseries:\n - entity: sensor.tibber_home_chart_data_export\n data_generator: |\n return entity.attributes.data;\n"})}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"Migration Path:"})}),"\n",(0,i.jsx)(s.p,{children:"If you're currently using this sensor, consider migrating to the service:"}),"\n",(0,i.jsx)(s.pre,{children:(0,i.jsx)(s.code,{className:"language-yaml",children:'# Old approach (sensor)\n- service: apexcharts_card.update\n data:\n entity: sensor.tibber_home_chart_data_export\n\n# New approach (service)\n- service: tibber_prices.get_chartdata\n data:\n entry_id: YOUR_ENTRY_ID\n day: ["today", "tomorrow"]\n output_format: array_of_objects\n response_variable: chart_data\n'})})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/common.94b129a7.js b/user/assets/js/common.94b129a7.js new file mode 100644 index 0000000..eab93fd --- /dev/null +++ b/user/assets/js/common.94b129a7.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[2076],{53:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(8675);const o=function(t){return(0,e.A)(t,4)}},805:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){return function(n){return null==n?void 0:n[t]}}},818:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(5707);const o=function(t){return t!=t};const c=function(t,n,r){for(var e=r-1,o=t.length;++e<o;)if(t[e]===n)return e;return-1};const u=function(t,n,r){return n==n?c(t,n,r):(0,e.A)(t,o,r)}},901:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(1882);const o=function(t){if("string"==typeof t||(0,e.A)(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},1152:(t,n,r)=>{r.d(n,{P:()=>c});var e=r(7633),o=r(797),c=(0,o.K2)((t,n,r,c)=>{t.attr("class",r);const{width:i,height:f,x:A,y:s}=u(t,n);(0,e.a$)(t,f,i,c);const v=a(A,s,i,f,n);t.attr("viewBox",v),o.Rm.debug(`viewBox configured: ${v} with padding: ${n}`)},"setupViewPortForSVG"),u=(0,o.K2)((t,n)=>{const r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+2*n,height:r.height+2*n,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),a=(0,o.K2)((t,n,r,e,o)=>`${t-o} ${n-o} ${r} ${e}`,"createViewBox")},1790:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(6240);const o=function(t,n){var r=[];return(0,e.A)(t,function(t,e,o){n(t,e,o)&&r.push(t)}),r}},1882:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(8496),o=r(3098);const c=function(t){return"symbol"==typeof t||(0,o.A)(t)&&"[object Symbol]"==(0,e.A)(t)}},2062:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(9471);const o=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const c=function(t){return this.__data__.has(t)};function u(t){var n=-1,r=null==t?0:t.length;for(this.__data__=new e.A;++n<r;)this.add(t[n])}u.prototype.add=u.prototype.push=o,u.prototype.has=c;const a=u},2302:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(){}},2559:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(1882);const o=function(t,n,r){for(var o=-1,c=t.length;++o<c;){var u=t[o],a=n(u);if(null!=a&&(void 0===i?a==a&&!(0,e.A)(a):r(a,i)))var i=a,f=u}return f}},2568:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(6240),o=r(8446);const c=function(t,n){var r=-1,c=(0,o.A)(t)?Array(t.length):[];return(0,e.A)(t,function(t,e,o){c[++r]=n(t,e,o)}),c}},2634:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=0,c=[];++r<e;){var u=t[r];n(u,r,t)&&(c[o++]=u)}return c}},2641:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length;++r<e&&!1!==n(t[r],r,t););return t}},3068:(t,n,r)=>{r.d(n,{A:()=>f});var e=r(4326),o=r(6984),c=r(6832),u=r(5615),a=Object.prototype,i=a.hasOwnProperty;const f=(0,e.A)(function(t,n){t=Object(t);var r=-1,e=n.length,f=e>2?n[2]:void 0;for(f&&(0,c.A)(n[0],n[1],f)&&(e=1);++r<e;)for(var A=n[r],s=(0,u.A)(A),v=-1,l=s.length;++v<l;){var d=s[v],b=t[d];(void 0===b||(0,o.A)(b,a[d])&&!i.call(t,d))&&(t[d]=A[d])}return t})},3153:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(){return[]}},3511:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(6912),o=r(5647),c=r(4792),u=r(3153);const a=Object.getOwnPropertySymbols?function(t){for(var n=[];t;)(0,e.A)(n,(0,c.A)(t)),t=(0,o.A)(t);return n}:u.A},3588:(t,n,r)=>{r.d(n,{A:()=>f});var e=r(6912),o=r(241),c=r(2274),u=r(2049),a=o.A?o.A.isConcatSpreadable:void 0;const i=function(t){return(0,u.A)(t)||(0,c.A)(t)||!!(a&&t&&t[a])};const f=function t(n,r,o,c,u){var a=-1,f=n.length;for(o||(o=i),u||(u=[]);++a<f;){var A=n[a];r>0&&o(A)?r>1?t(A,r-1,o,c,u):(0,e.A)(u,A):c||(u[u.length]=A)}return u}},3736:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length;++r<e;)if(n(t[r],r,t))return!0;return!1}},3831:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(6912),o=r(2049);const c=function(t,n,r){var c=n(t);return(0,o.A)(t)?c:(0,e.A)(c,r(t))}},3958:(t,n,r)=>{r.d(n,{A:()=>q});var e=r(1754),o=r(2062),c=r(3736),u=r(4099);const a=function(t,n,r,e,a,i){var f=1&r,A=t.length,s=n.length;if(A!=s&&!(f&&s>A))return!1;var v=i.get(t),l=i.get(n);if(v&&l)return v==n&&l==t;var d=-1,b=!0,h=2&r?new o.A:void 0;for(i.set(t,n),i.set(n,t);++d<A;){var p=t[d],y=n[d];if(e)var g=f?e(y,p,d,n,t,i):e(p,y,d,t,n,i);if(void 0!==g){if(g)continue;b=!1;break}if(h){if(!(0,c.A)(n,function(t,n){if(!(0,u.A)(h,n)&&(p===t||a(p,t,r,e,i)))return h.push(n)})){b=!1;break}}else if(p!==y&&!a(p,y,r,e,i)){b=!1;break}}return i.delete(t),i.delete(n),b};var i=r(241),f=r(3988),A=r(6984);const s=function(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r};var v=r(9959),l=i.A?i.A.prototype:void 0,d=l?l.valueOf:void 0;const b=function(t,n,r,e,o,c,u){switch(r){case"[object DataView]":if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=n.byteLength||!c(new f.A(t),new f.A(n)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,A.A)(+t,+n);case"[object Error]":return t.name==n.name&&t.message==n.message;case"[object RegExp]":case"[object String]":return t==n+"";case"[object Map]":var i=s;case"[object Set]":var l=1&e;if(i||(i=v.A),t.size!=n.size&&!l)return!1;var b=u.get(t);if(b)return b==n;e|=2,u.set(t,n);var h=a(i(t),i(n),e,o,c,u);return u.delete(t),h;case"[object Symbol]":if(d)return d.call(t)==d.call(n)}return!1};var h=r(9042),p=Object.prototype.hasOwnProperty;const y=function(t,n,r,e,o,c){var u=1&r,a=(0,h.A)(t),i=a.length;if(i!=(0,h.A)(n).length&&!u)return!1;for(var f=i;f--;){var A=a[f];if(!(u?A in n:p.call(n,A)))return!1}var s=c.get(t),v=c.get(n);if(s&&v)return s==n&&v==t;var l=!0;c.set(t,n),c.set(n,t);for(var d=u;++f<i;){var b=t[A=a[f]],y=n[A];if(e)var g=u?e(y,b,A,n,t,c):e(b,y,A,t,n,c);if(!(void 0===g?b===y||o(b,y,r,e,c):g)){l=!1;break}d||(d="constructor"==A)}if(l&&!d){var j=t.constructor,w=n.constructor;j==w||!("constructor"in t)||!("constructor"in n)||"function"==typeof j&&j instanceof j&&"function"==typeof w&&w instanceof w||(l=!1)}return c.delete(t),c.delete(n),l};var g=r(9779),j=r(2049),w=r(9912),m=r(3858),_="[object Arguments]",O="[object Array]",x="[object Object]",S=Object.prototype.hasOwnProperty;const $=function(t,n,r,o,c,u){var i=(0,j.A)(t),f=(0,j.A)(n),A=i?O:(0,g.A)(t),s=f?O:(0,g.A)(n),v=(A=A==_?x:A)==x,l=(s=s==_?x:s)==x,d=A==s;if(d&&(0,w.A)(t)){if(!(0,w.A)(n))return!1;i=!0,v=!1}if(d&&!v)return u||(u=new e.A),i||(0,m.A)(t)?a(t,n,r,o,c,u):b(t,n,A,r,o,c,u);if(!(1&r)){var h=v&&S.call(t,"__wrapped__"),p=l&&S.call(n,"__wrapped__");if(h||p){var $=h?t.value():t,E=p?n.value():n;return u||(u=new e.A),c($,E,r,o,u)}}return!!d&&(u||(u=new e.A),y(t,n,r,o,c,u))};var E=r(3098);const P=function t(n,r,e,o,c){return n===r||(null==n||null==r||!(0,E.A)(n)&&!(0,E.A)(r)?n!=n&&r!=r:$(n,r,e,o,t,c))};const B=function(t,n,r,o){var c=r.length,u=c,a=!o;if(null==t)return!u;for(t=Object(t);c--;){var i=r[c];if(a&&i[2]?i[1]!==t[i[0]]:!(i[0]in t))return!1}for(;++c<u;){var f=(i=r[c])[0],A=t[f],s=i[1];if(a&&i[2]){if(void 0===A&&!(f in t))return!1}else{var v=new e.A;if(o)var l=o(A,s,f,t,n,v);if(!(void 0===l?P(s,A,3,o,v):l))return!1}}return!0};var k=r(3149);const I=function(t){return t==t&&!(0,k.A)(t)};var C=r(7422);const D=function(t){for(var n=(0,C.A)(t),r=n.length;r--;){var e=n[r],o=t[e];n[r]=[e,o,I(o)]}return n};const L=function(t,n){return function(r){return null!=r&&(r[t]===n&&(void 0!==n||t in Object(r)))}};const M=function(t){var n=D(t);return 1==n.length&&n[0][2]?L(n[0][0],n[0][1]):function(r){return r===t||B(r,t,n)}};var U=r(6318);const F=function(t,n,r){var e=null==t?void 0:(0,U.A)(t,n);return void 0===e?r:e};var N=r(9188),V=r(6586),z=r(901);const R=function(t,n){return(0,V.A)(t)&&I(n)?L((0,z.A)(t),n):function(r){var e=F(r,t);return void 0===e&&e===n?(0,N.A)(r,t):P(n,e,3)}};var K=r(9008),G=r(805);const T=function(t){return function(n){return(0,U.A)(n,t)}};const W=function(t){return(0,V.A)(t)?(0,G.A)((0,z.A)(t)):T(t)};const q=function(t){return"function"==typeof t?t:null==t?K.A:"object"==typeof t?(0,j.A)(t)?R(t[0],t[1]):M(t):W(t)}},3973:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(3831),o=r(3511),c=r(5615);const u=function(t){return(0,e.A)(t,c.A,o.A)}},4092:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2634),o=r(1790),c=r(3958),u=r(2049);const a=function(t,n){return((0,u.A)(t)?e.A:o.A)(t,(0,c.A)(n,3))}},4098:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(3588);const o=function(t){return(null==t?0:t.length)?(0,e.A)(t,1):[]}},4099:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){return t.has(n)}},4342:(t,n,r)=>{r.d(n,{A:()=>b});var e=/\s/;const o=function(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n};var c=/^\s+/;const u=function(t){return t?t.slice(0,o(t)+1).replace(c,""):t};var a=r(3149),i=r(1882),f=/^[-+]0x[0-9a-f]+$/i,A=/^0b[01]+$/i,s=/^0o[0-7]+$/i,v=parseInt;const l=function(t){if("number"==typeof t)return t;if((0,i.A)(t))return NaN;if((0,a.A)(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=(0,a.A)(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=u(t);var r=A.test(t);return r||s.test(t)?v(t.slice(2),r?2:8):f.test(t)?NaN:+t};var d=1/0;const b=function(t){return t?(t=l(t))===d||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},4722:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(5572),o=r(3958),c=r(2568),u=r(2049);const a=function(t,n){return((0,u.A)(t)?e.A:c.A)(t,(0,o.A)(n,3))}},4792:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2634),o=r(3153),c=Object.prototype.propertyIsEnumerable,u=Object.getOwnPropertySymbols;const a=u?function(t){return null==t?[]:(t=Object(t),(0,e.A)(u(t),function(n){return c.call(t,n)}))}:o.A},5054:(t,n,r)=>{r.d(n,{A:()=>f});var e=r(7819),o=r(2274),c=r(2049),u=r(5353),a=r(5254),i=r(901);const f=function(t,n,r){for(var f=-1,A=(n=(0,e.A)(n,t)).length,s=!1;++f<A;){var v=(0,i.A)(n[f]);if(!(s=null!=t&&r(t,v)))break;t=t[v]}return s||++f!=A?s:!!(A=null==t?0:t.length)&&(0,a.A)(A)&&(0,u.A)(v,A)&&((0,c.A)(t)||(0,o.A)(t))}},5530:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(818);const o=function(t,n){return!!(null==t?0:t.length)&&(0,e.A)(t,n,0)>-1}},5572:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=Array(e);++r<e;)o[r]=n(t[r],r,t);return o}},5707:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n,r,e){for(var o=t.length,c=r+(e?1:-1);e?c--:++c<o;)if(n(t[c],c,t))return c;return-1}},6145:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(3958),o=r(8446),c=r(7422);const u=function(t){return function(n,r,u){var a=Object(n);if(!(0,o.A)(n)){var i=(0,e.A)(r,3);n=(0,c.A)(n),r=function(t){return i(a[t],t,a)}}var f=t(n,r,u);return f>-1?a[i?n[f]:f]:void 0}};var a=r(5707),i=r(8593),f=Math.max;const A=u(function(t,n,r){var o=null==t?0:t.length;if(!o)return-1;var c=null==r?0:(0,i.A)(r);return c<0&&(c=f(o+c,0)),(0,a.A)(t,(0,e.A)(n,3),c)})},6224:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){return t<n}},6240:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(9841),o=r(8446);const c=function(t,n){return function(r,e){if(null==r)return r;if(!(0,o.A)(r))return t(r,e);for(var c=r.length,u=n?c:-1,a=Object(r);(n?u--:++u<c)&&!1!==e(a[u],u,a););return r}}(e.A)},6318:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(7819),o=r(901);const c=function(t,n){for(var r=0,c=(n=(0,e.A)(n,t)).length;null!=t&&r<c;)t=t[(0,o.A)(n[r++])];return r&&r==c?t:void 0}},6452:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(2559),o=r(6224),c=r(9008);const u=function(t){return t&&t.length?(0,e.A)(t,c.A,o.A):void 0}},6586:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2049),o=r(1882),c=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;const a=function(t,n){if((0,e.A)(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!(0,o.A)(t))||(u.test(t)||!c.test(t)||null!=n&&t in Object(n))}},6666:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){var n=null==t?0:t.length;return n?t[n-1]:void 0}},6912:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=n.length,o=t.length;++r<e;)t[o+r]=n[r];return t}},7422:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(3607),o=r(1852),c=r(8446);const u=function(t){return(0,c.A)(t)?(0,e.A)(t):(0,o.A)(t)}},7809:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n,r){for(var e=-1,o=null==t?0:t.length;++e<o;)if(r(n,t[e]))return!0;return!1}},7819:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(2049),o=r(6586),c=r(6632);var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g;const i=function(t){var n=(0,c.A)(t,function(t){return 500===r.size&&r.clear(),t}),r=n.cache;return n}(function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(u,function(t,r,e,o){n.push(e?o.replace(a,"$1"):r||t)}),n});var f=r(8894);const A=function(t,n){return(0,e.A)(t)?t:(0,o.A)(t,n)?[t]:i((0,f.A)(t))}},8058:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2641),o=r(6240),c=r(9922),u=r(2049);const a=function(t,n){return((0,u.A)(t)?e.A:o.A)(t,(0,c.A)(n))}},8207:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(5572);const o=function(t,n){return(0,e.A)(n,function(n){return t[n]})};var c=r(7422);const u=function(t){return null==t?[]:o(t,(0,c.A)(t))}},8453:(t,n,r)=>{r.d(n,{R:()=>u,x:()=>a});var e=r(6540);const o={},c=e.createContext(o);function u(t){const n=e.useContext(c);return e.useMemo(function(){return"function"==typeof t?t(n):{...n,...t}},[n,t])}function a(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:u(t.components),e.createElement(c.Provider,{value:n},t.children)}},8585:(t,n,r)=>{r.d(n,{A:()=>u});var e=Object.prototype.hasOwnProperty;const o=function(t,n){return null!=t&&e.call(t,n)};var c=r(5054);const u=function(t,n){return null!=t&&(0,c.A)(t,n,o)}},8593:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(4342);const o=function(t){var n=(0,e.A)(t),r=n%1;return n==n?r?n-r:n:0}},8675:(t,n,r)=>{r.d(n,{A:()=>J});var e=r(1754),o=r(2641),c=r(2851),u=r(2031),a=r(7422);const i=function(t,n){return t&&(0,u.A)(n,(0,a.A)(n),t)};var f=r(5615);const A=function(t,n){return t&&(0,u.A)(n,(0,f.A)(n),t)};var s=r(154),v=r(9759),l=r(4792);const d=function(t,n){return(0,u.A)(t,(0,l.A)(t),n)};var b=r(3511);const h=function(t,n){return(0,u.A)(t,(0,b.A)(t),n)};var p=r(9042),y=r(3973),g=r(9779),j=Object.prototype.hasOwnProperty;const w=function(t){var n=t.length,r=new t.constructor(n);return n&&"string"==typeof t[0]&&j.call(t,"index")&&(r.index=t.index,r.input=t.input),r};var m=r(565);const _=function(t,n){var r=n?(0,m.A)(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)};var O=/\w*$/;const x=function(t){var n=new t.constructor(t.source,O.exec(t));return n.lastIndex=t.lastIndex,n};var S=r(241),$=S.A?S.A.prototype:void 0,E=$?$.valueOf:void 0;const P=function(t){return E?Object(E.call(t)):{}};var B=r(1801);const k=function(t,n,r){var e=t.constructor;switch(n){case"[object ArrayBuffer]":return(0,m.A)(t);case"[object Boolean]":case"[object Date]":return new e(+t);case"[object DataView]":return _(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,B.A)(t,r);case"[object Map]":case"[object Set]":return new e;case"[object Number]":case"[object String]":return new e(t);case"[object RegExp]":return x(t);case"[object Symbol]":return P(t)}};var I=r(8598),C=r(2049),D=r(9912),L=r(3098);const M=function(t){return(0,L.A)(t)&&"[object Map]"==(0,g.A)(t)};var U=r(2789),F=r(4841),N=F.A&&F.A.isMap;const V=N?(0,U.A)(N):M;var z=r(3149);const R=function(t){return(0,L.A)(t)&&"[object Set]"==(0,g.A)(t)};var K=F.A&&F.A.isSet;const G=K?(0,U.A)(K):R;var T="[object Arguments]",W="[object Function]",q="[object Object]",H={};H[T]=H["[object Array]"]=H["[object ArrayBuffer]"]=H["[object DataView]"]=H["[object Boolean]"]=H["[object Date]"]=H["[object Float32Array]"]=H["[object Float64Array]"]=H["[object Int8Array]"]=H["[object Int16Array]"]=H["[object Int32Array]"]=H["[object Map]"]=H["[object Number]"]=H[q]=H["[object RegExp]"]=H["[object Set]"]=H["[object String]"]=H["[object Symbol]"]=H["[object Uint8Array]"]=H["[object Uint8ClampedArray]"]=H["[object Uint16Array]"]=H["[object Uint32Array]"]=!0,H["[object Error]"]=H[W]=H["[object WeakMap]"]=!1;const J=function t(n,r,u,l,b,j){var m,_=1&r,O=2&r,x=4&r;if(u&&(m=b?u(n,l,b,j):u(n)),void 0!==m)return m;if(!(0,z.A)(n))return n;var S=(0,C.A)(n);if(S){if(m=w(n),!_)return(0,v.A)(n,m)}else{var $=(0,g.A)(n),E=$==W||"[object GeneratorFunction]"==$;if((0,D.A)(n))return(0,s.A)(n,_);if($==q||$==T||E&&!b){if(m=O||E?{}:(0,I.A)(n),!_)return O?h(n,A(m,n)):d(n,i(m,n))}else{if(!H[$])return b?n:{};m=k(n,$,_)}}j||(j=new e.A);var P=j.get(n);if(P)return P;j.set(n,m),G(n)?n.forEach(function(e){m.add(t(e,r,u,e,n,j))}):V(n)&&n.forEach(function(e,o){m.set(o,t(e,r,u,o,n,j))});var B=x?O?y.A:p.A:O?f.A:a.A,L=S?void 0:B(n);return(0,o.A)(L||n,function(e,o){L&&(e=n[o=e]),(0,c.A)(m,o,t(e,r,u,o,n,j))}),m}},8894:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(241),o=r(5572),c=r(2049),u=r(1882),a=e.A?e.A.prototype:void 0,i=a?a.toString:void 0;const f=function t(n){if("string"==typeof n)return n;if((0,c.A)(n))return(0,o.A)(n,t)+"";if((0,u.A)(n))return i?i.call(n):"";var r=n+"";return"0"==r&&1/n==-1/0?"-0":r};const A=function(t){return null==t?"":f(t)}},9042:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(3831),o=r(4792),c=r(7422);const u=function(t){return(0,e.A)(t,c.A,o.A)}},9188:(t,n,r)=>{r.d(n,{A:()=>c});const e=function(t,n){return null!=t&&n in Object(t)};var o=r(5054);const c=function(t,n){return null!=t&&(0,o.A)(t,n,e)}},9354:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(6318),o=r(2851),c=r(7819),u=r(5353),a=r(3149),i=r(901);const f=function(t,n,r,e){if(!(0,a.A)(t))return t;for(var f=-1,A=(n=(0,c.A)(n,t)).length,s=A-1,v=t;null!=v&&++f<A;){var l=(0,i.A)(n[f]),d=r;if("__proto__"===l||"constructor"===l||"prototype"===l)return t;if(f!=s){var b=v[l];void 0===(d=e?e(b,l,v):void 0)&&(d=(0,a.A)(b)?b:(0,u.A)(n[f+1])?[]:{})}(0,o.A)(v,l,d),v=v[l]}return t};const A=function(t,n,r){for(var o=-1,u=n.length,a={};++o<u;){var i=n[o],A=(0,e.A)(t,i);r(A,i)&&f(a,(0,c.A)(i,t),A)}return a}},9463:(t,n,r)=>{r.d(n,{A:()=>i});const e=function(t,n,r,e){var o=-1,c=null==t?0:t.length;for(e&&c&&(r=t[++o]);++o<c;)r=n(r,t[o],o,t);return r};var o=r(6240),c=r(3958);const u=function(t,n,r,e,o){return o(t,function(t,o,c){r=e?(e=!1,t):n(r,t,o,c)}),r};var a=r(2049);const i=function(t,n,r){var i=(0,a.A)(t)?e:u,f=arguments.length<3;return i(t,(0,c.A)(n,4),r,f,o.A)}},9592:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){return void 0===t}},9625:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(797),o=r(451),c=(0,e.K2)((t,n)=>{let r;"sandbox"===n&&(r=(0,o.Ltv)("#i"+t));return("sandbox"===n?(0,o.Ltv)(r.nodes()[0].contentDocument.body):(0,o.Ltv)("body")).select(`[id="${t}"]`)},"getDiagramElement")},9703:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(8496),o=r(2049),c=r(3098);const u=function(t){return"string"==typeof t||!(0,o.A)(t)&&(0,c.A)(t)&&"[object String]"==(0,e.A)(t)}},9841:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(4574),o=r(7422);const c=function(t,n){return t&&(0,e.A)(t,n,o.A)}},9902:(t,n,r)=>{r.d(n,{A:()=>s});var e=r(2062),o=r(5530),c=r(7809),u=r(4099),a=r(9857),i=r(2302),f=r(9959);const A=a.A&&1/(0,f.A)(new a.A([,-0]))[1]==1/0?function(t){return new a.A(t)}:i.A;const s=function(t,n,r){var a=-1,i=o.A,s=t.length,v=!0,l=[],d=l;if(r)v=!1,i=c.A;else if(s>=200){var b=n?null:A(t);if(b)return(0,f.A)(b);v=!1,i=u.A,d=new e.A}else d=n?[]:l;t:for(;++a<s;){var h=t[a],p=n?n(h):h;if(h=r||0!==h?h:0,v&&p==p){for(var y=d.length;y--;)if(d[y]===p)continue t;n&&d.push(p),l.push(h)}else i(d,p,r)||(d!==l&&d.push(p),l.push(h))}return l}},9922:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(9008);const o=function(t){return"function"==typeof t?t:e.A}},9959:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=t}),r}}}]); \ No newline at end of file diff --git a/user/assets/js/e6f5c734.59eb00f2.js b/user/assets/js/e6f5c734.59eb00f2.js new file mode 100644 index 0000000..a04bc7f --- /dev/null +++ b/user/assets/js/e6f5c734.59eb00f2.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[4078],{3785:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>o});const t=JSON.parse('{"id":"dashboard-examples","title":"Dashboard Examples","description":"Beautiful dashboard layouts using Tibber Prices sensors.","source":"@site/docs/dashboard-examples.md","sourceDirName":".","slug":"/dashboard-examples","permalink":"/hass.tibber_prices/user/dashboard-examples","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/dashboard-examples.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Actions (Services)","permalink":"/hass.tibber_prices/user/actions"},"next":{"title":"Chart Examples","permalink":"/hass.tibber_prices/user/chart-examples"}}');var i=r(4848),s=r(8453);const a={},c="Dashboard Examples",l={},o=[{value:"Basic Price Display Card",id:"basic-price-display-card",level:2},{value:"Period Status Cards",id:"period-status-cards",level:2},{value:"Custom Button Card Examples",id:"custom-button-card-examples",level:2},{value:"Price Level Card",id:"price-level-card",level:3},{value:"Lovelace Layouts",id:"lovelace-layouts",level:2},{value:"Compact Mobile View",id:"compact-mobile-view",level:3},{value:"Desktop Dashboard",id:"desktop-dashboard",level:3},{value:"Icon Color Integration",id:"icon-color-integration",level:2},{value:"Picture Elements Dashboard",id:"picture-elements-dashboard",level:2},{value:"Auto-Entities Dynamic Lists",id:"auto-entities-dynamic-lists",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"dashboard-examples",children:"Dashboard Examples"})}),"\n",(0,i.jsx)(n.p,{children:"Beautiful dashboard layouts using Tibber Prices sensors."}),"\n",(0,i.jsx)(n.h2,{id:"basic-price-display-card",children:"Basic Price Display Card"}),"\n",(0,i.jsx)(n.p,{children:"Simple card showing current price with dynamic color:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"type: entities\ntitle: Current Electricity Price\nentities:\n - entity: sensor.tibber_home_current_interval_price\n name: Current Price\n icon: mdi:flash\n - entity: sensor.tibber_home_current_interval_rating\n name: Price Rating\n - entity: sensor.tibber_home_next_interval_price\n name: Next Price\n"})}),"\n",(0,i.jsx)(n.h2,{id:"period-status-cards",children:"Period Status Cards"}),"\n",(0,i.jsx)(n.p,{children:"Show when best/peak price periods are active:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"type: horizontal-stack\ncards:\n - type: entity\n entity: binary_sensor.tibber_home_best_price_period\n name: Best Price Active\n icon: mdi:currency-eur-off\n - type: entity\n entity: binary_sensor.tibber_home_peak_price_period\n name: Peak Price Active\n icon: mdi:alert\n"})}),"\n",(0,i.jsx)(n.h2,{id:"custom-button-card-examples",children:"Custom Button Card Examples"}),"\n",(0,i.jsx)(n.h3,{id:"price-level-card",children:"Price Level Card"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"type: custom:button-card\nentity: sensor.tibber_home_current_interval_level\nname: Price Level\nshow_state: true\nstyles:\n card:\n - background: |\n [[[\n if (entity.state === 'LOWEST') return 'linear-gradient(135deg, #00ffa3 0%, #00d4ff 100%)';\n if (entity.state === 'LOW') return 'linear-gradient(135deg, #4dddff 0%, #00ffa3 100%)';\n if (entity.state === 'NORMAL') return 'linear-gradient(135deg, #ffd700 0%, #ffb800 100%)';\n if (entity.state === 'HIGH') return 'linear-gradient(135deg, #ff8c00 0%, #ff6b00 100%)';\n if (entity.state === 'HIGHEST') return 'linear-gradient(135deg, #ff4500 0%, #dc143c 100%)';\n return 'var(--card-background-color)';\n ]]]\n"})}),"\n",(0,i.jsx)(n.h2,{id:"lovelace-layouts",children:"Lovelace Layouts"}),"\n",(0,i.jsx)(n.h3,{id:"compact-mobile-view",children:"Compact Mobile View"}),"\n",(0,i.jsx)(n.p,{children:"Optimized for mobile devices:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"type: vertical-stack\ncards:\n - type: custom:mini-graph-card\n entities:\n - entity: sensor.tibber_home_current_interval_price\n name: Today's Prices\n hours_to_show: 24\n points_per_hour: 4\n\n - type: glance\n entities:\n - entity: sensor.tibber_home_best_price_start_time\n name: Best Period Starts\n - entity: binary_sensor.tibber_home_best_price_period\n name: Active Now\n"})}),"\n",(0,i.jsx)(n.h3,{id:"desktop-dashboard",children:"Desktop Dashboard"}),"\n",(0,i.jsx)(n.p,{children:"Full-width layout for desktop:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"type: grid\ncolumns: 3\nsquare: false\ncards:\n - type: custom:apexcharts-card\n # See chart-examples.md for ApexCharts config\n\n - type: vertical-stack\n cards:\n - type: entities\n title: Current Status\n entities:\n - sensor.tibber_home_current_interval_price\n - sensor.tibber_home_current_interval_rating\n\n - type: vertical-stack\n cards:\n - type: entities\n title: Statistics\n entities:\n - sensor.tibber_home_daily_avg_today\n - sensor.tibber_home_daily_min_today\n - sensor.tibber_home_daily_max_today\n"})}),"\n",(0,i.jsx)(n.h2,{id:"icon-color-integration",children:"Icon Color Integration"}),"\n",(0,i.jsxs)(n.p,{children:["Using the ",(0,i.jsx)(n.code,{children:"icon_color"})," attribute for dynamic colors:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"type: custom:mushroom-chips-card\nchips:\n - type: entity\n entity: sensor.tibber_home_current_interval_price\n icon_color: \"{{ state_attr('sensor.tibber_home_current_interval_price', 'icon_color') }}\"\n\n - type: entity\n entity: binary_sensor.tibber_home_best_price_period\n icon_color: green\n\n - type: entity\n entity: binary_sensor.tibber_home_peak_price_period\n icon_color: red\n"})}),"\n",(0,i.jsxs)(n.p,{children:["See ",(0,i.jsx)(n.a,{href:"/hass.tibber_prices/user/icon-colors",children:"Icon Colors"})," for detailed color mapping."]}),"\n",(0,i.jsx)(n.h2,{id:"picture-elements-dashboard",children:"Picture Elements Dashboard"}),"\n",(0,i.jsx)(n.p,{children:"Advanced interactive dashboard:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"type: picture-elements\nimage: /local/electricity_dashboard_bg.png\nelements:\n - type: state-label\n entity: sensor.tibber_home_current_interval_price\n style:\n top: 20%\n left: 50%\n font-size: 32px\n font-weight: bold\n\n - type: state-badge\n entity: binary_sensor.tibber_home_best_price_period\n style:\n top: 40%\n left: 30%\n\n # Add more elements...\n"})}),"\n",(0,i.jsx)(n.h2,{id:"auto-entities-dynamic-lists",children:"Auto-Entities Dynamic Lists"}),"\n",(0,i.jsx)(n.p,{children:"Automatically list all price sensors:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'type: custom:auto-entities\ncard:\n type: entities\n title: All Price Sensors\nfilter:\n include:\n - entity_id: "sensor.tibber_*_price"\n exclude:\n - state: unavailable\nsort:\n method: state\n numeric: true\n'})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.p,{children:["\ud83d\udca1 ",(0,i.jsx)(n.strong,{children:"Related:"})]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/hass.tibber_prices/user/chart-examples",children:"Chart Examples"})," - ApexCharts configurations"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/hass.tibber_prices/user/dynamic-icons",children:"Dynamic Icons"})," - Icon behavior"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/hass.tibber_prices/user/icon-colors",children:"Icon Colors"})," - Color attributes"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/e747ec83.862e5442.js b/user/assets/js/e747ec83.862e5442.js new file mode 100644 index 0000000..1bb68b7 --- /dev/null +++ b/user/assets/js/e747ec83.862e5442.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[7051],{3583:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"glossary","title":"Glossary","description":"Quick reference for terms used throughout the documentation.","source":"@site/docs/glossary.md","sourceDirName":".","slug":"/glossary","permalink":"/hass.tibber_prices/user/glossary","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/glossary.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{"comments":false},"sidebar":"tutorialSidebar","previous":{"title":"Core Concepts","permalink":"/hass.tibber_prices/user/concepts"},"next":{"title":"Sensors","permalink":"/hass.tibber_prices/user/sensors"}}');var n=i(4848),t=i(8453);const l={comments:!1},o="Glossary",a={},c=[{value:"A",id:"a",level:2},{value:"B",id:"b",level:2},{value:"C",id:"c",level:2},{value:"D",id:"d",level:2},{value:"F",id:"f",level:2},{value:"I",id:"i",level:2},{value:"L",id:"l",level:2},{value:"M",id:"m",level:2},{value:"P",id:"p",level:2},{value:"Q",id:"q",level:2},{value:"R",id:"r",level:2},{value:"S",id:"s",level:2},{value:"T",id:"t",level:2},{value:"V",id:"v",level:2}];function d(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",hr:"hr",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.header,{children:(0,n.jsx)(s.h1,{id:"glossary",children:"Glossary"})}),"\n",(0,n.jsx)(s.p,{children:"Quick reference for terms used throughout the documentation."}),"\n",(0,n.jsx)(s.h2,{id:"a",children:"A"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"API Token"}),"\n: Your personal access key from Tibber. Get it at ",(0,n.jsx)(s.a,{href:"https://developer.tibber.com/settings/access-token",children:"developer.tibber.com"}),"."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Attributes"}),"\n: Additional data attached to each sensor (timestamps, statistics, metadata). Access via ",(0,n.jsx)(s.code,{children:"state_attr()"})," in templates."]}),"\n",(0,n.jsx)(s.h2,{id:"b",children:"B"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Best Price Period"}),"\n: Automatically detected time window with favorable electricity prices. Ideal for scheduling dishwashers, heat pumps, EV charging."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Binary Sensor"}),'\n: Sensor with ON/OFF state (e.g., "Best Price Period Active"). Used in automations as triggers.']}),"\n",(0,n.jsx)(s.h2,{id:"c",children:"C"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Currency Units"}),"\n: Minor currency units used for display (ct for EUR, \xf8re for NOK/SEK). Integration handles conversion automatically."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Coordinator"}),"\n: Home Assistant component managing data fetching and updates. Polls Tibber API every 15 minutes."]}),"\n",(0,n.jsx)(s.h2,{id:"d",children:"D"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Dynamic Icons"}),"\n: Icons that change based on sensor state (e.g., battery icons showing price level). See ",(0,n.jsx)(s.a,{href:"/hass.tibber_prices/user/dynamic-icons",children:"Dynamic Icons"}),"."]}),"\n",(0,n.jsx)(s.h2,{id:"f",children:"F"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Flex (Flexibility)"}),"\n: Configuration parameter controlling how strict period detection is. Higher flex = more periods found, but potentially at higher prices."]}),"\n",(0,n.jsx)(s.h2,{id:"i",children:"I"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Interval"}),"\n: 15-minute time slot with fixed electricity price (00:00-00:15, 00:15-00:30, etc.)."]}),"\n",(0,n.jsx)(s.h2,{id:"l",children:"L"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Level"}),"\n: Price classification within a day (LOWEST, LOW, NORMAL, HIGH, HIGHEST). Based on daily min/max prices."]}),"\n",(0,n.jsx)(s.h2,{id:"m",children:"M"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Min Distance"}),'\n: Threshold requiring periods to be at least X% below daily average. Prevents detecting "cheap" periods during expensive days.']}),"\n",(0,n.jsx)(s.h2,{id:"p",children:"P"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Peak Price Period"}),"\n: Time window with highest electricity prices. Use to avoid heavy consumption."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Price Info"}),"\n: Complete dataset with all intervals (yesterday, today, tomorrow) including enriched statistics."]}),"\n",(0,n.jsx)(s.h2,{id:"q",children:"Q"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Quarter-Hourly"}),"\n: 15-minute precision (4 intervals per hour, 96 per day)."]}),"\n",(0,n.jsx)(s.h2,{id:"r",children:"R"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Rating"}),"\n: Statistical price classification (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Based on 24h averages and thresholds."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Relaxation"}),"\n: Automatic loosening of period detection filters when target period count isn't met. Ensures you always get usable periods."]}),"\n",(0,n.jsx)(s.h2,{id:"s",children:"S"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"State"}),'\n: Current value of a sensor (e.g., price in ct/kWh, "ON"/"OFF" for binary sensors).']}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"State Class"}),"\n: Home Assistant classification for long-term statistics (MEASUREMENT, TOTAL, or none)."]}),"\n",(0,n.jsx)(s.h2,{id:"t",children:"T"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Trailing Average"}),"\n: Average price over the past 24 hours from current interval."]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Leading Average"}),"\n: Average price over the next 24 hours from current interval."]}),"\n",(0,n.jsx)(s.h2,{id:"v",children:"V"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"Volatility"}),"\n: Measure of price stability (LOW, MEDIUM, HIGH). High volatility = large price swings = good for timing optimization."]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsxs)(s.p,{children:["\ud83d\udca1 ",(0,n.jsx)(s.strong,{children:"See Also:"})]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/hass.tibber_prices/user/concepts",children:"Core Concepts"})," - In-depth explanations"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/hass.tibber_prices/user/sensors",children:"Sensors"})," - How sensors use these concepts"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.a,{href:"/hass.tibber_prices/user/period-calculation",children:"Period Calculation"})," - Deep dive into period detection"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/f5506564.89680ad1.js b/user/assets/js/f5506564.89680ad1.js new file mode 100644 index 0000000..cc6258c --- /dev/null +++ b/user/assets/js/f5506564.89680ad1.js @@ -0,0 +1 @@ +"use strict";(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[5902],{572:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/rolling-window-autozoom-e0a26d16d446e133373ab07b8df6f42a.jpg"},2478:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/today-7df9c96ed3844407c55b5d71ce188ccf.jpg"},5841:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/rolling-window-6c8a36b71a45f05dce3a59a93a99b808.jpg"},8019:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"chart-examples","title":"Chart Examples","description":"This guide showcases the different chart configurations available through the tibberprices.getapexcharts_yaml action.","source":"@site/docs/chart-examples.md","sourceDirName":".","slug":"/chart-examples","permalink":"/hass.tibber_prices/user/chart-examples","draft":false,"unlisted":false,"editUrl":"https://github.com/jpawlowski/hass.tibber_prices/tree/main/docs/user/docs/chart-examples.md","tags":[],"version":"current","lastUpdatedAt":1764985026000,"frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Dashboard Examples","permalink":"/hass.tibber_prices/user/dashboard-examples"},"next":{"title":"Automation Examples","permalink":"/hass.tibber_prices/user/automation-examples"}}');var r=n(4848),l=n(8453);const t={},d="Chart Examples",a={},o=[{value:"Overview",id:"overview",level:2},{value:"All Chart Modes",id:"all-chart-modes",level:2},{value:"1. Today's Prices (Static)",id:"1-todays-prices-static",level:3},{value:"2. Rolling 48h Window (Dynamic)",id:"2-rolling-48h-window-dynamic",level:3},{value:"3. Rolling Window Auto-Zoom (Dynamic)",id:"3-rolling-window-auto-zoom-dynamic",level:3},{value:"Comparison: Level Type Options",id:"comparison-level-type-options",level:2},{value:"Rating Level (3 series)",id:"rating-level-3-series",level:3},{value:"Level (5 series)",id:"level-5-series",level:3},{value:"Dynamic Y-Axis Scaling",id:"dynamic-y-axis-scaling",level:2},{value:"Best Price Period Highlights",id:"best-price-period-highlights",level:2},{value:"Prerequisites",id:"prerequisites",level:2},{value:"Required for All Modes",id:"required-for-all-modes",level:3},{value:"Required for Rolling Window Modes Only",id:"required-for-rolling-window-modes-only",level:3},{value:"Tips & Tricks",id:"tips--tricks",level:2},{value:"Customizing Colors",id:"customizing-colors",level:3},{value:"Changing Chart Height",id:"changing-chart-height",level:3},{value:"Combining with Other Cards",id:"combining-with-other-cards",level:3},{value:"Next Steps",id:"next-steps",level:2},{value:"Screenshots",id:"screenshots",level:2},{value:"Gallery",id:"gallery",level:3}];function c(e){const i={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.header,{children:(0,r.jsx)(i.h1,{id:"chart-examples",children:"Chart Examples"})}),"\n",(0,r.jsxs)(i.p,{children:["This guide showcases the different chart configurations available through the ",(0,r.jsx)(i.code,{children:"tibber_prices.get_apexcharts_yaml"})," action."]}),"\n",(0,r.jsxs)(i.blockquote,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Quick Start:"})," Call the action with your desired parameters, copy the generated YAML, and paste it into your Lovelace dashboard!"]}),"\n"]}),"\n",(0,r.jsx)(i.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(i.p,{children:"The integration can generate 4 different chart modes, each optimized for specific use cases:"}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Mode"}),(0,r.jsx)(i.th,{children:"Description"}),(0,r.jsx)(i.th,{children:"Best For"}),(0,r.jsx)(i.th,{children:"Dependencies"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"Today"})}),(0,r.jsx)(i.td,{children:"Static 24h view of today's prices"}),(0,r.jsx)(i.td,{children:"Quick daily overview"}),(0,r.jsx)(i.td,{children:"ApexCharts Card"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"Tomorrow"})}),(0,r.jsx)(i.td,{children:"Static 24h view of tomorrow's prices"}),(0,r.jsx)(i.td,{children:"Planning tomorrow"}),(0,r.jsx)(i.td,{children:"ApexCharts Card"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"Rolling Window"})}),(0,r.jsx)(i.td,{children:"Dynamic 48h view (today+tomorrow or yesterday+today)"}),(0,r.jsx)(i.td,{children:"Always-current overview"}),(0,r.jsx)(i.td,{children:"ApexCharts + Config Template Card"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:(0,r.jsx)(i.strong,{children:"Rolling Window Auto-Zoom"})}),(0,r.jsx)(i.td,{children:"Dynamic view that zooms in as day progresses"}),(0,r.jsx)(i.td,{children:"Real-time focus on remaining day"}),(0,r.jsx)(i.td,{children:"ApexCharts + Config Template Card"})]})]})]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Screenshots available for:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"\u2705 Today (static) - Representative of all fixed day views"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Rolling Window - Shows dynamic Y-axis scaling"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Rolling Window Auto-Zoom - Shows progressive zoom effect"}),"\n"]}),"\n",(0,r.jsx)(i.h2,{id:"all-chart-modes",children:"All Chart Modes"}),"\n",(0,r.jsx)(i.h3,{id:"1-todays-prices-static",children:"1. Today's Prices (Static)"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"When to use:"})," Simple daily price overview, no dynamic updates needed."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Dependencies:"})," ApexCharts Card only"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Generate:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"service: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n day: today\n level_type: rating_level\n highlight_best_price: true\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Screenshot:"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Today's Prices - Static 24h View",src:n(2478).A+"",width:"960",height:"704"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Key Features:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"\u2705 Color-coded price levels (LOW, NORMAL, HIGH)"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Best price period highlights (vertical bands)"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Static 24-hour view (00:00 - 23:59)"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Works with ApexCharts Card alone"}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Note:"})," Tomorrow view (",(0,r.jsx)(i.code,{children:"day: tomorrow"}),") works identically to Today view, just showing tomorrow's data. All fixed day views (yesterday/today/tomorrow) use the same visualization approach."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h3,{id:"2-rolling-48h-window-dynamic",children:"2. Rolling 48h Window (Dynamic)"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"When to use:"})," Always-current view that automatically switches between yesterday+today and today+tomorrow."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Dependencies:"})," ApexCharts Card + Config Template Card"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Generate:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"service: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n # Omit 'day' for rolling window\n level_type: rating_level\n highlight_best_price: true\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Screenshot:"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Rolling 48h Window with Dynamic Y-Axis Scaling",src:n(5841).A+"",width:"962",height:"705"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Key Features:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:["\u2705 ",(0,r.jsx)(i.strong,{children:"Dynamic Y-axis scaling"})," via ",(0,r.jsx)(i.code,{children:"chart_metadata"})," sensor"]}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Automatic data selection: today+tomorrow (when available) or yesterday+today"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Always shows 48 hours of data"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Updates automatically when tomorrow's data arrives"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Color gradients for visual appeal"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"How it works:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Before ~13:00: Shows yesterday + today"}),"\n",(0,r.jsx)(i.li,{children:"After ~13:00: Shows today + tomorrow"}),"\n",(0,r.jsx)(i.li,{children:"Y-axis automatically adjusts to data range for optimal visualization"}),"\n"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h3,{id:"3-rolling-window-auto-zoom-dynamic",children:"3. Rolling Window Auto-Zoom (Dynamic)"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"When to use:"})," Real-time focus on remaining day - progressively zooms in as day advances."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Dependencies:"})," ApexCharts Card + Config Template Card"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Generate:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"service: tibber_prices.get_apexcharts_yaml\ndata:\n entry_id: YOUR_ENTRY_ID\n day: rolling_window_autozoom\n level_type: rating_level\n highlight_best_price: true\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Screenshot:"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Rolling Window Auto-Zoom - Progressive Zoom Effect",src:n(572).A+"",width:"962",height:"706"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Key Features:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:["\u2705 ",(0,r.jsx)(i.strong,{children:"Progressive zoom:"})," Graph span decreases every 15 minutes"]}),"\n",(0,r.jsxs)(i.li,{children:["\u2705 ",(0,r.jsx)(i.strong,{children:"Dynamic Y-axis scaling"})," via ",(0,r.jsx)(i.code,{children:"chart_metadata"})," sensor"]}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Always shows: 2 hours lookback + remaining time until midnight"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Perfect for real-time price monitoring"}),"\n",(0,r.jsx)(i.li,{children:"\u2705 Example: At 18:00, shows 16:00 \u2192 00:00 (8h window)"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"How it works:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"00:00: Shows full 48h window (same as rolling window)"}),"\n",(0,r.jsx)(i.li,{children:"06:00: Shows 04:00 \u2192 midnight (20h window)"}),"\n",(0,r.jsx)(i.li,{children:"12:00: Shows 10:00 \u2192 midnight (14h window)"}),"\n",(0,r.jsx)(i.li,{children:"18:00: Shows 16:00 \u2192 midnight (8h window)"}),"\n",(0,r.jsx)(i.li,{children:"23:45: Shows 21:45 \u2192 midnight (2.25h window)"}),"\n"]}),"\n",(0,r.jsx)(i.p,{children:'This creates a "zooming in" effect that focuses on the most relevant remaining time.'}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"comparison-level-type-options",children:"Comparison: Level Type Options"}),"\n",(0,r.jsx)(i.h3,{id:"rating-level-3-series",children:"Rating Level (3 series)"}),"\n",(0,r.jsxs)(i.p,{children:["Based on ",(0,r.jsx)(i.strong,{children:"your personal price thresholds"})," (configured in Options Flow):"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"LOW"}),' (Green): Below your "cheap" threshold']}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"NORMAL"})," (Blue): Between thresholds"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"HIGH"}),' (Red): Above your "expensive" threshold']}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Best for:"})," Personal decision-making based on your budget"]}),"\n",(0,r.jsx)(i.h3,{id:"level-5-series",children:"Level (5 series)"}),"\n",(0,r.jsxs)(i.p,{children:["Based on ",(0,r.jsx)(i.strong,{children:"absolute price ranges"})," (calculated from daily min/max):"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"VERY_CHEAP"})," (Dark Green): Bottom 20%"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"CHEAP"})," (Light Green): 20-40%"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"NORMAL"})," (Blue): 40-60%"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"EXPENSIVE"})," (Orange): 60-80%"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:"VERY_EXPENSIVE"})," (Red): Top 20%"]}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Best for:"})," Objective price distribution visualization"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"dynamic-y-axis-scaling",children:"Dynamic Y-Axis Scaling"}),"\n",(0,r.jsxs)(i.p,{children:["Rolling window modes (2 & 3) automatically integrate with the ",(0,r.jsx)(i.code,{children:"chart_metadata"})," sensor for optimal visualization:"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Without chart_metadata sensor (disabled):"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 \u2502 \u2190 Lots of empty space\n\u2502 ___ \u2502\n\u2502 ___/ \\___ \u2502\n\u2502_/ \\_ \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n0 100 ct\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"With chart_metadata sensor (enabled):"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 ___ \u2502 \u2190 Y-axis fitted to data\n\u2502 ___/ \\___ \u2502\n\u2502_/ \\_ \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n18 28 ct \u2190 Optimal range\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Requirements:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:["\u2705 The ",(0,r.jsx)(i.code,{children:"sensor.tibber_home_chart_metadata"})," must be ",(0,r.jsx)(i.strong,{children:"enabled"})," (it's enabled by default!)"]}),"\n",(0,r.jsx)(i.li,{children:"\u2705 That's it! The generated YAML automatically uses the sensor for dynamic scaling"}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Important:"})," Do NOT disable the ",(0,r.jsx)(i.code,{children:"chart_metadata"})," sensor if you want optimal Y-axis scaling in rolling window modes!"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Note:"})," Fixed day views (",(0,r.jsx)(i.code,{children:"today"}),", ",(0,r.jsx)(i.code,{children:"tomorrow"}),") use ApexCharts' built-in auto-scaling and don't require the metadata sensor."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"best-price-period-highlights",children:"Best Price Period Highlights"}),"\n",(0,r.jsxs)(i.p,{children:["When ",(0,r.jsx)(i.code,{children:"highlight_best_price: true"}),", vertical bands overlay the chart showing detected best price periods:"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Example:"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{children:"Price\n \u2502\n30\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 Normal prices\n \u2502 \u2502 \u2502\n25\u2502 \u2593\u2593\u2593\u2593\u2593\u2593\u2502 \u2502 \u2190 Best price period (shaded)\n \u2502 \u2593\u2593\u2593\u2593\u2593\u2593\u2502 \u2502\n20\u2502\u2500\u2500\u2500\u2500\u2500\u2593\u2593\u2593\u2593\u2593\u2593\u2502\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2502\n \u2502 \u2593\u2593\u2593\u2593\u2593\u2593\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Time\n 06:00 12:00 18:00\n"})}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Features:"})}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:["Automatic detection based on your configuration (see ",(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/period-calculation",children:"Period Calculation Guide"}),")"]}),"\n",(0,r.jsx)(i.li,{children:'Tooltip shows "Best Price Period" label'}),"\n",(0,r.jsx)(i.li,{children:"Only appears when periods are configured and detected"}),"\n",(0,r.jsxs)(i.li,{children:["Can be disabled with ",(0,r.jsx)(i.code,{children:"highlight_best_price: false"})]}),"\n"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,r.jsx)(i.h3,{id:"required-for-all-modes",children:"Required for All Modes"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:(0,r.jsx)(i.a,{href:"https://github.com/RomRider/apexcharts-card",children:"ApexCharts Card"})}),": Core visualization library","\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:'# Install via HACS\nHACS \u2192 Frontend \u2192 Search "ApexCharts Card" \u2192 Download\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"required-for-rolling-window-modes-only",children:"Required for Rolling Window Modes Only"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:(0,r.jsx)(i.a,{href:"https://github.com/iantrich/config-template-card",children:"Config Template Card"})}),": Enables dynamic configuration","\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-bash",children:'# Install via HACS\nHACS \u2192 Frontend \u2192 Search "Config Template Card" \u2192 Download\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Note:"})," Fixed day views (",(0,r.jsx)(i.code,{children:"today"}),", ",(0,r.jsx)(i.code,{children:"tomorrow"}),") work with ApexCharts Card alone!"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"tips--tricks",children:"Tips & Tricks"}),"\n",(0,r.jsx)(i.h3,{id:"customizing-colors",children:"Customizing Colors"}),"\n",(0,r.jsxs)(i.p,{children:["Edit the ",(0,r.jsx)(i.code,{children:"colors"})," array in the generated YAML:"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:'apex_config:\n colors:\n - "#00FF00" # Change LOW/VERY_CHEAP color\n - "#0000FF" # Change NORMAL color\n - "#FF0000" # Change HIGH/VERY_EXPENSIVE color\n'})}),"\n",(0,r.jsx)(i.h3,{id:"changing-chart-height",children:"Changing Chart Height"}),"\n",(0,r.jsx)(i.p,{children:"Add to the card configuration:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"type: custom:apexcharts-card\ngraph_span: 48h\nheader:\n show: true\n title: My Custom Title\napex_config:\n chart:\n height: 400 # Adjust height in pixels\n"})}),"\n",(0,r.jsx)(i.h3,{id:"combining-with-other-cards",children:"Combining with Other Cards"}),"\n",(0,r.jsx)(i.p,{children:"Wrap in a vertical stack for dashboard integration:"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-yaml",children:"type: vertical-stack\ncards:\n - type: entity\n entity: sensor.tibber_home_current_interval_price\n - type: custom:apexcharts-card\n # ... generated chart config\n"})}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/actions",children:"Actions Guide"})}),": Complete documentation of ",(0,r.jsx)(i.code,{children:"get_apexcharts_yaml"})," parameters"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/sensors#chart-metadata",children:"Chart Metadata Sensor"})}),": Learn about dynamic Y-axis scaling"]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:(0,r.jsx)(i.a,{href:"/hass.tibber_prices/user/period-calculation",children:"Period Calculation Guide"})}),": Configure best price period detection"]}),"\n"]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"screenshots",children:"Screenshots"}),"\n",(0,r.jsx)(i.h3,{id:"gallery",children:"Gallery"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Today View (Static)"})," - Representative of all fixed day views (yesterday/today/tomorrow)"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Today View",src:n(2478).A+"",width:"960",height:"704"})}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Rolling Window (Dynamic)"})," - Shows dynamic Y-axis scaling and 48h window"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Rolling Window",src:n(5841).A+"",width:"962",height:"705"})}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Rolling Window Auto-Zoom (Dynamic)"})," - Shows progressive zoom effect"]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Rolling Window Auto-Zoom",src:n(572).A+"",width:"962",height:"706"})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Note:"})," Tomorrow view is visually identical to Today view (same chart type, just different data)."]})]})}function h(e={}){const{wrapper:i}={...(0,l.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}}}]); \ No newline at end of file diff --git a/user/assets/js/main.0445d6e2.js b/user/assets/js/main.0445d6e2.js new file mode 100644 index 0000000..30f0fe7 --- /dev/null +++ b/user/assets/js/main.0445d6e2.js @@ -0,0 +1,2 @@ +/*! For license information please see main.0445d6e2.js.LICENSE.txt */ +(globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[]).push([[8792],{83:()=>{!function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism)},115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!==s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!==s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!==s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!==s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},119:(e,t,n)=>{"use strict";n.r(t)},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t,...e(t.cause)];return[t]}},311:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,function(){return u[c++]}))).name="Invariant Violation"}throw s.framesToPop=1,s}}},440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;const r=n(1635);var a=n(2983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(2566);var i=n(253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},545:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>W});var r=n(6540),a=n(5556),o=n.n(a),i=n(115),l=n.n(i),s=n(311),u=n.n(s),c=n(2833),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map(function(e){return g[e]}),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},S=Object.keys(k).reduce(function(e,t){return e[k[t]]=t,e},{}),x=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=x(e,g.TITLE),n=x(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var r=x(e,"defaultTitle");return t||r||void 0},_=function(e){return x(e,"onChangeClientState")||function(){}},A=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return f({},e,t)},{})},C=function(e,t){return t.filter(function(e){return void 0!==e[g.BASE]}).map(function(e){return e[g.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t},[])},T=function(e,t,n){var r={};return n.filter(function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var a={};n.filter(function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)}).reverse().forEach(function(t){return e.push(t)});for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e},[]).reverse()},N=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},P=function(e){return Array.isArray(e)?e.join(""):e},O=function(e,t){return Array.isArray(e)?e.reduce(function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e},{priority:[],default:[]}):{default:e}},j=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},L=[g.NOSCRIPT,g.SCRIPT,g.STYLE],R=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[k[n]||n]=e[n],t},t)},F=function(e,t){return t.map(function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach(function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),r.createElement(e,o)})},M=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=D(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=P(t);return a?"<"+e+' data-rh="true" '+a+">"+R(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+R(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var a=Object.keys(r).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,t){var a=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+a:a},""),o=r.innerHTML||r.cssText||"",i=-1===L.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")},"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=O(e.metaTags,v),o=O(t,y),i=O(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return M(g.META,a.priority,r)+" "+M(g.LINK,o.priority,r)+" "+M(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=h.priorityMethods,c=h.linkTags,d=h.metaTags,f=h.scriptTags}return{priority:p,base:M(g.BASE,t,r),bodyAttributes:M("bodyAttributes",n,r),htmlAttributes:M("htmlAttributes",a,r),link:M(g.LINK,c,r),meta:M(g.META,d,r),noscript:M(g.NOSCRIPT,o,r),script:M(g.SCRIPT,f,r),style:M(g.STYLE,i,r),title:M(g.TITLE,{title:s,titleAttributes:u},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,W=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);W.canUseDOM=V,W.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var G=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach(function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some(function(e,t){return n=t,r.isEqualNode(e)})?o.splice(n,1):i.push(r)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return r.appendChild(e)}),{oldTags:o,newTags:i}},q=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Y=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;q(g.BODY,e.bodyAttributes),q(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=P(e)),q(g.TITLE,t)}(c,d);var f={baseTag:G(g.BASE,n),linkTags:G(g.LINK,a),metaTags:G(g.META,o),noscriptTags:G(g.NOSCRIPT,i),scriptTags:G(g.SCRIPT,s),styleTags:G(g.STYLE,u)},p={},h={};Object.keys(f).forEach(function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(h[e]=f[e].oldTags)}),t&&t(),l(e,p,h)},K=null,Q=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map(function(e){var t=f({},e.props);return delete t.context,t}),{baseTag:C(["href"],e),bodyAttributes:A("bodyAttributes",e),defer:x(e,"defer"),encode:x(e,"encodeSpecialCharacters"),htmlAttributes:A("htmlAttributes",e),linkTags:T(g.LINK,["rel","href"],e),metaTags:T(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:T(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:T(g.SCRIPT,["src","innerHTML"],e),styleTags:T(g.STYLE,["cssText"],e),title:E(e),titleAttributes:A("titleAttributes",e),prioritizeSeoTags:N(e,"prioritizeSeoTags")});W.canUseDOM?(t=o,K&&cancelAnimationFrame(K),t.defer?K=requestAnimationFrame(function(){Y(t,function(){K=null})}):(Y(t),K=null)):z&&(a=z(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Q.propTypes={context:H.isRequired},Q.displayName="HelmetDispatcher";var X=["children"],Z=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(j(this.props,"helmetData"),j(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach(function(t){var r;n=f({},n,((r={})[t]=e[t],r))}),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,function(e){if(e&&e.props){var r=e.props,o=r.children,i=m(r,X),l=Object.keys(i).reduce(function(e,t){return e[S[t]||t]=i[t],e},{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,Z),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(Q,f({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,function(e){return r.createElement(Q,f({},a,{context:e}))})},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},609:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(6540),a=n(9532),o=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s({children:e,name:t,items:n}){const a=(0,r.useMemo)(()=>t&&n?{name:t,items:n}:null,[t,n]);return(0,o.jsx)(l.Provider,{value:a,children:e})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u});n(6540);const r=JSON.parse('{"N":"localStorage","M":""}'),a=r.N;function o({key:e,oldValue:t,newValue:n,storage:r}){if(t===n)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,e,t,n,window.location.href,r),window.dispatchEvent(a)}function i(e=a){if("undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const a=i(t?.persistence);return null===a?s:{get:()=>{try{return a.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},689:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=a,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach(function(t){var n=e.filter(function(e){return e.contains(t)}).length>0;-1!==e.indexOf(t)||n||e.push(t)}),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var a=e.contentWindow;if(r=a.document,!a||!r)throw new Error("iframe inaccessible")}catch(o){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,a=!1,o=null,i=function i(){if(!a){a=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),o=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,function(){return!0},function(e){r++,n.waitForIframes(e.querySelector("html"),function(){--r||t()})},function(e){e||t()})}},{key:"forEachIframe",value:function(t,n,r){var a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var u=function(){--l<=0&&o(s)};l||u(),i.forEach(function(t){e.matches(t,a.exclude)?u():a.onIframeReady(t,function(e){n(t)&&(s++,r(e)),u()},u)})}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var a=!1,o=!1;return r.forEach(function(e,t){e.val===n&&(a=t,o=e.handled)}),this.compareNodeIframe(e,t,n)?(!1!==a||o?!1===a||o||(r[a].handled=!0):r.push({val:n,handled:!0}),!0):(!1===a&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var a=this;e.forEach(function(e){e.handled||a.getIframeContents(e.val,function(e){a.createInstanceOnIframe(e).forEachNode(t,n,r)})})}},{key:"iterateThroughNodes",value:function(e,t,n,r,a){for(var o=this,i=this.createIterator(t,e,r),l=[],s=[],u=void 0,c=void 0,d=function(){var e=o.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,function(e){return o.checkIframeFilter(u,c,e,l)},function(t){o.createInstanceOnIframe(t).forEachNode(e,function(e){return s.push(e)},r)}),s.push(u);s.forEach(function(e){n(e)}),this.iframes&&this.handleOpenIframes(l,e,n,r),a()}},{key:"forEachNode",value:function(e,t,n){var r=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),i=o.length;i||a(),o.forEach(function(o){var l=function(){r.iterateThroughNodes(e,o,t,n,function(){--i<=0&&a()})};r.iframes?r.waitForIframes(o,l):l()})}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var a=!1;return n.every(function(t){return!r.call(e,t)||(a=!0,!1)}),a}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var a in t)if(t.hasOwnProperty(a)){var o=t[a],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,function(e){return"\\"===e.charAt(0)?"?":"\x01"})).replace(/(?:\\)*\*/g,function(e){return"\\"===e.charAt(0)?"*":"\x02"})}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"})}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach(function(a){n.every(function(n){if(-1!==n.indexOf(a)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0})}),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,a="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,i="";switch(o.forEach(function(e){i+="|"+t.escapeStr(e)}),a){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach(function(e){t.opt.separateWordSearch?e.split(" ").forEach(function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)}):e.trim()&&-1===n.indexOf(e)&&n.push(e)}),{keywords:n.sort(function(e,t){return t.length-e.length}),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort(function(e,t){return e.start-t.start}).forEach(function(e){var a=t.callNoMatchOnInvalidRanges(e,r),o=a.start,i=a.end;a.valid&&(e.start=o,e.length=i-o,n.push(e),r=i)}),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,a=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?a=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:a}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,a=!0,o=n.length,i=t-o,l=parseInt(e.start,10)-i;return(r=(l=l>o?o:l)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),l<0||r-l<0||l>o||r>o?(a=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:a}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})},function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){e({value:n,nodes:r})})}},{key:"matchesExclude",value:function(e){return a.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",a=e.splitText(t),o=a.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=a.textContent,a.parentNode.replaceChild(i,a),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,a){var o=this;e.nodes.every(function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),f=e.value.substr(c+i.start);if(i.node=o.wrapRangeInTextNode(i.node,u,c),e.value=d+f,e.nodes.forEach(function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=c),e.nodes[n].end-=c)}),n-=c,a(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0})}},{key:"wrapMatches",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes(function(t){t.nodes.forEach(function(t){t=t.node;for(var a=void 0;null!==(a=e.exec(t.textContent))&&""!==a[i];)if(n(a[i],t)){var l=a.index;if(0!==i)for(var s=1;s<i;s++)l+=a[s].length;t=o.wrapRangeInTextNode(t,l,l+a[i].length),r(t.previousSibling),e.lastIndex=0}}),a()})}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes(function(t){for(var l=void 0;null!==(l=e.exec(t.value))&&""!==l[i];){var s=l.index;if(0!==i)for(var u=1;u<i;u++)s+=l[u].length;var c=s+l[i].length;o.wrapRangeInMappedTextNode(t,s,c,function(e){return n(l[i],e)},function(t,n){e.lastIndex=n,r(t)})}a()})}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var a=this;this.getTextNodes(function(o){var i=o.value.length;e.forEach(function(e,r){var l=a.checkWhitespaceRanges(e,i,o.value),s=l.start,u=l.end;l.valid&&a.wrapRangeInMappedTextNode(o,s,u,function(n){return t(n,e,o.value.substring(s,u),r)},function(t){n(t,e)})}),r()})}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,a="wrapMatches",o=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,function(e,t){return n.opt.filter(t,e,r)},o,function(){0===r&&n.opt.noMatch(e),n.opt.done(r)})}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,a="wrapMatches",o=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=o.keywords,l=o.length,s=this.opt.caseSensitive?"":"i",u=function e(t){var o=new RegExp(n.createRegExp(t),"gm"+s),u=0;n.log('Searching with expression "'+o+'"'),n[a](o,1,function(e,a){return n.opt.filter(a,t,r,u)},function(e){u++,r++,n.opt.each(e)},function(){0===u&&n.opt.noMatch(t),i[l-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])})};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),0===l?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,function(e,t,r,a){return n.opt.filter(e,t,r,a)},function(e,t){r++,n.opt.each(e,t)},function(){n.opt.done(r)})):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,function(e){t.unwrapMatches(e)},function(e){var r=a.matches(e,n),o=t.matchesExclude(e);return!r||o?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new a(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),o}();function i(e){var t=this,n=new o(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},961:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(6221)},1043:(e,t,n)=>{"use strict";n.r(t)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(4164),a=n(1312),o=n(3535),i=n(8774),l=n(3427),s=n(4848);function u({as:e,id:t,...n}){const u=(0,l.A)(),c=(0,o.v)(t);if("h1"===e||!t)return(0,s.jsx)(e,{...n,id:void 0});u.collectAnchor(t);const d=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof n.children?n.children:t});return(0,s.jsxs)(e,{...n,className:(0,r.A)("anchor",c,n.className),id:t,children:[n.children,(0,s.jsx)(i.A,{className:"hash-link",to:`#${t}`,"aria-label":d,title:d,translate:"no",children:"\u200b"})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(6540),a=n(4164),o=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function u({className:e,children:t}){const n=(0,o.A)(),{colorMode:u}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(n?"dark"===u?["dark"]:["light"]:["light","dark"]).map(n=>{const o=t({theme:n,className:(0,a.A)(e,l.themedComponent,l[`themedComponent--${n}`])});return(0,s.jsx)(r.Fragment,{children:o},n)})})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:({theme:e,className:n})=>(0,s.jsx)("img",{src:t[e],alt:r,className:n,...a})})}},1247:(e,t,n)=>{"use strict";var r=n(9982),a=n(6540),o=n(961);function i(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function l(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function s(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function u(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function c(e){if(31===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function d(e){if(s(e)!==e)throw Error(i(188))}function f(e){var t=e.tag;if(5===t||26===t||27===t||6===t)return e;for(e=e.child;null!==e;){if(null!==(t=f(e)))return t;e=e.sibling}return null}var p=Object.assign,h=Symbol.for("react.element"),m=Symbol.for("react.transitional.element"),g=Symbol.for("react.portal"),y=Symbol.for("react.fragment"),b=Symbol.for("react.strict_mode"),v=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),k=Symbol.for("react.context"),S=Symbol.for("react.forward_ref"),x=Symbol.for("react.suspense"),E=Symbol.for("react.suspense_list"),_=Symbol.for("react.memo"),A=Symbol.for("react.lazy");Symbol.for("react.scope");var C=Symbol.for("react.activity");Symbol.for("react.legacy_hidden"),Symbol.for("react.tracing_marker");var T=Symbol.for("react.memo_cache_sentinel");Symbol.for("react.view_transition");var N=Symbol.iterator;function P(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=N&&e[N]||e["@@iterator"])?e:null}var O=Symbol.for("react.client.reference");function j(e){if(null==e)return null;if("function"==typeof e)return e.$$typeof===O?null:e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case y:return"Fragment";case v:return"Profiler";case b:return"StrictMode";case x:return"Suspense";case E:return"SuspenseList";case C:return"Activity"}if("object"==typeof e)switch(e.$$typeof){case g:return"Portal";case k:return e.displayName||"Context";case w:return(e._context.displayName||"Context")+".Consumer";case S:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case _:return null!==(t=e.displayName||null)?t:j(e.type)||"Memo";case A:t=e._payload,e=e._init;try{return j(e(t))}catch(n){}}return null}var L=Array.isArray,R=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,I=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,D={pending:!1,data:null,method:null,action:null},F=[],M=-1;function z(e){return{current:e}}function B(e){0>M||(e.current=F[M],F[M]=null,M--)}function $(e,t){M++,F[M]=e.current,e.current=t}var U,H,V=z(null),W=z(null),G=z(null),q=z(null);function Y(e,t){switch($(G,t),$(W,e),$(V,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?yd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=bd(t=yd(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}B(V),$(V,e)}function K(){B(V),B(W),B(G)}function Q(e){null!==e.memoizedState&&$(q,e);var t=V.current,n=bd(t,e.type);t!==n&&($(W,e),$(V,n))}function X(e){W.current===e&&(B(V),B(W)),q.current===e&&(B(q),df._currentValue=D)}function Z(e){if(void 0===U)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);U=t&&t[1]||"",H=-1<n.stack.indexOf("\n at")?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return"\n"+U+e+H}var J=!1;function ee(e,t){if(!e||J)return"";J=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(n,[])}catch(a){var r=a}Reflect.construct(e,[],n)}else{try{n.call()}catch(o){r=o}e.call(n.prototype)}}else{try{throw Error()}catch(i){r=i}(n=e())&&"function"==typeof n.catch&&n.catch(function(){})}}catch(l){if(l&&r&&"string"==typeof l.stack)return[l.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var a=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,"name");a&&a.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var o=r.DetermineComponentFrameRoot(),i=o[0],l=o[1];if(i&&l){var s=i.split("\n"),u=l.split("\n");for(a=r=0;r<s.length&&!s[r].includes("DetermineComponentFrameRoot");)r++;for(;a<u.length&&!u[a].includes("DetermineComponentFrameRoot");)a++;if(r===s.length||a===u.length)for(r=s.length-1,a=u.length-1;1<=r&&0<=a&&s[r]!==u[a];)a--;for(;1<=r&&0<=a;r--,a--)if(s[r]!==u[a]){if(1!==r||1!==a)do{if(r--,0>--a||s[r]!==u[a]){var c="\n"+s[r].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}}while(1<=r&&0<=a);break}}}finally{J=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Z(n):""}function te(e,t){switch(e.tag){case 26:case 27:case 5:return Z(e.type);case 16:return Z("Lazy");case 13:return e.child!==t&&null!==t?Z("Suspense Fallback"):Z("Suspense");case 19:return Z("SuspenseList");case 0:case 15:return ee(e.type,!1);case 11:return ee(e.type.render,!1);case 1:return ee(e.type,!0);case 31:return Z("Activity");default:return""}}function ne(e){try{var t="",n=null;do{t+=te(e,n),n=e,e=e.return}while(e);return t}catch(r){return"\nError generating stack: "+r.message+"\n"+r.stack}}var re=Object.prototype.hasOwnProperty,ae=r.unstable_scheduleCallback,oe=r.unstable_cancelCallback,ie=r.unstable_shouldYield,le=r.unstable_requestPaint,se=r.unstable_now,ue=r.unstable_getCurrentPriorityLevel,ce=r.unstable_ImmediatePriority,de=r.unstable_UserBlockingPriority,fe=r.unstable_NormalPriority,pe=r.unstable_LowPriority,he=r.unstable_IdlePriority,me=r.log,ge=r.unstable_setDisableYieldValue,ye=null,be=null;function ve(e){if("function"==typeof me&&ge(e),be&&"function"==typeof be.setStrictMode)try{be.setStrictMode(ye,e)}catch(t){}}var we=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(ke(e)/Se|0)|0},ke=Math.log,Se=Math.LN2;var xe=256,Ee=262144,_e=4194304;function Ae(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ce(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var a=0,o=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var l=134217727&r;return 0!==l?0!==(r=l&~o)?a=Ae(r):0!==(i&=l)?a=Ae(i):n||0!==(n=l&~e)&&(a=Ae(n)):0!==(l=r&~o)?a=Ae(l):0!==i?a=Ae(i):n||0!==(n=r&~e)&&(a=Ae(n)),0===a?0:0!==t&&t!==a&&0===(t&o)&&((o=a&-a)>=(n=t&-t)||32===o&&4194048&n)?t:a}function Te(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function Ne(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function Pe(){var e=_e;return!(62914560&(_e<<=1))&&(_e=4194304),e}function Oe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function je(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Le(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-we(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|261930&n}function Re(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-we(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}function Ie(e,t){var n=t&-t;return 0!==((n=42&n?1:De(n))&(e.suspendedLanes|t))?0:n}function De(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Fe(e){return 2<(e&=-e)?8<e?134217727&e?32:268435456:8:2}function Me(){var e=I.p;return 0!==e?e:void 0===(e=window.event)?32:Cf(e.type)}function ze(e,t){var n=I.p;try{return I.p=e,t()}finally{I.p=n}}var Be=Math.random().toString(36).slice(2),$e="__reactFiber$"+Be,Ue="__reactProps$"+Be,He="__reactContainer$"+Be,Ve="__reactEvents$"+Be,We="__reactListeners$"+Be,Ge="__reactHandles$"+Be,qe="__reactResources$"+Be,Ye="__reactMarker$"+Be;function Ke(e){delete e[$e],delete e[Ue],delete e[Ve],delete e[We],delete e[Ge]}function Qe(e){var t=e[$e];if(t)return t;for(var n=e.parentNode;n;){if(t=n[He]||n[$e]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Dd(e);null!==e;){if(n=e[$e])return n;e=Dd(e)}return t}n=(e=n).parentNode}return null}function Xe(e){if(e=e[$e]||e[He]){var t=e.tag;if(5===t||6===t||13===t||31===t||26===t||27===t||3===t)return e}return null}function Ze(e){var t=e.tag;if(5===t||26===t||27===t||6===t)return e.stateNode;throw Error(i(33))}function Je(e){var t=e[qe];return t||(t=e[qe]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function et(e){e[Ye]=!0}var tt=new Set,nt={};function rt(e,t){at(e,t),at(e+"Capture",t)}function at(e,t){for(nt[e]=t,e=0;e<t.length;e++)tt.add(t[e])}var ot=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),it={},lt={};function st(e,t,n){if(a=t,re.call(lt,a)||!re.call(it,a)&&(ot.test(a)?lt[a]=!0:(it[a]=!0,0)))if(null===n)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":return void e.removeAttribute(t);case"boolean":var r=t.toLowerCase().slice(0,5);if("data-"!==r&&"aria-"!==r)return void e.removeAttribute(t)}e.setAttribute(t,""+n)}var a}function ut(e,t,n){if(null===n)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":return void e.removeAttribute(t)}e.setAttribute(t,""+n)}}function ct(e,t,n,r){if(null===r)e.removeAttribute(n);else{switch(typeof r){case"undefined":case"function":case"symbol":case"boolean":return void e.removeAttribute(n)}e.setAttributeNS(t,n,""+r)}}function dt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function ft(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function pt(e){if(!e._valueTracker){var t=ft(e)?"checked":"value";e._valueTracker=function(e,t,n){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&void 0!==r&&"function"==typeof r.get&&"function"==typeof r.set){var a=r.get,o=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){n=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(e){n=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e,t,""+e[t])}}function ht(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ft(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function mt(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var gt=/[\n"\\]/g;function yt(e){return e.replace(gt,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function bt(e,t,n,r,a,o,i,l){e.name="",null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.type=i:e.removeAttribute("type"),null!=t?"number"===i?(0===t&&""===e.value||e.value!=t)&&(e.value=""+dt(t)):e.value!==""+dt(t)&&(e.value=""+dt(t)):"submit"!==i&&"reset"!==i||e.removeAttribute("value"),null!=t?wt(e,i,dt(t)):null!=n?wt(e,i,dt(n)):null!=r&&e.removeAttribute("value"),null==a&&null!=o&&(e.defaultChecked=!!o),null!=a&&(e.checked=a&&"function"!=typeof a&&"symbol"!=typeof a),null!=l&&"function"!=typeof l&&"symbol"!=typeof l&&"boolean"!=typeof l?e.name=""+dt(l):e.removeAttribute("name")}function vt(e,t,n,r,a,o,i,l){if(null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.type=o),null!=t||null!=n){if(("submit"===o||"reset"===o)&&null==t)return void pt(e);n=null!=n?""+dt(n):"",t=null!=t?""+dt(t):n,l||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:a)&&"symbol"!=typeof r&&!!r,e.checked=l?e.checked:!!r,e.defaultChecked=!!r,null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i&&(e.name=i),pt(e)}function wt(e,t,n){"number"===t&&mt(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function kt(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+dt(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function St(e,t,n){null==t||((t=""+dt(t))!==e.value&&(e.value=t),null!=n)?e.defaultValue=null!=n?""+dt(n):"":e.defaultValue!==t&&(e.defaultValue=t)}function xt(e,t,n,r){if(null==t){if(null!=r){if(null!=n)throw Error(i(92));if(L(r)){if(1<r.length)throw Error(i(93));r=r[0]}n=r}null==n&&(n=""),t=n}n=dt(t),e.defaultValue=n,(r=e.textContent)===n&&""!==r&&null!==r&&(e.value=r),pt(e)}function Et(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var _t=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function At(e,t,n){var r=0===t.indexOf("--");null==n||"boolean"==typeof n||""===n?r?e.setProperty(t,""):"float"===t?e.cssFloat="":e[t]="":r?e.setProperty(t,n):"number"!=typeof n||0===n||_t.has(t)?"float"===t?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function Ct(e,t,n){if(null!=t&&"object"!=typeof t)throw Error(i(62));if(e=e.style,null!=n){for(var r in n)!n.hasOwnProperty(r)||null!=t&&t.hasOwnProperty(r)||(0===r.indexOf("--")?e.setProperty(r,""):"float"===r?e.cssFloat="":e[r]="");for(var a in t)r=t[a],t.hasOwnProperty(a)&&n[a]!==r&&At(e,a,r)}else for(var o in t)t.hasOwnProperty(o)&&At(e,o,t[o])}function Tt(e){if(-1===e.indexOf("-"))return!1;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}}var Nt=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Pt=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Ot(e){return Pt.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function jt(){}var Lt=null;function Rt(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var It=null,Dt=null;function Ft(e){var t=Xe(e);if(t&&(e=t.stateNode)){var n=e[Ue]||null;e:switch(e=t.stateNode,t.type){case"input":if(bt(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+yt(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=r[Ue]||null;if(!a)throw Error(i(90));bt(r,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name)}}for(t=0;t<n.length;t++)(r=n[t]).form===e.form&&ht(r)}break e;case"textarea":St(e,n.value,n.defaultValue);break e;case"select":null!=(t=n.value)&&kt(e,!!n.multiple,t,!1)}}}var Mt=!1;function zt(e,t,n){if(Mt)return e(t,n);Mt=!0;try{return e(t)}finally{if(Mt=!1,(null!==It||null!==Dt)&&(Ju(),It&&(t=It,e=Dt,Dt=It=null,Ft(t),e)))for(t=0;t<e.length;t++)Ft(e[t])}}function Bt(e,t){var n=e.stateNode;if(null===n)return null;var r=n[Ue]||null;if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var $t=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),Ut=!1;if($t)try{var Ht={};Object.defineProperty(Ht,"passive",{get:function(){Ut=!0}}),window.addEventListener("test",Ht,Ht),window.removeEventListener("test",Ht,Ht)}catch(Zf){Ut=!1}var Vt=null,Wt=null,Gt=null;function qt(){if(Gt)return Gt;var e,t,n=Wt,r=n.length,a="value"in Vt?Vt.value:Vt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Gt=a.slice(e,1<t?1-t:void 0)}function Yt(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function Kt(){return!0}function Qt(){return!1}function Xt(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?Kt:Qt,this.isPropagationStopped=Qt,this}return p(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=Kt)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=Kt)},persist:function(){},isPersistent:Kt}),t}var Zt,Jt,en,tn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},nn=Xt(tn),rn=p({},tn,{view:0,detail:0}),an=Xt(rn),on=p({},rn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:yn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==en&&(en&&"mousemove"===e.type?(Zt=e.screenX-en.screenX,Jt=e.screenY-en.screenY):Jt=Zt=0,en=e),Zt)},movementY:function(e){return"movementY"in e?e.movementY:Jt}}),ln=Xt(on),sn=Xt(p({},on,{dataTransfer:0})),un=Xt(p({},rn,{relatedTarget:0})),cn=Xt(p({},tn,{animationName:0,elapsedTime:0,pseudoElement:0})),dn=Xt(p({},tn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}})),fn=Xt(p({},tn,{data:0})),pn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},hn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},mn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function gn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=mn[e])&&!!t[e]}function yn(){return gn}var bn=Xt(p({},rn,{key:function(e){if(e.key){var t=pn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=Yt(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?hn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:yn,charCode:function(e){return"keypress"===e.type?Yt(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?Yt(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}})),vn=Xt(p({},on,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),wn=Xt(p({},rn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:yn})),kn=Xt(p({},tn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Sn=Xt(p({},on,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),xn=Xt(p({},tn,{newState:0,oldState:0})),En=[9,13,27,32],_n=$t&&"CompositionEvent"in window,An=null;$t&&"documentMode"in document&&(An=document.documentMode);var Cn=$t&&"TextEvent"in window&&!An,Tn=$t&&(!_n||An&&8<An&&11>=An),Nn=String.fromCharCode(32),Pn=!1;function On(e,t){switch(e){case"keyup":return-1!==En.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function jn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Ln=!1;var Rn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function In(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Rn[e.type]:"textarea"===t}function Dn(e,t,n,r){It?Dt?Dt.push(r):Dt=[r]:It=r,0<(t=rd(t,"onChange")).length&&(n=new nn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Fn=null,Mn=null;function zn(e){Kc(e,0)}function Bn(e){if(ht(Ze(e)))return e}function $n(e,t){if("change"===e)return t}var Un=!1;if($t){var Hn;if($t){var Vn="oninput"in document;if(!Vn){var Wn=document.createElement("div");Wn.setAttribute("oninput","return;"),Vn="function"==typeof Wn.oninput}Hn=Vn}else Hn=!1;Un=Hn&&(!document.documentMode||9<document.documentMode)}function Gn(){Fn&&(Fn.detachEvent("onpropertychange",qn),Mn=Fn=null)}function qn(e){if("value"===e.propertyName&&Bn(Mn)){var t=[];Dn(t,Mn,e,Rt(e)),zt(zn,t)}}function Yn(e,t,n){"focusin"===e?(Gn(),Mn=n,(Fn=t).attachEvent("onpropertychange",qn)):"focusout"===e&&Gn()}function Kn(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Bn(Mn)}function Qn(e,t){if("click"===e)return Bn(t)}function Xn(e,t){if("input"===e||"change"===e)return Bn(t)}var Zn="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function Jn(e,t){if(Zn(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!re.call(t,a)||!Zn(e[a],t[a]))return!1}return!0}function er(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function tr(e,t){var n,r=er(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=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=er(r)}}function nr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?nr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function rr(e){for(var t=mt((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=mt((e=t.contentWindow).document)}return t}function ar(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var or=$t&&"documentMode"in document&&11>=document.documentMode,ir=null,lr=null,sr=null,ur=!1;function cr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;ur||null==ir||ir!==mt(r)||("selectionStart"in(r=ir)&&ar(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},sr&&Jn(sr,r)||(sr=r,0<(r=rd(lr,"onSelect")).length&&(t=new nn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=ir)))}function dr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var fr={animationend:dr("Animation","AnimationEnd"),animationiteration:dr("Animation","AnimationIteration"),animationstart:dr("Animation","AnimationStart"),transitionrun:dr("Transition","TransitionRun"),transitionstart:dr("Transition","TransitionStart"),transitioncancel:dr("Transition","TransitionCancel"),transitionend:dr("Transition","TransitionEnd")},pr={},hr={};function mr(e){if(pr[e])return pr[e];if(!fr[e])return e;var t,n=fr[e];for(t in n)if(n.hasOwnProperty(t)&&t in hr)return pr[e]=n[t];return e}$t&&(hr=document.createElement("div").style,"AnimationEvent"in window||(delete fr.animationend.animation,delete fr.animationiteration.animation,delete fr.animationstart.animation),"TransitionEvent"in window||delete fr.transitionend.transition);var gr=mr("animationend"),yr=mr("animationiteration"),br=mr("animationstart"),vr=mr("transitionrun"),wr=mr("transitionstart"),kr=mr("transitioncancel"),Sr=mr("transitionend"),xr=new Map,Er="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function _r(e,t){xr.set(e,t),rt(t,[e])}Er.push("scrollEnd");var Ar="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},Cr=[],Tr=0,Nr=0;function Pr(){for(var e=Tr,t=Nr=Tr=0;t<e;){var n=Cr[t];Cr[t++]=null;var r=Cr[t];Cr[t++]=null;var a=Cr[t];Cr[t++]=null;var o=Cr[t];if(Cr[t++]=null,null!==r&&null!==a){var i=r.pending;null===i?a.next=a:(a.next=i.next,i.next=a),r.pending=a}0!==o&&Rr(n,a,o)}}function Or(e,t,n,r){Cr[Tr++]=e,Cr[Tr++]=t,Cr[Tr++]=n,Cr[Tr++]=r,Nr|=r,e.lanes|=r,null!==(e=e.alternate)&&(e.lanes|=r)}function jr(e,t,n,r){return Or(e,t,n,r),Ir(e)}function Lr(e,t){return Or(e,null,null,t),Ir(e)}function Rr(e,t,n){e.lanes|=n;var r=e.alternate;null!==r&&(r.lanes|=n);for(var a=!1,o=e.return;null!==o;)o.childLanes|=n,null!==(r=o.alternate)&&(r.childLanes|=n),22===o.tag&&(null===(e=o.stateNode)||1&e._visibility||(a=!0)),e=o,o=o.return;return 3===e.tag?(o=e.stateNode,a&&null!==t&&(a=31-we(n),null===(r=(e=o.hiddenUpdates)[a])?e[a]=[t]:r.push(t),t.lane=536870912|n),o):null}function Ir(e){if(50<Vu)throw Vu=0,Wu=null,Error(i(185));for(var t=e.return;null!==t;)t=(e=t).return;return 3===e.tag?e.stateNode:null}var Dr={};function Fr(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mr(e,t,n,r){return new Fr(e,t,n,r)}function zr(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Br(e,t){var n=e.alternate;return null===n?((n=Mr(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=65011712&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function $r(e,t){e.flags&=65011714;var n=e.alternate;return null===n?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Ur(e,t,n,r,a,o){var l=0;if(r=e,"function"==typeof e)zr(e)&&(l=1);else if("string"==typeof e)l=function(e,t,n){if(1===n||null!=t.itemProp)return!1;switch(e){case"meta":case"title":return!0;case"style":if("string"!=typeof t.precedence||"string"!=typeof t.href||""===t.href)break;return!0;case"link":if("string"!=typeof t.rel||"string"!=typeof t.href||""===t.href||t.onLoad||t.onError)break;return"stylesheet"!==t.rel||(e=t.disabled,"string"==typeof t.precedence&&null==e);case"script":if(t.async&&"function"!=typeof t.async&&"symbol"!=typeof t.async&&!t.onLoad&&!t.onError&&t.src&&"string"==typeof t.src)return!0}return!1}(e,n,V.current)?26:"html"===e||"head"===e||"body"===e?27:5;else e:switch(e){case C:return(e=Mr(31,n,t,a)).elementType=C,e.lanes=o,e;case y:return Hr(n.children,a,o,t);case b:l=8,a|=24;break;case v:return(e=Mr(12,n,t,2|a)).elementType=v,e.lanes=o,e;case x:return(e=Mr(13,n,t,a)).elementType=x,e.lanes=o,e;case E:return(e=Mr(19,n,t,a)).elementType=E,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case k:l=10;break e;case w:l=9;break e;case S:l=11;break e;case _:l=14;break e;case A:l=16,r=null;break e}l=29,n=Error(i(130,null===e?"null":typeof e,"")),r=null}return(t=Mr(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Hr(e,t,n,r){return(e=Mr(7,e,r,t)).lanes=n,e}function Vr(e,t,n){return(e=Mr(6,e,null,t)).lanes=n,e}function Wr(e){var t=Mr(18,null,null,0);return t.stateNode=e,t}function Gr(e,t,n){return(t=Mr(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var qr=new WeakMap;function Yr(e,t){if("object"==typeof e&&null!==e){var n=qr.get(e);return void 0!==n?n:(t={value:e,source:t,stack:ne(t)},qr.set(e,t),t)}return{value:e,source:t,stack:ne(t)}}var Kr=[],Qr=0,Xr=null,Zr=0,Jr=[],ea=0,ta=null,na=1,ra="";function aa(e,t){Kr[Qr++]=Zr,Kr[Qr++]=Xr,Xr=e,Zr=t}function oa(e,t,n){Jr[ea++]=na,Jr[ea++]=ra,Jr[ea++]=ta,ta=e;var r=na;e=ra;var a=32-we(r)-1;r&=~(1<<a),n+=1;var o=32-we(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,na=1<<32-we(t)+a|n<<a|r,ra=o+e}else na=1<<o|n<<a|r,ra=e}function ia(e){null!==e.return&&(aa(e,1),oa(e,1,0))}function la(e){for(;e===Xr;)Xr=Kr[--Qr],Kr[Qr]=null,Zr=Kr[--Qr],Kr[Qr]=null;for(;e===ta;)ta=Jr[--ea],Jr[ea]=null,ra=Jr[--ea],Jr[ea]=null,na=Jr[--ea],Jr[ea]=null}function sa(e,t){Jr[ea++]=na,Jr[ea++]=ra,Jr[ea++]=ta,na=t.id,ra=t.overflow,ta=e}var ua=null,ca=null,da=!1,fa=null,pa=!1,ha=Error(i(519));function ma(e){throw ka(Yr(Error(i(418,1<arguments.length&&void 0!==arguments[1]&&arguments[1]?"text":"HTML","")),e)),ha}function ga(e){var t=e.stateNode,n=e.type,r=e.memoizedProps;switch(t[$e]=e,t[Ue]=r,n){case"dialog":Qc("cancel",t),Qc("close",t);break;case"iframe":case"object":case"embed":Qc("load",t);break;case"video":case"audio":for(n=0;n<qc.length;n++)Qc(qc[n],t);break;case"source":Qc("error",t);break;case"img":case"image":case"link":Qc("error",t),Qc("load",t);break;case"details":Qc("toggle",t);break;case"input":Qc("invalid",t),vt(t,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case"select":Qc("invalid",t);break;case"textarea":Qc("invalid",t),xt(t,r.value,r.defaultValue,r.children)}"string"!=typeof(n=r.children)&&"number"!=typeof n&&"bigint"!=typeof n||t.textContent===""+n||!0===r.suppressHydrationWarning||ud(t.textContent,n)?(null!=r.popover&&(Qc("beforetoggle",t),Qc("toggle",t)),null!=r.onScroll&&Qc("scroll",t),null!=r.onScrollEnd&&Qc("scrollend",t),null!=r.onClick&&(t.onclick=jt),t=!0):t=!1,t||ma(e,!0)}function ya(e){for(ua=e.return;ua;)switch(ua.tag){case 5:case 31:case 13:return void(pa=!1);case 27:case 3:return void(pa=!0);default:ua=ua.return}}function ba(e){if(e!==ua)return!1;if(!da)return ya(e),da=!0,!1;var t,n=e.tag;if((t=3!==n&&27!==n)&&((t=5===n)&&(t=!("form"!==(t=e.type)&&"button"!==t)||vd(e.type,e.memoizedProps)),t=!t),t&&ca&&ma(e),ya(e),13===n){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));ca=Id(e)}else if(31===n){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));ca=Id(e)}else 27===n?(n=ca,Ad(e.type)?(e=Rd,Rd=null,ca=e):ca=n):ca=ua?Ld(e.stateNode.nextSibling):null;return!0}function va(){ca=ua=null,da=!1}function wa(){var e=fa;return null!==e&&(null===Pu?Pu=e:Pu.push.apply(Pu,e),fa=null),e}function ka(e){null===fa?fa=[e]:fa.push(e)}var Sa=z(null),xa=null,Ea=null;function _a(e,t,n){$(Sa,t._currentValue),t._currentValue=n}function Aa(e){e._currentValue=Sa.current,B(Sa)}function Ca(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Ta(e,t,n,r){var a=e.child;for(null!==a&&(a.return=e);null!==a;){var o=a.dependencies;if(null!==o){var l=a.child;o=o.firstContext;e:for(;null!==o;){var s=o;o=a;for(var u=0;u<t.length;u++)if(s.context===t[u]){o.lanes|=n,null!==(s=o.alternate)&&(s.lanes|=n),Ca(o.return,n,e),r||(l=null);break e}o=s.next}}else if(18===a.tag){if(null===(l=a.return))throw Error(i(341));l.lanes|=n,null!==(o=l.alternate)&&(o.lanes|=n),Ca(l,n,e),l=null}else l=a.child;if(null!==l)l.return=a;else for(l=a;null!==l;){if(l===e){l=null;break}if(null!==(a=l.sibling)){a.return=l.return,l=a;break}l=l.return}a=l}}function Na(e,t,n,r){e=null;for(var a=t,o=!1;null!==a;){if(!o)if(524288&a.flags)o=!0;else if(262144&a.flags)break;if(10===a.tag){var l=a.alternate;if(null===l)throw Error(i(387));if(null!==(l=l.memoizedProps)){var s=a.type;Zn(a.pendingProps.value,l.value)||(null!==e?e.push(s):e=[s])}}else if(a===q.current){if(null===(l=a.alternate))throw Error(i(387));l.memoizedState.memoizedState!==a.memoizedState.memoizedState&&(null!==e?e.push(df):e=[df])}a=a.return}null!==e&&Ta(t,e,n,r),t.flags|=262144}function Pa(e){for(e=e.firstContext;null!==e;){if(!Zn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Oa(e){xa=e,Ea=null,null!==(e=e.dependencies)&&(e.firstContext=null)}function ja(e){return Ra(xa,e)}function La(e,t){return null===xa&&Oa(e),Ra(e,t)}function Ra(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},null===Ea){if(null===e)throw Error(i(308));Ea=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else Ea=Ea.next=t;return n}var Ia="undefined"!=typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},Da=r.unstable_scheduleCallback,Fa=r.unstable_NormalPriority,Ma={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function za(){return{controller:new Ia,data:new Map,refCount:0}}function Ba(e){e.refCount--,0===e.refCount&&Da(Fa,function(){e.controller.abort()})}var $a=null,Ua=0,Ha=0,Va=null;function Wa(){if(0===--Ua&&null!==$a){null!==Va&&(Va.status="fulfilled");var e=$a;$a=null,Ha=0,Va=null;for(var t=0;t<e.length;t++)(0,e[t])()}}var Ga=R.S;R.S=function(e,t){Lu=se(),"object"==typeof t&&null!==t&&"function"==typeof t.then&&function(e,t){if(null===$a){var n=$a=[];Ua=0,Ha=Uc(),Va={status:"pending",value:void 0,then:function(e){n.push(e)}}}Ua++,t.then(Wa,Wa)}(0,t),null!==Ga&&Ga(e,t)};var qa=z(null);function Ya(){var e=qa.current;return null!==e?e:hu.pooledCache}function Ka(e,t){$(qa,null===t?qa.current:t.pool)}function Qa(){var e=Ya();return null===e?null:{parent:Ma._currentValue,pool:e}}var Xa=Error(i(460)),Za=Error(i(474)),Ja=Error(i(542)),eo={then:function(){}};function to(e){return"fulfilled"===(e=e.status)||"rejected"===e}function no(e,t,n){switch(void 0===(n=e[n])?e.push(t):n!==t&&(t.then(jt,jt),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw io(e=t.reason),e;default:if("string"==typeof t.status)t.then(jt,jt);else{if(null!==(e=hu)&&100<e.shellSuspendCounter)throw Error(i(482));(e=t).status="pending",e.then(function(e){if("pending"===t.status){var n=t;n.status="fulfilled",n.value=e}},function(e){if("pending"===t.status){var n=t;n.status="rejected",n.reason=e}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw io(e=t.reason),e}throw ao=t,Xa}}function ro(e){try{return(0,e._init)(e._payload)}catch(t){if(null!==t&&"object"==typeof t&&"function"==typeof t.then)throw ao=t,Xa;throw t}}var ao=null;function oo(){if(null===ao)throw Error(i(459));var e=ao;return ao=null,e}function io(e){if(e===Xa||e===Ja)throw Error(i(483))}var lo=null,so=0;function uo(e){var t=so;return so+=1,null===lo&&(lo=[]),no(lo,e,t)}function co(e,t){t=t.props.ref,e.ref=void 0!==t?t:null}function fo(e,t){if(t.$$typeof===h)throw Error(i(525));throw e=Object.prototype.toString.call(t),Error(i(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function po(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e){for(var t=new Map;null!==e;)null!==e.key?t.set(e.key,e):t.set(e.index,e),e=e.sibling;return t}function a(e,t){return(e=Br(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=67108866,n):r:(t.flags|=67108866,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=67108866),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Vr(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){var o=n.type;return o===y?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===A&&ro(o)===t.type)?(co(t=a(t,n.props),n),t.return=e,t):(co(t=Ur(n.type,n.key,n.props,null,e.mode,r),n),t.return=e,t)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Gr(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Hr(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t||"bigint"==typeof t)return(t=Vr(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case m:return co(n=Ur(t.type,t.key,t.props,null,e.mode,n),t),n.return=e,n;case g:return(t=Gr(t,e.mode,n)).return=e,t;case A:return f(e,t=ro(t),n)}if(L(t)||P(t))return(t=Hr(t,e.mode,n,null)).return=e,t;if("function"==typeof t.then)return f(e,uo(t),n);if(t.$$typeof===k)return f(e,La(e,t),n);fo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n||"bigint"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case m:return n.key===a?u(e,t,n,r):null;case g:return n.key===a?c(e,t,n,r):null;case A:return p(e,t,n=ro(n),r)}if(L(n)||P(n))return null!==a?null:d(e,t,n,r,null);if("function"==typeof n.then)return p(e,t,uo(n),r);if(n.$$typeof===k)return p(e,t,La(e,n),r);fo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r||"bigint"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case m:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case g:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case A:return h(e,t,n,r=ro(r),a)}if(L(r)||P(r))return d(t,e=e.get(n)||null,r,a,null);if("function"==typeof r.then)return h(e,t,n,uo(r),a);if(r.$$typeof===k)return h(e,t,n,La(t,r),a);fo(t,r)}return null}function b(s,u,c,d){if("object"==typeof c&&null!==c&&c.type===y&&null===c.key&&(c=c.props.children),"object"==typeof c&&null!==c){switch(c.$$typeof){case m:e:{for(var v=c.key;null!==u;){if(u.key===v){if((v=c.type)===y){if(7===u.tag){n(s,u.sibling),(d=a(u,c.props.children)).return=s,s=d;break e}}else if(u.elementType===v||"object"==typeof v&&null!==v&&v.$$typeof===A&&ro(v)===u.type){n(s,u.sibling),co(d=a(u,c.props),c),d.return=s,s=d;break e}n(s,u);break}t(s,u),u=u.sibling}c.type===y?((d=Hr(c.props.children,s.mode,d,c.key)).return=s,s=d):(co(d=Ur(c.type,c.key,c.props,null,s.mode,d),c),d.return=s,s=d)}return l(s);case g:e:{for(v=c.key;null!==u;){if(u.key===v){if(4===u.tag&&u.stateNode.containerInfo===c.containerInfo&&u.stateNode.implementation===c.implementation){n(s,u.sibling),(d=a(u,c.children||[])).return=s,s=d;break e}n(s,u);break}t(s,u),u=u.sibling}(d=Gr(c,s.mode,d)).return=s,s=d}return l(s);case A:return b(s,u,c=ro(c),d)}if(L(c))return function(a,i,l,s){for(var u=null,c=null,d=i,m=i=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var y=p(a,d,l[m],s);if(null===y){null===d&&(d=g);break}e&&d&&null===y.alternate&&t(a,d),i=o(y,i,m),null===c?u=y:c.sibling=y,c=y,d=g}if(m===l.length)return n(a,d),da&&aa(a,m),u;if(null===d){for(;m<l.length;m++)null!==(d=f(a,l[m],s))&&(i=o(d,i,m),null===c?u=d:c.sibling=d,c=d);return da&&aa(a,m),u}for(d=r(d);m<l.length;m++)null!==(g=h(d,a,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),i=o(g,i,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach(function(e){return t(a,e)}),da&&aa(a,m),u}(s,u,c,d);if(P(c)){if("function"!=typeof(v=P(c)))throw Error(i(150));return function(a,l,s,u){if(null==s)throw Error(i(151));for(var c=null,d=null,m=l,g=l=0,y=null,b=s.next();null!==m&&!b.done;g++,b=s.next()){m.index>g?(y=m,m=null):y=m.sibling;var v=p(a,m,b.value,u);if(null===v){null===m&&(m=y);break}e&&m&&null===v.alternate&&t(a,m),l=o(v,l,g),null===d?c=v:d.sibling=v,d=v,m=y}if(b.done)return n(a,m),da&&aa(a,g),c;if(null===m){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return da&&aa(a,g),c}for(m=r(m);!b.done;g++,b=s.next())null!==(b=h(m,a,g,b.value,u))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&m.forEach(function(e){return t(a,e)}),da&&aa(a,g),c}(s,u,c=v.call(c),d)}if("function"==typeof c.then)return b(s,u,uo(c),d);if(c.$$typeof===k)return b(s,u,La(s,c),d);fo(s,c)}return"string"==typeof c&&""!==c||"number"==typeof c||"bigint"==typeof c?(c=""+c,null!==u&&6===u.tag?(n(s,u.sibling),(d=a(u,c)).return=s,s=d):(n(s,u),(d=Vr(c,s.mode,d)).return=s,s=d),l(s)):n(s,u)}return function(e,t,n,r){try{so=0;var a=b(e,t,n,r);return lo=null,a}catch(i){if(i===Xa||i===Ja)throw i;var o=Mr(29,i,null,e.mode);return o.lanes=r,o.return=e,o}}}var ho=po(!0),mo=po(!1),go=!1;function yo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function bo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function vo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function wo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&pu){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,t=Ir(e),Rr(e,null,n),t}return Or(e,r,t,n),Ir(e)}function ko(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194048&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Re(e,n)}}function So(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var xo=!1;function Eo(){if(xo){if(null!==Va)throw Va}}function _o(e,t,n,r){xo=!1;var a=e.updateQueue;go=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?o=u:i.next=u,i=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,c=u=s=null,l=o;;){var f=-536870913&l.lane,h=f!==l.lane;if(h?(gu&f)===f:(r&f)===f){0!==f&&f===Ha&&(xo=!0),null!==c&&(c=c.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var m=e,g=l;f=t;var y=n;switch(g.tag){case 1:if("function"==typeof(m=g.payload)){d=m.call(y,d,f);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(f="function"==typeof(m=g.payload)?m.call(y,d,f):m))break e;d=p({},d,f);break e;case 2:go=!0}}null!==(f=l.callback)&&(e.flags|=64,h&&(e.flags|=8192),null===(h=a.callbacks)?a.callbacks=[f]:h.push(f))}else h={lane:f,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=h,s=d):c=c.next=h,i|=f;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(h=l).next,h.next=null,a.lastBaseUpdate=h,a.shared.pending=null}}null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null===o&&(a.shared.lanes=0),Eu|=i,e.lanes=i,e.memoizedState=d}}function Ao(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function Co(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;e<n.length;e++)Ao(n[e],t)}var To=z(null),No=z(0);function Po(e,t){$(No,e=Su),$(To,t),Su=e|t.baseLanes}function Oo(){$(No,Su),$(To,To.current)}function jo(){Su=No.current,B(To),B(No)}var Lo=z(null),Ro=null;function Io(e){var t=e.alternate;$(Bo,1&Bo.current),$(Lo,e),null===Ro&&(null===t||null!==To.current||null!==t.memoizedState)&&(Ro=e)}function Do(e){$(Bo,Bo.current),$(Lo,e),null===Ro&&(Ro=e)}function Fo(e){22===e.tag?($(Bo,Bo.current),$(Lo,e),null===Ro&&(Ro=e)):Mo()}function Mo(){$(Bo,Bo.current),$(Lo,Lo.current)}function zo(e){B(Lo),Ro===e&&(Ro=null),B(Bo)}var Bo=z(0);function $o(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||Od(n)||jd(n)))return t}else if(19!==t.tag||"forwards"!==t.memoizedProps.revealOrder&&"backwards"!==t.memoizedProps.revealOrder&&"unstable_legacy-backwards"!==t.memoizedProps.revealOrder&&"together"!==t.memoizedProps.revealOrder){if(null!==t.child){t.child.return=t,t=t.child;continue}}else if(128&t.flags)return t;if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Uo=0,Ho=null,Vo=null,Wo=null,Go=!1,qo=!1,Yo=!1,Ko=0,Qo=0,Xo=null,Zo=0;function Jo(){throw Error(i(321))}function ei(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Zn(e[n],t[n]))return!1;return!0}function ti(e,t,n,r,a,o){return Uo=o,Ho=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,R.H=null===e||null===e.memoizedState?gl:yl,Yo=!1,o=n(r,a),Yo=!1,qo&&(o=ri(t,n,r,a)),ni(e),o}function ni(e){R.H=ml;var t=null!==Vo&&null!==Vo.next;if(Uo=0,Wo=Vo=Ho=null,Go=!1,Qo=0,Xo=null,t)throw Error(i(300));null===e||Ll||null!==(e=e.dependencies)&&Pa(e)&&(Ll=!0)}function ri(e,t,n,r){Ho=e;var a=0;do{if(qo&&(Xo=null),Qo=0,qo=!1,25<=a)throw Error(i(301));if(a+=1,Wo=Vo=null,null!=e.updateQueue){var o=e.updateQueue;o.lastEffect=null,o.events=null,o.stores=null,null!=o.memoCache&&(o.memoCache.index=0)}R.H=bl,o=t(n,r)}while(qo);return o}function ai(){var e=R.H,t=e.useState()[0];return t="function"==typeof t.then?ci(t):t,e=e.useState()[0],(null!==Vo?Vo.memoizedState:null)!==e&&(Ho.flags|=1024),t}function oi(){var e=0!==Ko;return Ko=0,e}function ii(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function li(e){if(Go){for(e=e.memoizedState;null!==e;){var t=e.queue;null!==t&&(t.pending=null),e=e.next}Go=!1}Uo=0,Wo=Vo=Ho=null,qo=!1,Qo=Ko=0,Xo=null}function si(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Wo?Ho.memoizedState=Wo=e:Wo=Wo.next=e,Wo}function ui(){if(null===Vo){var e=Ho.alternate;e=null!==e?e.memoizedState:null}else e=Vo.next;var t=null===Wo?Ho.memoizedState:Wo.next;if(null!==t)Wo=t,Vo=e;else{if(null===e){if(null===Ho.alternate)throw Error(i(467));throw Error(i(310))}e={memoizedState:(Vo=e).memoizedState,baseState:Vo.baseState,baseQueue:Vo.baseQueue,queue:Vo.queue,next:null},null===Wo?Ho.memoizedState=Wo=e:Wo=Wo.next=e}return Wo}function ci(e){var t=Qo;return Qo+=1,null===Xo&&(Xo=[]),e=no(Xo,e,t),t=Ho,null===(null===Wo?t.memoizedState:Wo.next)&&(t=t.alternate,R.H=null===t||null===t.memoizedState?gl:yl),e}function di(e){if(null!==e&&"object"==typeof e){if("function"==typeof e.then)return ci(e);if(e.$$typeof===k)return ja(e)}throw Error(i(438,String(e)))}function fi(e){var t=null,n=Ho.updateQueue;if(null!==n&&(t=n.memoCache),null==t){var r=Ho.alternate;null!==r&&(null!==(r=r.updateQueue)&&(null!=(r=r.memoCache)&&(t={data:r.data.map(function(e){return e.slice()}),index:0})))}if(null==t&&(t={data:[],index:0}),null===n&&(n={lastEffect:null,events:null,stores:null,memoCache:null},Ho.updateQueue=n),n.memoCache=t,void 0===(n=t.data[t.index]))for(n=t.data[t.index]=Array(e),r=0;r<e;r++)n[r]=T;return t.index++,n}function pi(e,t){return"function"==typeof t?t(e):t}function hi(e){return mi(ui(),Vo,e)}function mi(e,t,n){var r=e.queue;if(null===r)throw Error(i(311));r.lastRenderedReducer=n;var a=e.baseQueue,o=r.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}t.baseQueue=a=o,r.pending=null}if(o=e.baseState,null===a)e.memoizedState=o;else{var s=l=null,u=null,c=t=a.next,d=!1;do{var f=-536870913&c.lane;if(f!==c.lane?(gu&f)===f:(Uo&f)===f){var p=c.revertLane;if(0===p)null!==u&&(u=u.next={lane:0,revertLane:0,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),f===Ha&&(d=!0);else{if((Uo&p)===p){c=c.next,p===Ha&&(d=!0);continue}f={lane:0,revertLane:c.revertLane,gesture:null,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},null===u?(s=u=f,l=o):u=u.next=f,Ho.lanes|=p,Eu|=p}f=c.action,Yo&&n(o,f),o=c.hasEagerState?c.eagerState:n(o,f)}else p={lane:f,revertLane:c.revertLane,gesture:c.gesture,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null},null===u?(s=u=p,l=o):u=u.next=p,Ho.lanes|=f,Eu|=f;c=c.next}while(null!==c&&c!==t);if(null===u?l=o:u.next=s,!Zn(o,e.memoizedState)&&(Ll=!0,d&&null!==(n=Va)))throw n;e.memoizedState=o,e.baseState=l,e.baseQueue=u,r.lastRenderedState=o}return null===a&&(r.lanes=0),[e.memoizedState,r.dispatch]}function gi(e){var t=ui(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);Zn(o,t.memoizedState)||(Ll=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function yi(e,t,n){var r=Ho,a=ui(),o=da;if(o){if(void 0===n)throw Error(i(407));n=n()}else n=t();var l=!Zn((Vo||a).memoizedState,n);if(l&&(a.memoizedState=n,Ll=!0),a=a.queue,Ui(wi.bind(null,r,a,e),[e]),a.getSnapshot!==t||l||null!==Wo&&1&Wo.memoizedState.tag){if(r.flags|=2048,Fi(9,{destroy:void 0},vi.bind(null,r,a,n,t),null),null===hu)throw Error(i(349));o||127&Uo||bi(r,t,n)}return n}function bi(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=Ho.updateQueue)?(t={lastEffect:null,events:null,stores:null,memoCache:null},Ho.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function vi(e,t,n,r){t.value=n,t.getSnapshot=r,ki(t)&&Si(e)}function wi(e,t,n){return n(function(){ki(t)&&Si(e)})}function ki(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Zn(e,n)}catch(r){return!0}}function Si(e){var t=Lr(e,2);null!==t&&Yu(t,e,2)}function xi(e){var t=si();if("function"==typeof e){var n=e;if(e=n(),Yo){ve(!0);try{n()}finally{ve(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:pi,lastRenderedState:e},t}function Ei(e,t,n,r){return e.baseState=n,mi(e,Vo,"function"==typeof r?r:pi)}function _i(e,t,n,r,a){if(fl(e))throw Error(i(485));if(null!==(e=t.action)){var o={payload:a,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(e){o.listeners.push(e)}};null!==R.T?n(!0):o.isTransition=!1,r(o),null===(n=t.pending)?(o.next=t.pending=o,Ai(t,o)):(o.next=n.next,t.pending=n.next=o)}}function Ai(e,t){var n=t.action,r=t.payload,a=e.state;if(t.isTransition){var o=R.T,i={};R.T=i;try{var l=n(a,r),s=R.S;null!==s&&s(i,l),Ci(e,t,l)}catch(u){Ni(e,t,u)}finally{null!==o&&null!==i.types&&(o.types=i.types),R.T=o}}else try{Ci(e,t,o=n(a,r))}catch(c){Ni(e,t,c)}}function Ci(e,t,n){null!==n&&"object"==typeof n&&"function"==typeof n.then?n.then(function(n){Ti(e,t,n)},function(n){return Ni(e,t,n)}):Ti(e,t,n)}function Ti(e,t,n){t.status="fulfilled",t.value=n,Pi(t),e.state=n,null!==(t=e.pending)&&((n=t.next)===t?e.pending=null:(n=n.next,t.next=n,Ai(e,n)))}function Ni(e,t,n){var r=e.pending;if(e.pending=null,null!==r){r=r.next;do{t.status="rejected",t.reason=n,Pi(t),t=t.next}while(t!==r)}e.action=null}function Pi(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function Oi(e,t){return t}function ji(e,t){if(da){var n=hu.formState;if(null!==n){e:{var r=Ho;if(da){if(ca){t:{for(var a=ca,o=pa;8!==a.nodeType;){if(!o){a=null;break t}if(null===(a=Ld(a.nextSibling))){a=null;break t}}a="F!"===(o=a.data)||"F"===o?a:null}if(a){ca=Ld(a.nextSibling),r="F!"===a.data;break e}}ma(r)}r=!1}r&&(t=n[0])}}return(n=si()).memoizedState=n.baseState=t,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Oi,lastRenderedState:t},n.queue=r,n=ul.bind(null,Ho,r),r.dispatch=n,r=xi(!1),o=dl.bind(null,Ho,!1,r.queue),a={state:t,dispatch:null,action:e,pending:null},(r=si()).queue=a,n=_i.bind(null,Ho,a,o,n),a.dispatch=n,r.memoizedState=e,[t,n,!1]}function Li(e){return Ri(ui(),Vo,e)}function Ri(e,t,n){if(t=mi(e,t,Oi)[0],e=hi(pi)[0],"object"==typeof t&&null!==t&&"function"==typeof t.then)try{var r=ci(t)}catch(i){if(i===Xa)throw Ja;throw i}else r=t;var a=(t=ui()).queue,o=a.dispatch;return n!==t.memoizedState&&(Ho.flags|=2048,Fi(9,{destroy:void 0},Ii.bind(null,a,n),null)),[r,o,e]}function Ii(e,t){e.action=t}function Di(e){var t=ui(),n=Vo;if(null!==n)return Ri(t,n,e);ui(),t=t.memoizedState;var r=(n=ui()).queue.dispatch;return n.memoizedState=e,[t,r,!1]}function Fi(e,t,n,r){return e={tag:e,create:n,deps:r,inst:t,next:null},null===(t=Ho.updateQueue)&&(t={lastEffect:null,events:null,stores:null,memoCache:null},Ho.updateQueue=t),null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Mi(){return ui().memoizedState}function zi(e,t,n,r){var a=si();Ho.flags|=e,a.memoizedState=Fi(1|t,{destroy:void 0},n,void 0===r?null:r)}function Bi(e,t,n,r){var a=ui();r=void 0===r?null:r;var o=a.memoizedState.inst;null!==Vo&&null!==r&&ei(r,Vo.memoizedState.deps)?a.memoizedState=Fi(t,o,n,r):(Ho.flags|=e,a.memoizedState=Fi(1|t,o,n,r))}function $i(e,t){zi(8390656,8,e,t)}function Ui(e,t){Bi(2048,8,e,t)}function Hi(e){var t=ui().memoizedState;return function(e){Ho.flags|=4;var t=Ho.updateQueue;if(null===t)t={lastEffect:null,events:null,stores:null,memoCache:null},Ho.updateQueue=t,t.events=[e];else{var n=t.events;null===n?t.events=[e]:n.push(e)}}({ref:t,nextImpl:e}),function(){if(2&pu)throw Error(i(440));return t.impl.apply(void 0,arguments)}}function Vi(e,t){return Bi(4,2,e,t)}function Wi(e,t){return Bi(4,4,e,t)}function Gi(e,t){if("function"==typeof t){e=e();var n=t(e);return function(){"function"==typeof n?n():t(null)}}if(null!=t)return e=e(),t.current=e,function(){t.current=null}}function qi(e,t,n){n=null!=n?n.concat([e]):null,Bi(4,4,Gi.bind(null,t,e),n)}function Yi(){}function Ki(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;return null!==t&&ei(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Qi(e,t){var n=ui();t=void 0===t?null:t;var r=n.memoizedState;if(null!==t&&ei(t,r[1]))return r[0];if(r=e(),Yo){ve(!0);try{e()}finally{ve(!1)}}return n.memoizedState=[r,t],r}function Xi(e,t,n){return void 0===n||1073741824&Uo&&!(261930&gu)?e.memoizedState=t:(e.memoizedState=n,e=qu(),Ho.lanes|=e,Eu|=e,n)}function Zi(e,t,n,r){return Zn(n,t)?n:null!==To.current?(e=Xi(e,n,r),Zn(e,t)||(Ll=!0),e):42&Uo&&(!(1073741824&Uo)||261930&gu)?(e=qu(),Ho.lanes|=e,Eu|=e,t):(Ll=!0,e.memoizedState=n)}function Ji(e,t,n,r,a){var o=I.p;I.p=0!==o&&8>o?o:8;var i,l,s,u=R.T,c={};R.T=c,dl(e,!1,t,n);try{var d=a(),f=R.S;if(null!==f&&f(c,d),null!==d&&"object"==typeof d&&"function"==typeof d.then)cl(e,t,(i=r,l=[],s={status:"pending",value:null,reason:null,then:function(e){l.push(e)}},d.then(function(){s.status="fulfilled",s.value=i;for(var e=0;e<l.length;e++)(0,l[e])(i)},function(e){for(s.status="rejected",s.reason=e,e=0;e<l.length;e++)(0,l[e])(void 0)}),s),Gu());else cl(e,t,r,Gu())}catch(p){cl(e,t,{then:function(){},status:"rejected",reason:p},Gu())}finally{I.p=o,null!==u&&null!==c.types&&(u.types=c.types),R.T=u}}function el(){}function tl(e,t,n,r){if(5!==e.tag)throw Error(i(476));var a=nl(e).queue;Ji(e,a,t,D,null===n?el:function(){return rl(e),n(r)})}function nl(e){var t=e.memoizedState;if(null!==t)return t;var n={};return(t={memoizedState:D,baseState:D,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pi,lastRenderedState:D},next:null}).next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pi,lastRenderedState:n},next:null},e.memoizedState=t,null!==(e=e.alternate)&&(e.memoizedState=t),t}function rl(e){var t=nl(e);null===t.next&&(t=e.alternate.memoizedState),cl(e,t.next.queue,{},Gu())}function al(){return ja(df)}function ol(){return ui().memoizedState}function il(){return ui().memoizedState}function ll(e){for(var t=e.return;null!==t;){switch(t.tag){case 24:case 3:var n=Gu(),r=wo(t,e=vo(n),n);return null!==r&&(Yu(r,t,n),ko(r,t,n)),t={cache:za()},void(e.payload=t)}t=t.return}}function sl(e,t,n){var r=Gu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},fl(e)?pl(t,n):null!==(n=jr(e,t,n,r))&&(Yu(n,e,r),hl(n,t,r))}function ul(e,t,n){cl(e,t,n,Gu())}function cl(e,t,n,r){var a={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(fl(e))pl(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,Zn(l,i))return Or(e,t,a,0),null===hu&&Pr(),!1}catch(s){}if(null!==(n=jr(e,t,a,r)))return Yu(n,e,r),hl(n,t,r),!0}return!1}function dl(e,t,n,r){if(r={lane:2,revertLane:Uc(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},fl(e)){if(t)throw Error(i(479))}else null!==(t=jr(e,n,r,2))&&Yu(t,e,2)}function fl(e){var t=e.alternate;return e===Ho||null!==t&&t===Ho}function pl(e,t){qo=Go=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function hl(e,t,n){if(4194048&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Re(e,n)}}var ml={readContext:ja,use:di,useCallback:Jo,useContext:Jo,useEffect:Jo,useImperativeHandle:Jo,useLayoutEffect:Jo,useInsertionEffect:Jo,useMemo:Jo,useReducer:Jo,useRef:Jo,useState:Jo,useDebugValue:Jo,useDeferredValue:Jo,useTransition:Jo,useSyncExternalStore:Jo,useId:Jo,useHostTransitionStatus:Jo,useFormState:Jo,useActionState:Jo,useOptimistic:Jo,useMemoCache:Jo,useCacheRefresh:Jo};ml.useEffectEvent=Jo;var gl={readContext:ja,use:di,useCallback:function(e,t){return si().memoizedState=[e,void 0===t?null:t],e},useContext:ja,useEffect:$i,useImperativeHandle:function(e,t,n){n=null!=n?n.concat([e]):null,zi(4194308,4,Gi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return zi(4194308,4,e,t)},useInsertionEffect:function(e,t){zi(4,2,e,t)},useMemo:function(e,t){var n=si();t=void 0===t?null:t;var r=e();if(Yo){ve(!0);try{e()}finally{ve(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=si();if(void 0!==n){var a=n(t);if(Yo){ve(!0);try{n(t)}finally{ve(!1)}}}else a=t;return r.memoizedState=r.baseState=a,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:a},r.queue=e,e=e.dispatch=sl.bind(null,Ho,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},si().memoizedState=e},useState:function(e){var t=(e=xi(e)).queue,n=ul.bind(null,Ho,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Yi,useDeferredValue:function(e,t){return Xi(si(),e,t)},useTransition:function(){var e=xi(!1);return e=Ji.bind(null,Ho,e.queue,!0,!1),si().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=Ho,a=si();if(da){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===hu)throw Error(i(349));127&gu||bi(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,$i(wi.bind(null,r,o,e),[e]),r.flags|=2048,Fi(9,{destroy:void 0},vi.bind(null,r,o,n,t),null),n},useId:function(){var e=si(),t=hu.identifierPrefix;if(da){var n=ra;t="_"+t+"R_"+(n=(na&~(1<<32-we(na)-1)).toString(32)+n),0<(n=Ko++)&&(t+="H"+n.toString(32)),t+="_"}else t="_"+t+"r_"+(n=Zo++).toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:al,useFormState:ji,useActionState:ji,useOptimistic:function(e){var t=si();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=dl.bind(null,Ho,!0,n),n.dispatch=t,[e,t]},useMemoCache:fi,useCacheRefresh:function(){return si().memoizedState=ll.bind(null,Ho)},useEffectEvent:function(e){var t=si(),n={impl:e};return t.memoizedState=n,function(){if(2&pu)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},yl={readContext:ja,use:di,useCallback:Ki,useContext:ja,useEffect:Ui,useImperativeHandle:qi,useInsertionEffect:Vi,useLayoutEffect:Wi,useMemo:Qi,useReducer:hi,useRef:Mi,useState:function(){return hi(pi)},useDebugValue:Yi,useDeferredValue:function(e,t){return Zi(ui(),Vo.memoizedState,e,t)},useTransition:function(){var e=hi(pi)[0],t=ui().memoizedState;return["boolean"==typeof e?e:ci(e),t]},useSyncExternalStore:yi,useId:ol,useHostTransitionStatus:al,useFormState:Li,useActionState:Li,useOptimistic:function(e,t){return Ei(ui(),0,e,t)},useMemoCache:fi,useCacheRefresh:il};yl.useEffectEvent=Hi;var bl={readContext:ja,use:di,useCallback:Ki,useContext:ja,useEffect:Ui,useImperativeHandle:qi,useInsertionEffect:Vi,useLayoutEffect:Wi,useMemo:Qi,useReducer:gi,useRef:Mi,useState:function(){return gi(pi)},useDebugValue:Yi,useDeferredValue:function(e,t){var n=ui();return null===Vo?Xi(n,e,t):Zi(n,Vo.memoizedState,e,t)},useTransition:function(){var e=gi(pi)[0],t=ui().memoizedState;return["boolean"==typeof e?e:ci(e),t]},useSyncExternalStore:yi,useId:ol,useHostTransitionStatus:al,useFormState:Di,useActionState:Di,useOptimistic:function(e,t){var n=ui();return null!==Vo?Ei(n,0,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:fi,useCacheRefresh:il};function vl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:p({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}bl.useEffectEvent=Hi;var wl={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=Gu(),a=vo(r);a.payload=t,null!=n&&(a.callback=n),null!==(t=wo(e,a,r))&&(Yu(t,e,r),ko(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=Gu(),a=vo(r);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=wo(e,a,r))&&(Yu(t,e,r),ko(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Gu(),r=vo(n);r.tag=2,null!=t&&(r.callback=t),null!==(t=wo(e,r,n))&&(Yu(t,e,n),ko(t,e,n))}};function kl(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!Jn(n,r)||!Jn(a,o))}function Sl(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&wl.enqueueReplaceState(t,t.state,null)}function xl(e,t){var n=t;if("ref"in t)for(var r in n={},t)"ref"!==r&&(n[r]=t[r]);if(e=e.defaultProps)for(var a in n===t&&(n=p({},n)),e)void 0===n[a]&&(n[a]=e[a]);return n}function El(e){Ar(e)}function _l(e){console.error(e)}function Al(e){Ar(e)}function Cl(e,t){try{(0,e.onUncaughtError)(t.value,{componentStack:t.stack})}catch(n){setTimeout(function(){throw n})}}function Tl(e,t,n){try{(0,e.onCaughtError)(n.value,{componentStack:n.stack,errorBoundary:1===t.tag?t.stateNode:null})}catch(r){setTimeout(function(){throw r})}}function Nl(e,t,n){return(n=vo(n)).tag=3,n.payload={element:null},n.callback=function(){Cl(e,t)},n}function Pl(e){return(e=vo(e)).tag=3,e}function Ol(e,t,n,r){var a=n.type.getDerivedStateFromError;if("function"==typeof a){var o=r.value;e.payload=function(){return a(o)},e.callback=function(){Tl(t,n,r)}}var i=n.stateNode;null!==i&&"function"==typeof i.componentDidCatch&&(e.callback=function(){Tl(t,n,r),"function"!=typeof a&&(null===Du?Du=new Set([this]):Du.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var jl=Error(i(461)),Ll=!1;function Rl(e,t,n,r){t.child=null===e?mo(t,null,n,r):ho(t,e.child,n,r)}function Il(e,t,n,r,a){n=n.render;var o=t.ref;if("ref"in r){var i={};for(var l in r)"ref"!==l&&(i[l]=r[l])}else i=r;return Oa(t),r=ti(e,t,n,i,o,a),l=oi(),null===e||Ll?(da&&l&&ia(t),t.flags|=1,Rl(e,t,r,a),t.child):(ii(e,t,a),as(e,t,a))}function Dl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||zr(o)||void 0!==o.defaultProps||null!==n.compare?((e=Ur(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Fl(e,t,o,r,a))}if(o=e.child,!os(e,a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:Jn)(i,r)&&e.ref===t.ref)return as(e,t,a)}return t.flags|=1,(e=Br(o,r)).ref=t.ref,e.return=t,t.child=e}function Fl(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(Jn(o,r)&&e.ref===t.ref){if(Ll=!1,t.pendingProps=r=o,!os(e,a))return t.lanes=e.lanes,as(e,t,a);131072&e.flags&&(Ll=!0)}}return Vl(e,t,n,r,a)}function Ml(e,t,n,r){var a=r.children,o=null!==e?e.memoizedState:null;if(null===e&&null===t.stateNode&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),"hidden"===r.mode){if(128&t.flags){if(o=null!==o?o.baseLanes|n:n,null!==e){for(r=t.child=e.child,a=0;null!==r;)a=a|r.lanes|r.childLanes,r=r.sibling;r=a&~o}else r=0,t.child=null;return Bl(e,t,o,n,r)}if(!(536870912&n))return r=t.lanes=536870912,Bl(e,t,null!==o?o.baseLanes|n:n,n,r);t.memoizedState={baseLanes:0,cachePool:null},null!==e&&Ka(0,null!==o?o.cachePool:null),null!==o?Po(t,o):Oo(),Fo(t)}else null!==o?(Ka(0,o.cachePool),Po(t,o),Mo(),t.memoizedState=null):(null!==e&&Ka(0,null),Oo(),Mo());return Rl(e,t,a,n),t.child}function zl(e,t){return null!==e&&22===e.tag||null!==t.stateNode||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Bl(e,t,n,r,a){var o=Ya();return o=null===o?null:{parent:Ma._currentValue,pool:o},t.memoizedState={baseLanes:n,cachePool:o},null!==e&&Ka(0,null),Oo(),Fo(t),null!==e&&Na(e,t,r,!0),t.childLanes=a,null}function $l(e,t){return(t=Jl({mode:t.mode,children:t.children},e.mode)).ref=e.ref,e.child=t,t.return=e,t}function Ul(e,t,n){return ho(t,e.child,null,n),(e=$l(t,t.pendingProps)).flags|=2,zo(t),t.memoizedState=null,e}function Hl(e,t){var n=t.ref;if(null===n)null!==e&&null!==e.ref&&(t.flags|=4194816);else{if("function"!=typeof n&&"object"!=typeof n)throw Error(i(284));null!==e&&e.ref===n||(t.flags|=4194816)}}function Vl(e,t,n,r,a){return Oa(t),n=ti(e,t,n,r,void 0,a),r=oi(),null===e||Ll?(da&&r&&ia(t),t.flags|=1,Rl(e,t,n,a),t.child):(ii(e,t,a),as(e,t,a))}function Wl(e,t,n,r,a,o){return Oa(t),t.updateQueue=null,n=ri(t,r,n,a),ni(e),r=oi(),null===e||Ll?(da&&r&&ia(t),t.flags|=1,Rl(e,t,n,o),t.child):(ii(e,t,o),as(e,t,o))}function Gl(e,t,n,r,a){if(Oa(t),null===t.stateNode){var o=Dr,i=n.contextType;"object"==typeof i&&null!==i&&(o=ja(i)),o=new n(r,o),t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,o.updater=wl,t.stateNode=o,o._reactInternals=t,(o=t.stateNode).props=r,o.state=t.memoizedState,o.refs={},yo(t),i=n.contextType,o.context="object"==typeof i&&null!==i?ja(i):Dr,o.state=t.memoizedState,"function"==typeof(i=n.getDerivedStateFromProps)&&(vl(t,n,i,r),o.state=t.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(i=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),i!==o.state&&wl.enqueueReplaceState(o,o.state,null),_o(t,r,o,a),Eo(),o.state=t.memoizedState),"function"==typeof o.componentDidMount&&(t.flags|=4194308),r=!0}else if(null===e){o=t.stateNode;var l=t.memoizedProps,s=xl(n,l);o.props=s;var u=o.context,c=n.contextType;i=Dr,"object"==typeof c&&null!==c&&(i=ja(c));var d=n.getDerivedStateFromProps;c="function"==typeof d||"function"==typeof o.getSnapshotBeforeUpdate,l=t.pendingProps!==l,c||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(l||u!==i)&&Sl(t,o,r,i),go=!1;var f=t.memoizedState;o.state=f,_o(t,r,o,a),Eo(),u=t.memoizedState,l||f!==u||go?("function"==typeof d&&(vl(t,n,d,r),u=t.memoizedState),(s=go||kl(t,n,s,r,f,u,i))?(c||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(t.flags|=4194308)):("function"==typeof o.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=u),o.props=r,o.state=u,o.context=i,r=s):("function"==typeof o.componentDidMount&&(t.flags|=4194308),r=!1)}else{o=t.stateNode,bo(e,t),c=xl(n,i=t.memoizedProps),o.props=c,d=t.pendingProps,f=o.context,u=n.contextType,s=Dr,"object"==typeof u&&null!==u&&(s=ja(u)),(u="function"==typeof(l=n.getDerivedStateFromProps)||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(i!==d||f!==s)&&Sl(t,o,r,s),go=!1,f=t.memoizedState,o.state=f,_o(t,r,o,a),Eo();var p=t.memoizedState;i!==d||f!==p||go||null!==e&&null!==e.dependencies&&Pa(e.dependencies)?("function"==typeof l&&(vl(t,n,l,r),p=t.memoizedState),(c=go||kl(t,n,c,r,f,p,s)||null!==e&&null!==e.dependencies&&Pa(e.dependencies))?(u||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(r,p,s),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,p,s)),"function"==typeof o.componentDidUpdate&&(t.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof o.componentDidUpdate||i===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||i===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),o.props=r,o.state=p,o.context=s,r=c):("function"!=typeof o.componentDidUpdate||i===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||i===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return o=r,Hl(e,t),r=!!(128&t.flags),o||r?(o=t.stateNode,n=r&&"function"!=typeof n.getDerivedStateFromError?null:o.render(),t.flags|=1,null!==e&&r?(t.child=ho(t,e.child,null,a),t.child=ho(t,null,n,a)):Rl(e,t,n,a),t.memoizedState=o.state,e=t.child):e=as(e,t,a),e}function ql(e,t,n,r){return va(),t.flags|=256,Rl(e,t,n,r),t.child}var Yl={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Kl(e){return{baseLanes:e,cachePool:Qa()}}function Ql(e,t,n){return e=null!==e?e.childLanes&~n:0,t&&(e|=Cu),e}function Xl(e,t,n){var r,a=t.pendingProps,o=!1,l=!!(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&!!(2&Bo.current)),r&&(o=!0,t.flags&=-129),r=!!(32&t.flags),t.flags&=-33,null===e){if(da){if(o?Io(t):Mo(),(e=ca)?null!==(e=null!==(e=Pd(e,pa))&&"&"!==e.data?e:null)&&(t.memoizedState={dehydrated:e,treeContext:null!==ta?{id:na,overflow:ra}:null,retryLane:536870912,hydrationErrors:null},(n=Wr(e)).return=t,t.child=n,ua=t,ca=null):e=null,null===e)throw ma(t);return jd(e)?t.lanes=32:t.lanes=536870912,null}var s=a.children;return a=a.fallback,o?(Mo(),s=Jl({mode:"hidden",children:s},o=t.mode),a=Hr(a,o,n,null),s.return=t,a.return=t,s.sibling=a,t.child=s,(a=t.child).memoizedState=Kl(n),a.childLanes=Ql(e,r,n),t.memoizedState=Yl,zl(null,a)):(Io(t),Zl(t,s))}var u=e.memoizedState;if(null!==u&&null!==(s=u.dehydrated)){if(l)256&t.flags?(Io(t),t.flags&=-257,t=es(e,t,n)):null!==t.memoizedState?(Mo(),t.child=e.child,t.flags|=128,t=null):(Mo(),s=a.fallback,o=t.mode,a=Jl({mode:"visible",children:a.children},o),(s=Hr(s,o,n,null)).flags|=2,a.return=t,s.return=t,a.sibling=s,t.child=a,ho(t,e.child,null,n),(a=t.child).memoizedState=Kl(n),a.childLanes=Ql(e,r,n),t.memoizedState=Yl,t=zl(null,a));else if(Io(t),jd(s)){if(r=s.nextSibling&&s.nextSibling.dataset)var c=r.dgst;r=c,(a=Error(i(419))).stack="",a.digest=r,ka({value:a,source:null,stack:null}),t=es(e,t,n)}else if(Ll||Na(e,t,n,!1),r=0!==(n&e.childLanes),Ll||r){if(null!==(r=hu)&&(0!==(a=Ie(r,n))&&a!==u.retryLane))throw u.retryLane=a,Lr(e,a),Yu(r,e,a),jl;Od(s)||ic(),t=es(e,t,n)}else Od(s)?(t.flags|=192,t.child=e.child,t=null):(e=u.treeContext,ca=Ld(s.nextSibling),ua=t,da=!0,fa=null,pa=!1,null!==e&&sa(t,e),(t=Zl(t,a.children)).flags|=4096);return t}return o?(Mo(),s=a.fallback,o=t.mode,c=(u=e.child).sibling,(a=Br(u,{mode:"hidden",children:a.children})).subtreeFlags=65011712&u.subtreeFlags,null!==c?s=Br(c,s):(s=Hr(s,o,n,null)).flags|=2,s.return=t,a.return=t,a.sibling=s,t.child=a,zl(null,a),a=t.child,null===(s=e.child.memoizedState)?s=Kl(n):(null!==(o=s.cachePool)?(u=Ma._currentValue,o=o.parent!==u?{parent:u,pool:u}:o):o=Qa(),s={baseLanes:s.baseLanes|n,cachePool:o}),a.memoizedState=s,a.childLanes=Ql(e,r,n),t.memoizedState=Yl,zl(e.child,a)):(Io(t),e=(n=e.child).sibling,(n=Br(n,{mode:"visible",children:a.children})).return=t,n.sibling=null,null!==e&&(null===(r=t.deletions)?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Zl(e,t){return(t=Jl({mode:"visible",children:t},e.mode)).return=e,e.child=t}function Jl(e,t){return(e=Mr(22,e,null,t)).lanes=0,e}function es(e,t,n){return ho(t,e.child,null,n),(e=Zl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function ts(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Ca(e.return,t,n)}function ns(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,treeForkCount:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.treeForkCount=o)}function rs(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;r=r.children;var i=Bo.current,l=!!(2&i);if(l?(i=1&i|2,t.flags|=128):i&=1,$(Bo,i),Rl(e,t,r,n),r=da?Zr:0,!l&&null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ts(e,n,t);else if(19===e.tag)ts(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===$o(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),ns(t,!1,a,n,o,r);break;case"backwards":case"unstable_legacy-backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===$o(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}ns(t,!0,n,null,o,r);break;case"together":ns(t,!1,null,null,void 0,r);break;default:t.memoizedState=null}return t.child}function as(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Eu|=t.lanes,0===(n&t.childLanes)){if(null===e)return null;if(Na(e,t,n,!1),0===(n&t.childLanes))return null}if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Br(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Br(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function os(e,t){return 0!==(e.lanes&t)||!(null===(e=e.dependencies)||!Pa(e))}function is(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps)Ll=!0;else{if(!(os(e,n)||128&t.flags))return Ll=!1,function(e,t,n){switch(t.tag){case 3:Y(t,t.stateNode.containerInfo),_a(0,Ma,e.memoizedState.cache),va();break;case 27:case 5:Q(t);break;case 4:Y(t,t.stateNode.containerInfo);break;case 10:_a(0,t.type,t.memoizedProps.value);break;case 31:if(null!==t.memoizedState)return t.flags|=128,Do(t),null;break;case 13:var r=t.memoizedState;if(null!==r)return null!==r.dehydrated?(Io(t),t.flags|=128,null):0!==(n&t.child.childLanes)?Xl(e,t,n):(Io(t),null!==(e=as(e,t,n))?e.sibling:null);Io(t);break;case 19:var a=!!(128&e.flags);if((r=0!==(n&t.childLanes))||(Na(e,t,n,!1),r=0!==(n&t.childLanes)),a){if(r)return rs(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),$(Bo,Bo.current),r)break;return null;case 22:return t.lanes=0,Ml(e,t,n,t.pendingProps);case 24:_a(0,Ma,e.memoizedState.cache)}return as(e,t,n)}(e,t,n);Ll=!!(131072&e.flags)}else Ll=!1,da&&1048576&t.flags&&oa(t,Zr,t.index);switch(t.lanes=0,t.tag){case 16:e:{var r=t.pendingProps;if(e=ro(t.elementType),t.type=e,"function"!=typeof e){if(null!=e){var a=e.$$typeof;if(a===S){t.tag=11,t=Il(null,t,e,r,n);break e}if(a===_){t.tag=14,t=Dl(null,t,e,r,n);break e}}throw t=j(e)||e,Error(i(306,t,""))}zr(e)?(r=xl(e,r),t.tag=1,t=Gl(null,t,e,r,n)):(t.tag=0,t=Vl(null,t,e,r,n))}return t;case 0:return Vl(e,t,t.type,t.pendingProps,n);case 1:return Gl(e,t,r=t.type,a=xl(r,t.pendingProps),n);case 3:e:{if(Y(t,t.stateNode.containerInfo),null===e)throw Error(i(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,bo(e,t),_o(t,r,null,n);var l=t.memoizedState;if(r=l.cache,_a(0,Ma,r),r!==o.cache&&Ta(t,[Ma],n,!0),Eo(),r=l.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:l.cache},t.updateQueue.baseState=o,t.memoizedState=o,256&t.flags){t=ql(e,t,r,n);break e}if(r!==a){ka(a=Yr(Error(i(424)),t)),t=ql(e,t,r,n);break e}if(9===(e=t.stateNode.containerInfo).nodeType)e=e.body;else e="HTML"===e.nodeName?e.ownerDocument.body:e;for(ca=Ld(e.firstChild),ua=t,da=!0,fa=null,pa=!0,n=mo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(va(),r===a){t=as(e,t,n);break e}Rl(e,t,r,n)}t=t.child}return t;case 26:return Hl(e,t),null===e?(n=Wd(t.type,null,t.pendingProps,null))?t.memoizedState=n:da||(n=t.type,e=t.pendingProps,(r=gd(G.current).createElement(n))[$e]=t,r[Ue]=e,fd(r,n,e),et(r),t.stateNode=r):t.memoizedState=Wd(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Q(t),null===e&&da&&(r=t.stateNode=Fd(t.type,t.pendingProps,G.current),ua=t,pa=!0,a=ca,Ad(t.type)?(Rd=a,ca=Ld(r.firstChild)):ca=a),Rl(e,t,t.pendingProps.children,n),Hl(e,t),null===e&&(t.flags|=4194304),t.child;case 5:return null===e&&da&&((a=r=ca)&&(null!==(r=function(e,t,n,r){for(;1===e.nodeType;){var a=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[Ye])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(o=e.getAttribute("rel"))&&e.hasAttribute("data-precedence"))break;if(o!==a.rel||e.getAttribute("href")!==(null==a.href||""===a.href?null:a.href)||e.getAttribute("crossorigin")!==(null==a.crossOrigin?null:a.crossOrigin)||e.getAttribute("title")!==(null==a.title?null:a.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((o=e.getAttribute("src"))!==(null==a.src?null:a.src)||e.getAttribute("type")!==(null==a.type?null:a.type)||e.getAttribute("crossorigin")!==(null==a.crossOrigin?null:a.crossOrigin))&&o&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==t||"hidden"!==e.type)return e;var o=null==a.name?null:""+a.name;if("hidden"===a.type&&e.getAttribute("name")===o)return e}if(null===(e=Ld(e.nextSibling)))break}return null}(r,t.type,t.pendingProps,pa))?(t.stateNode=r,ua=t,ca=Ld(r.firstChild),pa=!1,a=!0):a=!1),a||ma(t)),Q(t),a=t.type,o=t.pendingProps,l=null!==e?e.memoizedProps:null,r=o.children,vd(a,o)?r=null:null!==l&&vd(a,l)&&(t.flags|=32),null!==t.memoizedState&&(a=ti(e,t,ai,null,null,n),df._currentValue=a),Hl(e,t),Rl(e,t,r,n),t.child;case 6:return null===e&&da&&((e=n=ca)&&(null!==(n=function(e,t,n){if(""===t)return null;for(;3!==e.nodeType;){if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!n)return null;if(null===(e=Ld(e.nextSibling)))return null}return e}(n,t.pendingProps,pa))?(t.stateNode=n,ua=t,ca=null,e=!0):e=!1),e||ma(t)),null;case 13:return Xl(e,t,n);case 4:return Y(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ho(t,null,r,n):Rl(e,t,r,n),t.child;case 11:return Il(e,t,t.type,t.pendingProps,n);case 7:return Rl(e,t,t.pendingProps,n),t.child;case 8:case 12:return Rl(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,_a(0,t.type,r.value),Rl(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,Oa(t),r=r(a=ja(a)),t.flags|=1,Rl(e,t,r,n),t.child;case 14:return Dl(e,t,t.type,t.pendingProps,n);case 15:return Fl(e,t,t.type,t.pendingProps,n);case 19:return rs(e,t,n);case 31:return function(e,t,n){var r=t.pendingProps,a=!!(128&t.flags);if(t.flags&=-129,null===e){if(da){if("hidden"===r.mode)return e=$l(t,r),t.lanes=536870912,zl(null,e);if(Do(t),(e=ca)?null!==(e=null!==(e=Pd(e,pa))&&"&"===e.data?e:null)&&(t.memoizedState={dehydrated:e,treeContext:null!==ta?{id:na,overflow:ra}:null,retryLane:536870912,hydrationErrors:null},(n=Wr(e)).return=t,t.child=n,ua=t,ca=null):e=null,null===e)throw ma(t);return t.lanes=536870912,null}return $l(t,r)}var o=e.memoizedState;if(null!==o){var l=o.dehydrated;if(Do(t),a)if(256&t.flags)t.flags&=-257,t=Ul(e,t,n);else{if(null===t.memoizedState)throw Error(i(558));t.child=e.child,t.flags|=128,t=null}else if(Ll||Na(e,t,n,!1),a=0!==(n&e.childLanes),Ll||a){if(null!==(r=hu)&&0!==(l=Ie(r,n))&&l!==o.retryLane)throw o.retryLane=l,Lr(e,l),Yu(r,e,l),jl;ic(),t=Ul(e,t,n)}else e=o.treeContext,ca=Ld(l.nextSibling),ua=t,da=!0,fa=null,pa=!1,null!==e&&sa(t,e),(t=$l(t,r)).flags|=4096;return t}return(e=Br(e.child,{mode:r.mode,children:r.children})).ref=t.ref,t.child=e,e.return=t,e}(e,t,n);case 22:return Ml(e,t,n,t.pendingProps);case 24:return Oa(t),r=ja(Ma),null===e?(null===(a=Ya())&&(a=hu,o=za(),a.pooledCache=o,o.refCount++,null!==o&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},yo(t),_a(0,Ma,a)):(0!==(e.lanes&n)&&(bo(e,t),_o(t,null,null,n),Eo()),a=e.memoizedState,o=t.memoizedState,a.parent!==r?(a={parent:r,cache:r},t.memoizedState=a,0===t.lanes&&(t.memoizedState=t.updateQueue.baseState=a),_a(0,Ma,r)):(r=o.cache,_a(0,Ma,r),r!==a.cache&&Ta(t,[Ma],n,!0))),Rl(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(i(156,t.tag))}function ls(e){e.flags|=4}function ss(e,t,n,r,a){if((t=!!(32&e.mode))&&(t=!1),t){if(e.flags|=16777216,(335544128&a)===a)if(e.stateNode.complete)e.flags|=8192;else{if(!rc())throw ao=eo,Za;e.flags|=8192}}else e.flags&=-16777217}function us(e,t){if("stylesheet"!==t.type||4&t.state.loading)e.flags&=-16777217;else if(e.flags|=16777216,!af(t)){if(!rc())throw ao=eo,Za;e.flags|=8192}}function cs(e,t){null!==t&&(e.flags|=4),16384&e.flags&&(t=22!==e.tag?Pe():536870912,e.lanes|=t,Tu|=t)}function ds(e,t){if(!da)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function fs(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=65011712&a.subtreeFlags,r|=65011712&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function ps(e,t,n){var r=t.pendingProps;switch(la(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 1:return fs(t),null;case 3:return n=t.stateNode,r=null,null!==e&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Aa(Ma),K(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||(ba(t)?ls(t):null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,wa())),fs(t),null;case 26:var a=t.type,o=t.memoizedState;return null===e?(ls(t),null!==o?(fs(t),us(t,o)):(fs(t),ss(t,a,0,0,n))):o?o!==e.memoizedState?(ls(t),fs(t),us(t,o)):(fs(t),t.flags&=-16777217):((e=e.memoizedProps)!==r&&ls(t),fs(t),ss(t,a,0,0,n)),null;case 27:if(X(t),n=G.current,a=t.type,null!==e&&null!=t.stateNode)e.memoizedProps!==r&&ls(t);else{if(!r){if(null===t.stateNode)throw Error(i(166));return fs(t),null}e=V.current,ba(t)?ga(t):(e=Fd(a,r,n),t.stateNode=e,ls(t))}return fs(t),null;case 5:if(X(t),a=t.type,null!==e&&null!=t.stateNode)e.memoizedProps!==r&&ls(t);else{if(!r){if(null===t.stateNode)throw Error(i(166));return fs(t),null}if(o=V.current,ba(t))ga(t);else{var l=gd(G.current);switch(o){case 1:o=l.createElementNS("http://www.w3.org/2000/svg",a);break;case 2:o=l.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;default:switch(a){case"svg":o=l.createElementNS("http://www.w3.org/2000/svg",a);break;case"math":o=l.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;case"script":(o=l.createElement("div")).innerHTML="<script><\/script>",o=o.removeChild(o.firstChild);break;case"select":o="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o="string"==typeof r.is?l.createElement(a,{is:r.is}):l.createElement(a)}}o[$e]=t,o[Ue]=r;e:for(l=t.child;null!==l;){if(5===l.tag||6===l.tag)o.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===t)break e;for(;null===l.sibling;){if(null===l.return||l.return===t)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}t.stateNode=o;e:switch(fd(o,a,r),a){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&ls(t)}}return fs(t),ss(t,t.type,null===e||e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&ls(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=G.current,ba(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(a=ua))switch(a.tag){case 27:case 5:r=a.memoizedProps}e[$e]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ud(e.nodeValue,n)))||ma(t,!0)}else(e=gd(e).createTextNode(r))[$e]=t,t.stateNode=e}return fs(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=ba(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[$e]=t}else va(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),e=!1}else n=wa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?(zo(t),t):(zo(t),null);if(128&t.flags)throw Error(i(558))}return fs(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(a=ba(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(i(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(i(317));a[$e]=t}else va(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),a=!1}else a=wa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return 256&t.flags?(zo(t),t):(zo(t),null)}return zo(t),128&t.flags?(t.lanes=n,t):(n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(a=null,null!==(r=t.child).alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(a=r.alternate.memoizedState.cachePool.pool),o=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),cs(t,t.updateQueue),fs(t),null);case 4:return K(),null===e&&Jc(t.stateNode.containerInfo),fs(t),null;case 10:return Aa(t.type),fs(t),null;case 19:if(B(Bo),null===(r=t.memoizedState))return fs(t),null;if(a=!!(128&t.flags),null===(o=r.rendering))if(a)ds(r,!1);else{if(0!==xu||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(o=$o(e))){for(t.flags|=128,ds(r,!1),e=o.updateQueue,t.updateQueue=e,cs(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)$r(n,e),n=n.sibling;return $(Bo,1&Bo.current|2),da&&aa(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&se()>Ru&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=$o(o))){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,cs(t,e),ds(r,!0),null===r.tail&&"hidden"===r.tailMode&&!o.alternate&&!da)return fs(t),null}else 2*se()-r.renderingStartTime>Ru&&536870912!==n&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(null!==(e=r.last)?e.sibling=o:t.child=o,r.last=o)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=se(),e.sibling=null,n=Bo.current,$(Bo,a?1&n|2:1&n),da&&aa(t,r.treeForkCount),e):(fs(t),null);case 22:case 23:return zo(t),jo(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?!!(536870912&n)&&!(128&t.flags)&&(fs(t),6&t.subtreeFlags&&(t.flags|=8192)):fs(t),null!==(n=t.updateQueue)&&cs(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&B(qa),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Aa(Ma),fs(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}function hs(e,t){switch(la(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Aa(Ma),K(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return X(t),null;case 31:if(null!==t.memoizedState){if(zo(t),null===t.alternate)throw Error(i(340));va()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(zo(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));va()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return B(Bo),null;case 4:return K(),null;case 10:return Aa(t.type),null;case 22:case 23:return zo(t),jo(),null!==e&&B(qa),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return Aa(Ma),null;default:return null}}function ms(e,t){switch(la(t),t.tag){case 3:Aa(Ma),K();break;case 26:case 27:case 5:X(t);break;case 4:K();break;case 31:null!==t.memoizedState&&zo(t);break;case 13:zo(t);break;case 19:B(Bo);break;case 10:Aa(t.type);break;case 22:case 23:zo(t),jo(),null!==e&&B(qa);break;case 24:Aa(Ma)}}function gs(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var a=r.next;n=a;do{if((n.tag&e)===e){r=void 0;var o=n.create,i=n.inst;r=o(),i.destroy=r}n=n.next}while(n!==a)}}catch(l){xc(t,t.return,l)}}function ys(e,t,n){try{var r=t.updateQueue,a=null!==r?r.lastEffect:null;if(null!==a){var o=a.next;r=o;do{if((r.tag&e)===e){var i=r.inst,l=i.destroy;if(void 0!==l){i.destroy=void 0,a=t;var s=n,u=l;try{u()}catch(c){xc(a,s,c)}}}r=r.next}while(r!==o)}}catch(c){xc(t,t.return,c)}}function bs(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{Co(t,n)}catch(r){xc(e,e.return,r)}}}function vs(e,t,n){n.props=xl(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){xc(e,t,r)}}function ws(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(a){xc(e,t,a)}}function ks(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(a){xc(e,t,a)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(o){xc(e,t,o)}else n.current=null}function Ss(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(a){xc(e,e.return,a)}}function xs(e,t,n){try{var r=e.stateNode;!function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var a=null,o=null,l=null,s=null,u=null,c=null,d=null;for(h in n){var f=n[h];if(n.hasOwnProperty(h)&&null!=f)switch(h){case"checked":case"value":break;case"defaultValue":u=f;default:r.hasOwnProperty(h)||cd(e,t,h,null,r,f)}}for(var p in r){var h=r[p];if(f=n[p],r.hasOwnProperty(p)&&(null!=h||null!=f))switch(p){case"type":o=h;break;case"name":a=h;break;case"checked":c=h;break;case"defaultChecked":d=h;break;case"value":l=h;break;case"defaultValue":s=h;break;case"children":case"dangerouslySetInnerHTML":if(null!=h)throw Error(i(137,t));break;default:h!==f&&cd(e,t,p,h,r,f)}}return void bt(e,l,s,u,c,d,o,a);case"select":for(o in h=l=s=p=null,n)if(u=n[o],n.hasOwnProperty(o)&&null!=u)switch(o){case"value":break;case"multiple":h=u;default:r.hasOwnProperty(o)||cd(e,t,o,null,r,u)}for(a in r)if(o=r[a],u=n[a],r.hasOwnProperty(a)&&(null!=o||null!=u))switch(a){case"value":p=o;break;case"defaultValue":s=o;break;case"multiple":l=o;default:o!==u&&cd(e,t,a,o,r,u)}return t=s,n=l,r=h,void(null!=p?kt(e,!!n,p,!1):!!r!=!!n&&(null!=t?kt(e,!!n,t,!0):kt(e,!!n,n?[]:"",!1)));case"textarea":for(s in h=p=null,n)if(a=n[s],n.hasOwnProperty(s)&&null!=a&&!r.hasOwnProperty(s))switch(s){case"value":case"children":break;default:cd(e,t,s,null,r,a)}for(l in r)if(a=r[l],o=n[l],r.hasOwnProperty(l)&&(null!=a||null!=o))switch(l){case"value":p=a;break;case"defaultValue":h=a;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=a)throw Error(i(91));break;default:a!==o&&cd(e,t,l,a,r,o)}return void St(e,p,h);case"option":for(var m in n)if(p=n[m],n.hasOwnProperty(m)&&null!=p&&!r.hasOwnProperty(m))if("selected"===m)e.selected=!1;else cd(e,t,m,null,r,p);for(u in r)if(p=r[u],h=n[u],r.hasOwnProperty(u)&&p!==h&&(null!=p||null!=h))if("selected"===u)e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p;else cd(e,t,u,p,r,h);return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)p=n[g],n.hasOwnProperty(g)&&null!=p&&!r.hasOwnProperty(g)&&cd(e,t,g,null,r,p);for(c in r)if(p=r[c],h=n[c],r.hasOwnProperty(c)&&p!==h&&(null!=p||null!=h))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(i(137,t));break;default:cd(e,t,c,p,r,h)}return;default:if(Tt(t)){for(var y in n)p=n[y],n.hasOwnProperty(y)&&void 0!==p&&!r.hasOwnProperty(y)&&dd(e,t,y,void 0,r,p);for(d in r)p=r[d],h=n[d],!r.hasOwnProperty(d)||p===h||void 0===p&&void 0===h||dd(e,t,d,p,r,h);return}}for(var b in n)p=n[b],n.hasOwnProperty(b)&&null!=p&&!r.hasOwnProperty(b)&&cd(e,t,b,null,r,p);for(f in r)p=r[f],h=n[f],!r.hasOwnProperty(f)||p===h||null==p&&null==h||cd(e,t,f,p,r,h)}(r,e.type,n,t),r[Ue]=t}catch(a){xc(e,e.return,a)}}function Es(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&Ad(e.type)||4===e.tag}function _s(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Es(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&Ad(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function As(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=jt));else if(4!==r&&(27===r&&Ad(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(As(e,t,n),e=e.sibling;null!==e;)As(e,t,n),e=e.sibling}function Cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&Ad(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(Cs(e,t,n),e=e.sibling;null!==e;)Cs(e,t,n),e=e.sibling}function Ts(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,a=t.attributes;a.length;)t.removeAttributeNode(a[0]);fd(t,r,n),t[$e]=e,t[Ue]=n}catch(o){xc(e,e.return,o)}}var Ns=!1,Ps=!1,Os=!1,js="function"==typeof WeakSet?WeakSet:Set,Ls=null;function Rs(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Ys(e,n),4&r&&gs(5,n);break;case 1:if(Ys(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(i){xc(n,n.return,i)}else{var a=xl(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(a,t,e.__reactInternalSnapshotBeforeUpdate)}catch(l){xc(n,n.return,l)}}64&r&&bs(n),512&r&&ws(n,n.return);break;case 3:if(Ys(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{Co(e,t)}catch(i){xc(n,n.return,i)}}break;case 27:null===t&&4&r&&Ts(n);case 26:case 5:Ys(e,n),null===t&&4&r&&Ss(n),512&r&&ws(n,n.return);break;case 12:Ys(e,n);break;case 31:Ys(e,n),4&r&&Bs(e,n);break;case 13:Ys(e,n),4&r&&$s(e,n),64&r&&(null!==(e=n.memoizedState)&&(null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$~"===e.data)e._reactRetry=t;else if("$?"!==e.data||"loading"!==n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=Cc.bind(null,n))));break;case 22:if(!(r=null!==n.memoizedState||Ns)){t=null!==t&&null!==t.memoizedState||Ps,a=Ns;var o=Ps;Ns=r,(Ps=t)&&!o?Qs(e,n,!!(8772&n.subtreeFlags)):Ys(e,n),Ns=a,Ps=o}break;case 30:break;default:Ys(e,n)}}function Is(e){var t=e.alternate;null!==t&&(e.alternate=null,Is(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&Ke(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Ds=null,Fs=!1;function Ms(e,t,n){for(n=n.child;null!==n;)zs(e,t,n),n=n.sibling}function zs(e,t,n){if(be&&"function"==typeof be.onCommitFiberUnmount)try{be.onCommitFiberUnmount(ye,n)}catch(o){}switch(n.tag){case 26:Ps||ks(n,t),Ms(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:Ps||ks(n,t);var r=Ds,a=Fs;Ad(n.type)&&(Ds=n.stateNode,Fs=!1),Ms(e,t,n),Md(n.stateNode),Ds=r,Fs=a;break;case 5:Ps||ks(n,t);case 6:if(r=Ds,a=Fs,Ds=null,Ms(e,t,n),Fs=a,null!==(Ds=r))if(Fs)try{(9===Ds.nodeType?Ds.body:"HTML"===Ds.nodeName?Ds.ownerDocument.body:Ds).removeChild(n.stateNode)}catch(i){xc(n,t,i)}else try{Ds.removeChild(n.stateNode)}catch(i){xc(n,t,i)}break;case 18:null!==Ds&&(Fs?(Cd(9===(e=Ds).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),Wf(e)):Cd(Ds,n.stateNode));break;case 4:r=Ds,a=Fs,Ds=n.stateNode.containerInfo,Fs=!0,Ms(e,t,n),Ds=r,Fs=a;break;case 0:case 11:case 14:case 15:ys(2,n,t),Ps||ys(4,n,t),Ms(e,t,n);break;case 1:Ps||(ks(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount&&vs(n,t,r)),Ms(e,t,n);break;case 21:Ms(e,t,n);break;case 22:Ps=(r=Ps)||null!==n.memoizedState,Ms(e,t,n),Ps=r;break;default:Ms(e,t,n)}}function Bs(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&null!==(e=e.memoizedState))){e=e.dehydrated;try{Wf(e)}catch(n){xc(t,t.return,n)}}}function $s(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&(null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))))try{Wf(e)}catch(n){xc(t,t.return,n)}}function Us(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new js),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new js),t;default:throw Error(i(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Tc.bind(null,e,t);t.then(r,r)}})}function Hs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r],o=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 27:if(Ad(s.type)){Ds=s.stateNode,Fs=!1;break e}break;case 5:Ds=s.stateNode,Fs=!1;break e;case 3:case 4:Ds=s.stateNode.containerInfo,Fs=!0;break e}s=s.return}if(null===Ds)throw Error(i(160));zs(o,l,a),Ds=null,Fs=!1,null!==(o=a.alternate)&&(o.return=null),a.return=null}if(13886&t.subtreeFlags)for(t=t.child;null!==t;)Ws(t,e),t=t.sibling}var Vs=null;function Ws(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Hs(t,e),Gs(e),4&r&&(ys(3,e,e.return),gs(3,e),ys(5,e,e.return));break;case 1:Hs(t,e),Gs(e),512&r&&(Ps||null===n||ks(n,n.return)),64&r&&Ns&&(null!==(e=e.updateQueue)&&(null!==(r=e.callbacks)&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=null===n?r:n.concat(r))));break;case 26:var a=Vs;if(Hs(t,e),Gs(e),512&r&&(Ps||null===n||ks(n,n.return)),4&r){var o=null!==n?n.memoizedState:null;if(r=e.memoizedState,null===n)if(null===r)if(null===e.stateNode){e:{r=e.type,n=e.memoizedProps,a=a.ownerDocument||a;t:switch(r){case"title":(!(o=a.getElementsByTagName("title")[0])||o[Ye]||o[$e]||"http://www.w3.org/2000/svg"===o.namespaceURI||o.hasAttribute("itemprop"))&&(o=a.createElement(r),a.head.insertBefore(o,a.querySelector("head > title"))),fd(o,r,n),o[$e]=e,et(o),r=o;break e;case"link":var l=nf("link","href",a).get(r+(n.href||""));if(l)for(var s=0;s<l.length;s++)if((o=l[s]).getAttribute("href")===(null==n.href||""===n.href?null:n.href)&&o.getAttribute("rel")===(null==n.rel?null:n.rel)&&o.getAttribute("title")===(null==n.title?null:n.title)&&o.getAttribute("crossorigin")===(null==n.crossOrigin?null:n.crossOrigin)){l.splice(s,1);break t}fd(o=a.createElement(r),r,n),a.head.appendChild(o);break;case"meta":if(l=nf("meta","content",a).get(r+(n.content||"")))for(s=0;s<l.length;s++)if((o=l[s]).getAttribute("content")===(null==n.content?null:""+n.content)&&o.getAttribute("name")===(null==n.name?null:n.name)&&o.getAttribute("property")===(null==n.property?null:n.property)&&o.getAttribute("http-equiv")===(null==n.httpEquiv?null:n.httpEquiv)&&o.getAttribute("charset")===(null==n.charSet?null:n.charSet)){l.splice(s,1);break t}fd(o=a.createElement(r),r,n),a.head.appendChild(o);break;default:throw Error(i(468,r))}o[$e]=e,et(o),r=o}e.stateNode=r}else rf(a,e.type,e.stateNode);else e.stateNode=Xd(a,r,e.memoizedProps);else o!==r?(null===o?null!==n.stateNode&&(n=n.stateNode).parentNode.removeChild(n):o.count--,null===r?rf(a,e.type,e.stateNode):Xd(a,r,e.memoizedProps)):null===r&&null!==e.stateNode&&xs(e,e.memoizedProps,n.memoizedProps)}break;case 27:Hs(t,e),Gs(e),512&r&&(Ps||null===n||ks(n,n.return)),null!==n&&4&r&&xs(e,e.memoizedProps,n.memoizedProps);break;case 5:if(Hs(t,e),Gs(e),512&r&&(Ps||null===n||ks(n,n.return)),32&e.flags){a=e.stateNode;try{Et(a,"")}catch(m){xc(e,e.return,m)}}4&r&&null!=e.stateNode&&xs(e,a=e.memoizedProps,null!==n?n.memoizedProps:a),1024&r&&(Os=!0);break;case 6:if(Hs(t,e),Gs(e),4&r){if(null===e.stateNode)throw Error(i(162));r=e.memoizedProps,n=e.stateNode;try{n.nodeValue=r}catch(m){xc(e,e.return,m)}}break;case 3:if(tf=null,a=Vs,Vs=$d(t.containerInfo),Hs(t,e),Vs=a,Gs(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Wf(t.containerInfo)}catch(m){xc(e,e.return,m)}Os&&(Os=!1,qs(e));break;case 4:r=Vs,Vs=$d(e.stateNode.containerInfo),Hs(t,e),Gs(e),Vs=r;break;case 12:default:Hs(t,e),Gs(e);break;case 31:case 19:Hs(t,e),Gs(e),4&r&&(null!==(r=e.updateQueue)&&(e.updateQueue=null,Us(e,r)));break;case 13:Hs(t,e),Gs(e),8192&e.child.flags&&null!==e.memoizedState!=(null!==n&&null!==n.memoizedState)&&(ju=se()),4&r&&(null!==(r=e.updateQueue)&&(e.updateQueue=null,Us(e,r)));break;case 22:a=null!==e.memoizedState;var u=null!==n&&null!==n.memoizedState,c=Ns,d=Ps;if(Ns=c||a,Ps=d||u,Hs(t,e),Ps=d,Ns=c,Gs(e),8192&r)e:for(t=e.stateNode,t._visibility=a?-2&t._visibility:1|t._visibility,a&&(null===n||u||Ns||Ps||Ks(e)),n=null,t=e;;){if(5===t.tag||26===t.tag){if(null===n){u=n=t;try{if(o=u.stateNode,a)"function"==typeof(l=o.style).setProperty?l.setProperty("display","none","important"):l.display="none";else{s=u.stateNode;var f=u.memoizedProps.style,p=null!=f&&f.hasOwnProperty("display")?f.display:null;s.style.display=null==p||"boolean"==typeof p?"":(""+p).trim()}}catch(m){xc(u,u.return,m)}}}else if(6===t.tag){if(null===n){u=t;try{u.stateNode.nodeValue=a?"":u.memoizedProps}catch(m){xc(u,u.return,m)}}}else if(18===t.tag){if(null===n){u=t;try{var h=u.stateNode;a?Td(h,!0):Td(u.stateNode,!1)}catch(m){xc(u,u.return,m)}}}else if((22!==t.tag&&23!==t.tag||null===t.memoizedState||t===e)&&null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;null===t.sibling;){if(null===t.return||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}4&r&&(null!==(r=e.updateQueue)&&(null!==(n=r.retryQueue)&&(r.retryQueue=null,Us(e,n))));case 30:case 21:}}function Gs(e){var t=e.flags;if(2&t){try{for(var n,r=e.return;null!==r;){if(Es(r)){n=r;break}r=r.return}if(null==n)throw Error(i(160));switch(n.tag){case 27:var a=n.stateNode;Cs(e,_s(e),a);break;case 5:var o=n.stateNode;32&n.flags&&(Et(o,""),n.flags&=-33),Cs(e,_s(e),o);break;case 3:case 4:var l=n.stateNode.containerInfo;As(e,_s(e),l);break;default:throw Error(i(161))}}catch(s){xc(e,e.return,s)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function qs(e){if(1024&e.subtreeFlags)for(e=e.child;null!==e;){var t=e;qs(t),5===t.tag&&1024&t.flags&&t.stateNode.reset(),e=e.sibling}}function Ys(e,t){if(8772&t.subtreeFlags)for(t=t.child;null!==t;)Rs(e,t.alternate,t),t=t.sibling}function Ks(e){for(e=e.child;null!==e;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ys(4,t,t.return),Ks(t);break;case 1:ks(t,t.return);var n=t.stateNode;"function"==typeof n.componentWillUnmount&&vs(t,t.return,n),Ks(t);break;case 27:Md(t.stateNode);case 26:case 5:ks(t,t.return),Ks(t);break;case 22:null===t.memoizedState&&Ks(t);break;default:Ks(t)}e=e.sibling}}function Qs(e,t,n){for(n=n&&!!(8772&t.subtreeFlags),t=t.child;null!==t;){var r=t.alternate,a=e,o=t,i=o.flags;switch(o.tag){case 0:case 11:case 15:Qs(a,o,n),gs(4,o);break;case 1:if(Qs(a,o,n),"function"==typeof(a=(r=o).stateNode).componentDidMount)try{a.componentDidMount()}catch(u){xc(r,r.return,u)}if(null!==(a=(r=o).updateQueue)){var l=r.stateNode;try{var s=a.shared.hiddenCallbacks;if(null!==s)for(a.shared.hiddenCallbacks=null,a=0;a<s.length;a++)Ao(s[a],l)}catch(u){xc(r,r.return,u)}}n&&64&i&&bs(o),ws(o,o.return);break;case 27:Ts(o);case 26:case 5:Qs(a,o,n),n&&null===r&&4&i&&Ss(o),ws(o,o.return);break;case 12:Qs(a,o,n);break;case 31:Qs(a,o,n),n&&4&i&&Bs(a,o);break;case 13:Qs(a,o,n),n&&4&i&&$s(a,o);break;case 22:null===o.memoizedState&&Qs(a,o,n),ws(o,o.return);break;case 30:break;default:Qs(a,o,n)}t=t.sibling}}function Xs(e,t){var n=null;null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),e=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(e=t.memoizedState.cachePool.pool),e!==n&&(null!=e&&e.refCount++,null!=n&&Ba(n))}function Zs(e,t){e=null,null!==t.alternate&&(e=t.alternate.memoizedState.cache),(t=t.memoizedState.cache)!==e&&(t.refCount++,null!=e&&Ba(e))}function Js(e,t,n,r){if(10256&t.subtreeFlags)for(t=t.child;null!==t;)eu(e,t,n,r),t=t.sibling}function eu(e,t,n,r){var a=t.flags;switch(t.tag){case 0:case 11:case 15:Js(e,t,n,r),2048&a&&gs(9,t);break;case 1:case 31:case 13:default:Js(e,t,n,r);break;case 3:Js(e,t,n,r),2048&a&&(e=null,null!==t.alternate&&(e=t.alternate.memoizedState.cache),(t=t.memoizedState.cache)!==e&&(t.refCount++,null!=e&&Ba(e)));break;case 12:if(2048&a){Js(e,t,n,r),e=t.stateNode;try{var o=t.memoizedProps,i=o.id,l=o.onPostCommit;"function"==typeof l&&l(i,null===t.alternate?"mount":"update",e.passiveEffectDuration,-0)}catch(s){xc(t,t.return,s)}}else Js(e,t,n,r);break;case 23:break;case 22:o=t.stateNode,i=t.alternate,null!==t.memoizedState?2&o._visibility?Js(e,t,n,r):nu(e,t):2&o._visibility?Js(e,t,n,r):(o._visibility|=2,tu(e,t,n,r,!!(10256&t.subtreeFlags)||!1)),2048&a&&Xs(i,t);break;case 24:Js(e,t,n,r),2048&a&&Zs(t.alternate,t)}}function tu(e,t,n,r,a){for(a=a&&(!!(10256&t.subtreeFlags)||!1),t=t.child;null!==t;){var o=e,i=t,l=n,s=r,u=i.flags;switch(i.tag){case 0:case 11:case 15:tu(o,i,l,s,a),gs(8,i);break;case 23:break;case 22:var c=i.stateNode;null!==i.memoizedState?2&c._visibility?tu(o,i,l,s,a):nu(o,i):(c._visibility|=2,tu(o,i,l,s,a)),a&&2048&u&&Xs(i.alternate,i);break;case 24:tu(o,i,l,s,a),a&&2048&u&&Zs(i.alternate,i);break;default:tu(o,i,l,s,a)}t=t.sibling}}function nu(e,t){if(10256&t.subtreeFlags)for(t=t.child;null!==t;){var n=e,r=t,a=r.flags;switch(r.tag){case 22:nu(n,r),2048&a&&Xs(r.alternate,r);break;case 24:nu(n,r),2048&a&&Zs(r.alternate,r);break;default:nu(n,r)}t=t.sibling}}var ru=8192;function au(e,t,n){if(e.subtreeFlags&ru)for(e=e.child;null!==e;)ou(e,t,n),e=e.sibling}function ou(e,t,n){switch(e.tag){case 26:au(e,t,n),e.flags&ru&&null!==e.memoizedState&&function(e,t,n,r){if(!("stylesheet"!==n.type||"string"==typeof r.media&&!1===matchMedia(r.media).matches||4&n.state.loading)){if(null===n.instance){var a=Gd(r.href),o=t.querySelector(qd(a));if(o)return null!==(t=o._p)&&"object"==typeof t&&"function"==typeof t.then&&(e.count++,e=lf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=o,void et(o);o=t.ownerDocument||t,r=Yd(r),(a=zd.get(a))&&Jd(r,a),et(o=o.createElement("link"));var i=o;i._p=new Promise(function(e,t){i.onload=e,i.onerror=t}),fd(o,"link",r),n.instance=o}null===e.stylesheets&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(3&n.state.loading)&&(e.count++,n=lf.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}(n,Vs,e.memoizedState,e.memoizedProps);break;case 5:default:au(e,t,n);break;case 3:case 4:var r=Vs;Vs=$d(e.stateNode.containerInfo),au(e,t,n),Vs=r;break;case 22:null===e.memoizedState&&(null!==(r=e.alternate)&&null!==r.memoizedState?(r=ru,ru=16777216,au(e,t,n),ru=r):au(e,t,n))}}function iu(e){var t=e.alternate;if(null!==t&&null!==(e=t.child)){t.child=null;do{t=e.sibling,e.sibling=null,e=t}while(null!==e)}}function lu(e){var t=e.deletions;if(16&e.flags){if(null!==t)for(var n=0;n<t.length;n++){var r=t[n];Ls=r,cu(r,e)}iu(e)}if(10256&e.subtreeFlags)for(e=e.child;null!==e;)su(e),e=e.sibling}function su(e){switch(e.tag){case 0:case 11:case 15:lu(e),2048&e.flags&&ys(9,e,e.return);break;case 3:case 12:default:lu(e);break;case 22:var t=e.stateNode;null!==e.memoizedState&&2&t._visibility&&(null===e.return||13!==e.return.tag)?(t._visibility&=-3,uu(e)):lu(e)}}function uu(e){var t=e.deletions;if(16&e.flags){if(null!==t)for(var n=0;n<t.length;n++){var r=t[n];Ls=r,cu(r,e)}iu(e)}for(e=e.child;null!==e;){switch((t=e).tag){case 0:case 11:case 15:ys(8,t,t.return),uu(t);break;case 22:2&(n=t.stateNode)._visibility&&(n._visibility&=-3,uu(t));break;default:uu(t)}e=e.sibling}}function cu(e,t){for(;null!==Ls;){var n=Ls;switch(n.tag){case 0:case 11:case 15:ys(8,n,t);break;case 23:case 22:if(null!==n.memoizedState&&null!==n.memoizedState.cachePool){var r=n.memoizedState.cachePool.pool;null!=r&&r.refCount++}break;case 24:Ba(n.memoizedState.cache)}if(null!==(r=n.child))r.return=n,Ls=r;else e:for(n=e;null!==Ls;){var a=(r=Ls).sibling,o=r.return;if(Is(r),r===n){Ls=null;break e}if(null!==a){a.return=o,Ls=a;break e}Ls=o}}}var du={getCacheForType:function(e){var t=ja(Ma),n=t.data.get(e);return void 0===n&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return ja(Ma).controller.signal}},fu="function"==typeof WeakMap?WeakMap:Map,pu=0,hu=null,mu=null,gu=0,yu=0,bu=null,vu=!1,wu=!1,ku=!1,Su=0,xu=0,Eu=0,_u=0,Au=0,Cu=0,Tu=0,Nu=null,Pu=null,Ou=!1,ju=0,Lu=0,Ru=1/0,Iu=null,Du=null,Fu=0,Mu=null,zu=null,Bu=0,$u=0,Uu=null,Hu=null,Vu=0,Wu=null;function Gu(){return 2&pu&&0!==gu?gu&-gu:null!==R.T?Uc():Me()}function qu(){if(0===Cu)if(536870912&gu&&!da)Cu=536870912;else{var e=Ee;!(3932160&(Ee<<=1))&&(Ee=262144),Cu=e}return null!==(e=Lo.current)&&(e.flags|=32),Cu}function Yu(e,t,n){(e!==hu||2!==yu&&9!==yu)&&null===e.cancelPendingCommit||(tc(e,0),Zu(e,gu,Cu,!1)),je(e,n),2&pu&&e===hu||(e===hu&&(!(2&pu)&&(_u|=n),4===xu&&Zu(e,gu,Cu,!1)),Ic(e))}function Ku(e,t,n){if(6&pu)throw Error(i(327));for(var r=!n&&!(127&t)&&0===(t&e.expiredLanes)||Te(e,t),a=r?function(e,t){var n=pu;pu|=2;var r=ac(),a=oc();hu!==e||gu!==t?(Iu=null,Ru=se()+500,tc(e,t)):wu=Te(e,t);e:for(;;)try{if(0!==yu&&null!==mu){t=mu;var o=bu;t:switch(yu){case 1:yu=0,bu=null,fc(e,t,o,1);break;case 2:case 9:if(to(o)){yu=0,bu=null,dc(t);break}t=function(){2!==yu&&9!==yu||hu!==e||(yu=7),Ic(e)},o.then(t,t);break e;case 3:yu=7;break e;case 4:yu=5;break e;case 7:to(o)?(yu=0,bu=null,dc(t)):(yu=0,bu=null,fc(e,t,o,7));break;case 5:var l=null;switch(mu.tag){case 26:l=mu.memoizedState;case 5:case 27:var s=mu;if(l?af(l):s.stateNode.complete){yu=0,bu=null;var u=s.sibling;if(null!==u)mu=u;else{var c=s.return;null!==c?(mu=c,pc(c)):mu=null}break t}}yu=0,bu=null,fc(e,t,o,5);break;case 6:yu=0,bu=null,fc(e,t,o,6);break;case 8:ec(),xu=6;break e;default:throw Error(i(462))}}uc();break}catch(d){nc(e,d)}return Ea=xa=null,R.H=r,R.A=a,pu=n,null!==mu?0:(hu=null,gu=0,Pr(),xu)}(e,t):lc(e,t,!0),o=r;;){if(0===a){wu&&!r&&Zu(e,t,0,!1);break}if(n=e.current.alternate,!o||Xu(n)){if(2===a){if(o=t,e.errorRecoveryDisabledLanes&o)var l=0;else l=0!==(l=-536870913&e.pendingLanes)?l:536870912&l?536870912:0;if(0!==l){t=l;e:{var s=e;a=Nu;var u=s.current.memoizedState.isDehydrated;if(u&&(tc(s,l).flags|=256),2!==(l=lc(s,l,!1))){if(ku&&!u){s.errorRecoveryDisabledLanes|=o,_u|=o,a=4;break e}o=Pu,Pu=a,null!==o&&(null===Pu?Pu=o:Pu.push.apply(Pu,o))}a=l}if(o=!1,2!==a)continue}}if(1===a){tc(e,0),Zu(e,t,0,!0);break}e:{switch(r=e,o=a){case 0:case 1:throw Error(i(345));case 4:if((4194048&t)!==t)break;case 6:Zu(r,t,Cu,!vu);break e;case 2:Pu=null;break;case 3:case 5:break;default:throw Error(i(329))}if((62914560&t)===t&&10<(a=ju+300-se())){if(Zu(r,t,Cu,!vu),0!==Ce(r,0,!0))break e;Bu=t,r.timeoutHandle=kd(Qu.bind(null,r,n,Pu,Iu,Ou,t,Cu,_u,Tu,vu,o,"Throttled",-0,0),a)}else Qu(r,n,Pu,Iu,Ou,t,Cu,_u,Tu,vu,o,null,-0,0)}break}a=lc(e,t,!1),o=!1}Ic(e)}function Qu(e,t,n,r,a,o,i,l,s,u,c,d,f,p){if(e.timeoutHandle=-1,8192&(d=t.subtreeFlags)||!(16785408&~d)){ou(t,o,d={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:jt});var h=(62914560&o)===o?ju-se():(4194048&o)===o?Lu-se():0;if(null!==(h=function(e,t){return e.stylesheets&&0===e.count&&uf(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var r=setTimeout(function(){if(e.stylesheets&&uf(e,e.stylesheets),e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}},6e4+t);0<e.imgBytes&&0===of&&(of=62500*function(){if("function"==typeof performance.getEntriesByType){for(var e=0,t=0,n=performance.getEntriesByType("resource"),r=0;r<n.length;r++){var a=n[r],o=a.transferSize,i=a.initiatorType,l=a.duration;if(o&&l&&pd(i)){for(i=0,l=a.responseEnd,r+=1;r<n.length;r++){var s=n[r],u=s.startTime;if(u>l)break;var c=s.transferSize,d=s.initiatorType;c&&pd(d)&&(i+=c*((s=s.responseEnd)<l?1:(l-u)/(s-u)))}if(--r,t+=8*(o+i)/(a.duration/1e3),10<++e)break}}if(0<e)return t/e/1e6}return navigator.connection&&"number"==typeof(e=navigator.connection.downlink)?e:5}());var a=setTimeout(function(){if(e.waitingForImages=!1,0===e.count&&(e.stylesheets&&uf(e,e.stylesheets),e.unsuspend)){var t=e.unsuspend;e.unsuspend=null,t()}},(e.imgBytes>of?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(a)}}:null}(d,h)))return Bu=o,e.cancelPendingCommit=h(mc.bind(null,e,t,o,n,r,a,i,l,s,c,d,null,f,p)),void Zu(e,o,i,!u)}mc(e,t,o,n,r,a,i,l,s)}function Xu(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&(null!==(n=t.updateQueue)&&null!==(n=n.stores)))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!Zn(o(),a))return!1}catch(i){return!1}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Zu(e,t,n,r){t&=~Au,t&=~_u,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var a=t;0<a;){var o=31-we(a),i=1<<o;r[o]=-1,a&=~i}0!==n&&Le(e,n,t)}function Ju(){return!!(6&pu)||(Dc(0,!1),!1)}function ec(){if(null!==mu){if(0===yu)var e=mu.return;else Ea=xa=null,li(e=mu),lo=null,so=0,e=mu;for(;null!==e;)ms(e.alternate,e),e=e.return;mu=null}}function tc(e,t){var n=e.timeoutHandle;-1!==n&&(e.timeoutHandle=-1,Sd(n)),null!==(n=e.cancelPendingCommit)&&(e.cancelPendingCommit=null,n()),Bu=0,ec(),hu=e,mu=n=Br(e.current,null),gu=t,yu=0,bu=null,vu=!1,wu=Te(e,t),ku=!1,Tu=Cu=Au=_u=Eu=xu=0,Pu=Nu=null,Ou=!1,8&t&&(t|=32&t);var r=e.entangledLanes;if(0!==r)for(e=e.entanglements,r&=t;0<r;){var a=31-we(r),o=1<<a;t|=e[a],r&=~o}return Su=t,Pr(),n}function nc(e,t){Ho=null,R.H=ml,t===Xa||t===Ja?(t=oo(),yu=3):t===Za?(t=oo(),yu=4):yu=t===jl?8:null!==t&&"object"==typeof t&&"function"==typeof t.then?6:1,bu=t,null===mu&&(xu=1,Cl(e,Yr(t,e.current)))}function rc(){var e=Lo.current;return null===e||((4194048&gu)===gu?null===Ro:!!((62914560&gu)===gu||536870912&gu)&&e===Ro)}function ac(){var e=R.H;return R.H=ml,null===e?ml:e}function oc(){var e=R.A;return R.A=du,e}function ic(){xu=4,vu||(4194048&gu)!==gu&&null!==Lo.current||(wu=!0),!(134217727&Eu)&&!(134217727&_u)||null===hu||Zu(hu,gu,Cu,!1)}function lc(e,t,n){var r=pu;pu|=2;var a=ac(),o=oc();hu===e&&gu===t||(Iu=null,tc(e,t)),t=!1;var i=xu;e:for(;;)try{if(0!==yu&&null!==mu){var l=mu,s=bu;switch(yu){case 8:ec(),i=6;break e;case 3:case 2:case 9:case 6:null===Lo.current&&(t=!0);var u=yu;if(yu=0,bu=null,fc(e,l,s,u),n&&wu){i=0;break e}break;default:u=yu,yu=0,bu=null,fc(e,l,s,u)}}sc(),i=xu;break}catch(c){nc(e,c)}return t&&e.shellSuspendCounter++,Ea=xa=null,pu=r,R.H=a,R.A=o,null===mu&&(hu=null,gu=0,Pr()),i}function sc(){for(;null!==mu;)cc(mu)}function uc(){for(;null!==mu&&!ie();)cc(mu)}function cc(e){var t=is(e.alternate,e,Su);e.memoizedProps=e.pendingProps,null===t?pc(e):mu=t}function dc(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=Wl(n,t,t.pendingProps,t.type,void 0,gu);break;case 11:t=Wl(n,t,t.pendingProps,t.type.render,t.ref,gu);break;case 5:li(t);default:ms(n,t),t=is(n,t=mu=$r(t,Su),Su)}e.memoizedProps=e.pendingProps,null===t?pc(e):mu=t}function fc(e,t,n,r){Ea=xa=null,li(t),lo=null,so=0;var a=t.return;try{if(function(e,t,n,r,a){if(n.flags|=32768,null!==r&&"object"==typeof r&&"function"==typeof r.then){if(null!==(t=n.alternate)&&Na(t,n,a,!0),null!==(n=Lo.current)){switch(n.tag){case 31:case 13:return null===Ro?ic():null===n.alternate&&0===xu&&(xu=3),n.flags&=-257,n.flags|=65536,n.lanes=a,r===eo?n.flags|=16384:(null===(t=n.updateQueue)?n.updateQueue=new Set([r]):t.add(r),Ec(e,r,a)),!1;case 22:return n.flags|=65536,r===eo?n.flags|=16384:(null===(t=n.updateQueue)?(t={transitions:null,markerInstances:null,retryQueue:new Set([r])},n.updateQueue=t):null===(n=t.retryQueue)?t.retryQueue=new Set([r]):n.add(r),Ec(e,r,a)),!1}throw Error(i(435,n.tag))}return Ec(e,r,a),ic(),!1}if(da)return null!==(t=Lo.current)?(!(65536&t.flags)&&(t.flags|=256),t.flags|=65536,t.lanes=a,r!==ha&&ka(Yr(e=Error(i(422),{cause:r}),n))):(r!==ha&&ka(Yr(t=Error(i(423),{cause:r}),n)),(e=e.current.alternate).flags|=65536,a&=-a,e.lanes|=a,r=Yr(r,n),So(e,a=Nl(e.stateNode,r,a)),4!==xu&&(xu=2)),!1;var o=Error(i(520),{cause:r});if(o=Yr(o,n),null===Nu?Nu=[o]:Nu.push(o),4!==xu&&(xu=2),null===t)return!0;r=Yr(r,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=a&-a,n.lanes|=e,So(n,e=Nl(n.stateNode,r,e)),!1;case 1:if(t=n.type,o=n.stateNode,!(128&n.flags||"function"!=typeof t.getDerivedStateFromError&&(null===o||"function"!=typeof o.componentDidCatch||null!==Du&&Du.has(o))))return n.flags|=65536,a&=-a,n.lanes|=a,Ol(a=Pl(a),e,n,r),So(n,a),!1}n=n.return}while(null!==n);return!1}(e,a,t,n,gu))return xu=1,Cl(e,Yr(n,e.current)),void(mu=null)}catch(o){if(null!==a)throw mu=a,o;return xu=1,Cl(e,Yr(n,e.current)),void(mu=null)}32768&t.flags?(da||1===r?e=!0:wu||536870912&gu?e=!1:(vu=e=!0,(2===r||9===r||3===r||6===r)&&(null!==(r=Lo.current)&&13===r.tag&&(r.flags|=16384))),hc(t,e)):pc(t)}function pc(e){var t=e;do{if(32768&t.flags)return void hc(t,vu);e=t.return;var n=ps(t.alternate,t,Su);if(null!==n)return void(mu=n);if(null!==(t=t.sibling))return void(mu=t);mu=t=e}while(null!==t);0===xu&&(xu=5)}function hc(e,t){do{var n=hs(e.alternate,e);if(null!==n)return n.flags&=32767,void(mu=n);if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling))return void(mu=e);mu=e=n}while(null!==e);xu=6,mu=null}function mc(e,t,n,r,a,o,l,s,u){e.cancelPendingCommit=null;do{wc()}while(0!==Fu);if(6&pu)throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(o=t.lanes|t.childLanes,function(e,t,n,r,a,o){var i=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var l=e.entanglements,s=e.expirationTimes,u=e.hiddenUpdates;for(n=i&~n;0<n;){var c=31-we(n),d=1<<c;l[c]=0,s[c]=-1;var f=u[c];if(null!==f)for(u[c]=null,c=0;c<f.length;c++){var p=f[c];null!==p&&(p.lane&=-536870913)}n&=~d}0!==r&&Le(e,r,0),0!==o&&0===a&&0!==e.tag&&(e.suspendedLanes|=o&~(i&~t))}(e,n,o|=Nr,l,s,u),e===hu&&(mu=hu=null,gu=0),zu=t,Mu=e,Bu=n,$u=o,Uu=a,Hu=r,10256&t.subtreeFlags||10256&t.flags?(e.callbackNode=null,e.callbackPriority=0,ae(fe,function(){return kc(),null})):(e.callbackNode=null,e.callbackPriority=0),r=!!(13878&t.flags),13878&t.subtreeFlags||r){r=R.T,R.T=null,a=I.p,I.p=2,l=pu,pu|=4;try{!function(e,t){if(e=e.containerInfo,hd=wf,ar(e=rr(e))){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch(g){n=null;break e}var l=0,s=-1,u=-1,c=0,d=0,f=e,p=null;t:for(;;){for(var h;f!==n||0!==a&&3!==f.nodeType||(s=l+a),f!==o||0!==r&&3!==f.nodeType||(u=l+r),3===f.nodeType&&(l+=f.nodeValue.length),null!==(h=f.firstChild);)p=f,f=h;for(;;){if(f===e)break t;if(p===n&&++c===a&&(s=l),p===o&&++d===r&&(u=l),null!==(h=f.nextSibling))break;p=(f=p).parentNode}f=h}n=-1===s||-1===u?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(md={focusedElem:e,selectionRange:n},wf=!1,Ls=t;null!==Ls;)if(e=(t=Ls).child,1028&t.subtreeFlags&&null!==e)e.return=t,Ls=e;else for(;null!==Ls;){switch(o=(t=Ls).alternate,e=t.flags,t.tag){case 0:if(4&e&&null!==(e=null!==(e=t.updateQueue)?e.events:null))for(n=0;n<e.length;n++)(a=e[n]).ref.impl=a.nextImpl;break;case 11:case 15:case 5:case 26:case 27:case 6:case 4:case 17:break;case 1:if(1024&e&&null!==o){e=void 0,n=t,a=o.memoizedProps,o=o.memoizedState,r=n.stateNode;try{var m=xl(n.type,a);e=r.getSnapshotBeforeUpdate(m,o),r.__reactInternalSnapshotBeforeUpdate=e}catch(y){xc(n,n.return,y)}}break;case 3:if(1024&e)if(9===(n=(e=t.stateNode.containerInfo).nodeType))Nd(e);else if(1===n)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Nd(e);break;default:e.textContent=""}break;default:if(1024&e)throw Error(i(163))}if(null!==(e=t.sibling)){e.return=t.return,Ls=e;break}Ls=t.return}}(e,t)}finally{pu=l,I.p=a,R.T=r}}Fu=1,gc(),yc(),bc()}}function gc(){if(1===Fu){Fu=0;var e=Mu,t=zu,n=!!(13878&t.flags);if(13878&t.subtreeFlags||n){n=R.T,R.T=null;var r=I.p;I.p=2;var a=pu;pu|=4;try{Ws(t,e);var o=md,i=rr(e.containerInfo),l=o.focusedElem,s=o.selectionRange;if(i!==l&&l&&l.ownerDocument&&nr(l.ownerDocument.documentElement,l)){if(null!==s&&ar(l)){var u=s.start,c=s.end;if(void 0===c&&(c=u),"selectionStart"in l)l.selectionStart=u,l.selectionEnd=Math.min(c,l.value.length);else{var d=l.ownerDocument||document,f=d&&d.defaultView||window;if(f.getSelection){var p=f.getSelection(),h=l.textContent.length,m=Math.min(s.start,h),g=void 0===s.end?m:Math.min(s.end,h);!p.extend&&m>g&&(i=g,g=m,m=i);var y=tr(l,m),b=tr(l,g);if(y&&b&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==b.node||p.focusOffset!==b.offset)){var v=d.createRange();v.setStart(y.node,y.offset),p.removeAllRanges(),m>g?(p.addRange(v),p.extend(b.node,b.offset)):(v.setEnd(b.node,b.offset),p.addRange(v))}}}}for(d=[],p=l;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof l.focus&&l.focus(),l=0;l<d.length;l++){var w=d[l];w.element.scrollLeft=w.left,w.element.scrollTop=w.top}}wf=!!hd,md=hd=null}finally{pu=a,I.p=r,R.T=n}}e.current=t,Fu=2}}function yc(){if(2===Fu){Fu=0;var e=Mu,t=zu,n=!!(8772&t.flags);if(8772&t.subtreeFlags||n){n=R.T,R.T=null;var r=I.p;I.p=2;var a=pu;pu|=4;try{Rs(e,t.alternate,t)}finally{pu=a,I.p=r,R.T=n}}Fu=3}}function bc(){if(4===Fu||3===Fu){Fu=0,le();var e=Mu,t=zu,n=Bu,r=Hu;10256&t.subtreeFlags||10256&t.flags?Fu=5:(Fu=0,zu=Mu=null,vc(e,e.pendingLanes));var a=e.pendingLanes;if(0===a&&(Du=null),Fe(n),t=t.stateNode,be&&"function"==typeof be.onCommitFiberRoot)try{be.onCommitFiberRoot(ye,t,void 0,!(128&~t.current.flags))}catch(s){}if(null!==r){t=R.T,a=I.p,I.p=2,R.T=null;try{for(var o=e.onRecoverableError,i=0;i<r.length;i++){var l=r[i];o(l.value,{componentStack:l.stack})}}finally{R.T=t,I.p=a}}3&Bu&&wc(),Ic(e),a=e.pendingLanes,261930&n&&42&a?e===Wu?Vu++:(Vu=0,Wu=e):Vu=0,Dc(0,!1)}}function vc(e,t){0===(e.pooledCacheLanes&=t)&&(null!=(t=e.pooledCache)&&(e.pooledCache=null,Ba(t)))}function wc(){return gc(),yc(),bc(),kc()}function kc(){if(5!==Fu)return!1;var e=Mu,t=$u;$u=0;var n=Fe(Bu),r=R.T,a=I.p;try{I.p=32>n?32:n,R.T=null,n=Uu,Uu=null;var o=Mu,l=Bu;if(Fu=0,zu=Mu=null,Bu=0,6&pu)throw Error(i(331));var s=pu;if(pu|=4,su(o.current),eu(o,o.current,l,n),pu=s,Dc(0,!1),be&&"function"==typeof be.onPostCommitFiberRoot)try{be.onPostCommitFiberRoot(ye,o)}catch(u){}return!0}finally{I.p=a,R.T=r,vc(e,t)}}function Sc(e,t,n){t=Yr(n,t),null!==(e=wo(e,t=Nl(e.stateNode,t,2),2))&&(je(e,2),Ic(e))}function xc(e,t,n){if(3===e.tag)Sc(e,e,n);else for(;null!==t;){if(3===t.tag){Sc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Du||!Du.has(r))){e=Yr(n,e),null!==(r=wo(t,n=Pl(2),2))&&(Ol(n,r,t,e),je(r,2),Ic(r));break}}t=t.return}}function Ec(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new fu;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(ku=!0,a.add(n),e=_c.bind(null,e,t,n),t.then(e,e))}function _c(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,hu===e&&(gu&n)===n&&(4===xu||3===xu&&(62914560&gu)===gu&&300>se()-ju?!(2&pu)&&tc(e,0):Au|=n,Tu===gu&&(Tu=0)),Ic(e)}function Ac(e,t){0===t&&(t=Pe()),null!==(e=Lr(e,t))&&(je(e,t),Ic(e))}function Cc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Ac(e,n)}function Tc(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),Ac(e,n)}var Nc=null,Pc=null,Oc=!1,jc=!1,Lc=!1,Rc=0;function Ic(e){e!==Pc&&null===e.next&&(null===Pc?Nc=Pc=e:Pc=Pc.next=e),jc=!0,Oc||(Oc=!0,Ed(function(){6&pu?ae(ce,Fc):Mc()}))}function Dc(e,t){if(!Lc&&jc){Lc=!0;do{for(var n=!1,r=Nc;null!==r;){if(!t)if(0!==e){var a=r.pendingLanes;if(0===a)var o=0;else{var i=r.suspendedLanes,l=r.pingedLanes;o=(1<<31-we(42|e)+1)-1,o=201326741&(o&=a&~(i&~l))?201326741&o|1:o?2|o:0}0!==o&&(n=!0,$c(r,o))}else o=gu,!(3&(o=Ce(r,r===hu?o:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||Te(r,o)||(n=!0,$c(r,o));r=r.next}}while(n);Lc=!1}}function Fc(){Mc()}function Mc(){jc=Oc=!1;var e=0;0!==Rc&&function(){var e=window.event;if(e&&"popstate"===e.type)return e!==wd&&(wd=e,!0);return wd=null,!1}()&&(e=Rc);for(var t=se(),n=null,r=Nc;null!==r;){var a=r.next,o=zc(r,t);0===o?(r.next=null,null===n?Nc=a:n.next=a,null===a&&(Pc=n)):(n=r,(0!==e||3&o)&&(jc=!0)),r=a}0!==Fu&&5!==Fu||Dc(e,!1),0!==Rc&&(Rc=0)}function zc(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=-62914561&e.pendingLanes;0<o;){var i=31-we(o),l=1<<i,s=a[i];-1===s?0!==(l&n)&&0===(l&r)||(a[i]=Ne(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}if(n=gu,n=Ce(e,e===(t=hu)?n:0,null!==e.cancelPendingCommit||-1!==e.timeoutHandle),r=e.callbackNode,0===n||e===t&&(2===yu||9===yu)||null!==e.cancelPendingCommit)return null!==r&&null!==r&&oe(r),e.callbackNode=null,e.callbackPriority=0;if(!(3&n)||Te(e,n)){if((t=n&-n)===e.callbackPriority)return t;switch(null!==r&&oe(r),Fe(n)){case 2:case 8:n=de;break;case 32:default:n=fe;break;case 268435456:n=he}return r=Bc.bind(null,e),n=ae(n,r),e.callbackPriority=t,e.callbackNode=n,t}return null!==r&&null!==r&&oe(r),e.callbackPriority=2,e.callbackNode=null,2}function Bc(e,t){if(0!==Fu&&5!==Fu)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(wc()&&e.callbackNode!==n)return null;var r=gu;return 0===(r=Ce(e,e===hu?r:0,null!==e.cancelPendingCommit||-1!==e.timeoutHandle))?null:(Ku(e,r,t),zc(e,se()),null!=e.callbackNode&&e.callbackNode===n?Bc.bind(null,e):null)}function $c(e,t){if(wc())return null;Ku(e,t,!0)}function Uc(){if(0===Rc){var e=Ha;0===e&&(e=xe,!(261888&(xe<<=1))&&(xe=256)),Rc=e}return Rc}function Hc(e){return null==e||"symbol"==typeof e||"boolean"==typeof e?null:"function"==typeof e?e:Ot(""+e)}function Vc(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}for(var Wc=0;Wc<Er.length;Wc++){var Gc=Er[Wc];_r(Gc.toLowerCase(),"on"+(Gc[0].toUpperCase()+Gc.slice(1)))}_r(gr,"onAnimationEnd"),_r(yr,"onAnimationIteration"),_r(br,"onAnimationStart"),_r("dblclick","onDoubleClick"),_r("focusin","onFocus"),_r("focusout","onBlur"),_r(vr,"onTransitionRun"),_r(wr,"onTransitionStart"),_r(kr,"onTransitionCancel"),_r(Sr,"onTransitionEnd"),at("onMouseEnter",["mouseout","mouseover"]),at("onMouseLeave",["mouseout","mouseover"]),at("onPointerEnter",["pointerout","pointerover"]),at("onPointerLeave",["pointerout","pointerover"]),rt("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),rt("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),rt("onBeforeInput",["compositionend","keypress","textInput","paste"]),rt("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),rt("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),rt("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var qc="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Yc=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(qc));function Kc(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;o=l,a.currentTarget=u;try{o(a)}catch(c){Ar(c)}a.currentTarget=null,o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;o=l,a.currentTarget=u;try{o(a)}catch(c){Ar(c)}a.currentTarget=null,o=s}}}}function Qc(e,t){var n=t[Ve];void 0===n&&(n=t[Ve]=new Set);var r=e+"__bubble";n.has(r)||(ed(t,e,2,!1),n.add(r))}function Xc(e,t,n){var r=0;t&&(r|=4),ed(n,e,r,t)}var Zc="_reactListening"+Math.random().toString(36).slice(2);function Jc(e){if(!e[Zc]){e[Zc]=!0,tt.forEach(function(t){"selectionchange"!==t&&(Yc.has(t)||Xc(t,!1,e),Xc(t,!0,e))});var t=9===e.nodeType?e:e.ownerDocument;null===t||t[Zc]||(t[Zc]=!0,Xc("selectionchange",!1,t))}}function ed(e,t,n,r){switch(Cf(t)){case 2:var a=kf;break;case 8:a=Sf;break;default:a=xf}n=a.bind(null,t,n,e),a=void 0,!Ut||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function td(e,t,n,r,a){var o=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a)break;if(4===i)for(i=r.return;null!==i;){var u=i.tag;if((3===u||4===u)&&i.stateNode.containerInfo===a)return;i=i.return}for(;null!==l;){if(null===(i=Qe(l)))return;if(5===(u=i.tag)||6===u||26===u||27===u){r=o=i;continue e}l=l.parentNode}}r=r.return}zt(function(){var r=o,a=Rt(n),i=[];e:{var l=xr.get(e);if(void 0!==l){var u=nn,c=e;switch(e){case"keypress":if(0===Yt(n))break e;case"keydown":case"keyup":u=bn;break;case"focusin":c="focus",u=un;break;case"focusout":c="blur",u=un;break;case"beforeblur":case"afterblur":u=un;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":u=ln;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":u=sn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":u=wn;break;case gr:case yr:case br:u=cn;break;case Sr:u=kn;break;case"scroll":case"scrollend":u=an;break;case"wheel":u=Sn;break;case"copy":case"cut":case"paste":u=dn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":u=vn;break;case"toggle":case"beforetoggle":u=xn}var d=!!(4&t),f=!d&&("scroll"===e||"scrollend"===e),p=d?null!==l?l+"Capture":null:l;d=[];for(var h,m=r;null!==m;){var g=m;if(h=g.stateNode,5!==(g=g.tag)&&26!==g&&27!==g||null===h||null===p||null!=(g=Bt(m,p))&&d.push(nd(m,g,h)),f)break;m=m.return}0<d.length&&(l=new u(l,c,null,n,a),i.push({event:l,listeners:d}))}}if(!(7&t)){if(u="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===Lt||!(c=n.relatedTarget||n.fromElement)||!Qe(c)&&!c[He])&&(u||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,u?(u=r,null!==(c=(c=n.relatedTarget||n.toElement)?Qe(c):null)&&(f=s(c),d=c.tag,c!==f||5!==d&&27!==d&&6!==d)&&(c=null)):(u=null,c=r),u!==c)){if(d=ln,g="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(d=vn,g="onPointerLeave",p="onPointerEnter",m="pointer"),f=null==u?l:Ze(u),h=null==c?l:Ze(c),(l=new d(g,m+"leave",u,n,a)).target=f,l.relatedTarget=h,g=null,Qe(a)===r&&((d=new d(p,m+"enter",c,n,a)).target=h,d.relatedTarget=f,g=d),f=g,u&&c)e:{for(d=ad,m=c,h=0,g=p=u;g;g=d(g))h++;g=0;for(var y=m;y;y=d(y))g++;for(;0<h-g;)p=d(p),h--;for(;0<g-h;)m=d(m),g--;for(;h--;){if(p===m||null!==m&&p===m.alternate){d=p;break e}p=d(p),m=d(m)}d=null}else d=null;null!==u&&od(i,l,u,d,!1),null!==c&&null!==f&&od(i,f,c,d,!0)}if("select"===(u=(l=r?Ze(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===u&&"file"===l.type)var b=$n;else if(In(l))if(Un)b=Xn;else{b=Kn;var v=Yn}else!(u=l.nodeName)||"input"!==u.toLowerCase()||"checkbox"!==l.type&&"radio"!==l.type?r&&Tt(r.elementType)&&(b=$n):b=Qn;switch(b&&(b=b(e,r))?Dn(i,b,n,a):(v&&v(e,l,r),"focusout"===e&&r&&"number"===l.type&&null!=r.memoizedProps.value&&wt(l,"number",l.value)),v=r?Ze(r):window,e){case"focusin":(In(v)||"true"===v.contentEditable)&&(ir=v,lr=r,sr=null);break;case"focusout":sr=lr=ir=null;break;case"mousedown":ur=!0;break;case"contextmenu":case"mouseup":case"dragend":ur=!1,cr(i,n,a);break;case"selectionchange":if(or)break;case"keydown":case"keyup":cr(i,n,a)}var w;if(_n)e:{switch(e){case"compositionstart":var k="onCompositionStart";break e;case"compositionend":k="onCompositionEnd";break e;case"compositionupdate":k="onCompositionUpdate";break e}k=void 0}else Ln?On(e,n)&&(k="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(k="onCompositionStart");k&&(Tn&&"ko"!==n.locale&&(Ln||"onCompositionStart"!==k?"onCompositionEnd"===k&&Ln&&(w=qt()):(Wt="value"in(Vt=a)?Vt.value:Vt.textContent,Ln=!0)),0<(v=rd(r,k)).length&&(k=new fn(k,e,null,n,a),i.push({event:k,listeners:v}),w?k.data=w:null!==(w=jn(n))&&(k.data=w))),(w=Cn?function(e,t){switch(e){case"compositionend":return jn(t);case"keypress":return 32!==t.which?null:(Pn=!0,Nn);case"textInput":return(e=t.data)===Nn&&Pn?null:e;default:return null}}(e,n):function(e,t){if(Ln)return"compositionend"===e||!_n&&On(e,t)?(e=qt(),Gt=Wt=Vt=null,Ln=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Tn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(k=rd(r,"onBeforeInput")).length&&(v=new fn("onBeforeInput","beforeinput",null,n,a),i.push({event:v,listeners:k}),v.data=w)),function(e,t,n,r,a){if("submit"===t&&n&&n.stateNode===a){var o=Hc((a[Ue]||null).action),i=r.submitter;i&&null!==(t=(t=i[Ue]||null)?Hc(t.formAction):i.getAttribute("formAction"))&&(o=t,i=null);var l=new nn("action","action",null,r,a);e.push({event:l,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(0!==Rc){var e=i?Vc(a,i):new FormData(a);tl(n,{pending:!0,data:e,method:a.method,action:o},null,e)}}else"function"==typeof o&&(l.preventDefault(),e=i?Vc(a,i):new FormData(a),tl(n,{pending:!0,data:e,method:a.method,action:o},o,e))},currentTarget:a}]})}}(i,e,r,n,a)}Kc(i,t)})}function nd(e,t,n){return{instance:e,listener:t,currentTarget:n}}function rd(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;if(5!==(a=a.tag)&&26!==a&&27!==a||null===o||(null!=(a=Bt(e,n))&&r.unshift(nd(e,a,o)),null!=(a=Bt(e,t))&&r.push(nd(e,a,o))),3===e.tag)return r;e=e.return}return[]}function ad(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag&&27!==e.tag);return e||null}function od(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(l=l.tag,null!==s&&s===r)break;5!==l&&26!==l&&27!==l||null===u||(s=u,a?null!=(u=Bt(n,o))&&i.unshift(nd(n,u,s)):a||null!=(u=Bt(n,o))&&i.push(nd(n,u,s))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var id=/\r\n?/g,ld=/\u0000|\uFFFD/g;function sd(e){return("string"==typeof e?e:""+e).replace(id,"\n").replace(ld,"")}function ud(e,t){return t=sd(t),sd(e)===t}function cd(e,t,n,r,a,o){switch(n){case"children":"string"==typeof r?"body"===t||"textarea"===t&&""===r||Et(e,r):("number"==typeof r||"bigint"==typeof r)&&"body"!==t&&Et(e,""+r);break;case"className":ut(e,"class",r);break;case"tabIndex":ut(e,"tabindex",r);break;case"dir":case"role":case"viewBox":case"width":case"height":ut(e,n,r);break;case"style":Ct(e,r,o);break;case"data":if("object"!==t){ut(e,"data",r);break}case"src":case"href":if(""===r&&("a"!==t||"href"!==n)){e.removeAttribute(n);break}if(null==r||"function"==typeof r||"symbol"==typeof r||"boolean"==typeof r){e.removeAttribute(n);break}r=Ot(""+r),e.setAttribute(n,r);break;case"action":case"formAction":if("function"==typeof r){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}if("function"==typeof o&&("formAction"===n?("input"!==t&&cd(e,t,"name",a.name,a,null),cd(e,t,"formEncType",a.formEncType,a,null),cd(e,t,"formMethod",a.formMethod,a,null),cd(e,t,"formTarget",a.formTarget,a,null)):(cd(e,t,"encType",a.encType,a,null),cd(e,t,"method",a.method,a,null),cd(e,t,"target",a.target,a,null))),null==r||"symbol"==typeof r||"boolean"==typeof r){e.removeAttribute(n);break}r=Ot(""+r),e.setAttribute(n,r);break;case"onClick":null!=r&&(e.onclick=jt);break;case"onScroll":null!=r&&Qc("scroll",e);break;case"onScrollEnd":null!=r&&Qc("scrollend",e);break;case"dangerouslySetInnerHTML":if(null!=r){if("object"!=typeof r||!("__html"in r))throw Error(i(61));if(null!=(n=r.__html)){if(null!=a.children)throw Error(i(60));e.innerHTML=n}}break;case"multiple":e.multiple=r&&"function"!=typeof r&&"symbol"!=typeof r;break;case"muted":e.muted=r&&"function"!=typeof r&&"symbol"!=typeof r;break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":case"autoFocus":break;case"xlinkHref":if(null==r||"function"==typeof r||"boolean"==typeof r||"symbol"==typeof r){e.removeAttribute("xlink:href");break}n=Ot(""+r),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":null!=r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,""+r):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":!0===r?e.setAttribute(n,""):!1!==r&&null!=r&&"function"!=typeof r&&"symbol"!=typeof r?e.setAttribute(n,r):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":null!=r&&"function"!=typeof r&&"symbol"!=typeof r&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case"rowSpan":case"start":null==r||"function"==typeof r||"symbol"==typeof r||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case"popover":Qc("beforetoggle",e),Qc("toggle",e),st(e,"popover",r);break;case"xlinkActuate":ct(e,"http://www.w3.org/1999/xlink","xlink:actuate",r);break;case"xlinkArcrole":ct(e,"http://www.w3.org/1999/xlink","xlink:arcrole",r);break;case"xlinkRole":ct(e,"http://www.w3.org/1999/xlink","xlink:role",r);break;case"xlinkShow":ct(e,"http://www.w3.org/1999/xlink","xlink:show",r);break;case"xlinkTitle":ct(e,"http://www.w3.org/1999/xlink","xlink:title",r);break;case"xlinkType":ct(e,"http://www.w3.org/1999/xlink","xlink:type",r);break;case"xmlBase":ct(e,"http://www.w3.org/XML/1998/namespace","xml:base",r);break;case"xmlLang":ct(e,"http://www.w3.org/XML/1998/namespace","xml:lang",r);break;case"xmlSpace":ct(e,"http://www.w3.org/XML/1998/namespace","xml:space",r);break;case"is":st(e,"is",r);break;case"innerText":case"textContent":break;default:(!(2<n.length)||"o"!==n[0]&&"O"!==n[0]||"n"!==n[1]&&"N"!==n[1])&&st(e,n=Nt.get(n)||n,r)}}function dd(e,t,n,r,a,o){switch(n){case"style":Ct(e,r,o);break;case"dangerouslySetInnerHTML":if(null!=r){if("object"!=typeof r||!("__html"in r))throw Error(i(61));if(null!=(n=r.__html)){if(null!=a.children)throw Error(i(60));e.innerHTML=n}}break;case"children":"string"==typeof r?Et(e,r):("number"==typeof r||"bigint"==typeof r)&&Et(e,""+r);break;case"onScroll":null!=r&&Qc("scroll",e);break;case"onScrollEnd":null!=r&&Qc("scrollend",e);break;case"onClick":null!=r&&(e.onclick=jt);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":case"innerText":case"textContent":break;default:nt.hasOwnProperty(n)||("o"!==n[0]||"n"!==n[1]||(a=n.endsWith("Capture"),t=n.slice(2,a?n.length-7:void 0),"function"==typeof(o=null!=(o=e[Ue]||null)?o[n]:null)&&e.removeEventListener(t,o,a),"function"!=typeof r)?n in e?e[n]=r:!0===r?e.setAttribute(n,""):st(e,n,r):("function"!=typeof o&&null!==o&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,r,a)))}}function fd(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Qc("error",e),Qc("load",e);var r,a=!1,o=!1;for(r in n)if(n.hasOwnProperty(r)){var l=n[r];if(null!=l)switch(r){case"src":a=!0;break;case"srcSet":o=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(i(137,t));default:cd(e,t,r,l,n,null)}}return o&&cd(e,t,"srcSet",n.srcSet,n,null),void(a&&cd(e,t,"src",n.src,n,null));case"input":Qc("invalid",e);var s=r=l=o=null,u=null,c=null;for(a in n)if(n.hasOwnProperty(a)){var d=n[a];if(null!=d)switch(a){case"name":o=d;break;case"type":l=d;break;case"checked":u=d;break;case"defaultChecked":c=d;break;case"value":r=d;break;case"defaultValue":s=d;break;case"children":case"dangerouslySetInnerHTML":if(null!=d)throw Error(i(137,t));break;default:cd(e,t,a,d,n,null)}}return void vt(e,r,s,u,c,l,o,!1);case"select":for(o in Qc("invalid",e),a=l=r=null,n)if(n.hasOwnProperty(o)&&null!=(s=n[o]))switch(o){case"value":r=s;break;case"defaultValue":l=s;break;case"multiple":a=s;default:cd(e,t,o,s,n,null)}return t=r,n=l,e.multiple=!!a,void(null!=t?kt(e,!!a,t,!1):null!=n&&kt(e,!!a,n,!0));case"textarea":for(l in Qc("invalid",e),r=o=a=null,n)if(n.hasOwnProperty(l)&&null!=(s=n[l]))switch(l){case"value":a=s;break;case"defaultValue":o=s;break;case"children":r=s;break;case"dangerouslySetInnerHTML":if(null!=s)throw Error(i(91));break;default:cd(e,t,l,s,n,null)}return void xt(e,a,o,r);case"option":for(u in n)if(n.hasOwnProperty(u)&&null!=(a=n[u]))if("selected"===u)e.selected=a&&"function"!=typeof a&&"symbol"!=typeof a;else cd(e,t,u,a,n,null);return;case"dialog":Qc("beforetoggle",e),Qc("toggle",e),Qc("cancel",e),Qc("close",e);break;case"iframe":case"object":Qc("load",e);break;case"video":case"audio":for(a=0;a<qc.length;a++)Qc(qc[a],e);break;case"image":Qc("error",e),Qc("load",e);break;case"details":Qc("toggle",e);break;case"embed":case"source":case"link":Qc("error",e),Qc("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(c in n)if(n.hasOwnProperty(c)&&null!=(a=n[c]))switch(c){case"children":case"dangerouslySetInnerHTML":throw Error(i(137,t));default:cd(e,t,c,a,n,null)}return;default:if(Tt(t)){for(d in n)n.hasOwnProperty(d)&&(void 0!==(a=n[d])&&dd(e,t,d,a,n,void 0));return}}for(s in n)n.hasOwnProperty(s)&&(null!=(a=n[s])&&cd(e,t,s,a,n,null))}function pd(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}var hd=null,md=null;function gd(e){return 9===e.nodeType?e:e.ownerDocument}function yd(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function bd(e,t){if(0===e)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return 1===e&&"foreignObject"===t?0:e}function vd(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"bigint"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var wd=null;var kd="function"==typeof setTimeout?setTimeout:void 0,Sd="function"==typeof clearTimeout?clearTimeout:void 0,xd="function"==typeof Promise?Promise:void 0,Ed="function"==typeof queueMicrotask?queueMicrotask:void 0!==xd?function(e){return xd.resolve(null).then(e).catch(_d)}:kd;function _d(e){setTimeout(function(){throw e})}function Ad(e){return"head"===e}function Cd(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)||"/&"===n){if(0===r)return e.removeChild(a),void Wf(t);r--}else if("$"===n||"$?"===n||"$~"===n||"$!"===n||"&"===n)r++;else if("html"===n)Md(e.ownerDocument.documentElement);else if("head"===n){Md(n=e.ownerDocument.head);for(var o=n.firstChild;o;){var i=o.nextSibling,l=o.nodeName;o[Ye]||"SCRIPT"===l||"STYLE"===l||"LINK"===l&&"stylesheet"===o.rel.toLowerCase()||n.removeChild(o),o=i}}else"body"===n&&Md(e.ownerDocument.body);n=a}while(n);Wf(t)}function Td(e,t){var n=e;e=0;do{var r=n.nextSibling;if(1===n.nodeType?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",""===n.getAttribute("style")&&n.removeAttribute("style")):3===n.nodeType&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),r&&8===r.nodeType)if("/$"===(n=r.data)){if(0===e)break;e--}else"$"!==n&&"$?"!==n&&"$~"!==n&&"$!"!==n||e++;n=r}while(n)}function Nd(e){var t=e.firstChild;for(t&&10===t.nodeType&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":Nd(n),Ke(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if("stylesheet"===n.rel.toLowerCase())continue}e.removeChild(n)}}function Pd(e,t){for(;8!==e.nodeType;){if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!t)return null;if(null===(e=Ld(e.nextSibling)))return null}return e}function Od(e){return"$?"===e.data||"$~"===e.data}function jd(e){return"$!"===e.data||"$?"===e.data&&"loading"!==e.ownerDocument.readyState}function Ld(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t||"$~"===t||"&"===t||"F!"===t||"F"===t)break;if("/$"===t||"/&"===t)return null}}return e}var Rd=null;function Id(e){e=e.nextSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n||"/&"===n){if(0===t)return Ld(e.nextSibling);t--}else"$"!==n&&"$!"!==n&&"$?"!==n&&"$~"!==n&&"&"!==n||t++}e=e.nextSibling}return null}function Dd(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n||"$~"===n||"&"===n){if(0===t)return e;t--}else"/$"!==n&&"/&"!==n||t++}e=e.previousSibling}return null}function Fd(e,t,n){switch(t=gd(n),e){case"html":if(!(e=t.documentElement))throw Error(i(452));return e;case"head":if(!(e=t.head))throw Error(i(453));return e;case"body":if(!(e=t.body))throw Error(i(454));return e;default:throw Error(i(451))}}function Md(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);Ke(e)}var zd=new Map,Bd=new Set;function $d(e){return"function"==typeof e.getRootNode?e.getRootNode():9===e.nodeType?e:e.ownerDocument}var Ud=I.d;I.d={f:function(){var e=Ud.f(),t=Ju();return e||t},r:function(e){var t=Xe(e);null!==t&&5===t.tag&&"form"===t.type?rl(t):Ud.r(e)},D:function(e){Ud.D(e),Vd("dns-prefetch",e,null)},C:function(e,t){Ud.C(e,t),Vd("preconnect",e,t)},L:function(e,t,n){Ud.L(e,t,n);var r=Hd;if(r&&e&&t){var a='link[rel="preload"][as="'+yt(t)+'"]';"image"===t&&n&&n.imageSrcSet?(a+='[imagesrcset="'+yt(n.imageSrcSet)+'"]',"string"==typeof n.imageSizes&&(a+='[imagesizes="'+yt(n.imageSizes)+'"]')):a+='[href="'+yt(e)+'"]';var o=a;switch(t){case"style":o=Gd(e);break;case"script":o=Kd(e)}zd.has(o)||(e=p({rel:"preload",href:"image"===t&&n&&n.imageSrcSet?void 0:e,as:t},n),zd.set(o,e),null!==r.querySelector(a)||"style"===t&&r.querySelector(qd(o))||"script"===t&&r.querySelector(Qd(o))||(fd(t=r.createElement("link"),"link",e),et(t),r.head.appendChild(t)))}},m:function(e,t){Ud.m(e,t);var n=Hd;if(n&&e){var r=t&&"string"==typeof t.as?t.as:"script",a='link[rel="modulepreload"][as="'+yt(r)+'"][href="'+yt(e)+'"]',o=a;switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Kd(e)}if(!zd.has(o)&&(e=p({rel:"modulepreload",href:e},t),zd.set(o,e),null===n.querySelector(a))){switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(Qd(o)))return}fd(r=n.createElement("link"),"link",e),et(r),n.head.appendChild(r)}}},X:function(e,t){Ud.X(e,t);var n=Hd;if(n&&e){var r=Je(n).hoistableScripts,a=Kd(e),o=r.get(a);o||((o=n.querySelector(Qd(a)))||(e=p({src:e,async:!0},t),(t=zd.get(a))&&ef(e,t),et(o=n.createElement("script")),fd(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},r.set(a,o))}},S:function(e,t,n){Ud.S(e,t,n);var r=Hd;if(r&&e){var a=Je(r).hoistableStyles,o=Gd(e);t=t||"default";var i=a.get(o);if(!i){var l={loading:0,preload:null};if(i=r.querySelector(qd(o)))l.loading=5;else{e=p({rel:"stylesheet",href:e,"data-precedence":t},n),(n=zd.get(o))&&Jd(e,n);var s=i=r.createElement("link");et(s),fd(s,"link",e),s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),s.addEventListener("load",function(){l.loading|=1}),s.addEventListener("error",function(){l.loading|=2}),l.loading|=4,Zd(i,t,r)}i={type:"stylesheet",instance:i,count:1,state:l},a.set(o,i)}}},M:function(e,t){Ud.M(e,t);var n=Hd;if(n&&e){var r=Je(n).hoistableScripts,a=Kd(e),o=r.get(a);o||((o=n.querySelector(Qd(a)))||(e=p({src:e,async:!0,type:"module"},t),(t=zd.get(a))&&ef(e,t),et(o=n.createElement("script")),fd(o,"link",e),n.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},r.set(a,o))}}};var Hd="undefined"==typeof document?null:document;function Vd(e,t,n){var r=Hd;if(r&&"string"==typeof t&&t){var a=yt(t);a='link[rel="'+e+'"][href="'+a+'"]',"string"==typeof n&&(a+='[crossorigin="'+n+'"]'),Bd.has(a)||(Bd.add(a),e={rel:e,crossOrigin:n,href:t},null===r.querySelector(a)&&(fd(t=r.createElement("link"),"link",e),et(t),r.head.appendChild(t)))}}function Wd(e,t,n,r){var a,o,l,s,u=(u=G.current)?$d(u):null;if(!u)throw Error(i(446));switch(e){case"meta":case"title":return null;case"style":return"string"==typeof n.precedence&&"string"==typeof n.href?(t=Gd(n.href),(r=(n=Je(u).hoistableStyles).get(t))||(r={type:"style",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if("stylesheet"===n.rel&&"string"==typeof n.href&&"string"==typeof n.precedence){e=Gd(n.href);var c=Je(u).hoistableStyles,d=c.get(e);if(d||(u=u.ownerDocument||u,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,d),(c=u.querySelector(qd(e)))&&!c._p&&(d.instance=c,d.state.loading=5),zd.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},zd.set(e,n),c||(a=u,o=e,l=n,s=d.state,a.querySelector('link[rel="preload"][as="style"]['+o+"]")?s.loading=1:(o=a.createElement("link"),s.preload=o,o.addEventListener("load",function(){return s.loading|=1}),o.addEventListener("error",function(){return s.loading|=2}),fd(o,"link",l),et(o),a.head.appendChild(o))))),t&&null===r)throw Error(i(528,""));return d}if(t&&null!==r)throw Error(i(529,""));return null;case"script":return t=n.async,"string"==typeof(n=n.src)&&t&&"function"!=typeof t&&"symbol"!=typeof t?(t=Kd(n),(r=(n=Je(u).hoistableScripts).get(t))||(r={type:"script",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Gd(e){return'href="'+yt(e)+'"'}function qd(e){return'link[rel="stylesheet"]['+e+"]"}function Yd(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function Kd(e){return'[src="'+yt(e)+'"]'}function Qd(e){return"script[async]"+e}function Xd(e,t,n){if(t.count++,null===t.instance)switch(t.type){case"style":var r=e.querySelector('style[data-href~="'+yt(n.href)+'"]');if(r)return t.instance=r,et(r),r;var a=p({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return et(r=(e.ownerDocument||e).createElement("style")),fd(r,"style",a),Zd(r,n.precedence,e),t.instance=r;case"stylesheet":a=Gd(n.href);var o=e.querySelector(qd(a));if(o)return t.state.loading|=4,t.instance=o,et(o),o;r=Yd(n),(a=zd.get(a))&&Jd(r,a),et(o=(e.ownerDocument||e).createElement("link"));var l=o;return l._p=new Promise(function(e,t){l.onload=e,l.onerror=t}),fd(o,"link",r),t.state.loading|=4,Zd(o,n.precedence,e),t.instance=o;case"script":return o=Kd(n.src),(a=e.querySelector(Qd(o)))?(t.instance=a,et(a),a):(r=n,(a=zd.get(o))&&ef(r=p({},n),a),et(a=(e=e.ownerDocument||e).createElement("script")),fd(a,"link",r),e.head.appendChild(a),t.instance=a);case"void":return null;default:throw Error(i(443,t.type))}else"stylesheet"===t.type&&!(4&t.state.loading)&&(r=t.instance,t.state.loading|=4,Zd(r,n.precedence,e));return t.instance}function Zd(e,t,n){for(var r=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),a=r.length?r[r.length-1]:null,o=a,i=0;i<r.length;i++){var l=r[i];if(l.dataset.precedence===t)o=l;else if(o!==a)break}o?o.parentNode.insertBefore(e,o.nextSibling):(t=9===n.nodeType?n.head:n).insertBefore(e,t.firstChild)}function Jd(e,t){null==e.crossOrigin&&(e.crossOrigin=t.crossOrigin),null==e.referrerPolicy&&(e.referrerPolicy=t.referrerPolicy),null==e.title&&(e.title=t.title)}function ef(e,t){null==e.crossOrigin&&(e.crossOrigin=t.crossOrigin),null==e.referrerPolicy&&(e.referrerPolicy=t.referrerPolicy),null==e.integrity&&(e.integrity=t.integrity)}var tf=null;function nf(e,t,n){if(null===tf){var r=new Map,a=tf=new Map;a.set(n,r)}else(r=(a=tf).get(n))||(r=new Map,a.set(n,r));if(r.has(e))return r;for(r.set(e,null),n=n.getElementsByTagName(e),a=0;a<n.length;a++){var o=n[a];if(!(o[Ye]||o[$e]||"link"===e&&"stylesheet"===o.getAttribute("rel"))&&"http://www.w3.org/2000/svg"!==o.namespaceURI){var i=o.getAttribute(t)||"";i=e+i;var l=r.get(i);l?l.push(o):r.set(i,[o])}}return r}function rf(e,t,n){(e=e.ownerDocument||e).head.insertBefore(n,"title"===t?e.querySelector("head > title"):null)}function af(e){return!!("stylesheet"!==e.type||3&e.state.loading)}var of=0;function lf(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages))if(this.stylesheets)uf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var sf=null;function uf(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sf=new Map,t.forEach(cf,e),sf=null,lf.call(e))}function cf(e,t){if(!(4&t.state.loading)){var n=sf.get(e);if(n)var r=n.get(null);else{n=new Map,sf.set(e,n);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o<a.length;o++){var i=a[o];"LINK"!==i.nodeName&&"not all"===i.getAttribute("media")||(n.set(i.dataset.precedence,i),r=i)}r&&n.set(null,r)}i=(a=t.instance).getAttribute("data-precedence"),(o=n.get(i)||r)===r&&n.set(null,a),n.set(i,a),this.count++,r=lf.bind(this),a.addEventListener("load",r),a.addEventListener("error",r),o?o.parentNode.insertBefore(a,o.nextSibling):(e=9===e.nodeType?e.head:e).insertBefore(a,e.firstChild),t.state.loading|=4}}var df={$$typeof:k,Provider:null,Consumer:null,_currentValue:D,_currentValue2:D,_threadCount:0};function ff(e,t,n,r,a,o,i,l,s){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Oe(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Oe(0),this.hiddenUpdates=Oe(null),this.identifierPrefix=r,this.onUncaughtError=a,this.onCaughtError=o,this.onRecoverableError=i,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=s,this.incompleteTransitions=new Map}function pf(e,t,n,r,a,o,i,l,s,u,c,d){return e=new ff(e,t,n,i,s,u,c,d,l),t=1,!0===o&&(t|=24),o=Mr(3,null,null,t),e.current=o,o.stateNode=e,(t=za()).refCount++,e.pooledCache=t,t.refCount++,o.memoizedState={element:r,isDehydrated:n,cache:t},yo(o),e}function hf(e){return e?e=Dr:Dr}function mf(e,t,n,r,a,o){a=hf(a),null===r.context?r.context=a:r.pendingContext=a,(r=vo(t)).payload={element:n},null!==(o=void 0===o?null:o)&&(r.callback=o),null!==(n=wo(e,r,t))&&(Yu(n,0,t),ko(n,e,t))}function gf(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function yf(e,t){gf(e,t),(e=e.alternate)&&gf(e,t)}function bf(e){if(13===e.tag||31===e.tag){var t=Lr(e,67108864);null!==t&&Yu(t,0,67108864),yf(e,67108864)}}function vf(e){if(13===e.tag||31===e.tag){var t=Gu(),n=Lr(e,t=De(t));null!==n&&Yu(n,0,t),yf(e,t)}}var wf=!0;function kf(e,t,n,r){var a=R.T;R.T=null;var o=I.p;try{I.p=2,xf(e,t,n,r)}finally{I.p=o,R.T=a}}function Sf(e,t,n,r){var a=R.T;R.T=null;var o=I.p;try{I.p=8,xf(e,t,n,r)}finally{I.p=o,R.T=a}}function xf(e,t,n,r){if(wf){var a=Ef(r);if(null===a)td(e,t,r,_f,n),Df(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Nf=Ff(Nf,e,t,n,r,a),!0;case"dragenter":return Pf=Ff(Pf,e,t,n,r,a),!0;case"mouseover":return Of=Ff(Of,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return jf.set(o,Ff(jf.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,Lf.set(o,Ff(Lf.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(Df(e,r),4&t&&-1<If.indexOf(e)){for(;null!==a;){var o=Xe(a);if(null!==o)switch(o.tag){case 3:if((o=o.stateNode).current.memoizedState.isDehydrated){var i=Ae(o.pendingLanes);if(0!==i){var l=o;for(l.pendingLanes|=2,l.entangledLanes|=2;i;){var s=1<<31-we(i);l.entanglements[1]|=s,i&=~s}Ic(o),!(6&pu)&&(Ru=se()+500,Dc(0,!1))}}break;case 31:case 13:null!==(l=Lr(o,2))&&Yu(l,0,2),Ju(),yf(o,2)}if(null===(o=Ef(r))&&td(e,t,r,_f,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else td(e,t,r,null,n)}}function Ef(e){return Af(e=Rt(e))}var _f=null;function Af(e){if(_f=null,null!==(e=Qe(e))){var t=s(e);if(null===t)e=null;else{var n=t.tag;if(13===n){if(null!==(e=u(t)))return e;e=null}else if(31===n){if(null!==(e=c(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return _f=e,null}function Cf(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(ue()){case ce:return 2;case de:return 8;case fe:case pe:return 32;case he:return 268435456;default:return 32}default:return 32}}var Tf=!1,Nf=null,Pf=null,Of=null,jf=new Map,Lf=new Map,Rf=[],If="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Df(e,t){switch(e){case"focusin":case"focusout":Nf=null;break;case"dragenter":case"dragleave":Pf=null;break;case"mouseover":case"mouseout":Of=null;break;case"pointerover":case"pointerout":jf.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Lf.delete(t.pointerId)}}function Ff(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&(null!==(t=Xe(t))&&bf(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Mf(e){var t=Qe(e.target);if(null!==t){var n=s(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=u(n)))return e.blockedOn=t,void ze(e.priority,function(){vf(n)})}else if(31===t){if(null!==(t=c(n)))return e.blockedOn=t,void ze(e.priority,function(){vf(n)})}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function zf(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Ef(e.nativeEvent);if(null!==n)return null!==(t=Xe(n))&&bf(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);Lt=r,n.target.dispatchEvent(r),Lt=null,t.shift()}return!0}function Bf(e,t,n){zf(e)&&n.delete(t)}function $f(){Tf=!1,null!==Nf&&zf(Nf)&&(Nf=null),null!==Pf&&zf(Pf)&&(Pf=null),null!==Of&&zf(Of)&&(Of=null),jf.forEach(Bf),Lf.forEach(Bf)}function Uf(e,t){e.blockedOn===t&&(e.blockedOn=null,Tf||(Tf=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,$f)))}var Hf=null;function Vf(e){Hf!==e&&(Hf=e,r.unstable_scheduleCallback(r.unstable_NormalPriority,function(){Hf===e&&(Hf=null);for(var t=0;t<e.length;t+=3){var n=e[t],r=e[t+1],a=e[t+2];if("function"!=typeof r){if(null===Af(r||n))continue;break}var o=Xe(n);null!==o&&(e.splice(t,3),t-=3,tl(o,{pending:!0,data:a,method:n.method,action:r},r,a))}}))}function Wf(e){function t(t){return Uf(t,e)}null!==Nf&&Uf(Nf,e),null!==Pf&&Uf(Pf,e),null!==Of&&Uf(Of,e),jf.forEach(t),Lf.forEach(t);for(var n=0;n<Rf.length;n++){var r=Rf[n];r.blockedOn===e&&(r.blockedOn=null)}for(;0<Rf.length&&null===(n=Rf[0]).blockedOn;)Mf(n),null===n.blockedOn&&Rf.shift();if(null!=(n=(e.ownerDocument||e).$$reactFormReplay))for(r=0;r<n.length;r+=3){var a=n[r],o=n[r+1],i=a[Ue]||null;if("function"==typeof o)i||Vf(n);else if(i){var l=null;if(o&&o.hasAttribute("formAction")){if(a=o,i=o[Ue]||null)l=i.formAction;else if(null!==Af(a))continue}else l=i.action;"function"==typeof l?n[r+1]=l:(n.splice(r,3),r-=3),Vf(n)}}}function Gf(){function e(e){e.canIntercept&&"react-transition"===e.info&&e.intercept({handler:function(){return new Promise(function(e){return a=e})},focusReset:"manual",scroll:"manual"})}function t(){null!==a&&(a(),a=null),r||setTimeout(n,20)}function n(){if(!r&&!navigation.transition){var e=navigation.currentEntry;e&&null!=e.url&&navigation.navigate(e.url,{state:e.getState(),info:"react-transition",history:"replace"})}}if("object"==typeof navigation){var r=!1,a=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){r=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),null!==a&&(a(),a=null)}}}function qf(e){this._internalRoot=e}function Yf(e){this._internalRoot=e}Yf.prototype.render=qf.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(i(409));mf(t.current,Gu(),e,t,null,null)},Yf.prototype.unmount=qf.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;mf(e.current,2,null,e,null,null),Ju(),t[He]=null}},Yf.prototype.unstable_scheduleHydration=function(e){if(e){var t=Me();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Rf.length&&0!==t&&t<Rf[n].priority;n++);Rf.splice(n,0,e),0===n&&Mf(e)}};var Kf=a.version;if("19.2.1"!==Kf)throw Error(i(527,Kf,"19.2.1"));I.findDOMNode=function(e){var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw e=Object.keys(e).join(","),Error(i(268,e))}return e=function(e){var t=e.alternate;if(!t){if(null===(t=s(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return d(a),e;if(o===r)return d(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,u=a.child;u;){if(u===n){l=!0,n=a,r=o;break}if(u===r){l=!0,r=a,n=o;break}u=u.sibling}if(!l){for(u=o.child;u;){if(u===n){l=!0,n=o,r=a;break}if(u===r){l=!0,r=o,n=a;break}u=u.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(t),e=null===(e=null!==e?f(e):null)?null:e.stateNode};var Qf={bundleType:0,version:"19.2.1",rendererPackageName:"react-dom",currentDispatcherRef:R,reconcilerVersion:"19.2.1"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var Xf=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Xf.isDisabled&&Xf.supportsFiber)try{ye=Xf.inject(Qf),be=Xf}catch(Jf){}}t.createRoot=function(e,t){if(!l(e))throw Error(i(299));var n=!1,r="",a=El,o=_l,s=Al;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onUncaughtError&&(a=t.onUncaughtError),void 0!==t.onCaughtError&&(o=t.onCaughtError),void 0!==t.onRecoverableError&&(s=t.onRecoverableError)),t=pf(e,1,!1,null,0,n,r,null,a,o,s,Gf),e[He]=t.current,Jc(e),new qf(t)},t.hydrateRoot=function(e,t,n){if(!l(e))throw Error(i(299));var r=!1,a="",o=El,s=_l,u=Al,c=null;return null!=n&&(!0===n.unstable_strictMode&&(r=!0),void 0!==n.identifierPrefix&&(a=n.identifierPrefix),void 0!==n.onUncaughtError&&(o=n.onUncaughtError),void 0!==n.onCaughtError&&(s=n.onCaughtError),void 0!==n.onRecoverableError&&(u=n.onRecoverableError),void 0!==n.formState&&(c=n.formState)),(t=pf(e,1,!0,t,0,r,a,c,o,s,u,Gf)).context=hf(null),n=t.current,(a=vo(r=De(r=Gu()))).callback=null,wo(n,a,r),n=r,t.current.lanes=n,je(t,n),Ic(t),e[He]=t.current,Jc(e),new Yf(t)},t.version="19.2.1"},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(6540),a=n(4848);function o(e,t){const n=e.split(/(\{\w+\})/).map((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e});return n.some(e=>(0,r.isValidElement)(e))?n.map((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e).filter(e=>""!==e):n.join("")}var i=n(2654);function l({id:e,message:t}){if(void 0===e&&void 0===t)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[e??t]??t??e}function s({message:e,id:t},n){return o(l({message:e,id:t}),n)}function u({children:e,id:t,values:n}){if(e&&"string"!=typeof e)throw console.warn("Illegal <Translate> children",e),new Error("The Docusaurus <Translate> component only accept simple string values");const r=l({message:e,id:t});return(0,a.jsx)(a.Fragment,{children:o(r,n)})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>m,u:()=>s});var r=n(6540),a=n(205),o=n(3109),i=n(4848);const l="ease-in-out";function s({initialState:e}){const[t,n]=(0,r.useState)(e??!1),a=(0,r.useCallback)(()=>{n(e=>!e)},[]);return{collapsed:t,setCollapsed:n,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?u:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f({collapsibleRef:e,collapsed:t,animation:n}){const a=(0,r.useRef)(!1);(0,r.useEffect)(()=>{const r=e.current;function i(){const e=r.scrollHeight,t=n?.duration??function(e){if((0,o.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(e);return{transition:`height ${t}ms ${n?.easing??l}`,height:`${e}px`}}function s(){const e=i();r.style.transition=e.transition,r.style.height=e.height}if(!a.current)return d(r,t),void(a.current=!0);return r.style.willChange="height",function(){const e=requestAnimationFrame(()=>{t?(s(),requestAnimationFrame(()=>{r.style.height=u.height,r.style.overflow=u.overflow})):(r.style.display="block",requestAnimationFrame(()=>{s()}))});return()=>cancelAnimationFrame(e)}()},[e,t,n])}function p({as:e="div",collapsed:t,children:n,animation:a,onCollapseTransitionEnd:o,className:l}){const s=(0,r.useRef)(null);return f({collapsibleRef:s,collapsed:t,animation:a}),(0,i.jsx)(e,{ref:s,onTransitionEnd:e=>{"height"===e.propertyName&&(d(s.current,t),o?.(t))},className:l,children:n})}function h({collapsed:e,...t}){const[n,o]=(0,r.useState)(!e),[l,s]=(0,r.useState)(e);return(0,a.A)(()=>{e||o(!0)},[e]),(0,a.A)(()=>{n&&s(e)},[n,e]),n?(0,i.jsx)(p,{...t,collapsed:l}):null}function m({lazy:e,...t}){const n=e?h:p;return(0,i.jsx)(n,{...t})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o({locale:e,version:t,tag:n}){const o=e;return(0,a.jsxs)(r.A,{children:[e&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:e}),t&&(0,a.jsx)("meta",{name:"docusaurus_version",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:language",content:o}),t&&(0,a.jsx)("meta",{name:"docsearch:version",content:t}),n&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:n})]})}},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>A,yJ:()=>p,sC:()=>T,AO:()=>f});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach(function(e){return e.apply(void 0,n)})}}}var m=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var y="popstate",b="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),m||(0,l.A)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,S=void 0===k?g:k,x=i.keyLength,E=void 0===x?6:x,_=e.basename?d(s(e.basename)):"";function A(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=c(o,_)),p(o,r,n)}function C(){return Math.random().toString(36).substr(2,E)}var T=h();function N(e){(0,r.A)($,e),$.length=n.length,T.notifyListeners($.location,$.action)}function P(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||L(A(e.state))}function O(){L(A(v()))}var j=!1;function L(e){if(j)j=!1,N();else{T.confirmTransitionTo(e,"POP",S,function(t){t?N({action:"POP",location:e}):function(e){var t=$.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(j=!0,F(a))}(e)})}}var R=A(v()),I=[R.key];function D(e){return _+f(e)}function F(e){n.go(e)}var M=0;function z(e){1===(M+=e)&&1===e?(window.addEventListener(y,P),o&&window.addEventListener(b,O)):0===M&&(window.removeEventListener(y,P),o&&window.removeEventListener(b,O))}var B=!1;var $={length:n.length,action:"POP",location:R,createHref:D,push:function(e,t){var r="PUSH",o=p(e,t,C(),$.location);T.confirmTransitionTo(o,r,S,function(e){if(e){var t=D(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=I.indexOf($.location.key),u=I.slice(0,s+1);u.push(o.key),I=u,N({action:r,location:o})}else window.location.href=t}})},replace:function(e,t){var r="REPLACE",o=p(e,t,C(),$.location);T.confirmTransitionTo(o,r,S,function(e){if(e){var t=D(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=I.indexOf($.location.key);-1!==s&&(I[s]=o.key),N({action:r,location:o})}else window.location.replace(t)}})},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=T.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var k="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function x(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(x(window.location.href)+"#"+e)}function A(e){void 0===e&&(e={}),m||(0,l.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,y=e.basename?d(s(e.basename)):"",b=S[u],v=b.encodePath,w=b.decodePath;function A(){var e=w(E());return y&&(e=c(e,y)),p(e)}var C=h();function T(e){(0,r.A)(B,e),B.length=t.length,C.notifyListeners(B.location,B.action)}var N=!1,P=null;function O(){var e,t,n=E(),r=v(n);if(n!==r)_(r);else{var a=A(),i=B.location;if(!N&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(P===f(a))return;P=null,function(e){if(N)N=!1,T();else{var t="POP";C.confirmTransitionTo(e,t,o,function(n){n?T({action:t,location:e}):function(e){var t=B.location,n=I.lastIndexOf(f(t));-1===n&&(n=0);var r=I.lastIndexOf(f(e));-1===r&&(r=0);var a=n-r;a&&(N=!0,D(a))}(e)})}}(a)}}var j=E(),L=v(j);j!==L&&_(L);var R=A(),I=[f(R)];function D(e){t.go(e)}var F=0;function M(e){1===(F+=e)&&1===e?window.addEventListener(k,O):0===F&&window.removeEventListener(k,O)}var z=!1;var B={length:t.length,action:"POP",location:R,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=x(window.location.href)),n+"#"+v(y+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,B.location);C.confirmTransitionTo(r,n,o,function(e){if(e){var t=f(r),a=v(y+t);if(E()!==a){P=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(f(B.location)),i=I.slice(0,o+1);i.push(t),I=i,T({action:n,location:r})}else T()}})},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,B.location);C.confirmTransitionTo(r,n,o,function(e){if(e){var t=f(r),a=v(y+t);E()!==a&&(P=t,_(a));var o=I.indexOf(f(B.location));-1!==o&&(I[o]=t),T({action:n,location:r})}})},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=C.setPrompt(e);return z||(M(1),z=!0),function(){return z&&(z=!1,M(-1)),t()}},listen:function(e){var t=C.appendListener(e);return M(1),function(){M(-1),t()}}};return B}function C(e,t,n){return Math.min(Math.max(e,t),n)}function T(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=h();function d(e){(0,r.A)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function m(){return Math.random().toString(36).substr(2,u)}var g=C(l,0,o.length-1),y=o.map(function(e){return p(e,void 0,"string"==typeof e?m():e.key||m())}),b=f;function v(e){var t=C(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,function(e){e?d({action:"POP",location:r,index:t}):d()})}var w={length:y.length,action:"POP",location:y[g],index:g,entries:y,createHref:b,push:function(e,t){var r="PUSH",a=p(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}})},replace:function(e,t){var r="REPLACE",a=p(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))})},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},1561:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},1635:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>I,__assign:()=>o,__asyncDelegator:()=>_,__asyncGenerator:()=>E,__asyncValues:()=>A,__await:()=>x,__awaiter:()=>h,__classPrivateFieldGet:()=>j,__classPrivateFieldIn:()=>R,__classPrivateFieldSet:()=>L,__createBinding:()=>g,__decorate:()=>l,__disposeResources:()=>F,__esDecorate:()=>u,__exportStar:()=>y,__extends:()=>a,__generator:()=>m,__importDefault:()=>O,__importStar:()=>P,__makeTemplateObject:()=>C,__metadata:()=>p,__param:()=>s,__propKey:()=>d,__read:()=>v,__rest:()=>i,__rewriteRelativeImportExtension:()=>M,__runInitializers:()=>c,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>S,__spreadArrays:()=>k,__values:()=>b,default:()=>z});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},o.apply(this,arguments)};function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n}function l(e,t,n,r){var a,o=arguments.length,i=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",c=!t&&e?r.static?e:e.prototype:null,d=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var h={};for(var m in r)h[m]="access"===m?{}:r[m];for(var m in r.access)h.access[m]=r.access[m];h.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var g=(0,n[p])("accessor"===s?{get:d.get,set:d.set}:d[u],h);if("accessor"===s){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(l=i(g.get))&&(d.get=l),(l=i(g.set))&&(d.set=l),(l=i(g.init))&&a.unshift(l)}else(l=i(g))&&("field"===s?a.unshift(l):d[u]=l)}c&&Object.defineProperty(c,r.name,d),f=!0}function c(e,t,n){for(var r=arguments.length>2,a=0;a<t.length;a++)n=r?t[a].call(e,n):t[a].call(e);return r?n:void 0}function d(e){return"symbol"==typeof e?e:"".concat(e)}function f(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function p(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function h(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{s(r.next(e))}catch(t){o(t)}}function l(e){try{s(r.throw(e))}catch(t){o(t)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,l)}s((r=r.apply(e,t||[])).next())})}function m(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=l(0),i.throw=l(1),i.return=l(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function l(l){return function(s){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return o.label++,{value:l[1],done:!1};case 5:o.label++,r=l[1],l=[0];continue;case 7:l=o.ops.pop(),o.trys.pop();continue;default:if(!(a=o.trys,(a=a.length>0&&a[a.length-1])||6!==l[0]&&2!==l[0])){o=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]<a[3])){o.label=l[1];break}if(6===l[0]&&o.label<a[1]){o.label=a[1],a=l;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(l);break}a[2]&&o.ops.pop(),o.trys.pop();continue}l=t.call(e,o)}catch(s){l=[6,s],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}}var g=Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);a&&!("get"in a?!t.__esModule:a.writable||a.configurable)||(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]};function y(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||g(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(v(arguments[t]));return e}function k(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,l=o.length;i<l;i++,a++)r[a]=o[i];return r}function S(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a<o;a++)!r&&a in t||(r||(r=Array.prototype.slice.call(t,0,a)),r[a]=t[a]);return e.concat(r||Array.prototype.slice.call(t))}function x(e){return this instanceof x?(this.v=e,this):new x(e)}function E(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,a=n.apply(e,t||[]),o=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),i("next"),i("throw"),i("return",function(e){return function(t){return Promise.resolve(t).then(e,u)}}),r[Symbol.asyncIterator]=function(){return this},r;function i(e,t){a[e]&&(r[e]=function(t){return new Promise(function(n,r){o.push([e,t,n,r])>1||l(e,t)})},t&&(r[e]=t(r[e])))}function l(e,t){try{(n=a[e](t)).value instanceof x?Promise.resolve(n.value.v).then(s,u):c(o[0][2],n)}catch(r){c(o[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",function(e){throw e}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:x(e[r](t)),done:!1}:a?a(t):t}:a}}function A(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,a){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,a,(t=e[n](t)).done,t.value)})}}}function C(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var T=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},N=function(e){return N=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},N(e)};function P(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=N(e),r=0;r<n.length;r++)"default"!==n[r]&&g(t,e,n[r]);return T(t,e),t}function O(e){return e&&e.__esModule?e:{default:e}}function j(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)}function L(e,t,n,r,a){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!a)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!a:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?a.call(e,n):a?a.value=n:t.set(e,n),n}function R(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function I(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var r,a;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");r=t[Symbol.asyncDispose]}if(void 0===r){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");r=t[Symbol.dispose],n&&(a=r)}if("function"!=typeof r)throw new TypeError("Object not disposable.");a&&(r=function(){try{a.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t}var D="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var r=new Error(n);return r.name="SuppressedError",r.error=e,r.suppressed=t,r};function F(e){function t(t){e.error=e.hasError?new D(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}var n,r=0;return function a(){for(;n=e.stack.pop();)try{if(!n.async&&1===r)return r=0,e.stack.push(n),Promise.resolve().then(a);if(n.dispose){var o=n.dispose.call(n.value);if(n.async)return r|=2,Promise.resolve(o).then(a,function(e){return t(e),a()})}else r|=1}catch(i){t(i)}if(1===r)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}()}function M(e,t){return"string"==typeof e&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,a,o){return n?t?".jsx":".js":!r||a&&o?r+a+"."+o.toLowerCase()+"js":e}):e}const z={__extends:a,__assign:o,__rest:i,__decorate:l,__param:s,__esDecorate:u,__runInitializers:c,__propKey:d,__setFunctionName:f,__metadata:p,__awaiter:h,__generator:m,__createBinding:g,__exportStar:y,__values:b,__read:v,__spread:w,__spreadArrays:k,__spreadArray:S,__await:x,__asyncGenerator:E,__asyncDelegator:_,__asyncValues:A,__makeTemplateObject:C,__importStar:P,__importDefault:O,__classPrivateFieldGet:j,__classPrivateFieldSet:L,__classPrivateFieldIn:R,__addDisposableResource:I,__disposeResources:F,__rewriteRelativeImportExtension:M}},1765:(e,t,n)=>{"use strict";n.d(t,{My:()=>C,f4:()=>ne});var r,a,o,i,l,s,u,c=n(6540),d=n(4164),f=Object.create,p=Object.defineProperty,h=Object.defineProperties,m=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,S=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,x=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&S(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&S(e,n,t[n]);return e},E=(e,t)=>h(e,g(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},A=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach(function(t,r){a[r]=e(t,n)}),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,function(t,n){n===u&&t!=e&&(this[t]=i)}),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",o),!o.grammar)throw new Error('The language "'+o.language+'" has no grammar.');return o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var h=0;h<p.length;++h){if(d&&d.cause==f+","+h)return;var m=p[h],g=m.inside,y=!!m.lookbehind,b=!!m.greedy,v=m.alias;if(b&&!m.pattern.global){var w=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,w+"g")}for(var k=m.pattern||m,S=l.next,x=c;S!==t.tail&&!(d&&x>=d.reach);x+=S.value.length,S=S.next){var E=S.value;if(t.length>e.length)return;if(!(E instanceof a)){var _,A=1;if(b){if(!(_=o(k,x,e,y))||_.index>=e.length)break;var C=_.index,T=_.index+_[0].length,N=x;for(N+=S.value.length;C>=N;)N+=(S=S.next).value.length;if(x=N-=S.value.length,S.value instanceof a)continue;for(var P=S;P!==t.tail&&(N<T||"string"==typeof P.value);P=P.next)A++,N+=P.value.length;A--,E=e.slice(x,N),_.index-=x}else if(!(_=o(k,0,E,y)))continue;C=_.index;var O=_[0],j=E.slice(0,C),L=E.slice(C+O.length),R=x+E.length;d&&R>d.reach&&(d.reach=R);var I=S.prev;if(j&&(I=s(t,I,j),x+=j.length),u(t,I,A),S=s(t,I,new a(f,g?r.tokenize(O,g):O,v,O)),L&&s(t,S,L),A>1){var D={cause:f+","+h,reach:R};i(e,t,n,S.prev,x,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach(function(t){a+=e(t,n)}),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),C=((e,t,n)=>(n=null!=e?f(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||p(e,a,{get:()=>t[a],enumerable:!(r=m(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:p(n,"default",{value:e,enumerable:!0}),e)))(A());C.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},C.languages.markup.tag.inside["attr-value"].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside["internal-subset"].inside=C.languages.markup,C.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend("markup",{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,o=C,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),u={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":u}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":u}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},C.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend("clike",{"class-name":[C.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:C.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:C.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),C.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),C.languages.markup&&(C.languages.markup.tag.addInlined("script","javascript"),C.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),C.languages.js=C.languages.javascript,C.languages.actionscript=C.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript["class-name"].alias="function",delete C.languages.actionscript.parameter,delete C.languages.actionscript["literal-property"],C.languages.markup&&C.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(C),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach(function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l<s;l++)i[l]instanceof RegExp&&(i[l]={pattern:i[l]}),r(i[l]);else r(i)}})}}),t.addSupport(["java","javascript","php"],t)}(C),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(C),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<value>>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,function(){return r}).replace(/<<key>>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(C),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return r}),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a,o=t[n];"code"!==o.type?e(o.content):(a=o.content[1],o=o.content[3],a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content&&(a=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),a="language-"+(a=(/[a-z][\w-]*/i.exec(a)||[""])[0].toLowerCase()),o.alias?"string"==typeof o.alias?o.alias=[o.alias,a]:o.alias.push(a):o.alias=[a]))}}(e.tokens)}),e.hooks.add("wrap",function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r];if(o=/language-(.+)/.exec(o)){n=o[1];break}}var u,c=e.languages[n];c?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n)):l[t]||e}),c,n):n&&"none"!==n&&e.plugins.autoloader&&(u="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=u,e.plugins.autoloader.loadLanguages(n,function(){var t=document.getElementById(u);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}),RegExp(e.languages.markup.tag.pattern.source,"gi")),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:C.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},C.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var t=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),0<a.length)){var l=f(/^\{$/,/^\}$/);if(-1!==l)for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&0<=a.indexOf(u.content)&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return}return 1}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}}),C.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),u=0,c={},d=(s=l(s.map(function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n}).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var o=0;o<n.length;o++){if(u>=d.length)return;var i,s,f,p,h,m,g,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(g=(m="string"==typeof y?y:y.content).indexOf(i))&&(++u,s=m.substring(0,g),h=c[i],f=void 0,(p={})["interpolation-punctuation"]=a,3===(p=e.tokenize(h,p)).length&&((f=[1,1]).push.apply(f,l(p[1],e.languages.javascript,"javascript")),p.splice.apply(p,f)),f=new e.Token("interpolation",p,r.alias,h),p=m.substring(g+i.length),h=[],s&&h.push(s),h.push(f),p&&(t(m=[p]),h.push.apply(h,m)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(h)),o+=h.length-1):y.content=h)):(g=y.content,Array.isArray(g)?t(g):t([g]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",function(t){t.language in u&&function t(n){for(var r=0,a=n.length;r<a;r++){var o,i,l,u=n[r];"string"!=typeof u&&(o=u.content,Array.isArray(o)?"template-string"===u.type?(u=o[1],3===o.length&&"string"!=typeof u&&"embedded-code"===u.type&&(i=c(u),u=u.alias,u=Array.isArray(u)?u[0]:u,l=e.languages[u])&&(o[1]=s(i,l,u))):t(o):"string"!=typeof o&&t([o]))}}(t.tokens)})}(C),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(C),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,function(){return n})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(C),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(C),C.languages.n4js=C.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),C.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),C.languages.n4jsd=C.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source}),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];a=(o="RegExp"===e.util.type(o)?e.languages.javascript[a]={pattern:o}:o).inside||{};(o.inside=a)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(C),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,function(){return n}).replace(/<BRACES>/g,function(){return r}).replace(/<SPREAD>/g,function(){return a}),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;"string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===l(a.content[0].content[1])&&n.pop():"/>"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&0<n.length&&0===n[n.length-1].openedBraces&&(o=l(a),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(o+=l(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(o=l(t[r-1])+o,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",o,null,o)),a.content&&"string"!=typeof a.content&&i(a.content)}}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)})}(C),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(C),C.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},C.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(C),C.languages.c=C.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},C.languages.c.string],char:C.languages.c.char,comment:C.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:C.languages.c}}}}),C.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete C.languages.c.boolean,C.languages.objectivec=C.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete C.languages.objectivec["class-name"],C.languages.objc=C.languages.objectivec,C.languages.reason=C.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),C.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete C.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,function(){return t});t=t.replace(/<self>/g,function(){return/[^\s\S]/.source}),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(C),C.languages.go=C.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),C.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(C),C.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},C.languages.python["string-interpolation"].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},C.languages.webmanifest=C.languages.json;((e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>N,duotoneLight:()=>P,github:()=>O,gruvboxMaterialDark:()=>Y,gruvboxMaterialLight:()=>K,jettwaveDark:()=>V,jettwaveLight:()=>W,nightOwl:()=>j,nightOwlLight:()=>L,oceanicNext:()=>D,okaidia:()=>F,oneDark:()=>G,oneLight:()=>q,palenight:()=>M,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>H});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},N={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},P={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},O={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},j={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},L={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},R="#c5a5c5",I="#8dc891",D={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:R}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:R}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},F={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},M={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},H={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},V={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},G={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},q={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Y={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},K={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},Q=/\r\n|\r|\n/,X=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Z=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},J=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)<a[i];){let e,u=t[i];const c=n[i][o];if("string"==typeof c?(u=i>0?u:["plain"],e=c):(u=Z(u,c.type),c.alias&&(u=Z(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(Q),f=d.length;l.push({types:u,content:d[0]});for(let t=1;t<f;t++)X(l),s.push(l=[]),l.push({types:u,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),a.pop()}return X(l),s},ee=(e,t)=>{const{plain:n}=e,r=e.styles.reduce((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach(t=>{const n=x(x({},e[t]),a);e[t]=n}),e},{});return r.root=n,r.plain=E(x({},n),{backgroundColor:void 0}),r},te=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=ee(r,o),l=(e=>(0,c.useCallback)(t=>{var n=t,{className:r,style:a,line:o}=n,i=_(n,["className","style","line"]);const l=E(x({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=x(x({},l.style||{}),a)),l},[e]))(i),s=(e=>{const t=(0,c.useCallback)(({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map(t=>e[t]))},[e]);return(0,c.useCallback)(e=>{var n=e,{token:r,className:a,style:o}=n,i=_(n,["token","className","style"]);const l=E(x({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=x(x({},l.style||{}),o)),l},[t])})(i),u=(({prism:e,code:t,grammar:n,language:r})=>(0,c.useMemo)(()=>{if(null==n)return J([t]);const a={code:t,grammar:n,language:r,tokens:[]};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(t,n),e.hooks.run("after-tokenize",a),J(a.tokens)},[t,n,r,e]))({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:u,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ne=e=>(0,c.createElement)(te,E(x({},e),{prism:e.prism||C,theme:e.theme||U,code:e.code,language:e.language}))},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>h,e:()=>p});var r=n(6540),a=n(5600),o=n(4581),i=n(7485),l=n(6342),s=n(9532),u=n(4848);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,l.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1),u=(0,r.useCallback)(()=>{s(e=>!e)},[]);return(0,r.useEffect)(()=>{"desktop"===t&&s(!1)},[t]),(0,r.useMemo)(()=>({disabled:e,shouldRender:n,toggle:u,shown:i}),[e,n,u,i])}function f({handler:e}){return(0,i.$Z)(e),null}function p({children:e}){const t=d();return(0,u.jsxs)(u.Fragment,{children:[t.shown&&(0,u.jsx)(f,{handler:()=>(t.toggle(),!1)}),(0,u.jsx)(c.Provider,{value:t,children:e})]})}function h(){const e=r.useContext(c);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),a=n(6347),o=n(440);function i(){const{siteConfig:{baseUrl:e,trailingSlash:t},i18n:{localeConfigs:n}}=(0,r.A)(),{pathname:i}=(0,a.zy)(),l=(0,o.Ks)(i,{trailingSlash:t,baseUrl:e}).replace(e,"");return{createUrl:function({locale:e,fullyQualified:t}){const r=function(e){const t=n[e];if(!t)throw new Error(`Unexpected Docusaurus bug, no locale config found for locale=${e}`);return t}(e);return`${`${t?r.url:""}`}${r.baseUrl}${l}`}}}},2181:(e,t,n)=>{"use strict";n.d(t,{bq:()=>c,MN:()=>u,a2:()=>s,k2:()=>d});var r=n(6540),a=n(1312),o=n(440);const i={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var l=n(4848);function s(e){return(0,l.jsx)("button",{type:"button",...e,children:(0,l.jsx)(a.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function u({error:e,tryAgain:t}){return(0,l.jsxs)("div",{className:i.errorBoundaryFallback,children:[(0,l.jsx)("p",{children:e.message}),(0,l.jsx)(s,{onClick:t})]})}function c({error:e}){const t=(0,o.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,l.jsx)("p",{className:i.errorBoundaryError,children:t})}class d extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},2514:()=>{Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},2654:e=>{"use strict";e.exports={}},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},2799:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case m:case s:return e;default:return t}}case a:return t}}}function S(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return S(e)||k(e)===c},t.isConcurrentMode=S,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===m},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},2831:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,v:()=>l});var r=n(6347),a=n(8168),o=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some(function(e){var a=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a}),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.dO,n,e.map(function(e,n){return o.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.A)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.A)({},n,t,{route:e}))}})})):null}},2833:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},2892:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>a})},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,u=n,u?a(s):o(s));var s,u;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;const r=n(2566);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}},3001:(e,t,n)=>{"use strict";n.r(t)},3025:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l({children:e,version:t}){return(0,o.jsx)(i.Provider,{value:t,children:e})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848);const o=r.createContext(null);function i({children:e,value:t}){const n=r.useContext(o),i=(0,r.useMemo)(()=>function({parent:e,value:t}){if(!e){if(!t)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in t))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return t}const n={...e.data,...t?.data};return{plugin:e.plugin,data:n}}({parent:n,value:t}),[n,t]);return(0,a.jsx)(o.Provider,{value:i,children:e})}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,gk:()=>p});var r=n(6540),a=n(8193),o=n(2303),i=(n(205),n(9532)),l=n(4848);const s=r.createContext(void 0);function u({children:e}){const t=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)(()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}}),[])}();return(0,l.jsx)(s.Provider,{value:t,children:e})}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t=[]){const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)(()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)},[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});n(6540);var r=n(1312);const a={iconExternalLink:"iconExternalLink_nPIU"};var o=n(4848);const i="#theme-svg-external-link";function l({width:e=13.5,height:t=13.5}){return(0,o.jsx)("svg",{width:e,height:t,"aria-label":(0,r.T)({id:"theme.IconExternalLink.ariaLabel",message:"(opens in new tab)",description:"The ARIA label for the external link icon"}),className:a.iconExternalLink,children:(0,o.jsx)("use",{href:i})})}},3259:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(6540),s=[],u=[];var c=l.createContext(null);function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then(function(e){return n.loading=!1,n.loaded=e,e}).catch(function(e){throw n.loading=!1,n.error=e,e}),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach(function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then(function(e){t.loaded[r]=e}).catch(function(e){t.error=e})})}catch(r){t.error=r}return t.promise=Promise.all(n).then(function(e){return t.loading=!1,e}).catch(function(e){throw t.loading=!1,e}),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return s.push(g),"function"==typeof h.webpack&&u.push(function(){if((0,h.webpack)().every(function(e){return void 0!==e&&void 0!==n.m[e]}))return g()}),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()}),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context&&Array.isArray(h.modules)&&h.modules.forEach(function(t){e.context.report(t)}),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout(function(){t({pastDelay:!0})},h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout(function(){t({timedOut:!0})},h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then(function(){return n(),null}).catch(function(e){return n(),null})}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextType",c),f}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return l.createElement(c.Provider,{value:{report:this.props.report}},l.Children.only(this.props.children))},t}(l.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then(function(){if(e.length)return y(e)})}m.Capture=g,m.preloadAll=function(){return new Promise(function(e,t){y(s).then(e,t)})},m.preloadReady=function(){return new Promise(function(e,t){y(u).then(e,e)})},e.exports=m},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(8774),a=n(6025),o=n(4586),i=n(6342),l=n(1122),s=n(4848);function u({logo:e,alt:t,imageClassName:n}){const r={light:(0,a.Ay)(e.src),dark:(0,a.Ay)(e.srcDark||e.src)},o=(0,s.jsx)(l.A,{className:e.className,sources:r,height:e.height,width:e.width,alt:t,style:e.style});return n?(0,s.jsx)("div",{className:n,children:o}):o}function c(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:c,titleClassName:d,...f}=e,p=(0,a.Ay)(l?.href||"/"),h=n?"":t,m=l?.alt??h;return(0,s.jsxs)(r.A,{to:p,...f,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:m,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},3535:(e,t,n)=>{"use strict";n.d(t,{v:()=>o});var r=n(6342);const a={anchorTargetStickyNavbar:"anchorTargetStickyNavbar_Vzrq",anchorTargetHideOnScrollNavbar:"anchorTargetHideOnScrollNavbar_vjPI"};function o(e){const{navbar:{hideOnScroll:t}}=(0,r.p)();if(void 0!==e)return t?a.anchorTargetHideOnScrollNavbar:a.anchorTargetStickyNavbar}},3886:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>g,g1:()=>b});var r=n(6540),a=n(8295),o=n(7065),i=n(6342),l=n(679),s=n(9532),u=n(4848);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,l.Wf)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,l.Wf)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,l.Wf)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map(e=>[e,{preferredVersionName:null}]));const p=r.createContext(null);function h(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)(()=>Object.keys(e),[e]),[o,l]=(0,r.useState)(()=>f(n));(0,r.useEffect)(()=>{l(function({pluginIds:e,versionPersistence:t,allDocsData:n}){function r(e){const r=d.read(e,t);return n[e].versions.some(e=>e.name===r)?{preferredVersionName:r}:(d.clear(e,t),{preferredVersionName:null})}return Object.fromEntries(e.map(e=>[e,r(e)]))}({allDocsData:e,versionPersistence:t,pluginIds:n}))},[e,t,n]);return[o,(0,r.useMemo)(()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l(t=>({...t,[e]:{preferredVersionName:n}}))}}),[t])]}function m({children:e}){const t=h();return(0,u.jsx)(p.Provider,{value:t,children:e})}function g({children:e}){return(0,u.jsx)(m,{children:e})}function y(){const e=(0,r.useContext)(p);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function b(e=o.W){const t=(0,a.ht)(e),[n,i]=y(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find(e=>e.name===l)??null,savePreferredVersionName:(0,r.useCallback)(t=>{i.savePreferredVersion(e,t)},[i,e])}}},3907:(e,t,n)=>{var r={"./prism-bash":7022,"./prism-json":2514,"./prism-yaml":83};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3907},4042:(e,t,n)=>{"use strict";n.d(t,{A:()=>Nt});var r=n(6540),a=n(4164),o=n(7489),i=n(5500),l=n(6347),s=n(1312),u=n(5062),c=n(4848);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)(e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)},[]);return(0,u.$)(({location:n})=>{e.current&&!n.hash&&"PUSH"===t&&f(e.current)}),{containerRef:e,onClick:n}}const h=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:r}=p();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(m,{className:b.skipToContent})}var w=n(6342),k=n(5041);function S({width:e=21,height:t=21,color:n="currentColor",strokeWidth:r=1.2,className:a,...o}){return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:e,height:t,...o,children:(0,c.jsx)("g",{stroke:n,strokeWidth:r,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const x={closeButton:"closeButton_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",x.closeButton,e.className),children:(0,c.jsx)(S,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function A(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.A)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const C={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:i}=e;return(0,c.jsxs)("div",{className:(0,a.A)(g.G.announcementBar.container,C.announcementBar),style:{backgroundColor:r,color:o},role:"banner",children:[i&&(0,c.jsx)("div",{className:C.announcementBarPlaceholder}),(0,c.jsx)(A,{className:C.announcementBarContent}),i&&(0,c.jsx)(E,{onClick:n,className:C.announcementBarClose})]})}var N=n(2069),P=n(3104);var O=n(9532),j=n(5600);const L=r.createContext(null);function R({children:e}){const t=function(){const e=(0,N.M)(),t=(0,j.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,O.ZC)(o);return(0,r.useEffect)(()=>{o&&!i&&a(!0)},[o,i]),(0,r.useEffect)(()=>{o?e.shown||a(!0):a(!1)},[e.shown,o]),(0,r.useMemo)(()=>[n,a],[n])}();return(0,c.jsx)(L.Provider,{value:t,children:e})}function I(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(L);if(!e)throw new O.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)(()=>n(!1),[n]),o=(0,j.YL)();return(0,r.useMemo)(()=>({shown:t,hide:a,content:I(o)}),[a,o,t])}function F(e){return parseInt(r.version.split(".")[0],10)<19?{inert:e?"":void 0}:{inert:e}}function M({children:e,inert:t}){return(0,c.jsx)("div",{className:(0,a.A)(g.G.layout.navbar.mobileSidebar.panel,"navbar-sidebar__item menu"),...F(t),children:e})}function z({header:e,primaryMenu:t,secondaryMenu:n}){const{shown:r}=D();return(0,c.jsxs)("div",{className:(0,a.A)(g.G.layout.navbar.mobileSidebar.container,"navbar-sidebar"),children:[e,(0,c.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":r}),children:[(0,c.jsx)(M,{inert:r,children:t}),(0,c.jsx)(M,{inert:!r,children:n})]})]})}var B=n(5293),$=n(2303);function U(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function H(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}function V(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"})})}const W="toggle_vylO",G="toggleButton_gllP",q="toggleIcon_g3eP",Y="systemToggleIcon_QzmC",K="lightToggleIcon_pyhR",Q="darkToggleIcon_wfgR",X="toggleButtonDisabled_aARS";function Z(e){switch(e){case null:return(0,s.T)({message:"system mode",id:"theme.colorToggle.ariaLabel.mode.system",description:"The name for the system color mode"});case"light":return(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"});case"dark":return(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"});default:throw new Error(`unexpected color mode ${e}`)}}function J(e){return(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the color mode toggle"},{mode:Z(e)})}function ee(){return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(U,{"aria-hidden":!0,className:(0,a.A)(q,K)}),(0,c.jsx)(H,{"aria-hidden":!0,className:(0,a.A)(q,Q)}),(0,c.jsx)(V,{"aria-hidden":!0,className:(0,a.A)(q,Y)})]})}function te({className:e,buttonClassName:t,respectPrefersColorScheme:n,value:r,onChange:o}){const i=(0,$.A)();return(0,c.jsx)("div",{className:(0,a.A)(W,e),children:(0,c.jsx)("button",{className:(0,a.A)("clean-btn",G,!i&&X,t),type:"button",onClick:()=>o(function(e,t){if(!t)return"dark"===e?"light":"dark";switch(e){case null:return"light";case"light":return"dark";case"dark":return null;default:throw new Error(`unexpected color mode ${e}`)}}(r,n)),disabled:!i,title:Z(r),"aria-label":J(r),children:(0,c.jsx)(ee,{})})})}const ne=r.memo(te),re={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function ae({className:e}){const t=(0,w.p)().navbar.style,{disableSwitch:n,respectPrefersColorScheme:r}=(0,w.p)().colorMode,{colorModeChoice:a,setColorMode:o}=(0,B.G)();return n?null:(0,c.jsx)(ne,{className:e,buttonClassName:"dark"===t?re.darkNavbarColorModeToggle:void 0,respectPrefersColorScheme:r,value:a,onChange:o})}var oe=n(3465);function ie(){return(0,c.jsx)(oe.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function le(){const e=(0,N.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(S,{color:"var(--ifm-color-emphasis-600)"})})}function se(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(ie,{}),(0,c.jsx)(ae,{className:"margin-right--md"}),(0,c.jsx)(le,{})]})}var ue=n(8774),ce=n(6025),de=n(6654);function fe(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var pe=n(3186);function he({activeBasePath:e,activeBaseRegex:t,to:n,href:r,label:a,html:o,isDropdownLink:i,prependBaseUrlToHref:l,...s}){const u=(0,ce.Ay)(n),d=(0,ce.Ay)(e),f=(0,ce.Ay)(r,{forcePrependBaseUrl:!0}),p=a&&r&&!(0,de.A)(r),h=o?{dangerouslySetInnerHTML:{__html:o}}:{children:(0,c.jsxs)(c.Fragment,{children:[a,p&&(0,c.jsx)(pe.A,{...i&&{width:12,height:12}})]})};return r?(0,c.jsx)(ue.A,{href:l?f:r,...s,...h}):(0,c.jsx)(ue.A,{to:u,isNavLink:!0,...(e||t)&&{isActive:(e,n)=>t?fe(t,n.pathname):n.pathname.startsWith(d)},...s,...h})}function me({className:e,isDropdownItem:t,...n}){return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(he,{className:(0,a.A)("menu__link",e),...n})})}function ge({className:e,isDropdownItem:t=!1,...n}){const r=(0,c.jsx)(he,{className:(0,a.A)(t?"dropdown__link":"navbar__item navbar__link",e),isDropdownLink:t,...n});return t?(0,c.jsx)("li",{children:r}):r}function ye({mobile:e=!1,position:t,...n}){const r=e?me:ge;return(0,c.jsx)(r,{...n,activeClassName:n.activeClassName??(e?"menu__link--active":"navbar__link--active")})}var be=n(1422),ve=n(9169),we=n(4586);const ke="dropdownNavbarItemMobile_J0Sd";function Se(e,t){return e.some(e=>function(e,t){return!!(0,ve.ys)(e.to,t)||!!fe(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t))}function xe({collapsed:e,onClick:t}){return(0,c.jsx)("button",{"aria-label":e?(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.expandAriaLabel",message:"Expand the dropdown",description:"The ARIA label of the button to expand the mobile dropdown navbar item"}):(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel",message:"Collapse the dropdown",description:"The ARIA label of the button to collapse the mobile dropdown navbar item"}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:t})}function Ee({items:e,className:t,position:n,onClick:o,...i}){const s=function(){const{siteConfig:{baseUrl:e}}=(0,we.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),u=(0,ve.ys)(i.to,s),d=Se(e,s),{collapsed:f,toggleCollapsed:p}=function({active:e}){const{collapsed:t,toggleCollapsed:n,setCollapsed:a}=(0,be.u)({initialState:()=>!e});return(0,r.useEffect)(()=>{e&&a(!1)},[e,a]),{collapsed:t,toggleCollapsed:n}}({active:u||d}),h=i.to?void 0:"#";return(0,c.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":f}),children:[(0,c.jsxs)("div",{className:(0,a.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":u}),children:[(0,c.jsx)(he,{role:"button",className:(0,a.A)(ke,"menu__link menu__link--sublist",t),href:h,...i,onClick:e=>{"#"===h&&e.preventDefault(),p()},children:i.children??i.label}),(0,c.jsx)(xe,{collapsed:f,onClick:e=>{e.preventDefault(),p()}})]}),(0,c.jsx)(be.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:f,children:e.map((e,t)=>(0,r.createElement)(We,{mobile:!0,isDropdownItem:!0,onClick:o,activeClassName:"menu__link--active",...e,key:t}))})]})}function _e({items:e,position:t,className:n,onClick:o,...i}){const l=(0,r.useRef)(null),[s,u]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&u(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}},[l]),(0,c.jsxs)("div",{ref:l,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===t,"dropdown--show":s}),children:[(0,c.jsx)(he,{"aria-haspopup":"true","aria-expanded":s,role:"button",href:i.to?void 0:"#",className:(0,a.A)("navbar__link",n),...i,onClick:i.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),u(!s))},children:i.children??i.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:e.map((e,t)=>(0,r.createElement)(We,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t}))})]})}function Ae({mobile:e=!1,...t}){const n=e?Ee:_e;return(0,c.jsx)(n,{...t})}var Ce=n(2131),Te=n(7485);function Ne({width:e=20,height:t=20,...n}){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:e,height:t,"aria-hidden":!0,...n,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const Pe="iconLanguage_nlXk";function Oe(){const{siteConfig:e,i18n:{localeConfigs:t}}=(0,we.A)(),n=(0,Ce.o)(),r=(0,Te.Hl)(e=>e.location.search),a=(0,Te.Hl)(e=>e.location.hash),o=e=>{const n=t[e];if(!n)throw new Error(`Docusaurus bug, no locale config found for locale=${e}`);return n};return{getURL:(t,i)=>{const l=(0,Te.jy)([r,i.queryString],"append");return`${(t=>o(t).url===e.url?`pathname://${n.createUrl({locale:t,fullyQualified:!1})}`:n.createUrl({locale:t,fullyQualified:!0}))(t)}${l}${a}`},getLabel:e=>o(e).label,getLang:e=>o(e).htmlLang}}var je=n(6588),Le=n(689),Re=n.n(Le);function Ie(){const e=(0,l.zy)(),t=(0,l.W6)(),{siteConfig:{baseUrl:n}}=(0,we.A)(),[a,o]=(0,r.useState)({wordToHighlight:"",isTitleSuggestion:!1,titleText:""});return(0,r.useEffect)(()=>{if(!e.state?.highlightState||0===e.state.highlightState.wordToHighlight.length)return;o(e.state.highlightState);const{highlightState:n,...r}=e.state;t.replace({...e,state:r})},[e.state?.highlightState,t,e]),(0,r.useEffect)(()=>{if(0===a.wordToHighlight.length)return;const e=document.getElementsByTagName("article")[0]??document.getElementsByTagName("main")[0];if(!e)return;const t=new(Re())(e),n={ignoreJoiners:!0};return t.mark(a.wordToHighlight,n),()=>t.unmark(n)},[a,n]),null}const De=e=>{const t=(0,r.useRef)(!1),o=(0,r.useRef)(null),[i,s]=(0,r.useState)(!1),u=(0,l.W6)(),{siteConfig:d={}}=(0,we.A)(),f=(d.plugins||[]).find(e=>Array.isArray(e)&&"string"==typeof e[0]&&e[0].includes("docusaurus-lunr-search")),p=(0,$.A)(),{baseUrl:h}=d,m=f&&f[1]?.assetUrl||h,g=(0,je.P_)("docusaurus-lunr-search"),y=()=>{t.current||(Promise.all([fetch(`${m}${g.fileNames.searchDoc}`).then(e=>e.json()),fetch(`${m}${g.fileNames.lunrIndex}`).then(e=>e.json()),Promise.all([n.e(8591),n.e(8577)]).then(n.bind(n,5765)),Promise.all([n.e(1869),n.e(9278)]).then(n.bind(n,9278))]).then(([e,t,{default:n}])=>{const{searchDocs:r,options:a}=e;r&&0!==r.length&&(((e,t,n,r)=>{new n({searchDocs:e,searchIndex:t,baseUrl:h,inputSelector:"#search_input_react",handleSelected:(e,t,n)=>{const a=n.url||"/";document.createElement("a").href=a,e.setVal(""),t.target.blur();let o="";if(r.highlightResult)try{const e=(n.text||n.subcategory||n.title).match(new RegExp("<span.+span>\\w*","g"));if(e&&e.length>0){const t=document.createElement("div");t.innerHTML=e[0],o=t.textContent}}catch(i){console.log(i)}u.push(a,{highlightState:{wordToHighlight:o}})},maxHits:r.maxHits})})(r,t,n,a),s(!0))}),t.current=!0)},b=(0,r.useCallback)(t=>{o.current.contains(t.target)||o.current.focus(),e.handleSearchBarToggle&&e.handleSearchBarToggle(!e.isSearchBarExpanded)},[e.isSearchBarExpanded]);let v;return p&&(y(),v=window.navigator.platform.startsWith("Mac")?"Search \u2318+K":"Search Ctrl+K"),(0,r.useEffect)(()=>{e.autoFocus&&i&&o.current.focus()},[i]),(0,c.jsxs)("div",{className:"navbar__search",children:[(0,c.jsx)("span",{"aria-label":"expand searchbar",role:"button",className:(0,a.A)("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:b,onKeyDown:b,tabIndex:0}),(0,c.jsx)("input",{id:"search_input_react",type:"search",placeholder:i?v:"Loading...","aria-label":"Search",className:(0,a.A)("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:y,onMouseOver:y,onFocus:b,onBlur:b,ref:o,disabled:!i}),(0,c.jsx)(Ie,{})]},"search-box")},Fe={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Me({children:e,className:t}){return(0,c.jsx)("div",{className:(0,a.A)(t,Fe.navbarSearchContainer),children:e})}var ze=n(8295),Be=n(4718);var $e=n(3886);function Ue({docsPluginId:e,configs:t}){return function(e,t){if(t){const n=new Map(e.map(e=>[e.name,e])),r=(t,r)=>{const a=n.get(t);if(!a)throw new Error(`No docs version exist for name '${t}', please verify your 'docsVersionDropdown' navbar item versions config.\nAvailable version names:\n- ${e.map(e=>`${e.name}`).join("\n- ")}`);return{version:a,label:r?.label??a.label}};return Array.isArray(t)?t.map(e=>r(e,void 0)):Object.entries(t).map(([e,t])=>r(e,t))}return e.map(e=>({version:e,label:e.label}))}((0,ze.jh)(e),t)}function He(e,t){return t.alternateDocVersions[e.name]??function(e){return e.docs.find(t=>t.id===e.mainDocId)}(e)}const Ve={default:ye,localeDropdown:function({mobile:e,dropdownItemsBefore:t,dropdownItemsAfter:n,queryString:r,...a}){const o=Oe(),{i18n:{currentLocale:i,locales:l}}=(0,we.A)(),u=[...t,...l.map(t=>({label:o.getLabel(t),lang:o.getLang(t),to:o.getURL(t,{queryString:r}),target:"_self",autoAddBaseUrl:!1,className:t===i?e?"menu__link--active":"dropdown__link--active":""})),...n],d=e?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):o.getLabel(i);return(0,c.jsx)(Ae,{...a,mobile:e,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ne,{className:Pe}),d]}),items:u})},search:function({mobile:e,className:t}){return e?null:(0,c.jsx)(Me,{className:t,children:(0,c.jsx)(De,{})})},dropdown:Ae,html:function({value:e,className:t,mobile:n=!1,isDropdownItem:r=!1}){const o=r?"li":"div";return(0,c.jsx)(o,{className:(0,a.A)({navbar__item:!n&&!r,"menu__list-item":n},t),dangerouslySetInnerHTML:{__html:e}})},doc:function({docId:e,label:t,docsPluginId:n,...r}){const{activeDoc:a}=(0,ze.zK)(n),o=(0,Be.QB)(e,n),i=a?.path===o?.path;return null===o||o.unlisted&&!i?null:(0,c.jsx)(ye,{exact:!0,...r,isActive:()=>i||!!a?.sidebar&&a.sidebar===o.sidebar,label:t??o.id,to:o.path})},docSidebar:function({sidebarId:e,label:t,docsPluginId:n,...r}){const{activeDoc:a}=(0,ze.zK)(n),o=(0,Be.fW)(e,n).link;if(!o)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${e}" doesn't have anything to be linked to.`);return(0,c.jsx)(ye,{exact:!0,...r,isActive:()=>a?.sidebar===e,label:t??o.label,to:o.path})},docsVersion:function({label:e,to:t,docsPluginId:n,...r}){const a=(0,Be.Vd)(n)[0],o=e??a.label,i=t??(e=>e.docs.find(t=>t.id===e.mainDocId))(a).path;return(0,c.jsx)(ye,{...r,label:o,to:i})},docsVersionDropdown:function({mobile:e,docsPluginId:t,dropdownActiveClassDisabled:n,dropdownItemsBefore:r,dropdownItemsAfter:a,versions:o,...i}){const l=(0,Te.Hl)(e=>e.location.search),u=(0,Te.Hl)(e=>e.location.hash),d=(0,ze.zK)(t),{savePreferredVersionName:f}=(0,$e.g1)(t),p=Ue({docsPluginId:t,configs:o}),h=function({docsPluginId:e,versionItems:t}){return(0,Be.Vd)(e).map(e=>t.find(t=>t.version===e)).filter(e=>void 0!==e)[0]??t[0]}({docsPluginId:t,versionItems:p}),m=[...r,...p.map(function({version:e,label:t}){return{label:t,to:`${He(e,d).path}${l}${u}`,isActive:()=>e===d.activeVersion,onClick:()=>f(e.name)}}),...a],g=e&&m.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,y=e&&m.length>1?void 0:He(h.version,d).path;return m.length<=1?(0,c.jsx)(ye,{...i,mobile:e,label:g,to:y,isActive:n?()=>!1:void 0}):(0,c.jsx)(Ae,{...i,mobile:e,label:g,to:y,items:m,isActive:n?()=>!1:void 0})}};function We({type:e,...t}){const n=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(e,t),r=Ve[n];if(!r)throw new Error(`No NavbarItem component found for type "${e}".`);return(0,c.jsx)(r,{...t})}function Ge(){const e=(0,N.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map((t,n)=>(0,r.createElement)(We,{mobile:!0,...t,onClick:()=>e.toggle(),key:n}))})}function qe(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ye(){const e=0===(0,w.p)().navbar.items.length,t=D();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(qe,{onClick:()=>t.hide()}),t.content]})}function Ke(){const e=(0,N.M)();return function(e=!0){(0,r.useEffect)(()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"}),[e])}(e.shown),e.shouldRender?(0,c.jsx)(z,{header:(0,c.jsx)(se,{}),primaryMenu:(0,c.jsx)(Ge,{}),secondaryMenu:(0,c.jsx)(Ye,{})}):null}const Qe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Xe(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function Ze({children:e}){const{navbar:{hideOnScroll:t,style:n}}=(0,w.p)(),o=(0,N.M)(),{navbarRef:i,isNavbarVisible:l}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)(e=>{null!==e&&(o.current=e.getBoundingClientRect().height)},[]);return(0,P.Mq)(({scrollY:t},r)=>{if(!e)return;if(t<o.current)return void n(!0);if(a.current)return void(a.current=!1);const i=r?.scrollY,l=document.documentElement.scrollHeight-o.current,s=window.innerHeight;i&&t>=i?n(!1):t+s<l&&n(!0)}),(0,u.$)(t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)}),{navbarRef:i,isNavbarVisible:t}}(t);return(0,c.jsxs)("nav",{ref:i,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.A)(g.G.layout.navbar.container,"navbar","navbar--fixed-top",t&&[Qe.navbarHideable,!l&&Qe.navbarHidden],{"navbar--dark":"dark"===n,"navbar--primary":"primary"===n,"navbar-sidebar--show":o.shown}),children:[e,(0,c.jsx)(Xe,{onClick:o.toggle}),(0,c.jsx)(Ke,{})]})}var Je=n(2181);const et="right";function tt({width:e=30,height:t=30,className:n,...r}){return(0,c.jsx)("svg",{className:n,width:e,height:t,viewBox:"0 0 30 30","aria-hidden":"true",...r,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function nt(){const{toggle:e,shown:t}=(0,N.M)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(tt,{})})}const rt={colorModeToggle:"colorModeToggle_DEke"};function at({items:e}){return(0,c.jsx)(c.Fragment,{children:e.map((e,t)=>(0,c.jsx)(Je.k2,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(We,{...e})},t))})}function ot({left:e,right:t}){return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:(0,a.A)(g.G.layout.navbar.containerLeft,"navbar__items"),children:e}),(0,c.jsx)("div",{className:(0,a.A)(g.G.layout.navbar.containerRight,"navbar__items navbar__items--right"),children:t})]})}function it(){const e=(0,N.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??et)}return[e.filter(t),e.filter(e=>!t(e))]}(t),a=t.find(e=>"search"===e.type);return(0,c.jsx)(ot,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(nt,{}),(0,c.jsx)(ie,{}),(0,c.jsx)(at,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(at,{items:r}),(0,c.jsx)(ae,{className:rt.colorModeToggle}),!a&&(0,c.jsx)(Me,{children:(0,c.jsx)(De,{})})]})})}function lt(){return(0,c.jsx)(Ze,{children:(0,c.jsx)(it,{})})}function st({item:e}){const{to:t,href:n,label:r,prependBaseUrlToHref:o,className:i,...l}=e,s=(0,ce.Ay)(t),u=(0,ce.Ay)(n,{forcePrependBaseUrl:!0});return(0,c.jsxs)(ue.A,{className:(0,a.A)("footer__link-item",i),...n?{href:o?u:n}:{to:s},...l,children:[r,n&&!(0,de.A)(n)&&(0,c.jsx)(pe.A,{})]})}function ut({item:e}){return e.html?(0,c.jsx)("li",{className:(0,a.A)("footer__item",e.className),dangerouslySetInnerHTML:{__html:e.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(st,{item:e})},e.href??e.to)}function ct({column:e}){return(0,c.jsxs)("div",{className:(0,a.A)(g.G.layout.footer.column,"col footer__col",e.className),children:[(0,c.jsx)("div",{className:"footer__title",children:e.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:e.items.map((e,t)=>(0,c.jsx)(ut,{item:e},t))})]})}function dt({columns:e}){return(0,c.jsx)("div",{className:"row footer__links",children:e.map((e,t)=>(0,c.jsx)(ct,{column:e},t))})}function ft(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function pt({item:e}){return e.html?(0,c.jsx)("span",{className:(0,a.A)("footer__link-item",e.className),dangerouslySetInnerHTML:{__html:e.html}}):(0,c.jsx)(st,{item:e})}function ht({links:e}){return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:e.map((t,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(pt,{item:t}),e.length!==n+1&&(0,c.jsx)(ft,{})]},n))})})}function mt({links:e}){return function(e){return"title"in e[0]}(e)?(0,c.jsx)(dt,{columns:e}):(0,c.jsx)(ht,{links:e})}var gt=n(1122);const yt="footerLogoLink_BH7S";function bt({logo:e}){const{withBaseUrl:t}=(0,ce.hH)(),n={light:t(e.src),dark:t(e.srcDark??e.src)};return(0,c.jsx)(gt.A,{className:(0,a.A)("footer__logo",e.className),alt:e.alt,sources:n,width:e.width,height:e.height,style:e.style})}function vt({logo:e}){return e.href?(0,c.jsx)(ue.A,{href:e.href,className:yt,target:e.target,children:(0,c.jsx)(bt,{logo:e})}):(0,c.jsx)(bt,{logo:e})}function wt({copyright:e}){return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:e}})}function kt({style:e,links:t,logo:n,copyright:r}){return(0,c.jsx)("footer",{className:(0,a.A)(g.G.layout.footer.container,"footer",{"footer--dark":"dark"===e}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[t,(n||r)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[n&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:n}),r]})]})})}function St(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(kt,{style:a,links:n&&n.length>0&&(0,c.jsx)(mt,{links:n}),logo:r&&(0,c.jsx)(vt,{logo:r}),copyright:t&&(0,c.jsx)(wt,{copyright:t})})}const xt=r.memo(St),Et=(0,O.fM)([B.a,k.o,P.Tv,$e.VQ,i.Jx,function({children:e}){return(0,c.jsx)(j.y_,{children:(0,c.jsx)(N.e,{children:(0,c.jsx)(R,{children:e})})})}]);function _t({children:e}){return(0,c.jsx)(Et,{children:e})}var At=n(1107);function Ct({error:e,tryAgain:t}){return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(At.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(Je.a2,{onClick:t,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Je.bq,{error:e})})]})})})}const Tt={mainWrapper:"mainWrapper_z2l0"};function Nt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,c.jsxs)(_t,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(lt,{}),(0,c.jsx)("div",{id:d,className:(0,a.A)(g.G.layout.main.container,g.G.wrapper.main,Tt.mainWrapper,r),children:(0,c.jsx)(o.A,{fallback:e=>(0,c.jsx)(Ct,{...e}),children:t})}),!n&&(0,c.jsx)(xt,{})]})}},4054:e=>{"use strict";e.exports=JSON.parse('{"/hass.tibber_prices/user/markdown-page-9fd":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"393be207"},"/hass.tibber_prices/user/-53a":{"__comp":"1df93b7f","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"},"/hass.tibber_prices/user/-e3b":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/hass.tibber_prices/user/-0b4":{"__comp":"a7bd4aaa","__props":"a821f318"},"/hass.tibber_prices/user/-9ac":{"__comp":"a94703ab"},"/hass.tibber_prices/user/actions-bb5":{"__comp":"17896441","content":"bd0e57e2"},"/hass.tibber_prices/user/automation-examples-fbe":{"__comp":"17896441","content":"3824a626"},"/hass.tibber_prices/user/chart-examples-888":{"__comp":"17896441","content":"f5506564"},"/hass.tibber_prices/user/concepts-349":{"__comp":"17896441","content":"45a5cd1f"},"/hass.tibber_prices/user/configuration-d5d":{"__comp":"17896441","content":"9ed00105"},"/hass.tibber_prices/user/dashboard-examples-b10":{"__comp":"17896441","content":"e6f5c734"},"/hass.tibber_prices/user/dynamic-icons-53c":{"__comp":"17896441","content":"96022abb"},"/hass.tibber_prices/user/faq-992":{"__comp":"17896441","content":"0480b142"},"/hass.tibber_prices/user/glossary-6ae":{"__comp":"17896441","content":"e747ec83"},"/hass.tibber_prices/user/icon-colors-5c5":{"__comp":"17896441","content":"9c889300"},"/hass.tibber_prices/user/installation-2ab":{"__comp":"17896441","content":"3b8c55ea"},"/hass.tibber_prices/user/intro-b42":{"__comp":"17896441","content":"0e384e19"},"/hass.tibber_prices/user/period-calculation-5c4":{"__comp":"17896441","content":"0546f6b4"},"/hass.tibber_prices/user/sensors-c18":{"__comp":"17896441","content":"c357e002"},"/hass.tibber_prices/user/troubleshooting-ab5":{"__comp":"17896441","content":"9d9f8394"}}')},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540);const a="navigation-with-keyboard";function o(){(0,r.useEffect)(()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}},[])}},4146:(e,t,n)=>{"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=p(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<i.length;++g){var y=i[g];if(!(o[y]||r&&r[y]||m&&m[y]||l&&l[y])){var b=f(n,y);try{u(t,y,b)}catch(v){}}}}return t}},4164:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.d(t,{A:()=>a});const a=function(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},4363:(e,t,n)=>{"use strict";e.exports=n(2799)},4477:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],u=l+1,c=e[u];if(0>o(s,n))u<a&&0>o(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(u<a&&0>o(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,f=null,p=3,h=!1,m=!1,g=!1,y=!1,b="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,w="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function S(e){if(g=!1,k(e),!m)if(null!==r(u))m=!0,E||(E=!0,x());else{var t=r(c);null!==t&&j(S,t.startTime-e)}}var x,E=!1,_=-1,A=5,C=-1;function T(){return!!y||!(t.unstable_now()-C<A)}function N(){if(y=!1,E){var e=t.unstable_now();C=e;var n=!0;try{e:{m=!1,g&&(g=!1,v(_),_=-1),h=!0;var o=p;try{t:{for(k(e),f=r(u);null!==f&&!(f.expirationTime>e&&T());){var i=f.callback;if("function"==typeof i){f.callback=null,p=f.priorityLevel;var l=i(f.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof l){f.callback=l,k(e),n=!0;break t}f===r(u)&&a(u),k(e)}else a(u);f=r(u)}if(null!==f)n=!0;else{var s=r(c);null!==s&&j(S,s.startTime-e),n=!1}}break e}finally{f=null,p=o,h=!1}n=void 0}}finally{n?x():E=!1}}}if("function"==typeof w)x=function(){w(N)};else if("undefined"!=typeof MessageChannel){var P=new MessageChannel,O=P.port2;P.port1.onmessage=N,x=function(){O.postMessage(null)}}else x=function(){b(N,0)};function j(e,n){_=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):A=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_requestPaint=function(){y=!0},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?i+o:i:o=i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(c,e),null===r(u)&&e===r(c)&&(g?(v(_),_=-1):g=!0,j(S,o-i))):(e.sortIndex=l,n(u,e),m||h||(m=!0,E||(E=!0,x()))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},4563:(e,t,n)=>{"use strict";n.d(t,{AL:()=>c,s$:()=>d});var r=n(6540),a=n(4586),o=n(6803),i=n(9532),l=n(4848);const s=({title:e,siteTitle:t,titleDelimiter:n})=>{const r=e?.trim();return r&&r!==t?`${r} ${n} ${t}`:t},u=(0,r.createContext)(null);function c({formatter:e,children:t}){return(0,l.jsx)(u.Provider,{value:e,children:t})}function d(){const e=function(){const e=(0,r.useContext)(u);if(null===e)throw new i.dV("TitleFormatterProvider");return e}(),{siteConfig:t}=(0,a.A)(),{title:n,titleDelimiter:l}=t,{plugin:c}=(0,o.A)();return{format:t=>e({title:t,siteTitle:n,titleDelimiter:l,plugin:c,defaultFormatter:s})}}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),a=n(8193);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l({desktopBreakpoint:e=i}={}){const[t,n]=(0,r.useState)(()=>"ssr");return(0,r.useEffect)(()=>{function t(){n(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(e))}return t(),window.addEventListener("resize",t),()=>{window.removeEventListener("resize",t)}},[e]),t}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},4625:(e,t,n)=>{"use strict";n.d(t,{I9:()=>d,Kd:()=>c,N_:()=>y,k2:()=>w});var r=n(6347),a=n(2892),o=n(6540),i=n(1513),l=n(8168),s=n(8587),u=n(1561),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.zR)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.TM)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var f=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.yJ)(e,null,null,t):e},h=function(e){return e},m=o.forwardRef;void 0===m&&(m=h);var g=m(function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.A)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.A)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=h!==m&&t||n,o.createElement("a",c)});var y=m(function(e,t){var n=e.component,a=void 0===n?g:n,c=e.replace,d=e.to,y=e.innerRef,b=(0,s.A)(e,["component","replace","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,function(e){e||(0,u.A)(!1);var n=e.history,r=p(f(d,e.location),e.location),s=r?n.createHref(r):"",g=(0,l.A)({},b,{href:s,navigate:function(){var t=f(d,e.location),r=(0,i.AO)(e.location)===(0,i.AO)(p(t));(c||r?n.replace:n.push)(t)}});return h!==m?g.ref=t||y:g.innerRef=y,o.createElement(a,g)})}),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var w=v(function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,d=e.activeStyle,h=e.className,m=e.exact,g=e.isActive,w=e.location,k=e.sensitive,S=e.strict,x=e.style,E=e.to,_=e.innerRef,A=(0,s.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,function(e){e||(0,u.A)(!1);var n=w||e.location,i=p(f(E,n),n),s=i.pathname,C=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),T=C?(0,r.B6)(n.pathname,{path:C,exact:m,sensitive:k,strict:S}):null,N=!!(g?g(T,n):T),P="function"==typeof h?h(N):h,O="function"==typeof x?x(N):x;N&&(P=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter(function(e){return e}).join(" ")}(P,c),O=(0,l.A)({},O,d));var j=(0,l.A)({"aria-current":N&&a||null,className:P,style:O,to:i},A);return b!==v?j.ref=t||_:j.innerRef=_,o.createElement(y,j)})})},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},4718:(e,t,n)=>{"use strict";n.d(t,{Nr:()=>f,w8:()=>m,B5:()=>x,Vd:()=>w,QB:()=>S,fW:()=>k,OF:()=>v,Y:()=>y});var r=n(6540),a=n(6347),o=n(2831),i=n(8295),l=n(9169);function s(e){return Array.from(new Set(e))}var u=n(3886),c=n(3025),d=n(609);function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const p=(e,t)=>void 0!==e&&(0,l.ys)(e,t),h=(e,t)=>e.some(e=>m(e,t));function m(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||h(e.items,t))}function g(e,t){switch(e.type){case"category":return m(e,t)||void 0!==e.href&&!e.linkUnlisted||e.items.some(e=>g(e,t));case"link":return!e.unlisted||m(e,t);default:return!0}}function y(e,t){return(0,r.useMemo)(()=>e.filter(e=>g(e,t)),[e,t])}function b({sidebarItems:e,pathname:t,onlyCategories:n=!1}){const r=[];return function e(a){for(const o of a)if("category"===o.type&&((0,l.ys)(o.href,t)||e(o.items))||"link"===o.type&&(0,l.ys)(o.href,t)){return n&&"category"!==o.type||r.unshift(o),!0}return!1}(e),r}function v(){const e=(0,d.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?b({sidebarItems:e.items,pathname:t}):null}function w(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,u.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)(()=>s([t,n,a].filter(Boolean)),[t,n,a])}function k(e,t){const n=w(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.sidebars?Object.entries(e.sidebars):[]),r=t.find(t=>t[0]===e);if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map(e=>e.name).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map(e=>e[0]).join("\n- ")}`);return r[1]},[e,n])}function S(e,t){const n=w(t);return(0,r.useMemo)(()=>{const t=n.flatMap(e=>e.docs),r=t.find(t=>t.id===e);if(!r){if(n.flatMap(e=>e.draftIds).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map(e=>e.name).join(", ")}".\nAvailable doc ids are:\n- ${s(t.map(e=>e.id)).join("\n- ")}`)}return r},[e,n])}function x({route:e}){const t=(0,a.zy)(),n=(0,c.r)(),r=e.routes,i=r.find(e=>(0,a.B6)(t.pathname,e));if(!i)return null;const l=i.sidebar,s=l?n.docsSidebars[l]:void 0;return{docElement:(0,o.v)(r),sidebarName:l,sidebarItems:s}}},4784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Tibber Prices Integration",tagline:"Custom Home Assistant integration for Tibber electricity prices",favicon:"img/logo.svg",future:{v4:{removeLegacyPostBuildHeadAttribute:!0,useCssCascadeLayers:!0},experimental_faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1,rspackPersistentCache:!1,ssgWorkerThreads:!1},experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},url:"https://jpawlowski.github.io",baseUrl:"/hass.tibber_prices/user/",organizationName:"jpawlowski",projectName:"hass.tibber_prices",deploymentBranch:"gh-pages",trailingSlash:!1,onBrokenLinks:"warn",markdown:{mermaid:!0,hooks:{onBrokenMarkdownLinks:"warn",onBrokenMarkdownImages:"throw"},format:"mdx",emoji:!0,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}},themes:["@docusaurus/theme-mermaid"],plugins:["docusaurus-lunr-search"],i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},headTags:[{tagName:"link",attributes:{rel:"preconnect",href:"https://fonts.googleapis.com"}},{tagName:"link",attributes:{rel:"preconnect",href:"https://fonts.gstatic.com",crossorigin:"anonymous"}},{tagName:"link",attributes:{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap"}}],presets:[["classic",{docs:{routeBasePath:"/",sidebarPath:"./sidebars.ts",showLastUpdateTime:!0,versions:{current:{label:"Next \ud83d\udea7",banner:"unreleased",badge:!0}}},blog:!1,theme:{customCss:"./src/css/custom.css"}}]],themeConfig:{mermaid:{theme:{light:"base",dark:"dark"},options:{themeVariables:{primaryColor:"#e6f7ff",primaryTextColor:"#1a1a1a",primaryBorderColor:"#00b9e7",lineColor:"#00b9e7",secondaryColor:"#e6fff5",secondaryTextColor:"#1a1a1a",secondaryBorderColor:"#00ffa3",tertiaryColor:"#fff9e6",tertiaryTextColor:"#1a1a1a",tertiaryBorderColor:"#ffb800",noteBkgColor:"#e6f7ff",noteTextColor:"#1a1a1a",noteBorderColor:"#00b9e7",mainBkg:"#ffffff",nodeBorder:"#00b9e7",clusterBkg:"#f0f9ff",clusterBorder:"#00b9e7",fontFamily:"Inter, system-ui, -apple-system, sans-serif",fontSize:"14px"}}},image:"img/social-card.png",colorMode:{respectPrefersColorScheme:!0,defaultMode:"light",disableSwitch:!1},docs:{sidebar:{hideable:!0,autoCollapseCategories:!0},versionPersistence:"localStorage"},navbar:{title:"Tibber Prices HA",logo:{alt:"Tibber Prices Integration Logo",src:"img/logo.svg"},items:[{to:"/intro",label:"User Guide",position:"left"},{href:"https://jpawlowski.github.io/hass.tibber_prices/developer/",label:"Developer Docs",position:"left"},{type:"docsVersionDropdown",position:"right",dropdownActiveClassDisabled:!0,dropdownItemsBefore:[],dropdownItemsAfter:[]},{href:"https://github.com/jpawlowski/hass.tibber_prices",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Documentation",items:[{label:"User Guide",to:"/intro"},{label:"Developer Guide",href:"https://jpawlowski.github.io/hass.tibber_prices/developer/"}]},{title:"Community",items:[{label:"GitHub Issues",href:"https://github.com/jpawlowski/hass.tibber_prices/issues"},{label:"Home Assistant Community",href:"https://community.home-assistant.io/"}]},{title:"More",items:[{label:"GitHub",href:"https://github.com/jpawlowski/hass.tibber_prices"},{label:"Release Notes",href:"https://github.com/jpawlowski/hass.tibber_prices/releases"}]}],copyright:"Not affiliated with Tibber AS. Community-maintained custom integration. Built with Docusaurus."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:["bash","yaml","json"],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},blog:{sidebar:{groupByYear:!0}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},scripts:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},4848:(e,t,n)=>{"use strict";e.exports=n(9698)},5041:(e,t,n)=>{"use strict";n.d(t,{M:()=>m,o:()=>h});var r=n(6540),a=n(2303),o=n(679),i=n(9532),l=n(6342),s=n(4848);const u=(0,o.Wf)("docusaurus.announcement.dismiss"),c=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===u.get(),f=e=>u.set(String(e)),p=r.createContext(null);function h({children:e}){const t=function(){const{announcementBar:e}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)(()=>!!t&&d());(0,r.useEffect)(()=>{o(d())},[]);const i=(0,r.useCallback)(()=>{f(!0),o(!0)},[]);return(0,r.useEffect)(()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&f(!1),!r&&d()||o(!1)},[e]),(0,r.useMemo)(()=>({isActive:!!e&&!n,close:i}),[e,n,i])}();return(0,s.jsx)(p.Provider,{value:t,children:e})}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(9532);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)(()=>{n&&t!==n&&i({location:t,previousLocation:n})},[i,t,n])}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,{...e})}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>k,a:()=>w});var r=n(6540),a=n(2303),o=n(9532),i=n(679),l=n(6342),s=n(4848);function u(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function c(e){return function(e,t){const n=window.matchMedia(e);return n.addEventListener("change",t),()=>n.removeEventListener("change",t)}("(prefers-color-scheme: dark)",()=>e(u()))}const d=r.createContext(void 0),f=(0,i.Wf)("theme"),p="system",h=e=>"dark"===e?"dark":"light",m=e=>null===e||e===p?null:h(e),g={get:()=>h(document.documentElement.getAttribute("data-theme")),set:e=>{document.documentElement.setAttribute("data-theme",h(e))}},y={get:()=>m(document.documentElement.getAttribute("data-theme-choice")),set:e=>{document.documentElement.setAttribute("data-theme-choice",m(e)??p)}},b=e=>{null===e?f.del():f.set(h(e))};function v(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),{colorMode:o,setColorModeState:i,colorModeChoice:s,setColorModeChoiceState:d}=function(){const{colorMode:{defaultMode:e}}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)(t?g.get():e),[i,s]=(0,r.useState)(t?y.get():null);return(0,r.useEffect)(()=>{o(g.get()),s(y.get())},[]),{colorMode:n,setColorModeState:o,colorModeChoice:i,setColorModeChoiceState:s}}();(0,r.useEffect)(()=>{t&&f.del()},[t]);const p=(0,r.useCallback)((t,r={})=>{const{persist:a=!0}=r;if(null===t){const t=n?u():e;g.set(t),i(t),y.set(null),d(null)}else g.set(t),y.set(t),i(t),d(t);a&&b(t)},[i,d,n,e]);return(0,r.useEffect)(()=>f.listen(e=>{p(m(e.newValue))}),[p]),(0,r.useEffect)(()=>{if(null===s&&n)return c(e=>{i(e),g.set(e)})},[n,s,i]),(0,r.useMemo)(()=>({colorMode:o,colorModeChoice:s,setColorMode:p,get isDarkTheme(){return"dark"===o},setLightTheme(){p("light")},setDarkTheme(){p("dark")}}),[o,s,p])}function w({children:e}){const t=v();return(0,s.jsx)(d.Provider,{value:t,children:e})}function k(){const e=(0,r.useContext)(d);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5302:(e,t,n)=>{var r=n(4634);e.exports=m,e.exports.parse=o,e.exports.compile=function(e,t){return u(o(e,t),t)},e.exports.tokensToFunction=u,e.exports.tokensToRegExp=h;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,l=0,s="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var c=n[0],f=n[1],p=n.index;if(s+=e.slice(l,p),l=p+c.length,f)s+=f[1];else{var h=e[l],m=n[2],g=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=m&&null!=h&&h!==m,S="+"===v||"*"===v,x="?"===v||"*"===v,E=m||u,_=y||b,A=m||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:g||o++,prefix:m||"",delimiter:E,optional:x,repeat:S,partial:k,asterisk:!!w,pattern:_?d(_):w?".*":i(E,A)})}}return l<e.length&&(s+=e.substr(l)),s&&r.push(s),r}function i(e,t){return!t||t.indexOf(e)>-1?"[^"+c(e)+"]+?":c(t)+"|(?:(?!"+c(t)+")[^"+c(e)+"])+?"}function l(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function u(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",p(t)));return function(t,a){for(var o="",i=t||{},u=(a||{}).pretty?l:encodeURIComponent,c=0;c<e.length;c++){var d=e[c];if("string"!=typeof d){var f,p=i[d.name];if(null==p){if(d.optional){d.partial&&(o+=d.prefix);continue}throw new TypeError('Expected "'+d.name+'" to be defined')}if(r(p)){if(!d.repeat)throw new TypeError('Expected "'+d.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(d.optional)continue;throw new TypeError('Expected "'+d.name+'" to not be empty')}for(var h=0;h<p.length;h++){if(f=u(p[h]),!n[c].test(f))throw new TypeError('Expected all "'+d.name+'" to match "'+d.pattern+'", but received `'+JSON.stringify(f)+"`");o+=(0===h?d.prefix:d.delimiter)+f}}else{if(f=d.asterisk?s(p):u(p),!n[c].test(f))throw new TypeError('Expected "'+d.name+'" to match "'+d.pattern+'", but received "'+f+'"');o+=d.prefix+f}}else o+=d}return o}}function c(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function d(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function f(e,t){return e.keys=t,e}function p(e){return e&&e.sensitive?"":"i"}function h(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var s=e[l];if("string"==typeof s)i+=c(s);else{var u=c(s.prefix),d="(?:"+s.pattern+")";t.push(s),s.repeat&&(d+="(?:"+u+d+")*"),i+=d=s.optional?s.partial?u+"("+d+")?":"(?:"+u+"("+d+"))?":u+"("+d+")"}}var h=c(n.delimiter||"/"),m=i.slice(-h.length)===h;return a||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&m?"":"(?="+h+"|$)",f(new RegExp("^"+i,p(n)),t)}function m(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return f(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(m(e[a],t,n).source);return f(new RegExp("(?:"+r.join("|")+")",p(n)),t)}(e,t,n):function(e,t,n){return h(o(e,n),t,n)}(e,t,n)}},5338:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(1247)},5500:(e,t,n)=>{"use strict";n.d(t,{Jx:()=>y,be:()=>h,e3:()=>g});var r=n(6540),a=n(4164),o=n(5260),i=n(6803),l=n(6025),s=n(4563),u=n(4848);function c({title:e}){const t=(0,s.s$)().format(e);return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("title",{children:t}),(0,u.jsx)("meta",{property:"og:title",content:t})]})}function d({description:e}){return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("meta",{name:"description",content:e}),(0,u.jsx)("meta",{property:"og:description",content:e})]})}function f({image:e}){const{withBaseUrl:t}=(0,l.hH)(),n=t(e,{absolute:!0});return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("meta",{property:"og:image",content:n}),(0,u.jsx)("meta",{name:"twitter:image",content:n})]})}function p({keywords:e}){return(0,u.jsx)(o.A,{children:(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(e)?e.join(","):e})})}function h({title:e,description:t,keywords:n,image:r,children:a}){return(0,u.jsxs)(u.Fragment,{children:[e&&(0,u.jsx)(c,{title:e}),t&&(0,u.jsx)(d,{description:t}),n&&(0,u.jsx)(p,{keywords:n}),r&&(0,u.jsx)(f,{image:r}),a&&(0,u.jsx)(o.A,{children:a})]})}const m=r.createContext(void 0);function g({className:e,children:t}){const n=r.useContext(m),i=(0,a.A)(n,e);return(0,u.jsxs)(m.Provider,{value:i,children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("html",{className:i})}),t]})}function y({children:e}){const t=(0,i.A)(),n=`plugin-${t.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const r=`plugin-id-${t.plugin.id}`;return(0,u.jsx)(g,{className:(0,a.A)(n,r),children:e})}},5556:(e,t,n)=>{e.exports=n(2694)()},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(6540),a=n(9532),o=n(4848);const i=r.createContext(null);function l({children:e}){const t=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:t,children:e})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u({component:e,props:t}){const n=(0,r.useContext)(i);if(!n)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,o]=n,l=(0,a.Be)(t);return(0,r.useEffect)(()=>{o({component:e,props:l})},[o,e,l]),(0,r.useEffect)(()=>()=>o({component:null,props:null}),[o]),null}},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l(function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout(function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},6025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)((e,r)=>function({siteUrl:e,baseUrl:t,url:n,options:{forcePrependBaseUrl:r=!1,absolute:a=!1}={},router:i}){if(!n||n.startsWith("#")||(0,o.z)(n))return n;if("hash"===i)return n.startsWith("/")?`.${n}`:`./${n}`;if(r)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return a?e+l:l}({siteUrl:n,baseUrl:t,url:e,options:r,router:i}),[n,t,i]);return{withBaseUrl:l}}function l(e,t={}){const{withBaseUrl:n}=i();return n(e,t)}},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i({children:e}){const[t,n]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{n(!0)},[]),(0,a.jsx)(o.Provider,{value:t,children:e})}},6134:(e,t,n)=>{"use strict";var r=n(1765),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t,o=globalThis.Prism;globalThis.Prism=e,r.forEach(e=>{"php"===e&&n(9700),n(3907)(`./prism-${e}`)}),delete globalThis.Prism,void 0!==o&&(globalThis.Prism=e)}(r.My)},6221:(e,t,n)=>{"use strict";var r=n(6540);function a(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(){}var i={d:{f:o,r:function(){throw Error(a(522))},D:o,C:o,L:o,m:o,X:o,S:o,M:o},p:0,findDOMNode:null},l=Symbol.for("react.portal");var s=r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(e,t){return"font"===e?"":"string"==typeof t?"use-credentials"===t?t:"":void 0}t.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!t||1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType)throw Error(a(299));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:l,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.flushSync=function(e){var t=s.T,n=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=n,i.d.f()}},t.preconnect=function(e,t){"string"==typeof e&&(t?t="string"==typeof(t=t.crossOrigin)?"use-credentials"===t?t:"":void 0:t=null,i.d.C(e,t))},t.prefetchDNS=function(e){"string"==typeof e&&i.d.D(e)},t.preinit=function(e,t){if("string"==typeof e&&t&&"string"==typeof t.as){var n=t.as,r=u(n,t.crossOrigin),a="string"==typeof t.integrity?t.integrity:void 0,o="string"==typeof t.fetchPriority?t.fetchPriority:void 0;"style"===n?i.d.S(e,"string"==typeof t.precedence?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):"script"===n&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:"string"==typeof t.nonce?t.nonce:void 0})}},t.preinitModule=function(e,t){if("string"==typeof e)if("object"==typeof t&&null!==t){if(null==t.as||"script"===t.as){var n=u(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0})}}else null==t&&i.d.M(e)},t.preload=function(e,t){if("string"==typeof e&&"object"==typeof t&&null!==t&&"string"==typeof t.as){var n=t.as,r=u(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,type:"string"==typeof t.type?t.type:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0,referrerPolicy:"string"==typeof t.referrerPolicy?t.referrerPolicy:void 0,imageSrcSet:"string"==typeof t.imageSrcSet?t.imageSrcSet:void 0,imageSizes:"string"==typeof t.imageSizes?t.imageSizes:void 0,media:"string"==typeof t.media?t.media:void 0})}},t.preloadModule=function(e,t){if("string"==typeof e)if(t){var n=u(t.as,t.crossOrigin);i.d.m(e,{as:"string"==typeof t.as&&"script"!==t.as?t.as:void 0,crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0})}else i.d.m(e)},t.requestFormReset=function(e){i.d.r(e)},t.unstable_batchedUpdates=function(e,t){return e(t)},t.useFormState=function(e,t,n){return s.H.useFormState(e,t,n)},t.useFormStatus=function(){return s.H.useHostTransitionStatus()},t.version="19.2.1"},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate({location:e,previousLocation:t}){if(t&&e.pathname!==t.pathname){const e=window.setTimeout(()=>{a().start()},200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},6347:(e,t,n)=>{"use strict";n.d(t,{B6:()=>x,Ix:()=>v,W6:()=>j,XZ:()=>b,dO:()=>P,qh:()=>E,zy:()=>L});var r=n(2892),a=n(6540),o=n(5556),i=n.n(o),l=n(1513),s=n(1561),u=n(8168),c=n(5302),d=n.n(c),f=(n(4363),n(8587)),p=(n(4146),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:{};var m=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter(function(t){return t!==e})},get:function(){return n},set:function(e,t){n=e,r.forEach(function(e){return e(n,t)})}}),t}(0,r.A)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!==((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=m();return t.displayName=e,t},y=g("Router-History"),b=g("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen(function(e){n._pendingLocation=e})),n}(0,r.A)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen(function(t){e._isMounted&&e.setState({location:t})})),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,S=0;function x(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce(function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return S<k&&(r[e]=o,S++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce(function(e,t,n){return e[t.name]=f[n],e},{})}},null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,function(t){t||(0,s.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?x(n.pathname,e.props):t.match,o=(0,u.A)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)})},t}(a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function A(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.A)({},t,{pathname:t.pathname.substr(n.length)})}function C(e){return"string"==typeof e?e:(0,l.AO)(e)}function T(e){return function(){(0,s.A)(!1)}}function N(){}a.Component;var P=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,function(t){t||(0,s.A)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?x(o.pathname,(0,u.A)({},e.props,{path:i})):t.match}}),r?a.cloneElement(n,{location:o,computedMatch:r}):null})},t}(a.Component);var O=a.useContext;function j(){return O(y)}function L(){return O(b).location}},6540:(e,t,n)=>{"use strict";e.exports=n(9869)},6588:(e,t,n)=>{"use strict";n.d(t,{P_:()=>i,kh:()=>o});var r=n(4586),a=n(7065);function o(e,t={}){const n=function(){const{globalData:e}=(0,r.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t=a.W,n={}){const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6803:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(3102);function o(){const e=r.useContext(a.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach(([n,o])=>{const i=a?`${a}.${n}`:n;r(o)?e(o,i):t[i]=o})}(e),t}},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>f});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/hass.tibber_prices/user/","versions":[{"name":"current","label":"Next \ud83d\udea7","isLast":true,"path":"/hass.tibber_prices/user/","mainDocId":"intro","docs":[{"id":"actions","path":"/hass.tibber_prices/user/actions","sidebar":"tutorialSidebar"},{"id":"automation-examples","path":"/hass.tibber_prices/user/automation-examples","sidebar":"tutorialSidebar"},{"id":"chart-examples","path":"/hass.tibber_prices/user/chart-examples","sidebar":"tutorialSidebar"},{"id":"concepts","path":"/hass.tibber_prices/user/concepts","sidebar":"tutorialSidebar"},{"id":"configuration","path":"/hass.tibber_prices/user/configuration","sidebar":"tutorialSidebar"},{"id":"dashboard-examples","path":"/hass.tibber_prices/user/dashboard-examples","sidebar":"tutorialSidebar"},{"id":"dynamic-icons","path":"/hass.tibber_prices/user/dynamic-icons","sidebar":"tutorialSidebar"},{"id":"faq","path":"/hass.tibber_prices/user/faq","sidebar":"tutorialSidebar"},{"id":"glossary","path":"/hass.tibber_prices/user/glossary","sidebar":"tutorialSidebar"},{"id":"icon-colors","path":"/hass.tibber_prices/user/icon-colors","sidebar":"tutorialSidebar"},{"id":"installation","path":"/hass.tibber_prices/user/installation","sidebar":"tutorialSidebar"},{"id":"intro","path":"/hass.tibber_prices/user/intro","sidebar":"tutorialSidebar"},{"id":"period-calculation","path":"/hass.tibber_prices/user/period-calculation","sidebar":"tutorialSidebar"},{"id":"sensors","path":"/hass.tibber_prices/user/sensors","sidebar":"tutorialSidebar"},{"id":"troubleshooting","path":"/hass.tibber_prices/user/troubleshooting","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/hass.tibber_prices/user/intro","label":"intro"}}}}],"breadcrumbs":true}},"docusaurus-lunr-search":{"default":{"fileNames":{"searchDoc":"search-doc-1764985265728.json","lunrIndex":"lunr-index-1764985265728.json"}}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en","translate":false,"url":"https://jpawlowski.github.io","baseUrl":"/hass.tibber_prices/user/"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.9.2","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-css-cascade-layers":{"type":"package","name":"@docusaurus/plugin-css-cascade-layers","version":"3.9.2"},"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.9.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.9.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.9.2"},"docusaurus-plugin-svgr":{"type":"package","name":"@docusaurus/plugin-svgr","version":"3.9.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.9.2"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"3.6.0"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.9.2"}}}');var u=n(4848);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function f({children:e}){return(0,u.jsx)(d.Provider,{value:c,children:e})}},7022:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism)},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},7485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,Hl:()=>l,jy:()=>s});var r=n(6540),a=n(6347),o=n(9532);function i(e){!function(e){const t=(0,a.W6)(),n=(0,o._q)(e);(0,r.useEffect)(()=>t.block((e,t)=>n(e,t)),[t,n])}((t,n)=>{if("POP"===n)return e(t,n)})}function l(e){const t=(0,a.W6)();return(0,r.useSyncExternalStore)(t.listen,()=>e(t),()=>e({...t,location:{...t.location,search:"",hash:"",state:void 0}}))}function s(e,t){const n=function(e,t){const n=new URLSearchParams;for(const r of e)for(const[e,a]of r.entries())"append"===t?n.append(e,a):n.set(e,a);return n}(e.map(e=>new URLSearchParams(e??"")),t),r=n.toString();return r?`?${r}`:r}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var r=n(6540),a=n(8193),o=n(5260),i=n(440),l=n(4042),s=n(3102),u=n(4848);function c({error:e,tryAgain:t}){return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:t,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(d,{error:e})]})}function d({error:e}){const t=(0,i.rA)(e).map(e=>e.message).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:t})}function f({children:e}){return(0,u.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:e})}function p({error:e,tryAgain:t}){return(0,u.jsx)(f,{children:(0,u.jsxs)(m,{fallback:()=>(0,u.jsx)(c,{error:e,tryAgain:t}),children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(l.A,{children:(0,u.jsx)(c,{error:e,tryAgain:t})})]})})}const h=e=>(0,u.jsx)(p,{...e});class m extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??h)(e)}return e??null}}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:e=>`theme-admonition-${e}`},announcementBar:{container:"theme-announcement-bar"},tabs:{container:"theme-tabs-container"},layout:{navbar:{container:"theme-layout-navbar",containerLeft:"theme-layout-navbar-left",containerRight:"theme-layout-navbar-right",mobileSidebar:{container:"theme-layout-navbar-sidebar",panel:"theme-layout-navbar-sidebar-panel"}},main:{container:"theme-layout-main"},footer:{container:"theme-layout-footer",column:"theme-layout-footer-column"}},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},8168:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},8295:(e,t,n)=>{"use strict";n.d(t,{zK:()=>p,vT:()=>c,Gy:()=>s,HW:()=>h,ht:()=>u,r7:()=>f,jh:()=>d});var r=n(6347),a=n(6588);const o=e=>e.versions.find(e=>e.isLast);function i(e,t){const n=function(e,t){return[...e.versions].sort((e,t)=>e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0).find(e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1}))}(e,t),a=n?.docs.find(e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1}));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach(e=>{e.docs.forEach(r=>{r.id===t&&(n[e.name]=r)})}),n}(a.id):{}}}const l={},s=()=>(0,a.kh)("docusaurus-plugin-content-docs")??l,u=e=>{try{return(0,a.P_)("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function c(e={}){const t=s(),{pathname:n}=(0,r.zy)();return function(e,t,n={}){const a=Object.entries(e).sort((e,t)=>t[1].path.localeCompare(e[1].path)).find(([,e])=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map(e=>e.path).join(", ")}`);return o}(t,n,e)}function d(e){return u(e).versions}function f(e){const t=u(e);return o(t)}function p(e){const t=u(e),{pathname:n}=(0,r.zy)();return i(t,n)}function h(e){const t=u(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"0480b142":[()=>Promise.all([n.e(2076),n.e(8070)]).then(n.bind(n,7208)),"@site/docs/faq.md",7208],"0546f6b4":[()=>Promise.all([n.e(2076),n.e(406)]).then(n.bind(n,8171)),"@site/docs/period-calculation.md",8171],"0e384e19":[()=>Promise.all([n.e(2076),n.e(3976)]).then(n.bind(n,2053)),"@site/docs/intro.md",2053],17896441:[()=>Promise.all([n.e(1869),n.e(2076),n.e(8525),n.e(8401)]).then(n.bind(n,4552)),"@theme/DocItem",4552],"1df93b7f":[()=>Promise.all([n.e(1869),n.e(4583)]).then(n.bind(n,8198)),"@site/src/pages/index.tsx",8198],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(2076),n.e(8525),n.e(6061)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"3824a626":[()=>Promise.all([n.e(2076),n.e(1945)]).then(n.bind(n,2283)),"@site/docs/automation-examples.md",2283],"393be207":[()=>Promise.all([n.e(2076),n.e(4134)]).then(n.bind(n,1943)),"@site/src/pages/markdown-page.md",1943],"3b8c55ea":[()=>Promise.all([n.e(2076),n.e(6803)]).then(n.bind(n,7248)),"@site/docs/installation.md",7248],"45a5cd1f":[()=>Promise.all([n.e(2076),n.e(4e3)]).then(n.bind(n,7515)),"@site/docs/concepts.md",7515],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"96022abb":[()=>Promise.all([n.e(2076),n.e(1887)]).then(n.bind(n,4744)),"@site/docs/dynamic-icons.md",4744],"9c889300":[()=>Promise.all([n.e(2076),n.e(9423)]).then(n.bind(n,8438)),"@site/docs/icon-colors.md",8438],"9d9f8394":[()=>Promise.all([n.e(2076),n.e(9013)]).then(n.bind(n,7309)),"@site/docs/troubleshooting.md",7309],"9ed00105":[()=>Promise.all([n.e(2076),n.e(3873)]).then(n.bind(n,8633)),"@site/docs/configuration.md",8633],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,1723)),"@theme/DocVersionRoot",1723],a821f318:[()=>n.e(5433).then(n.t.bind(n,5561,19)),"@generated/docusaurus-plugin-content-docs/default/p/hass-tibber-prices-user-413.json",5561],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,8115)),"@theme/DocRoot",8115],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],bd0e57e2:[()=>Promise.all([n.e(2076),n.e(4305)]).then(n.bind(n,3133)),"@site/docs/actions.md",3133],c357e002:[()=>Promise.all([n.e(2076),n.e(2764)]).then(n.bind(n,9338)),"@site/docs/sensors.md",9338],e6f5c734:[()=>Promise.all([n.e(2076),n.e(4078)]).then(n.bind(n,3785)),"@site/docs/dashboard-examples.md",3785],e747ec83:[()=>Promise.all([n.e(2076),n.e(7051)]).then(n.bind(n,3583)),"@site/docs/glossary.md",3583],f5506564:[()=>Promise.all([n.e(2076),n.e(5902)]).then(n.bind(n,8019)),"@site/docs/chart-examples.md",8019]};var l=n(4848);function s({error:e,retry:t,pastDelay:n}){return e?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(e)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:t,children:"Retry"})})]}):n?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(6921),c=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},f=[],p=[],h=(0,u.A)(r);return Object.entries(h).forEach(([e,t])=>{const n=i[t];n&&(d[e]=n[0],f.push(n[1]),p.push(n[2]))}),a().Map({loading:s,loader:d,modules:f,webpack:()=>p,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach(([t,n])=>{const r=n.default;if(!r)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof r&&"function"!=typeof r||Object.keys(n).filter(e=>"default"!==e).forEach(e=>{r[e]=n[e]});let o=a;const i=t.split(".");i.slice(0,-1).forEach(e=>{o=o[e]}),o[i[i.length-1]]=r});const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const f=[{path:"/hass.tibber_prices/user/markdown-page",component:d("/hass.tibber_prices/user/markdown-page","9fd"),exact:!0},{path:"/hass.tibber_prices/user/",component:d("/hass.tibber_prices/user/","53a"),exact:!0},{path:"/hass.tibber_prices/user/",component:d("/hass.tibber_prices/user/","e3b"),routes:[{path:"/hass.tibber_prices/user/",component:d("/hass.tibber_prices/user/","0b4"),routes:[{path:"/hass.tibber_prices/user/",component:d("/hass.tibber_prices/user/","9ac"),routes:[{path:"/hass.tibber_prices/user/actions",component:d("/hass.tibber_prices/user/actions","bb5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/automation-examples",component:d("/hass.tibber_prices/user/automation-examples","fbe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/chart-examples",component:d("/hass.tibber_prices/user/chart-examples","888"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/concepts",component:d("/hass.tibber_prices/user/concepts","349"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/configuration",component:d("/hass.tibber_prices/user/configuration","d5d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/dashboard-examples",component:d("/hass.tibber_prices/user/dashboard-examples","b10"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/dynamic-icons",component:d("/hass.tibber_prices/user/dynamic-icons","53c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/faq",component:d("/hass.tibber_prices/user/faq","992"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/glossary",component:d("/hass.tibber_prices/user/glossary","6ae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/icon-colors",component:d("/hass.tibber_prices/user/icon-colors","5c5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/installation",component:d("/hass.tibber_prices/user/installation","2ab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/intro",component:d("/hass.tibber_prices/user/intro","b42"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/period-calculation",component:d("/hass.tibber_prices/user/period-calculation","5c4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/sensors",component:d("/hass.tibber_prices/user/sensors","c18"),exact:!0,sidebar:"tutorialSidebar"},{path:"/hass.tibber_prices/user/troubleshooting",component:d("/hass.tibber_prices/user/troubleshooting","ab5"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"*",component:d("*")}]},8587:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},8600:(e,t,n)=>{"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),l=n(4784),s=n(8193);const u=[n(3001),n(119),n(6134),n(6294),n(1043)];var c=n(8328),d=n(6347),f=n(2831),p=n(4848);function h({children:e}){return(0,p.jsx)(p.Fragment,{children:e})}var m=n(4563);const g=e=>e.defaultFormatter(e);function y({children:e}){return(0,p.jsx)(m.AL,{formatter:g,children:e})}function b({children:e}){return(0,p.jsx)(y,{children:e})}var v=n(5260),w=n(4586),k=n(6025),S=n(6342),x=n(5500),E=n(2131),_=n(4090);var A=n(440),C=n(1463);function T(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,w.A)(),r=(0,E.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(v.A,{children:[Object.entries(n).map(([e,{htmlLang:t}])=>(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:e,fullyQualified:!0}),hrefLang:t},e)),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter(e=>a!==e.htmlLang).map(e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`))]})}function N({permalink:e}){const{siteConfig:{url:t}}=(0,w.A)(),n=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,w.A)(),{pathname:r}=(0,d.zy)();return e+(0,A.Ks)((0,k.Ay)(r),{trailingSlash:n,baseUrl:t})}(),r=e?`${t}${e}`:n;return(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:r}),(0,p.jsx)("link",{rel:"canonical",href:r})]})}function P(){const{i18n:{currentLocale:e}}=(0,w.A)(),{metadata:t,image:n}=(0,S.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:_.w})]}),n&&(0,p.jsx)(x.be,{image:n}),(0,p.jsx)(N,{}),(0,p.jsx)(T,{}),(0,p.jsx)(C.A,{tag:"default",locale:e}),(0,p.jsx)(v.A,{children:t.map((e,t)=>(0,p.jsx)("meta",{...e},t))})]})}const O=new Map;var j=n(6125),L=n(6988),R=n(205);function I(e,...t){const n=u.map(n=>{const r=n.default?.[e]??n[e];return r?.(...t)});return()=>n.forEach(e=>e?.())}const D=function({children:e,location:t,previousLocation:n}){return(0,R.A)(()=>{n!==t&&(!function({location:e,previousLocation:t}){if(!t)return;const n=e.pathname===t.pathname,r=e.hash===t.hash,a=e.search===t.search;if(n&&r&&!a)return;const{hash:o}=e;if(o){const e=decodeURIComponent(o.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:t,previousLocation:n}),I("onRouteDidUpdate",{previousLocation:n,location:t}))},[n,t]),e};function F(e){const t=Array.from(new Set([e,decodeURI(e)])).map(e=>(0,f.u)(c.A,e)).flat();return Promise.all(t.map(e=>e.route.component.preload?.()))}class M extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?I("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=I("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),F(n.pathname).then(()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})}).catch(e=>{console.warn(e),window.location.reload()}),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(D,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(d.qh,{location:t,render:()=>e})})}}const z=M,B="__docusaurus-base-url-issue-banner-suggestion-container";function $(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '__docusaurus-base-url-issue-banner-container';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${B}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${B}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function U(){const{siteConfig:{baseUrl:e}}=(0,w.A)();return(0,p.jsx)(p.Fragment,{children:!s.A.canUseDOM&&(0,p.jsx)(v.A,{children:(0,p.jsx)("script",{children:$(e)})})})}function H(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,w.A)(),{pathname:n}=(0,d.zy)();return t&&n===e?(0,p.jsx)(U,{}):null}function V(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:a}}=(0,w.A)(),o=(0,k.Ay)(e),{htmlLang:i,direction:l}=a[r];return(0,p.jsxs)(v.A,{children:[(0,p.jsx)("html",{lang:i,dir:l}),(0,p.jsx)("title",{children:t}),(0,p.jsx)("meta",{property:"og:title",content:t}),(0,p.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,p.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,p.jsx)("link",{rel:"icon",href:o})]})}var W=n(7489),G=n(2303);function q(){const e=(0,G.A)();return(0,p.jsx)(v.A,{children:(0,p.jsx)("html",{"data-has-hydrated":e})})}const Y=(0,f.v)(c.A);function K(){const e=function(e){if(O.has(e.pathname))return{...e,pathname:O.get(e.pathname)};if((0,f.u)(c.A,e.pathname).some(({route:e})=>!0===e.exact))return O.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return O.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,p.jsx)(z,{location:e,children:Y})}function Q(){return(0,p.jsx)(W.A,{children:(0,p.jsx)(L.l,{children:(0,p.jsxs)(j.x,{children:[(0,p.jsx)(h,{children:(0,p.jsxs)(b,{children:[(0,p.jsx)(V,{}),(0,p.jsx)(P,{}),(0,p.jsx)(H,{}),(0,p.jsx)(K,{})]})}),(0,p.jsx)(q,{})]})})})}var X=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)})}:function(e){return new Promise((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)})};var J=n(6921);const ee=new Set,te=new Set,ne=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,re={prefetch:e=>{if(!(e=>!ne()&&!te.has(e)&&!ee.has(e))(e))return!1;ee.add(e);const t=(0,f.u)(c.A,e).flatMap(e=>{return t=e.route.path,Object.entries(X).filter(([e])=>e.replace(/-[^-]+$/,"")===t).flatMap(([,e])=>Object.values((0,J.A)(e)));var t});return Promise.all(t.map(e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch(()=>{}):Promise.resolve()}))},preload:e=>!!(e=>!ne()&&!te.has(e))(e)&&(te.add(e),F(e))},ae=Object.freeze(re);function oe({children:e}){return"hash"===l.default.future.experimental_router?(0,p.jsx)(i.I9,{children:e}):(0,p.jsx)(i.Kd,{children:e})}const ie=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=ae;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(o.vd,{children:(0,p.jsx)(oe,{children:(0,p.jsx)(Q,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(ie)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};F(window.location.pathname).then(()=>{(0,r.startTransition)(i)})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(6540),a=n(4625),o=n(440),i=n(4586),l=n(6654),s=n(8193),u=n(3427),c=n(6025),d=n(4848);function f({isNavLink:e,to:t,href:n,activeClassName:f,isActive:p,"data-noBrokenLinkCheck":h,autoAddBaseUrl:m=!0,...g},y){const{siteConfig:b}=(0,i.A)(),{trailingSlash:v,baseUrl:w}=b,k=b.future.experimental_router,{withBaseUrl:S}=(0,c.hH)(),x=(0,u.A)(),E=(0,r.useRef)(null);(0,r.useImperativeHandle)(y,()=>E.current);const _=t||n;const A=(0,l.A)(_),C=_?.replace("pathname://","");let T=void 0!==C?(N=C,m&&(e=>e.startsWith("/"))(N)?S(N):N):void 0;var N;"hash"===k&&T?.startsWith("./")&&(T=T?.slice(1)),T&&A&&(T=(0,o.Ks)(T,{trailingSlash:v,baseUrl:w}));const P=(0,r.useRef)(!1),O=e?a.k2:a.N_,j=s.A.canUseIntersectionObserver,L=(0,r.useRef)(),R=()=>{P.current||null==T||(window.docusaurus.preload(T),P.current=!0)};(0,r.useEffect)(()=>(!j&&A&&s.A.canUseDOM&&null!=T&&window.docusaurus.prefetch(T),()=>{j&&L.current&&L.current.disconnect()}),[L,T,j,A]);const I=T?.startsWith("#")??!1,D=!g.target||"_self"===g.target,F=!T||!A||!D||I&&"hash"!==k;h||!I&&F||x.collectLink(T),g.id&&x.collectAnchor(g.id);const M={};return F?(0,d.jsx)("a",{ref:E,href:T,..._&&!A&&{target:"_blank",rel:"noopener noreferrer"},...g,...M}):(0,d.jsx)(O,{...g,onMouseEnter:R,onTouchStart:R,innerRef:e=>{E.current=e,j&&e&&A&&(L.current=new window.IntersectionObserver(t=>{t.forEach(t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(L.current.unobserve(e),L.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))})}),L.current.observe(e))},to:T,...e&&{isActive:p,activeClassName:f},...M})}const p=r.forwardRef(f)},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)(()=>function({baseUrl:e,routes:t}){function n(t){return t.path===e&&!0===t.exact}function r(t){return t.path===e&&!t.exact}return function e(t){if(0===t.length)return;return t.find(n)||e(t.filter(r).flatMap(e=>e.routes??[]))}(t)}({routes:a.A,baseUrl:e}),[e])}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>u,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>c});var r=n(6540),a=n(205),o=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,a.A)(()=>{t.current=e},[e]),(0,r.useCallback)((...e)=>t.current(...e),[])}function l(e){const t=(0,r.useRef)();return(0,a.A)(()=>{t.current=e}),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort((e,t)=>e[0].localeCompare(t[0])),(0,r.useMemo)(()=>e,t.flat())}function c(e){return({children:t})=>(0,o.jsx)(o.Fragment,{children:e.reduceRight((e,t)=>(0,o.jsx)(t,{children:e}),t)})}},9698:(e,t)=>{"use strict";var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function a(e,t,r){var a=null;if(void 0!==r&&(a=""+r),void 0!==t.key&&(a=""+t.key),"key"in t)for(var o in r={},t)"key"!==o&&(r[o]=t[o]);else r=t;return t=r.ref,{$$typeof:n,type:e,key:a,ref:void 0!==t?t:null,props:r}}t.Fragment=r,t.jsx=a,t.jsxs=a},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++a;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=f.substring(h+p.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},9869:(e,t)=>{"use strict";var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),h=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,y={};function b(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||m}function v(){}function w(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||m}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=b.prototype;var k=w.prototype=new v;k.constructor=w,g(k,b.prototype),k.isPureReactComponent=!0;var S=Array.isArray;function x(){}var E={H:null,A:null,T:null,S:null},_=Object.prototype.hasOwnProperty;function A(e,t,r){var a=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==a?a:null,props:r}}function C(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var T=/\/+/g;function N(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function P(e,t,a,o,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s,u,c=!1;if(null===e)c=!0;else switch(l){case"bigint":case"string":case"number":c=!0;break;case"object":switch(e.$$typeof){case n:case r:c=!0;break;case f:return P((c=e._init)(e._payload),t,a,o,i)}}if(c)return i=i(e),c=""===o?"."+N(e,0):o,S(i)?(a="",null!=c&&(a=c.replace(T,"$&/")+"/"),P(i,t,a,"",function(e){return e})):null!=i&&(C(i)&&(s=i,u=a+(null==i.key||e&&e.key===i.key?"":(""+i.key).replace(T,"$&/")+"/")+c,i=A(s.type,u,s.props)),t.push(i)),1;c=0;var d,p=""===o?".":o+":";if(S(e))for(var m=0;m<e.length;m++)c+=P(o=e[m],t,a,l=p+N(o,m),i);else if("function"==typeof(m=null===(d=e)||"object"!=typeof d?null:"function"==typeof(d=h&&d[h]||d["@@iterator"])?d:null))for(e=m.call(e),m=0;!(o=e.next()).done;)c+=P(o=o.value,t,a,l=p+N(o,m++),i);else if("object"===l){if("function"==typeof e.then)return P(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(x,x):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(e),t,a,o,i);throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return c}function O(e,t,n){if(null==e)return e;var r=[],a=0;return P(e,r,"","",function(e){return t.call(n,e,a++)}),r}function j(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var L="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},R={map:O,forEach:function(e,t,n){O(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return O(e,function(){t++}),t},toArray:function(e){return O(e,function(e){return e})||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};t.Activity=p,t.Children=R,t.Component=b,t.Fragment=a,t.Profiler=i,t.PureComponent=w,t.StrictMode=o,t.Suspense=c,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=E,t.__COMPILER_RUNTIME={__proto__:null,c:function(e){return E.H.useMemoCache(e)}},t.cache=function(e){return function(){return e.apply(null,arguments)}},t.cacheSignal=function(){return null},t.cloneElement=function(e,t,n){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var r=g({},e.props),a=e.key;if(null!=t)for(o in void 0!==t.key&&(a=""+t.key),t)!_.call(t,o)||"key"===o||"__self"===o||"__source"===o||"ref"===o&&void 0===t.ref||(r[o]=t[o]);var o=arguments.length-2;if(1===o)r.children=n;else if(1<o){for(var i=Array(o),l=0;l<o;l++)i[l]=arguments[l+2];r.children=i}return A(e.type,a,r)},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:l,_context:e},e},t.createElement=function(e,t,n){var r,a={},o=null;if(null!=t)for(r in void 0!==t.key&&(o=""+t.key),t)_.call(t,r)&&"key"!==r&&"__self"!==r&&"__source"!==r&&(a[r]=t[r]);var i=arguments.length-2;if(1===i)a.children=n;else if(1<i){for(var l=Array(i),s=0;s<i;s++)l[s]=arguments[s+2];a.children=l}if(e&&e.defaultProps)for(r in i=e.defaultProps)void 0===a[r]&&(a[r]=i[r]);return A(e,o,a)},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:f,_payload:{_status:-1,_result:e},_init:j}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=E.T,n={};E.T=n;try{var r=e(),a=E.S;null!==a&&a(n,r),"object"==typeof r&&null!==r&&"function"==typeof r.then&&r.then(x,L)}catch(o){L(o)}finally{null!==t&&null!==n.types&&(t.types=n.types),E.T=t}},t.unstable_useCacheRefresh=function(){return E.H.useCacheRefresh()},t.use=function(e){return E.H.use(e)},t.useActionState=function(e,t,n){return E.H.useActionState(e,t,n)},t.useCallback=function(e,t){return E.H.useCallback(e,t)},t.useContext=function(e){return E.H.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e,t){return E.H.useDeferredValue(e,t)},t.useEffect=function(e,t){return E.H.useEffect(e,t)},t.useEffectEvent=function(e){return E.H.useEffectEvent(e)},t.useId=function(){return E.H.useId()},t.useImperativeHandle=function(e,t,n){return E.H.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return E.H.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return E.H.useLayoutEffect(e,t)},t.useMemo=function(e,t){return E.H.useMemo(e,t)},t.useOptimistic=function(e,t){return E.H.useOptimistic(e,t)},t.useReducer=function(e,t,n){return E.H.useReducer(e,t,n)},t.useRef=function(e){return E.H.useRef(e)},t.useState=function(e){return E.H.useState(e)},t.useSyncExternalStore=function(e,t,n){return E.H.useSyncExternalStore(e,t,n)},t.useTransition=function(){return E.H.useTransition()},t.version="19.2.1"},9982:(e,t,n)=>{"use strict";e.exports=n(4477)}},e=>{e.O(0,[1869],()=>{return t=8600,e(e.s=t);var t});e.O()}]); \ No newline at end of file diff --git a/user/assets/js/main.0445d6e2.js.LICENSE.txt b/user/assets/js/main.0445d6e2.js.LICENSE.txt new file mode 100644 index 0000000..540cbdb --- /dev/null +++ b/user/assets/js/main.0445d6e2.js.LICENSE.txt @@ -0,0 +1,68 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/*!*************************************************** +* mark.js v8.11.1 +* https://markjs.io/ +* Copyright (c) 2014–2018, Julian KΓΌhnel +* Released under the MIT license https://git.io/vwTVl +*****************************************************/ + +/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/user/assets/js/runtime~main.624760e0.js b/user/assets/js/runtime~main.624760e0.js new file mode 100644 index 0000000..2c974d3 --- /dev/null +++ b/user/assets/js/runtime~main.624760e0.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,r,t,c,f={},o={};function d(e){var a=o[e];if(void 0!==a)return a.exports;var r=o[e]={exports:{}};return f[e].call(r.exports,r,r.exports,d),r.exports}d.m=f,e=[],d.O=(a,r,t,c)=>{if(!r){var f=1/0;for(i=0;i<e.length;i++){for(var[r,t,c]=e[i],o=!0,n=0;n<r.length;n++)(!1&c||f>=c)&&Object.keys(d.O).every(e=>d.O[e](r[n]))?r.splice(n--,1):(o=!1,c<f&&(f=c));if(o){e.splice(i--,1);var b=t();void 0!==b&&(a=b)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[r,t,c]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var c=Object.create(null);d.r(c);var f={};a=a||[null,r({}),r([]),r(r)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~a.indexOf(o);o=r(o))Object.getOwnPropertyNames(o).forEach(a=>f[a]=()=>e[a]);return f.default=()=>e,d.d(c,f),c},d.d=(e,a)=>{for(var r in a)d.o(a,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce((a,r)=>(d.f[r](e,a),a),[])),d.u=e=>"assets/js/"+({406:"0546f6b4",1235:"a7456010",1887:"96022abb",1945:"3824a626",2076:"common",2764:"c357e002",3873:"9ed00105",3976:"0e384e19",4e3:"45a5cd1f",4078:"e6f5c734",4134:"393be207",4305:"bd0e57e2",4583:"1df93b7f",5433:"a821f318",5742:"aba21aa0",5902:"f5506564",6061:"1f391b9e",6803:"3b8c55ea",7051:"e747ec83",7098:"a7bd4aaa",8070:"0480b142",8401:"17896441",9013:"9d9f8394",9048:"a94703ab",9423:"9c889300",9647:"5e95c892"}[e]||e)+"."+{165:"9c21f102",291:"26b9c292",406:"1a94d170",416:"c84d7537",617:"e43b118d",1e3:"3595dc89",1203:"93c8e8b6",1235:"88ca9154",1741:"8f4d5010",1746:"a1092246",1887:"75270f4d",1945:"01fcb470",2076:"94b129a7",2130:"7831bbbb",2237:"e3ea4001",2279:"6a0e29ca",2291:"f507cd02",2325:"7fdd7485",2334:"70b844af",2492:"d333d923",2764:"f99e6fbd",2821:"f492e4f4",3490:"9d6130d4",3815:"506c8242",3873:"02f40c06",3976:"ba6c1274",4e3:"b516da78",4078:"59eb00f2",4134:"f8e000a5",4250:"5c33f2f2",4305:"0ec3fda9",4583:"4d018425",4616:"7c78a6d0",4802:"eb66e970",4981:"f5ebfa9b",5433:"803fce84",5480:"078da633",5742:"89e68a74",5901:"07e3450a",5902:"89680ad1",5955:"fc1ce015",5996:"f2c2add4",6061:"e0c7952b",6241:"0bf2e0bf",6319:"d86288e7",6366:"aec59454",6567:"b42e1678",6803:"b9c1a9de",6992:"a355b7e8",7051:"862e5442",7098:"db239801",7465:"8110f7b6",7592:"bb350f24",7873:"36c0782a",7928:"60851a84",8070:"c165f9ac",8142:"5ca4bf46",8249:"9f2fda74",8401:"dd946504",8525:"0f81c924",8565:"8f05675d",8577:"f6652b3e",8591:"534ea4e8",8731:"4b254795",8756:"923d7eef",9013:"d124aad1",9032:"092c7c90",9048:"bb407384",9278:"e08dee76",9412:"13820b1c",9423:"5ac661e2",9510:"8d35fea2",9647:"cc50fa5c"}[e]+".js",d.miniCssF=e=>{},d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},c="docs-split-user:",d.l=(e,a,r,f)=>{if(t[e])t[e].push(a);else{var o,n;if(void 0!==r)for(var b=document.getElementsByTagName("script"),i=0;i<b.length;i++){var s=b[i];if(s.getAttribute("src")==e||s.getAttribute("data-webpack")==c+r){o=s;break}}o||(n=!0,(o=document.createElement("script")).charset="utf-8",d.nc&&o.setAttribute("nonce",d.nc),o.setAttribute("data-webpack",c+r),o.src=e),t[e]=[a];var u=(a,r)=>{o.onerror=o.onload=null,clearTimeout(l);var c=t[e];if(delete t[e],o.parentNode&&o.parentNode.removeChild(o),c&&c.forEach(e=>e(r)),a)return a(r)},l=setTimeout(u.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=u.bind(null,o.onerror),o.onload=u.bind(null,o.onload),n&&document.head.appendChild(o)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/hass.tibber_prices/user/",d.gca=function(e){return e={17896441:"8401","0546f6b4":"406",a7456010:"1235","96022abb":"1887","3824a626":"1945",common:"2076",c357e002:"2764","9ed00105":"3873","0e384e19":"3976","45a5cd1f":"4000",e6f5c734:"4078","393be207":"4134",bd0e57e2:"4305","1df93b7f":"4583",a821f318:"5433",aba21aa0:"5742",f5506564:"5902","1f391b9e":"6061","3b8c55ea":"6803",e747ec83:"7051",a7bd4aaa:"7098","0480b142":"8070","9d9f8394":"9013",a94703ab:"9048","9c889300":"9423","5e95c892":"9647"}[e]||e,d.p+d.u(e)},(()=>{var e={5354:0,1869:0};d.f.j=(a,r)=>{var t=d.o(e,a)?e[a]:void 0;if(0!==t)if(t)r.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var c=new Promise((r,c)=>t=e[a]=[r,c]);r.push(t[2]=c);var f=d.p+d.u(a),o=new Error;d.l(f,r=>{if(d.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var c=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;o.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",o.name="ChunkLoadError",o.type=c,o.request=f,t[1](o)}},"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,r)=>{var t,c,[f,o,n]=r,b=0;if(f.some(a=>0!==e[a])){for(t in o)d.o(o,t)&&(d.m[t]=o[t]);if(n)var i=n(d)}for(a&&a(r);b<f.length;b++)c=f[b],d.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return d.O(i)},r=globalThis.webpackChunkdocs_split_user=globalThis.webpackChunkdocs_split_user||[];r.forEach(a.bind(null,0)),r.push=a.bind(null,r.push.bind(r))})()})(); \ No newline at end of file diff --git a/user/automation-examples.html b/user/automation-examples.html new file mode 100644 index 0000000..88964ca --- /dev/null +++ b/user/automation-examples.html @@ -0,0 +1,146 @@ +<!doctype html> +<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-automation-examples" data-has-hydrated="false"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v3.9.2"> +<title data-rh="true">Automation Examples | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Automation Examples

    +
    +

    Note: This guide is under construction.

    +
    +
    +

    Tip: For dashboard examples with dynamic icons and colors, see the Dynamic Icons Guide and Dynamic Icon Colors Guide.

    +
    +

    Table of Contents​

    + +
    +

    Price-Based Automations​

    +

    Coming soon...

    +
    +

    Volatility-Aware Automations​

    +

    These examples show how to handle low-volatility days where period classifications may flip at midnight despite minimal absolute price changes.

    +

    Use Case: Only Act on High-Volatility Days​

    +

    On days with low price variation (< 15% volatility), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when the savings are meaningful:

    +
    automation:
    - alias: "Dishwasher - Best Price (High Volatility Only)"
    description: "Start dishwasher during Best Price period, but only on days with meaningful price differences"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    # Only act if volatility > 15% (meaningful savings)
    - condition: numeric_state
    entity_id: sensor.tibber_home_volatility_today
    above: 15
    # Optional: Ensure dishwasher is idle and door closed
    - condition: state
    entity_id: binary_sensor.dishwasher_door
    state: "off"
    action:
    - service: switch.turn_on
    target:
    entity_id: switch.dishwasher_smart_plug
    - service: notify.mobile_app
    data:
    message: "Dishwasher started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ states('sensor.tibber_home_volatility_today') }}%)"
    +

    Why this works:

    +
      +
    • On high-volatility days (e.g., 25% span), Best Price periods save 5-10 ct/kWh
    • +
    • On low-volatility days (e.g., 8% span), savings are only 1-2 ct/kWh
    • +
    • User can manually start dishwasher on low-volatility days without automation interference
    • +
    +

    Use Case: Absolute Price Threshold​

    +

    Instead of relying on relative classification, check if the absolute price is cheap enough:

    +
    automation:
    - alias: "Water Heater - Cheap Enough"
    description: "Heat water when price is below absolute threshold, regardless of period classification"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    # Absolute threshold: Only run if < 20 ct/kWh
    - condition: numeric_state
    entity_id: sensor.tibber_home_current_interval_price_ct
    below: 20
    # Optional: Check water temperature
    - condition: numeric_state
    entity_id: sensor.water_heater_temperature
    below: 55 # Only heat if below 55Β°C
    action:
    - service: switch.turn_on
    target:
    entity_id: switch.water_heater
    - delay:
    hours: 2 # Heat for 2 hours
    - service: switch.turn_off
    target:
    entity_id: switch.water_heater
    +

    Why this works:

    +
      +
    • Period classification can flip at midnight on low-volatility days
    • +
    • Absolute threshold (20 ct/kWh) is stable across midnight boundary
    • +
    • User sets their own "cheap enough" price based on local rates
    • +
    +

    Use Case: Combined Volatility and Price Check​

    +

    Most robust approach: Check both volatility and absolute price:

    +
    automation:
    - alias: "EV Charging - Smart Strategy"
    description: "Charge EV using volatility-aware logic"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    # Check battery level
    - condition: numeric_state
    entity_id: sensor.ev_battery_level
    below: 80
    # Strategy: High volatility OR cheap enough
    - condition: or
    conditions:
    # Path 1: High volatility day - trust period classification
    - condition: numeric_state
    entity_id: sensor.tibber_home_volatility_today
    above: 15
    # Path 2: Low volatility but price is genuinely cheap
    - condition: numeric_state
    entity_id: sensor.tibber_home_current_interval_price_ct
    below: 18
    action:
    - service: switch.turn_on
    target:
    entity_id: switch.ev_charger
    - service: notify.mobile_app
    data:
    message: >
    EV charging started: {{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh
    (Volatility: {{ states('sensor.tibber_home_volatility_today') }}%)
    +

    Why this works:

    +
      +
    • On high-volatility days (> 15%): Trust the Best Price classification
    • +
    • On low-volatility days (< 15%): Only charge if price is actually cheap (< 18 ct/kWh)
    • +
    • Handles midnight flips gracefully: Continues charging if price stays cheap
    • +
    +

    Use Case: Ignore Period Flips During Active Period​

    +

    Prevent automations from stopping mid-cycle when a period flips at midnight:

    +
    automation:
    - alias: "Washing Machine - Complete Cycle"
    description: "Start washing machine during Best Price, ignore midnight flips"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    # Only start if washing machine is idle
    - condition: state
    entity_id: sensor.washing_machine_state
    state: "idle"
    # And volatility is meaningful
    - condition: numeric_state
    entity_id: sensor.tibber_home_volatility_today
    above: 15
    action:
    - service: button.press
    target:
    entity_id: button.washing_machine_eco_program
    # Create input_boolean to track active cycle
    - service: input_boolean.turn_on
    target:
    entity_id: input_boolean.washing_machine_auto_started

    # Separate automation: Clear flag when cycle completes
    - alias: "Washing Machine - Cycle Complete"
    trigger:
    - platform: state
    entity_id: sensor.washing_machine_state
    to: "finished"
    condition:
    # Only clear flag if we auto-started it
    - condition: state
    entity_id: input_boolean.washing_machine_auto_started
    state: "on"
    action:
    - service: input_boolean.turn_off
    target:
    entity_id: input_boolean.washing_machine_auto_started
    - service: notify.mobile_app
    data:
    message: "Washing cycle complete"
    +

    Why this works:

    +
      +
    • Uses input_boolean to track auto-started cycles
    • +
    • Won't trigger multiple times if period flips during the 2-3 hour wash cycle
    • +
    • Only triggers on "off" β†’ "on" transitions, not during "on" β†’ "on" continuity
    • +
    +

    Use Case: Per-Period Day Volatility​

    +

    The simplest approach: Use the period's day volatility attribute directly:

    +
    automation:
    - alias: "Heat Pump - Smart Heating"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    # Check if the PERIOD'S DAY has meaningful volatility
    - condition: template
    value_template: >
    {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }}
    action:
    - service: climate.set_temperature
    target:
    entity_id: climate.heat_pump
    data:
    temperature: 22 # Boost temperature during cheap period
    +

    Available per-period attributes:

    +
      +
    • day_volatility_%: Percentage volatility of the period's day (e.g., 8.2 for 8.2%)
    • +
    • day_price_min: Minimum price of the day in minor currency (ct/ΓΈre)
    • +
    • day_price_max: Maximum price of the day in minor currency (ct/ΓΈre)
    • +
    • day_price_span: Absolute difference (max - min) in minor currency (ct/ΓΈre)
    • +
    +

    These attributes are available on both binary_sensor.tibber_home_best_price_period and binary_sensor.tibber_home_peak_price_period.

    +

    Why this works:

    +
      +
    • Each period knows its day's volatility
    • +
    • No need to query separate sensors
    • +
    • Template checks if saving is meaningful (> 15% volatility)
    • +
    +
    +

    Best Hour Detection​

    +

    Coming soon...

    +
    +

    ApexCharts Cards​

    +
    +

    ⚠️ IMPORTANT: The tibber_prices.get_apexcharts_yaml service generates a basic example configuration as a starting point. It is NOT a complete solution for all ApexCharts features.

    +

    This integration is primarily a data provider. Due to technical limitations (segmented time periods, service API usage), many advanced ApexCharts features require manual customization or may not be compatible.

    +

    For advanced customization: Use the get_chartdata service directly to build charts tailored to your specific needs. Community contributions with improved configurations are welcome!

    +
    +

    The tibber_prices.get_apexcharts_yaml service generates basic ApexCharts card configuration examples for visualizing electricity prices.

    +

    Prerequisites​

    +

    Required:

    + +

    Optional (for rolling window mode):

    + +

    Installation​

    +
      +
    1. Open HACS β†’ Frontend
    2. +
    3. Search for "ApexCharts Card" and install
    4. +
    5. (Optional) Search for "Config Template Card" and install if you want rolling window mode
    6. +
    +

    Example: Fixed Day View​

    +
    # Generate configuration via automation/script
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    day: today # or "yesterday", "tomorrow"
    level_type: rating_level # or "level" for 5-level view
    response_variable: apexcharts_config
    +

    Then copy the generated YAML into your Lovelace dashboard.

    +

    Example: Rolling 48h Window​

    +

    For a dynamic chart that automatically adapts to data availability:

    +
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    day: rolling_window # Or omit for same behavior (default)
    level_type: rating_level
    response_variable: apexcharts_config
    +

    Behavior:

    +
      +
    • When tomorrow data available (typically after ~13:00): Shows today + tomorrow
    • +
    • When tomorrow data not available: Shows yesterday + today
    • +
    • Fixed 48h span: Always shows full 48 hours
    • +
    +

    Auto-Zoom Variant:

    +

    For progressive zoom-in throughout the day:

    +
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    day: rolling_window_autozoom
    level_type: rating_level
    response_variable: apexcharts_config
    +
      +
    • Same data loading as rolling window
    • +
    • Progressive zoom: Graph span starts at ~26h in the morning and decreases to ~14h by midnight
    • +
    • Updates every 15 minutes: Always shows 2h lookback + remaining time until midnight
    • +
    +

    Note: Rolling window modes require Config Template Card to dynamically adjust the time range.

    +

    Features​

    +
      +
    • Color-coded price levels/ratings (green = cheap, yellow = normal, red = expensive)
    • +
    • Best price period highlighting (semi-transparent green overlay)
    • +
    • Automatic NULL insertion for clean gaps
    • +
    • Translated labels based on your Home Assistant language
    • +
    • Interactive zoom and pan
    • +
    • Live marker showing current time
    • +
    + + \ No newline at end of file diff --git a/user/chart-examples.html b/user/chart-examples.html new file mode 100644 index 0000000..1356977 --- /dev/null +++ b/user/chart-examples.html @@ -0,0 +1,191 @@ + + + + + +Chart Examples | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Chart Examples

    +

    This guide showcases the different chart configurations available through the tibber_prices.get_apexcharts_yaml action.

    +
    +

    Quick Start: Call the action with your desired parameters, copy the generated YAML, and paste it into your Lovelace dashboard!

    +
    +

    Overview​

    +

    The integration can generate 4 different chart modes, each optimized for specific use cases:

    +
    ModeDescriptionBest ForDependencies
    TodayStatic 24h view of today's pricesQuick daily overviewApexCharts Card
    TomorrowStatic 24h view of tomorrow's pricesPlanning tomorrowApexCharts Card
    Rolling WindowDynamic 48h view (today+tomorrow or yesterday+today)Always-current overviewApexCharts + Config Template Card
    Rolling Window Auto-ZoomDynamic view that zooms in as day progressesReal-time focus on remaining dayApexCharts + Config Template Card
    +

    Screenshots available for:

    +
      +
    • βœ… Today (static) - Representative of all fixed day views
    • +
    • βœ… Rolling Window - Shows dynamic Y-axis scaling
    • +
    • βœ… Rolling Window Auto-Zoom - Shows progressive zoom effect
    • +
    +

    All Chart Modes​

    +

    1. Today's Prices (Static)​

    +

    When to use: Simple daily price overview, no dynamic updates needed.

    +

    Dependencies: ApexCharts Card only

    +

    Generate:

    +
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    day: today
    level_type: rating_level
    highlight_best_price: true
    +

    Screenshot:

    +

    Today&#39;s Prices - Static 24h View

    +

    Key Features:

    +
      +
    • βœ… Color-coded price levels (LOW, NORMAL, HIGH)
    • +
    • βœ… Best price period highlights (vertical bands)
    • +
    • βœ… Static 24-hour view (00:00 - 23:59)
    • +
    • βœ… Works with ApexCharts Card alone
    • +
    +

    Note: Tomorrow view (day: tomorrow) works identically to Today view, just showing tomorrow's data. All fixed day views (yesterday/today/tomorrow) use the same visualization approach.

    +
    +

    2. Rolling 48h Window (Dynamic)​

    +

    When to use: Always-current view that automatically switches between yesterday+today and today+tomorrow.

    +

    Dependencies: ApexCharts Card + Config Template Card

    +

    Generate:

    +
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    # Omit 'day' for rolling window
    level_type: rating_level
    highlight_best_price: true
    +

    Screenshot:

    +

    Rolling 48h Window with Dynamic Y-Axis Scaling

    +

    Key Features:

    +
      +
    • βœ… Dynamic Y-axis scaling via chart_metadata sensor
    • +
    • βœ… Automatic data selection: today+tomorrow (when available) or yesterday+today
    • +
    • βœ… Always shows 48 hours of data
    • +
    • βœ… Updates automatically when tomorrow's data arrives
    • +
    • βœ… Color gradients for visual appeal
    • +
    +

    How it works:

    +
      +
    • Before ~13:00: Shows yesterday + today
    • +
    • After ~13:00: Shows today + tomorrow
    • +
    • Y-axis automatically adjusts to data range for optimal visualization
    • +
    +
    +

    3. Rolling Window Auto-Zoom (Dynamic)​

    +

    When to use: Real-time focus on remaining day - progressively zooms in as day advances.

    +

    Dependencies: ApexCharts Card + Config Template Card

    +

    Generate:

    +
    service: tibber_prices.get_apexcharts_yaml
    data:
    entry_id: YOUR_ENTRY_ID
    day: rolling_window_autozoom
    level_type: rating_level
    highlight_best_price: true
    +

    Screenshot:

    +

    Rolling Window Auto-Zoom - Progressive Zoom Effect

    +

    Key Features:

    +
      +
    • βœ… Progressive zoom: Graph span decreases every 15 minutes
    • +
    • βœ… Dynamic Y-axis scaling via chart_metadata sensor
    • +
    • βœ… Always shows: 2 hours lookback + remaining time until midnight
    • +
    • βœ… Perfect for real-time price monitoring
    • +
    • βœ… Example: At 18:00, shows 16:00 β†’ 00:00 (8h window)
    • +
    +

    How it works:

    +
      +
    • 00:00: Shows full 48h window (same as rolling window)
    • +
    • 06:00: Shows 04:00 β†’ midnight (20h window)
    • +
    • 12:00: Shows 10:00 β†’ midnight (14h window)
    • +
    • 18:00: Shows 16:00 β†’ midnight (8h window)
    • +
    • 23:45: Shows 21:45 β†’ midnight (2.25h window)
    • +
    +

    This creates a "zooming in" effect that focuses on the most relevant remaining time.

    +
    +

    Comparison: Level Type Options​

    +

    Rating Level (3 series)​

    +

    Based on your personal price thresholds (configured in Options Flow):

    +
      +
    • LOW (Green): Below your "cheap" threshold
    • +
    • NORMAL (Blue): Between thresholds
    • +
    • HIGH (Red): Above your "expensive" threshold
    • +
    +

    Best for: Personal decision-making based on your budget

    +

    Level (5 series)​

    +

    Based on absolute price ranges (calculated from daily min/max):

    +
      +
    • VERY_CHEAP (Dark Green): Bottom 20%
    • +
    • CHEAP (Light Green): 20-40%
    • +
    • NORMAL (Blue): 40-60%
    • +
    • EXPENSIVE (Orange): 60-80%
    • +
    • VERY_EXPENSIVE (Red): Top 20%
    • +
    +

    Best for: Objective price distribution visualization

    +
    +

    Dynamic Y-Axis Scaling​

    +

    Rolling window modes (2 & 3) automatically integrate with the chart_metadata sensor for optimal visualization:

    +

    Without chart_metadata sensor (disabled):

    +
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ β”‚ ← Lots of empty space
    β”‚ ___ β”‚
    β”‚ ___/ \___ β”‚
    β”‚_/ \_ β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    0 100 ct
    +

    With chart_metadata sensor (enabled):

    +
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚ ___ β”‚ ← Y-axis fitted to data
    β”‚ ___/ \___ β”‚
    β”‚_/ \_ β”‚
    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
    18 28 ct ← Optimal range
    +

    Requirements:

    +
      +
    • βœ… The sensor.tibber_home_chart_metadata must be enabled (it's enabled by default!)
    • +
    • βœ… That's it! The generated YAML automatically uses the sensor for dynamic scaling
    • +
    +

    Important: Do NOT disable the chart_metadata sensor if you want optimal Y-axis scaling in rolling window modes!

    +

    Note: Fixed day views (today, tomorrow) use ApexCharts' built-in auto-scaling and don't require the metadata sensor.

    +
    +

    Best Price Period Highlights​

    +

    When highlight_best_price: true, vertical bands overlay the chart showing detected best price periods:

    +

    Example:

    +
    Price
    β”‚
    30β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” Normal prices
    β”‚ β”‚ β”‚
    25β”‚ β–“β–“β–“β–“β–“β–“β”‚ β”‚ ← Best price period (shaded)
    β”‚ β–“β–“β–“β–“β–“β–“β”‚ β”‚
    20│─────▓▓▓▓▓▓│─────────│
    β”‚ β–“β–“β–“β–“β–“β–“
    └─────────────────────── Time
    06:00 12:00 18:00
    +

    Features:

    +
      +
    • Automatic detection based on your configuration (see Period Calculation Guide)
    • +
    • Tooltip shows "Best Price Period" label
    • +
    • Only appears when periods are configured and detected
    • +
    • Can be disabled with highlight_best_price: false
    • +
    +
    +

    Prerequisites​

    +

    Required for All Modes​

    +
      +
    • ApexCharts Card: Core visualization library +
      # Install via HACS
      HACS β†’ Frontend β†’ Search "ApexCharts Card" β†’ Download
      +
    • +
    +

    Required for Rolling Window Modes Only​

    +
      +
    • Config Template Card: Enables dynamic configuration +
      # Install via HACS
      HACS β†’ Frontend β†’ Search "Config Template Card" β†’ Download
      +
    • +
    +

    Note: Fixed day views (today, tomorrow) work with ApexCharts Card alone!

    +
    +

    Tips & Tricks​

    +

    Customizing Colors​

    +

    Edit the colors array in the generated YAML:

    +
    apex_config:
    colors:
    - "#00FF00" # Change LOW/VERY_CHEAP color
    - "#0000FF" # Change NORMAL color
    - "#FF0000" # Change HIGH/VERY_EXPENSIVE color
    +

    Changing Chart Height​

    +

    Add to the card configuration:

    +
    type: custom:apexcharts-card
    graph_span: 48h
    header:
    show: true
    title: My Custom Title
    apex_config:
    chart:
    height: 400 # Adjust height in pixels
    +

    Combining with Other Cards​

    +

    Wrap in a vertical stack for dashboard integration:

    +
    type: vertical-stack
    cards:
    - type: entity
    entity: sensor.tibber_home_current_interval_price
    - type: custom:apexcharts-card
    # ... generated chart config
    +
    +

    Next Steps​

    + +
    +

    Screenshots​

    + +
      +
    1. +

      Today View (Static) - Representative of all fixed day views (yesterday/today/tomorrow)

      +

      Today View

      +
    2. +
    3. +

      Rolling Window (Dynamic) - Shows dynamic Y-axis scaling and 48h window

      +

      Rolling Window

      +
    4. +
    5. +

      Rolling Window Auto-Zoom (Dynamic) - Shows progressive zoom effect

      +

      Rolling Window Auto-Zoom

      +
    6. +
    +

    Note: Tomorrow view is visually identical to Today view (same chart type, just different data).

    + + \ No newline at end of file diff --git a/user/concepts.html b/user/concepts.html new file mode 100644 index 0000000..a9c3047 --- /dev/null +++ b/user/concepts.html @@ -0,0 +1,78 @@ + + + + + +Core Concepts | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Core Concepts

    +

    Understanding the fundamental concepts behind the Tibber Prices integration.

    +

    Price Intervals​

    +

    The integration works with quarter-hourly intervals (15 minutes):

    +
      +
    • Each interval has a start time (e.g., 14:00, 14:15, 14:30, 14:45)
    • +
    • Prices are fixed for the entire interval
    • +
    • Synchronized with Tibber's smart meter readings
    • +
    +

    Price Ratings​

    +

    Prices are automatically classified into rating levels:

    +
      +
    • VERY_CHEAP - Exceptionally low prices (great for energy-intensive tasks)
    • +
    • CHEAP - Below average prices (good for flexible loads)
    • +
    • NORMAL - Around average prices (regular consumption)
    • +
    • EXPENSIVE - Above average prices (reduce consumption if possible)
    • +
    • VERY_EXPENSIVE - Exceptionally high prices (avoid heavy loads)
    • +
    +

    Rating is based on statistical analysis comparing current price to:

    +
      +
    • Daily average
    • +
    • Trailing 24-hour average
    • +
    • User-configured thresholds
    • +
    +

    Price Periods​

    +

    Best Price Periods and Peak Price Periods are automatically detected time windows:

    +
      +
    • Best Price Period - Consecutive intervals with favorable prices (for scheduling energy-heavy tasks)
    • +
    • Peak Price Period - Time windows with highest prices (to avoid or shift consumption)
    • +
    +

    Periods can:

    +
      +
    • Span multiple hours
    • +
    • Cross midnight boundaries
    • +
    • Adapt based on your configuration (flex, min_distance, rating levels)
    • +
    +

    See Period Calculation for detailed configuration.

    +

    Statistical Analysis​

    +

    The integration enriches every interval with context:

    +
      +
    • Trailing 24h Average - Average price over the last 24 hours
    • +
    • Leading 24h Average - Average price over the next 24 hours
    • +
    • Price Difference - How much current price deviates from average (in %)
    • +
    • Volatility - Price stability indicator (LOW, MEDIUM, HIGH)
    • +
    +

    This helps you understand if current prices are exceptional or typical.

    +

    Multi-Home Support​

    +

    You can add multiple Tibber homes to track prices for:

    +
      +
    • Different locations
    • +
    • Different electricity contracts
    • +
    • Comparison between regions
    • +
    +

    Each home gets its own set of sensors with unique entity IDs.

    +
    +

    πŸ’‘ Next Steps:

    +
    + + \ No newline at end of file diff --git a/user/configuration.html b/user/configuration.html new file mode 100644 index 0000000..34c04e3 --- /dev/null +++ b/user/configuration.html @@ -0,0 +1,27 @@ + + + + + +Configuration | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Configuration

    +
    +

    Note: This guide is under construction. For now, please refer to the main README for configuration instructions.

    +
    +

    Initial Setup​

    +

    Coming soon...

    +

    Configuration Options​

    +

    Coming soon...

    +

    Price Thresholds​

    +

    Coming soon...

    + + \ No newline at end of file diff --git a/user/dashboard-examples.html b/user/dashboard-examples.html new file mode 100644 index 0000000..b55e645 --- /dev/null +++ b/user/dashboard-examples.html @@ -0,0 +1,52 @@ + + + + + +Dashboard Examples | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Dashboard Examples

    +

    Beautiful dashboard layouts using Tibber Prices sensors.

    +

    Basic Price Display Card​

    +

    Simple card showing current price with dynamic color:

    +
    type: entities
    title: Current Electricity Price
    entities:
    - entity: sensor.tibber_home_current_interval_price
    name: Current Price
    icon: mdi:flash
    - entity: sensor.tibber_home_current_interval_rating
    name: Price Rating
    - entity: sensor.tibber_home_next_interval_price
    name: Next Price
    +

    Period Status Cards​

    +

    Show when best/peak price periods are active:

    +
    type: horizontal-stack
    cards:
    - type: entity
    entity: binary_sensor.tibber_home_best_price_period
    name: Best Price Active
    icon: mdi:currency-eur-off
    - type: entity
    entity: binary_sensor.tibber_home_peak_price_period
    name: Peak Price Active
    icon: mdi:alert
    +

    Custom Button Card Examples​

    +

    Price Level Card​

    +
    type: custom:button-card
    entity: sensor.tibber_home_current_interval_level
    name: Price Level
    show_state: true
    styles:
    card:
    - background: |
    [[[
    if (entity.state === 'LOWEST') return 'linear-gradient(135deg, #00ffa3 0%, #00d4ff 100%)';
    if (entity.state === 'LOW') return 'linear-gradient(135deg, #4dddff 0%, #00ffa3 100%)';
    if (entity.state === 'NORMAL') return 'linear-gradient(135deg, #ffd700 0%, #ffb800 100%)';
    if (entity.state === 'HIGH') return 'linear-gradient(135deg, #ff8c00 0%, #ff6b00 100%)';
    if (entity.state === 'HIGHEST') return 'linear-gradient(135deg, #ff4500 0%, #dc143c 100%)';
    return 'var(--card-background-color)';
    ]]]
    +

    Lovelace Layouts​

    +

    Compact Mobile View​

    +

    Optimized for mobile devices:

    +
    type: vertical-stack
    cards:
    - type: custom:mini-graph-card
    entities:
    - entity: sensor.tibber_home_current_interval_price
    name: Today's Prices
    hours_to_show: 24
    points_per_hour: 4

    - type: glance
    entities:
    - entity: sensor.tibber_home_best_price_start_time
    name: Best Period Starts
    - entity: binary_sensor.tibber_home_best_price_period
    name: Active Now
    +

    Desktop Dashboard​

    +

    Full-width layout for desktop:

    +
    type: grid
    columns: 3
    square: false
    cards:
    - type: custom:apexcharts-card
    # See chart-examples.md for ApexCharts config

    - type: vertical-stack
    cards:
    - type: entities
    title: Current Status
    entities:
    - sensor.tibber_home_current_interval_price
    - sensor.tibber_home_current_interval_rating

    - type: vertical-stack
    cards:
    - type: entities
    title: Statistics
    entities:
    - sensor.tibber_home_daily_avg_today
    - sensor.tibber_home_daily_min_today
    - sensor.tibber_home_daily_max_today
    +

    Icon Color Integration​

    +

    Using the icon_color attribute for dynamic colors:

    +
    type: custom:mushroom-chips-card
    chips:
    - type: entity
    entity: sensor.tibber_home_current_interval_price
    icon_color: "{{ state_attr('sensor.tibber_home_current_interval_price', 'icon_color') }}"

    - type: entity
    entity: binary_sensor.tibber_home_best_price_period
    icon_color: green

    - type: entity
    entity: binary_sensor.tibber_home_peak_price_period
    icon_color: red
    +

    See Icon Colors for detailed color mapping.

    +

    Picture Elements Dashboard​

    +

    Advanced interactive dashboard:

    +
    type: picture-elements
    image: /local/electricity_dashboard_bg.png
    elements:
    - type: state-label
    entity: sensor.tibber_home_current_interval_price
    style:
    top: 20%
    left: 50%
    font-size: 32px
    font-weight: bold

    - type: state-badge
    entity: binary_sensor.tibber_home_best_price_period
    style:
    top: 40%
    left: 30%

    # Add more elements...
    +

    Auto-Entities Dynamic Lists​

    +

    Automatically list all price sensors:

    +
    type: custom:auto-entities
    card:
    type: entities
    title: All Price Sensors
    filter:
    include:
    - entity_id: "sensor.tibber_*_price"
    exclude:
    - state: unavailable
    sort:
    method: state
    numeric: true
    +
    +

    πŸ’‘ Related:

    +
    + + \ No newline at end of file diff --git a/user/dynamic-icons.html b/user/dynamic-icons.html new file mode 100644 index 0000000..785eea6 --- /dev/null +++ b/user/dynamic-icons.html @@ -0,0 +1,118 @@ + + + + + +Dynamic Icons | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Dynamic Icons

    +

    Many sensors in the Tibber Prices integration automatically change their icon based on their current state. This provides instant visual feedback about price levels, trends, and periods without needing to read the actual values.

    +

    What are Dynamic Icons?​

    +

    Instead of having a fixed icon, some sensors update their icon to reflect their current state:

    +
      +
    • Price level sensors show different cash/money icons depending on whether prices are cheap or expensive
    • +
    • Price rating sensors show thumbs up/down based on how the current price compares to average
    • +
    • Volatility sensors show different chart types based on price stability
    • +
    • Binary sensors show different icons when ON vs OFF (e.g., piggy bank when in best price period)
    • +
    +

    The icons change automatically - no configuration needed!

    +

    How to Check if a Sensor Has Dynamic Icons​

    +

    To see which icon a sensor currently uses:

    +
      +
    1. Go to Developer Tools β†’ States in Home Assistant
    2. +
    3. Search for your sensor (e.g., sensor.tibber_home_current_interval_price_level)
    4. +
    5. Look at the icon displayed in the entity row
    6. +
    7. Change conditions (wait for price changes) and check if the icon updates
    8. +
    +

    Common sensor types with dynamic icons:

    +
      +
    • Price level sensors (e.g., current_interval_price_level)
    • +
    • Price rating sensors (e.g., current_interval_price_rating)
    • +
    • Volatility sensors (e.g., volatility_today)
    • +
    • Binary sensors (e.g., best_price_period, peak_price_period)
    • +
    +

    Using Dynamic Icons in Your Dashboard​

    +

    Standard Entity Cards​

    +

    Dynamic icons work automatically in standard Home Assistant cards:

    +
    type: entities
    entities:
    - entity: sensor.tibber_home_current_interval_price_level
    - entity: sensor.tibber_home_current_interval_price_rating
    - entity: sensor.tibber_home_volatility_today
    - entity: binary_sensor.tibber_home_best_price_period
    +

    The icons will update automatically as the sensor states change.

    +

    Glance Card​

    +
    type: glance
    entities:
    - entity: sensor.tibber_home_current_interval_price_level
    name: Price Level
    - entity: sensor.tibber_home_current_interval_price_rating
    name: Rating
    - entity: binary_sensor.tibber_home_best_price_period
    name: Best Price
    +

    Custom Button Card​

    +
    type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_level
    name: Current Price Level
    show_state: true
    # Icon updates automatically - no need to specify it!
    +

    Mushroom Entity Card​

    +
    type: custom:mushroom-entity-card
    entity: sensor.tibber_home_volatility_today
    name: Price Volatility
    # Icon changes automatically based on volatility level
    +

    Overriding Dynamic Icons​

    +

    If you want to use a fixed icon instead of the dynamic one:

    +

    In Entity Cards​

    +
    type: entities
    entities:
    - entity: sensor.tibber_home_current_interval_price_level
    icon: mdi:lightning-bolt # Fixed icon, won't change
    +

    In Custom Button Card​

    +
    type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_rating
    name: Price Rating
    icon: mdi:chart-line # Fixed icon overrides dynamic behavior
    show_state: true
    +

    Combining with Dynamic Colors​

    +

    Dynamic icons work great together with dynamic colors! See the Dynamic Icon Colors Guide for examples.

    +

    Example: Dynamic icon AND color

    +
    type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_level
    name: Current Price
    show_state: true
    # Icon changes automatically (cheap/expensive cash icons)
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]
    +

    This gives you both:

    +
      +
    • βœ… Different icon based on state (e.g., cash-plus when cheap, cash-remove when expensive)
    • +
    • βœ… Different color based on state (e.g., green when cheap, red when expensive)
    • +
    +

    Icon Behavior Details​

    +

    Binary Sensors​

    +

    Binary sensors may have different icons for different states:

    +
      +
    • ON state: Typically shows an active/alert icon
    • +
    • OFF state: May show different icons depending on whether future periods exist +
        +
      • Has upcoming periods: Timer/waiting icon
      • +
      • No upcoming periods: Sleep/inactive icon
      • +
      +
    • +
    +

    Example: binary_sensor.tibber_home_best_price_period

    +
      +
    • When ON: Shows a piggy bank (good time to save money)
    • +
    • When OFF with future periods: Shows a timer (waiting for next period)
    • +
    • When OFF without future periods: Shows a sleep icon (no periods expected soon)
    • +
    +

    State-Based Icons​

    +

    Sensors with text states (like cheap, normal, expensive) typically show icons that match the meaning:

    +
      +
    • Lower/better values β†’ More positive icons
    • +
    • Higher/worse values β†’ More cautionary icons
    • +
    • Normal/average values β†’ Neutral icons
    • +
    +

    The exact icons are chosen to be intuitive and meaningful in the Home Assistant ecosystem.

    +

    Troubleshooting​

    +

    Icon not changing:

    +
      +
    • Wait for the sensor state to actually change (prices update every 15 minutes)
    • +
    • Check in Developer Tools β†’ States that the sensor state is changing
    • +
    • If you've set a custom icon in your card, it will override the dynamic icon
    • +
    +

    Want to see the icon code:

    +
      +
    • Look at the entity in Developer Tools β†’ States
    • +
    • The icon attribute shows the current Material Design icon code (e.g., mdi:cash-plus)
    • +
    +

    Want different icons:

    +
      +
    • You can override icons in your card configuration (see examples above)
    • +
    • Or create a template sensor with your own icon logic
    • +
    +

    See Also​

    +
    + + \ No newline at end of file diff --git a/user/faq.html b/user/faq.html new file mode 100644 index 0000000..1f6ecfa --- /dev/null +++ b/user/faq.html @@ -0,0 +1,129 @@ + + + + + +FAQ - Frequently Asked Questions | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    FAQ - Frequently Asked Questions

    +

    Common questions about the Tibber Prices integration.

    +

    General Questions​

    +

    Why don't I see tomorrow's prices yet?​

    +

    Tomorrow's prices are published by Tibber around 13:00 CET (12:00 UTC in winter, 11:00 UTC in summer).

    +
      +
    • Before publication: Sensors show unavailable or use today's data
    • +
    • After publication: Integration automatically fetches new data within 15 minutes
    • +
    • No manual refresh needed - polling happens automatically
    • +
    +

    How often does the integration update data?​

    +
      +
    • API Polling: Every 15 minutes
    • +
    • Sensor Updates: On quarter-hour boundaries (00, 15, 30, 45 minutes)
    • +
    • Cache: Price data cached until midnight (reduces API load)
    • +
    +

    Can I use multiple Tibber homes?​

    +

    Yes! Use the "Add another home" option:

    +
      +
    1. Settings β†’ Devices & Services β†’ Tibber Prices
    2. +
    3. Click "Configure" β†’ "Add another home"
    4. +
    5. Select additional home from dropdown
    6. +
    7. Each home gets separate sensors with unique entity IDs
    8. +
    +

    Does this work without a Tibber subscription?​

    +

    No, you need:

    + +

    The integration is free, but requires Tibber as your electricity provider.

    +

    Configuration Questions​

    +

    What are good values for price thresholds?​

    +

    Default values work for most users:

    +
      +
    • High Price Threshold: 30% above average
    • +
    • Low Price Threshold: 15% below average
    • +
    +

    Adjust if:

    +
      +
    • You're in a market with high volatility β†’ increase thresholds
    • +
    • You want more sensitive ratings β†’ decrease thresholds
    • +
    • Seasonal changes β†’ review every few months
    • +
    +

    How do I optimize Best Price Period detection?​

    +

    Key parameters:

    +
      +
    • Flex: 15-20% is optimal (default 15%)
    • +
    • Min Distance: 5-10% recommended (default 5%)
    • +
    • Rating Levels: Start with "CHEAP + VERY_CHEAP" (default)
    • +
    • Relaxation: Keep enabled (helps find periods on expensive days)
    • +
    +

    See Period Calculation for detailed tuning guide.

    +

    Why do I sometimes only get 1 period instead of 2?​

    +

    This happens on high-price days when:

    +
      +
    • Few intervals meet your criteria
    • +
    • Relaxation is disabled
    • +
    • Flex is too low
    • +
    • Min Distance is too strict
    • +
    +

    Solutions:

    +
      +
    1. Enable relaxation (recommended)
    2. +
    3. Increase flex to 20-25%
    4. +
    5. Reduce min_distance to 3-5%
    6. +
    7. Add more rating levels (include "NORMAL")
    8. +
    +

    Troubleshooting​

    +

    Sensors show "unavailable"​

    +

    Common causes:

    +
      +
    1. API Token invalid β†’ Check token at developer.tibber.com
    2. +
    3. No internet connection β†’ Check HA network
    4. +
    5. Tibber API down β†’ Check status.tibber.com
    6. +
    7. Integration not loaded β†’ Restart Home Assistant
    8. +
    +

    Best Price Period is ON all day​

    +

    This means all intervals meet your criteria (very cheap day!):

    +
      +
    • Not an error - enjoy the low prices!
    • +
    • Consider tightening filters (lower flex, higher min_distance)
    • +
    • Or add automation to only run during first detected period
    • +
    +

    Prices are in wrong currency​

    +

    Integration uses currency from your Tibber subscription:

    +
      +
    • EUR β†’ displays in ct/kWh
    • +
    • NOK/SEK β†’ displays in ΓΈre/kWh
    • +
    +

    Cannot be changed (tied to your electricity contract).

    +

    Tomorrow data not appearing at all​

    +

    Check:

    +
      +
    1. Your Tibber home has hourly price contract (not fixed price)
    2. +
    3. API token has correct permissions
    4. +
    5. Integration logs for API errors (/config/home-assistant.log)
    6. +
    7. Tibber actually published data (check Tibber app)
    8. +
    +

    Automation Questions​

    +

    How do I run dishwasher during cheap period?​

    +
    automation:
    - alias: "Dishwasher during Best Price"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    - condition: time
    after: "20:00:00" # Only start after 8 PM
    action:
    - service: switch.turn_on
    target:
    entity_id: switch.dishwasher
    +

    See Automation Examples for more recipes.

    +

    Can I avoid peak prices automatically?​

    +

    Yes! Use Peak Price Period binary sensor:

    +
    automation:
    - alias: "Disable charging during peak prices"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_peak_price_period
    to: "on"
    action:
    - service: switch.turn_off
    target:
    entity_id: switch.ev_charger
    +
    +

    πŸ’‘ Still need help?

    +
    + + \ No newline at end of file diff --git a/user/glossary.html b/user/glossary.html new file mode 100644 index 0000000..2d5e593 --- /dev/null +++ b/user/glossary.html @@ -0,0 +1,82 @@ + + + + + +Glossary | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Glossary

    +

    Quick reference for terms used throughout the documentation.

    +

    A​

    +

    API Token +: Your personal access key from Tibber. Get it at developer.tibber.com.

    +

    Attributes +: Additional data attached to each sensor (timestamps, statistics, metadata). Access via state_attr() in templates.

    +

    B​

    +

    Best Price Period +: Automatically detected time window with favorable electricity prices. Ideal for scheduling dishwashers, heat pumps, EV charging.

    +

    Binary Sensor +: Sensor with ON/OFF state (e.g., "Best Price Period Active"). Used in automations as triggers.

    +

    C​

    +

    Currency Units +: Minor currency units used for display (ct for EUR, ΓΈre for NOK/SEK). Integration handles conversion automatically.

    +

    Coordinator +: Home Assistant component managing data fetching and updates. Polls Tibber API every 15 minutes.

    +

    D​

    +

    Dynamic Icons +: Icons that change based on sensor state (e.g., battery icons showing price level). See Dynamic Icons.

    +

    F​

    +

    Flex (Flexibility) +: Configuration parameter controlling how strict period detection is. Higher flex = more periods found, but potentially at higher prices.

    +

    I​

    +

    Interval +: 15-minute time slot with fixed electricity price (00:00-00:15, 00:15-00:30, etc.).

    +

    L​

    +

    Level +: Price classification within a day (LOWEST, LOW, NORMAL, HIGH, HIGHEST). Based on daily min/max prices.

    +

    M​

    +

    Min Distance +: Threshold requiring periods to be at least X% below daily average. Prevents detecting "cheap" periods during expensive days.

    +

    P​

    +

    Peak Price Period +: Time window with highest electricity prices. Use to avoid heavy consumption.

    +

    Price Info +: Complete dataset with all intervals (yesterday, today, tomorrow) including enriched statistics.

    +

    Q​

    +

    Quarter-Hourly +: 15-minute precision (4 intervals per hour, 96 per day).

    +

    R​

    +

    Rating +: Statistical price classification (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Based on 24h averages and thresholds.

    +

    Relaxation +: Automatic loosening of period detection filters when target period count isn't met. Ensures you always get usable periods.

    +

    S​

    +

    State +: Current value of a sensor (e.g., price in ct/kWh, "ON"/"OFF" for binary sensors).

    +

    State Class +: Home Assistant classification for long-term statistics (MEASUREMENT, TOTAL, or none).

    +

    T​

    +

    Trailing Average +: Average price over the past 24 hours from current interval.

    +

    Leading Average +: Average price over the next 24 hours from current interval.

    +

    V​

    +

    Volatility +: Measure of price stability (LOW, MEDIUM, HIGH). High volatility = large price swings = good for timing optimization.

    +
    +

    πŸ’‘ See Also:

    +
    + + \ No newline at end of file diff --git a/user/icon-colors.html b/user/icon-colors.html new file mode 100644 index 0000000..d335bb0 --- /dev/null +++ b/user/icon-colors.html @@ -0,0 +1,146 @@ + + + + + +Dynamic Icon Colors | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Dynamic Icon Colors

    +

    Many sensors in the Tibber Prices integration provide an icon_color attribute that allows you to dynamically color elements in your dashboard based on the sensor's state. This is particularly useful for visual dashboards where you want instant recognition of price levels or states.

    +

    What makes icon_color special: Instead of writing complex if/else logic to interpret the sensor state, you can simply use the icon_color value directly - it already contains the appropriate CSS color variable for the current state.

    +
    +

    Related: Many sensors also automatically change their icon based on state. See the Dynamic Icons Guide for details.

    +
    +

    What is icon_color?​

    +

    The icon_color attribute contains a CSS variable name (not a direct color value) that changes based on the sensor's state. For example:

    +
      +
    • Price level sensors: var(--success-color) for cheap, var(--error-color) for expensive
    • +
    • Binary sensors: var(--success-color) when in best price period, var(--error-color) during peak price
    • +
    • Volatility: var(--success-color) for low volatility, var(--error-color) for very high
    • +
    +

    Why CSS Variables?​

    +

    Using CSS variables like var(--success-color) instead of hardcoded colors (like #00ff00) has important advantages:

    +
      +
    • βœ… Automatic theme adaptation - Colors change with light/dark mode
    • +
    • βœ… Consistent with your theme - Uses your theme's color scheme
    • +
    • βœ… Future-proof - Works with custom themes and future HA updates
    • +
    +

    You can use the icon_color attribute directly in your card templates, or interpret the sensor state yourself if you prefer custom colors (see examples below).

    +

    Which Sensors Support icon_color?​

    +

    Many sensors provide the icon_color attribute for dynamic styling. To see if a sensor has this attribute:

    +
      +
    1. Go to Developer Tools β†’ States in Home Assistant
    2. +
    3. Search for your sensor (e.g., sensor.tibber_home_current_interval_price_level)
    4. +
    5. Look for icon_color in the attributes section
    6. +
    +

    Common sensor types with icon_color:

    +
      +
    • Price level sensors (e.g., current_interval_price_level)
    • +
    • Price rating sensors (e.g., current_interval_price_rating)
    • +
    • Volatility sensors (e.g., volatility_today)
    • +
    • Price trend sensors (e.g., price_trend_next_3h)
    • +
    • Binary sensors (e.g., best_price_period, peak_price_period)
    • +
    • Timing sensors (e.g., best_price_time_until_start, best_price_progress)
    • +
    +

    The colors adapt to the sensor's state - cheaper prices typically show green, expensive prices red, and neutral states gray.

    +

    When to Use icon_color vs. State Value​

    +

    Use icon_color when:

    +
      +
    • βœ… You can apply the CSS variable directly (icons, text colors, borders)
    • +
    • βœ… Your card supports CSS variable substitution
    • +
    • βœ… You want simple, clean code without if/else logic
    • +
    +

    Use the state value directly when:

    +
      +
    • ⚠️ You need to convert the color (e.g., CSS variable β†’ RGBA with transparency)
    • +
    • ⚠️ You need different colors than what icon_color provides
    • +
    • ⚠️ You're building complex conditional logic anyway
    • +
    +

    Example of when NOT to use icon_color:

    +
    # ❌ DON'T: Converting icon_color requires if/else anyway
    card:
    - background: |
    [[[
    const color = entity.attributes.icon_color;
    if (color === 'var(--success-color)') return 'rgba(76, 175, 80, 0.1)';
    if (color === 'var(--error-color)') return 'rgba(244, 67, 54, 0.1)';
    // ... more if statements
    ]]]

    # βœ… DO: Interpret state directly if you need custom logic
    card:
    - background: |
    [[[
    const level = entity.state;
    if (level === 'very_cheap' || level === 'cheap') return 'rgba(76, 175, 80, 0.1)';
    if (level === 'very_expensive' || level === 'expensive') return 'rgba(244, 67, 54, 0.1)';
    return 'transparent';
    ]]]
    +

    The advantage of icon_color is simplicity - if you need complex logic, you lose that advantage.

    +

    How to Use icon_color in Your Dashboard​

    + +

    The custom:button-card from HACS supports dynamic icon colors.

    +

    Example: Icon color only

    +
    type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_level
    name: Current Price Level
    show_state: true
    icon: mdi:cash
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]
    +

    Example: Icon AND state value with same color

    +
    type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_level
    name: Current Price Level
    show_state: true
    icon: mdi:cash
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]
    state:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--primary-text-color)';
    ]]]
    - font-weight: bold
    +

    Method 2: Entities Card with card_mod​

    +

    Use Home Assistant's built-in entities card with card_mod for icon and state colors:

    +
    type: entities
    entities:
    - entity: sensor.tibber_home_current_interval_price_level
    card_mod:
    style:
    hui-generic-entity-row:
    $: |
    state-badge {
    color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important;
    }
    .info {
    color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important;
    }
    +

    Method 3: Mushroom Cards​

    +

    The Mushroom cards support card_mod for icon and text colors:

    +

    Icon color only:

    +
    type: custom:mushroom-entity-card
    entity: binary_sensor.tibber_home_best_price_period
    name: Best Price Period
    icon: mdi:piggy-bank
    card_mod:
    style: |
    ha-card {
    --card-mod-icon-color: {{ state_attr('binary_sensor.tibber_home_best_price_period', 'icon_color') }};
    }
    +

    Icon and state value:

    +
    type: custom:mushroom-entity-card
    entity: sensor.tibber_home_current_interval_price_level
    name: Price Level
    card_mod:
    style: |
    ha-card {
    --card-mod-icon-color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }};
    --primary-text-color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }};
    }
    +

    Method 4: Glance Card with card_mod​

    +

    Combine multiple sensors with dynamic colors:

    +
    type: glance
    entities:
    - entity: sensor.tibber_home_current_interval_price_level
    - entity: sensor.tibber_home_volatility_today
    - entity: binary_sensor.tibber_home_best_price_period
    card_mod:
    style: |
    ha-card div.entity:nth-child(1) state-badge {
    color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important;
    }
    ha-card div.entity:nth-child(2) state-badge {
    color: {{ state_attr('sensor.tibber_home_volatility_today', 'icon_color') }} !important;
    }
    ha-card div.entity:nth-child(3) state-badge {
    color: {{ state_attr('binary_sensor.tibber_home_best_price_period', 'icon_color') }} !important;
    }
    +

    Complete Dashboard Example​

    +

    Here's a complete example combining multiple sensors with dynamic colors:

    +
    type: vertical-stack
    cards:
    # Current price status
    - type: horizontal-stack
    cards:
    - type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_level
    name: Price Level
    show_state: true
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]

    - type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_rating
    name: Price Rating
    show_state: true
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]

    # Binary sensors for periods
    - type: horizontal-stack
    cards:
    - type: custom:button-card
    entity: binary_sensor.tibber_home_best_price_period
    name: Best Price Period
    show_state: true
    icon: mdi:piggy-bank
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]

    - type: custom:button-card
    entity: binary_sensor.tibber_home_peak_price_period
    name: Peak Price Period
    show_state: true
    icon: mdi:alert-circle
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]

    # Volatility and trends
    - type: horizontal-stack
    cards:
    - type: custom:button-card
    entity: sensor.tibber_home_volatility_today
    name: Volatility
    show_state: true
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]

    - type: custom:button-card
    entity: sensor.tibber_home_price_trend_next_3h
    name: Next 3h Trend
    show_state: true
    styles:
    icon:
    - color: |
    [[[
    return entity.attributes.icon_color || 'var(--state-icon-color)';
    ]]]
    +

    CSS Color Variables​

    +

    The integration uses Home Assistant's standard CSS variables for theme compatibility:

    +
      +
    • var(--success-color) - Green (good/cheap/low)
    • +
    • var(--info-color) - Blue (informational)
    • +
    • var(--warning-color) - Orange (caution/expensive)
    • +
    • var(--error-color) - Red (alert/very expensive/high)
    • +
    • var(--state-icon-color) - Gray (neutral/normal)
    • +
    • var(--disabled-color) - Light gray (no data/inactive)
    • +
    +

    These automatically adapt to your theme's light/dark mode and custom color schemes.

    +

    Using Custom Colors​

    +

    If you want to override the theme colors with your own, you have two options:

    +

    Option 1: Use icon_color but Override in Your Theme​

    +

    Define custom colors in your theme configuration (themes.yaml):

    +
    my_custom_theme:
    # Override standard variables
    success-color: "#00C853" # Custom green
    error-color: "#D32F2F" # Custom red
    warning-color: "#F57C00" # Custom orange
    info-color: "#0288D1" # Custom blue
    +

    The icon_color attribute will automatically use your custom theme colors.

    +

    Option 2: Interpret State Value Directly​

    +

    Instead of using icon_color, read the sensor state and apply your own colors:

    +

    Example: Custom colors for price level

    +
    type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_level
    name: Current Price Level
    show_state: true
    icon: mdi:cash
    styles:
    icon:
    - color: |
    [[[
    const level = entity.state;
    if (level === 'very_cheap') return '#00E676'; // Bright green
    if (level === 'cheap') return '#66BB6A'; // Light green
    if (level === 'normal') return '#9E9E9E'; // Gray
    if (level === 'expensive') return '#FF9800'; // Orange
    if (level === 'very_expensive') return '#F44336'; // Red
    return 'var(--state-icon-color)'; // Fallback
    ]]]
    +

    Example: Custom colors for binary sensor

    +
    type: custom:button-card
    entity: binary_sensor.tibber_home_best_price_period
    name: Best Price Period
    show_state: true
    icon: mdi:piggy-bank
    styles:
    icon:
    - color: |
    [[[
    // Use state directly, not icon_color
    return entity.state === 'on' ? '#4CAF50' : '#9E9E9E';
    ]]]
    card:
    - background: |
    [[[
    return entity.state === 'on' ? 'rgba(76, 175, 80, 0.1)' : 'transparent';
    ]]]
    +

    Example: Custom colors for volatility

    +
    type: custom:button-card
    entity: sensor.tibber_home_volatility_today
    name: Volatility Today
    show_state: true
    styles:
    icon:
    - color: |
    [[[
    const volatility = entity.state;
    if (volatility === 'low') return '#4CAF50'; // Green
    if (volatility === 'moderate') return '#2196F3'; // Blue
    if (volatility === 'high') return '#FF9800'; // Orange
    if (volatility === 'very_high') return '#F44336'; // Red
    return 'var(--state-icon-color)';
    ]]]
    +

    Example: Custom colors for price rating

    +
    type: custom:button-card
    entity: sensor.tibber_home_current_interval_price_rating
    name: Price Rating
    show_state: true
    styles:
    icon:
    - color: |
    [[[
    const rating = entity.state;
    if (rating === 'low') return '#00C853'; // Dark green
    if (rating === 'normal') return '#78909C'; // Blue-gray
    if (rating === 'high') return '#D32F2F'; // Dark red
    return 'var(--state-icon-color)';
    ]]]
    +

    Which Approach Should You Use?​

    +
    Use CaseRecommended Approach
    Want theme-consistent colorsβœ… Use icon_color directly
    Want light/dark mode supportβœ… Use icon_color directly
    Want custom theme colorsβœ… Override CSS variables in theme
    Want specific hardcoded colors⚠️ Interpret state value directly
    Multiple themes with different colorsβœ… Use icon_color directly
    +

    Recommendation: Use icon_color whenever possible for better theme integration. Only interpret the state directly if you need very specific color values that shouldn't change with themes.

    +

    Troubleshooting​

    +

    Icons not changing color:

    +
      +
    • Make sure you're using a card that supports custom styling (like custom:button-card or card_mod)
    • +
    • Check that the entity actually has the icon_color attribute (inspect in Developer Tools β†’ States)
    • +
    • Verify your Home Assistant theme supports the CSS variables
    • +
    +

    Colors look wrong:

    +
      +
    • The colors are theme-dependent. Try switching themes to see if they appear correctly
    • +
    • Some custom themes may override the standard CSS variables with unexpected colors
    • +
    +

    Want different colors?

    +
      +
    • You can override the colors in your theme configuration
    • +
    • Or use conditional logic in your card templates based on the state value instead of icon_color
    • +
    +

    See Also​

    +
    + + \ No newline at end of file diff --git a/user/img/charts/rolling-window-autozoom.jpg b/user/img/charts/rolling-window-autozoom.jpg new file mode 100644 index 0000000..6cb2345 Binary files /dev/null and b/user/img/charts/rolling-window-autozoom.jpg differ diff --git a/user/img/charts/rolling-window.jpg b/user/img/charts/rolling-window.jpg new file mode 100644 index 0000000..a113a34 Binary files /dev/null and b/user/img/charts/rolling-window.jpg differ diff --git a/user/img/charts/today.jpg b/user/img/charts/today.jpg new file mode 100644 index 0000000..8674bb4 Binary files /dev/null and b/user/img/charts/today.jpg differ diff --git a/user/img/docusaurus-social-card.jpg b/user/img/docusaurus-social-card.jpg new file mode 100644 index 0000000..ffcb448 Binary files /dev/null and b/user/img/docusaurus-social-card.jpg differ diff --git a/user/img/docusaurus.png b/user/img/docusaurus.png new file mode 100644 index 0000000..f458149 Binary files /dev/null and b/user/img/docusaurus.png differ diff --git a/user/img/entities-overview.jpg b/user/img/entities-overview.jpg new file mode 100644 index 0000000..5238104 Binary files /dev/null and b/user/img/entities-overview.jpg differ diff --git a/user/img/header-dark.svg b/user/img/header-dark.svg new file mode 100644 index 0000000..5c06e1c --- /dev/null +++ b/user/img/header-dark.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + Tibber Prices + + Custom Integration + + + + + + for + + + + + + + + + Tibber + diff --git a/user/img/header.svg b/user/img/header.svg new file mode 100644 index 0000000..1ed0fba --- /dev/null +++ b/user/img/header.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + € + + + + Tibber Prices + + Custom Integration + + + + + + for + + + + + + + + + Tibber + diff --git a/user/img/logo.png b/user/img/logo.png new file mode 100644 index 0000000..728ec31 Binary files /dev/null and b/user/img/logo.png differ diff --git a/user/img/logo.svg b/user/img/logo.svg new file mode 100644 index 0000000..ed55f1d --- /dev/null +++ b/user/img/logo.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + € + diff --git a/user/img/undraw_docusaurus_mountain.svg b/user/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000..af961c4 --- /dev/null +++ b/user/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/user/img/undraw_docusaurus_react.svg b/user/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000..94b5cf0 --- /dev/null +++ b/user/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/user/img/undraw_docusaurus_tree.svg b/user/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000..d9161d3 --- /dev/null +++ b/user/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/user/index.html b/user/index.html new file mode 100644 index 0000000..d9bb88c --- /dev/null +++ b/user/index.html @@ -0,0 +1,18 @@ + + + + + +Home | Tibber Prices Integration + + + + + + + + + +
    Tibber Prices for Tibber

    Tibber Prices Integration

    Custom Home Assistant integration for Tibber electricity prices

    ⚑ Quarter-Hourly Precision

    Track electricity prices with 15-minute intervals. Get accurate price data synchronized with your Tibber smart meter for optimal energy planning.

    πŸ“Š Smart Price Analysis

    Automatic detection of best and peak price periods with configurable filters. Statistical analysis with trailing/leading 24h averages for context.

    🎨 Beautiful Visualizations

    Auto-generated ApexCharts configurations with dynamic Y-axis scaling. Dynamic icons and color-coded sensors for stunning dashboards.

    πŸ€– Automation Ready

    Control energy-intensive appliances based on price levels. Run dishwashers, heat pumps, and EV chargers during cheap periods automatically.

    πŸ’° Multi-Currency Support

    Full support for EUR (ct), NOK (ΓΈre), SEK (ΓΆre) with proper minor units. Display prices the way you're used to seeing them.

    πŸ”§ HACS Integration

    Easy installation via Home Assistant Community Store. Regular updates and active development with comprehensive documentation.

    + + \ No newline at end of file diff --git a/user/installation.html b/user/installation.html new file mode 100644 index 0000000..7c2081e --- /dev/null +++ b/user/installation.html @@ -0,0 +1,27 @@ + + + + + +Installation | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Installation

    +
    +

    Note: This guide is under construction. For now, please refer to the main README for installation instructions.

    +
    + +

    Coming soon...

    +

    Manual Installation​

    +

    Coming soon...

    +

    Configuration​

    +

    Coming soon...

    + + \ No newline at end of file diff --git a/user/intro.html b/user/intro.html new file mode 100644 index 0000000..385ef7a --- /dev/null +++ b/user/intro.html @@ -0,0 +1,66 @@ + + + + + +User Documentation | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    User Documentation

    +

    Welcome to the Tibber Prices custom integration for Home Assistant! This community-developed integration enhances your Home Assistant installation with detailed electricity price data from Tibber, featuring quarter-hourly precision, statistical analysis, and intelligent ratings.

    +
    Not affiliated with Tibber

    This is an independent, community-maintained custom integration. It is not an official Tibber product and is not affiliated with or endorsed by Tibber AS.

    +

    πŸ“š Documentation​

    + +

    πŸš€ Quick Start​

    +
      +
    1. Install via HACS (add as custom repository)
    2. +
    3. Add Integration in Home Assistant β†’ Settings β†’ Devices & Services
    4. +
    5. Enter Tibber API Token (get yours at developer.tibber.com)
    6. +
    7. Configure Price Thresholds (optional, defaults work for most users)
    8. +
    9. Start Using Sensors in automations, dashboards, and scripts!
    10. +
    +

    ✨ Key Features​

    +
      +
    • Quarter-hourly precision - 15-minute intervals for accurate price tracking
    • +
    • Statistical analysis - Trailing/leading 24h averages for context
    • +
    • Price ratings - LOW/NORMAL/HIGH classification based on your thresholds
    • +
    • Best/Peak hour detection - Automatic detection of cheapest/peak periods with configurable filters (learn how)
    • +
    • Beautiful ApexCharts - Auto-generated chart configurations with dynamic Y-axis scaling (see examples)
    • +
    • Chart metadata sensor - Dynamic chart configuration for optimal visualization
    • +
    • Multi-currency support - EUR, NOK, SEK with proper minor units (ct, ΓΈre, ΓΆre)
    • +
    + + +

    🀝 Need Help?​

    + +
    +

    Note: These guides are for end users. If you want to contribute to development, see the Developer Documentation.

    + + \ No newline at end of file diff --git a/user/lunr-index-1764985265728.json b/user/lunr-index-1764985265728.json new file mode 100644 index 0000000..0057541 --- /dev/null +++ b/user/lunr-index-1764985265728.json @@ -0,0 +1 @@ +{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,822.282,1,952.339]],["content/0",[]],["keywords/0",[]],["title/1",[2,120.117,3,476.229]],["content/1",[3,6.877,4,5.284,5,5.175,6,8.818,7,8.399,8,4.286,9,6.062,10,6.062,11,6.062,12,4.874,13,6.062,14,12.077,15,12.077,16,12.077,17,12.077,18,6.062,19,12.077,20,12.077,21,12.077,22,9.952,23,12.077,24,10.795]],["keywords/1",[]],["title/2",[2,120.117,25,466.17]],["content/2",[2,2.018,25,5.64,26,3.405,27,8.279,28,2.875,29,5.925,30,12.889,31,4.328,32,7.632,33,8.279,34,9.262,35,9.262,36,5.035,37,7.441,38,5.925,39,4.898,40,9.262,41,7.632,42,9.262,43,9.262,44,5.711,45,7.148,46,7.148,47,9.262,48,4.328,49,6.441,50,7.632,51,6.762,52,3.667,53,5.711,54,7.148,55,8.279,56,4.328,57,4.649,58,9.262,59,5.519,60,4.232,61,9.262,62,3.345,63,4.898]],["keywords/2",[]],["title/3",[2,120.117,64,219.832]],["content/3",[2,1.983,3,4.25,12,5.297,25,4.16,26,3.496,28,2.951,33,8.499,46,7.338,49,6.612,50,7.835,52,3.764,62,4.741,64,3.629,65,4.141,66,4.344,67,4.773,68,5.511,69,9.508,70,8.499,71,8.499,72,9.508,73,7.338,74,8.499,75,6.612,76,6.083,77,9.508,78,5.486,79,9.508,80,5.169,81,8.499,82,4.074,83,5.169,84,6.083]],["keywords/3",[]],["title/4",[53,656.95,54,822.282]],["content/4",[2,1.961,3,4.531,4,4.435,31,4.737,37,8.731,48,4.737,56,6.408,59,8.171,85,9.061,86,10.137,87,8.353,88,10.012,89,11.299,90,7.824,91,10.137,92,6.485,93,10.137,94,4.848,95,7.824,96,10.137,97,4.435,98,9.061,99,7.824,100,8.353,101,7.401,102,7.401,103,10.137,104,6.485]],["keywords/4",[]],["title/5",[105,908.14,106,414.93,107,523.962]],["content/5",[2,1.212,10,5.394,76,6.875,84,6.875,92,6.875,94,5.139,106,6.515,108,6.875,109,5.534,110,9.606,111,10.746,112,6.014,113,10.746,114,7.473,115,10.746,116,8.294,117,5.534,118,3.73,119,9.606,120,3.622,121,7.846,122,1.723,123,6.875,124,9.606,125,9.606,126,10.746,127,3.262,128,10.746,129,3.562,130,8.855,131,6.014]],["keywords/5",[]],["title/6",[132,497.833,133,456.548]],["content/6",[]],["keywords/6",[]],["title/7",[132,497.833,134,579.198]],["content/7",[]],["keywords/7",[]],["title/8",[135,940.755]],["content/8",[2,1.23,3,3.925,4,1.394,7,3.851,8,1.965,9,1.599,25,1.394,26,1.171,28,0.989,31,1.488,39,1.684,54,2.458,60,2.53,64,2.052,65,1.005,68,3.686,84,2.037,104,2.037,107,1.837,108,2.037,112,1.782,121,2.325,122,2.51,127,0.728,129,1.835,132,2.587,133,4.261,134,3.994,135,7.261,136,2.458,137,6.362,138,5.01,139,3.284,140,2.847,141,5.67,142,1.731,143,1.837,144,1.782,145,4.95,146,4.563,147,2.458,148,3.185,149,1.837,150,6.053,151,4.445,152,3.981,153,5.364,154,4.913,155,3.185,156,3.185,157,2.624,158,4.95,159,3.783,160,3.185,161,4.274,162,3.185,163,4.563,164,1.599,165,3.185,166,2.624,167,3.185,168,5.537,169,5.537,170,4.274,171,4.95,172,2.624,173,2.215,174,5.414,175,5.414,176,6.566,177,6.053,178,6.566,179,7.848,180,5.364,181,4.95,182,2.847,183,3.185,184,5.537,185,4.95,186,3.542,187,3.185,188,5.537,189,3.185,190,3.185,191,3.185,192,1.898,193,6.106,194,3.686,195,3.185,196,3.185,197,1.599,198,2.12,199,4.377,200,3.185,201,3.185,202,1.837,203,3.185,204,2.624,205,3.185,206,3.185,207,3.185,208,2.12,209,2.037,210,1.837,211,1.365,212,3.783,213,1.684,214,4.274,215,1.038,216,4.043,217,2.037,218,1.964,219,2.458,220,2.847,221,1.964,222,1.171,223,2.215,224,1.782,225,3.185,226,3.185,227,3.185,228,3.185,229,2.53,230,3.185,231,1.964,232,3.185,233,3.185,234,2.458,235,1.394,236,3.185,237,2.847,238,3.185,239,4.563,240,2.624,241,2.624,242,1.731,243,3.686,244,2.847,245,2.037,246,2.215,247,2.847,248,2.458,249,3.185,250,2.325,251,2.847,252,3.185,253,3.185]],["keywords/8",[]],["title/9",[254,794.503]],["content/9",[2,1.359,4,2.043,5,1.44,8,0.648,9,0.916,10,0.916,11,1.687,12,1.885,18,0.916,25,0.799,26,3.349,28,2.376,29,2.15,31,1.57,48,0.853,52,1.33,59,1.087,60,1.535,62,3.042,64,1.4,65,2.141,67,2.344,68,4.528,74,1.631,75,1.269,78,1.053,89,2.769,94,0.873,106,2.134,107,1.053,112,1.021,114,1.269,118,2.002,120,1.133,122,2.137,127,2.351,129,2.249,132,3.171,133,2.486,134,0.992,136,1.408,138,4.352,139,2.088,141,1.408,142,2.539,143,1.053,144,3.246,149,1.053,152,2.454,153,3.41,154,4.283,159,0.94,161,1.408,163,1.504,173,2.337,174,2.88,175,2.88,180,3.41,182,1.631,193,1.269,194,1.215,197,2.912,198,2.237,199,3.456,210,1.053,212,5.007,213,3.589,214,2.594,215,2.969,216,1.332,217,1.167,218,1.125,221,1.125,222,2.133,224,1.881,229,2.134,231,1.125,235,1.47,239,2.769,240,1.504,242,0.992,243,1.215,245,1.167,246,1.269,248,3.605,254,2.88,255,2.072,256,4.454,257,2.594,258,2.15,259,4.228,260,1.631,261,1.125,262,5.238,263,1.825,264,3.004,265,1.504,266,1.631,267,1.631,268,1.053,269,5.238,270,1.504,271,1.053,272,0.799,273,1.332,274,1.825,275,1.825,276,1.825,277,1.408,278,2.65,279,1.631,280,1.332,281,0.799,282,1.825,283,1.825,284,1.825,285,1.504,286,1.504,287,1.631,288,1.825,289,1.215,290,1.504,291,1.408,292,2.347,293,1.687,294,2.072,295,1.504,296,1.825,297,2.405,298,1.827,299,6.125,300,5.794,301,4.185,302,1.332,303,3.154,304,1.777,305,2.454,306,1.825,307,4.477,308,2.002,309,1.825,310,3.605,311,2.841,312,2.237,313,2.769,314,1.825,315,1.939,316,3.36,317,1.825,318,1.408,319,1.631,320,1.631,321,1.825,322,1.125,323,4.78,324,3.605,325,3.248,326,3.109,327,1.631,328,2.539,329,1.939,330,3.41,331,3.004,332,1.504,333,2.454,334,3.456,335,1.332,336,1.825,337,1.57,338,1.504,339,1.504,340,1.939,341,2.072,342,2.237,343,1.125,344,1.825,345,1.269,346,1.631,347,1.504,348,1.408,349,1.332,350,1.408,351,1.332,352,2.454,353,1.631,354,1.332,355,1.053,356,1.825,357,1.504,358,1.631,359,1.825,360,1.269,361,1.825,362,0.916,363,0.709,364,1.332,365,4.044,366,2.694,367,1.748,368,1.332,369,3.004,370,1.167,371,1.825,372,1.825,373,1.631,374,2.337,375,0.965,376,0.94,377,0.965,378,1.504,379,1.825,380,1.021,381,1.825,382,1.408,383,1.631,384,1.825,385,1.825,386,1.053,387,1.825,388,1.825,389,1.021,390,1.825,391,1.631,392,1.504,393,1.631,394,1.332,395,1.504]],["keywords/9",[]],["title/10",[396,1151.741]],["content/10",[13,5.561,59,6.601,60,5.062,106,5.062,109,7.492,129,3.672,132,5.177,133,4.748,136,8.551,138,6.556,174,6.832,175,6.832,271,6.392,281,4.848,362,5.561,363,4.304,386,6.392,396,9.904,397,11.079,398,14.549,399,8.551,400,10.118,401,11.989,402,9.129,403,6.392]],["keywords/10",[]],["title/11",[118,183.424,138,282.984,139,313.434,404,577.789,405,577.789]],["content/11",[39,5.073,56,4.483,62,4.77,118,3.951,123,8.448,127,2.194,132,4.483,135,9.642,141,7.404,151,4.288,159,4.94,197,4.815,245,6.137,250,7.004,311,4.698,343,5.915,386,5.535,404,10.882,406,6.386,407,8.575,408,7.905,409,9.593,410,6.671,411,7.905,412,9.593,413,9.593,414,8.575,415,8.575,416,9.593,417,8.575,418,6.137,419,8.575,420,9.593,421,8.575,422,7.905,423,9.593,424,6.137,425,9.593,426,8.575,427,8.575]],["keywords/11",[]],["title/12",[129,353.142,139,476.229]],["content/12",[]],["keywords/12",[]],["title/13",[428,994.453]],["content/13",[2,1.155,4,2.955,10,3.39,12,2.726,18,3.39,56,3.156,57,3.39,65,2.131,68,5.798,88,7.479,94,3.23,122,1.983,127,1.545,131,3.78,134,3.672,139,3.019,152,3.968,154,3.78,194,4.496,199,6.103,210,3.897,212,7.111,213,5.417,215,4.034,221,4.165,222,3.766,256,3.572,259,6.932,280,4.931,292,3.558,297,5.275,299,4.024,300,4.024,301,4.165,308,4.024,322,4.165,333,9.034,334,8.844,338,5.566,339,5.566,341,6.316,342,9.193,345,7.123,348,5.213,364,4.931,365,6.103,370,4.321,374,4.697,428,7.906,429,6.754,430,4.931,431,6.754,432,4.931,433,6.038,434,6.038,435,5.566]],["keywords/13",[]],["title/14",[139,476.229,213,563.387]],["content/14",[]],["keywords/14",[]],["title/15",[2,89.223,333,577.808,364,577.808,436,378.441]],["content/15",[2,1.53,5,4.931,18,3.965,28,2.452,31,3.691,48,3.691,57,3.965,59,4.706,60,3.609,64,1.63,65,2.492,122,1.266,127,2.632,133,3.384,138,4.644,142,4.294,143,4.557,144,4.42,152,4.353,154,6.439,174,4.87,175,4.87,199,6.856,215,2.575,222,2.904,229,3.609,254,4.87,256,4.176,259,5.776,281,3.456,292,2.965,293,2.853,294,4.87,303,4.294,310,6.096,312,5.258,313,6.508,325,5.493,326,5.258,330,5.767,333,5.767,334,8.886,343,4.87,362,3.965,374,5.493,386,4.557,428,6.096,430,5.767,437,5.767,438,5.493,439,5.258,440,7.898,441,7.06,442,7.06,443,7.06,444,5.493]],["keywords/15",[]],["title/16",[68,294.412,211,300.481,212,361.085,215,228.591,370,448.574]],["content/16",[5,3.131,26,5.281,56,3.414,60,3.338,68,3.068,114,5.081,118,1.911,122,2.461,127,1.671,133,3.131,134,3.972,138,6.196,142,5.907,143,4.215,144,4.089,149,4.215,150,6.02,152,2.343,153,5.335,154,4.089,174,4.505,175,4.505,212,3.762,214,5.639,215,2.382,216,5.335,219,8.386,221,6.7,222,4.769,229,3.338,254,4.505,256,3.864,259,3.668,292,2.8,293,2.639,297,3.762,299,4.353,300,6.474,301,4.505,307,5.639,308,4.353,325,5.081,326,4.864,330,5.335,334,4.353,338,8.953,339,8.953,340,4.215,355,4.215,362,3.668,365,4.353,374,5.081,430,5.335,438,5.081,445,6.02,446,7.306,447,7.306,448,7.306,449,5.335,450,7.306,451,7.306]],["keywords/16",[]],["title/17",[68,264.296,212,324.149,215,205.208,341,388.148,342,419.051,377,332.868]],["content/17",[2,0.684,5,2.6,8,2.153,9,3.045,12,5.268,60,2.772,68,4.859,75,4.219,78,8.157,118,1.587,122,2.589,127,1.388,129,2.011,133,2.6,138,2.448,143,3.5,144,3.395,152,3.711,174,3.741,175,3.741,211,2.6,212,3.124,215,1.978,221,3.741,222,5.744,229,2.772,231,3.741,254,3.741,256,3.208,259,3.045,291,4.682,292,2.43,297,3.124,299,3.615,300,3.615,301,3.741,307,4.682,324,4.682,325,4.219,326,4.039,330,4.429,340,3.5,342,6.279,343,3.741,345,6.56,347,4.999,348,8.932,349,4.429,350,4.682,351,4.429,365,3.615,370,3.881,374,4.219,432,6.887,433,5.423,435,4.999,438,4.219,439,6.279,452,4.999,453,6.067,454,5.423,455,8.431,456,9.432,457,6.067,458,5.423,459,6.067,460,6.067,461,6.067,462,5.423,463,6.067,464,6.067,465,6.067,466,6.067,467,4.999,468,6.067,469,6.067,470,5.423,471,5.423]],["keywords/17",[]],["title/18",[28,245.655,311,387.575,367,296.271,472,791.352]],["content/18",[]],["keywords/18",[]],["title/19",[25,346.27,28,245.655,269,610.789,377,418.482]],["content/19",[2,1.332,31,5.519,36,6.421,44,7.283,52,6.004,62,4.266,63,8.02,65,3.726,114,8.214,234,9.116,311,5.784,378,12.498,473,10.558,474,7.556,475,11.811,476,9.116,477,11.811,478,7.556,479,10.558,480,11.811,481,9.116,482,11.811]],["keywords/19",[]],["title/20",[28,281.909,269,700.93,328,493.72]],["content/20",[2,1.652,29,7.162,52,4.432,57,5.619,65,3.532,83,6.086,142,6.086,147,8.64,149,6.459,354,8.174,380,6.265,474,9.371,476,8.64,478,7.162,483,10.007,484,10.007,485,11.195,486,9.225,487,7.005,488,11.195,489,9.225,490,11.195,491,9.225,492,7.162,493,11.195,494,10.007,495,11.195]],["keywords/20",[]],["title/21",[215,257.988,299,471.531,300,471.531,301,487.981]],["content/21",[4,2.748,18,3.152,26,3.562,68,4.068,118,3.971,122,3.036,127,2.216,138,2.534,142,3.414,149,3.623,152,2.014,154,3.514,197,4.863,199,3.742,208,4.181,211,2.691,212,4.989,213,5.123,215,2.047,223,4.367,255,3.872,256,3.321,259,3.152,262,4.847,298,6.43,299,5.772,300,5.772,301,7.293,307,10.262,308,7.047,334,3.742,337,2.934,341,3.872,360,6.737,373,5.613,377,3.321,386,3.623,496,4.847,497,6.28,498,6.28,499,6.28,500,15.18,501,13.296,502,4.847,503,6.737,504,5.613,505,4.017,506,5.613,507,6.28,508,6.28,509,3.514,510,5.613,511,4.181,512,4.181]],["keywords/21",[]],["title/22",[2,89.223,64,163.29,65,249.664,310,610.789]],["content/22",[2,1.836,12,3.414,26,3.11,52,3.349,62,4.367,64,3.177,65,3.814,67,6.069,82,3.625,83,4.598,122,3.067,129,2.804,139,3.781,144,4.734,204,6.97,222,4.445,229,3.865,303,4.598,312,5.631,313,6.97,330,8.827,331,7.561,352,6.176,360,5.882,382,6.528,383,7.561,454,7.561,487,4.045,513,5.411,514,6.176,515,8.458,516,7.561,517,6.528,518,8.458,519,8.458,520,8.458]],["keywords/22",[]],["title/23",[295,1061.704]],["content/23",[]],["keywords/23",[]],["title/24",[197,534.797,213,563.387]],["content/24",[0,9.877,122,2.918,142,6.957,259,6.424,292,3.297,340,7.383,521,12.797,522,7.625,523,10.208,524,11.439,525,8.52,526,11.439,527,10.545,528,11.439]],["keywords/24",[]],["title/25",[68,332.274,197,397.245,212,407.521,213,418.482]],["content/25",[5,4.797,18,5.619,62,4.043,122,2.777,152,3.59,154,6.265,199,6.67,215,3.65,259,5.619,292,3.775,297,7.544,298,6.086,334,6.67,340,6.459,365,6.67,386,6.459,441,10.007,522,6.67,523,9.371,524,10.007,525,7.453,527,9.225,528,10.007,529,10.007]],["keywords/25",[]],["title/26",[122,145.577,530,811.792,531,908.14]],["content/26",[]],["keywords/26",[]],["title/27",[278,486.768,293,384.805]],["content/27",[122,2.728,146,10.065,256,6.459,262,9.427,293,6.672,303,6.64,363,6.611,532,12.214,533,10.918,534,12.214,535,12.214,536,12.214,537,12.214,538,12.214]],["keywords/27",[]],["title/28",[139,405.947,363,352.787,539,811.792]],["content/28",[62,4.412,108,7.814,122,1.958,139,5.46,222,4.491,229,5.581,278,5.581,292,3.993,355,7.047,367,4.573,368,8.918,370,7.814,533,10.918,539,13.851,540,12.214,541,12.214,542,11.96,543,12.214,544,12.214]],["keywords/28",[]],["title/29",[292,274.518,545,634.805]],["content/29",[4,5.406,120,5.261,122,2.502,139,5.523,256,6.534,292,4.022,312,10.391,365,7.362,366,7.128,367,6.405,368,9.021,546,12.355,547,11.396,548,8.592]],["keywords/29",[]],["title/30",[92,681.56,123,681.56]],["content/30",[2,1.409,62,4.515,64,2.579,65,3.943,67,6.274,83,6.795,118,3.27,132,5.841,215,4.075,242,6.795,243,8.321,299,7.448,300,7.448,512,8.321,549,10.058,550,11.173,551,12.499,552,11.173,553,12.499]],["keywords/30",[]],["title/31",[374,896.052]],["content/31",[]],["keywords/31",[]],["title/32",[554,1288.435]],["content/32",[18,5.137,68,6.556,94,4.894,138,4.13,139,4.574,142,5.563,152,3.282,154,7.723,199,6.098,212,7.107,215,5.091,222,5.074,299,6.098,300,6.098,301,6.31,333,7.472,334,9.959,341,6.31,342,9.188,343,6.31,345,7.117,367,3.831,370,6.547,386,5.904,434,9.148,435,8.433,442,9.148,443,9.148]],["keywords/32",[]],["title/33",[62,465.377]],["content/33",[]],["keywords/33",[]],["title/34",[555,877.89,556,1065.367]],["content/34",[375,8.364,376,8.145]],["keywords/34",[]],["title/35",[62,384.805,311,521.777]],["content/35",[375,8.364,376,8.145]],["keywords/35",[]],["title/36",[2,120.117,63,563.387]],["content/36",[375,8.364,376,8.145]],["keywords/36",[]],["title/37",[129,353.142,557,497.833]],["content/37",[]],["keywords/37",[]],["title/38",[558,952.339,559,952.339]],["content/38",[2,1.638,52,5.753,60,6.639,292,3.744,560,14.531,561,11.215,562,14.531,563,14.531]],["keywords/38",[]],["title/39",[2,102.39,52,359.524,557,424.363]],["content/39",[375,8.364,376,8.145]],["keywords/39",[]],["title/40",[97,397.373,557,424.363,561,700.93]],["content/40",[2,1.496,31,6.202,64,2.739,78,7.658,97,5.807,129,4.399,152,4.256,222,4.88,329,7.658,363,5.156,380,7.428,564,10.244,565,9.23,566,13.272,567,10.937]],["keywords/40",[]],["title/41",[48,294.137,97,275.429,127,143.976,131,352.271,152,201.855,568,518.686]],["content/41",[2,1.627,5,2.384,8,3.884,11,4.424,13,4.424,31,5.113,44,3.43,48,4.118,64,2.568,65,3.927,75,6.129,94,2.66,97,6.616,114,3.869,122,2.175,132,2.6,133,3.776,138,2.245,152,4.35,194,3.704,209,3.559,211,2.384,223,3.869,224,3.113,234,4.294,311,2.725,328,3.024,403,3.21,436,2.66,479,4.973,514,4.062,557,5.113,567,4.584,568,4.584,569,5.563,570,4.062,571,3.559,572,4.973,573,10.257,574,7.99,575,3.559,576,7.262,577,4.973,578,4.973,579,7.61,580,5.084,581,5.563,582,3.43,583,3.567,584,7.417,585,2.487,586,3.21,587,6.52,588,4.294,589,4.062,590,3.43,591,3.869,592,4.973,593,5.563,594,4.584,595,5.563,596,4.973,597,3.869,598,3.21,599,5.563,600,4.584,601,4.062,602,4.973,603,3.869,604,4.973,605,4.973,606,5.563,607,4.584,608,5.563,609,5.563]],["keywords/41",[]],["title/42",[2,79.056,63,370.797,127,160.382,131,392.411,380,392.411]],["content/42",[2,1.364,5,2.789,25,2.848,31,3.041,36,7.365,52,2.577,60,4.55,63,6.396,64,2.055,78,5.745,97,2.848,117,3.352,122,2.172,132,3.041,133,4.267,159,3.352,194,4.333,211,4.267,235,4.357,311,3.187,329,5.745,380,6.768,403,3.755,487,5.784,557,3.041,565,4.526,570,4.752,571,4.164,575,4.164,582,4.013,583,2.122,584,8.7,585,2.909,586,3.755,587,7.206,589,7.27,597,4.526,598,5.745,603,6.925,610,6.508,611,5.818,612,4.998,613,4.333,614,6.508,615,6.508,616,8.901,617,5.363,618,8.205,619,6.508,620,6.508,621,5.363,622,5.818,623,6.508,624,6.508,625,7.27,626,6.508,627,8.901,628,6.508,629,5.818,630,6.508,631,5.818,632,6.508,633,5.818,634,6.508]],["keywords/42",[]],["title/43",[2,70.969,97,275.429,127,143.976,131,352.271,545,375.064,612,315.976]],["content/43",[2,1.533,5,2.396,8,3.897,11,2.807,22,4.608,28,1.736,31,4.135,36,4.811,44,3.448,48,5.131,64,1.154,65,1.764,78,3.226,97,6.874,122,2.518,127,1.279,132,2.613,133,3.792,138,2.257,152,3.521,194,3.723,211,2.396,235,5.462,329,3.226,380,3.13,403,3.226,436,2.674,444,3.889,505,5.661,557,2.613,561,4.316,565,3.889,570,6.461,575,3.578,582,3.448,583,1.823,584,8.104,585,2.5,586,3.226,587,8.618,588,6.83,589,8.017,590,3.448,597,3.889,598,3.226,600,4.608,601,4.083,602,4.999,603,3.889,604,4.999,612,4.442,613,3.723,621,4.608,635,5.592,636,3.723,637,4.999,638,8.682,639,5.592,640,5.592,641,6.83,642,5.592,643,4.999,644,5.592,645,4.608,646,4.999,647,7.91,648,8.849,649,4.999,650,4.608,651,5.592,652,4.316,653,5.592,654,5.592,655,4.083,656,4.999]],["keywords/43",[]],["title/44",[64,172.983,127,119.524,131,292.442,418,334.297,565,363.411,580,301.491,657,430.594]],["content/44",[2,0.59,5,2.244,8,1.859,11,5.278,12,2.114,44,3.229,60,2.393,64,1.733,65,1.652,76,3.35,78,4.846,97,2.292,110,7.507,122,2.367,127,1.198,132,3.924,133,5.155,138,2.114,194,3.487,211,2.244,242,4.566,302,3.824,341,5.179,377,2.77,403,6.94,418,3.35,467,4.316,557,4.913,565,5.841,574,3.824,575,5.373,578,4.682,580,6.066,582,5.179,583,4.581,584,9.143,585,2.341,586,7.597,587,7.845,589,3.824,590,3.229,592,4.682,596,4.682,598,6.066,600,4.316,601,3.824,655,3.824,657,4.316,658,4.316,659,4.682,660,5.237,661,13.167,662,10.514,663,12.028,664,5.237,665,10.514,666,5.237,667,8.398,668,5.237,669,5.237,670,5.237,671,8.398,672,5.237,673,10.514,674,7.507,675,8.398,676,8.398,677,5.237,678,5.237,679,5.237,680,5.237,681,4.682]],["keywords/44",[]],["title/45",[64,129.884,97,275.429,127,143.976,131,352.271,152,201.855,268,363.171]],["content/45",[2,1.087,5,2.675,8,3.423,10,3.134,13,3.134,22,5.144,64,2.432,94,2.986,97,5.8,122,2.297,127,1.428,132,2.917,133,2.675,134,5.243,138,2.52,152,4.594,170,9.095,171,5.581,202,3.602,235,2.732,268,3.602,272,5.156,281,2.732,289,4.156,297,3.215,302,4.558,380,3.494,403,3.602,444,4.342,557,2.917,573,5.144,574,7.042,575,3.994,580,3.602,582,3.85,583,2.035,584,5.747,585,4.311,586,3.602,587,5.747,588,9.095,598,3.602,612,4.841,617,5.144,622,8.621,636,4.156,682,6.243,683,10.534,684,5.144,685,6.243,686,5.581,687,4.819,688,8.621,689,5.581,690,6.243,691,6.243,692,4.342,693,6.243,694,6.243,695,5.581,696,6.243,697,3.994,698,8.195,699,6.243,700,4.342,701,6.243,702,4.342,703,4.558,704,6.243,705,5.144,706,6.243,707,6.243,708,6.243]],["keywords/45",[]],["title/46",[60,414.93,65,286.51,67,455.871]],["content/46",[375,8.364,376,8.145]],["keywords/46",[]],["title/47",[259,534.797,292,274.518]],["content/47",[2,0.946,4,3.672,11,4.213,12,3.387,62,5.074,64,1.732,112,4.697,122,1.345,127,1.92,129,3.985,133,6.573,138,3.387,139,3.751,142,4.562,144,6.728,173,8.361,197,4.213,224,4.697,231,7.413,239,6.915,242,4.562,254,7.413,255,5.175,256,6.357,257,6.477,258,5.369,259,7.052,260,7.502,261,5.175,264,7.502,266,7.502,271,4.842,273,6.127,277,6.477,278,5.493,279,7.502,280,6.127,281,3.672,285,6.915,286,6.915,287,7.502,289,5.587,290,6.915,292,2.162,709,7.502,710,7.502,711,6.915,712,8.392]],["keywords/47",[]],["title/48",[295,1061.704]],["content/48",[68,5.505,197,6.581,212,6.751,213,6.933,259,6.581,292,4.174,297,6.751,311,6.421,340,9.345,365,7.812,522,9.651,523,10.362]],["keywords/48",[]],["title/49",[522,767.722]],["content/49",[68,5.505,122,2.102,212,6.751,213,6.933,244,11.719,297,6.751,509,7.337,522,7.812,523,8.387,525,8.728,526,11.719,527,13.347,529,11.719,713,13.11,714,13.11]],["keywords/49",[]],["title/50",[18,397.245,129,262.313,152,253.773,334,471.531]],["content/50",[28,3.512,62,4.086,122,2.631,133,4.848,138,4.566,152,3.628,154,6.331,174,6.976,175,6.976,177,9.322,180,8.26,254,6.976,256,7.8,262,8.731,325,7.867,326,7.531,327,10.112,328,6.15,332,9.322,334,6.741,340,6.527,366,6.527,392,9.322,393,10.112,421,10.112,715,11.313]],["keywords/50",[]],["title/51",[68,332.274,129,262.313,212,407.521,370,506.261]],["content/51",[8,2.282,9,3.228,11,3.228,12,3.982,26,2.364,51,4.695,60,2.938,68,2.7,75,6.861,78,3.71,104,4.114,122,2.158,133,4.228,134,6.526,138,6.185,139,2.874,149,3.71,152,3.849,153,4.695,154,3.599,174,6.084,175,6.084,180,7.204,197,3.228,199,5.879,212,5.081,213,3.4,214,4.963,215,3.216,216,4.695,217,4.114,218,6.084,219,4.963,220,5.748,221,6.084,222,4.95,254,6.084,291,4.963,292,1.657,297,3.311,323,5.299,324,4.963,325,6.861,326,6.568,332,8.13,337,3.005,341,3.965,342,7.991,343,6.084,345,4.472,346,5.748,347,5.299,348,4.963,349,4.695,350,4.963,351,4.695,355,3.71,365,3.831,370,4.114,386,3.71,462,5.748,716,6.43,717,6.43,718,6.43,719,6.43,720,6.43,721,6.43,722,6.43]],["keywords/51",[]],["title/52",[144,721.066]],["content/52",[2,1.597,12,4.294,52,4.212,56,4.972,64,2.195,106,4.861,122,2.553,222,3.912,235,4.655,240,8.767,248,8.212,293,3.843,294,6.561,303,5.784,310,8.212,315,6.139,320,9.511,342,7.083,474,9.062,478,6.806,723,10.639,724,10.639,725,10.639,726,10.639,727,8.767,728,10.639,729,9.511,730,10.639,731,10.639,732,10.639,733,10.639]],["keywords/52",[]],["title/53",[734,791.352,735,791.352,736,791.352,737,610.789]],["content/53",[]],["keywords/53",[]],["title/54",[256,563.387,737,822.282]],["content/54",[]],["keywords/54",[]],["title/55",[2,89.223,82,339.123,430,577.808,511,526.832]],["content/55",[2,1.188,4,4.61,8,3.739,26,5.174,41,8.681,109,5.425,118,2.756,127,2.41,138,4.252,219,8.131,222,3.874,224,5.896,265,8.681,281,4.61,364,7.692,399,8.131,424,6.74,430,7.692,449,7.692,517,8.131,738,9.417,739,9.417,740,14.072,741,10.535,742,9.417,743,10.535,744,14.072,745,8.681,746,10.535,747,8.131,748,10.535,749,8.681,750,8.681]],["keywords/55",[]],["title/56",[4,397.373,138,366.51,362,455.871]],["content/56",[2,1.393,6,9.021,8,5.539,45,9.536,51,9.021,60,5.645,78,7.128,138,4.986,241,10.181,271,9.005,349,9.021,362,6.202,402,10.181,513,7.904,749,10.181,751,12.355,752,11.044,753,9.021,754,12.355]],["keywords/56",[]],["title/57",[76,506.261,106,361.57,109,407.521,127,181.007]],["content/57",[106,6.739,109,5.826,116,8.731,117,5.826,118,2.959,119,10.112,120,3.813,121,8.26,122,2.631,127,2.588,133,4.848,302,8.26,311,5.54,335,8.26,496,8.731,755,10.112,756,14.749,757,14.749,758,11.313,759,8.731,760,10.112,761,11.313,762,11.313,763,11.313]],["keywords/57",[]],["title/58",[5,339.123,109,407.521,223,550.352,401,652.094]],["content/58",[4,5.955,109,8.534,112,9.275,197,6.831,261,8.392,281,5.955,418,8.706,764,13.609,765,9.464,766,12.165,767,13.609]],["keywords/58",[]],["title/59",[62,384.805,737,822.282]],["content/59",[]],["keywords/59",[]],["title/60",[2,89.223,38,506.261,63,418.482,768,387.575]],["content/60",[2,1.597,5,4.559,8,3.776,25,4.655,36,5.784,37,5.341,44,6.561,48,6.619,63,7.491,97,4.655,122,2.553,337,4.972,351,7.768,355,6.139,363,4.133,400,7.399,406,7.083,509,5.954,513,6.806,768,5.211,769,10.639,770,9.511,771,7.083,772,10.639,773,5.479,774,10.639,775,10.639,776,10.639,777,8.767,778,10.639]],["keywords/60",[]],["title/61",[2,79.056,64,144.684,65,221.216,67,351.98,308,417.802]],["content/61",[8,3.852,11,5.449,28,3.37,64,2.962,80,5.901,82,4.652,83,5.901,84,6.944,101,7.926,122,1.74,143,6.263,152,3.481,193,7.549,209,6.944,298,5.901,304,5.74,308,6.468,328,5.901,337,6.708,487,5.191,549,6.944,633,9.703,779,10.855,780,7.226,781,7.926,782,10.855,783,10.855,784,10.855,785,8.945,786,6.075,787,8.945]],["keywords/61",[]],["title/62",[64,144.684,159,361.085,211,300.481,436,335.319,788,626.789]],["content/62",[2,1.303,3,5.166,25,5.057,28,3.587,48,5.4,80,6.283,81,10.33,152,3.706,198,7.693,258,7.393,298,6.283,377,6.111,487,5.526,750,9.523,773,5.951,777,9.523,780,7.693,789,9.523,790,11.556,791,11.556,792,11.556,793,7.693,794,5.66,795,11.556,796,11.556,797,11.556,798,11.556]],["keywords/62",[]],["title/63",[799,857.76]],["content/63",[]],["keywords/63",[]],["title/64",[118,237.563,222,333.91,745,748.33]],["content/64",[51,8.624,106,5.396,122,2.834,192,7.038,271,8.75,315,6.814,410,8.214,411,9.732,612,8.41,765,10.548,800,10.558,801,11.811,802,11.811,803,11.811,804,11.811,805,11.811,806,11.811,807,11.811]],["keywords/64",[]],["title/65",[2,89.223,64,163.29,65,249.664,152,253.773]],["content/65",[3,5.338,31,5.58,64,2.464,67,5.995,80,6.493,108,7.64,151,5.338,152,3.83,235,5.226,557,5.58,571,7.64,580,6.89,789,9.841,808,9.217,809,10.675,810,8.72,811,7.64,812,11.942,813,11.942,814,11.942,815,9.841,816,9.841,817,11.942,818,9.841]],["keywords/65",[]],["title/66",[2,102.39,698,631.573,819,811.792]],["content/66",[4,5.736,109,6.751,112,7.337,122,2.596,127,2.999,363,5.093,401,10.803,698,9.117,820,10.119,821,11.826,822,13.11,823,13.11,824,13.11,825,11.719]],["keywords/66",[]],["title/67",[138,366.51,199,541.12,352,663.081]],["content/67",[2,1.377,7,8.495,18,6.131,106,5.581,109,7.979,138,4.929,271,7.047,612,7.778,652,9.427,738,10.918,765,8.495,811,7.814,825,10.918,826,12.214,827,10.918,828,12.214,829,10.065,830,12.214,831,12.214,832,12.214]],["keywords/67",[]],["title/68",[557,497.833,737,822.282]],["content/68",[]],["keywords/68",[]],["title/69",[64,144.684,235,306.813,571,448.574,579,487.64,580,404.554]],["content/69",[11,5.561,12,4.471,65,3.495,82,4.748,122,1.776,129,3.672,132,5.177,133,4.748,403,6.392,557,6.799,575,7.088,576,9.129,580,6.392,582,6.832,583,3.612,584,8.669,585,4.952,586,6.392,587,8.669,597,7.705,598,6.392,607,9.129,773,5.705,833,9.904,834,11.079,835,11.079,836,9.129,837,11.079]],["keywords/69",[]],["title/70",[2,89.223,26,290.969,49,550.352,66,361.57]],["content/70",[2,1.224,64,2.24,66,6.559,101,7.926,118,2.84,122,1.74,127,2.483,132,5.072,133,4.652,250,7.926,281,4.75,403,6.263,557,5.072,575,6.944,580,6.263,582,6.693,583,3.539,584,8.553,586,6.263,598,6.263,629,9.703,638,7.549,650,8.945,703,7.926,755,9.703,799,7.226,838,6.693,839,10.855,840,10.855,841,10.855,842,7.926]],["keywords/70",[]],["title/71",[129,353.142,366,614.676]],["content/71",[]],["keywords/71",[]],["title/72",[2,89.223,173,550.352,292,203.911,821,577.808]],["content/72",[2,2.02,25,4.848,56,7.591,92,7.088,112,6.2,120,6.04,164,8.155,215,3.612,222,4.074,292,2.855,293,4.002,367,4.148,437,8.089,542,8.551,548,7.705,843,3.735,844,11.079,845,9.904,846,11.079]],["keywords/72",[]],["title/73",[64,187.389,292,234.004,847,700.93]],["content/73",[2,1.841,64,2.31,65,3.532,66,5.115,120,5.839,157,9.225,164,7.353,222,4.116,292,2.885,367,6.113,418,10.446,547,8.174,585,5.004,703,8.174,820,8.64,843,4.938,848,10.007,849,11.195,850,10.007]],["keywords/73",[]],["title/74",[129,262.313,278,361.57,292,203.911,851,610.789]],["content/74",[]],["keywords/74",[]],["title/75",[2,102.39,28,281.909,292,234.004]],["content/75",[2,0.884,28,2.434,31,3.664,48,3.664,73,6.051,120,2.643,122,2.8,137,10.558,164,3.936,208,10.522,229,3.582,292,3.483,293,2.832,303,4.262,367,2.935,389,4.388,502,12.199,852,5.016,853,7.84,854,5.219,855,9.431,856,13.024,857,7.008,858,15.805,859,15.805,860,11.445,861,7.84,862,7.84,863,7.84,864,7.84,865,7.84,866,7.84,867,7.84,868,7.84,869,4.835]],["keywords/75",[]],["title/76",[392,877.89,870,952.339]],["content/76",[]],["keywords/76",[]],["title/77",[334,541.12,871,908.14,872,811.792]],["content/77",[2,1.2,11,5.341,59,6.34,64,2.195,65,3.357,120,5.96,164,7.994,210,6.139,292,3.65,308,6.34,312,7.083,350,8.212,364,7.768,367,5.962,418,6.806,547,7.768,548,7.399,585,4.756,759,8.212,872,9.511,873,10.639,874,10.639,875,10.639,876,7.768,877,10.639,878,10.639]],["keywords/77",[]],["title/78",[366,614.676,879,952.339]],["content/78",[53,6.023,56,4.564,82,4.186,120,5.526,122,1.566,139,4.366,204,8.049,259,4.903,291,7.539,292,4.224,312,8.901,365,5.82,367,6.638,368,7.132,377,5.165,542,10.32,547,9.763,548,6.793,845,8.731,847,7.539,870,8.731,879,8.731,880,9.768,881,8.731,882,9.768,883,9.768,884,9.768,885,9.768,886,9.768,887,9.768]],["keywords/78",[]],["title/79",[4,397.373,293,328.016,843,306.123]],["content/79",[82,4.471,84,6.674,120,6.094,127,2.386,215,3.401,272,4.565,292,2.688,293,5.695,367,6.306,474,6.674,478,6.674,548,7.255,585,4.663,605,12.497,703,7.617,843,3.517,888,8.817,889,8.597,890,13.98,891,10.432,892,10.432]],["keywords/79",[]],["title/80",[366,523.962,893,811.792,894,811.792]],["content/80",[108,6.547,120,4.652,122,1.64,231,6.31,248,7.898,366,5.904,367,5.846,389,7.723,487,4.894,489,8.433,494,12.336,513,6.547,548,7.117,583,4.499,585,4.574,773,5.27,893,9.148,894,13.958,895,10.233,896,10.233,897,10.233,898,13.801,899,8.433,900,12.336,901,10.233,902,10.233,903,9.148,904,9.148,905,8.433]],["keywords/80",[]],["title/81",[120,266.755,215,257.988,341,487.981,906,577.808]],["content/81",[2,1.576,26,3.836,118,3.657,120,4.713,122,1.672,129,3.458,139,4.663,151,4.663,198,6.945,229,4.767,259,5.237,272,4.565,292,2.688,293,5.05,367,5.234,542,8.052,583,4.558,584,6.216,745,8.597,843,4.713,906,7.617,907,10.432,908,10.432,909,10.432,910,10.432,911,7.617,912,10.432,913,10.432,914,10.432,915,10.432]],["keywords/81",[]],["title/82",[522,767.722]],["content/82",[]],["keywords/82",[]],["title/83",[522,541.12,523,580.975,781,663.081]],["content/83",[375,8.364,376,8.145]],["keywords/83",[]],["title/84",[224,596.227,522,634.805]],["content/84",[375,8.364,376,8.145]],["keywords/84",[]],["title/85",[62,465.377]],["content/85",[375,8.364,376,8.145]],["keywords/85",[]],["title/86",[124,1151.741]],["content/86",[]],["keywords/86",[]],["title/87",[]],["content/87",[10,6.274,53,7.707,109,6.437,118,3.27,138,5.044,143,7.211,271,7.211,272,5.469,297,6.437,335,9.126,340,7.211,378,10.299,512,8.321,765,8.692,766,11.173,916,15.722,917,12.499,918,10.299,919,12.499]],["keywords/87",[]],["title/88",[920,1288.435]],["content/88",[2,1.841,12,4.518,13,5.619,26,4.116,64,3.023,65,3.532,67,5.619,68,4.7,70,10.007,71,10.007,112,6.265,118,3.832,127,2.561,382,8.64,403,6.459,557,5.231,579,7.785,583,3.65,625,8.174,638,7.785,641,8.64,684,9.225,838,6.903,921,11.195,922,11.195,923,11.195]],["keywords/88",[]],["title/89",[924,1288.435]],["content/89",[4,5.003,8,4.058,9,5.739,26,4.204,106,5.224,109,5.888,127,2.615,138,4.614,170,8.824,172,12.238,265,9.421,271,6.597,315,6.597,362,5.739,503,7.951,564,8.824,698,10.329,749,9.421,820,8.824,821,8.348,925,10.22,926,11.433,927,11.433,928,9.421,929,11.433,930,11.433]],["keywords/89",[]],["title/90",[931,1288.435]],["content/90",[2,1.478,13,6.581,28,4.07,52,5.19,82,5.618,118,3.429,215,5.28,222,4.82,363,5.093,583,4.274,643,11.719,843,6.188]],["keywords/90",[]],["title/91",[932,1288.435]],["content/91",[2,1.46,39,6.849,62,4.678,64,3.317,67,6.502,80,8.74,122,2.076,161,9.996,193,9.007,773,6.67,793,8.622,816,13.247,933,8.622,934,11.578]],["keywords/91",[]],["title/92",[]],["content/92",[2,1.534,3,6.083,8,4.83,9,6.831,12,5.492,18,6.831,112,7.616,439,9.06,935,13.609,936,16.572,937,13.609,938,12.165]],["keywords/92",[]],["title/93",[939,1288.435]],["content/93",[2,1.854,28,4.172,31,6.28,48,6.28,52,5.32,57,6.746,73,10.372,152,4.309,303,7.306,329,7.753,354,9.812,747,10.372,857,12.013]],["keywords/93",[]],["title/94",[940,1288.435]],["content/94",[36,7.127,37,6.581,57,6.581,63,6.933,64,3.342,67,6.581,152,4.204,197,6.581,202,7.564,234,10.119,304,6.933,580,7.564,658,10.803,780,8.728,941,13.11]],["keywords/94",[]],["title/95",[942,1288.435]],["content/95",[2,1.909,3,5.398,12,4.874,46,9.321,49,8.399,50,9.952,53,7.447,64,2.492,66,5.518,68,5.071,73,9.321,85,10.795,112,6.759,127,2.762,153,8.818,154,6.759,198,8.04,199,7.196,242,6.566,943,8.818,944,12.077]],["keywords/95",[]],["title/96",[945,1288.435]],["content/96",[3,6.161,6,10.064,7,9.586,8,4.892,9,6.919,60,6.298,152,4.42,210,7.953,268,9.636,946,12.321,947,11.358]],["keywords/96",[]],["title/97",[948,1288.435]],["content/97",[2,1.289,25,5.003,26,4.204,29,7.314,37,5.739,52,4.526,53,7.05,63,6.046,64,3.404,67,5.739,88,8.348,151,5.111,221,7.05,235,5.003,303,6.216,304,6.046,305,8.348,329,6.597,591,7.951,598,6.597,794,5.6,949,8.824,950,11.433,951,10.22,952,11.433,953,11.433]],["keywords/97",[]],["title/98",[954,1288.435]],["content/98",[2,1.393,13,6.202,53,7.619,56,5.773,106,5.645,118,4.083,125,11.044,315,7.128,329,7.128,583,5.088,603,8.592,768,6.051,838,7.619,955,12.355,956,12.355,957,9.021,958,11.044,959,11.044,960,11.044]],["keywords/98",[]],["title/99",[961,1288.435]],["content/99",[2,1.773,3,7.028,37,9.061,56,7.347,59,9.368,60,7.183,87,10.299,89,12.955,92,7.996,369,11.173,962,12.499]],["keywords/99",[]],["title/100",[963,1288.435]],["content/100",[0,8.551,1,9.904,2,1.64,12,4.471,31,5.177,38,7.088,48,6.799,64,2.286,67,5.561,82,4.748,83,6.023,97,6.366,98,9.904,100,9.129,118,2.898,122,2.604,127,2.534,308,6.601,958,9.904,964,11.079,965,11.079,966,11.079,967,11.079,968,11.079,969,9.904,970,9.904]],["keywords/100",[]],["title/101",[215,347.319,843,359.123]],["content/101",[]],["keywords/101",[]],["title/102",[215,347.319,843,359.123]],["content/102",[2,1.864,13,4.42,18,4.42,25,3.853,26,3.238,28,2.733,52,4.925,55,7.871,56,5.813,62,3.18,64,1.817,65,2.778,94,6.898,118,4.326,139,3.936,159,4.534,222,5.764,235,3.853,281,3.853,362,4.42,363,3.421,367,3.297,438,6.124,583,2.871,843,5.574,971,8.805,972,8.805,973,8.805,974,7.871,975,8.805,976,8.805,977,8.805,978,8.805,979,8.805,980,7.871,981,7.871,982,6.429]],["keywords/102",[]],["title/103",[118,207.012,215,257.988,612,397.245,843,266.755]],["content/103",[2,1.48,13,8.538,25,4.16,28,2.951,56,4.443,82,4.074,106,4.344,118,4.715,120,3.205,122,1.524,127,2.175,192,5.665,215,3.1,245,6.083,246,6.612,362,4.773,363,3.694,367,3.56,583,3.1,587,5.665,612,4.773,821,6.942,843,5.464,983,7.835,984,8.499,985,8.499,986,9.508,987,7.835,988,8.499,989,8.499,990,9.508,991,8.499,992,9.508]],["keywords/103",[]],["title/104",[127,181.007,215,257.988,366,456.58,843,266.755]],["content/104",[]],["keywords/104",[]],["title/105",[120,306.123,292,234.004,993,663.081]],["content/105",[5,5.061,26,5.576,106,5.396,118,3.09,120,6.307,215,3.85,292,3.043,315,6.814,362,5.929,363,4.588,367,4.422,583,3.85,585,5.28,590,7.283,843,5.112,993,8.624,994,6.814,995,8.624]],["keywords/105",[]],["title/106",[292,274.518,876,777.881]],["content/106",[2,1.812,25,5.667,28,4.021,65,4.086,120,6.162,164,8.775,367,4.849,585,5.79,876,9.457,994,7.473,995,9.457]],["keywords/106",[]],["title/107",[278,414.93,292,234.004,851,700.93]],["content/107",[2,1.46,26,4.762,28,4.021,56,6.052,120,4.366,122,2.076,164,6.502,229,5.918,281,5.667,292,3.337,362,6.502,367,4.849,843,4.366,852,8.286,854,8.622,994,7.473,996,12.952]],["keywords/107",[]],["title/108",[120,306.123,292,234.004,997,748.33]],["content/108",[2,1.478,26,4.82,28,4.07,52,5.19,97,7.087,120,5.46,122,2.102,164,6.581,292,3.378,363,5.093,367,4.908,590,8.084,843,4.419,889,10.803]],["keywords/108",[]],["title/109",[215,296.062,843,306.123,998,604.583]],["content/109",[18,7.394,127,3.369,159,7.586,215,4.802,509,8.244,843,4.965,999,10.244]],["keywords/109",[]],["title/110",[120,359.123,292,274.518]],["content/110",[18,6.831,120,6.024,122,2.182,363,5.287,367,5.095,843,5.586,994,7.852,1000,13.609,1001,13.609,1002,13.609]],["keywords/110",[]],["title/111",[278,414.93,292,234.004,851,700.93]],["content/111",[2,1.426,18,6.348,25,5.534,120,4.263,122,2.027,164,6.348,215,4.123,218,7.798,229,5.778,292,3.259,367,4.735,843,5.339,852,8.09,854,8.419,995,9.234,998,8.419,1003,12.646,1004,12.646]],["keywords/111",[]],["title/112",[215,296.062,293,328.016,545,541.12]],["content/112",[2,0.89,5,3.384,13,5.776,26,2.904,32,6.508,52,4.555,56,3.691,82,3.384,94,5.502,120,2.662,122,2.652,129,3.814,137,5.053,164,3.965,215,4.862,229,3.609,235,5.035,292,2.035,293,5.976,304,6.085,363,3.068,367,2.957,389,4.42,474,5.053,478,5.053,549,5.053,583,4.425,636,5.258,843,5.9,852,5.053,854,5.258,869,4.87,994,4.557,1005,7.898,1006,5.767,1007,13.573,1008,6.096,1009,7.06,1010,7.06,1011,7.06]],["keywords/112",[]],["title/113",[84,580.975,218,559.997,843,306.123]],["content/113",[]],["keywords/113",[]],["title/114",[118,278.693,838,656.95]],["content/114",[12,3.643,38,5.775,64,3.57,92,5.775,94,6.992,104,5.775,118,2.362,129,2.992,222,6.137,223,6.278,376,4.649,438,6.278,573,7.439,583,4.767,585,4.035,838,5.567,843,5.343,974,8.07,981,8.07,982,6.592,987,7.439,1012,9.028,1013,9.028,1014,13.07,1015,7.439,1016,12.66,1017,9.028,1018,9.028,1019,9.028,1020,9.028,1021,9.028,1022,9.028,1023,9.028,1024,8.07]],["keywords/114",[]],["title/115",[52,359.524,583,296.062,843,306.123]],["content/115",[104,6.875,106,4.91,118,2.811,122,2.565,166,8.855,222,3.951,235,4.702,303,5.842,304,5.683,315,6.2,574,7.846,583,3.503,768,7.838,773,7.343,808,8.294,843,5.395,1025,8.294,1026,10.746,1027,9.606,1028,10.746,1029,10.746,1030,10.746,1031,9.606,1032,10.746,1033,10.746,1034,10.746,1035,10.746]],["keywords/115",[]],["title/116",[799,857.76]],["content/116",[2,0.946,8,2.978,13,4.213,56,3.922,62,3.031,82,5.152,94,4.013,117,4.322,118,3.675,120,2.829,122,1.927,129,2.782,215,2.736,222,3.086,245,7.691,246,8.361,272,3.672,278,3.834,292,3.098,294,7.413,297,4.322,362,4.213,363,4.67,467,6.915,509,6.728,583,4.58,652,6.477,843,6.107,987,6.915,998,8.003,1010,7.502,1036,8.392,1037,8.392,1038,8.392,1039,6.915,1040,8.392,1041,8.392,1042,8.392,1043,6.915,1044,8.392,1045,6.477]],["keywords/116",[]],["title/117",[82,552.141]],["content/117",[52,5.127,127,2.962,129,4.293,134,7.041,215,5.241,242,7.041,293,5.806,394,9.457,557,6.052,843,5.893,906,9.457,1046,12.952,1047,11.578]],["keywords/117",[]],["title/118",[243,709.255,400,740.918]],["content/118",[]],["keywords/118",[]],["title/119",[122,170.781,243,709.255]],["content/119",[2,1.403,26,3.238,52,3.486,62,3.18,64,1.817,83,6.763,109,4.534,117,4.534,118,2.303,122,1.412,127,3.299,129,4.124,132,4.115,133,3.773,134,4.787,142,4.787,157,7.256,192,5.247,258,5.633,259,4.42,271,5.08,272,3.853,278,4.023,293,4.493,294,5.43,340,5.08,522,7.413,523,5.633,557,4.115,583,4.056,765,6.124,842,6.429,843,4.863,888,4.42,1048,8.805,1049,6.796,1050,8.805,1051,8.805,1052,8.805,1053,8.805,1054,8.805,1055,8.805,1056,8.805,1057,8.805,1058,7.256,1059,8.805]],["keywords/119",[]],["title/120",[11,455.871,122,145.577,322,559.997]],["content/120",[2,1.249,4,4.848,5,4.748,63,5.859,106,5.062,108,7.088,109,5.705,117,5.705,118,2.898,122,2.332,127,2.534,271,6.392,278,5.062,311,5.426,315,6.392,337,5.177,340,6.392,366,6.392,496,8.551,522,6.601,523,7.088,557,5.177,759,8.551,765,7.705,1060,11.079,1061,11.079,1062,11.079,1063,11.079,1064,11.079,1065,11.079]],["keywords/120",[]],["title/121",[122,145.577,143,523.962,144,508.235]],["content/121",[2,0.977,3,3.873,6,6.325,7,6.025,8,3.075,9,4.349,25,3.791,26,3.185,37,4.349,52,3.43,54,6.686,60,3.958,62,5.164,64,1.788,67,6.173,82,3.712,88,6.325,107,4.998,118,2.266,139,5.497,151,3.873,170,6.686,172,7.139,215,4.009,256,4.581,259,4.349,299,5.162,300,5.162,301,5.342,308,5.162,319,7.744,329,4.998,341,5.342,503,6.025,512,5.767,552,7.744,698,6.025,820,6.686,925,10.993,946,7.744,1066,8.663,1067,8.663,1068,8.663,1069,8.663,1070,8.663,1071,8.663,1072,8.663,1073,8.663,1074,8.663,1075,8.663,1076,8.663,1077,8.663]],["keywords/121",[]],["title/122",[122,145.577,127,207.72,1078,908.14]],["content/122",[285,12.307,315,8.617,1079,14.935,1080,14.935,1081,14.935,1082,14.935]],["keywords/122",[]],["title/123",[101,663.081,122,145.577,281,397.373]],["content/123",[82,5.484,243,8.52,245,10.208,281,5.6,286,10.545,386,7.383,400,8.9,424,8.187,509,7.162,549,8.187,612,6.424,799,8.52,842,9.344,1015,10.545,1083,12.797,1084,11.439,1085,11.439]],["keywords/123",[]],["title/124",[118,337.046]],["content/124",[]],["keywords/124",[]],["title/125",[118,278.693,838,656.95]],["content/125",[]],["keywords/125",[]],["title/126",[2,101.427,64,185.627,65,180.158,66,260.91,122,91.539]],["content/126",[2,1.888,3,4.07,37,4.57,57,6.393,62,3.288,64,3.75,65,4.018,66,4.16,67,4.57,82,3.902,83,6.924,84,8.148,99,7.027,118,3.332,198,6.061,272,3.984,322,5.614,406,6.061,428,7.027,549,5.824,580,7.348,636,6.061,773,4.688,794,4.459,815,7.502,816,7.502,838,5.614,847,7.027,1086,9.104,1087,11.384,1088,11.384,1089,8.138,1090,9.104]],["keywords/126",[]],["title/127",[0,700.93,2,102.39,118,237.563]],["content/127",[375,8.364,376,8.145]],["keywords/127",[]],["title/128",[53,656.95,118,278.693]],["content/128",[375,8.364,376,8.145]],["keywords/128",[]],["title/129",[25,466.17,118,278.693]],["content/129",[375,8.364,376,8.145]],["keywords/129",[]],["title/130",[118,278.693,1091,877.89]],["content/130",[]],["keywords/130",[]],["title/131",[139,476.229,512,709.255]],["content/131",[2,0.929,3,2.285,9,2.566,13,2.566,26,3.804,62,3.736,68,2.147,82,2.191,83,2.779,90,3.946,99,3.946,118,3.403,120,1.723,121,3.733,122,0.82,127,1.884,129,2.73,130,4.213,132,3.849,133,3.53,134,2.779,138,4.175,139,5.302,142,2.779,143,2.95,144,4.61,212,2.633,213,5.47,215,3.867,222,1.88,224,2.861,254,3.153,261,6.379,272,3.604,281,2.237,292,1.317,294,3.153,297,2.633,298,4.478,299,8.283,300,8.283,301,5.079,308,8.283,323,4.213,324,3.946,352,3.733,353,7.363,362,2.566,363,1.986,365,3.046,399,3.946,422,6.788,424,3.271,452,4.213,512,6.887,549,3.271,550,4.57,555,4.213,601,3.733,697,3.271,698,3.555,700,3.555,711,4.213,768,5.066,811,5.27,918,4.213,928,4.213,1058,4.213,1091,4.213,1092,5.112,1093,4.57,1094,5.112,1095,5.112,1096,5.112,1097,5.112,1098,4.213,1099,5.112,1100,5.112,1101,4.57,1102,7.363,1103,5.112,1104,8.237,1105,5.112,1106,5.112,1107,5.112,1108,5.112,1109,3.404,1110,5.112,1111,5.112,1112,5.112,1113,3.946]],["keywords/131",[]],["title/132",[138,366.51,139,405.947,405,748.33]],["content/132",[2,0.692,4,1.571,8,1.274,36,1.952,39,3.247,52,1.421,56,1.677,62,4.745,82,1.538,90,2.771,99,2.771,106,1.64,109,3.162,117,4.142,118,3.26,120,3.209,121,2.621,122,2.106,123,3.928,127,1.84,129,1.19,133,6.446,134,4.373,135,5.873,137,2.297,138,5.738,139,4.782,140,3.209,141,6.208,143,2.071,144,3.436,145,7.19,146,2.958,151,1.605,152,1.151,159,3.162,161,2.771,163,2.958,164,3.082,174,2.214,175,2.214,176,3.209,177,2.958,178,3.209,179,3.209,180,2.621,181,3.209,193,5.594,197,1.802,222,1.32,224,3.436,242,1.952,243,2.39,251,3.209,255,2.214,257,2.771,259,3.082,261,2.214,269,2.771,272,3.52,277,2.771,278,2.805,292,2.453,298,3.338,311,4.662,315,2.071,337,1.677,340,2.071,360,4.27,362,4.038,367,1.344,368,2.621,386,2.071,395,2.958,399,2.771,402,2.958,404,5.059,405,2.958,406,2.39,407,5.488,408,5.059,410,2.497,411,5.059,414,3.209,419,5.488,422,6.628,424,3.928,426,3.209,444,4.27,449,2.621,473,5.488,496,2.771,512,2.39,583,1.17,601,2.621,647,3.209,711,2.958,759,2.771,760,3.209,773,1.849,811,3.928,818,2.958,906,2.621,918,2.958,928,2.958,938,3.209,983,2.958,1058,2.958,1091,2.958,1101,3.209,1102,3.209,1114,3.59,1115,3.59,1116,3.59,1117,3.59,1118,3.59,1119,4.738,1120,6.139,1121,8.043,1122,3.59,1123,3.59,1124,3.59,1125,3.59,1126,3.59,1127,3.59,1128,3.59,1129,3.59,1130,2.958,1131,3.59,1132,3.59,1133,3.59,1134,3.59,1135,3.59,1136,3.59,1137,3.59]],["keywords/132",[]],["title/133",[799,857.76]],["content/133",[]],["keywords/133",[]],["title/134",[192,634.805,842,777.881]],["content/134",[375,8.364,376,8.145]],["keywords/134",[]],["title/135",[829,877.89,1138,1065.367]],["content/135",[375,8.364,376,8.145]],["keywords/135",[]],["title/136",[101,777.881,116,822.282]],["content/136",[62,5.043,84,8.933,123,8.933,424,8.933,612,7.009,829,11.506,842,10.195,1015,11.506,1084,12.482,1139,13.963,1140,13.963]],["keywords/136",[]],["title/137",[215,296.062,293,328.016,843,306.123]],["content/137",[]],["keywords/137",[]],["title/138",[888,646.773]],["content/138",[2,1.471,28,2.926,31,4.404,48,4.404,52,3.731,64,1.945,65,2.973,66,4.306,97,4.124,118,3.413,129,3.124,164,4.731,235,4.124,272,4.124,293,6.494,363,3.661,580,5.437,583,3.072,768,4.616,810,6.881,811,9.572,869,10.815,888,4.731,1130,7.766,1141,9.424,1142,6.029,1143,5.811,1144,9.424,1145,10.405,1146,9.424,1147,9.424]],["keywords/138",[]],["title/139",[1142,681.56,1143,656.95]],["content/139",[5,3.969,26,3.405,36,5.035,82,3.969,118,2.423,122,1.485,127,3.391,129,3.07,159,4.769,213,4.898,217,5.925,255,5.711,272,4.053,278,5.889,289,6.166,292,2.386,293,6.085,297,4.769,362,4.649,363,3.598,410,6.441,417,8.279,583,3.019,869,5.711,888,4.649,1014,11.521,1142,5.925,1143,5.711,1145,6.441,1148,8.279,1149,9.262,1150,8.279,1151,10.824,1152,7.632,1153,7.632,1154,8.279,1155,8.279,1156,7.148,1157,9.262,1158,7.632]],["keywords/139",[]],["title/140",[107,523.962,118,237.563,888,455.871]],["content/140",[2,1.557,13,8.653,25,3.561,28,2.526,82,3.487,104,5.206,106,3.718,118,4.776,122,1.304,192,4.849,215,2.653,217,5.206,222,2.992,245,5.206,246,5.659,261,5.018,272,6.041,273,5.942,293,2.939,304,4.303,367,3.047,389,4.554,474,5.206,478,5.206,583,4.501,888,6.93,983,6.705,984,7.274,985,7.274,988,7.274,989,7.274,991,7.274,1031,7.274,1130,6.705,1159,8.137,1160,8.137,1161,6.705,1162,8.137,1163,8.137,1164,8.137,1165,8.137,1166,7.274,1167,6.705]],["keywords/140",[]],["title/141",[127,160.382,583,228.591,768,343.411,888,351.98,980,626.789]],["content/141",[13,2.579,28,4.047,29,3.286,94,2.457,107,2.964,122,3.019,127,2.374,129,1.703,137,8.341,197,2.579,223,3.572,235,2.248,261,3.168,278,2.347,281,5.205,289,6.909,290,4.233,292,2.674,293,5.503,294,3.168,304,2.716,305,3.751,406,3.42,437,3.751,509,2.875,511,3.42,583,2.696,587,3.061,645,6.814,727,6.814,729,4.592,768,2.516,773,2.645,811,3.286,843,1.732,855,6.814,856,4.233,869,5.099,888,6.545,1008,3.965,1025,3.965,1045,9.181,1142,6.639,1143,6.399,1145,3.572,1150,7.392,1156,3.965,1168,4.233,1169,5.137,1170,5.137,1171,8.269,1172,8.269,1173,5.137,1174,8.269,1175,8.269,1176,7.392,1177,7.392,1178,7.392,1179,10.633,1180,8.269,1181,8.269,1182,8.269,1183,5.137,1184,5.137,1185,5.137]],["keywords/141",[]],["title/142",[127,207.72,366,523.962,888,455.871]],["content/142",[]],["keywords/142",[]],["title/143",[278,287.599,292,162.194,436,301.019,781,459.598,851,485.832,911,459.598]],["content/143",[2,1.213,28,3.339,56,5.026,107,4.159,120,3.626,122,2.924,129,3.565,137,8.232,164,5.399,215,2.35,229,4.915,292,3.316,293,6.296,343,4.445,367,4.027,389,6.02,523,4.611,583,4.652,768,3.53,843,5.875,852,8.232,854,7.161,869,7.935,900,6.443,903,6.443,904,6.443,994,6.206,1008,9.932,1025,5.563,1043,8.863,1186,6.443]],["keywords/143",[]],["title/144",[120,236.359,211,300.481,292,180.676,911,511.968,1187,511.968]],["content/144",[106,4.546,120,5.825,122,3.051,127,2.276,255,8.349,256,5.261,270,8.198,292,2.564,293,5.559,367,3.725,389,5.568,510,8.893,583,4.414,843,3.354,888,6.797,905,8.198,943,7.264,994,5.74,1187,9.886,1188,9.949,1189,9.949,1190,11.157]],["keywords/144",[]],["title/145",[292,203.911,377,418.482,911,577.808,997,652.094]],["content/145",[2,1.29,28,2.434,64,1.618,65,2.473,107,4.523,120,5.01,122,2.974,164,5.745,292,4.391,293,5.709,367,4.285,389,6.405,410,7.959,583,2.556,585,3.505,687,6.051,768,3.84,843,5.563,888,6.785,889,9.431,982,5.724,994,4.523,997,6.46,1025,8.833,1186,7.008,1187,9.869,1190,9.431,1191,6.46,1192,11.445]],["keywords/145",[]],["title/146",[210,404.554,292,180.676,876,511.968,911,511.968,1187,511.968]],["content/146",[76,5.498,118,2.248,120,5.227,122,3.052,215,2.802,255,8.777,292,3.668,293,5.601,367,3.217,389,4.809,410,9.899,545,5.121,583,4.64,585,3.841,590,5.299,687,6.633,876,6.275,888,7.145,905,11.729,994,4.958,1187,6.275,1190,7.081,1193,14.234,1194,8.594,1195,8.594,1196,8.594,1197,8.594]],["keywords/146",[]],["title/147",[129,301.025,242,493.72,366,523.962]],["content/147",[2,1.346,25,1.902,28,1.349,56,2.031,64,1.908,65,1.371,66,1.986,76,2.78,92,2.78,97,3.156,118,1.887,120,4.339,122,2.97,129,1.441,137,8.235,164,6.462,215,1.417,229,5.882,242,2.363,292,3.934,293,5.895,312,2.893,367,5.717,389,7.204,545,2.59,547,7.857,583,4.197,585,1.943,590,2.68,703,3.173,838,2.68,843,5.593,847,3.354,848,8.264,850,3.885,852,8.235,854,8.57,869,7.938,982,3.173,994,2.508,995,3.173,1008,9.935,1161,5.943,1191,3.581,1198,4.346,1199,4.346,1200,4.346,1201,3.885]],["keywords/147",[]],["title/148",[293,328.016,1142,580.975,1143,559.997]],["content/148",[4,4.235,26,3.559,106,4.423,127,2.214,213,5.119,217,6.192,270,7.976,277,7.471,278,4.423,293,6.541,360,6.732,474,6.192,476,7.471,478,6.192,486,7.976,491,7.976,583,3.156,811,6.192,843,3.263,869,5.969,943,7.067,993,7.067,1142,6.192,1143,5.969,1145,6.732,1151,7.067,1152,7.976,1154,8.652,1155,8.652,1167,10.949,1202,9.679,1203,9.679,1204,8.652,1205,9.679,1206,9.679,1207,9.679,1208,9.679,1209,9.679]],["keywords/148",[]],["title/149",[127,207.72,278,414.93,293,328.016]],["content/149",[2,1.058,24,2.6,25,4.528,26,1.069,28,3.683,29,1.861,31,2.39,48,2.39,56,1.359,62,1.051,64,0.6,65,0.918,97,4.885,118,1.338,120,2.778,122,3.048,127,1.885,129,2.731,137,9.895,154,1.628,159,1.498,164,4.136,211,1.246,229,3.765,235,1.273,272,1.273,278,5.944,289,3.405,292,2.419,293,5.75,303,2.781,304,1.538,305,2.124,311,3.353,367,3.085,389,4.612,436,1.391,474,6.005,476,5.284,478,5.272,483,4.572,486,2.397,491,5.641,509,1.628,583,3.373,585,1.3,590,1.793,645,2.397,727,2.397,768,1.424,811,1.861,838,1.793,843,4.205,852,5.272,854,5.486,855,2.397,856,7.735,869,4.221,888,4.136,943,2.124,982,2.124,993,2.124,994,1.678,995,2.124,998,4.557,1043,2.397,1143,1.793,1145,2.023,1151,6.017,1156,2.245,1167,4.215,1168,2.397,1176,6.119,1177,2.6,1178,2.6,1179,2.6,1191,2.397,1204,2.6,1210,2.6,1211,2.6,1212,2.908,1213,2.908,1214,2.908,1215,2.908,1216,2.908,1217,2.908,1218,2.908,1219,2.908,1220,2.908,1221,5.115,1222,5.115,1223,5.115,1224,2.908,1225,5.115,1226,2.397,1227,2.908,1228,2.908,1229,2.908,1230,2.908,1231,2.908]],["keywords/149",[]],["title/150",[127,243.683,444,740.918]],["content/150",[4,3.616,76,5.286,94,3.951,107,4.767,122,2.587,127,3.691,131,4.624,213,4.37,278,3.775,280,8.681,281,3.616,289,10.743,293,5.829,363,3.21,509,7.793,583,3.876,768,5.823,781,8.681,810,6.033,888,7.645,998,5.501,1119,6.377,1142,5.286,1143,5.095,1148,7.386,1151,12.27,1152,6.809,1153,6.809,1156,9.176,1232,8.263,1233,8.263,1234,8.263,1235,8.263]],["keywords/150",[]],["title/151",[799,857.76]],["content/151",[52,3.222,82,3.487,94,3.891,106,3.718,107,6.784,120,2.743,122,1.304,127,2.69,159,4.191,245,5.206,246,5.659,272,3.561,278,5.372,292,3.558,293,6.038,297,4.191,315,4.695,352,5.942,363,3.161,389,4.554,406,5.417,438,5.659,445,6.705,481,6.281,509,4.554,583,2.653,587,4.849,652,6.281,768,3.985,819,7.274,843,2.743,852,5.206,888,5.903,993,5.942,998,7.828,1039,6.705,1045,6.281,1142,7.522,1143,7.251,1151,11.713,1236,8.137,1237,8.137,1238,8.137,1239,8.137,1240,6.281,1241,8.137,1242,8.137,1243,8.137]],["keywords/151",[]],["title/152",[82,552.141]],["content/152",[2,1.443,25,5.6,28,3.973,63,6.767,118,4.174,127,2.927,129,4.242,134,6.957,242,6.957,293,4.622,294,7.891,355,7.383,394,9.344,549,8.187,906,9.344,1047,11.439,1244,12.797]],["keywords/152",[]],["title/153",[64,219.832,83,579.198]],["content/153",[]],["keywords/153",[]],["title/154",[558,952.339,559,952.339]],["content/154",[2,1.478,64,2.705,231,8.084,322,8.084,329,7.564,363,5.093,1245,13.11,1246,13.11,1247,13.11,1248,13.11,1249,13.11,1250,13.11,1251,10.119,1252,10.803,1253,13.11,1254,11.719]],["keywords/154",[]],["title/155",[11,534.797,322,656.95]],["content/155",[]],["keywords/155",[]],["title/156",[2,120.117,64,219.832]],["content/156",[2,1.945,4,4.848,12,4.471,45,8.551,46,8.551,51,8.089,64,3.002,65,4.59,66,5.062,68,4.652,112,6.2,122,2.332,235,4.848,304,5.859,571,7.088,579,7.705,625,8.089,638,7.705,641,8.551,786,6.2,1093,9.904,1255,11.079,1256,11.079,1257,11.079,1258,11.079]],["keywords/156",[]],["title/157",[218,656.95,337,497.833]],["content/157",[2,1.719,4,3.92,5,2.435,8,3.18,9,2.852,11,2.852,26,2.089,36,3.089,38,3.634,39,3.004,44,3.503,57,4.498,60,2.596,62,2.052,64,1.849,65,3.5,66,4.094,68,3.762,80,6.031,94,5.305,104,5.732,117,2.926,122,0.911,127,2.049,131,7.048,136,4.385,144,3.179,151,2.539,202,5.169,235,2.486,242,3.089,257,4.385,261,3.503,281,2.486,304,4.738,328,4.871,337,6.404,355,3.278,357,4.681,358,5.078,363,2.207,400,3.951,436,2.717,470,5.078,487,4.285,492,3.634,504,5.078,511,5.965,513,5.732,555,4.681,571,3.634,572,5.078,579,3.951,591,3.951,613,3.782,618,4.681,625,4.148,638,3.951,641,4.385,649,5.078,768,2.782,786,5.014,933,3.782,949,4.385,999,3.951,1089,5.078,1109,5.965,1259,5.078,1260,5.681,1261,5.078,1262,5.681,1263,5.681,1264,4.681,1265,5.681,1266,5.681,1267,4.681,1268,5.078,1269,5.078,1270,5.681,1271,5.681,1272,4.385,1273,5.681,1274,5.681,1275,5.078,1276,5.681,1277,5.681,1278,5.681,1279,4.681]],["keywords/157",[]],["title/158",[129,353.142,1280,952.339]],["content/158",[2,2.13,64,3.517,65,4.499,66,6.515,122,2.923,235,6.239,303,7.752,304,7.541,439,7.154,455,9.606,458,9.606,517,8.294,1281,10.746,1282,10.746]],["keywords/158",[]],["title/159",[5,552.141]],["content/159",[]],["keywords/159",[]],["title/160",[173,740.918,1283,1065.367]],["content/160",[2,1.695,3,4.25,4,4.16,6,6.942,7,6.612,10,4.773,12,6.066,49,6.612,57,4.773,65,3,66,4.344,68,3.992,94,4.547,149,5.486,152,3.049,202,5.486,222,3.496,280,6.942,311,4.657,591,6.612,594,7.835,613,6.33,631,8.499,655,6.942,702,6.612,786,5.321,789,7.835,809,8.499,934,8.499,947,7.835,957,6.942,1109,6.33,1158,7.835,1284,9.508,1285,9.508,1286,9.508,1287,9.508,1288,6.942,1289,8.499,1290,8.499,1291,9.508,1292,9.508,1293,8.499]],["keywords/160",[]],["title/161",[123,813.315,1098,748.33]],["content/161",[2,1.747,3,1.751,8,3.577,9,4.307,12,4.068,26,2.431,28,1.216,36,2.13,37,4.307,39,5.954,57,6.131,64,2.682,65,2.086,66,3.021,67,1.967,68,1.645,94,1.873,95,5.104,122,2.536,130,3.228,149,2.26,151,2.956,159,2.017,197,1.967,202,2.26,210,2.26,211,1.679,221,2.416,222,3.155,255,2.416,272,1.714,311,3.238,328,5.479,337,4.71,354,2.86,377,2.072,380,2.192,418,2.506,432,2.86,436,1.873,439,2.608,487,4.82,489,5.449,492,2.506,503,5.967,505,4.23,513,5.489,525,5.712,545,2.334,591,2.724,603,9.041,612,1.967,613,2.608,655,2.86,656,3.502,658,5.449,697,5.489,700,2.724,702,2.724,753,2.86,773,2.017,780,4.402,957,2.86,1006,2.86,1109,2.608,1113,3.024,1161,3.228,1168,3.228,1211,3.502,1251,3.024,1272,6.622,1288,4.828,1289,3.502,1290,3.502,1293,3.502,1294,3.228,1295,3.502,1296,3.502,1297,3.502,1298,3.502,1299,3.918,1300,3.502,1301,3.918,1302,3.502,1303,3.918,1304,3.918,1305,3.918,1306,3.918,1307,3.228,1308,3.918,1309,3.024,1310,3.918,1311,3.502,1312,3.228,1313,3.918,1314,8.305,1315,5.911,1316,3.918,1317,3.918,1318,5.104,1319,9.278,1320,5.911,1321,3.918,1322,3.918,1323,3.918,1324,3.918,1325,3.918,1326,3.502,1327,3.918,1328,3.228,1329,3.918,1330,3.502]],["keywords/161",[]],["title/162",[129,353.142,142,579.198]],["content/162",[2,1.39,8,4.374,57,6.187,59,3.999,60,3.067,65,2.118,66,3.067,80,5.542,104,4.294,122,2.675,152,2.152,186,4.294,202,3.872,209,4.294,439,4.468,487,5.894,503,10.294,505,8.806,506,11.018,513,7.885,514,4.901,516,6,692,7.09,702,4.668,742,6,752,6,1201,6,1280,6,1294,5.531,1296,6,1302,6,1319,10.157,1320,9.113,1331,6.712,1332,6.712,1333,6.712,1334,6.712,1335,6.712,1336,6.712,1337,6.712,1338,6.712,1339,6.712,1340,4.668,1341,6.712,1342,6.712,1343,6.712,1344,6,1345,7.443,1346,6,1347,6.712,1348,10.194,1349,9.113,1350,6.712,1351,6.712,1352,6.712,1353,6.712,1354,6.712,1355,10.194,1356,6.712]],["keywords/162",[]],["title/163",[62,384.805,549,681.56]],["content/163",[]],["keywords/163",[]],["title/164",[117,548.63,173,740.918]],["content/164",[2,1.083,8,5.363,9,4.821,10,2.303,11,2.303,12,3.044,13,3.786,26,1.687,37,4.821,39,6.5,48,3.524,57,3.786,64,2.295,65,3.03,66,3.446,68,1.926,95,3.541,122,2.556,127,2.197,151,3.371,202,5.541,208,6.394,209,4.825,217,2.935,222,4.519,298,4.1,304,3.988,322,2.829,328,6.048,354,3.35,355,5.541,386,2.647,427,4.101,436,2.194,487,5.32,492,4.825,502,3.541,513,6.144,514,3.35,525,3.054,530,4.101,625,3.35,636,3.054,684,3.78,697,2.935,702,3.191,705,3.78,710,4.101,753,3.35,768,2.247,771,6.394,773,2.363,780,6.394,781,3.35,786,4.221,794,3.694,810,5.507,957,3.35,1049,5.821,1113,3.541,1119,5.821,1226,3.78,1264,3.78,1267,3.78,1295,4.101,1297,4.101,1309,3.541,1312,3.78,1357,4.588,1358,4.588,1359,7.542,1360,3.35,1361,4.588,1362,4.588,1363,4.588,1364,4.588,1365,6.742,1366,3.541,1367,3.78,1368,4.588,1369,4.101,1370,3.35,1371,4.588,1372,4.588,1373,4.588,1374,4.588,1375,4.588,1376,4.588,1377,3.541,1378,4.588,1379,4.588,1380,4.588,1381,4.588,1382,4.588]],["keywords/164",[]],["title/165",[151,476.229,311,521.777]],["content/165",[2,1.255,3,6.142,18,2.867,28,3.921,29,3.654,31,2.669,36,3.105,37,2.867,38,3.654,48,2.669,52,2.261,62,2.063,63,5.887,64,2.835,65,1.802,66,2.609,83,3.105,97,4.871,100,4.706,107,3.295,118,2.354,122,2.61,127,2.546,131,5.035,147,4.408,151,4.976,208,5.99,209,5.756,211,3.856,218,3.522,222,4.093,235,5.527,247,5.105,268,3.295,302,6.569,303,3.105,304,3.02,305,4.17,318,4.408,363,2.219,380,3.196,487,4.303,570,6.569,591,3.972,747,4.408,821,4.17,951,5.105,999,6.257,1006,4.17,1049,4.408,1158,4.706,1251,4.408,1288,4.17,1311,5.105,1312,4.706,1328,4.706,1383,5.711,1384,5.711,1385,8.592,1386,5.711,1387,5.711,1388,5.711,1389,5.711,1390,5.711,1391,5.711,1392,5.711,1393,4.408,1394,7.414,1395,4.706,1396,5.105,1397,5.711,1398,5.711,1399,4.706,1400,5.711,1401,5.711,1402,5.711]],["keywords/165",[]],["title/166",[355,456.58,646,707.395,818,652.094,1403,707.395]],["content/166",[2,0.856,8,2.696,10,2.323,11,3.813,26,1.701,28,1.436,37,2.323,39,2.447,48,2.162,64,3.298,95,3.571,117,2.383,122,2.705,127,2.21,131,2.59,147,3.571,150,6.259,151,3.395,152,3.098,159,2.383,186,2.96,197,2.323,209,4.859,210,2.67,211,3.255,218,2.853,221,2.853,222,1.701,224,2.59,229,2.114,231,2.853,235,3.324,273,3.379,298,4.129,328,4.129,337,5.225,351,5.546,355,5.574,357,3.813,363,1.798,377,2.447,380,2.59,406,5.057,436,2.213,437,3.379,481,3.571,487,2.213,492,4.859,509,4.251,613,3.081,753,3.379,768,3.72,771,6.432,773,2.383,780,5.057,786,5.407,787,6.259,793,3.081,794,5.477,810,3.379,1006,3.379,1045,3.571,1109,3.081,1153,3.813,1226,3.813,1264,3.813,1267,3.813,1288,5.546,1309,3.571,1328,3.813,1360,5.546,1367,3.813,1370,5.546,1377,3.571,1385,3.571,1395,3.813,1404,4.627,1405,4.627,1406,4.627,1407,3.571,1408,9.661,1409,3.571,1410,3.813,1411,3.813,1412,4.627,1413,4.136,1414,4.136,1415,4.627,1416,4.627,1417,4.627,1418,4.627,1419,7.596,1420,4.627,1421,4.627,1422,4.627,1423,4.627,1424,4.136,1425,4.627,1426,4.136,1427,4.627,1428,3.813,1429,4.627,1430,4.136,1431,4.627]],["keywords/166",[]],["title/167",[49,631.573,192,541.12,1432,908.14]],["content/167",[5,3.384,12,4.644,28,2.452,39,4.176,48,3.691,64,2.374,102,5.767,117,5.925,118,2.066,122,3.054,127,2.632,131,4.42,151,5.143,152,2.533,159,4.067,222,2.904,224,4.42,272,3.456,337,3.691,355,6.639,360,5.493,363,3.068,511,9.928,545,4.706,612,3.965,771,5.258,780,5.258,793,7.66,794,6.648,933,5.258,999,8.002,1113,6.096,1309,6.096,1365,7.06,1414,7.06,1426,7.06,1430,7.06,1433,7.898,1434,7.898,1435,7.898,1436,7.06,1437,7.898,1438,7.898]],["keywords/167",[]],["title/168",[102,777.881,794,521.777]],["content/168",[]],["keywords/168",[]],["title/169",[794,631.028]],["content/169",[26,4.82,64,3.342,151,7.24,349,9.572,697,8.387,777,10.803,786,7.337,788,11.719,793,8.728,794,6.421,933,8.728,949,10.119,960,11.719,1439,10.803]],["keywords/169",[]],["title/170",[298,700.471]],["content/170",[2,0.807,10,3.594,28,3.979,38,4.58,64,2.645,65,2.259,66,4.89,80,6.968,83,3.892,97,3.133,117,5.511,118,1.873,122,2.44,123,4.58,151,5.729,152,3.432,166,5.9,186,9.098,211,5.492,229,3.271,268,4.131,281,3.133,298,3.892,322,4.415,337,5.989,363,2.781,391,6.4,400,4.979,424,4.58,436,3.424,511,4.767,545,6.377,598,4.131,636,4.767,692,7.443,697,4.58,768,3.507,786,4.007,787,5.9,794,3.507,815,5.9,1240,8.261,1261,6.4,1268,6.4,1340,4.979,1407,5.526,1409,5.526,1410,5.9,1411,5.9,1440,7.16,1441,7.16,1442,7.16,1443,7.16,1444,4.979,1445,7.16,1446,7.16,1447,7.16,1448,7.16,1449,7.16]],["keywords/170",[]],["title/171",[224,442.876,794,387.575,1119,610.789,1403,707.395]],["content/171",[2,0.897,5,3.41,8,2.824,10,3.994,32,6.556,38,5.09,39,4.207,64,3.088,80,8.643,97,5.062,116,6.141,117,7.019,122,2.659,127,2.646,152,3.71,211,5.841,224,4.453,258,5.09,281,3.481,382,6.141,452,6.556,505,5.09,514,8.447,786,8.375,794,3.897,833,7.112,999,5.533,1298,7.112,1318,6.141,1345,5.809,1424,7.112,1428,9.532,1450,7.956,1451,11.568,1452,7.956,1453,11.568,1454,7.956,1455,7.956,1456,7.956,1457,7.956,1458,7.956,1459,7.956,1460,7.956]],["keywords/171",[]],["title/172",[5,389.171,217,580.975,1461,811.792]],["content/172",[8,3.154,10,3.458,12,1.66,13,2.065,18,2.065,28,4.128,39,5.498,52,1.628,59,4.104,62,2.488,64,2.145,80,7.882,122,2.944,123,6.651,127,0.941,129,1.363,151,6.235,152,2.209,186,7.405,210,2.373,211,4.96,216,3.003,255,2.536,268,5.998,281,1.8,294,2.536,328,2.236,335,3.003,337,3.219,343,2.536,345,2.86,377,6.622,436,1.967,444,2.86,449,3.003,487,1.967,505,5.686,525,2.738,545,6.195,613,5.917,655,3.003,659,3.676,692,2.86,700,2.86,771,2.738,773,3.547,785,3.389,794,3.374,808,6.86,899,3.389,933,2.738,959,3.676,1009,3.676,1049,6.86,1145,2.86,1240,8.024,1294,3.389,1318,8.024,1340,2.86,1345,3.003,1346,3.676,1349,3.676,1366,3.174,1411,3.389,1444,10.412,1461,6.157,1462,4.113,1463,6.888,1464,6.888,1465,4.113,1466,4.113,1467,4.113,1468,4.113,1469,4.113,1470,4.113,1471,4.113,1472,4.113,1473,4.113,1474,4.113,1475,4.113,1476,4.113,1477,4.113,1478,7.945]],["keywords/172",[]],["title/173",[1439,748.33,1444,631.573,1479,908.14]],["content/173",[2,0.673,5,2.556,8,3.304,10,4.673,12,2.408,28,1.852,57,2.994,59,3.554,64,1.921,65,1.882,68,2.505,80,7.032,97,2.61,108,3.816,117,3.072,122,2.249,127,1.364,151,5.118,152,5.151,186,3.816,210,3.442,211,4.906,242,3.243,250,4.356,268,5.371,281,5.66,335,4.356,337,2.788,377,3.155,424,3.816,436,2.853,509,3.338,511,3.971,545,5.547,567,4.916,571,3.816,607,4.916,636,6.198,674,5.332,692,4.149,700,4.149,773,3.072,785,4.916,786,5.21,793,3.971,794,7.28,881,5.332,899,4.916,998,3.971,1006,4.356,1098,4.916,1210,5.332,1318,8.836,1340,4.149,1345,4.356,1366,4.604,1413,5.332,1444,8.996,1478,8.322,1480,5.965,1481,5.965,1482,5.965,1483,9.309,1484,5.965,1485,5.965,1486,5.965,1487,5.965,1488,5.332,1489,5.965,1490,9.309,1491,5.965,1492,5.965,1493,5.965]],["keywords/173",[]],["title/174",[192,634.805,1279,877.89]],["content/174",[]],["keywords/174",[]],["title/175",[2,70.969,65,198.587,337,294.137,436,301.019,437,459.598,1279,518.686]],["content/175",[2,0.961,8,3.026,10,4.28,12,3.441,37,4.28,57,4.28,60,3.895,62,4.391,64,2.924,122,2.722,127,1.95,129,2.826,132,3.984,133,3.653,152,3.899,202,4.919,268,4.919,281,3.73,328,6.61,337,7.22,377,4.508,403,4.919,436,5.814,492,5.454,557,5.681,571,5.454,579,5.929,582,5.257,583,2.779,584,7.245,585,3.811,586,4.919,597,5.929,598,4.919,786,4.771,836,7.025,1166,7.621,1259,7.621,1360,6.225,1370,6.225,1377,6.58,1494,8.525,1495,8.525,1496,8.525]],["keywords/175",[]],["title/176",[799,857.76]],["content/176",[]],["keywords/176",[]],["title/177",[64,219.832,933,709.255]],["content/177",[2,0.961,8,3.026,9,4.28,39,4.508,45,9.384,64,2.924,118,2.23,122,2.477,151,5.435,152,2.734,192,5.08,197,4.28,211,5.21,229,5.555,250,6.225,258,5.454,272,3.73,298,4.635,337,6.622,487,4.077,492,5.454,585,3.811,586,4.919,612,6.103,753,6.225,771,8.094,786,4.771,793,5.676,794,5.955,1039,7.025,1087,7.621,1240,9.384,1307,7.025,1360,6.225,1367,7.025,1370,6.225,1407,6.58,1409,6.58,1428,7.025,1444,5.929,1497,7.025,1498,8.525,1499,7.621,1500,8.525,1501,8.525]],["keywords/177",[]],["title/178",[64,163.29,1251,610.789,1252,652.094,1502,791.352]],["content/178",[2,1.656,3,4.07,8,3.231,26,3.348,28,3.953,39,4.815,64,2.628,108,5.824,122,2.355,127,2.082,149,5.253,151,4.07,159,4.688,192,5.425,208,6.061,211,5.458,235,3.984,258,5.824,272,3.984,273,6.648,303,4.95,318,7.027,432,6.648,487,4.354,564,7.027,612,4.57,771,6.061,957,6.648,999,6.332,1272,9.83,1300,8.138,1307,7.502,1314,7.502,1315,8.138,1360,6.648,1385,7.027,1393,7.027,1394,7.502,1399,7.502,1497,7.502,1503,9.104,1504,9.104,1505,9.104,1506,9.104]],["keywords/178",[]],["title/179",[102,663.081,118,237.563,272,397.373]],["content/179",[2,1.213,3,4.808,9,3.618,11,5.399,12,4.341,25,3.154,28,2.238,31,3.368,37,3.618,64,2.944,80,3.919,120,2.43,122,2.955,143,4.159,151,4.808,152,2.311,185,9.615,186,6.881,211,3.089,222,2.65,229,3.293,237,6.443,272,3.154,281,4.707,311,3.53,326,4.799,418,4.611,436,3.447,471,6.443,505,4.611,585,3.222,586,4.159,612,3.618,794,5.268,933,4.799,943,5.263,949,5.563,1011,6.443,1085,9.615,1109,4.799,1272,5.563,1314,5.939,1330,6.443,1393,5.563,1395,5.939,1439,8.863,1499,6.443,1507,7.208,1508,7.208,1509,7.208,1510,7.208,1511,7.208,1512,6.443,1513,7.208,1514,7.208,1515,7.208,1516,7.208]],["keywords/179",[]],["title/180",[2,89.223,78,456.58,329,456.58,363,307.418]],["content/180",[2,1.74,3,1.619,4,0.866,8,2.195,10,2.512,12,0.799,27,1.77,31,3.783,36,2.721,37,3.105,44,1.221,48,1.692,52,0.784,53,1.221,57,2.512,60,2.826,63,1.915,64,2.323,65,1.579,66,1.655,67,0.994,75,3.48,76,1.267,78,2.089,83,1.076,92,1.267,94,1.732,97,6.024,102,1.446,112,1.108,114,2.518,117,1.865,118,1.618,122,2.659,127,0.828,129,0.656,132,2.338,133,2.144,134,2.721,149,5.123,152,4.895,158,1.77,198,1.318,202,1.142,210,2.089,211,2.144,218,2.233,235,0.866,241,1.631,256,1.047,258,1.267,267,1.77,268,3.569,272,2.19,297,1.02,311,2.451,328,1.076,329,4.157,363,2.799,377,1.047,380,4.969,395,1.631,403,2.887,408,1.631,415,3.237,436,2.393,439,4.118,445,1.631,449,2.644,481,1.528,484,1.77,487,2.393,503,4.302,505,1.267,517,1.528,557,3.783,561,1.528,564,1.528,565,1.377,568,2.984,570,3.654,574,3.654,575,3.201,576,1.631,577,1.77,582,3.086,583,1.631,584,5.705,585,2.765,586,2.887,587,5.291,588,3.862,589,2.644,590,2.233,594,1.631,597,3.48,603,7.091,611,1.77,612,3.617,616,1.77,617,1.631,618,1.631,621,1.631,627,1.77,637,1.77,638,1.377,650,1.631,657,1.631,681,1.77,683,3.237,686,1.77,687,1.528,688,3.237,689,1.77,692,1.377,695,3.237,697,1.267,700,1.377,702,1.377,705,1.631,739,1.77,747,1.528,750,1.631,770,4.473,773,1.865,800,1.77,808,1.528,827,1.77,836,1.631,947,1.631,1024,1.77,1027,3.237,1252,1.631,1269,1.77,1275,1.77,1319,1.631,1326,1.77,1340,2.518,1344,1.77,1345,1.446,1394,1.631,1436,1.77,1488,3.237,1497,1.631,1512,3.237,1517,6.185,1518,1.98,1519,1.98,1520,1.98,1521,1.98,1522,3.621,1523,1.98,1524,5.004,1525,1.98,1526,1.98,1527,1.98,1528,1.98,1529,1.98,1530,3.621,1531,1.98,1532,1.98,1533,1.98,1534,3.621,1535,3.621,1536,3.621,1537,1.98,1538,1.98,1539,1.98,1540,1.98,1541,3.621,1542,1.98,1543,1.98,1544,1.98,1545,1.98,1546,5.004,1547,1.98,1548,3.621,1549,1.98,1550,1.98,1551,1.98,1552,1.98,1553,1.98,1554,1.98,1555,1.98,1556,1.98,1557,1.98,1558,1.98,1559,1.98,1560,1.98,1561,1.98,1562,1.98,1563,1.98,1564,1.98,1565,1.98,1566,1.98,1567,1.98,1568,1.98,1569,1.98,1570,1.98,1571,1.98,1572,1.98,1573,1.98,1574,1.98]],["keywords/180",[]],["title/181",[231,656.95,1254,952.339]],["content/181",[62,4.622,82,5.484,127,2.927,129,4.242,132,5.98,135,9.344,142,6.957,231,7.891,278,5.847,432,9.344,557,7.456,709,11.439,969,11.439,970,11.439,1366,9.877,1575,12.797,1576,12.797]],["keywords/181",[]],["title/182",[322,656.95,394,777.881]],["content/182",[2,0.897,8,4.838,28,2.47,57,3.994,62,2.874,63,4.207,64,1.642,66,3.635,80,6.289,149,6.674,152,3.71,186,5.09,193,9.48,202,6.674,208,9.963,209,7.401,211,3.41,229,3.635,268,6.674,298,4.326,318,6.141,328,4.326,337,5.406,343,7.133,380,4.453,436,5.532,487,3.805,492,5.09,502,6.141,525,5.297,598,4.591,697,5.09,794,3.897,1109,5.297,1288,8.447,1340,5.533,1369,7.112,1370,5.809,1377,6.141,1385,6.141,1393,6.141,1396,7.112,1399,6.556,1407,6.141,1409,6.141,1410,6.556,1444,5.533,1577,7.956,1578,7.956,1579,7.956,1580,7.956,1581,7.956]],["keywords/182",[]],["title/183",[2,102.39,28,281.909,394,663.081]],["content/183",[2,1.212,3,4.804,8,3.814,9,5.394,10,5.394,28,4.426,29,6.875,36,7.752,37,7.158,41,8.855,44,8.793,52,4.254,87,8.855,88,7.846,90,8.294,109,5.534,261,6.626,271,6.2,362,5.394,487,5.139,1088,12.746,1582,10.746,1583,10.746,1584,10.746,1585,10.746,1586,10.746,1587,10.746,1588,10.746,1589,10.746]],["keywords/183",[]]],"invertedIndex":[["",{"_index":122,"title":{"26":{"position":[[5,1]]},"119":{"position":[[0,2]]},"120":{"position":[[0,2]]},"121":{"position":[[0,1]]},"122":{"position":[[0,2]]},"123":{"position":[[0,2]]},"126":{"position":[[18,1]]}},"content":{"5":{"position":[[200,2]]},"8":{"position":[[770,1],[790,1],[792,1],[891,2],[894,1],[993,1],[995,1],[997,1],[1624,1],[1800,1],[1862,1],[2145,1],[2430,1],[2490,1],[2537,1],[2656,1]]},"9":{"position":[[1,2],[1252,1],[1867,1],[1972,1],[2049,1],[2411,1],[2602,1],[2674,1],[3320,1],[3369,1],[3371,3],[3517,1],[3593,1],[3671,1],[3806,1],[3833,1],[3835,3],[4915,1]]},"13":{"position":[[393,1],[530,1],[582,1]]},"15":{"position":[[286,1]]},"16":{"position":[[137,1],[245,1],[361,1],[655,1],[688,1]]},"17":{"position":[[120,1],[341,1],[481,1],[585,1],[693,1],[735,1],[777,1],[818,1]]},"21":{"position":[[160,23],[184,1],[186,1],[188,1],[210,1],[216,1],[218,1],[230,1],[239,1],[241,23],[315,23],[339,1],[345,1],[347,1],[371,1],[383,1],[392,1],[394,23],[427,1],[460,1]]},"22":{"position":[[121,1],[127,11],[153,1],[155,1],[157,1],[163,7],[171,1],[173,1],[202,1],[204,7],[212,1],[240,1],[242,6],[249,24]]},"24":{"position":[[45,1],[69,1],[80,1],[117,1]]},"25":{"position":[[53,1],[77,1],[88,1],[130,1]]},"27":{"position":[[90,1],[142,1],[186,1]]},"28":{"position":[[152,1]]},"29":{"position":[[178,1],[180,3]]},"41":{"position":[[526,1],[665,1],[978,3],[1037,2],[1059,2]]},"42":{"position":[[379,1],[521,1],[637,1],[754,1]]},"43":{"position":[[304,1],[398,1],[470,1],[614,1],[902,2],[960,2],[983,2],[1032,4]]},"44":{"position":[[345,1],[468,1],[669,1],[809,1],[1021,1],[1513,1],[1569,1]]},"45":{"position":[[248,1],[345,2],[426,1],[445,2],[550,1]]},"47":{"position":[[1,2]]},"49":{"position":[[11,1]]},"50":{"position":[[1,1],[132,1],[206,1]]},"51":{"position":[[163,1],[343,1],[403,1],[863,1]]},"52":{"position":[[41,1],[57,1],[71,1]]},"57":{"position":[[61,1],[86,1],[129,1]]},"60":{"position":[[169,1],[222,1],[260,1]]},"61":{"position":[[137,1]]},"64":{"position":[[35,1],[95,1],[129,1],[177,1]]},"66":{"position":[[63,1],[91,1]]},"69":{"position":[[221,1]]},"70":{"position":[[290,2]]},"75":{"position":[[139,1],[141,3],[162,3],[253,3],[341,3],[432,3],[521,3],[635,3]]},"78":{"position":[[107,1]]},"80":{"position":[[338,1]]},"81":{"position":[[245,2]]},"91":{"position":[[101,1]]},"100":{"position":[[77,1],[98,1],[133,2]]},"103":{"position":[[67,1]]},"107":{"position":[[125,1]]},"108":{"position":[[102,1]]},"110":{"position":[[109,1]]},"111":{"position":[[123,1]]},"112":{"position":[[256,1],[337,1],[339,3],[379,2],[409,3],[437,1]]},"115":{"position":[[124,1],[165,1],[210,1]]},"116":{"position":[[123,1],[308,1]]},"119":{"position":[[479,1]]},"120":{"position":[[78,1],[89,1]]},"131":{"position":[[52,1]]},"132":{"position":[[105,2],[861,2],[1348,1],[1373,1],[1807,1],[1946,1],[2073,1],[2182,1]]},"139":{"position":[[117,1]]},"140":{"position":[[130,1]]},"141":{"position":[[23,1],[229,2],[282,1],[458,1],[460,1],[535,1],[537,3],[553,1],[595,3],[666,3],[725,2],[728,3],[751,3],[755,1],[757,1],[833,1],[835,3],[851,1],[877,3],[894,2],[903,3],[959,3],[980,2],[989,3],[1061,3]]},"143":{"position":[[253,1],[255,3],[295,2],[325,3],[540,1],[542,3],[582,2],[612,3],[632,1],[634,3],[674,2],[706,3]]},"144":{"position":[[211,2],[214,1],[228,1],[237,2],[316,2],[331,1],[339,1],[348,2],[427,2],[442,1]]},"145":{"position":[[230,1],[240,1],[265,2],[340,3],[344,1],[496,1],[506,1],[531,2],[610,3],[636,2],[715,3],[719,1]]},"146":{"position":[[246,1],[292,1],[301,2],[380,2],[395,1],[441,1],[450,2],[517,2],[532,1],[578,1],[587,2],[662,2],[677,1]]},"147":{"position":[[104,1],[300,1],[302,3],[342,2],[372,3],[519,1],[521,3],[561,2],[591,3],[595,1],[820,1],[822,3],[862,2],[892,3],[1062,1],[1064,3],[1104,2],[1134,3],[1138,1],[1322,1],[1324,3],[1364,2],[1394,3],[1532,1],[1534,3],[1574,2],[1604,3]]},"149":{"position":[[216,1],[281,1],[329,1],[377,1],[425,1],[840,1],[842,3],[858,1],[884,3],[920,2],[946,3],[977,2],[1002,3],[1034,2],[1052,3],[1087,2],[1107,3],[1147,2],[1188,2],[1200,3],[1410,1],[1412,3],[1416,2],[1474,3],[1483,1],[1495,1],[1508,3],[1532,1],[1534,3],[1558,3],[1567,1],[1594,1],[1611,3],[1788,1],[1790,3],[1811,1],[1842,3],[1871,2],[1895,3],[1929,2],[1952,3],[1982,2],[2007,3],[2042,2],[2083,3],[2271,1],[2273,3],[2290,1],[2317,3],[2346,2],[2371,3],[2403,2],[2427,3],[2457,2],[2503,3]]},"150":{"position":[[59,1],[114,1],[165,1],[230,2],[302,1]]},"151":{"position":[[212,1]]},"156":{"position":[[133,2],[215,2]]},"157":{"position":[[382,2]]},"158":{"position":[[7,16],[63,16],[93,16],[153,16],[183,16],[243,16]]},"161":{"position":[[158,1],[177,1],[193,1],[317,1],[336,1],[651,1],[695,1],[713,1],[940,1],[969,1],[976,1],[1339,1],[1402,1]]},"162":{"position":[[204,1],[223,1],[263,1],[276,8],[285,16],[347,1],[358,1],[372,24]]},"164":{"position":[[142,1],[212,1],[298,1],[341,1],[380,2],[494,1],[803,1],[879,1],[1135,1],[1183,1],[1220,2]]},"165":{"position":[[156,1],[164,1],[190,1],[202,1],[259,1],[319,1],[449,2],[657,1],[1063,1]]},"166":{"position":[[188,1],[227,1],[275,1],[526,1],[564,1],[602,1],[819,1],[856,1],[881,1],[926,2],[1170,1],[1212,2],[1417,1],[1457,2]]},"167":{"position":[[1,1],[50,1],[75,1],[140,1],[158,1],[205,1],[244,1],[280,1],[324,1],[342,1],[355,1],[380,1],[414,1],[444,1],[473,1]]},"170":{"position":[[51,1],[121,1],[162,1],[190,2],[516,1]]},"171":{"position":[[52,1],[132,1],[310,1],[375,1],[434,1],[457,1]]},"172":{"position":[[200,1],[224,1],[494,1],[500,1],[506,1],[512,1],[514,3],[518,1],[556,1],[562,1],[568,1],[574,1],[576,3],[580,1],[696,1],[733,1],[759,1],[785,1],[1111,1],[1130,1],[1160,1],[1172,1],[1202,1],[1221,1],[1251,1],[1263,1],[1290,1]]},"173":{"position":[[474,1],[602,1],[647,1],[659,1],[731,1]]},"175":{"position":[[74,1],[136,1],[181,1],[229,1],[290,1],[296,1]]},"177":{"position":[[162,1],[209,1],[473,1],[570,1]]},"178":{"position":[[179,1],[256,1],[267,1]]},"179":{"position":[[27,1],[81,1],[165,1],[228,1],[268,1],[306,1],[366,1],[398,1],[480,1],[566,1],[608,1],[681,1],[750,1]]},"180":{"position":[[984,1],[1105,1],[1126,1],[1139,1],[1141,1],[1262,1],[1283,1],[1296,1],[1298,1],[1349,1],[1360,1],[1406,1],[1446,1],[1783,1],[1877,1],[1939,1],[1950,1],[1985,1],[2038,1],[2101,1],[2235,1],[2556,1],[2653,1],[2975,1],[3077,1],[3325,1],[3422,2],[3503,1],[3522,2],[3756,1],[3769,1],[3813,1],[3871,1],[3929,1],[4087,1]]}},"keywords":{}}],["0",{"_index":208,"title":{},"content":{"8":{"position":[[1392,2]]},"21":{"position":[[265,1]]},"75":{"position":[[216,3],[304,3],[395,3],[484,3],[576,3]]},"164":{"position":[[114,1],[1020,1],[1176,2]]},"165":{"position":[[978,1],[995,1]]},"178":{"position":[[407,2]]},"182":{"position":[[79,1],[210,1],[324,1],[326,1]]}},"keywords":{}}],["0.1",{"_index":1179,"title":{},"content":{"141":{"position":[[649,6],[718,6],[942,6],[1032,6]]},"149":{"position":[[1588,5]]}},"keywords":{}}],["0.2498",{"_index":191,"title":{},"content":{"8":{"position":[[986,6]]}},"keywords":{}}],["0.2534",{"_index":189,"title":{},"content":{"8":{"position":[[884,6]]}},"keywords":{}}],["00",{"_index":752,"title":{},"content":{"56":{"position":[[73,4]]},"162":{"position":[[36,2]]}},"keywords":{}}],["00:00",{"_index":439,"title":{},"content":{"15":{"position":[[401,6]]},"17":{"position":[[587,5],[621,6]]},"92":{"position":[[60,6]]},"158":{"position":[[1,5]]},"161":{"position":[[1467,5]]},"162":{"position":[[302,5]]},"180":{"position":[[73,5],[374,6],[493,7],[1243,6]]}},"keywords":{}}],["00:15",{"_index":936,"title":{},"content":{"92":{"position":[[67,6],[74,5]]}},"keywords":{}}],["00:30",{"_index":937,"title":{},"content":{"92":{"position":[[80,6]]}},"keywords":{}}],["00c853",{"_index":1229,"title":{},"content":{"149":{"position":[[2335,10]]}},"keywords":{}}],["00d4ff",{"_index":861,"title":{},"content":{"75":{"position":[[220,7]]}},"keywords":{}}],["00e676",{"_index":1218,"title":{},"content":{"149":{"position":[[909,10]]}},"keywords":{}}],["00ff00",{"_index":1149,"title":{},"content":{"139":{"position":[[81,8]]}},"keywords":{}}],["00ffa3",{"_index":860,"title":{},"content":{"75":{"position":[[208,7],[308,7]]}},"keywords":{}}],["01",{"_index":1331,"title":{},"content":{"162":{"position":[[39,2]]}},"keywords":{}}],["01:15",{"_index":1324,"title":{},"content":{"161":{"position":[[1473,5]]}},"keywords":{}}],["02",{"_index":1332,"title":{},"content":{"162":{"position":[[42,2]]}},"keywords":{}}],["03",{"_index":1333,"title":{},"content":{"162":{"position":[[45,2]]}},"keywords":{}}],["03:00",{"_index":1352,"title":{},"content":{"162":{"position":[[308,5]]}},"keywords":{}}],["04",{"_index":1334,"title":{},"content":{"162":{"position":[[48,2]]}},"keywords":{}}],["04:00",{"_index":458,"title":{},"content":{"17":{"position":[[687,5]]},"158":{"position":[[57,5]]}},"keywords":{}}],["05",{"_index":1335,"title":{},"content":{"162":{"position":[[51,2]]}},"keywords":{}}],["06",{"_index":1336,"title":{},"content":{"162":{"position":[[54,2]]}},"keywords":{}}],["06:00",{"_index":516,"title":{},"content":{"22":{"position":[[279,5]]},"162":{"position":[[397,5]]}},"keywords":{}}],["07",{"_index":1337,"title":{},"content":{"162":{"position":[[57,2]]}},"keywords":{}}],["08",{"_index":1338,"title":{},"content":{"162":{"position":[[60,2]]}},"keywords":{}}],["08:00",{"_index":1281,"title":{},"content":{"158":{"position":[[87,5]]}},"keywords":{}}],["09",{"_index":1339,"title":{},"content":{"162":{"position":[[63,2]]}},"keywords":{}}],["1",{"_index":436,"title":{"15":{"position":[[0,2]]},"62":{"position":[[28,1]]},"143":{"position":[[7,2]]},"175":{"position":[[9,2]]}},"content":{"41":{"position":[[1272,1]]},"43":{"position":[[477,2]]},"149":{"position":[[87,2]]},"157":{"position":[[62,1]]},"161":{"position":[[1,2]]},"164":{"position":[[1179,3]]},"166":{"position":[[82,2]]},"170":{"position":[[409,1]]},"172":{"position":[[694,1]]},"173":{"position":[[558,2]]},"175":{"position":[[258,1],[322,1]]},"179":{"position":[[748,1]]},"180":{"position":[[990,1],[1414,2],[2244,2]]},"182":{"position":[[422,1],[478,1]]}},"keywords":{}}],["10",{"_index":209,"title":{},"content":{"8":{"position":[[1395,3]]},"41":{"position":[[1206,2]]},"61":{"position":[[71,3]]},"162":{"position":[[66,2]]},"164":{"position":[[336,4],[1130,4]]},"165":{"position":[[630,4],[997,2]]},"166":{"position":[[878,2],[1167,2]]},"182":{"position":[[328,2],[424,2]]}},"keywords":{}}],["100",{"_index":502,"title":{},"content":{"21":{"position":[[267,3]]},"75":{"position":[[228,7],[316,7],[407,7],[496,7],[588,7]]},"164":{"position":[[116,4]]},"182":{"position":[[81,4]]}},"keywords":{}}],["10:00",{"_index":461,"title":{},"content":{"17":{"position":[[729,5]]}},"keywords":{}}],["11",{"_index":186,"title":{},"content":{"8":{"position":[[829,2],[931,2]]},"162":{"position":[[69,2]]},"166":{"position":[[272,2]]},"170":{"position":[[118,2],[153,2],[443,2],[500,3]]},"172":{"position":[[161,2],[185,2],[530,2],[592,2],[814,2]]},"173":{"position":[[9,3]]},"179":{"position":[[138,2],[201,2]]},"182":{"position":[[475,2]]}},"keywords":{}}],["11:00",{"_index":742,"title":{},"content":{"55":{"position":[[82,5]]},"162":{"position":[[403,5]]}},"keywords":{}}],["11t02:00:00+01:00"",{"_index":1507,"title":{},"content":{"179":{"position":[[141,23]]}},"keywords":{}}],["11t05:00:00+01:00"",{"_index":1508,"title":{},"content":{"179":{"position":[[204,23]]}},"keywords":{}}],["12",{"_index":1340,"title":{},"content":{"162":{"position":[[72,2]]},"170":{"position":[[411,2]]},"172":{"position":[[920,2]]},"173":{"position":[[234,3]]},"180":{"position":[[512,3],[682,2]]},"182":{"position":[[480,2]]}},"keywords":{}}],["120",{"_index":1372,"title":{},"content":{"164":{"position":[[794,3]]}},"keywords":{}}],["12:00",{"_index":517,"title":{},"content":{"22":{"position":[[285,5]]},"55":{"position":[[60,6]]},"158":{"position":[[147,5]]},"180":{"position":[[328,5]]}},"keywords":{}}],["13",{"_index":1341,"title":{},"content":{"162":{"position":[[75,2]]}},"keywords":{}}],["13:00",{"_index":219,"title":{},"content":{"8":{"position":[[1777,8]]},"16":{"position":[[631,7],[668,7]]},"51":{"position":[[322,8]]},"55":{"position":[[50,5]]}},"keywords":{}}],["14",{"_index":1342,"title":{},"content":{"162":{"position":[[78,2]]}},"keywords":{}}],["14:00",{"_index":14,"title":{},"content":{"1":{"position":[[106,6]]}},"keywords":{}}],["14:15",{"_index":15,"title":{},"content":{"1":{"position":[[113,6]]}},"keywords":{}}],["14:30",{"_index":16,"title":{},"content":{"1":{"position":[[120,6]]}},"keywords":{}}],["14:45)price",{"_index":17,"title":{},"content":{"1":{"position":[[127,12]]}},"keywords":{}}],["14h",{"_index":462,"title":{},"content":{"17":{"position":[[746,4]]},"51":{"position":[[796,4]]}},"keywords":{}}],["15",{"_index":8,"title":{},"content":{"1":{"position":[[53,3]]},"8":{"position":[[392,3],[1270,3]]},"9":{"position":[[2662,2]]},"17":{"position":[[388,2]]},"41":{"position":[[40,3],[556,3],[662,2]]},"43":{"position":[[611,2],[1086,5],[1156,5]]},"44":{"position":[[580,2]]},"45":{"position":[[442,2],[1181,3]]},"51":{"position":[[826,2]]},"55":{"position":[[238,2]]},"56":{"position":[[20,2],[78,3]]},"60":{"position":[[98,3]]},"61":{"position":[[24,2]]},"89":{"position":[[230,2]]},"92":{"position":[[11,2]]},"96":{"position":[[17,2]]},"116":{"position":[[87,2]]},"121":{"position":[[28,2]]},"132":{"position":[[643,2]]},"157":{"position":[[558,3],[643,5]]},"161":{"position":[[144,3],[195,4],[303,3],[354,4]]},"162":{"position":[[81,2],[253,4],[349,3]]},"164":{"position":[[72,3],[91,3],[139,2],[157,3],[209,2],[227,3],[465,2],[680,2],[1427,3]]},"166":{"position":[[835,3],[897,3]]},"171":{"position":[[295,3]]},"172":{"position":[[490,3],[1107,3],[1156,3]]},"173":{"position":[[587,3],[716,3]]},"175":{"position":[[133,2]]},"177":{"position":[[497,3]]},"178":{"position":[[263,3]]},"180":{"position":[[1973,4],[2553,2],[2586,3],[3519,2]]},"182":{"position":[[75,3],[150,2],[585,4]]},"183":{"position":[[47,2]]}},"keywords":{}}],["15%)attempt",{"_index":1472,"title":{},"content":{"172":{"position":[[719,11]]}},"keywords":{}}],["15%)min",{"_index":779,"title":{},"content":{"61":{"position":[[51,7]]}},"keywords":{}}],["15%each",{"_index":1495,"title":{},"content":{"175":{"position":[[298,7]]}},"keywords":{}}],["15)error",{"_index":1111,"title":{},"content":{"131":{"position":[[1045,9]]}},"keywords":{}}],["16",{"_index":1343,"title":{},"content":{"162":{"position":[[84,2]]}},"keywords":{}}],["16:00",{"_index":455,"title":{},"content":{"17":{"position":[[579,5],[771,5]]},"158":{"position":[[177,5]]}},"keywords":{}}],["17",{"_index":1344,"title":{},"content":{"162":{"position":[[87,2]]},"180":{"position":[[1193,2]]}},"keywords":{}}],["175",{"_index":1178,"title":{},"content":{"141":{"position":[[640,4],[933,4]]},"149":{"position":[[1579,4]]}},"keywords":{}}],["17t00:00:00+01:00"",{"_index":187,"title":{},"content":{"8":{"position":[[832,24]]}},"keywords":{}}],["17t00:15:00+01:00"",{"_index":190,"title":{},"content":{"8":{"position":[[934,24]]}},"keywords":{}}],["18",{"_index":505,"title":{},"content":{"21":{"position":[[418,2]]},"43":{"position":[[758,2],[1207,2]]},"161":{"position":[[1317,3],[1380,3]]},"162":{"position":[[90,2],[115,2],[184,2],[198,2]]},"171":{"position":[[430,3]]},"172":{"position":[[496,3],[1198,3],[1247,3]]},"179":{"position":[[577,3]]},"180":{"position":[[1036,2]]}},"keywords":{}}],["18%)attempt",{"_index":1473,"title":{},"content":{"172":{"position":[[744,12]]}},"keywords":{}}],["18.5",{"_index":1512,"title":{},"content":{"179":{"position":[[301,4]]},"180":{"position":[[1093,4],[1343,5]]}},"keywords":{}}],["18.6",{"_index":1548,"title":{},"content":{"180":{"position":[[1250,4],[1351,4]]}},"keywords":{}}],["180",{"_index":1510,"title":{},"content":{"179":{"position":[[264,3]]}},"keywords":{}}],["1800.0",{"_index":1565,"title":{},"content":{"180":{"position":[[3806,6]]}},"keywords":{}}],["18:00",{"_index":454,"title":{},"content":{"17":{"position":[[566,6]]},"22":{"position":[[291,5]]}},"keywords":{}}],["19",{"_index":1319,"title":{},"content":{"161":{"position":[[1321,3],[1333,2],[1384,3],[1388,3],[1396,2]]},"162":{"position":[[93,2],[118,2],[181,2]]},"180":{"position":[[1233,2]]}},"keywords":{}}],["19:00",{"_index":1353,"title":{},"content":{"162":{"position":[[319,5]]}},"keywords":{}}],["2",{"_index":211,"title":{"16":{"position":[[0,2]]},"62":{"position":[[48,3]]},"144":{"position":[[7,2]]}},"content":{"8":{"position":[[1412,1]]},"17":{"position":[[464,1]]},"21":{"position":[[22,2]]},"41":{"position":[[1274,1]]},"42":{"position":[[752,1],[765,1]]},"43":{"position":[[621,2]]},"44":{"position":[[1461,1]]},"149":{"position":[[523,2]]},"161":{"position":[[471,2]]},"165":{"position":[[1061,1],[1077,1]]},"166":{"position":[[225,1],[408,2]]},"170":{"position":[[49,1],[74,1],[518,1]]},"171":{"position":[[318,1],[383,1],[442,1]]},"172":{"position":[[108,1],[202,1],[731,1],[952,1],[1280,1]]},"173":{"position":[[567,1],[629,2],[696,1]]},"177":{"position":[[207,1],[232,1]]},"178":{"position":[[177,1],[187,1]]},"179":{"position":[[679,1]]},"180":{"position":[[1147,1],[1454,2],[2662,2]]},"182":{"position":[[420,1]]}},"keywords":{}}],["2.0",{"_index":1589,"title":{},"content":{"183":{"position":[[318,4]]}},"keywords":{}}],["2.1",{"_index":1549,"title":{},"content":{"180":{"position":[[1264,4]]}},"keywords":{}}],["2.25h",{"_index":466,"title":{},"content":{"17":{"position":[[829,6]]}},"keywords":{}}],["20",{"_index":487,"title":{},"content":{"20":{"position":[[122,2],[201,3]]},"22":{"position":[[214,25]]},"42":{"position":[[418,2],[518,2],[942,3]]},"61":{"position":[[27,3]]},"62":{"position":[[197,2]]},"80":{"position":[[192,3]]},"157":{"position":[[758,3],[829,5]]},"161":{"position":[[121,2],[189,3],[1329,3],[1392,3]]},"162":{"position":[[96,2],[121,2],[178,2]]},"164":{"position":[[289,3],[468,3],[1022,3],[1431,4]]},"165":{"position":[[647,4],[659,4]]},"166":{"position":[[816,2]]},"172":{"position":[[552,3]]},"177":{"position":[[470,2]]},"178":{"position":[[253,2]]},"180":{"position":[[1076,2],[2972,2],[3002,2]]},"182":{"position":[[212,3]]},"183":{"position":[[289,3]]}},"keywords":{}}],["20%cheap",{"_index":485,"title":{},"content":{"20":{"position":[[98,8]]}},"keywords":{}}],["20.7",{"_index":1351,"title":{},"content":{"162":{"position":[[265,5]]}},"keywords":{}}],["2025integr",{"_index":1587,"title":{},"content":{"183":{"position":[[293,15]]}},"keywords":{}}],["20:00",{"_index":1282,"title":{},"content":{"158":{"position":[[237,5]]}},"keywords":{}}],["20h",{"_index":459,"title":{},"content":{"17":{"position":[[704,4]]}},"keywords":{}}],["21",{"_index":1345,"title":{},"content":{"162":{"position":[[99,2],[175,2]]},"171":{"position":[[371,3]]},"172":{"position":[[502,3]]},"173":{"position":[[643,3]]},"180":{"position":[[1196,2]]}},"keywords":{}}],["21%)attempt",{"_index":1474,"title":{},"content":{"172":{"position":[[770,12]]}},"keywords":{}}],["2196f3",{"_index":1227,"title":{},"content":{"149":{"position":[[1918,10]]}},"keywords":{}}],["21:45",{"_index":465,"title":{},"content":{"17":{"position":[[812,5]]}},"keywords":{}}],["22",{"_index":692,"title":{},"content":{"45":{"position":[[547,2]]},"162":{"position":[[102,2],[172,2]]},"170":{"position":[[164,2],[472,2]]},"172":{"position":[[226,2]]},"173":{"position":[[70,3]]},"180":{"position":[[1039,2]]}},"keywords":{}}],["2200.0",{"_index":1567,"title":{},"content":{"180":{"position":[[3864,6]]}},"keywords":{}}],["23",{"_index":1294,"title":{},"content":{"161":{"position":[[179,2]]},"162":{"position":[[105,2]]},"172":{"position":[[558,3]]}},"keywords":{}}],["23:45",{"_index":1517,"title":{},"content":{"180":{"position":[[33,5],[381,6],[429,7],[1086,6]]}},"keywords":{}}],["23:59",{"_index":440,"title":{},"content":{"15":{"position":[[410,7]]}},"keywords":{}}],["24",{"_index":59,"title":{},"content":{"2":{"position":[[456,2]]},"4":{"position":[[107,2],[165,2]]},"9":{"position":[[2194,2]]},"10":{"position":[[209,2]]},"15":{"position":[[388,2]]},"77":{"position":[[189,2]]},"99":{"position":[[47,2],[125,2]]},"162":{"position":[[154,2]]},"172":{"position":[[508,3],[796,6]]},"173":{"position":[[317,3]]}},"keywords":{}}],["240",{"_index":1369,"title":{},"content":{"164":{"position":[[683,3]]},"182":{"position":[[153,3]]}},"keywords":{}}],["24:00",{"_index":1354,"title":{},"content":{"162":{"position":[[325,5]]}},"keywords":{}}],["24h",{"_index":88,"title":{},"content":{"4":{"position":[[65,3],[123,3]]},"13":{"position":[[146,3],[226,3]]},"97":{"position":[[107,3]]},"121":{"position":[[115,3]]},"183":{"position":[[94,3]]}},"keywords":{}}],["25",{"_index":514,"title":{},"content":{"22":{"position":[[159,3]]},"41":{"position":[[1169,3]]},"162":{"position":[[151,2]]},"164":{"position":[[293,4]]},"171":{"position":[[48,3],[98,3]]}},"keywords":{}}],["25%reduc",{"_index":796,"title":{},"content":{"62":{"position":[[200,9]]}},"keywords":{}}],["26",{"_index":1349,"title":{},"content":{"162":{"position":[[157,2],[236,2]]},"172":{"position":[[564,3]]}},"keywords":{}}],["26h",{"_index":720,"title":{},"content":{"51":{"position":[[759,4]]}},"keywords":{}}],["27",{"_index":1484,"title":{},"content":{"173":{"position":[[214,3]]}},"keywords":{}}],["28",{"_index":506,"title":{},"content":{"21":{"position":[[421,2]]},"162":{"position":[[124,2],[148,2],[160,2]]}},"keywords":{}}],["28.5",{"_index":1303,"title":{},"content":{"161":{"position":[[653,4]]}},"keywords":{}}],["29",{"_index":1346,"title":{},"content":{"162":{"position":[[127,2]]},"172":{"position":[[570,3]]}},"keywords":{}}],["29.75",{"_index":1356,"title":{},"content":{"162":{"position":[[360,6]]}},"keywords":{}}],["2h",{"_index":346,"title":{},"content":{"9":{"position":[[2589,3]]},"51":{"position":[[851,2]]}},"keywords":{}}],["3",{"_index":377,"title":{"17":{"position":[[0,2]]},"19":{"position":[[13,2]]},"145":{"position":[[7,2]]}},"content":{"9":{"position":[[4022,1]]},"21":{"position":[[31,2]]},"44":{"position":[[1463,1]]},"62":{"position":[[226,1]]},"78":{"position":[[53,1]]},"161":{"position":[[829,2]]},"166":{"position":[[715,2]]},"172":{"position":[[425,2],[735,3],[757,1],[761,3],[787,3],[843,3]]},"173":{"position":[[687,2]]},"175":{"position":[[260,1]]},"180":{"position":[[3086,2]]}},"keywords":{}}],["30",{"_index":513,"title":{},"content":{"22":{"position":[[123,3]]},"56":{"position":[[82,3]]},"60":{"position":[[60,3]]},"80":{"position":[[334,3]]},"157":{"position":[[155,2],[749,3]]},"161":{"position":[[590,2],[665,3],[709,3]]},"162":{"position":[[130,2],[145,2],[163,2]]},"164":{"position":[[650,2],[759,2],[867,3]]}},"keywords":{}}],["31",{"_index":1350,"title":{},"content":{"162":{"position":[[169,2]]}},"keywords":{}}],["31.5",{"_index":1304,"title":{},"content":{"161":{"position":[[697,4]]}},"keywords":{}}],["32",{"_index":1348,"title":{},"content":{"162":{"position":[[142,2],[166,2]]}},"keywords":{}}],["32px",{"_index":902,"title":{},"content":{"80":{"position":[[217,4]]}},"keywords":{}}],["33",{"_index":1347,"title":{},"content":{"162":{"position":[[139,2]]}},"keywords":{}}],["34",{"_index":1296,"title":{},"content":{"161":{"position":[[338,2]]},"162":{"position":[[136,2]]}},"keywords":{}}],["35",{"_index":1320,"title":{},"content":{"161":{"position":[[1325,3],[1341,2]]},"162":{"position":[[133,2],[217,2]]}},"keywords":{}}],["36",{"_index":1530,"title":{},"content":{"180":{"position":[[448,3],[662,2]]}},"keywords":{}}],["39",{"_index":1485,"title":{},"content":{"173":{"position":[[218,3]]}},"keywords":{}}],["3h",{"_index":1201,"title":{},"content":{"147":{"position":[[1483,2]]},"162":{"position":[[314,4]]}},"keywords":{}}],["4",{"_index":210,"title":{"146":{"position":[[7,2]]}},"content":{"8":{"position":[[1399,1]]},"9":{"position":[[3910,1]]},"13":{"position":[[30,1]]},"77":{"position":[[209,1]]},"96":{"position":[[37,2]]},"161":{"position":[[980,2]]},"166":{"position":[[1015,2]]},"172":{"position":[[783,1]]},"173":{"position":[[124,2]]},"180":{"position":[[1049,2],[1206,2]]}},"keywords":{}}],["40",{"_index":489,"title":{},"content":{"20":{"position":[[143,2]]},"80":{"position":[[324,3]]},"161":{"position":[[279,2],[348,3]]}},"keywords":{}}],["40%normal",{"_index":488,"title":{},"content":{"20":{"position":[[125,9]]}},"keywords":{}}],["400",{"_index":543,"title":{},"content":{"28":{"position":[[148,3]]}},"keywords":{}}],["400.0",{"_index":1569,"title":{},"content":{"180":{"position":[[3923,5]]}},"keywords":{}}],["45",{"_index":753,"title":{},"content":{"56":{"position":[[86,2]]},"161":{"position":[[923,2]]},"164":{"position":[[871,2]]},"166":{"position":[[599,2]]},"177":{"position":[[567,2]]}},"keywords":{}}],["48",{"_index":216,"title":{},"content":{"8":{"position":[[1485,2],[1923,2]]},"9":{"position":[[2300,2]]},"16":{"position":[[504,2]]},"51":{"position":[[444,2]]},"172":{"position":[[520,3]]}},"keywords":{}}],["48h",{"_index":370,"title":{"16":{"position":[[11,3]]},"51":{"position":[[17,3]]}},"content":{"9":{"position":[[3417,3]]},"13":{"position":[[313,3]]},"17":{"position":[[639,3]]},"28":{"position":[[74,3]]},"32":{"position":[[148,3]]},"51":{"position":[[416,3]]}},"keywords":{}}],["4caf50",{"_index":1225,"title":{},"content":{"149":{"position":[[1485,9],[1860,10]]}},"keywords":{}}],["4dddff",{"_index":862,"title":{},"content":{"75":{"position":[[296,7]]}},"keywords":{}}],["5",{"_index":328,"title":{"20":{"position":[[6,2]]}},"content":{"9":{"position":[[1999,1],[3595,1],[4093,1]]},"41":{"position":[[1204,1]]},"50":{"position":[[233,1]]},"61":{"position":[[69,1]]},"157":{"position":[[96,2],[192,2]]},"161":{"position":[[618,2],[671,3],[715,3],[1155,2]]},"164":{"position":[[333,2],[1061,1],[1097,1],[1127,2]]},"166":{"position":[[1186,2],[1306,2]]},"172":{"position":[[812,1]]},"175":{"position":[[227,1],[354,2]]},"180":{"position":[[1564,1]]},"182":{"position":[[207,2]]}},"keywords":{}}],["5%)rate",{"_index":782,"title":{},"content":{"61":{"position":[[96,9]]}},"keywords":{}}],["5%add",{"_index":797,"title":{},"content":{"62":{"position":[[228,5]]}},"keywords":{}}],["5%rang",{"_index":1376,"title":{},"content":{"164":{"position":[[1011,8]]}},"keywords":{}}],["50",{"_index":899,"title":{},"content":{"80":{"position":[[202,3]]},"172":{"position":[[582,3]]},"173":{"position":[[305,3]]}},"keywords":{}}],["51",{"_index":1476,"title":{},"content":{"172":{"position":[[946,4]]}},"keywords":{}}],["54",{"_index":1182,"title":{},"content":{"141":{"position":[[714,3],[1028,3]]}},"keywords":{}}],["55",{"_index":624,"title":{},"content":{"42":{"position":[[634,2]]}},"keywords":{}}],["55Β°c",{"_index":626,"title":{},"content":{"42":{"position":[[658,4]]}},"keywords":{}}],["5h",{"_index":1355,"title":{},"content":{"162":{"position":[[331,4],[409,4]]}},"keywords":{}}],["60",{"_index":492,"title":{},"content":{"20":{"position":[[169,2]]},"157":{"position":[[549,3]]},"161":{"position":[[904,2]]},"164":{"position":[[625,2],[726,2]]},"166":{"position":[[542,2],[618,2]]},"175":{"position":[[178,2]]},"177":{"position":[[592,2]]},"182":{"position":[[143,2]]}},"keywords":{}}],["60%expens",{"_index":490,"title":{},"content":{"20":{"position":[[146,12]]}},"keywords":{}}],["66bb6a",{"_index":1220,"title":{},"content":{"149":{"position":[[966,10]]}},"keywords":{}}],["67",{"_index":1181,"title":{},"content":{"141":{"position":[[710,3],[1024,3]]}},"keywords":{}}],["7",{"_index":419,"title":{},"content":{"11":{"position":[[387,1]]},"132":{"position":[[572,1],[1467,2]]}},"keywords":{}}],["7)automat",{"_index":1124,"title":{},"content":{"132":{"position":[[577,11]]}},"keywords":{}}],["7.5",{"_index":1547,"title":{},"content":{"180":{"position":[[1107,4]]}},"keywords":{}}],["7.9",{"_index":1559,"title":{},"content":{"180":{"position":[[1934,4]]}},"keywords":{}}],["78909c",{"_index":1230,"title":{},"content":{"149":{"position":[[2392,10]]}},"keywords":{}}],["8",{"_index":607,"title":{},"content":{"41":{"position":[[1245,2]]},"69":{"position":[[240,1]]},"173":{"position":[[127,1]]}},"keywords":{}}],["8.2",{"_index":695,"title":{},"content":{"45":{"position":[[693,3]]},"180":{"position":[[1872,4],[3752,3]]}},"keywords":{}}],["8.2%)day_price_min",{"_index":696,"title":{},"content":{"45":{"position":[[701,19]]}},"keywords":{}}],["80",{"_index":645,"title":{},"content":{"43":{"position":[[395,2]]},"141":{"position":[[645,3],[938,3]]},"149":{"position":[[1584,3]]}},"keywords":{}}],["80%very_expens",{"_index":493,"title":{},"content":{"20":{"position":[[172,17]]}},"keywords":{}}],["8h",{"_index":456,"title":{},"content":{"17":{"position":[[593,3],[788,3]]}},"keywords":{}}],["90",{"_index":1309,"title":{},"content":{"161":{"position":[[952,2]]},"164":{"position":[[790,3]]},"166":{"position":[[523,2]]},"167":{"position":[[367,3]]}},"keywords":{}}],["96",{"_index":947,"title":{},"content":{"96":{"position":[[60,2]]},"160":{"position":[[40,2]]},"180":{"position":[[839,2]]}},"keywords":{}}],["9e9e9",{"_index":1221,"title":{},"content":{"149":{"position":[[1023,10],[1497,10]]}},"keywords":{}}],["_",{"_index":501,"title":{},"content":{"21":{"position":[[232,3],[236,2],[385,3],[389,2]]}},"keywords":{}}],["___",{"_index":500,"title":{},"content":{"21":{"position":[[212,3],[220,4],[225,4],[341,3],[373,4],[378,4]]}},"keywords":{}}],["abov",{"_index":44,"title":{},"content":{"2":{"position":[[248,5]]},"19":{"position":[[168,5]]},"41":{"position":[[655,6]]},"43":{"position":[[604,6]]},"44":{"position":[[573,6]]},"60":{"position":[[64,5]]},"157":{"position":[[195,5]]},"180":{"position":[[2546,6]]},"183":{"position":[[205,5],[249,5]]}},"keywords":{}}],["above)or",{"_index":1044,"title":{},"content":{"116":{"position":[[489,8]]}},"keywords":{}}],["absolut",{"_index":380,"title":{"42":{"position":[[10,8]]}},"content":{"9":{"position":[[4159,8]]},"20":{"position":[[10,8]]},"40":{"position":[[121,8]]},"42":{"position":[[61,8],[205,8],[381,8]]},"43":{"position":[[49,8]]},"45":{"position":[[854,8]]},"161":{"position":[[1037,8]]},"165":{"position":[[14,9]]},"166":{"position":[[1357,8]]},"180":{"position":[[112,8],[957,8],[1313,8],[1995,8],[2671,8],[2977,8],[4282,8]]},"182":{"position":[[276,8]]}},"keywords":{}}],["accept",{"_index":1268,"title":{},"content":{"157":{"position":[[786,10]]},"170":{"position":[[402,6]]}},"keywords":{}}],["access",{"_index":916,"title":{},"content":{"87":{"position":[[26,6],[171,6]]}},"keywords":{}}],["accessst",{"_index":1127,"title":{},"content":{"132":{"position":[[729,11]]}},"keywords":{}}],["accur",{"_index":1066,"title":{},"content":{"121":{"position":[[52,8]]}},"keywords":{}}],["act",{"_index":568,"title":{"41":{"position":[[15,3]]}},"content":{"41":{"position":[[533,3]]},"180":{"position":[[2252,3],[2563,3]]}},"keywords":{}}],["action",{"_index":132,"title":{"6":{"position":[[0,7]]},"7":{"position":[[10,8]]}},"content":{"8":{"position":[[2658,7],[2787,7]]},"9":{"position":[[20,6],[249,6],[841,6],[4917,7],[4972,7]]},"10":{"position":[[232,6]]},"11":{"position":[[126,7]]},"30":{"position":[[1,7]]},"41":{"position":[[802,7]]},"42":{"position":[[663,7]]},"43":{"position":[[761,7]]},"44":{"position":[[583,7],[1156,7]]},"45":{"position":[[448,7]]},"69":{"position":[[245,7]]},"70":{"position":[[214,7]]},"119":{"position":[[415,7]]},"131":{"position":[[197,7],[1139,6]]},"175":{"position":[[521,7]]},"180":{"position":[[2590,7],[3012,7],[3525,7]]},"181":{"position":[[168,6]]}},"keywords":{}}],["action'",{"_index":1112,"title":{},"content":{"131":{"position":[[1306,8]]}},"keywords":{}}],["activ",{"_index":418,"title":{"44":{"position":[[37,6]]}},"content":{"11":{"position":[[302,7]]},"44":{"position":[[701,6]]},"58":{"position":[[16,6]]},"73":{"position":[[39,7],[162,6],[280,6]]},"77":{"position":[[372,6]]},"161":{"position":[[1717,6]]},"179":{"position":[[111,8]]}},"keywords":{}}],["active"",{"_index":923,"title":{},"content":{"88":{"position":[[221,14]]}},"keywords":{}}],["active/alert",{"_index":1012,"title":{},"content":{"114":{"position":[[93,12]]}},"keywords":{}}],["actual",{"_index":652,"title":{},"content":{"43":{"position":[[1186,8]]},"67":{"position":[[169,8]]},"116":{"position":[[50,8]]},"151":{"position":[[146,8]]}},"keywords":{}}],["ad",{"_index":1475,"title":{},"content":{"172":{"position":[[836,6]]}},"keywords":{}}],["adapt",{"_index":217,"title":{"172":{"position":[[13,9]]}},"content":{"8":{"position":[[1527,6]]},"9":{"position":[[3114,6]]},"51":{"position":[[40,6]]},"139":{"position":[[135,10]]},"140":{"position":[[666,5]]},"148":{"position":[[396,5]]},"164":{"position":[[499,6]]}},"keywords":{}}],["add",{"_index":108,"title":{},"content":{"5":{"position":[[9,3]]},"8":{"position":[[2539,3]]},"28":{"position":[[1,3]]},"65":{"position":[[165,3]]},"80":{"position":[[340,3]]},"120":{"position":[[18,4]]},"173":{"position":[[368,4]]},"178":{"position":[[99,3]]}},"keywords":{}}],["addit",{"_index":335,"title":{},"content":{"9":{"position":[[2212,10]]},"57":{"position":[[166,10]]},"87":{"position":[[95,10]]},"172":{"position":[[858,10]]},"173":{"position":[[349,10]]}},"keywords":{}}],["addition",{"_index":344,"title":{},"content":{"9":{"position":[[2553,12]]}},"keywords":{}}],["adjust",{"_index":355,"title":{"166":{"position":[[27,6]]}},"content":{"9":{"position":[[2932,6]]},"16":{"position":[[719,7]]},"28":{"position":[[154,6]]},"51":{"position":[[967,6]]},"60":{"position":[[117,6]]},"152":{"position":[[137,6]]},"157":{"position":[[928,6]]},"164":{"position":[[271,7],[772,7],[1109,7]]},"166":{"position":[[50,6],[411,6],[1018,6]]},"167":{"position":[[282,6],[385,6]]}},"keywords":{}}],["advanc",{"_index":231,"title":{"181":{"position":[[0,8]]}},"content":{"8":{"position":[[2284,8]]},"9":{"position":[[432,8]]},"17":{"position":[[79,9]]},"47":{"position":[[307,8],[395,8]]},"80":{"position":[[1,8]]},"154":{"position":[[184,8]]},"166":{"position":[[1047,11]]},"181":{"position":[[5,8]]}},"keywords":{}}],["advantag",{"_index":1150,"title":{},"content":{"139":{"position":[[104,11]]},"141":{"position":[[1071,9],[1152,10]]}},"keywords":{}}],["affect",{"_index":1328,"title":{},"content":{"161":{"position":[[1600,7]]},"165":{"position":[[818,6]]},"166":{"position":[[669,7]]}},"keywords":{}}],["aggregationcustomiz",{"_index":162,"title":{},"content":{"8":{"position":[[414,23]]}},"keywords":{}}],["ahead",{"_index":1524,"title":{},"content":{"180":{"position":[[255,5],[304,5],[671,5]]}},"keywords":{}}],["aheadrisk",{"_index":1539,"title":{},"content":{"180":{"position":[[691,9]]}},"keywords":{}}],["alert",{"_index":1274,"title":{},"content":{"157":{"position":[[873,8]]}},"keywords":{}}],["alert/veri",{"_index":1206,"title":{},"content":{"148":{"position":[[247,11]]}},"keywords":{}}],["alia",{"_index":575,"title":{},"content":{"41":{"position":[[229,6]]},"42":{"position":[[108,6]]},"43":{"position":[[80,6]]},"44":{"position":[[93,6],[866,6]]},"45":{"position":[[91,6]]},"69":{"position":[[15,6]]},"70":{"position":[[58,6]]},"180":{"position":[[2294,6],[2725,6],[3163,6]]}},"keywords":{}}],["allow",{"_index":1394,"title":{},"content":{"165":{"position":[[896,5],[1065,5]]},"178":{"position":[[181,5]]},"180":{"position":[[3979,5]]}},"keywords":{}}],["alon",{"_index":441,"title":{},"content":{"15":{"position":[[445,5]]},"25":{"position":[[209,6]]}},"keywords":{}}],["alonegener",{"_index":388,"title":{},"content":{"9":{"position":[[4643,14]]}},"keywords":{}}],["alreadi",{"_index":1408,"title":{},"content":{"166":{"position":[[190,7],[229,7],[277,7]]}},"keywords":{}}],["alway",{"_index":221,"title":{},"content":{"8":{"position":[[1909,6]]},"9":{"position":[[777,6]]},"13":{"position":[[358,6]]},"16":{"position":[[14,6],[491,6]]},"17":{"position":[[450,6]]},"51":{"position":[[426,6],[838,6]]},"97":{"position":[[245,6]]},"161":{"position":[[1538,6]]},"166":{"position":[[1517,6]]}},"keywords":{}}],["amp",{"_index":496,"title":{},"content":{"21":{"position":[[25,5]]},"57":{"position":[[71,5]]},"120":{"position":[[99,5]]},"132":{"position":[[1358,5]]}},"keywords":{}}],["analysi",{"_index":54,"title":{"4":{"position":[[12,9]]}},"content":{"2":{"position":[[396,8]]},"8":{"position":[[89,9]]},"121":{"position":[[87,8]]}},"keywords":{}}],["analyz",{"_index":1284,"title":{},"content":{"160":{"position":[[27,8]]}},"keywords":{}}],["anoth",{"_index":757,"title":{},"content":{"57":{"position":[[24,7],[141,7]]}},"keywords":{}}],["any/cheap/vcheap",{"_index":1578,"title":{},"content":{"182":{"position":[[259,16]]}},"keywords":{}}],["anyth",{"_index":1261,"title":{},"content":{"157":{"position":[[325,9]]},"170":{"position":[[293,8]]}},"keywords":{}}],["anyway",{"_index":1175,"title":{},"content":{"141":{"position":[[410,6],[508,6]]}},"keywords":{}}],["apex_config",{"_index":533,"title":{},"content":{"27":{"position":[[47,12]]},"28":{"position":[[120,12]]}},"keywords":{}}],["apexchart",{"_index":259,"title":{"47":{"position":[[0,10]]}},"content":{"9":{"position":[[120,10],[441,10],[646,10],[968,10],[1107,10],[3065,10],[4627,10]]},"13":{"position":[[194,10],[274,10],[382,10],[519,10]]},"15":{"position":[[85,10],[429,10]]},"16":{"position":[[121,10]]},"17":{"position":[[104,10]]},"21":{"position":[[782,11]]},"24":{"position":[[1,10]]},"25":{"position":[[193,10]]},"47":{"position":[[160,10],[316,10],[636,10]]},"48":{"position":[[12,10]]},"78":{"position":[[135,10]]},"81":{"position":[[275,10]]},"119":{"position":[[481,10]]},"121":{"position":[[329,10]]},"132":{"position":[[409,12],[1809,10]]}},"keywords":{}}],["apexcharts_card.upd",{"_index":1137,"title":{},"content":{"132":{"position":[[2108,22]]}},"keywords":{}}],["apexcharts_config",{"_index":332,"title":{},"content":{"9":{"position":[[2102,17]]},"50":{"position":[[265,17]]},"51":{"position":[[245,17],[665,17]]}},"keywords":{}}],["api",{"_index":271,"title":{},"content":{"9":{"position":[[393,3]]},"10":{"position":[[90,4]]},"47":{"position":[[290,3]]},"56":{"position":[[1,3],[146,3]]},"64":{"position":[[17,3],[120,3]]},"67":{"position":[[123,3]]},"87":{"position":[[1,3]]},"89":{"position":[[220,3]]},"119":{"position":[[108,3]]},"120":{"position":[[126,3]]},"183":{"position":[[12,3]]}},"keywords":{}}],["app",{"_index":832,"title":{},"content":{"67":{"position":[[207,4]]}},"keywords":{}}],["appeal",{"_index":448,"title":{},"content":{"16":{"position":[[601,6]]}},"keywords":{}}],["appear",{"_index":352,"title":{"67":{"position":[[18,9]]}},"content":{"9":{"position":[[2886,11],[4406,7]]},"22":{"position":[[442,7]]},"131":{"position":[[347,10]]},"151":{"position":[[370,6]]}},"keywords":{}}],["appli",{"_index":1168,"title":{},"content":{"141":{"position":[[33,5]]},"149":{"position":[[614,5]]},"161":{"position":[[983,5]]}},"keywords":{}}],["applianc",{"_index":572,"title":{},"content":{"41":{"position":[[170,10]]},"157":{"position":[[593,10]]}},"keywords":{}}],["appreci",{"_index":288,"title":{},"content":{"9":{"position":[[784,12]]}},"keywords":{}}],["approach",{"_index":444,"title":{"150":{"position":[[6,8]]}},"content":{"15":{"position":[[625,9]]},"43":{"position":[[13,9]]},"45":{"position":[[14,9]]},"132":{"position":[[2079,8],[2188,8]]},"172":{"position":[[26,8]]}},"keywords":{}}],["approachdis",{"_index":425,"title":{},"content":{"11":{"position":[[506,15]]}},"keywords":{}}],["approachw",{"_index":1232,"title":{},"content":{"150":{"position":[[22,12]]}},"keywords":{}}],["areasonli",{"_index":385,"title":{},"content":{"9":{"position":[[4396,9]]}},"keywords":{}}],["aren't",{"_index":1454,"title":{},"content":{"171":{"position":[[176,6]]}},"keywords":{}}],["around",{"_index":41,"title":{},"content":{"2":{"position":[[193,6]]},"55":{"position":[[43,6]]},"183":{"position":[[179,6]]}},"keywords":{}}],["array",{"_index":146,"title":{},"content":{"8":{"position":[[140,5],[160,5]]},"27":{"position":[[17,5]]},"132":{"position":[[1226,5]]}},"keywords":{}}],["array_of_array",{"_index":200,"title":{},"content":{"8":{"position":[[1217,15]]}},"keywords":{}}],["array_of_object",{"_index":179,"title":{},"content":{"8":{"position":[[703,16],[1197,16],[1233,16],[1671,16]]},"132":{"position":[[2338,16]]}},"keywords":{}}],["arraystim",{"_index":148,"title":{},"content":{"8":{"position":[[169,10]]}},"keywords":{}}],["arriv",{"_index":446,"title":{},"content":{"16":{"position":[[565,8]]}},"keywords":{}}],["ask",{"_index":736,"title":{"53":{"position":[[17,5]]}},"content":{},"keywords":{}}],["assist",{"_index":315,"title":{},"content":{"9":{"position":[[1667,9],[4783,9]]},"52":{"position":[[222,9]]},"64":{"position":[[192,9]]},"89":{"position":[[151,9]]},"98":{"position":[[129,9]]},"105":{"position":[[51,9]]},"115":{"position":[[297,9]]},"120":{"position":[[68,9]]},"122":{"position":[[49,9]]},"132":{"position":[[1582,9]]},"151":{"position":[[238,9]]}},"keywords":{}}],["assistant'",{"_index":270,"title":{},"content":{"9":{"position":[[373,11]]},"144":{"position":[[10,11]]},"148":{"position":[[27,11]]}},"keywords":{}}],["assistant.log)tibb",{"_index":831,"title":{},"content":{"67":{"position":[[148,20]]}},"keywords":{}}],["assistantsearch",{"_index":984,"title":{},"content":{"103":{"position":[[84,15]]},"140":{"position":[[147,15]]}},"keywords":{}}],["asymmetr",{"_index":1277,"title":{},"content":{"157":{"position":[[1018,10]]}},"keywords":{}}],["attach",{"_index":917,"title":{},"content":{"87":{"position":[[111,8]]}},"keywords":{}}],["attempt",{"_index":1444,"title":{"173":{"position":[[23,9]]}},"content":{"170":{"position":[[414,9]]},"172":{"position":[[93,9],[164,9],[275,8],[322,8],[595,9],[673,11],[686,7],[803,8],[869,8],[923,7]]},"173":{"position":[[13,9],[129,9],[238,9],[360,7]]},"177":{"position":[[370,9]]},"182":{"position":[[495,10]]}},"keywords":{}}],["attempts)bas",{"_index":1469,"title":{},"content":{"172":{"position":[[533,13]]}},"keywords":{}}],["attribut",{"_index":272,"title":{"179":{"position":[[21,11]]}},"content":{"9":{"position":[[415,11]]},"45":{"position":[[56,9],[613,11],[920,10]]},"79":{"position":[[22,9]]},"81":{"position":[[349,10]]},"87":{"position":[[83,11]]},"116":{"position":[[325,9]]},"119":{"position":[[362,9]]},"126":{"position":[[437,10]]},"131":{"position":[[285,11],[747,11]]},"132":{"position":[[709,10],[1046,11],[1106,11]]},"138":{"position":[[16,9]]},"139":{"position":[[335,9]]},"140":{"position":[[37,9],[96,10],[261,10]]},"149":{"position":[[456,9]]},"151":{"position":[[174,9]]},"161":{"position":[[1653,9]]},"167":{"position":[[462,10]]},"177":{"position":[[292,11]]},"178":{"position":[[363,10]]},"179":{"position":[[5,10]]},"180":{"position":[[3611,11],[3968,10],[4338,10]]}},"keywords":{}}],["attributesdynam",{"_index":1052,"title":{},"content":{"119":{"position":[[263,17]]}},"keywords":{}}],["auction",{"_index":1527,"title":{},"content":{"180":{"position":[[310,7]]}},"keywords":{}}],["auto",{"_index":341,"title":{"17":{"position":[[18,4]]},"81":{"position":[[0,4]]}},"content":{"9":{"position":[[2486,5],[3076,4]]},"13":{"position":[[431,4],[702,4]]},"21":{"position":[[803,4]]},"32":{"position":[[174,4]]},"44":{"position":[[1045,4],[1386,4]]},"51":{"position":[[454,4]]},"121":{"position":[[342,4]]}},"keywords":{}}],["autom",{"_index":557,"title":{"37":{"position":[[0,10]]},"39":{"position":[[12,12]]},"40":{"position":[[17,12]]},"68":{"position":[[0,10]]}},"content":{"41":{"position":[[149,10],[215,11],[1348,10]]},"42":{"position":[[94,11]]},"43":{"position":[[66,11]]},"44":{"position":[[9,11],[79,11],[820,11]]},"45":{"position":[[77,11]]},"65":{"position":[[169,10]]},"69":{"position":[[1,11],[322,10]]},"70":{"position":[[44,11]]},"88":{"position":[[244,11]]},"117":{"position":[[151,11]]},"119":{"position":[[558,10]]},"120":{"position":[[261,12]]},"175":{"position":[[385,10],[406,11]]},"180":{"position":[[2172,12],[2204,11],[2280,11],[2711,11],[3149,11],[3985,11]]},"181":{"position":[[68,10],[101,10]]}},"keywords":{}}],["automat",{"_index":26,"title":{"70":{"position":[[24,15]]}},"content":{"2":{"position":[[12,13]]},"3":{"position":[[47,13]]},"8":{"position":[[1513,13]]},"9":{"position":[[1051,9],[1269,9],[1465,13],[1638,13],[2320,13],[2813,13],[2899,9],[4745,13]]},"16":{"position":[[39,13],[413,9],[530,13],[705,13]]},"21":{"position":[[34,13],[574,13]]},"22":{"position":[[310,9]]},"51":{"position":[[26,13]]},"55":{"position":[[200,13],[291,13]]},"81":{"position":[[1,13]]},"88":{"position":[[20,13]]},"89":{"position":[[117,14]]},"97":{"position":[[149,9]]},"102":{"position":[[474,13]]},"105":{"position":[[20,13],[335,13]]},"107":{"position":[[140,13]]},"108":{"position":[[117,13]]},"112":{"position":[[271,13]]},"119":{"position":[[301,9]]},"121":{"position":[[237,9]]},"131":{"position":[[422,13],[1146,13],[1394,14]]},"139":{"position":[[119,9]]},"148":{"position":[[382,13]]},"149":{"position":[[471,13]]},"157":{"position":[[230,13]]},"161":{"position":[[1158,9],[1218,13]]},"164":{"position":[[506,13]]},"166":{"position":[[323,13]]},"169":{"position":[[70,13]]},"178":{"position":[[319,9]]}},"keywords":{}}],["automation/script",{"_index":421,"title":{},"content":{"11":{"position":[[412,17]]},"50":{"position":[[30,17]]}},"keywords":{}}],["automationsbest",{"_index":562,"title":{},"content":{"38":{"position":[[41,15]]}},"keywords":{}}],["automationsconfigur",{"_index":1244,"title":{},"content":{"152":{"position":[[104,24]]}},"keywords":{}}],["automationsvolatil",{"_index":560,"title":{},"content":{"38":{"position":[[13,21]]}},"keywords":{}}],["avail",{"_index":134,"title":{"7":{"position":[[0,9]]}},"content":{"8":{"position":[[1542,13],[1750,9],[1833,10]]},"9":{"position":[[2398,12]]},"13":{"position":[[566,9]]},"16":{"position":[[460,10]]},"45":{"position":[[592,9],[935,9]]},"51":{"position":[[55,13],[295,9],[376,10]]},"117":{"position":[[91,9]]},"119":{"position":[[226,9]]},"131":{"position":[[703,11]]},"132":{"position":[[799,11],[1593,9],[1701,9]]},"152":{"position":[[38,9]]},"180":{"position":[[1808,10],[3119,10],[3590,9]]}},"keywords":{}}],["averag",{"_index":37,"title":{},"content":{"2":{"position":[[144,7],[200,7],[254,7]]},"4":{"position":[[69,7],[79,7],[127,7],[137,7],[229,7]]},"60":{"position":[[108,7]]},"94":{"position":[[73,8]]},"97":{"position":[[111,8]]},"99":{"position":[[10,8],[19,7],[88,8],[97,7]]},"121":{"position":[[119,8]]},"126":{"position":[[402,7]]},"161":{"position":[[504,9],[569,8],[819,8]]},"164":{"position":[[941,8],[978,7],[1211,7]]},"165":{"position":[[283,7]]},"166":{"position":[[1039,7]]},"175":{"position":[[376,7]]},"179":{"position":[[308,7]]},"180":{"position":[[1067,8],[1118,7],[1224,8],[1275,7]]},"183":{"position":[[98,9],[255,7]]}},"keywords":{}}],["average)"",{"_index":1313,"title":{},"content":{"161":{"position":[[1139,14]]}},"keywords":{}}],["average)default",{"_index":1383,"title":{},"content":{"165":{"position":[[112,16]]}},"keywords":{}}],["averagecheap",{"_index":1582,"title":{},"content":{"183":{"position":[[142,12]]}},"keywords":{}}],["averagecheck",{"_index":1291,"title":{},"content":{"160":{"position":[[315,12]]}},"keywords":{}}],["averageexpens",{"_index":1584,"title":{},"content":{"183":{"position":[[186,16]]}},"keywords":{}}],["averagelow",{"_index":769,"title":{},"content":{"60":{"position":[[70,10]]}},"keywords":{}}],["averagenorm",{"_index":1583,"title":{},"content":{"183":{"position":[[163,13]]}},"keywords":{}}],["averagepeak",{"_index":1089,"title":{},"content":{"126":{"position":[[304,11]]},"157":{"position":[[115,11]]}},"keywords":{}}],["averagerelax",{"_index":1260,"title":{},"content":{"157":{"position":[[211,18]]}},"keywords":{}}],["averagetrail",{"_index":58,"title":{},"content":{"2":{"position":[[440,15]]}},"keywords":{}}],["averageus",{"_index":61,"title":{},"content":{"2":{"position":[[464,11]]}},"keywords":{}}],["averagevery_expens",{"_index":1585,"title":{},"content":{"183":{"position":[[211,21]]}},"keywords":{}}],["averagevolatil",{"_index":978,"title":{},"content":{"102":{"position":[[283,17]]}},"keywords":{}}],["avg",{"_index":1302,"title":{},"content":{"161":{"position":[[585,4]]},"162":{"position":[[231,4]]}},"keywords":{}}],["avoid",{"_index":49,"title":{"70":{"position":[[6,5]]},"167":{"position":[[19,6]]}},"content":{"2":{"position":[[344,6]]},"3":{"position":[[241,5]]},"95":{"position":[[72,5]]},"160":{"position":[[426,5]]}},"keywords":{}}],["awar",{"_index":561,"title":{"40":{"position":[[11,5]]}},"content":{"38":{"position":[[35,5]]},"43":{"position":[[174,5]]},"180":{"position":[[2227,6]]}},"keywords":{}}],["aware"",{"_index":1563,"title":{},"content":{"180":{"position":[[3201,11]]}},"keywords":{}}],["axi",{"_index":300,"title":{"21":{"position":[[10,4]]}},"content":{"9":{"position":[[1237,4],[1430,4],[1519,4],[2432,4],[2695,4],[2745,4],[2919,4],[3109,4],[3822,4]]},"13":{"position":[[673,4]]},"16":{"position":[[373,4],[700,4]]},"17":{"position":[[410,4]]},"21":{"position":[[351,4],[699,4]]},"30":{"position":[[117,4]]},"32":{"position":[[131,4]]},"121":{"position":[[393,4]]},"131":{"position":[[316,4],[409,4],[846,4],[909,4],[1191,4],[1382,4]]}},"keywords":{}}],["axis)fix",{"_index":387,"title":{},"content":{"9":{"position":[[4567,10]]}},"keywords":{}}],["b",{"_index":920,"title":{"88":{"position":[[0,2]]}},"content":{},"keywords":{}}],["back",{"_index":253,"title":{},"content":{"8":{"position":[[2799,6]]}},"keywords":{}}],["background",{"_index":855,"title":{},"content":{"75":{"position":[[127,11],[615,10]]},"141":{"position":[[523,11],[821,11]]},"149":{"position":[[1520,11]]}},"keywords":{}}],["backward",{"_index":1117,"title":{},"content":{"132":{"position":[[154,8]]}},"keywords":{}}],["badg",{"_index":905,"title":{},"content":{"80":{"position":[[254,5]]},"144":{"position":[[222,5]]},"146":{"position":[[286,5],[435,5],[572,5]]}},"keywords":{}}],["balanc",{"_index":1413,"title":{},"content":{"166":{"position":[[353,7]]},"173":{"position":[[23,8]]}},"keywords":{}}],["band",{"_index":313,"title":{},"content":{"9":{"position":[[1578,5],[4256,5]]},"15":{"position":[[373,7]]},"22":{"position":[[43,5]]}},"keywords":{}}],["bank",{"_index":982,"title":{},"content":{"102":{"position":[[424,4]]},"114":{"position":[[347,4]]},"145":{"position":[[208,4]]},"147":{"position":[[792,4]]},"149":{"position":[[1382,4]]}},"keywords":{}}],["bare",{"_index":1522,"title":{},"content":{"180":{"position":[[127,6],[1328,6]]}},"keywords":{}}],["base",{"_index":52,"title":{"39":{"position":[[6,5]]},"115":{"position":[[6,5]]}},"content":{"2":{"position":[[375,5]]},"3":{"position":[[334,5]]},"9":{"position":[[2384,5],[4053,5]]},"19":{"position":[[1,5],[247,5]]},"20":{"position":[[1,5]]},"22":{"position":[[330,5]]},"38":{"position":[[7,5]]},"42":{"position":[[1039,5]]},"52":{"position":[[203,5]]},"90":{"position":[[34,5]]},"93":{"position":[[80,5]]},"97":{"position":[[98,5]]},"102":{"position":[[240,5],[336,5]]},"108":{"position":[[131,5]]},"112":{"position":[[454,5],[543,5]]},"117":{"position":[[40,5]]},"119":{"position":[[295,5]]},"121":{"position":[[186,5]]},"132":{"position":[[664,5]]},"138":{"position":[[95,5]]},"151":{"position":[[596,5]]},"165":{"position":[[517,5]]},"172":{"position":[[480,4]]},"180":{"position":[[899,5]]},"183":{"position":[[75,6]]}},"keywords":{}}],["basic",{"_index":173,"title":{"72":{"position":[[0,5]]},"160":{"position":[[4,5]]},"164":{"position":[[0,5]]}},"content":{"8":{"position":[[558,5]]},"9":{"position":[[39,5],[962,5]]},"47":{"position":[[73,5],[630,5]]}},"keywords":{}}],["batteri",{"_index":643,"title":{},"content":{"43":{"position":[[312,7]]},"90":{"position":[[63,7]]}},"keywords":{}}],["becom",{"_index":1381,"title":{},"content":{"164":{"position":[[1356,6]]}},"keywords":{}}],["bedefault",{"_index":1375,"title":{},"content":{"164":{"position":[[1000,10]]}},"keywords":{}}],["befor",{"_index":449,"title":{},"content":{"16":{"position":[[624,6]]},"55":{"position":[[105,6]]},"132":{"position":[[766,7]]},"172":{"position":[[357,6]]},"180":{"position":[[458,6],[522,6]]}},"keywords":{}}],["behavior",{"_index":218,"title":{"113":{"position":[[5,8]]},"157":{"position":[[8,9]]}},"content":{"8":{"position":[[1720,9]]},"9":{"position":[[3027,9]]},"51":{"position":[[182,8],[265,9]]},"111":{"position":[[154,8]]},"165":{"position":[[844,9]]},"166":{"position":[[40,9]]},"180":{"position":[[194,8],[4098,9]]}},"keywords":{}}],["behavioricon",{"_index":915,"title":{},"content":{"81":{"position":[[321,12]]}},"keywords":{}}],["below",{"_index":36,"title":{},"content":{"2":{"position":[[138,5]]},"19":{"position":[[85,5]]},"42":{"position":[[199,5],[511,6],[627,6],[652,5]]},"43":{"position":[[388,6],[751,6]]},"60":{"position":[[102,5]]},"94":{"position":[[61,5]]},"132":{"position":[[1672,5]]},"139":{"position":[[459,7]]},"157":{"position":[[99,5]]},"161":{"position":[[813,5]]},"165":{"position":[[277,5]]},"180":{"position":[[1112,5],[1269,5],[2965,6]]},"183":{"position":[[136,5],[157,5]]}},"keywords":{}}],["below/abov",{"_index":1312,"title":{},"content":{"161":{"position":[[1127,11]]},"164":{"position":[[1199,11]]},"165":{"position":[[100,11]]}},"keywords":{}}],["benefit",{"_index":409,"title":{},"content":{"11":{"position":[[135,9]]}},"keywords":{}}],["best",{"_index":65,"title":{"22":{"position":[[0,4]]},"46":{"position":[[0,4]]},"61":{"position":[[18,4]]},"65":{"position":[[0,4]]},"126":{"position":[[0,4]]},"175":{"position":[[19,4]]}},"content":{"3":{"position":[[1,4],[85,4]]},"8":{"position":[[1997,4]]},"9":{"position":[[1601,4],[2056,4],[4182,4],[4297,4],[4419,4]]},"13":{"position":[[112,4]]},"15":{"position":[[334,4]]},"19":{"position":[[212,4]]},"20":{"position":[[206,4]]},"22":{"position":[[84,4],[175,4]]},"30":{"position":[[165,4]]},"41":{"position":[[255,4],[338,4],[960,4],[1180,4]]},"43":{"position":[[1102,4]]},"44":{"position":[[193,4]]},"69":{"position":[[46,4]]},"73":{"position":[[151,4]]},"77":{"position":[[293,4]]},"88":{"position":[[1,4]]},"102":{"position":[[437,4]]},"106":{"position":[[232,4]]},"126":{"position":[[57,4],[214,4]]},"138":{"position":[[268,4]]},"145":{"position":[[174,4]]},"147":{"position":[[741,4]]},"149":{"position":[[1331,4]]},"156":{"position":[[73,5],[114,4]]},"157":{"position":[[35,4],[392,4],[538,4]]},"158":{"position":[[24,4],[260,4]]},"160":{"position":[[220,5]]},"161":{"position":[[44,4],[631,4]]},"162":{"position":[[242,4]]},"164":{"position":[[76,5],[636,5],[1388,4]]},"165":{"position":[[177,5]]},"170":{"position":[[547,4]]},"173":{"position":[[104,4]]},"180":{"position":[[12,4],[1128,4],[2320,4]]}},"keywords":{}}],["best/peak",{"_index":157,"title":{},"content":{"8":{"position":[[310,9]]},"73":{"position":[[11,9]]},"119":{"position":[[163,9]]}},"keywords":{}}],["best/worst",{"_index":1364,"title":{},"content":{"164":{"position":[[362,10]]}},"keywords":{}}],["best_pric",{"_index":226,"title":{},"content":{"8":{"position":[[2134,10]]}},"keywords":{}}],["best_price_flex",{"_index":1360,"title":{},"content":{"164":{"position":[[122,16]]},"166":{"position":[[799,16],[861,16]]},"175":{"position":[[116,16]]},"177":{"position":[[453,16]]},"178":{"position":[[236,16]]}},"keywords":{}}],["best_price_max_level",{"_index":1385,"title":{},"content":{"165":{"position":[[233,21],[291,21],[1001,21]]},"166":{"position":[[1389,21]]},"178":{"position":[[117,21]]},"182":{"position":[[234,20]]}},"keywords":{}}],["best_price_max_level_gap_count",{"_index":1399,"title":{},"content":{"165":{"position":[[1029,31]]},"178":{"position":[[145,31]]},"182":{"position":[[293,30]]}},"keywords":{}}],["best_price_min_distance_from_avg",{"_index":1377,"title":{},"content":{"164":{"position":[[1027,33]]},"166":{"position":[[1133,33]]},"175":{"position":[[193,33]]},"182":{"position":[[174,32]]}},"keywords":{}}],["best_price_min_period_length",{"_index":1370,"title":{},"content":{"164":{"position":[[696,29]]},"166":{"position":[[493,29],[569,29]]},"175":{"position":[[148,29]]},"177":{"position":[[537,29]]},"182":{"position":[[114,28]]}},"keywords":{}}],["best_price_period",{"_index":991,"title":{},"content":{"103":{"position":[[509,18]]},"140":{"position":[[545,18]]}},"keywords":{}}],["best_price_progress",{"_index":1165,"title":{},"content":{"140":{"position":[[633,20]]}},"keywords":{}}],["best_price_time_until_start",{"_index":1164,"title":{},"content":{"140":{"position":[[604,28]]}},"keywords":{}}],["better",{"_index":1119,"title":{"171":{"position":[[18,6]]}},"content":{"132":{"position":[[287,6],[971,6]]},"150":{"position":[[382,6]]},"164":{"position":[[966,6],[1155,6]]}},"keywords":{}}],["between",{"_index":114,"title":{},"content":{"5":{"position":[[118,7]]},"9":{"position":[[2341,7]]},"16":{"position":[[62,7]]},"19":{"position":[[138,7]]},"41":{"position":[[72,7]]},"180":{"position":[[1658,7],[2022,7]]}},"keywords":{}}],["beyond",{"_index":283,"title":{},"content":{"9":{"position":[[682,6]]}},"keywords":{}}],["binari",{"_index":838,"title":{"114":{"position":[[0,6]]},"125":{"position":[[0,6]]}},"content":{"70":{"position":[[28,6]]},"88":{"position":[[150,6]]},"98":{"position":[[93,6]]},"114":{"position":[[1,6]]},"126":{"position":[[7,6]]},"147":{"position":[[597,6]]},"149":{"position":[[1233,6]]}},"keywords":{}}],["binary_sensor.dishwasher_door",{"_index":595,"title":{},"content":{"41":{"position":[[749,29]]}},"keywords":{}}],["binary_sensor.tibber_home_best_price_period",{"_index":585,"title":{},"content":{"41":{"position":[[452,43]]},"42":{"position":[[305,43]]},"43":{"position":[[230,43]]},"44":{"position":[[271,43]]},"45":{"position":[[174,43],[953,43]]},"69":{"position":[[101,43]]},"73":{"position":[[101,43]]},"77":{"position":[[322,43]]},"79":{"position":[[281,43]]},"80":{"position":[[268,43]]},"105":{"position":[[267,43]]},"106":{"position":[[182,43]]},"114":{"position":[[279,43]]},"145":{"position":[[124,43]]},"146":{"position":[[185,43]]},"147":{"position":[[691,43]]},"149":{"position":[[1281,43]]},"175":{"position":[[458,43]]},"177":{"position":[[10,43]]},"179":{"position":[[37,43]]},"180":{"position":[[2398,43],[2808,43],[3251,43],[3689,44]]}},"keywords":{}}],["binary_sensor.tibber_home_peak_price_period",{"_index":703,"title":{},"content":{"45":{"position":[[1001,44]]},"70":{"position":[[151,43]]},"73":{"position":[[219,43]]},"79":{"position":[[366,43]]},"147":{"position":[[931,43]]}},"keywords":{}}],["blue",{"_index":476,"title":{},"content":{"19":{"position":[[130,7]]},"20":{"position":[[135,7]]},"148":{"position":[[153,4]]},"149":{"position":[[434,4],[1932,4],[2406,4]]}},"keywords":{}}],["bold",{"_index":904,"title":{},"content":{"80":{"position":[[235,4]]},"143":{"position":[[725,4]]}},"keywords":{}}],["bolt",{"_index":1001,"title":{},"content":{"110":{"position":[[104,4]]}},"keywords":{}}],["boost",{"_index":693,"title":{},"content":{"45":{"position":[[552,5]]}},"keywords":{}}],["border",{"_index":1169,"title":{},"content":{"141":{"position":[[86,9]]}},"keywords":{}}],["both",{"_index":636,"title":{},"content":{"43":{"position":[[29,4]]},"45":{"position":[[948,4]]},"112":{"position":[[430,5]]},"126":{"position":[[411,4]]},"164":{"position":[[1229,4]]},"170":{"position":[[389,4]]},"173":{"position":[[99,4],[442,4]]}},"keywords":{}}],["bottom",{"_index":484,"title":{},"content":{"20":{"position":[[91,6]]},"180":{"position":[[1426,6]]}},"keywords":{}}],["bound",{"_index":353,"title":{},"content":{"9":{"position":[[2909,7]]},"131":{"position":[[414,7],[1387,6]]}},"keywords":{}}],["boundari",{"_index":241,"title":{},"content":{"8":{"position":[[2560,10]]},"56":{"position":[[62,10]]},"180":{"position":[[4161,9]]}},"keywords":{}}],["boundariesadapt",{"_index":79,"title":{},"content":{"3":{"position":[[318,15]]}},"keywords":{}}],["boundaryus",{"_index":632,"title":{},"content":{"42":{"position":[[980,12]]}},"keywords":{}}],["boundsbest",{"_index":309,"title":{},"content":{"9":{"position":[[1524,10]]}},"keywords":{}}],["box",{"_index":358,"title":{},"content":{"9":{"position":[[2994,3]]},"157":{"position":[[12,4]]}},"keywords":{}}],["brief",{"_index":1276,"title":{},"content":{"157":{"position":[[909,5]]}},"keywords":{}}],["bright",{"_index":1219,"title":{},"content":{"149":{"position":[[923,6]]}},"keywords":{}}],["budget",{"_index":482,"title":{},"content":{"19":{"position":[[261,6]]}},"keywords":{}}],["buffer",{"_index":1540,"title":{},"content":{"180":{"position":[[701,7]]}},"keywords":{}}],["build",{"_index":290,"title":{},"content":{"9":{"position":[[860,5]]},"47":{"position":[[461,5]]},"141":{"position":[[375,8]]}},"keywords":{}}],["built",{"_index":510,"title":{},"content":{"21":{"position":[[794,5]]},"144":{"position":[[22,5]]}},"keywords":{}}],["button",{"_index":851,"title":{"74":{"position":[[7,6]]},"107":{"position":[[7,6]]},"111":{"position":[[10,6]]},"143":{"position":[[17,6]]}},"content":{},"keywords":{}}],["button.press",{"_index":669,"title":{},"content":{"44":{"position":[[602,12]]}},"keywords":{}}],["button.washing_machine_eco_program",{"_index":670,"title":{},"content":{"44":{"position":[[634,34]]}},"keywords":{}}],["c",{"_index":924,"title":{"89":{"position":[[0,2]]}},"content":{},"keywords":{}}],["cach",{"_index":402,"title":{},"content":{"10":{"position":[[198,6]]},"56":{"position":[[115,6]]},"132":{"position":[[340,6]]}},"keywords":{}}],["calcul",{"_index":83,"title":{"153":{"position":[[7,11]]}},"content":{"3":{"position":[[410,11]]},"20":{"position":[[32,11]]},"22":{"position":[[370,11]]},"30":{"position":[[136,11]]},"61":{"position":[[241,11]]},"100":{"position":[[231,11]]},"119":{"position":[[145,11],[191,10]]},"126":{"position":[[99,11],[169,10]]},"131":{"position":[[436,10]]},"165":{"position":[[832,11]]},"170":{"position":[[561,13]]},"180":{"position":[[819,10]]}},"keywords":{}}],["call",{"_index":422,"title":{},"content":{"11":{"position":[[435,5]]},"131":{"position":[[733,4],[1080,4]]},"132":{"position":[[780,6],[829,4],[1192,4]]}},"keywords":{}}],["captur",{"_index":1300,"title":{},"content":{"161":{"position":[[438,7]]},"178":{"position":[[269,8]]}},"keywords":{}}],["card",{"_index":292,"title":{"29":{"position":[[21,6]]},"47":{"position":[[11,6]]},"72":{"position":[[20,5]]},"73":{"position":[[14,6]]},"74":{"position":[[14,4]]},"75":{"position":[[12,5]]},"105":{"position":[[16,6]]},"106":{"position":[[7,5]]},"107":{"position":[[14,5]]},"108":{"position":[[16,5]]},"110":{"position":[[10,6]]},"111":{"position":[[17,5]]},"143":{"position":[[24,4]]},"144":{"position":[[19,4]]},"145":{"position":[[19,6]]},"146":{"position":[[17,4]]}},"content":{"9":{"position":[[979,4],[1118,4],[1172,4],[3364,4],[3720,4],[3827,5],[4501,4],[4638,4]]},"13":{"position":[[205,4],[285,4],[411,4],[548,4]]},"15":{"position":[[96,4],[440,4]]},"16":{"position":[[132,4],[155,4]]},"17":{"position":[[115,4],[138,4]]},"24":{"position":[[12,5]]},"25":{"position":[[17,5],[204,4]]},"28":{"position":[[12,4],[57,4]]},"29":{"position":[[75,6],[173,4]]},"38":{"position":[[82,5]]},"47":{"position":[[647,4]]},"48":{"position":[[23,4],[101,4]]},"51":{"position":[[947,4]]},"72":{"position":[[8,4]]},"73":{"position":[[71,6]]},"75":{"position":[[21,4],[119,5],[610,4]]},"77":{"position":[[53,6],[86,4]]},"78":{"position":[[69,6],[102,4],[176,6],[344,6]]},"79":{"position":[[81,4]]},"81":{"position":[[67,5]]},"105":{"position":[[61,6]]},"107":{"position":[[21,4]]},"108":{"position":[[30,4]]},"111":{"position":[[21,4]]},"112":{"position":[[158,4]]},"116":{"position":[[201,5],[456,4]]},"131":{"position":[[1343,4]]},"132":{"position":[[403,5],[429,6],[1820,4],[1870,4]]},"139":{"position":[[362,4]]},"141":{"position":[[101,4],[515,5],[813,5]]},"143":{"position":[[19,4],[111,4],[398,4]]},"144":{"position":[[40,4]]},"145":{"position":[[14,5],[111,4],[235,4],[244,4],[400,4],[501,4],[510,4]]},"146":{"position":[[251,4],[400,4],[537,4]]},"147":{"position":[[97,6],[152,6],[181,4],[398,4],[649,6],[678,4],[918,4],[1187,6],[1216,4],[1420,4]]},"149":{"position":[[698,4],[1268,4],[1512,5],[1676,4],[2150,4]]},"151":{"position":[[53,4],[107,4],[581,4]]}},"keywords":{}}],["card"",{"_index":527,"title":{},"content":{"24":{"position":[[106,10]]},"25":{"position":[[119,10]]},"49":{"position":[[49,10],[115,10]]}},"keywords":{}}],["card_mod",{"_index":1187,"title":{"144":{"position":[[29,9]]},"146":{"position":[[27,9]]}},"content":{"144":{"position":[[50,8],[170,9]]},"145":{"position":[[28,8],[213,9],[479,9]]},"146":{"position":[[229,9]]}},"keywords":{}}],["card_mod)check",{"_index":1237,"title":{},"content":{"151":{"position":[[115,14]]}},"keywords":{}}],["care",{"_index":1425,"title":{},"content":{"166":{"position":[[1215,8]]}},"keywords":{}}],["case",{"_index":131,"title":{"41":{"position":[[4,5]]},"42":{"position":[[4,5]]},"43":{"position":[[4,5]]},"44":{"position":[[4,5]]},"45":{"position":[[4,5]]}},"content":{"5":{"position":[[320,5]]},"13":{"position":[[87,6]]},"150":{"position":[[5,4]]},"157":{"position":[[374,6],[685,5],[867,5],[1008,5]]},"165":{"position":[[371,5],[1113,5]]},"166":{"position":[[486,5]]},"167":{"position":[[374,5]]}},"keywords":{}}],["cash",{"_index":1007,"title":{},"content":{"112":{"position":[[302,4],[476,4],[498,4]]}},"keywords":{}}],["cash/money",{"_index":973,"title":{},"content":{"102":{"position":[[132,10]]}},"keywords":{}}],["catch",{"_index":1271,"title":{},"content":{"157":{"position":[[835,7]]}},"keywords":{}}],["caus",{"_index":800,"title":{},"content":{"64":{"position":[[8,7]]},"180":{"position":[[203,6]]}},"keywords":{}}],["caution/expensive)var",{"_index":1205,"title":{},"content":{"148":{"position":[[203,23]]}},"keywords":{}}],["cautionari",{"_index":1029,"title":{},"content":{"115":{"position":[[172,10]]}},"keywords":{}}],["certain",{"_index":275,"title":{},"content":{"9":{"position":[[478,7]]}},"keywords":{}}],["cet",{"_index":739,"title":{},"content":{"55":{"position":[[56,3]]},"180":{"position":[[334,3]]}},"keywords":{}}],["chang",{"_index":363,"title":{"28":{"position":[[0,8]]},"180":{"position":[[30,8]]}},"content":{"9":{"position":[[3137,7]]},"10":{"position":[[289,8]]},"27":{"position":[[92,6],[144,6],[188,6]]},"40":{"position":[[136,8]]},"60":{"position":[[252,7]]},"66":{"position":[[124,7]]},"90":{"position":[[27,6]]},"102":{"position":[[467,6]]},"103":{"position":[[249,8]]},"105":{"position":[[370,7]]},"108":{"position":[[109,7]]},"110":{"position":[[129,6]]},"112":{"position":[[263,7]]},"116":{"position":[[10,9],[59,6]]},"131":{"position":[[543,7]]},"138":{"position":[[87,7]]},"139":{"position":[[155,6]]},"150":{"position":[[496,6]]},"151":{"position":[[11,8]]},"154":{"position":[[176,7]]},"157":{"position":[[318,6]]},"165":{"position":[[774,8]]},"166":{"position":[[651,7]]},"167":{"position":[[252,6]]},"170":{"position":[[286,6]]},"180":{"position":[[48,7],[134,8],[1335,7],[1384,7],[2057,7]]}},"keywords":{}}],["changesdynam",{"_index":1053,"title":{},"content":{"119":{"position":[[316,14]]}},"keywords":{}}],["changesmor",{"_index":412,"title":{},"content":{"11":{"position":[[187,11]]}},"keywords":{}}],["changingif",{"_index":1037,"title":{},"content":{"116":{"position":[[157,10]]}},"keywords":{}}],["charg",{"_index":638,"title":{},"content":{"43":{"position":[[96,8],[884,8],[1167,6],[1262,8]]},"70":{"position":[[79,8]]},"88":{"position":[[139,9]]},"156":{"position":[[167,6]]},"157":{"position":[[714,9]]},"180":{"position":[[3179,8]]}},"keywords":{}}],["chart",{"_index":139,"title":{"11":{"position":[[15,5]]},"12":{"position":[[0,5]]},"14":{"position":[[4,5]]},"28":{"position":[[9,5]]},"131":{"position":[[0,5]]},"132":{"position":[[0,5]]}},"content":{"8":{"position":[[44,5],[486,5],[1890,6]]},"9":{"position":[[875,6],[2880,5],[4274,5]]},"13":{"position":[[42,5]]},"22":{"position":[[61,5]]},"28":{"position":[[133,6]]},"29":{"position":[[194,5]]},"32":{"position":[[289,5]]},"47":{"position":[[467,6]]},"51":{"position":[[15,5]]},"78":{"position":[[113,5]]},"81":{"position":[[258,5]]},"102":{"position":[[324,5]]},"121":{"position":[[357,5],[452,5]]},"131":{"position":[[96,5],[248,5],[341,5],[1418,5]]},"132":{"position":[[347,5],[397,5],[678,5],[1078,5],[1470,5]]}},"keywords":{}}],["chart_data",{"_index":181,"title":{},"content":{"8":{"position":[[739,10],[1707,10]]},"132":{"position":[[2374,10]]}},"keywords":{}}],["chart_metadata",{"_index":307,"title":{},"content":{"9":{"position":[[1483,14],[2449,14],[2712,14],[2846,14]]},"16":{"position":[[390,14]]},"17":{"position":[[427,14]]},"21":{"position":[[67,14],[125,14],[281,14],[655,14]]}},"keywords":{}}],["cheap",{"_index":235,"title":{"69":{"position":[[31,5]]}},"content":{"8":{"position":[[2437,5]]},"9":{"position":[[1349,6],[4115,6]]},"42":{"position":[[79,5],[136,5]]},"43":{"position":[[429,5],[662,5],[1195,5],[1286,5]]},"45":{"position":[[577,5]]},"52":{"position":[[43,6]]},"65":{"position":[[51,5]]},"97":{"position":[[55,6]]},"102":{"position":[[181,5]]},"112":{"position":[[491,6],[576,6]]},"115":{"position":[[32,6]]},"138":{"position":[[184,6]]},"141":{"position":[[907,8]]},"149":{"position":[[950,8]]},"156":{"position":[[67,5]]},"157":{"position":[[670,5]]},"158":{"position":[[42,6],[278,6]]},"165":{"position":[[158,5],[313,5],[359,5],[1023,5]]},"166":{"position":[[1411,5],[1441,5]]},"178":{"position":[[139,5]]},"180":{"position":[[2751,5]]}},"keywords":{}}],["cheap"",{"_index":1402,"title":{},"content":{"165":{"position":[[1187,11]]}},"keywords":{}}],["cheap/expens",{"_index":1006,"title":{},"content":{"112":{"position":[[285,16]]},"161":{"position":[[1101,15]]},"165":{"position":[[64,15]]},"166":{"position":[[1114,17]]},"173":{"position":[[809,15]]}},"keywords":{}}],["cheap/expensive"",{"_index":1387,"title":{},"content":{"165":{"position":[[426,21]]}},"keywords":{}}],["cheaper",{"_index":1166,"title":{},"content":{"140":{"position":[[696,7]]},"175":{"position":[[357,7]]}},"keywords":{}}],["cheapest",{"_index":1259,"title":{},"content":{"157":{"position":[[53,8]]},"175":{"position":[[16,8]]}},"keywords":{}}],["cheapest/peak",{"_index":1072,"title":{},"content":{"121":{"position":[[260,13]]}},"keywords":{}}],["cheapyou'r",{"_index":1455,"title":{},"content":{"171":{"position":[[190,11]]}},"keywords":{}}],["check",{"_index":612,"title":{"43":{"position":[[40,6]]},"103":{"position":[[7,5]]}},"content":{"42":{"position":[[48,5],[533,5]]},"43":{"position":[[23,5],[306,5]]},"45":{"position":[[250,5],[1144,6]]},"64":{"position":[[37,5],[97,5],[131,5]]},"67":{"position":[[1,6],[193,6]]},"103":{"position":[[262,5]]},"123":{"position":[[1,5]]},"136":{"position":[[1,5]]},"161":{"position":[[832,5]]},"167":{"position":[[449,5]]},"177":{"position":[[101,5],[263,5]]},"178":{"position":[[296,5]]},"179":{"position":[[19,6]]},"180":{"position":[[1707,5],[1785,5],[2665,5],[3327,5],[4000,6]]}},"keywords":{}}],["child(1",{"_index":1194,"title":{},"content":{"146":{"position":[[271,8]]}},"keywords":{}}],["child(2",{"_index":1195,"title":{},"content":{"146":{"position":[[420,8]]}},"keywords":{}}],["child(3",{"_index":1197,"title":{},"content":{"146":{"position":[[557,8]]}},"keywords":{}}],["chip",{"_index":890,"title":{},"content":{"79":{"position":[[75,5],[86,6]]}},"keywords":{}}],["choos",{"_index":1479,"title":{"173":{"position":[[0,8]]}},"content":{},"keywords":{}}],["chosen",{"_index":1033,"title":{},"content":{"115":{"position":[[247,6]]}},"keywords":{}}],["circl",{"_index":1199,"title":{},"content":{"147":{"position":[[1032,6]]}},"keywords":{}}],["class",{"_index":956,"title":{},"content":{"98":{"position":[[117,6]]}},"keywords":{}}],["classif",{"_index":329,"title":{"180":{"position":[[15,14]]}},"content":{"9":{"position":[[2007,14],[3603,14]]},"40":{"position":[[68,15]]},"42":{"position":[[32,15],[865,14]]},"43":{"position":[[515,14]]},"93":{"position":[[14,14]]},"97":{"position":[[27,14]]},"98":{"position":[[139,14]]},"121":{"position":[[171,14]]},"154":{"position":[[161,14]]},"180":{"position":[[860,15],[2042,14],[2130,14],[2696,14],[4020,14]]}},"keywords":{}}],["classifi",{"_index":27,"title":{},"content":{"2":{"position":[[26,10]]},"180":{"position":[[888,10]]}},"keywords":{}}],["classification"",{"_index":620,"title":{},"content":{"42":{"position":[[246,20]]}},"keywords":{}}],["classificationon",{"_index":651,"title":{},"content":{"43":{"position":[[1113,16]]}},"keywords":{}}],["clean",{"_index":729,"title":{},"content":{"52":{"position":[[175,5]]},"141":{"position":[[159,5]]}},"keywords":{}}],["clear",{"_index":674,"title":{},"content":{"44":{"position":[[832,5],[1028,5]]},"173":{"position":[[803,5]]}},"keywords":{}}],["clearli",{"_index":1379,"title":{},"content":{"164":{"position":[[1147,7]]}},"keywords":{}}],["climate.heat_pump",{"_index":691,"title":{},"content":{"45":{"position":[[510,17]]}},"keywords":{}}],["climate.set_temperatur",{"_index":690,"title":{},"content":{"45":{"position":[[467,23]]}},"keywords":{}}],["close",{"_index":594,"title":{},"content":{"41":{"position":[[712,6]]},"160":{"position":[[197,5]]},"180":{"position":[[318,6]]}},"keywords":{}}],["code",{"_index":294,"title":{},"content":{"9":{"position":[[1067,6],[1285,5]]},"15":{"position":[[294,5]]},"52":{"position":[[7,5]]},"116":{"position":[[263,5],[374,4]]},"119":{"position":[[382,5]]},"131":{"position":[[950,4]]},"141":{"position":[[165,4]]},"152":{"position":[[87,5]]},"172":{"position":[[443,5]]}},"keywords":{}}],["color",{"_index":293,"title":{"27":{"position":[[12,7]]},"79":{"position":[[5,5]]},"112":{"position":[[23,7]]},"137":{"position":[[13,6]]},"148":{"position":[[4,5]]},"149":{"position":[[13,7]]}},"content":{"9":{"position":[[1061,5],[1279,5],[4695,7]]},"15":{"position":[[288,5]]},"16":{"position":[[574,5]]},"27":{"position":[[10,6],[60,7],[114,5],[158,5],[215,5]]},"52":{"position":[[1,5]]},"72":{"position":[[48,6]]},"75":{"position":[[626,8]]},"79":{"position":[[44,7],[437,6],[457,5]]},"81":{"position":[[334,6],[343,5]]},"112":{"position":[[48,7],[77,6],[131,5],[330,6],[400,8],[537,5]]},"117":{"position":[[14,6],[23,5]]},"119":{"position":[[336,6],[376,5]]},"138":{"position":[[69,5],[173,6],[203,6],[253,6],[299,6],[349,6],[388,6]]},"139":{"position":[[40,6],[68,6],[148,6],[231,5],[438,6]]},"140":{"position":[[659,6]]},"141":{"position":[[78,7],[256,5],[329,6],[547,5],[588,6],[614,8],[659,6],[683,8]]},"143":{"position":[[56,7],[79,5],[246,6],[316,8],[371,5],[533,6],[603,8],[625,6],[697,8]]},"144":{"position":[[78,7],[230,6],[341,6]]},"145":{"position":[[55,7],[69,5],[258,6],[524,6],[629,6]]},"146":{"position":[[39,7],[294,6],[443,6],[580,6]]},"147":{"position":[[67,7],[293,6],[363,8],[512,6],[582,8],[813,6],[883,8],[1055,6],[1125,8],[1315,6],[1385,8],[1525,6],[1595,8]]},"148":{"position":[[102,6],[144,6],[187,6],[234,6],[291,6],[336,6],[445,5]]},"149":{"position":[[35,6],[148,6],[254,6],[302,6],[350,6],[398,6],[507,7],[629,7],[654,6],[833,6],[1179,8],[1222,6],[1403,6],[1633,6],[1781,6],[2074,8],[2105,6],[2264,6],[2494,8]]},"150":{"position":[[52,6],[158,6],[223,6],[295,6],[468,5]]},"151":{"position":[[20,6],[282,6],[306,6],[461,6],[484,7],[514,6]]},"152":{"position":[[81,5]]}},"keywords":{}}],["column",{"_index":882,"title":{},"content":{"78":{"position":[[44,8]]}},"keywords":{}}],["combin",{"_index":545,"title":{"29":{"position":[[0,9]]},"43":{"position":[[10,8]]},"112":{"position":[[0,9]]}},"content":{"146":{"position":[[1,7]]},"147":{"position":[[27,9]]},"161":{"position":[[1628,8]]},"167":{"position":[[83,7]]},"170":{"position":[[174,13],[482,11]]},"172":{"position":[[117,12],[211,12],[242,11],[961,12]]},"173":{"position":[[74,12],[389,12]]}},"keywords":{}}],["combinations)rememb",{"_index":1489,"title":{},"content":{"173":{"position":[[321,22]]}},"keywords":{}}],["combo",{"_index":1445,"title":{},"content":{"170":{"position":[[527,7]]}},"keywords":{}}],["come",{"_index":375,"title":{},"content":{"9":{"position":[[3890,6]]},"34":{"position":[[1,6]]},"35":{"position":[[1,6]]},"36":{"position":[[1,6]]},"39":{"position":[[1,6]]},"46":{"position":[[1,6]]},"83":{"position":[[1,6]]},"84":{"position":[[1,6]]},"85":{"position":[[1,6]]},"127":{"position":[[1,6]]},"128":{"position":[[1,6]]},"129":{"position":[[1,6]]},"134":{"position":[[1,6]]},"135":{"position":[[1,6]]}},"keywords":{}}],["common",{"_index":192,"title":{"134":{"position":[[0,6]]},"167":{"position":[[0,6]]},"174":{"position":[[0,6]]}},"content":{"8":{"position":[[1001,6]]},"64":{"position":[[1,6]]},"103":{"position":[[289,6]]},"119":{"position":[[594,6]]},"140":{"position":[[281,6]]},"177":{"position":[[82,6]]},"178":{"position":[[57,6]]}},"keywords":{}}],["commun",{"_index":285,"title":{},"content":{"9":{"position":[[720,9]]},"47":{"position":[[507,9]]},"122":{"position":[[59,9]]}},"keywords":{}}],["compact",{"_index":871,"title":{"77":{"position":[[0,7]]}},"content":{},"keywords":{}}],["compar",{"_index":55,"title":{},"content":{"2":{"position":[[405,9]]},"102":{"position":[[271,8]]}},"keywords":{}}],["comparison",{"_index":472,"title":{"18":{"position":[[0,11]]}},"content":{},"keywords":{}}],["compat",{"_index":277,"title":{},"content":{"9":{"position":[[511,10]]},"47":{"position":[[379,11]]},"132":{"position":[[163,14]]},"148":{"position":[[72,14]]}},"keywords":{}}],["complet",{"_index":242,"title":{"147":{"position":[[0,8]]}},"content":{"8":{"position":[[2573,8]]},"9":{"position":[[94,8]]},"30":{"position":[[16,8]]},"44":{"position":[[124,8],[854,9]]},"47":{"position":[[134,8]]},"95":{"position":[[110,8]]},"117":{"position":[[74,8]]},"132":{"position":[[1684,8]]},"147":{"position":[[10,8]]},"152":{"position":[[21,8]]},"157":{"position":[[608,8]]},"173":{"position":[[42,12]]}},"keywords":{}}],["complete"",{"_index":676,"title":{},"content":{"44":{"position":[[903,14],[1324,14]]}},"keywords":{}}],["complex",{"_index":1174,"title":{},"content":{"141":{"position":[[384,7],[1123,7]]}},"keywords":{}}],["compon",{"_index":929,"title":{},"content":{"89":{"position":[[161,9]]}},"keywords":{}}],["comprehens",{"_index":282,"title":{},"content":{"9":{"position":[[632,13]]}},"keywords":{}}],["concept",{"_index":1,"title":{"0":{"position":[[5,8]]}},"content":{"100":{"position":[[152,8]]}},"keywords":{}}],["conceptsperiod",{"_index":968,"title":{},"content":{"100":{"position":[[216,14]]}},"keywords":{}}],["condit",{"_index":587,"title":{},"content":{"41":{"position":[[515,10],[583,10],[721,10]]},"42":{"position":[[368,10],[430,10],[559,10]]},"43":{"position":[[293,10],[328,10],[444,10],[458,11],[532,10],[670,10]]},"44":{"position":[[334,10],[387,10],[501,10],[1010,10],[1063,10]]},"45":{"position":[[237,10],[304,10]]},"69":{"position":[[164,10],[177,10]]},"103":{"position":[[222,10]]},"141":{"position":[[392,11]]},"151":{"position":[[555,11]]},"180":{"position":[[1597,10],[2461,10],[2474,10],[2871,10],[2884,10],[3314,10],[3381,10]]}},"keywords":{}}],["config",{"_index":365,"title":{},"content":{"9":{"position":[[3313,6],[3391,6],[3664,6],[3855,6],[4485,6]]},"13":{"position":[[395,6],[532,6]]},"16":{"position":[[139,6]]},"17":{"position":[[122,6]]},"25":{"position":[[1,6]]},"29":{"position":[[200,6]]},"48":{"position":[[85,6]]},"51":{"position":[[931,6]]},"78":{"position":[[146,6]]},"131":{"position":[[1327,6]]}},"keywords":{}}],["config/hom",{"_index":830,"title":{},"content":{"67":{"position":[[134,13]]}},"keywords":{}}],["configur",{"_index":62,"title":{"33":{"position":[[0,13]]},"35":{"position":[[0,13]]},"59":{"position":[[0,13]]},"85":{"position":[[0,14]]},"163":{"position":[[0,13]]}},"content":{"2":{"position":[[476,10]]},"3":{"position":[[348,13],[435,14]]},"9":{"position":[[53,13],[657,13],[758,14],[989,13],[2798,14],[2962,14],[4442,10]]},"11":{"position":[[173,13],[367,13]]},"19":{"position":[[41,11]]},"22":{"position":[[344,13],[467,10]]},"25":{"position":[[39,13]]},"28":{"position":[[17,14]]},"30":{"position":[[155,9]]},"47":{"position":[[87,13],[545,14],[652,13]]},"50":{"position":[[12,13]]},"91":{"position":[[21,13]]},"102":{"position":[[493,13]]},"116":{"position":[[461,13]]},"119":{"position":[[44,9]]},"121":{"position":[[287,12],[363,14],[458,13]]},"126":{"position":[[184,11]]},"131":{"position":[[102,13],[254,13],[1267,13]]},"132":{"position":[[459,12],[516,10],[1004,13],[1256,10],[1275,14],[1294,9],[1394,9],[1753,10]]},"136":{"position":[[78,14]]},"149":{"position":[[169,13]]},"157":{"position":[[959,13]]},"165":{"position":[[724,9]]},"172":{"position":[[71,10],[1023,10]]},"175":{"position":[[58,14],[94,13]]},"181":{"position":[[14,13]]},"182":{"position":[[1,13]]}},"keywords":{}}],["configurationor",{"_index":1243,"title":{},"content":{"151":{"position":[[535,15]]}},"keywords":{}}],["configurations)config",{"_index":296,"title":{},"content":{"9":{"position":[[1141,21]]}},"keywords":{}}],["configurationsdynam",{"_index":914,"title":{},"content":{"81":{"position":[[286,21]]}},"keywords":{}}],["configuredsensor",{"_index":1051,"title":{},"content":{"119":{"position":[[206,17]]}},"keywords":{}}],["conflict",{"_index":1422,"title":{},"content":{"166":{"position":[[959,8]]}},"keywords":{}}],["connect",{"_index":804,"title":{},"content":{"64":{"position":[[84,10]]}},"keywords":{}}],["consecut",{"_index":69,"title":{},"content":{"3":{"position":[[105,11]]}},"keywords":{}}],["consid",{"_index":408,"title":{},"content":{"11":{"position":[[72,8]]},"132":{"position":[[932,8],[2037,8]]},"180":{"position":[[2105,8]]}},"keywords":{}}],["consist",{"_index":1153,"title":{},"content":{"139":{"position":[[184,10]]},"150":{"position":[[41,10]]},"166":{"position":[[760,12]]}},"keywords":{}}],["const",{"_index":1176,"title":{},"content":{"141":{"position":[[541,5],[839,5]]},"149":{"position":[[846,5],[1794,5],[2277,5]]}},"keywords":{}}],["consum",{"_index":1120,"title":{},"content":{"132":{"position":[[385,8],[1825,9]]}},"keywords":{}}],["consumpt",{"_index":46,"title":{},"content":{"2":{"position":[[277,11]]},"3":{"position":[[256,12]]},"95":{"position":[[84,12]]},"156":{"position":[[235,11]]}},"keywords":{}}],["consumption)expens",{"_index":43,"title":{},"content":{"2":{"position":[[224,21]]}},"keywords":{}}],["contain",{"_index":1141,"title":{},"content":{"138":{"position":[[26,8]]}},"keywords":{}}],["content",{"_index":559,"title":{"38":{"position":[[9,9]]},"154":{"position":[[9,9]]}},"content":{},"keywords":{}}],["context",{"_index":86,"title":{},"content":{"4":{"position":[[46,8]]}},"keywords":{}}],["contextpric",{"_index":1069,"title":{},"content":{"121":{"position":[[132,12]]}},"keywords":{}}],["continu",{"_index":655,"title":{},"content":{"43":{"position":[[1252,9]]},"44":{"position":[[1586,10]]},"160":{"position":[[89,10]]},"161":{"position":[[1449,10]]},"172":{"position":[[827,8]]}},"keywords":{}}],["contract",{"_index":825,"title":{},"content":{"66":{"position":[[158,10]]},"67":{"position":[[43,8]]}},"keywords":{}}],["contractapi",{"_index":764,"title":{},"content":{"58":{"position":[[42,11]]}},"keywords":{}}],["contractscomparison",{"_index":113,"title":{},"content":{"5":{"position":[[98,19]]}},"keywords":{}}],["contribut",{"_index":286,"title":{},"content":{"9":{"position":[[730,13]]},"47":{"position":[[517,13]]},"123":{"position":[[137,10]]}},"keywords":{}}],["control",{"_index":161,"title":{},"content":{"8":{"position":[[374,8],[508,8]]},"9":{"position":[[892,7]]},"91":{"position":[[45,11]]},"132":{"position":[[978,7]]}},"keywords":{}}],["convers",{"_index":927,"title":{},"content":{"89":{"position":[[106,10]]}},"keywords":{}}],["convert",{"_index":1172,"title":{},"content":{"141":{"position":[[244,7],[469,10]]}},"keywords":{}}],["coordin",{"_index":928,"title":{},"content":{"89":{"position":[[133,12]]},"131":{"position":[[551,12]]},"132":{"position":[[616,11]]}},"keywords":{}}],["copi",{"_index":393,"title":{},"content":{"9":{"position":[[4846,7]]},"50":{"position":[[290,4]]}},"keywords":{}}],["core",{"_index":0,"title":{"0":{"position":[[0,4]]},"127":{"position":[[0,4]]}},"content":{"24":{"position":[[18,4]]},"100":{"position":[[147,4]]}},"keywords":{}}],["correct",{"_index":827,"title":{},"content":{"67":{"position":[[83,7]]},"180":{"position":[[186,7]]}},"keywords":{}}],["correctlysom",{"_index":1241,"title":{},"content":{"151":{"position":[[377,13]]}},"keywords":{}}],["count",{"_index":950,"title":{},"content":{"97":{"position":[[216,5]]}},"keywords":{}}],["creat",{"_index":467,"title":{},"content":{"17":{"position":[[850,7]]},"44":{"position":[[671,6]]},"116":{"position":[[498,6]]}},"keywords":{}}],["criteria",{"_index":809,"title":{},"content":{"65":{"position":[[36,8]]},"160":{"position":[[131,9]]}},"keywords":{}}],["criteriarelax",{"_index":790,"title":{},"content":{"62":{"position":[[64,18]]}},"keywords":{}}],["critic",{"_index":1491,"title":{},"content":{"173":{"position":[[511,9]]}},"keywords":{}}],["css",{"_index":1142,"title":{"139":{"position":[[4,3]]},"148":{"position":[[0,3]]}},"content":{"138":{"position":[[37,3]]},"139":{"position":[[7,3]]},"141":{"position":[[43,3],[115,3],[269,3]]},"148":{"position":[[48,3]]},"150":{"position":[[176,3]]},"151":{"position":[[267,3],[431,3]]}},"keywords":{}}],["ct",{"_index":503,"title":{},"content":{"21":{"position":[[271,2],[424,2]]},"89":{"position":[[55,3]]},"121":{"position":[[560,4]]},"161":{"position":[[1336,2],[1344,2],[1399,2]]},"162":{"position":[[201,2],[220,2],[239,2],[271,4],[367,4]]},"180":{"position":[[1052,2],[1209,2],[1356,3],[3957,2]]}},"keywords":{}}],["ct/kwh",{"_index":603,"title":{},"content":{"41":{"position":[[1040,7]]},"42":{"position":[[421,6],[946,7]]},"43":{"position":[[963,6]]},"98":{"position":[[50,7]]},"161":{"position":[[124,6],[182,6],[282,6],[341,6],[593,6],[658,6],[702,6]]},"180":{"position":[[1042,6],[1079,6],[1098,6],[1199,6],[1236,6],[1255,6],[3005,6],[3840,8],[3898,8]]}},"keywords":{}}],["ct/kwh)handl",{"_index":653,"title":{},"content":{"43":{"position":[[1210,14]]}},"keywords":{}}],["ct/kwh)stabl",{"_index":1553,"title":{},"content":{"180":{"position":[[1566,13]]}},"keywords":{}}],["ct/kwhnok/sek",{"_index":822,"title":{},"content":{"66":{"position":[[77,13]]}},"keywords":{}}],["ct/kwhon",{"_index":606,"title":{},"content":{"41":{"position":[[1209,8]]}},"keywords":{}}],["ct/kwhuser",{"_index":608,"title":{},"content":{"41":{"position":[[1276,10]]}},"keywords":{}}],["ct/ΓΈre",{"_index":171,"title":{},"content":{"8":{"position":[[542,8],[1330,6]]},"45":{"position":[[904,8]]}},"keywords":{}}],["ct/ΓΈre)day_price_max",{"_index":699,"title":{},"content":{"45":{"position":[[764,22]]}},"keywords":{}}],["ct/ΓΈre)day_price_span",{"_index":701,"title":{},"content":{"45":{"position":[[830,23]]}},"keywords":{}}],["currenc",{"_index":698,"title":{"66":{"position":[[20,9]]}},"content":{"45":{"position":[[755,8],[821,8],[895,8]]},"66":{"position":[[18,8]]},"89":{"position":[[1,8],[23,8]]},"121":{"position":[[503,8]]},"131":{"position":[[941,8]]}},"keywords":{}}],["current",{"_index":56,"title":{},"content":{"2":{"position":[[415,7]]},"4":{"position":[[201,7],[332,7]]},"11":{"position":[[352,7]]},"13":{"position":[[365,7]]},"16":{"position":[[21,7]]},"52":{"position":[[284,7]]},"72":{"position":[[21,7],[78,7],[172,7]]},"78":{"position":[[207,7]]},"98":{"position":[[8,7]]},"99":{"position":[[61,7],[139,7]]},"102":{"position":[[81,7],[257,7]]},"103":{"position":[[28,9]]},"107":{"position":[[88,7]]},"112":{"position":[[225,7]]},"116":{"position":[[345,7]]},"132":{"position":[[2008,9]]},"143":{"position":[[178,7],[465,7]]},"147":{"position":[[106,7]]},"149":{"position":[[765,7]]}},"keywords":{}}],["current_interval_price_level)pric",{"_index":988,"title":{},"content":{"103":{"position":[[357,34]]},"140":{"position":[[346,34]]}},"keywords":{}}],["current_interval_price_rating)volatil",{"_index":989,"title":{},"content":{"103":{"position":[[414,40]]},"140":{"position":[[403,40]]}},"keywords":{}}],["custom",{"_index":278,"title":{"27":{"position":[[0,11]]},"74":{"position":[[0,6]]},"107":{"position":[[0,6]]},"111":{"position":[[3,6]]},"143":{"position":[[10,6]]},"149":{"position":[[6,6]]}},"content":{"9":{"position":[[540,14],[574,9],[801,6],[4685,9]]},"28":{"position":[[107,6]]},"47":{"position":[[351,13],[404,14]]},"116":{"position":[[181,6]]},"119":{"position":[[408,6]]},"120":{"position":[[26,6]]},"132":{"position":[[422,6],[1212,6]]},"139":{"position":[[271,6],[431,6]]},"141":{"position":[[800,6]]},"148":{"position":[[438,6]]},"149":{"position":[[141,6],[283,6],[331,6],[379,6],[427,6],[494,6],[647,6],[1215,6],[1626,6],[2098,6]]},"150":{"position":[[145,6]]},"151":{"position":[[72,6],[391,6]]},"181":{"position":[[179,6]]}},"keywords":{}}],["custom:apexchart",{"_index":368,"title":{},"content":{"9":{"position":[[3346,17]]},"28":{"position":[[39,17]]},"29":{"position":[[155,17]]},"78":{"position":[[84,17]]},"132":{"position":[[1852,17]]}},"keywords":{}}],["custom:auto",{"_index":907,"title":{},"content":{"81":{"position":[[46,11]]}},"keywords":{}}],["custom:button",{"_index":852,"title":{},"content":{"75":{"position":[[7,13]]},"107":{"position":[[7,13]]},"111":{"position":[[7,13]]},"112":{"position":[[144,13]]},"143":{"position":[[5,13],[97,13],[384,13]]},"147":{"position":[[167,13],[384,13],[664,13],[904,13],[1202,13],[1406,13]]},"149":{"position":[[684,13],[1254,13],[1662,13],[2136,13]]},"151":{"position":[[93,13]]}},"keywords":{}}],["custom:config",{"_index":371,"title":{},"content":{"9":{"position":[[3697,13]]}},"keywords":{}}],["custom:mini",{"_index":873,"title":{},"content":{"77":{"position":[[68,11]]}},"keywords":{}}],["custom:mushroom",{"_index":889,"title":{},"content":{"79":{"position":[[59,15]]},"108":{"position":[[7,15]]},"145":{"position":[[88,15],[377,15]]}},"keywords":{}}],["cycl",{"_index":661,"title":{},"content":{"44":{"position":[[39,5],[708,5],[848,5],[897,5],[1318,5]]}},"keywords":{}}],["cycle"",{"_index":664,"title":{},"content":{"44":{"position":[[133,11]]}},"keywords":{}}],["cycleonli",{"_index":680,"title":{},"content":{"44":{"position":[[1475,9]]}},"keywords":{}}],["cycles)decreas",{"_index":1373,"title":{},"content":{"164":{"position":[[851,15]]}},"keywords":{}}],["cyclesstrict",{"_index":1265,"title":{},"content":{"157":{"position":[[623,14]]}},"keywords":{}}],["cycleswon't",{"_index":679,"title":{},"content":{"44":{"position":[[1399,11]]}},"keywords":{}}],["d",{"_index":931,"title":{"90":{"position":[[0,2]]}},"content":{},"keywords":{}}],["d32f2f",{"_index":1231,"title":{},"content":{"149":{"position":[[2446,10]]}},"keywords":{}}],["daili",{"_index":57,"title":{},"content":{"2":{"position":[[434,5]]},"13":{"position":[[179,5]]},"15":{"position":[[21,5]]},"20":{"position":[[49,5]]},"93":{"position":[[89,5]]},"94":{"position":[[67,5]]},"126":{"position":[[298,5],[396,5]]},"157":{"position":[[109,5],[205,5]]},"160":{"position":[[210,5]]},"161":{"position":[[79,5],[110,5],[237,5],[268,5],[563,5],[579,5]]},"162":{"position":[[187,5],[206,5],[225,5]]},"164":{"position":[[181,5],[251,5]]},"173":{"position":[[781,6]]},"175":{"position":[[370,5]]},"180":{"position":[[1061,5],[1218,5],[1791,5]]},"182":{"position":[[104,5]]}},"keywords":{}}],["dark",{"_index":483,"title":{},"content":{"20":{"position":[[77,5]]},"149":{"position":[[2349,4],[2460,4]]}},"keywords":{}}],["dashboard",{"_index":366,"title":{"71":{"position":[[0,9]]},"78":{"position":[[8,10]]},"80":{"position":[[17,10]]},"104":{"position":[[28,10]]},"142":{"position":[[30,10]]},"147":{"position":[[9,9]]}},"content":{"9":{"position":[[3329,10],[3680,10],[4832,10]]},"29":{"position":[[30,9]]},"50":{"position":[[333,10]]},"80":{"position":[[22,10]]},"120":{"position":[[274,11]]}},"keywords":{}}],["dashboardsact",{"_index":1054,"title":{},"content":{"119":{"position":[[388,17]]}},"keywords":{}}],["data",{"_index":138,"title":{"11":{"position":[[21,4]]},"56":{"position":[[38,6]]},"67":{"position":[[9,4]]},"132":{"position":[[6,4]]}},"content":{"8":{"position":[[36,4],[611,5],[1537,4],[1594,5],[1745,4],[1824,4],[2089,5],[2342,5]]},"9":{"position":[[173,4],[271,5],[312,4],[909,4],[1752,4],[1826,5],[2393,4],[2942,4],[3132,4],[3228,5],[3487,5]]},"10":{"position":[[46,4],[147,5],[190,4]]},"15":{"position":[[161,5],[545,5]]},"16":{"position":[[215,5],[423,4],[516,5],[560,4],[730,4]]},"17":{"position":[[198,5]]},"21":{"position":[[366,4]]},"32":{"position":[[316,6]]},"41":{"position":[[913,5]]},"43":{"position":[[861,5]]},"44":{"position":[[1289,5]]},"45":{"position":[[528,5]]},"47":{"position":[[213,4]]},"50":{"position":[[91,5]]},"51":{"position":[[50,4],[113,5],[290,4],[367,4],[562,5],[690,4]]},"55":{"position":[[226,4]]},"56":{"position":[[110,4]]},"67":{"position":[[188,4]]},"87":{"position":[[106,4]]},"89":{"position":[[180,4]]},"131":{"position":[[538,4],[608,4],[697,5]]},"132":{"position":[[368,4],[598,4],[684,4],[793,5],[1084,4],[1139,4],[1241,4],[1476,4],[2131,5],[2246,5]]}},"keywords":{}}],["data/inact",{"_index":1209,"title":{},"content":{"148":{"position":[[360,14]]}},"keywords":{}}],["data_gener",{"_index":1135,"title":{},"content":{"132":{"position":[[1930,15]]}},"keywords":{}}],["dataaft",{"_index":746,"title":{},"content":{"55":{"position":[[165,9]]}},"keywords":{}}],["dataautom",{"_index":128,"title":{},"content":{"5":{"position":[[280,14]]}},"keywords":{}}],["dataautomat",{"_index":1096,"title":{},"content":{"131":{"position":[[494,13]]}},"keywords":{}}],["dataset",{"_index":944,"title":{},"content":{"95":{"position":[[119,7]]}},"keywords":{}}],["day",{"_index":152,"title":{"41":{"position":[[38,5]]},"45":{"position":[[21,3]]},"50":{"position":[[15,3]]},"65":{"position":[[28,4]]}},"content":{"8":{"position":[[207,3],[641,4],[1093,3],[1097,4],[1454,3],[1631,5],[1953,3],[2161,4]]},"9":{"position":[[1856,4],[2122,3],[2152,4],[3258,4],[3524,5],[4578,3]]},"13":{"position":[[471,3],[515,3],[629,3]]},"15":{"position":[[191,4],[472,5],[561,3]]},"16":{"position":[[252,5]]},"17":{"position":[[43,3],[75,3],[228,4]]},"21":{"position":[[750,3]]},"25":{"position":[[155,3]]},"32":{"position":[[51,3]]},"40":{"position":[[50,4]]},"41":{"position":[[4,4],[369,4],[1157,4],[1233,4],[1335,4]]},"43":{"position":[[496,3],[1075,4],[1145,4]]},"45":{"position":[[41,3],[272,3],[682,3],[742,3],[808,3]]},"50":{"position":[[121,4]]},"51":{"position":[[143,4],[513,4],[592,4]]},"61":{"position":[[223,5]]},"62":{"position":[[28,4]]},"65":{"position":[[57,6]]},"93":{"position":[[38,3]]},"94":{"position":[[144,5]]},"96":{"position":[[67,5]]},"132":{"position":[[2276,4]]},"160":{"position":[[6,4]]},"162":{"position":[[24,4]]},"166":{"position":[[370,4],[1299,5],[1478,4]]},"167":{"position":[[239,4]]},"170":{"position":[[88,3],[690,5]]},"171":{"position":[[233,4],[465,3]]},"172":{"position":[[264,4],[630,4]]},"173":{"position":[[91,3],[271,4],[492,3],[526,3],[554,3],[625,3],[683,3],[793,4]]},"175":{"position":[[35,3],[274,3]]},"177":{"position":[[413,3]]},"179":{"position":[[487,3]]},"180":{"position":[[251,3],[300,3],[370,3],[415,3],[479,3],[714,3],[780,5],[791,3],[986,3],[1143,3],[1410,3],[1450,3],[1526,5],[2153,4],[2275,4],[3104,3],[3349,3],[3651,3],[3787,3],[3836,3],[3894,3],[4134,4],[4192,3],[4236,3],[4323,3]]},"182":{"position":[[446,3],[510,3]]}},"keywords":{}}],["day'",{"_index":705,"title":{},"content":{"45":{"position":[[1086,5]]},"164":{"position":[[528,5]]},"180":{"position":[[934,5]]}},"keywords":{}}],["day?"",{"_index":1572,"title":{},"content":{"180":{"position":[[4065,10]]}},"keywords":{}}],["day_price_max",{"_index":1566,"title":{},"content":{"180":{"position":[[3849,14]]}},"keywords":{}}],["day_price_min",{"_index":1564,"title":{},"content":{"180":{"position":[[3791,14]]}},"keywords":{}}],["day_price_span",{"_index":1568,"title":{},"content":{"180":{"position":[[3907,15]]}},"keywords":{}}],["day_volatility_",{"_index":688,"title":{},"content":{"45":{"position":[[406,19],[626,17]]},"180":{"position":[[3483,19],[3734,17]]}},"keywords":{}}],["dayal",{"_index":1528,"title":{},"content":{"180":{"position":[[343,6]]}},"keywords":{}}],["daysabsolut",{"_index":630,"title":{},"content":{"42":{"position":[[919,12]]}},"keywords":{}}],["daysmarket",{"_index":1555,"title":{},"content":{"180":{"position":[[1624,10]]}},"keywords":{}}],["dc143c",{"_index":868,"title":{},"content":{"75":{"position":[[580,7]]}},"keywords":{}}],["debug",{"_index":1138,"title":{"135":{"position":[[0,5]]}},"content":{},"keywords":{}}],["decent",{"_index":1458,"title":{},"content":{"171":{"position":[[385,6]]}},"keywords":{}}],["decim",{"_index":206,"title":{},"content":{"8":{"position":[[1377,7]]}},"keywords":{}}],["decis",{"_index":480,"title":{},"content":{"19":{"position":[[231,8]]}},"keywords":{}}],["decreas",{"_index":351,"title":{},"content":{"9":{"position":[[2646,9]]},"17":{"position":[[372,9]]},"51":{"position":[[783,9]]},"60":{"position":[[224,8]]},"166":{"position":[[604,8],[883,8]]}},"keywords":{}}],["deep",{"_index":969,"title":{},"content":{"100":{"position":[[245,4]]},"181":{"position":[[51,4]]}},"keywords":{}}],["default",{"_index":337,"title":{"157":{"position":[[0,7]]},"175":{"position":[[30,10]]}},"content":{"9":{"position":[[2250,8],[4011,10]]},"21":{"position":[[533,10]]},"51":{"position":[[191,9]]},"60":{"position":[[1,7]]},"61":{"position":[[42,8],[87,8]]},"120":{"position":[[209,8]]},"132":{"position":[[876,7]]},"157":{"position":[[339,8],[433,9],[482,8],[980,8],[1029,8]]},"161":{"position":[[148,9],[307,9],[621,9],[895,8]]},"166":{"position":[[32,7],[198,8],[237,8],[285,8]]},"167":{"position":[[333,8]]},"170":{"position":[[143,9],[229,7],[432,7]]},"172":{"position":[[150,7],[817,9]]},"173":{"position":[[1,7]]},"175":{"position":[[80,8],[138,9],[183,9],[231,9]]},"177":{"position":[[179,9],[489,7],[584,7]]},"182":{"position":[[38,7],[568,10]]}},"keywords":{}}],["default)relax",{"_index":784,"title":{},"content":{"61":{"position":[[156,20]]}},"keywords":{}}],["defaultentry_id",{"_index":195,"title":{},"content":{"8":{"position":[[1043,15]]}},"keywords":{}}],["defer",{"_index":1257,"title":{},"content":{"156":{"position":[[250,5]]}},"keywords":{}}],["defin",{"_index":1211,"title":{},"content":{"149":{"position":[[134,6]]},"161":{"position":[[4,6]]}},"keywords":{}}],["definitionssensor",{"_index":126,"title":{},"content":{"5":{"position":[[241,18]]}},"keywords":{}}],["delay",{"_index":628,"title":{},"content":{"42":{"position":[[738,6]]}},"keywords":{}}],["deliveri",{"_index":1532,"title":{},"content":{"180":{"position":[[529,8]]}},"keywords":{}}],["deliveryearli",{"_index":1531,"title":{},"content":{"180":{"position":[[465,13]]}},"keywords":{}}],["demand",{"_index":415,"title":{},"content":{"11":{"position":[[263,6]]},"180":{"position":[[600,7],[1675,6]]}},"keywords":{}}],["demonstr",{"_index":263,"title":{},"content":{"9":{"position":[[207,12]]}},"keywords":{}}],["depend",{"_index":438,"title":{},"content":{"15":{"position":[[71,13]]},"16":{"position":[[107,13]]},"17":{"position":[[90,13]]},"102":{"position":[[149,9]]},"114":{"position":[[146,9]]},"151":{"position":[[323,10]]}},"keywords":{}}],["dependenciesrol",{"_index":336,"title":{},"content":{"9":{"position":[[2223,19]]}},"keywords":{}}],["dependenciestoday",{"_index":429,"title":{},"content":{"13":{"position":[[121,17]]}},"keywords":{}}],["depth",{"_index":966,"title":{},"content":{"100":{"position":[[166,5]]}},"keywords":{}}],["descript",{"_index":194,"title":{},"content":{"8":{"position":[[1031,11],[2621,13]]},"9":{"position":[[4929,12]]},"13":{"position":[[100,11]]},"41":{"position":[[295,12]]},"42":{"position":[[155,12]]},"43":{"position":[[128,12]]},"44":{"position":[[145,12]]}},"keywords":{}}],["design",{"_index":1042,"title":{},"content":{"116":{"position":[[362,6]]}},"keywords":{}}],["desktop",{"_index":879,"title":{"78":{"position":[[0,7]]}},"content":{"78":{"position":[[23,8]]}},"keywords":{}}],["despit",{"_index":566,"title":{},"content":{"40":{"position":[[105,7]]}},"keywords":{}}],["detail",{"_index":84,"title":{"113":{"position":[[14,8]]}},"content":{"3":{"position":[[426,8]]},"5":{"position":[[227,8]]},"8":{"position":[[2602,8]]},"61":{"position":[[257,8]]},"79":{"position":[[448,8]]},"126":{"position":[[123,8],[460,8]]},"136":{"position":[[44,8]]}},"keywords":{}}],["detect",{"_index":67,"title":{"46":{"position":[[10,10]]},"61":{"position":[[36,11]]}},"content":{"3":{"position":[[61,8]]},"9":{"position":[[1592,8],[4288,8],[4457,8]]},"22":{"position":[[75,8],[320,9]]},"30":{"position":[[183,9]]},"65":{"position":[[205,8]]},"88":{"position":[[34,8]]},"91":{"position":[[75,9]]},"94":{"position":[[91,9]]},"97":{"position":[[179,9]]},"100":{"position":[[267,9]]},"121":{"position":[[225,9],[247,9]]},"126":{"position":[[48,8]]},"161":{"position":[[1232,8]]},"180":{"position":[[1698,7]]}},"keywords":{}}],["detectedcan",{"_index":520,"title":{},"content":{"22":{"position":[[482,11]]}},"keywords":{}}],["detectionapexchart",{"_index":563,"title":{},"content":{"38":{"position":[[62,19]]}},"keywords":{}}],["develop",{"_index":245,"title":{},"content":{"8":{"position":[[2640,9]]},"9":{"position":[[4899,9]]},"11":{"position":[[310,12]]},"103":{"position":[[51,9]]},"116":{"position":[[107,9],[292,9]]},"123":{"position":[[151,12],[172,9]]},"140":{"position":[[114,9]]},"151":{"position":[[196,9]]}},"keywords":{}}],["developer.tibber.com",{"_index":766,"title":{},"content":{"58":{"position":[[65,20]]},"87":{"position":[[60,21]]}},"keywords":{}}],["developer.tibber.com)configur",{"_index":1063,"title":{},"content":{"120":{"position":[[150,30]]}},"keywords":{}}],["developer.tibber.comno",{"_index":802,"title":{},"content":{"64":{"position":[[52,22]]}},"keywords":{}}],["deviat",{"_index":96,"title":{},"content":{"4":{"position":[[215,8]]}},"keywords":{}}],["devic",{"_index":759,"title":{},"content":{"57":{"position":[[63,7]]},"77":{"position":[[22,8]]},"120":{"position":[[91,7]]},"132":{"position":[[1350,7]]}},"keywords":{}}],["diagnost",{"_index":1091,"title":{"130":{"position":[[0,10]]}},"content":{"131":{"position":[[211,10]]},"132":{"position":[[313,10]]}},"keywords":{}}],["differ",{"_index":94,"title":{},"content":{"4":{"position":[[179,10]]},"5":{"position":[[57,9]]},"9":{"position":[[317,10]]},"13":{"position":[[32,9]]},"32":{"position":[[306,9]]},"41":{"position":[[61,10]]},"45":{"position":[[863,10]]},"102":{"position":[[122,9],[314,9],[380,9]]},"112":{"position":[[439,9],[527,9]]},"114":{"position":[[25,9],[45,9],[130,9]]},"116":{"position":[[407,9]]},"141":{"position":[[319,9]]},"150":{"position":[[285,9]]},"151":{"position":[[474,9]]},"157":{"position":[[423,9],[464,9],[518,9]]},"160":{"position":[[300,9]]},"161":{"position":[[544,9]]},"180":{"position":[[2010,11],[3931,10]]}},"keywords":{}}],["differences"",{"_index":581,"title":{},"content":{"41":{"position":[[396,17]]}},"keywords":{}}],["direct",{"_index":1144,"title":{},"content":{"138":{"position":[[62,6]]}},"keywords":{}}],["directli",{"_index":289,"title":{},"content":{"9":{"position":[[848,8]]},"45":{"position":[[66,9]]},"47":{"position":[[449,8]]},"139":{"position":[[345,8]]},"141":{"position":[[56,8],[213,8],[779,8]]},"149":{"position":[[548,9],[1429,9]]},"150":{"position":[[76,8],[131,8],[255,8],[319,8],[433,8]]}},"keywords":{}}],["disabl",{"_index":360,"title":{},"content":{"9":{"position":[[3050,9]]},"21":{"position":[[147,11],[643,7]]},"22":{"position":[[497,8]]},"132":{"position":[[68,8],[864,8]]},"148":{"position":[[327,8]]},"167":{"position":[[166,7]]}},"keywords":{}}],["disabled)opt",{"_index":1384,"title":{},"content":{"165":{"position":[[133,18]]}},"keywords":{}}],["disabledflex",{"_index":791,"title":{},"content":{"62":{"position":[[86,12]]}},"keywords":{}}],["discard",{"_index":1308,"title":{},"content":{"161":{"position":[[942,9]]}},"keywords":{}}],["dishwash",{"_index":579,"title":{"69":{"position":[[13,10]]}},"content":{"41":{"position":[[320,10],[684,10],[1306,10]]},"88":{"position":[[111,12]]},"156":{"position":[[155,11]]},"157":{"position":[[699,11]]},"175":{"position":[[46,10]]}},"keywords":{}}],["display",{"_index":821,"title":{"72":{"position":[[12,7]]}},"content":{"66":{"position":[[65,8],[93,8]]},"89":{"position":[[47,7]]},"103":{"position":[[188,9]]},"165":{"position":[[790,7]]}},"keywords":{}}],["distanc",{"_index":780,"title":{},"content":{"61":{"position":[[59,9]]},"62":{"position":[[113,8]]},"94":{"position":[[5,9]]},"161":{"position":[[489,9],[608,9]]},"164":{"position":[[927,8],[1250,8],[1336,8]]},"166":{"position":[[973,8],[1025,8]]},"167":{"position":[[96,8]]}},"keywords":{}}],["distribut",{"_index":495,"title":{},"content":{"20":{"position":[[232,12]]}},"keywords":{}}],["div.entity:nth",{"_index":1193,"title":{},"content":{"146":{"position":[[256,14],[405,14],[542,14]]}},"keywords":{}}],["dive",{"_index":970,"title":{},"content":{"100":{"position":[[250,4]]},"181":{"position":[[56,5]]}},"keywords":{}}],["document",{"_index":243,"title":{"118":{"position":[[5,13]]},"119":{"position":[[3,14]]}},"content":{"8":{"position":[[2582,14],[2732,13]]},"9":{"position":[[4875,14]]},"30":{"position":[[25,13]]},"123":{"position":[[182,14]]},"132":{"position":[[1658,13]]}},"keywords":{}}],["doesn't",{"_index":1392,"title":{},"content":{"165":{"position":[[810,7]]}},"keywords":{}}],["don't",{"_index":511,"title":{"55":{"position":[[4,5]]}},"content":{"21":{"position":[[820,5]]},"141":{"position":[[462,6]]},"157":{"position":[[304,5],[989,5]]},"167":{"position":[[3,5],[77,5],[160,5],[246,5]]},"170":{"position":[[272,5]]},"173":{"position":[[863,5]]}},"keywords":{}}],["door",{"_index":593,"title":{},"content":{"41":{"position":[[707,4]]}},"keywords":{}}],["down",{"_index":806,"title":{},"content":{"64":{"position":[[124,4]]}},"keywords":{}}],["download",{"_index":528,"title":{},"content":{"24":{"position":[[119,8]]},"25":{"position":[[132,8]]}},"keywords":{}}],["dramat",{"_index":1550,"title":{},"content":{"180":{"position":[[1392,13]]}},"keywords":{}}],["dropdowneach",{"_index":763,"title":{},"content":{"57":{"position":[[187,12]]}},"keywords":{}}],["due",{"_index":266,"title":{},"content":{"9":{"position":[[277,3]]},"47":{"position":[[228,3]]}},"keywords":{}}],["durat",{"_index":1109,"title":{},"content":{"131":{"position":[[1016,8]]},"157":{"position":[[576,8],[777,8]]},"160":{"position":[[328,8]]},"161":{"position":[[838,9]]},"166":{"position":[[677,9]]},"179":{"position":[[270,8]]},"182":{"position":[[165,8]]}},"keywords":{}}],["duration_minut",{"_index":1509,"title":{},"content":{"179":{"position":[[246,17]]}},"keywords":{}}],["dure",{"_index":580,"title":{"44":{"position":[[30,6]]},"69":{"position":[[24,6]]}},"content":{"41":{"position":[[331,6],[953,6]]},"44":{"position":[[186,6],[1450,6],[1547,6]]},"45":{"position":[[570,6]]},"65":{"position":[[192,6]]},"69":{"position":[[39,6]]},"70":{"position":[[88,6]]},"94":{"position":[[127,6]]},"126":{"position":[[242,6],[339,6]]},"138":{"position":[[306,6]]}},"keywords":{}}],["dynam",{"_index":215,"title":{"16":{"position":[[22,10]]},"17":{"position":[[28,10]]},"21":{"position":[[0,7]]},"81":{"position":[[14,7]]},"101":{"position":[[0,7]]},"102":{"position":[[9,7]]},"103":{"position":[[29,7]]},"104":{"position":[[6,7]]},"109":{"position":[[11,7]]},"112":{"position":[[15,7]]},"137":{"position":[[0,7]]}},"content":{"8":{"position":[[1477,7]]},"9":{"position":[[1227,7],[2292,7],[2422,7],[2685,7],[2735,7],[3428,8],[3812,7],[4557,7]]},"13":{"position":[[305,7],[441,7],[663,7]]},"15":{"position":[[46,7]]},"16":{"position":[[363,7]]},"17":{"position":[[400,7]]},"21":{"position":[[608,7]]},"25":{"position":[[31,7]]},"30":{"position":[[107,7]]},"32":{"position":[[103,9],[121,7],[184,9]]},"51":{"position":[[7,7],[955,11]]},"72":{"position":[[40,7]]},"79":{"position":[[36,7]]},"90":{"position":[[1,7],[103,7]]},"103":{"position":[[314,7]]},"105":{"position":[[1,7]]},"109":{"position":[[48,7]]},"111":{"position":[[146,7]]},"112":{"position":[[1,7],[40,7],[64,7],[114,7]]},"116":{"position":[[228,7]]},"117":{"position":[[1,7],[134,7]]},"121":{"position":[[383,7],[444,7]]},"131":{"position":[[88,7],[306,7],[399,7],[1181,7]]},"140":{"position":[[51,7]]},"143":{"position":[[43,7]]},"146":{"position":[[31,7]]},"147":{"position":[[59,7]]}},"keywords":{}}],["e.g",{"_index":13,"title":{},"content":{"1":{"position":[[99,6]]},"10":{"position":[[276,6]]},"41":{"position":[[1162,6],[1238,6]]},"45":{"position":[[686,6]]},"88":{"position":[[190,6]]},"90":{"position":[[56,6]]},"98":{"position":[[34,6]]},"102":{"position":[[411,6]]},"103":{"position":[[116,6],[350,6],[407,6],[463,6],[502,6]]},"112":{"position":[[469,6],[558,6]]},"116":{"position":[[379,6]]},"131":{"position":[[955,6]]},"140":{"position":[[179,6],[339,6],[396,6],[452,6],[496,6],[538,6],[597,6]]},"141":{"position":[[262,6]]},"164":{"position":[[830,6],[902,6]]},"172":{"position":[[712,6]]}},"keywords":{}}],["each",{"_index":10,"title":{},"content":{"1":{"position":[[68,4]]},"5":{"position":[[135,4]]},"9":{"position":[[1319,4]]},"13":{"position":[[55,4]]},"45":{"position":[[1064,4]]},"87":{"position":[[123,4]]},"160":{"position":[[1,4]]},"164":{"position":[[523,4]]},"166":{"position":[[365,4]]},"170":{"position":[[539,4]]},"171":{"position":[[460,4]]},"172":{"position":[[625,4],[847,4]]},"173":{"position":[[344,4],[521,4]]},"175":{"position":[[30,4]]},"180":{"position":[[338,4],[786,4],[3624,4]]},"183":{"position":[[42,4]]}},"keywords":{}}],["earli",{"_index":1269,"title":{},"content":{"157":{"position":[[801,5]]},"180":{"position":[[4230,5]]}},"keywords":{}}],["earlierus",{"_index":1273,"title":{},"content":{"157":{"position":[[856,10]]}},"keywords":{}}],["easi",{"_index":1126,"title":{},"content":{"132":{"position":[[724,4]]}},"keywords":{}}],["easier",{"_index":1414,"title":{},"content":{"166":{"position":[[380,6]]},"167":{"position":[[416,6]]}},"keywords":{}}],["easiest",{"_index":1406,"title":{},"content":{"166":{"position":[[107,10]]}},"keywords":{}}],["econom",{"_index":1560,"title":{},"content":{"180":{"position":[[2076,12]]}},"keywords":{}}],["ecosystem",{"_index":1035,"title":{},"content":{"115":{"position":[[307,10]]}},"keywords":{}}],["edit",{"_index":532,"title":{},"content":{"27":{"position":[[1,4]]}},"keywords":{}}],["effect",{"_index":435,"title":{},"content":{"13":{"position":[[737,6]]},"17":{"position":[[883,6]]},"32":{"position":[[219,6]]}},"keywords":{}}],["electr",{"_index":112,"title":{},"content":{"5":{"position":[[86,11]]},"8":{"position":[[18,11]]},"9":{"position":[[1027,11]]},"47":{"position":[[691,11]]},"58":{"position":[[30,11],[140,11]]},"66":{"position":[[146,11]]},"72":{"position":[[86,11]]},"88":{"position":[[70,11]]},"92":{"position":[[42,11]]},"95":{"position":[[45,11]]},"156":{"position":[[41,11]]},"180":{"position":[[217,11]]}},"keywords":{}}],["element",{"_index":894,"title":{"80":{"position":[[8,8]]}},"content":{"80":{"position":[[48,8],[100,9],[349,11]]}},"keywords":{}}],["empti",{"_index":498,"title":{},"content":{"21":{"position":[[198,5]]}},"keywords":{}}],["enabl",{"_index":298,"title":{"170":{"position":[[7,7]]}},"content":{"9":{"position":[[1219,7],[4548,8]]},"21":{"position":[[303,10],[508,7],[522,7]]},"25":{"position":[[23,7]]},"61":{"position":[[182,7]]},"62":{"position":[[149,6]]},"131":{"position":[[297,8],[1295,6]]},"132":{"position":[[95,8],[903,7]]},"164":{"position":[[476,6],[1452,8]]},"166":{"position":[[1309,6],[1524,6]]},"170":{"position":[[218,7]]},"177":{"position":[[124,7]]},"182":{"position":[[385,6]]}},"keywords":{}}],["enable_min_periods_best",{"_index":1407,"title":{},"content":{"166":{"position":[[158,24]]},"170":{"position":[[1,24]]},"177":{"position":[[132,24]]},"182":{"position":[[345,23]]}},"keywords":{}}],["enabledfallback",{"_index":359,"title":{},"content":{"9":{"position":[[3011,15]]}},"keywords":{}}],["end",{"_index":1085,"title":{},"content":{"123":{"position":[[111,3]]},"179":{"position":[[185,4],[237,3]]}},"keywords":{}}],["endpoint",{"_index":1055,"title":{},"content":{"119":{"position":[[432,10]]}},"keywords":{}}],["energi",{"_index":33,"title":{},"content":{"2":{"position":[[107,6]]},"3":{"position":[[165,6]]}},"keywords":{}}],["enjoy",{"_index":812,"title":{},"content":{"65":{"position":[[80,5]]}},"keywords":{}}],["enough",{"_index":613,"title":{},"content":{"42":{"position":[[85,7]]},"43":{"position":[[435,6]]},"157":{"position":[[267,6]]},"160":{"position":[[352,6]]},"161":{"position":[[870,6]]},"166":{"position":[[141,6]]},"172":{"position":[[1136,6],[1178,6],[1227,6]]}},"keywords":{}}],["enough"",{"_index":616,"title":{},"content":{"42":{"position":[[142,12],[1020,12]]},"180":{"position":[[2757,12]]}},"keywords":{}}],["enrich",{"_index":85,"title":{},"content":{"4":{"position":[[17,8]]},"95":{"position":[[185,8]]}},"keywords":{}}],["ensur",{"_index":591,"title":{},"content":{"41":{"position":[[677,6]]},"97":{"position":[[233,7]]},"157":{"position":[[585,7]]},"160":{"position":[[272,6]]},"161":{"position":[[474,6]]},"165":{"position":[[761,7]]}},"keywords":{}}],["entir",{"_index":19,"title":{},"content":{"1":{"position":[[158,6]]}},"keywords":{}}],["entiti",{"_index":120,"title":{"81":{"position":[[5,8]]},"105":{"position":[[9,6]]},"108":{"position":[[9,6]]},"110":{"position":[[3,6]]},"144":{"position":[[10,8]]}},"content":{"5":{"position":[[185,6]]},"9":{"position":[[408,6],[3725,9]]},"29":{"position":[[90,6],[97,7]]},"57":{"position":[[239,6]]},"72":{"position":[[62,8],[104,9],[116,7],[204,7],[276,7]]},"73":{"position":[[86,6],[93,7],[204,6],[211,7]]},"75":{"position":[[26,7]]},"77":{"position":[[91,9],[103,7],[226,9],[238,7],[314,7]]},"78":{"position":[[191,8],[222,9],[359,8],[386,9]]},"79":{"position":[[101,6],[108,7],[266,6],[273,7],[351,6],[358,7]]},"80":{"position":[[130,7],[260,7]]},"81":{"position":[[58,8],[79,8]]},"103":{"position":[[205,6]]},"105":{"position":[[75,8],[84,9],[96,7],[154,7],[213,7],[259,7]]},"106":{"position":[[14,9],[26,7],[102,7],[174,7]]},"107":{"position":[[26,7]]},"108":{"position":[[23,6],[35,7]]},"110":{"position":[[7,8],[16,9],[28,7]]},"111":{"position":[[26,7]]},"112":{"position":[[163,7]]},"116":{"position":[[282,6]]},"131":{"position":[[1,6]]},"132":{"position":[[1,6],[914,6],[1885,7],[2137,7]]},"143":{"position":[[116,7],[403,7]]},"144":{"position":[[31,8],[93,8],[102,9],[114,7],[199,6]]},"145":{"position":[[104,6],[116,7],[393,6],[405,7]]},"146":{"position":[[61,9],[73,7],[131,7],[177,7]]},"147":{"position":[[186,7],[403,7],[683,7],[923,7],[1221,7],[1425,7]]},"149":{"position":[[703,7],[1273,7],[1681,7],[2155,7]]},"151":{"position":[[139,6]]},"179":{"position":[[29,7]]}},"keywords":{}}],["entity.attributes.data",{"_index":1136,"title":{},"content":{"132":{"position":[[1955,23]]}},"keywords":{}}],["entity.attributes.icon_color",{"_index":1008,"title":{},"content":{"112":{"position":[[350,28]]},"141":{"position":[[555,29]]},"143":{"position":[[266,28],[553,28],[645,28]]},"147":{"position":[[313,28],[532,28],[833,28],[1075,28],[1335,28],[1545,28]]}},"keywords":{}}],["entity.st",{"_index":856,"title":{},"content":{"75":{"position":[[148,13],[239,13],[327,13],[418,13],[507,13]]},"141":{"position":[[853,13]]},"149":{"position":[[860,13],[1461,12],[1545,12],[1813,13],[2292,13]]}},"keywords":{}}],["entity_id",{"_index":584,"title":{},"content":{"41":{"position":[[441,10],[608,10],[738,10],[844,10]]},"42":{"position":[[294,10],[455,10],[584,10],[705,10],[808,10]]},"43":{"position":[[219,10],[353,10],[557,10],[695,10],[803,10]]},"44":{"position":[[260,10],[404,10],[526,10],[623,10],[755,10],[945,10],[1080,10],[1206,10]]},"45":{"position":[[163,10],[499,10]]},"69":{"position":[[90,10],[287,10]]},"70":{"position":[[140,10],[257,10]]},"81":{"position":[[132,10]]},"175":{"position":[[447,10],[563,10]]},"180":{"position":[[2387,10],[2499,10],[2624,10],[2797,10],[2909,10],[3046,10],[3240,10],[3559,10]]}},"keywords":{}}],["entri",{"_index":196,"title":{},"content":{"8":{"position":[[1071,5]]}},"keywords":{}}],["entry_id",{"_index":174,"title":{},"content":{"8":{"position":[[617,9],[1600,9],[2095,9],[2348,9]]},"9":{"position":[[1832,9],[3234,9],[3493,9]]},"10":{"position":[[153,9]]},"15":{"position":[[167,9]]},"16":{"position":[[221,9]]},"17":{"position":[[204,9]]},"50":{"position":[[97,9]]},"51":{"position":[[119,9],[568,9]]},"132":{"position":[[2252,9]]}},"keywords":{}}],["epex",{"_index":1525,"title":{},"content":{"180":{"position":[[290,4]]}},"keywords":{}}],["error",{"_index":811,"title":{},"content":{"65":{"position":[[72,5]]},"67":{"position":[[127,6]]},"131":{"position":[[718,5],[1055,5]]},"132":{"position":[[814,5],[1167,5]]},"138":{"position":[[197,5],[293,5],[382,5]]},"141":{"position":[[677,5]]},"148":{"position":[[228,5]]},"149":{"position":[[296,5]]}},"keywords":{}}],["escal",{"_index":1457,"title":{},"content":{"171":{"position":[[353,9]]}},"keywords":{}}],["especi",{"_index":1255,"title":{},"content":{"156":{"position":[[56,10]]}},"keywords":{}}],["essenti",{"_index":1093,"title":{},"content":{"131":{"position":[[238,9]]},"156":{"position":[[260,9]]}},"keywords":{}}],["etc",{"_index":938,"title":{},"content":{"92":{"position":[[87,6]]},"132":{"position":[[436,6]]}},"keywords":{}}],["eur",{"_index":820,"title":{},"content":{"66":{"position":[[59,3]]},"73":{"position":[[188,3]]},"89":{"position":[[63,4]]},"121":{"position":[[522,4]]}},"keywords":{}}],["eur/nok",{"_index":169,"title":{},"content":{"8":{"position":[[523,9],[1348,7]]}},"keywords":{}}],["ev",{"_index":641,"title":{},"content":{"43":{"position":[[154,2],[881,2]]},"88":{"position":[[136,2]]},"156":{"position":[[179,3]]},"157":{"position":[[711,2]]}},"keywords":{}}],["evalu",{"_index":1573,"title":{},"content":{"180":{"position":[[4120,9]]}},"keywords":{}}],["even",{"_index":1275,"title":{},"content":{"157":{"position":[[904,4]]},"180":{"position":[[96,4]]}},"keywords":{}}],["exact",{"_index":1032,"title":{},"content":{"115":{"position":[[231,5]]}},"keywords":{}}],["exactli",{"_index":1298,"title":{},"content":{"161":{"position":[[400,7]]},"171":{"position":[[474,7]]}},"keywords":{}}],["exampl",{"_index":129,"title":{"12":{"position":[[6,8]]},"37":{"position":[[11,8]]},"50":{"position":[[0,8]]},"51":{"position":[[0,8]]},"71":{"position":[[10,8]]},"74":{"position":[[19,9]]},"147":{"position":[[19,8]]},"158":{"position":[[0,7]]},"162":{"position":[[7,8]]}},"content":{"5":{"position":[[295,8]]},"8":{"position":[[564,8],[1983,8]]},"9":{"position":[[45,7],[1003,7],[1773,8],[3146,8],[3400,8]]},"10":{"position":[[96,8]]},"17":{"position":[[554,8]]},"22":{"position":[[105,8]]},"40":{"position":[[7,8]]},"47":{"position":[[79,7],[666,8]]},"69":{"position":[[333,8]]},"81":{"position":[[264,8]]},"112":{"position":[[94,9],[105,8]]},"114":{"position":[[270,8]]},"116":{"position":[[480,8]]},"117":{"position":[[119,8]]},"119":{"position":[[468,8],[534,8]]},"131":{"position":[[1424,8],[1453,9]]},"132":{"position":[[1791,7]]},"138":{"position":[[128,8]]},"139":{"position":[[450,8]]},"141":{"position":[[418,7]]},"143":{"position":[[65,8],[331,8]]},"147":{"position":[[19,7]]},"149":{"position":[[638,8],[1206,8],[1617,8],[2089,8]]},"152":{"position":[[66,8]]},"172":{"position":[[1080,7]]},"175":{"position":[[396,8]]},"180":{"position":[[974,8]]},"181":{"position":[[79,8]]}},"keywords":{}}],["examples)chart",{"_index":1074,"title":{},"content":{"121":{"position":[[411,14]]}},"keywords":{}}],["examples.md",{"_index":884,"title":{},"content":{"78":{"position":[[119,11]]}},"keywords":{}}],["except",{"_index":103,"title":{},"content":{"4":{"position":[[351,11]]}},"keywords":{}}],["exception",{"_index":30,"title":{},"content":{"2":{"position":[[71,13],[318,13]]}},"keywords":{}}],["exclud",{"_index":909,"title":{},"content":{"81":{"position":[[177,8]]}},"keywords":{}}],["exhaust",{"_index":1501,"title":{},"content":{"177":{"position":[[356,9]]}},"keywords":{}}],["exist",{"_index":1015,"title":{},"content":{"114":{"position":[[182,5]]},"123":{"position":[[39,8]]},"136":{"position":[[7,8]]}},"keywords":{}}],["expect",{"_index":1024,"title":{},"content":{"114":{"position":[[510,8]]},"180":{"position":[[4089,8]]}},"keywords":{}}],["expens",{"_index":304,"title":{},"content":{"9":{"position":[[1364,10],[4130,10]]},"61":{"position":[[213,9]]},"94":{"position":[[134,9]]},"97":{"position":[[70,10]]},"112":{"position":[[515,11],[592,10]]},"115":{"position":[[47,10]]},"140":{"position":[[733,9]]},"141":{"position":[[993,12]]},"149":{"position":[[1056,12]]},"156":{"position":[[89,9]]},"157":{"position":[[145,9],[885,9]]},"158":{"position":[[128,10],[218,10]]},"164":{"position":[[166,9],[236,9]]},"165":{"position":[[192,9]]}},"keywords":{}}],["expensive)best",{"_index":725,"title":{},"content":{"52":{"position":[[73,14]]}},"keywords":{}}],["expensive/high)var",{"_index":1207,"title":{},"content":{"148":{"position":[[259,19]]}},"keywords":{}}],["expensivebinari",{"_index":1146,"title":{},"content":{"138":{"position":[[214,15]]}},"keywords":{}}],["expensivepric",{"_index":975,"title":{},"content":{"102":{"position":[[190,14]]}},"keywords":{}}],["expert",{"_index":1429,"title":{},"content":{"166":{"position":[[1329,9]]}},"keywords":{}}],["explan",{"_index":1086,"title":{},"content":{"126":{"position":[[132,11]]}},"keywords":{}}],["explanationssensor",{"_index":967,"title":{},"content":{"100":{"position":[[172,19]]}},"keywords":{}}],["export",{"_index":405,"title":{"11":{"position":[[26,6]]},"132":{"position":[[11,7]]}},"content":{"132":{"position":[[1481,6]]}},"keywords":{}}],["expos",{"_index":395,"title":{},"content":{"9":{"position":[[4956,7]]},"132":{"position":[[1070,7]]},"180":{"position":[[3643,7]]}},"keywords":{}}],["extend",{"_index":1464,"title":{},"content":{"172":{"position":[[331,6],[883,9]]}},"keywords":{}}],["extrem",{"_index":1487,"title":{},"content":{"173":{"position":[[252,9]]}},"keywords":{}}],["f",{"_index":932,"title":{"91":{"position":[[0,2]]}},"content":{},"keywords":{}}],["f44336",{"_index":1223,"title":{},"content":{"149":{"position":[[1136,10],[2031,10]]}},"keywords":{}}],["factor",{"_index":1382,"title":{},"content":{"164":{"position":[[1376,7]]}},"keywords":{}}],["fail",{"_index":1102,"title":{},"content":{"131":{"position":[[738,7],[1085,6]]},"132":{"position":[[834,7]]}},"keywords":{}}],["faileddata",{"_index":1129,"title":{},"content":{"132":{"position":[[1197,10]]}},"keywords":{}}],["fallback",{"_index":1224,"title":{},"content":{"149":{"position":[[1191,8]]}},"keywords":{}}],["fals",{"_index":204,"title":{},"content":{"8":{"position":[[1356,5]]},"22":{"position":[[533,5]]},"78":{"position":[[63,5]]}},"keywords":{}}],["faq",{"_index":734,"title":{"53":{"position":[[0,3]]}},"content":{},"keywords":{}}],["far",{"_index":1357,"title":{},"content":{"164":{"position":[[25,3]]}},"keywords":{}}],["fast",{"_index":1099,"title":{},"content":{"131":{"position":[[629,4]]}},"keywords":{}}],["favor",{"_index":70,"title":{},"content":{"3":{"position":[[132,9]]},"88":{"position":[[60,9]]}},"keywords":{}}],["featur",{"_index":144,"title":{"52":{"position":[[0,9]]},"121":{"position":[[6,9]]}},"content":{"8":{"position":[[104,9]]},"9":{"position":[[131,9],[452,8],[1258,9],[4712,8]]},"15":{"position":[[275,9]]},"16":{"position":[[350,9]]},"17":{"position":[[330,9]]},"22":{"position":[[299,9]]},"47":{"position":[[171,9],[327,8]]},"131":{"position":[[58,8],[388,9]]},"132":{"position":[[115,8],[448,9]]},"157":{"position":[[503,8]]}},"keywords":{}}],["feedback",{"_index":1446,"title":{},"content":{"170":{"position":[[594,9]]}},"keywords":{}}],["fetch",{"_index":265,"title":{},"content":{"9":{"position":[[259,5]]},"55":{"position":[[214,7]]},"89":{"position":[[185,8]]}},"keywords":{}}],["fetchederror",{"_index":1128,"title":{},"content":{"132":{"position":[[1153,13]]}},"keywords":{}}],["fetchedyaxis_min",{"_index":1103,"title":{},"content":{"131":{"position":[[798,17]]}},"keywords":{}}],["few",{"_index":777,"title":{},"content":{"60":{"position":[[275,3]]},"62":{"position":[[40,3]]},"169":{"position":[[36,3]]}},"keywords":{}}],["fewer",{"_index":1463,"title":{},"content":{"172":{"position":[[269,5],[289,5]]}},"keywords":{}}],["ff4500",{"_index":867,"title":{},"content":{"75":{"position":[[568,7]]}},"keywords":{}}],["ff6b00",{"_index":866,"title":{},"content":{"75":{"position":[[488,7]]}},"keywords":{}}],["ff8c00",{"_index":865,"title":{},"content":{"75":{"position":[[476,7]]}},"keywords":{}}],["ff9800",{"_index":1222,"title":{},"content":{"149":{"position":[[1076,10],[1971,10]]}},"keywords":{}}],["ffb800",{"_index":864,"title":{},"content":{"75":{"position":[[399,7]]}},"keywords":{}}],["ffd700",{"_index":863,"title":{},"content":{"75":{"position":[[387,7]]}},"keywords":{}}],["field",{"_index":163,"title":{},"content":{"8":{"position":[[438,5],[465,6]]},"9":{"position":[[4949,6]]},"132":{"position":[[1530,5]]}},"keywords":{}}],["filter",{"_index":151,"title":{"165":{"position":[[9,8]]}},"content":{"8":{"position":[[197,6],[245,10],[256,6],[1976,6],[2293,10]]},"11":{"position":[[208,9]]},"65":{"position":[[121,7]]},"81":{"position":[[113,7]]},"97":{"position":[[189,7]]},"121":{"position":[[300,7]]},"132":{"position":[[1521,8]]},"157":{"position":[[252,7]]},"161":{"position":[[998,8],[1061,7]]},"164":{"position":[[1259,7],[1345,6]]},"165":{"position":[[7,6],[485,6],[880,8]]},"166":{"position":[[982,7],[1322,6]]},"167":{"position":[[133,6],[197,7]]},"169":{"position":[[19,7],[92,7]]},"170":{"position":[[167,6],[475,6],[520,6]]},"172":{"position":[[110,6],[204,6],[235,6],[954,6],[1009,7],[1060,6],[1122,7],[1213,7]]},"173":{"position":[[382,6],[447,6],[841,7]]},"177":{"position":[[269,7],[380,7]]},"178":{"position":[[91,7]]},"179":{"position":[[426,6],[593,6]]}},"keywords":{}}],["filter)remov",{"_index":1477,"title":{},"content":{"172":{"position":[[1040,13]]}},"keywords":{}}],["find",{"_index":786,"title":{},"content":{"61":{"position":[[197,4]]},"156":{"position":[[17,5]]},"157":{"position":[[47,5],[134,5]]},"160":{"position":[[166,4]]},"164":{"position":[[300,4],[343,4]]},"166":{"position":[[133,7],[337,5],[1272,4]]},"169":{"position":[[27,4]]},"170":{"position":[[60,4]]},"171":{"position":[[134,5],[312,5],[377,5],[436,5]]},"173":{"position":[[561,5],[690,5]]},"175":{"position":[[7,4]]},"177":{"position":[[218,4]]}},"keywords":{}}],["fine",{"_index":1417,"title":{},"content":{"166":{"position":[[718,4]]}},"keywords":{}}],["first",{"_index":818,"title":{"166":{"position":[[34,7]]}},"content":{"65":{"position":[[199,5]]},"132":{"position":[[774,5]]}},"keywords":{}}],["fit",{"_index":504,"title":{},"content":{"21":{"position":[[356,6]]},"157":{"position":[[995,3]]}},"keywords":{}}],["fix",{"_index":18,"title":{"50":{"position":[[9,5]]}},"content":{"1":{"position":[[144,5]]},"9":{"position":[[2146,5]]},"13":{"position":[[623,5]]},"15":{"position":[[555,5]]},"21":{"position":[[744,5]]},"25":{"position":[[149,5]]},"32":{"position":[[45,5]]},"67":{"position":[[57,5]]},"92":{"position":[[36,5]]},"102":{"position":[[21,5]]},"109":{"position":[[22,5]]},"110":{"position":[[111,5]]},"111":{"position":[[125,5]]},"165":{"position":[[594,5]]},"172":{"position":[[416,5]]}},"keywords":{}}],["flag",{"_index":675,"title":{},"content":{"44":{"position":[[838,4],[1034,4]]}},"keywords":{}}],["flat",{"_index":1428,"title":{},"content":{"166":{"position":[[1288,4]]},"171":{"position":[[118,5],[345,7]]},"177":{"position":[[402,4]]}},"keywords":{}}],["flex",{"_index":80,"title":{},"content":{"3":{"position":[[362,6]]},"61":{"position":[[18,5]]},"62":{"position":[[189,4]]},"65":{"position":[[136,5]]},"91":{"position":[[1,4],[96,4]]},"157":{"position":[[562,6],[638,4],[762,6]]},"162":{"position":[[258,4],[353,4]]},"170":{"position":[[123,4],[446,4],[504,4]]},"171":{"position":[[40,4],[102,4],[290,4],[366,4],[425,4]]},"172":{"position":[[188,4],[295,4],[485,4],[547,4],[707,4],[1102,4],[1151,4],[1193,4],[1242,4]]},"173":{"position":[[420,4],[582,4],[638,4],[711,4]]},"179":{"position":[[581,5]]},"182":{"position":[[483,4],[579,5]]}},"keywords":{}}],["flex)high",{"_index":1486,"title":{},"content":{"173":{"position":[[222,11]]}},"keywords":{}}],["flexibl",{"_index":39,"title":{},"content":{"2":{"position":[[169,8]]},"8":{"position":[[115,8]]},"11":{"position":[[199,8]]},"91":{"position":[[6,14]]},"132":{"position":[[271,11],[990,13]]},"157":{"position":[[820,8]]},"161":{"position":[[28,14],[131,12],[289,12],[365,12],[417,11]]},"164":{"position":[[1,12],[398,11],[1234,11],[1302,11],[1415,11]]},"166":{"position":[[728,11]]},"167":{"position":[[18,11]]},"171":{"position":[[486,11]]},"172":{"position":[[46,11],[391,11],[654,11],[979,11]]},"177":{"position":[[432,11]]},"178":{"position":[[224,11]]}},"keywords":{}}],["flip",{"_index":565,"title":{"44":{"position":[[24,5]]}},"content":{"40":{"position":[[88,4]]},"42":{"position":[[884,4]]},"43":{"position":[[1234,5]]},"44":{"position":[[59,5],[1444,5]]},"180":{"position":[[1762,4]]}},"keywords":{}}],["flips"",{"_index":666,"title":{},"content":{"44":{"position":[[221,11]]}},"keywords":{}}],["float(0",{"_index":689,"title":{},"content":{"45":{"position":[[428,8]]},"180":{"position":[[3505,8]]}},"keywords":{}}],["flow",{"_index":473,"title":{},"content":{"19":{"position":[[64,6]]},"132":{"position":[[484,5],[1784,5]]}},"keywords":{}}],["flow)creat",{"_index":420,"title":{},"content":{"11":{"position":[[400,11]]}},"keywords":{}}],["focu",{"_index":433,"title":{},"content":{"13":{"position":[[496,5]]},"17":{"position":[[24,5]]}},"keywords":{}}],["focus",{"_index":470,"title":{},"content":{"17":{"position":[[895,7]]},"157":{"position":[[649,7]]}},"keywords":{}}],["font",{"_index":900,"title":{},"content":{"80":{"position":[[206,4],[222,4]]},"143":{"position":[[712,4]]}},"keywords":{}}],["forc",{"_index":397,"title":{},"content":{"10":{"position":[[10,6]]}},"keywords":{}}],["forecast",{"_index":1534,"title":{},"content":{"180":{"position":[[569,8],[633,9]]}},"keywords":{}}],["format",{"_index":141,"title":{},"content":{"8":{"position":[[59,7],[131,8],[761,7]]},"9":{"position":[[914,6]]},"11":{"position":[[222,10]]},"132":{"position":[[1267,6],[1324,7],[1513,7]]}},"keywords":{}}],["found",{"_index":933,"title":{"177":{"position":[[11,6]]}},"content":{"91":{"position":[[116,6]]},"157":{"position":[[286,5]]},"167":{"position":[[506,5]]},"169":{"position":[[137,6]]},"172":{"position":[[1274,5]]},"179":{"position":[[568,5]]}},"keywords":{}}],["foundperiod",{"_index":1250,"title":{},"content":{"154":{"position":[[110,12]]}},"keywords":{}}],["fragment",{"_index":1317,"title":{},"content":{"161":{"position":[[1284,14]]}},"keywords":{}}],["free",{"_index":767,"title":{},"content":{"58":{"position":[[106,5]]}},"keywords":{}}],["frequent",{"_index":735,"title":{"53":{"position":[[6,10]]}},"content":{},"keywords":{}}],["friendli",{"_index":140,"title":{},"content":{"8":{"position":[[50,8]]},"132":{"position":[[353,8]]}},"keywords":{}}],["frontend",{"_index":524,"title":{},"content":{"24":{"position":[[71,8]]},"25":{"position":[[79,8]]}},"keywords":{}}],["frontendsearch",{"_index":713,"title":{},"content":{"49":{"position":[[13,14]]}},"keywords":{}}],["full",{"_index":291,"title":{},"content":{"9":{"position":[[887,4]]},"17":{"position":[[634,4]]},"51":{"position":[[439,4]]},"78":{"position":[[1,4]]}},"keywords":{}}],["further",{"_index":1465,"title":{},"content":{"172":{"position":[[349,7]]}},"keywords":{}}],["futur",{"_index":1014,"title":{},"content":{"114":{"position":[[167,6],[391,6],[463,6]]},"139":{"position":[[245,6],[289,6]]}},"keywords":{}}],["galleri",{"_index":554,"title":{"32":{"position":[[0,8]]}},"content":{},"keywords":{}}],["gap",{"_index":318,"title":{},"content":{"9":{"position":[[1699,3]]},"165":{"position":[[855,3]]},"178":{"position":[[103,3]]},"182":{"position":[[331,3]]}},"keywords":{}}],["gapstransl",{"_index":730,"title":{},"content":{"52":{"position":[[181,14]]}},"keywords":{}}],["gener",{"_index":256,"title":{"54":{"position":[[0,7]]}},"content":{"9":{"position":[[27,9],[192,9],[588,9],[950,9],[3381,9],[3845,9],[4858,9]]},"13":{"position":[[21,8]]},"15":{"position":[[107,9]]},"16":{"position":[[161,9]]},"17":{"position":[[144,9]]},"21":{"position":[[559,9]]},"27":{"position":[[30,9]]},"29":{"position":[[184,9]]},"47":{"position":[[61,9],[620,9]]},"50":{"position":[[3,8],[299,9]]},"121":{"position":[[347,9]]},"144":{"position":[[191,7]]},"180":{"position":[[622,10]]}},"keywords":{}}],["genuin",{"_index":649,"title":{},"content":{"43":{"position":[[652,9]]},"157":{"position":[[660,9]]}},"keywords":{}}],["get",{"_index":116,"title":{"136":{"position":[[0,7]]}},"content":{"5":{"position":[[145,4]]},"57":{"position":[[205,4]]},"171":{"position":[[469,4]]}},"keywords":{}}],["get_apexcharts_yaml",{"_index":550,"title":{},"content":{"30":{"position":[[42,19]]},"131":{"position":[[177,19]]}},"keywords":{}}],["get_chartdata",{"_index":264,"title":{},"content":{"9":{"position":[[235,13],[827,13]]},"47":{"position":[[427,13]]}},"keywords":{}}],["github",{"_index":1079,"title":{},"content":{"122":{"position":[[1,6]]}},"keywords":{}}],["give",{"_index":1009,"title":{},"content":{"112":{"position":[[420,5]]},"172":{"position":[[364,6]]}},"keywords":{}}],["glanc",{"_index":876,"title":{"106":{"position":[[0,6]]},"146":{"position":[[10,6]]}},"content":{"77":{"position":[[219,6]]},"106":{"position":[[7,6]]},"146":{"position":[[54,6]]}},"keywords":{}}],["glossari",{"_index":124,"title":{"86":{"position":[[0,8]]}},"content":{"5":{"position":[[216,8]]}},"keywords":{}}],["go",{"_index":983,"title":{},"content":{"103":{"position":[[45,2]]},"132":{"position":[[1333,2]]},"140":{"position":[[108,2]]}},"keywords":{}}],["goal",{"_index":1494,"title":{},"content":{"175":{"position":[[1,5]]}},"keywords":{}}],["good",{"_index":38,"title":{"60":{"position":[[9,4]]}},"content":{"2":{"position":[[159,5]]},"100":{"position":[[100,4]]},"114":{"position":[[352,5]]},"157":{"position":[[1053,4]]},"165":{"position":[[958,4]]},"170":{"position":[[193,4]]},"171":{"position":[[444,4]]}},"keywords":{}}],["good/cheap/low)var",{"_index":1202,"title":{},"content":{"148":{"position":[[117,20]]}},"keywords":{}}],["gracefulli",{"_index":654,"title":{},"content":{"43":{"position":[[1240,11]]}},"keywords":{}}],["gradient",{"_index":447,"title":{},"content":{"16":{"position":[[580,9]]}},"keywords":{}}],["gradient(135deg",{"_index":859,"title":{},"content":{"75":{"position":[[191,16],[279,16],[370,16],[459,16],[551,16]]}},"keywords":{}}],["graph",{"_index":350,"title":{},"content":{"9":{"position":[[2635,5]]},"17":{"position":[[361,5]]},"51":{"position":[[738,5]]},"77":{"position":[[80,5]]}},"keywords":{}}],["graph_span",{"_index":540,"title":{},"content":{"28":{"position":[[62,11]]}},"keywords":{}}],["gray",{"_index":1167,"title":{},"content":{"140":{"position":[[774,5]]},"148":{"position":[[300,4],[351,4]]},"149":{"position":[[1037,4],[2411,4]]}},"keywords":{}}],["great",{"_index":32,"title":{},"content":{"2":{"position":[[96,6]]},"112":{"position":[[20,5]]},"171":{"position":[[60,5]]}},"keywords":{}}],["green",{"_index":474,"title":{},"content":{"19":{"position":[[76,8]]},"20":{"position":[[83,7],[114,7]]},"52":{"position":[[34,6],[132,5]]},"79":{"position":[[337,5]]},"112":{"position":[[565,5]]},"140":{"position":[[726,6]]},"148":{"position":[[111,5]]},"149":{"position":[[290,5],[930,5],[986,5],[1874,5],[2354,5]]}},"keywords":{}}],["grid",{"_index":881,"title":{},"content":{"78":{"position":[[39,4]]},"173":{"position":[[64,5]]}},"keywords":{}}],["gt",{"_index":588,"title":{},"content":{"41":{"position":[[551,4]]},"43":{"position":[[876,4],[1080,5]]},"45":{"position":[[340,4],[437,4],[1175,5]]},"180":{"position":[[2581,4],[3417,4],[3514,4]]}},"keywords":{}}],["gt;10",{"_index":1426,"title":{},"content":{"166":{"position":[[1236,9]]},"167":{"position":[[105,9]]}},"keywords":{}}],["gt;25",{"_index":1421,"title":{},"content":{"166":{"position":[[947,7]]}},"keywords":{}}],["gt;30",{"_index":1365,"title":{},"content":{"164":{"position":[[410,9],[1321,10]]},"167":{"position":[[33,7]]}},"keywords":{}}],["guid",{"_index":549,"title":{"163":{"position":[[14,6]]}},"content":{"30":{"position":[[9,6],[148,6]]},"61":{"position":[[273,6]]},"112":{"position":[[84,5]]},"123":{"position":[[96,6]]},"126":{"position":[[111,5]]},"131":{"position":[[1433,5]]},"152":{"position":[[129,5]]}},"keywords":{}}],["guide)tooltip",{"_index":518,"title":{},"content":{"22":{"position":[[382,13]]}},"keywords":{}}],["guidegithub",{"_index":841,"title":{},"content":{"70":{"position":[[327,11]]}},"keywords":{}}],["guidesearch",{"_index":1083,"title":{},"content":{"123":{"position":[[27,11]]}},"keywords":{}}],["guideunderstand",{"_index":1247,"title":{},"content":{"154":{"position":[[38,18]]}},"keywords":{}}],["ha",{"_index":410,"title":{},"content":{"11":{"position":[[149,2]]},"64":{"position":[[103,2]]},"132":{"position":[[1034,2]]},"139":{"position":[[296,2]]},"145":{"position":[[232,2],[498,2]]},"146":{"position":[[248,2],[397,2],[534,2]]}},"keywords":{}}],["hac",{"_index":523,"title":{"83":{"position":[[0,4]]}},"content":{"24":{"position":[[59,4],[64,4]]},"25":{"position":[[67,4],[72,4]]},"48":{"position":[[42,4],[120,4]]},"49":{"position":[[6,4]]},"119":{"position":[[35,4]]},"120":{"position":[[13,4]]},"143":{"position":[[29,4]]}},"keywords":{}}],["handl",{"_index":564,"title":{},"content":{"40":{"position":[[28,6]]},"89":{"position":[[98,7]]},"178":{"position":[[346,6]]},"180":{"position":[[2160,8]]}},"keywords":{}}],["happen",{"_index":750,"title":{},"content":{"55":{"position":[[283,7]]},"62":{"position":[[6,7]]},"180":{"position":[[153,8]]}},"keywords":{}}],["happi",{"_index":1404,"title":{},"content":{"166":{"position":[[17,5]]}},"keywords":{}}],["hard",{"_index":1467,"title":{},"content":{"172":{"position":[[437,5]]}},"keywords":{}}],["hardcod",{"_index":1148,"title":{},"content":{"139":{"position":[[58,9]]},"150":{"position":[[213,9]]}},"keywords":{}}],["have",{"_index":971,"title":{},"content":{"102":{"position":[[12,6]]}},"keywords":{}}],["header",{"_index":541,"title":{},"content":{"28":{"position":[[78,7]]}},"keywords":{}}],["heat",{"_index":625,"title":{},"content":{"42":{"position":[[644,4],[756,4]]},"88":{"position":[[124,4]]},"156":{"position":[[186,4]]},"157":{"position":[[730,7]]},"164":{"position":[[841,4]]}},"keywords":{}}],["heater",{"_index":615,"title":{},"content":{"42":{"position":[[127,6]]}},"keywords":{}}],["heating"",{"_index":685,"title":{},"content":{"45":{"position":[[122,13]]}},"keywords":{}}],["heavi",{"_index":50,"title":{},"content":{"2":{"position":[[351,5]]},"3":{"position":[[172,5]]},"95":{"position":[[78,5]]}},"keywords":{}}],["height",{"_index":539,"title":{"28":{"position":[[15,7]]}},"content":{"28":{"position":[[140,7],[161,6]]}},"keywords":{}}],["help",{"_index":101,"title":{"123":{"position":[[8,6]]},"136":{"position":[[8,5]]}},"content":{"4":{"position":[[308,5]]},"61":{"position":[[190,6]]},"70":{"position":[[304,5]]}},"keywords":{}}],["here",{"_index":1411,"title":{},"content":{"166":{"position":[[306,5]]},"170":{"position":[[302,5]]},"172":{"position":[[1299,4]]}},"keywords":{}}],["here'",{"_index":1198,"title":{},"content":{"147":{"position":[[1,6]]}},"keywords":{}}],["high",{"_index":48,"title":{"41":{"position":[[22,4]]}},"content":{"2":{"position":[[332,4]]},"4":{"position":[[296,5]]},"9":{"position":[[4045,5]]},"15":{"position":[[327,6]]},"41":{"position":[[266,5],[1141,4]]},"43":{"position":[[410,4],[480,4],[1059,4]]},"60":{"position":[[38,4],[153,4]]},"62":{"position":[[17,4]]},"75":{"position":[[436,7]]},"93":{"position":[[64,5]]},"100":{"position":[[54,6],[61,4]]},"138":{"position":[[404,4]]},"149":{"position":[[1956,7],[2431,7]]},"164":{"position":[[393,4],[1297,4]]},"165":{"position":[[652,4]]},"166":{"position":[[1224,4]]},"167":{"position":[[91,4]]},"180":{"position":[[2259,4],[2331,5]]}},"keywords":{}}],["high)dynam",{"_index":306,"title":{},"content":{"9":{"position":[[1415,12]]}},"keywords":{}}],["high/low",{"_index":1556,"title":{},"content":{"180":{"position":[[1666,8]]}},"keywords":{}}],["high/very_expens",{"_index":538,"title":{},"content":{"27":{"position":[[195,19]]}},"keywords":{}}],["higher",{"_index":816,"title":{},"content":{"65":{"position":[[142,6]]},"91":{"position":[[89,6],[142,6]]},"126":{"position":[[373,6]]}},"keywords":{}}],["highest",{"_index":73,"title":{},"content":{"3":{"position":[[222,7]]},"75":{"position":[[525,10]]},"93":{"position":[[70,9]]},"95":{"position":[[37,7]]}},"keywords":{}}],["highlight",{"_index":310,"title":{"22":{"position":[[18,11]]}},"content":{"9":{"position":[[1548,11],[4200,11],[4384,11]]},"15":{"position":[[352,10]]},"52":{"position":[[101,12]]}},"keywords":{}}],["highlight_best_pric",{"_index":330,"title":{},"content":{"9":{"position":[[2022,21],[3618,21],[4218,21]]},"15":{"position":[[227,21]]},"16":{"position":[[302,21]]},"17":{"position":[[282,21]]},"22":{"position":[[6,21],[511,21]]}},"keywords":{}}],["hit",{"_index":1449,"title":{},"content":{"170":{"position":[[648,3]]}},"keywords":{}}],["home",{"_index":106,"title":{"5":{"position":[[6,4]]},"57":{"position":[[26,7]]}},"content":{"5":{"position":[[29,5],[140,4]]},"9":{"position":[[368,4],[1662,4],[4778,4]]},"10":{"position":[[51,7]]},"52":{"position":[[217,4]]},"57":{"position":[[177,4],[200,4]]},"64":{"position":[[187,4]]},"67":{"position":[[21,4]]},"89":{"position":[[146,4]]},"98":{"position":[[124,4]]},"103":{"position":[[79,4]]},"105":{"position":[[46,4]]},"115":{"position":[[292,4]]},"120":{"position":[[63,4]]},"132":{"position":[[1577,4]]},"140":{"position":[[142,4]]},"144":{"position":[[5,4]]},"148":{"position":[[22,4]]},"151":{"position":[[233,4]]}},"keywords":{}}],["home"",{"_index":758,"title":{},"content":{"57":{"position":[[32,10]]}},"keywords":{}}],["home"select",{"_index":762,"title":{},"content":{"57":{"position":[[149,16]]}},"keywords":{}}],["homenavig",{"_index":1131,"title":{},"content":{"132":{"position":[[1419,12]]}},"keywords":{}}],["horizont",{"_index":848,"title":{},"content":{"73":{"position":[[54,10]]},"147":{"position":[[135,10],[632,10],[1170,10]]}},"keywords":{}}],["hour",{"_index":60,"title":{"46":{"position":[[5,4]]}},"content":{"2":{"position":[[459,4]]},"8":{"position":[[1488,4],[1926,4]]},"9":{"position":[[2197,4],[2303,4]]},"10":{"position":[[212,6]]},"15":{"position":[[391,4]]},"16":{"position":[[507,5]]},"17":{"position":[[466,5]]},"38":{"position":[[57,4]]},"42":{"position":[[745,6],[767,5]]},"44":{"position":[[1465,4]]},"51":{"position":[[447,5]]},"56":{"position":[[57,4]]},"96":{"position":[[54,5]]},"99":{"position":[[50,5],[128,5]]},"121":{"position":[[220,4]]},"157":{"position":[[64,5]]},"162":{"position":[[30,5]]},"175":{"position":[[324,4]]},"180":{"position":[[452,5],[516,5],[665,5],[685,5]]}},"keywords":{}}],["hourli",{"_index":7,"title":{},"content":{"1":{"position":[[36,6]]},"8":{"position":[[407,6],[1282,6]]},"67":{"position":[[30,6]]},"96":{"position":[[9,7]]},"121":{"position":[[9,6]]},"160":{"position":[[51,6]]}},"keywords":{}}],["hours_to_show",{"_index":874,"title":{},"content":{"77":{"position":[[174,14]]}},"keywords":{}}],["hourscross",{"_index":77,"title":{},"content":{"3":{"position":[[298,10]]}},"keywords":{}}],["hourslead",{"_index":91,"title":{},"content":{"4":{"position":[[110,12]]}},"keywords":{}}],["hourspric",{"_index":93,"title":{},"content":{"4":{"position":[[168,10]]}},"keywords":{}}],["hover",{"_index":384,"title":{},"content":{"9":{"position":[[4370,8]]}},"keywords":{}}],["how)beauti",{"_index":1073,"title":{},"content":{"121":{"position":[[315,13]]}},"keywords":{}}],["hui",{"_index":1188,"title":{},"content":{"144":{"position":[[187,3]]}},"keywords":{}}],["icon",{"_index":843,"title":{"79":{"position":[[0,4]]},"101":{"position":[[8,5]]},"102":{"position":[[17,7]]},"103":{"position":[[37,6]]},"104":{"position":[[14,5]]},"109":{"position":[[19,6]]},"113":{"position":[[0,4]]},"115":{"position":[[12,6]]},"137":{"position":[[8,4]]}},"content":{"72":{"position":[[186,5]]},"73":{"position":[[169,5],[287,5]]},"79":{"position":[[432,4]]},"81":{"position":[[308,5],[316,4]]},"90":{"position":[[9,6],[16,5],[71,5],[111,6]]},"102":{"position":[[27,5],[59,4],[143,5],[390,5],[461,5]]},"103":{"position":[[14,4],[183,4],[275,4],[322,6]]},"105":{"position":[[9,5],[317,5]]},"107":{"position":[[127,4]]},"108":{"position":[[104,4]]},"109":{"position":[[28,4]]},"110":{"position":[[84,5],[117,5]]},"111":{"position":[[102,5],[131,4]]},"112":{"position":[[9,5],[72,4],[122,4],[258,4],[307,6],[322,5],[395,4],[449,4]]},"114":{"position":[[35,5],[140,5],[264,4],[493,4]]},"115":{"position":[[73,5],[220,5],[237,5]]},"116":{"position":[[1,4],[188,4],[236,4],[258,4],[320,4],[369,4],[417,6],[442,5],[537,4]]},"117":{"position":[[9,4],[34,5],[142,5]]},"119":{"position":[[281,5],[311,4],[331,4]]},"141":{"position":[[65,7]]},"143":{"position":[[51,4],[74,4],[215,5],[238,5],[311,4],[340,4],[502,5],[525,5],[598,4]]},"144":{"position":[[63,4]]},"145":{"position":[[41,4],[64,4],[192,5],[253,4],[348,4],[519,4]]},"147":{"position":[[285,5],[358,4],[504,5],[577,4],[776,5],[805,5],[878,4],[1016,5],[1047,5],[1120,4],[1307,5],[1380,4],[1517,5],[1590,4]]},"148":{"position":[[286,4]]},"149":{"position":[[802,5],[825,5],[1174,4],[1366,5],[1395,5],[1773,5],[2069,4],[2256,5],[2489,4]]},"151":{"position":[[1,5]]}},"keywords":{}}],["icon_color",{"_index":888,"title":{"138":{"position":[[8,12]]},"140":{"position":[[22,12]]},"141":{"position":[[12,10]]},"142":{"position":[[11,10]]}},"content":{"79":{"position":[[11,10],[158,11],[235,13],[325,11],[410,11]]},"119":{"position":[[351,10]]},"138":{"position":[[5,10]]},"139":{"position":[[324,10]]},"140":{"position":[[26,10],[243,10],[306,11]]},"141":{"position":[[5,10],[346,10],[445,11],[480,10],[1084,10]]},"144":{"position":[[302,13],[413,13]]},"145":{"position":[[326,13],[596,13],[701,13]]},"146":{"position":[[366,13],[503,13],[648,13]]},"149":{"position":[[94,10],[445,10],[576,11],[1443,10]]},"150":{"position":[[65,10],[120,10],[308,10],[349,10]]},"151":{"position":[[163,10],[632,10]]}},"keywords":{}}],["iconno",{"_index":1018,"title":{},"content":{"114":{"position":[[224,6]]}},"keywords":{}}],["iconoff",{"_index":1013,"title":{},"content":{"114":{"position":[[106,7]]}},"keywords":{}}],["iconshigher/wors",{"_index":1028,"title":{},"content":{"115":{"position":[[140,17]]}},"keywords":{}}],["iconsnormal/averag",{"_index":1030,"title":{},"content":{"115":{"position":[[183,19]]}},"keywords":{}}],["id",{"_index":121,"title":{},"content":{"5":{"position":[[192,4]]},"8":{"position":[[1077,2]]},"57":{"position":[[246,3]]},"131":{"position":[[8,3]]},"132":{"position":[[8,3]]}},"keywords":{}}],["idea",{"_index":1283,"title":{"160":{"position":[[10,5]]}},"content":{},"keywords":{}}],["ideal",{"_index":921,"title":{},"content":{"88":{"position":[[90,5]]}},"keywords":{}}],["ident",{"_index":442,"title":{},"content":{"15":{"position":[[494,11]]},"32":{"position":[[259,9]]}},"keywords":{}}],["identifi",{"_index":1285,"title":{},"content":{"160":{"position":[[78,10]]}},"keywords":{}}],["idl",{"_index":592,"title":{},"content":{"41":{"position":[[698,4]]},"44":{"position":[[380,4]]}},"keywords":{}}],["if/els",{"_index":1171,"title":{},"content":{"141":{"position":[[178,7],[500,7]]}},"keywords":{}}],["ignor",{"_index":657,"title":{"44":{"position":[[10,6]]}},"content":{"44":{"position":[[205,6]]},"180":{"position":[[2114,8]]}},"keywords":{}}],["imag",{"_index":896,"title":{},"content":{"80":{"position":[[57,6]]}},"keywords":{}}],["immedi",{"_index":398,"title":{},"content":{"10":{"position":[[20,9],[258,9]]}},"keywords":{}}],["impact",{"_index":1437,"title":{},"content":{"167":{"position":[[437,6]]}},"keywords":{}}],["import",{"_index":255,"title":{},"content":{"9":{"position":[[4,10],[4467,9]]},"21":{"position":[[625,10]]},"47":{"position":[[4,10]]},"132":{"position":[[843,9]]},"139":{"position":[[94,9]]},"144":{"position":[[319,11],[430,11]]},"146":{"position":[[383,11],[520,11],[665,11]]},"161":{"position":[[1506,10]]},"172":{"position":[[376,10]]}},"keywords":{}}],["imposs",{"_index":1427,"title":{},"content":{"166":{"position":[[1258,10]]}},"keywords":{}}],["improv",{"_index":287,"title":{},"content":{"9":{"position":[[749,8]]},"47":{"position":[[536,8]]}},"keywords":{}}],["in"",{"_index":469,"title":{},"content":{"17":{"position":[[874,8]]}},"keywords":{}}],["in_head",{"_index":274,"title":{},"content":{"9":{"position":[[467,10]]}},"keywords":{}}],["includ",{"_index":198,"title":{},"content":{"8":{"position":[[1105,8]]},"9":{"position":[[2413,8],[2676,8]]},"62":{"position":[[253,8]]},"81":{"position":[[121,8]]},"95":{"position":[[175,9]]},"126":{"position":[[424,7]]},"180":{"position":[[725,7]]}},"keywords":{}}],["include_level",{"_index":228,"title":{},"content":{"8":{"position":[[2208,14]]}},"keywords":{}}],["include_rating_level",{"_index":230,"title":{},"content":{"8":{"position":[[2228,21]]}},"keywords":{}}],["increas",{"_index":771,"title":{},"content":{"60":{"position":[[171,8]]},"164":{"position":[[280,8],[781,8],[1118,8]]},"166":{"position":[[528,8],[821,8],[1172,8]]},"167":{"position":[[9,8]]},"172":{"position":[[300,10]]},"177":{"position":[[421,10],[475,8]]},"178":{"position":[[215,8]]}},"keywords":{}}],["increment",{"_index":1466,"title":{},"content":{"172":{"position":[[403,9]]}},"keywords":{}}],["independ",{"_index":1490,"title":{},"content":{"173":{"position":[[496,13],[538,14]]}},"keywords":{}}],["indic",{"_index":99,"title":{},"content":{"4":{"position":[[272,9]]},"126":{"position":[[22,8]]},"131":{"position":[[648,10]]},"132":{"position":[[741,10]]}},"keywords":{}}],["info",{"_index":943,"title":{},"content":{"95":{"position":[[104,5]]},"144":{"position":[[333,5]]},"148":{"position":[[139,4]]},"149":{"position":[[393,4]]},"179":{"position":[[411,4]]}},"keywords":{}}],["informational)var",{"_index":1203,"title":{},"content":{"148":{"position":[[158,19]]}},"keywords":{}}],["informationinclud",{"_index":1139,"title":{},"content":{"136":{"position":[[53,18]]}},"keywords":{}}],["initi",{"_index":555,"title":{"34":{"position":[[0,7]]}},"content":{"131":{"position":[[673,17]]},"157":{"position":[[474,7]]}},"keywords":{}}],["inlin",{"_index":249,"title":{},"content":{"8":{"position":[[2725,6]]}},"keywords":{}}],["input_boolean",{"_index":671,"title":{},"content":{"44":{"position":[[678,13],[1363,13]]}},"keywords":{}}],["input_boolean.turn_off",{"_index":678,"title":{},"content":{"44":{"position":[[1175,22]]}},"keywords":{}}],["input_boolean.turn_on",{"_index":672,"title":{},"content":{"44":{"position":[[725,21]]}},"keywords":{}}],["input_boolean.washing_machine_auto_start",{"_index":673,"title":{},"content":{"44":{"position":[[766,42],[1091,42],[1217,42]]}},"keywords":{}}],["insert",{"_index":320,"title":{},"content":{"9":{"position":[[1730,9]]},"52":{"position":[[161,9]]}},"keywords":{}}],["insert_nul",{"_index":238,"title":{},"content":{"8":{"position":[[2514,13]]}},"keywords":{}}],["inspect",{"_index":1238,"title":{},"content":{"151":{"position":[[184,8]]}},"keywords":{}}],["instal",{"_index":522,"title":{"49":{"position":[[0,13]]},"82":{"position":[[0,12]]},"83":{"position":[[5,12]]},"84":{"position":[[7,13]]}},"content":{"24":{"position":[[47,7]]},"25":{"position":[[55,7]]},"48":{"position":[[30,7],[108,7]]},"49":{"position":[[130,7]]},"119":{"position":[[1,12],[23,7]]},"120":{"position":[[1,7]]}},"keywords":{}}],["install(opt",{"_index":714,"title":{},"content":{"49":{"position":[[64,17]]}},"keywords":{}}],["instead",{"_index":159,"title":{"62":{"position":[[37,7]]}},"content":{"8":{"position":[[343,7],[1337,7],[2029,7]]},"9":{"position":[[397,7]]},"11":{"position":[[270,7]]},"42":{"position":[[1,7]]},"102":{"position":[[1,7]]},"109":{"position":[[33,7]]},"132":{"position":[[244,8],[959,7]]},"139":{"position":[[47,7]]},"149":{"position":[[559,7]]},"151":{"position":[[621,7]]},"161":{"position":[[1479,7]]},"166":{"position":[[1005,8]]},"167":{"position":[[67,7]]},"178":{"position":[[29,7]]}},"keywords":{}}],["integr",{"_index":4,"title":{"56":{"position":[[19,11]]},"79":{"position":[[11,12]]}},"content":{"1":{"position":[[5,11]]},"4":{"position":[[5,11]]},"8":{"position":[[1059,11]]},"9":{"position":[[146,11],[707,12],[2827,9]]},"13":{"position":[[5,11]]},"21":{"position":[[48,9]]},"29":{"position":[[40,12]]},"47":{"position":[[186,11]]},"55":{"position":[[188,11]]},"58":{"position":[[91,11]]},"66":{"position":[[1,11]]},"89":{"position":[[86,11]]},"120":{"position":[[48,11]]},"132":{"position":[[186,13]]},"148":{"position":[[5,11]]},"150":{"position":[[395,12]]},"156":{"position":[[5,11]]},"157":{"position":[[21,12],[447,11]]},"160":{"position":[[15,11]]},"180":{"position":[[1822,12]]}},"keywords":{}}],["integration'",{"_index":1122,"title":{},"content":{"132":{"position":[[539,13]]}},"keywords":{}}],["integrationconfigur",{"_index":1048,"title":{},"content":{"119":{"position":[[58,24]]}},"keywords":{}}],["intens",{"_index":34,"title":{},"content":{"2":{"position":[[114,9]]}},"keywords":{}}],["interact",{"_index":895,"title":{},"content":{"80":{"position":[[10,11]]}},"keywords":{}}],["interfer",{"_index":609,"title":{},"content":{"41":{"position":[[1359,12]]}},"keywords":{}}],["intern",{"_index":1391,"title":{},"content":{"165":{"position":[[600,8]]}},"keywords":{}}],["internet",{"_index":803,"title":{},"content":{"64":{"position":[[75,8]]}},"keywords":{}}],["interpret",{"_index":1156,"title":{},"content":{"139":{"position":[[381,9]]},"141":{"position":[[763,9]]},"149":{"position":[[526,9]]},"150":{"position":[[233,9],[413,9]]}},"keywords":{}}],["interv",{"_index":3,"title":{"1":{"position":[[6,10]]}},"content":{"1":{"position":[[43,9],[73,8]]},"3":{"position":[[117,9]]},"4":{"position":[[32,8]]},"8":{"position":[[383,8],[1261,8],[1289,8],[2040,10]]},"62":{"position":[[44,9]]},"65":{"position":[[16,9]]},"92":{"position":[[1,9]]},"95":{"position":[[136,9]]},"96":{"position":[[40,9]]},"99":{"position":[[69,9],[147,9]]},"121":{"position":[[38,9]]},"126":{"position":[[469,10]]},"131":{"position":[[1007,8]]},"160":{"position":[[64,9]]},"161":{"position":[[1614,9]]},"165":{"position":[[80,9],[347,8],[928,9],[1086,9],[1162,8]]},"178":{"position":[[196,9]]},"179":{"position":[[372,9],[783,9]]},"180":{"position":[[419,9],[483,9]]},"183":{"position":[[57,9]]}},"keywords":{}}],["intervalsrel",{"_index":1545,"title":{},"content":{"180":{"position":[[842,17]]}},"keywords":{}}],["intervalsresolut",{"_index":160,"title":{},"content":{"8":{"position":[[354,19]]}},"keywords":{}}],["intervalsynchron",{"_index":20,"title":{},"content":{"1":{"position":[[165,20]]}},"keywords":{}}],["intuit",{"_index":1034,"title":{},"content":{"115":{"position":[[260,9]]}},"keywords":{}}],["invalid",{"_index":801,"title":{},"content":{"64":{"position":[[27,7]]}},"keywords":{}}],["isn't",{"_index":951,"title":{},"content":{"97":{"position":[[222,5]]},"165":{"position":[[1171,5]]}},"keywords":{}}],["isol",{"_index":1315,"title":{},"content":{"161":{"position":[[1192,8],[1353,8]]},"178":{"position":[[414,8]]}},"keywords":{}}],["issu",{"_index":842,"title":{"134":{"position":[[7,7]]}},"content":{"70":{"position":[[339,6]]},"119":{"position":[[601,6]]},"123":{"position":[[65,5]]},"136":{"position":[[33,5]]}},"keywords":{}}],["issuesopen",{"_index":1084,"title":{},"content":{"123":{"position":[[48,10]]},"136":{"position":[[16,10]]}},"keywords":{}}],["it'",{"_index":507,"title":{},"content":{"21":{"position":[[516,5]]}},"keywords":{}}],["itdefault",{"_index":1368,"title":{},"content":{"164":{"position":[[614,10]]}},"keywords":{}}],["jump",{"_index":1533,"title":{},"content":{"180":{"position":[[550,4]]}},"keywords":{}}],["keep",{"_index":785,"title":{},"content":{"61":{"position":[[177,4]]},"172":{"position":[[878,4]]},"173":{"position":[[176,4]]}},"keywords":{}}],["kept",{"_index":1310,"title":{},"content":{"161":{"position":[[971,4]]}},"keywords":{}}],["key",{"_index":143,"title":{"121":{"position":[[2,3]]}},"content":{"8":{"position":[[100,3]]},"9":{"position":[[1254,3]]},"15":{"position":[[271,3]]},"16":{"position":[[346,3]]},"17":{"position":[[326,3]]},"61":{"position":[[1,3]]},"87":{"position":[[33,3]]},"131":{"position":[[384,3]]},"132":{"position":[[444,3]]},"179":{"position":[[1,3]]}},"keywords":{}}],["know",{"_index":704,"title":{},"content":{"45":{"position":[[1076,5]]}},"keywords":{}}],["l",{"_index":939,"title":{"93":{"position":[[0,2]]}},"content":{},"keywords":{}}],["label",{"_index":248,"title":{},"content":{"8":{"position":[[2674,6]]},"9":{"position":[[1630,7],[4359,5],[4734,6]]},"52":{"position":[[196,6]]},"80":{"position":[[124,5]]}},"keywords":{}}],["labelonli",{"_index":519,"title":{},"content":{"22":{"position":[[432,9]]}},"keywords":{}}],["languag",{"_index":316,"title":{},"content":{"9":{"position":[[1677,8],[4793,8]]}},"keywords":{}}],["languageinteract",{"_index":731,"title":{},"content":{"52":{"position":[[232,19]]}},"keywords":{}}],["larg",{"_index":964,"title":{},"content":{"100":{"position":[[79,5]]}},"keywords":{}}],["last",{"_index":90,"title":{},"content":{"4":{"position":[[102,4]]},"131":{"position":[[793,4]]},"132":{"position":[[1148,4]]},"183":{"position":[[266,4]]}},"keywords":{}}],["late",{"_index":1541,"title":{},"content":{"180":{"position":[[709,4],[4187,4]]}},"keywords":{}}],["layout",{"_index":870,"title":{"76":{"position":[[9,8]]}},"content":{"78":{"position":[[12,6]]}},"keywords":{}}],["lead",{"_index":962,"title":{},"content":{"99":{"position":[[80,7]]}},"keywords":{}}],["learn",{"_index":552,"title":{},"content":{"30":{"position":[[95,5]]},"121":{"position":[[308,6]]}},"keywords":{}}],["left",{"_index":898,"title":{},"content":{"80":{"position":[[196,5],[328,5]]}},"keywords":{}}],["legaci",{"_index":1115,"title":{},"content":{"132":{"position":[[108,6]]}},"keywords":{}}],["length",{"_index":1367,"title":{},"content":{"164":{"position":[[565,7]]},"166":{"position":[[425,6]]},"177":{"position":[[518,6]]}},"keywords":{}}],["less",{"_index":1295,"title":{},"content":{"161":{"position":[[223,4]]},"164":{"position":[[231,4]]}},"keywords":{}}],["let",{"_index":1299,"title":{},"content":{"161":{"position":[[429,4]]}},"keywords":{}}],["level",{"_index":28,"title":{"18":{"position":[[12,5]]},"19":{"position":[[7,5]]},"20":{"position":[[0,5]]},"75":{"position":[[6,5]]},"183":{"position":[[6,6]]}},"content":{"2":{"position":[[49,7]]},"3":{"position":[[390,7]]},"8":{"position":[[272,5]]},"9":{"position":[[1083,6],[1330,5],[2001,5],[3587,5],[3597,5],[3977,5]]},"15":{"position":[[306,6]]},"43":{"position":[[320,5]]},"50":{"position":[[235,5]]},"61":{"position":[[106,7]]},"62":{"position":[[246,6]]},"75":{"position":[[88,5]]},"90":{"position":[[91,7]]},"93":{"position":[[1,6]]},"102":{"position":[[103,5]]},"103":{"position":[[336,5]]},"106":{"position":[[94,5]]},"107":{"position":[[102,5]]},"108":{"position":[[151,5]]},"138":{"position":[[144,5]]},"140":{"position":[[325,5]]},"141":{"position":[[845,5],[870,6],[897,5],[952,6],[983,5]]},"143":{"position":[[192,5],[479,5]]},"145":{"position":[[473,5]]},"147":{"position":[[254,5]]},"149":{"position":[[671,5],[779,5],[852,5],[877,6],[939,6],[995,6],[1045,6],[1100,6]]},"152":{"position":[[165,6]]},"161":{"position":[[1054,6]]},"165":{"position":[[1,5],[479,5],[523,6],[874,5]]},"166":{"position":[[1316,5]]},"167":{"position":[[127,5]]},"170":{"position":[[128,6],[451,6],[509,6]]},"172":{"position":[[58,6],[134,6],[193,6],[666,6],[991,7],[1034,5],[1054,5]]},"173":{"position":[[425,5]]},"178":{"position":[[85,5],[446,6]]},"179":{"position":[[587,5]]},"182":{"position":[[488,6]]},"183":{"position":[[31,6],[68,6]]}},"keywords":{}}],["level=ani",{"_index":1478,"title":{},"content":{"172":{"position":[[1067,11],[1162,9],[1253,9]]},"173":{"position":[[476,10],[649,9]]}},"keywords":{}}],["level_filt",{"_index":232,"title":{},"content":{"8":{"position":[[2372,13]]}},"keywords":{}}],["level_typ",{"_index":325,"title":{},"content":{"9":{"position":[[1947,11],[3269,11],[3575,11]]},"15":{"position":[[202,11]]},"16":{"position":[[277,11]]},"17":{"position":[[257,11]]},"50":{"position":[[181,11]]},"51":{"position":[[201,11],[621,11]]}},"keywords":{}}],["levels/r",{"_index":723,"title":{},"content":{"52":{"position":[[19,14]]}},"keywords":{}}],["librari",{"_index":521,"title":{},"content":{"24":{"position":[[37,7]]}},"keywords":{}}],["librarycurr",{"_index":167,"title":{},"content":{"8":{"position":[[492,15]]}},"keywords":{}}],["light",{"_index":486,"title":{},"content":{"20":{"position":[[107,6]]},"148":{"position":[[345,5]]},"149":{"position":[[980,5]]}},"keywords":{}}],["light/dark",{"_index":1152,"title":{},"content":{"139":{"position":[[167,10]]},"148":{"position":[[418,10]]},"150":{"position":[[90,10]]}},"keywords":{}}],["limit",{"_index":710,"title":{},"content":{"47":{"position":[[245,11]]},"164":{"position":[[1367,8]]}},"keywords":{}}],["line",{"_index":1004,"title":{},"content":{"111":{"position":[[118,4]]}},"keywords":{}}],["linear",{"_index":858,"title":{},"content":{"75":{"position":[[183,7],[271,7],[362,7],[451,7],[543,7]]}},"keywords":{}}],["link",{"_index":1078,"title":{"122":{"position":[[10,6]]}},"content":{},"keywords":{}}],["list",{"_index":906,"title":{"81":{"position":[[22,6]]}},"content":{"81":{"position":[[15,4]]},"117":{"position":[[83,4]]},"132":{"position":[[1693,4]]},"152":{"position":[[30,4]]}},"keywords":{}}],["load",{"_index":51,"title":{},"content":{"2":{"position":[[357,6]]},"51":{"position":[[695,7]]},"56":{"position":[[150,5]]},"64":{"position":[[170,6]]},"156":{"position":[[270,5]]}},"keywords":{}}],["loads)norm",{"_index":40,"title":{},"content":{"2":{"position":[[178,12]]}},"keywords":{}}],["local",{"_index":634,"title":{},"content":{"42":{"position":[[1048,5]]}},"keywords":{}}],["local/electricity_dashboard_bg.png",{"_index":897,"title":{},"content":{"80":{"position":[[64,35]]}},"keywords":{}}],["locationsdiffer",{"_index":111,"title":{},"content":{"5":{"position":[[67,18]]}},"keywords":{}}],["log",{"_index":829,"title":{"135":{"position":[[6,8]]}},"content":{"67":{"position":[[114,4]]},"136":{"position":[[72,5]]}},"keywords":{}}],["logic",{"_index":1045,"title":{},"content":{"116":{"position":[[542,5]]},"141":{"position":[[186,5],[404,5],[807,5],[1131,6]]},"151":{"position":[[567,5]]},"166":{"position":[[707,6]]}},"keywords":{}}],["logic"",{"_index":642,"title":{},"content":{"43":{"position":[[180,11]]}},"keywords":{}}],["long",{"_index":957,"title":{},"content":{"98":{"position":[[158,4]]},"160":{"position":[[347,4]]},"161":{"position":[[865,4]]},"164":{"position":[[584,4]]},"178":{"position":[[44,4]]}},"keywords":{}}],["longal",{"_index":1496,"title":{},"content":{"175":{"position":[[329,7]]}},"keywords":{}}],["longer",{"_index":1264,"title":{},"content":{"157":{"position":[[569,6]]},"164":{"position":[[815,6]]},"166":{"position":[[549,6]]}},"keywords":{}}],["look",{"_index":1039,"title":{},"content":{"116":{"position":[[270,4]]},"151":{"position":[[289,4]]},"177":{"position":[[277,4]]}},"keywords":{}}],["lookback",{"_index":347,"title":{},"content":{"9":{"position":[[2593,8]]},"17":{"position":[[472,8]]},"51":{"position":[[854,8]]}},"keywords":{}}],["loosen",{"_index":949,"title":{},"content":{"97":{"position":[[159,9]]},"157":{"position":[[244,7]]},"169":{"position":[[84,7]]},"179":{"position":[[433,9]]}},"keywords":{}}],["lose",{"_index":1185,"title":{},"content":{"141":{"position":[[1142,4]]}},"keywords":{}}],["lot",{"_index":497,"title":{},"content":{"21":{"position":[[190,4]]}},"keywords":{}}],["lovelac",{"_index":392,"title":{"76":{"position":[[0,8]]}},"content":{"9":{"position":[[4823,8]]},"50":{"position":[[324,8]]}},"keywords":{}}],["low",{"_index":31,"title":{},"content":{"2":{"position":[[85,3]]},"4":{"position":[[282,5]]},"8":{"position":[[2497,3]]},"9":{"position":[[1401,5],[4031,5]]},"15":{"position":[[313,5]]},"19":{"position":[[72,3]]},"40":{"position":[[35,3]]},"41":{"position":[[14,3],[1218,3],[1320,3]]},"42":{"position":[[904,3]]},"43":{"position":[[624,3],[1130,3]]},"65":{"position":[[90,3]]},"75":{"position":[[257,6]]},"93":{"position":[[51,4]]},"100":{"position":[[40,5]]},"138":{"position":[[360,3]]},"149":{"position":[[1846,6],[2321,6]]},"165":{"position":[[620,4]]},"179":{"position":[[387,3]]},"180":{"position":[[992,4],[1149,4],[1511,3],[1879,3],[1946,3],[1952,3]]}},"keywords":{}}],["low/normal/high",{"_index":1070,"title":{},"content":{"121":{"position":[[155,15]]}},"keywords":{}}],["low/very_cheap",{"_index":535,"title":{},"content":{"27":{"position":[[99,14]]}},"keywords":{}}],["lower",{"_index":815,"title":{},"content":{"65":{"position":[[129,6]]},"126":{"position":[[276,5]]},"170":{"position":[[575,5]]}},"keywords":{}}],["lower/bett",{"_index":1026,"title":{},"content":{"115":{"position":[[104,12]]}},"keywords":{}}],["lowest",{"_index":857,"title":{},"content":{"75":{"position":[[166,9]]},"93":{"position":[[42,8]]}},"keywords":{}}],["lowmin",{"_index":792,"title":{},"content":{"62":{"position":[[106,6]]}},"keywords":{}}],["lt",{"_index":570,"title":{},"content":{"41":{"position":[[34,5]]},"42":{"position":[[413,4]]},"43":{"position":[[1150,5],[1201,5]]},"165":{"position":[[625,4],[642,4]]},"180":{"position":[[1558,5],[1967,5],[2997,4]]}},"keywords":{}}],["m",{"_index":940,"title":{"94":{"position":[[0,2]]}},"content":{},"keywords":{}}],["machin",{"_index":663,"title":{},"content":{"44":{"position":[[114,7],[178,7],[369,7],[887,7]]}},"keywords":{}}],["maintain",{"_index":1116,"title":{},"content":{"132":{"position":[[139,10]]}},"keywords":{}}],["major",{"_index":168,"title":{},"content":{"8":{"position":[[517,5],[1401,7]]}},"keywords":{}}],["make",{"_index":481,"title":{},"content":{"19":{"position":[[240,6]]},"151":{"position":[[28,4]]},"166":{"position":[[1250,4]]},"180":{"position":[[2194,4]]}},"keywords":{}}],["manag",{"_index":930,"title":{},"content":{"89":{"position":[[171,8]]}},"keywords":{}}],["mani",{"_index":273,"title":{},"content":{"9":{"position":[[427,4]]},"47":{"position":[[302,4]]},"140":{"position":[[1,4]]},"166":{"position":[[1473,4]]},"178":{"position":[[10,4]]}},"keywords":{}}],["manual",{"_index":224,"title":{"84":{"position":[[0,6]]},"171":{"position":[[30,6]]}},"content":{"8":{"position":[[1946,6]]},"9":{"position":[[533,6],[2955,6]]},"41":{"position":[[1291,8]]},"47":{"position":[[344,6]]},"55":{"position":[[251,6]]},"131":{"position":[[1260,6]]},"132":{"position":[[86,8],[894,8]]},"166":{"position":[[392,6]]},"167":{"position":[[41,8]]},"171":{"position":[[14,6]]}},"keywords":{}}],["map",{"_index":892,"title":{},"content":{"79":{"position":[[463,8]]}},"keywords":{}}],["mark",{"_index":1305,"title":{},"content":{"161":{"position":[[740,7]]}},"keywords":{}}],["marker",{"_index":733,"title":{},"content":{"52":{"position":[[269,6]]}},"keywords":{}}],["market",{"_index":770,"title":{},"content":{"60":{"position":[[141,6]]},"180":{"position":[[261,7],[270,6],[4171,6]]}},"keywords":{}}],["match",{"_index":166,"title":{},"content":{"8":{"position":[[475,5]]},"115":{"position":[[84,5]]},"170":{"position":[[317,8]]}},"keywords":{}}],["materi",{"_index":1041,"title":{},"content":{"116":{"position":[[353,8]]}},"keywords":{}}],["mathemat",{"_index":1523,"title":{},"content":{"180":{"position":[[171,14]]}},"keywords":{}}],["matrix",{"_index":1461,"title":{"172":{"position":[[23,8]]}},"content":{"172":{"position":[[19,6],[612,7]]}},"keywords":{}}],["max",{"_index":702,"title":{},"content":{"45":{"position":[[874,4]]},"160":{"position":[[236,3]]},"161":{"position":[[274,4]]},"162":{"position":[[212,4]]},"164":{"position":[[257,3]]},"180":{"position":[[3942,4]]}},"keywords":{}}],["maximum",{"_index":700,"title":{},"content":{"45":{"position":[[787,7]]},"131":{"position":[[889,7]]},"161":{"position":[[243,7]]},"172":{"position":[[931,7]]},"173":{"position":[[309,7]]},"180":{"position":[[3873,7]]}},"keywords":{}}],["mdi:alert",{"_index":850,"title":{},"content":{"73":{"position":[[293,9]]},"147":{"position":[[1022,9]]}},"keywords":{}}],["mdi:cash",{"_index":1043,"title":{},"content":{"116":{"position":[[386,8]]},"143":{"position":[[221,8],[508,8]]},"149":{"position":[[808,8]]}},"keywords":{}}],["mdi:chart",{"_index":1003,"title":{},"content":{"111":{"position":[[108,9]]}},"keywords":{}}],["mdi:curr",{"_index":849,"title":{},"content":{"73":{"position":[[175,12]]}},"keywords":{}}],["mdi:flash",{"_index":844,"title":{},"content":{"72":{"position":[[192,9]]}},"keywords":{}}],["mdi:lightn",{"_index":1000,"title":{},"content":{"110":{"position":[[90,13]]}},"keywords":{}}],["mdi:piggi",{"_index":1191,"title":{},"content":{"145":{"position":[[198,9]]},"147":{"position":[[782,9]]},"149":{"position":[[1372,9]]}},"keywords":{}}],["mean",{"_index":808,"title":{},"content":{"65":{"position":[[6,5]]},"115":{"position":[[94,8]]},"172":{"position":[[179,5],[284,4],[472,6]]},"180":{"position":[[1978,6]]}},"keywords":{}}],["meaning",{"_index":574,"title":{},"content":{"41":{"position":[[202,11],[379,10],[560,11]]},"44":{"position":[[488,10]]},"45":{"position":[[280,10],[1164,10]]},"115":{"position":[[274,10]]},"180":{"position":[[1770,11],[3357,10],[4035,10]]}},"keywords":{}}],["meaningfulli",{"_index":1290,"title":{},"content":{"160":{"position":[[287,12]]},"161":{"position":[[531,12]]}},"keywords":{}}],["measur",{"_index":958,"title":{},"content":{"98":{"position":[[179,13]]},"100":{"position":[[13,7]]}},"keywords":{}}],["mediocr",{"_index":1293,"title":{},"content":{"160":{"position":[[432,8]]},"161":{"position":[[748,8]]}},"keywords":{}}],["medium",{"_index":100,"title":{},"content":{"4":{"position":[[288,7]]},"100":{"position":[[46,7]]},"165":{"position":[[635,6]]}},"keywords":{}}],["meet",{"_index":789,"title":{},"content":{"62":{"position":[[54,4]]},"65":{"position":[[26,4]]},"160":{"position":[[117,4]]}},"keywords":{}}],["menu",{"_index":1123,"title":{},"content":{"132":{"position":[[561,4]]}},"keywords":{}}],["messag",{"_index":601,"title":{},"content":{"41":{"position":[[919,8]]},"43":{"position":[[867,8]]},"44":{"position":[[1295,8]]},"131":{"position":[[1061,7]]},"132":{"position":[[1173,7]]}},"keywords":{}}],["met",{"_index":952,"title":{},"content":{"97":{"position":[[228,4]]}},"keywords":{}}],["metadata",{"_index":512,"title":{"131":{"position":[[6,9]]}},"content":{"21":{"position":[[838,8]]},"30":{"position":[[78,8]]},"87":{"position":[[160,10]]},"121":{"position":[[426,8]]},"131":{"position":[[116,8],[585,8],[780,8]]},"132":{"position":[[1094,8]]}},"keywords":{}}],["meter",{"_index":23,"title":{},"content":{"1":{"position":[[206,5]]}},"keywords":{}}],["method",{"_index":911,"title":{"143":{"position":[[0,6]]},"144":{"position":[[0,6]]},"145":{"position":[[0,6]]},"146":{"position":[[0,6]]}},"content":{"81":{"position":[[213,7]]}},"keywords":{}}],["mid",{"_index":660,"title":{},"content":{"44":{"position":[[35,3]]}},"keywords":{}}],["middle/top",{"_index":1551,"title":{},"content":{"180":{"position":[[1466,10]]}},"keywords":{}}],["midnight",{"_index":78,"title":{"180":{"position":[[0,8]]}},"content":{"3":{"position":[[309,8]]},"9":{"position":[[2625,9]]},"17":{"position":[[504,9],[695,8],[737,8],[779,8],[820,8]]},"40":{"position":[[96,8]]},"42":{"position":[[892,8],[971,8]]},"43":{"position":[[1225,8]]},"44":{"position":[[68,9],[212,8]]},"51":{"position":[[886,8]]},"56":{"position":[[128,8]]},"180":{"position":[[558,9],[4139,8]]}},"keywords":{}}],["midnightupd",{"_index":722,"title":{},"content":{"51":{"position":[[804,15]]}},"keywords":{}}],["migrat",{"_index":404,"title":{"11":{"position":[[0,9]]}},"content":{"11":{"position":[[81,9],[324,9]]},"132":{"position":[[1981,9],[2046,9]]}},"keywords":{}}],["mild",{"_index":1482,"title":{},"content":{"173":{"position":[[156,4]]}},"keywords":{}}],["min",{"_index":202,"title":{},"content":{"8":{"position":[[1274,4]]},"45":{"position":[[881,4]]},"94":{"position":[[1,3]]},"157":{"position":[[553,4],[753,4]]},"160":{"position":[[216,3]]},"161":{"position":[[116,4]]},"162":{"position":[[193,4]]},"164":{"position":[[187,3],[798,4],[874,4]]},"175":{"position":[[292,3]]},"180":{"position":[[3949,4]]},"182":{"position":[[110,3],[146,3]]}},"keywords":{}}],["min/max",{"_index":354,"title":{},"content":{"9":{"position":[[2924,7]]},"20":{"position":[[55,9]]},"93":{"position":[[95,7]]},"161":{"position":[[408,8]]},"164":{"position":[[34,7]]}},"keywords":{}}],["min/max/avg",{"_index":1326,"title":{},"content":{"161":{"position":[[1555,12]]},"180":{"position":[[807,11]]}},"keywords":{}}],["min_dist",{"_index":81,"title":{},"content":{"3":{"position":[[369,13]]},"62":{"position":[[210,12]]}},"keywords":{}}],["min_distance)or",{"_index":817,"title":{},"content":{"65":{"position":[[149,15]]}},"keywords":{}}],["min_periods_best",{"_index":1409,"title":{},"content":{"166":{"position":[[207,17]]},"170":{"position":[[31,17]]},"177":{"position":[[189,17]]},"182":{"position":[[403,16]]}},"keywords":{}}],["minim",{"_index":567,"title":{},"content":{"40":{"position":[[113,7]]},"41":{"position":[[135,8]]},"173":{"position":[[197,7]]}},"keywords":{}}],["minimum",{"_index":697,"title":{},"content":{"45":{"position":[[721,7]]},"131":{"position":[[826,7]]},"161":{"position":[[85,7],[600,7],[915,7]]},"164":{"position":[[550,7]]},"169":{"position":[[108,7]]},"170":{"position":[[656,7]]},"180":{"position":[[3815,7]]},"182":{"position":[[157,7]]}},"keywords":{}}],["minor",{"_index":170,"title":{},"content":{"8":{"position":[[536,5],[1414,7]]},"45":{"position":[[749,5],[815,5],[889,5]]},"89":{"position":[[17,5]]},"121":{"position":[[548,5]]}},"keywords":{}}],["minor_curr",{"_index":203,"title":{},"content":{"8":{"position":[[1298,14]]}},"keywords":{}}],["minut",{"_index":9,"title":{},"content":{"1":{"position":[[57,9]]},"8":{"position":[[396,7]]},"9":{"position":[[2665,8]]},"17":{"position":[[391,8]]},"51":{"position":[[829,8]]},"89":{"position":[[233,8]]},"92":{"position":[[14,6]]},"96":{"position":[[20,6]]},"121":{"position":[[31,6]]},"131":{"position":[[1028,7]]},"157":{"position":[[158,7]]},"161":{"position":[[907,7],[926,6],[955,6]]},"164":{"position":[[628,7],[653,7],[687,7]]},"177":{"position":[[595,7]]},"179":{"position":[[282,7]]},"183":{"position":[[50,6]]}},"keywords":{}}],["minutes)attribut",{"_index":1125,"title":{},"content":{"132":{"position":[[646,17]]}},"keywords":{}}],["minutes)cach",{"_index":754,"title":{},"content":{"56":{"position":[[89,14]]}},"keywords":{}}],["minutes)check",{"_index":1036,"title":{},"content":{"116":{"position":[[90,13]]}},"keywords":{}}],["minutesno",{"_index":748,"title":{},"content":{"55":{"position":[[241,9]]}},"keywords":{}}],["minutessensor",{"_index":751,"title":{},"content":{"56":{"position":[[23,13]]}},"keywords":{}}],["miss",{"_index":321,"title":{},"content":{"9":{"position":[[1744,7]]}},"keywords":{}}],["mistak",{"_index":1432,"title":{"167":{"position":[[7,8]]}},"content":{},"keywords":{}}],["mix",{"_index":1460,"title":{},"content":{"171":{"position":[[411,8]]}},"keywords":{}}],["mobil",{"_index":872,"title":{"77":{"position":[[8,6]]}},"content":{"77":{"position":[[15,6]]}},"keywords":{}}],["mod",{"_index":1192,"title":{},"content":{"145":{"position":[[249,3],[515,3]]}},"keywords":{}}],["mode",{"_index":213,"title":{"14":{"position":[[10,6]]},"24":{"position":[[17,6]]},"25":{"position":[[28,5]]}},"content":{"8":{"position":[[1438,5]]},"9":{"position":[[1211,5],[1459,5],[2774,7],[3912,6],[4542,5]]},"13":{"position":[[48,6],[95,4]]},"21":{"position":[[16,5],[730,6]]},"48":{"position":[[77,6]]},"49":{"position":[[165,4]]},"51":{"position":[[917,5]]},"131":{"position":[[376,6],[599,4],[1250,6]]},"139":{"position":[[178,5]]},"148":{"position":[[429,4]]},"150":{"position":[[101,4]]}},"keywords":{}}],["moder",{"_index":1226,"title":{},"content":{"149":{"position":[[1899,11]]},"164":{"position":[[1406,8]]},"166":{"position":[[740,11]]}},"keywords":{}}],["momentl",{"_index":1529,"title":{},"content":{"180":{"position":[[404,10]]}},"keywords":{}}],["monday",{"_index":1451,"title":{},"content":{"171":{"position":[[69,6],[266,6]]}},"keywords":{}}],["money)when",{"_index":1020,"title":{},"content":{"114":{"position":[[371,10]]}},"keywords":{}}],["monitor",{"_index":453,"title":{},"content":{"17":{"position":[[542,11]]}},"keywords":{}}],["month",{"_index":778,"title":{},"content":{"60":{"position":[[279,6]]}},"keywords":{}}],["more",{"_index":773,"title":{},"content":{"60":{"position":[[199,4]]},"62":{"position":[[234,4]]},"69":{"position":[[346,4]]},"80":{"position":[[344,4]]},"91":{"position":[[103,4]]},"115":{"position":[[126,4],[167,4]]},"126":{"position":[[503,5]]},"132":{"position":[[266,4]]},"141":{"position":[[732,4]]},"161":{"position":[[65,4]]},"164":{"position":[[161,4]]},"166":{"position":[[843,4]]},"172":{"position":[[317,4],[1321,5]]},"173":{"position":[[377,4]]},"180":{"position":[[647,4],[4208,4]]}},"keywords":{}}],["more/few",{"_index":1418,"title":{},"content":{"166":{"position":[[778,10]]}},"keywords":{}}],["more/long",{"_index":1362,"title":{},"content":{"164":{"position":[[305,11]]}},"keywords":{}}],["morn",{"_index":721,"title":{},"content":{"51":{"position":[[771,7]]}},"keywords":{}}],["much",{"_index":95,"title":{},"content":{"4":{"position":[[196,4]]},"161":{"position":[[60,4],[218,4]]},"164":{"position":[[961,4]]},"166":{"position":[[375,4]]}},"keywords":{}}],["multi",{"_index":105,"title":{"5":{"position":[[0,5]]}},"content":{},"keywords":{}}],["multipl",{"_index":76,"title":{"57":{"position":[[10,8]]}},"content":{"3":{"position":[[289,8]]},"5":{"position":[[13,8]]},"44":{"position":[[1419,8]]},"146":{"position":[[9,8]]},"147":{"position":[[37,8]]},"150":{"position":[[264,8]]},"180":{"position":[[1615,8]]}},"keywords":{}}],["mushroom",{"_index":997,"title":{"108":{"position":[[0,8]]},"145":{"position":[[10,8]]}},"content":{"145":{"position":[[5,8]]}},"keywords":{}}],["my_custom_them",{"_index":1213,"title":{},"content":{"149":{"position":[[199,16]]}},"keywords":{}}],["n",{"_index":1462,"title":{},"content":{"172":{"position":[[44,1]]}},"keywords":{}}],["name",{"_index":164,"title":{},"content":{"8":{"position":[[444,6]]},"72":{"position":[[166,5],[255,5],[323,5]]},"73":{"position":[[145,5],[263,5]]},"75":{"position":[[76,5]]},"77":{"position":[[153,5],[287,5],[366,5]]},"106":{"position":[[82,5],[159,5],[226,5]]},"107":{"position":[[82,5]]},"108":{"position":[[79,5]]},"111":{"position":[[83,5]]},"112":{"position":[[219,5]]},"132":{"position":[[1219,6],[1536,6]]},"138":{"position":[[50,4]]},"143":{"position":[[172,5],[459,5]]},"145":{"position":[[168,5],[461,5]]},"147":{"position":[[242,5],[460,5],[735,5],[975,5],[1265,5],[1472,5]]},"149":{"position":[[759,5],[1325,5],[1725,5],[2212,5]]}},"keywords":{}}],["narrow",{"_index":1546,"title":{},"content":{"180":{"position":[[1009,6],[1166,6],[1551,6]]}},"keywords":{}}],["natur",{"_index":267,"title":{},"content":{"9":{"position":[[298,6]]},"180":{"position":[[4153,7]]}},"keywords":{}}],["near",{"_index":1488,"title":{},"content":{"173":{"position":[[296,4]]},"180":{"position":[[1417,4],[1457,4]]}},"keywords":{}}],["need",{"_index":281,"title":{"123":{"position":[[3,4]]}},"content":{"9":{"position":[[621,6]]},"10":{"position":[[253,4]]},"15":{"position":[[62,7]]},"45":{"position":[[1105,4]]},"47":{"position":[[500,6]]},"55":{"position":[[266,6]]},"58":{"position":[[9,5]]},"70":{"position":[[299,4]]},"102":{"position":[[507,7]]},"107":{"position":[[159,4]]},"123":{"position":[[74,6]]},"131":{"position":[[1281,6]]},"141":{"position":[[236,4],[314,4],[795,4],[1118,4]]},"150":{"position":[[449,4]]},"157":{"position":[[310,4]]},"170":{"position":[[278,4]]},"171":{"position":[[501,6]]},"172":{"position":[[1309,4]]},"173":{"position":[[618,6],[632,5],[747,6],[881,8]]},"175":{"position":[[108,7]]},"179":{"position":[[447,8],[491,6]]}},"keywords":{}}],["neededal",{"_index":390,"title":{},"content":{"9":{"position":[[4724,9]]}},"keywords":{}}],["networktibb",{"_index":805,"title":{},"content":{"64":{"position":[[106,13]]}},"keywords":{}}],["neutral",{"_index":1031,"title":{},"content":{"115":{"position":[[212,7]]},"140":{"position":[[759,7]]}},"keywords":{}}],["neutral/normal)var",{"_index":1208,"title":{},"content":{"148":{"position":[[305,20]]}},"keywords":{}}],["never",{"_index":1498,"title":{},"content":{"177":{"position":[[54,5]]}},"keywords":{}}],["new",{"_index":424,"title":{},"content":{"11":{"position":[[502,3]]},"55":{"position":[[222,3]]},"123":{"position":[[61,3]]},"131":{"position":[[54,3]]},"132":{"position":[[182,3],[2184,3]]},"136":{"position":[[29,3]]},"170":{"position":[[198,5]]},"173":{"position":[[416,3]]}},"keywords":{}}],["next",{"_index":92,"title":{"30":{"position":[[0,4]]}},"content":{"4":{"position":[[160,4]]},"5":{"position":[[203,4]]},"72":{"position":[[329,4]]},"99":{"position":[[120,4]]},"114":{"position":[[434,4]]},"147":{"position":[[1478,4]]},"180":{"position":[[365,4]]}},"keywords":{}}],["nok",{"_index":1076,"title":{},"content":{"121":{"position":[[527,4]]}},"keywords":{}}],["nok/sek",{"_index":926,"title":{},"content":{"89":{"position":[[76,9]]}},"keywords":{}}],["non",{"_index":1258,"title":{},"content":{"156":{"position":[[256,3]]}},"keywords":{}}],["none",{"_index":960,"title":{},"content":{"98":{"position":[[203,6]]},"169":{"position":[[52,6]]}},"keywords":{}}],["normal",{"_index":303,"title":{},"content":{"9":{"position":[[1356,7],[1407,7],[4037,7],[4122,7]]},"15":{"position":[[319,7]]},"22":{"position":[[139,6]]},"27":{"position":[[151,6]]},"52":{"position":[[59,7]]},"75":{"position":[[345,9]]},"93":{"position":[[56,7]]},"97":{"position":[[62,7]]},"115":{"position":[[39,7]]},"149":{"position":[[1006,9],[2375,9]]},"158":{"position":[[80,6],[170,6]]},"165":{"position":[[1079,6]]},"178":{"position":[[189,6]]}},"keywords":{}}],["note",{"_index":386,"title":{},"content":{"9":{"position":[[4477,6]]},"10":{"position":[[179,5]]},"11":{"position":[[342,4]]},"15":{"position":[[452,5]]},"21":{"position":[[738,5]]},"25":{"position":[[143,5]]},"32":{"position":[[227,5]]},"51":{"position":[[896,5]]},"123":{"position":[[84,5]]},"132":{"position":[[853,6]]},"164":{"position":[[1223,5]]}},"keywords":{}}],["noteshom",{"_index":1082,"title":{},"content":{"122":{"position":[[39,9]]}},"keywords":{}}],["notifi",{"_index":1386,"title":{},"content":{"165":{"position":[[388,6]]}},"keywords":{}}],["notify.mobile_app",{"_index":600,"title":{},"content":{"41":{"position":[[895,17]]},"43":{"position":[[843,17]]},"44":{"position":[[1271,17]]}},"keywords":{}}],["novemb",{"_index":1586,"title":{},"content":{"183":{"position":[[280,8]]}},"keywords":{}}],["now",{"_index":878,"title":{},"content":{"77":{"position":[[379,3]]}},"keywords":{}}],["null",{"_index":240,"title":{},"content":{"8":{"position":[[2543,5]]},"9":{"position":[[1725,4]]},"52":{"position":[[156,4]]}},"keywords":{}}],["number",{"_index":1439,"title":{"173":{"position":[[13,6]]}},"content":{"169":{"position":[[116,6]]},"179":{"position":[[683,6],[752,6]]}},"keywords":{}}],["numer",{"_index":912,"title":{},"content":{"81":{"position":[[227,8]]}},"keywords":{}}],["numeric_st",{"_index":589,"title":{},"content":{"41":{"position":[[594,13]]},"42":{"position":[[441,13],[570,13]]},"43":{"position":[[339,13],[543,13],[681,13]]},"44":{"position":[[512,13]]},"180":{"position":[[2485,13],[2895,13]]}},"keywords":{}}],["object",{"_index":147,"title":{},"content":{"8":{"position":[[149,7]]},"20":{"position":[[216,9]]},"165":{"position":[[414,11]]},"166":{"position":[[1429,11]]}},"keywords":{}}],["observ",{"_index":1436,"title":{},"content":{"167":{"position":[[307,7]]},"180":{"position":[[1300,12]]}},"keywords":{}}],["occur",{"_index":1552,"title":{},"content":{"180":{"position":[[1502,7]]}},"keywords":{}}],["offer",{"_index":1118,"title":{},"content":{"132":{"position":[[259,6]]}},"keywords":{}}],["old",{"_index":426,"title":{},"content":{"11":{"position":[[526,3]]},"132":{"position":[[2075,3]]}},"keywords":{}}],["omit",{"_index":214,"title":{},"content":{"8":{"position":[[1445,4],[1626,4]]},"9":{"position":[[2264,7],[3519,4]]},"16":{"position":[[247,4]]},"51":{"position":[[168,4]]}},"keywords":{}}],["on",{"_index":999,"title":{},"content":{"109":{"position":[[56,4]]},"157":{"position":[[915,4]]},"165":{"position":[[343,3],[1158,3]]},"167":{"position":[[289,3],[392,3]]},"171":{"position":[[213,3]]},"178":{"position":[[40,3]]}},"keywords":{}}],["on/off",{"_index":922,"title":{},"content":{"88":{"position":[[177,6]]}},"keywords":{}}],["onc",{"_index":1435,"title":{},"content":{"167":{"position":[[275,4]]}},"keywords":{}}],["only)"",{"_index":577,"title":{},"content":{"41":{"position":[[283,11]]},"180":{"position":[[2348,11]]}},"keywords":{}}],["open",{"_index":244,"title":{},"content":{"8":{"position":[[2635,4]]},"49":{"position":[[1,4]]}},"keywords":{}}],["optim",{"_index":308,"title":{"61":{"position":[[9,8]]}},"content":{"9":{"position":[[1509,7],[2872,7]]},"13":{"position":[[60,9]]},"16":{"position":[[745,7]]},"21":{"position":[[93,7],[429,7],[689,7]]},"61":{"position":[[34,7]]},"77":{"position":[[1,9]]},"100":{"position":[[116,13]]},"121":{"position":[[476,7]]},"131":{"position":[[129,7],[333,7],[447,7],[851,8],[914,8],[1372,7]]}},"keywords":{}}],["option",{"_index":311,"title":{"18":{"position":[[23,8]]},"35":{"position":[[14,8]]},"165":{"position":[[0,8]]}},"content":{"9":{"position":[[1560,8],[1869,9],[2136,8],[3988,8]]},"11":{"position":[[392,7]]},"19":{"position":[[56,7]]},"41":{"position":[[667,9]]},"42":{"position":[[523,9]]},"48":{"position":[[48,8]]},"57":{"position":[[43,7]]},"120":{"position":[[198,10]]},"132":{"position":[[476,7],[553,7],[1444,7],[1776,7]]},"149":{"position":[[70,8],[80,6],[516,6]]},"160":{"position":[[391,9]]},"161":{"position":[[989,8],[1016,10]]},"179":{"position":[[610,8]]},"180":{"position":[[2237,6],[2655,6],[3079,6]]}},"keywords":{}}],["optionsbett",{"_index":413,"title":{},"content":{"11":{"position":[[233,13]]}},"keywords":{}}],["optionssav",{"_index":1134,"title":{},"content":{"132":{"position":[[1553,11]]}},"keywords":{}}],["orang",{"_index":491,"title":{},"content":{"20":{"position":[[159,9]]},"148":{"position":[[196,6]]},"149":{"position":[[386,6],[1090,6],[1985,6]]}},"keywords":{}}],["order",{"_index":1405,"title":{},"content":{"166":{"position":[[74,6]]}},"keywords":{}}],["origin",{"_index":1318,"title":{},"content":{"161":{"position":[[1300,8],[1518,8]]},"171":{"position":[[299,10]]},"172":{"position":[[698,8],[1000,8],[1113,8],[1204,8]]},"173":{"position":[[464,9],[591,10],[720,10]]}},"keywords":{}}],["other",{"_index":1493,"title":{},"content":{"173":{"position":[[856,6]]}},"keywords":{}}],["otherwis",{"_index":1396,"title":{},"content":{"165":{"position":[[948,9]]},"182":{"position":[[595,10]]}},"keywords":{}}],["out",{"_index":357,"title":{},"content":{"9":{"position":[[2983,3]]},"157":{"position":[[1,3]]},"166":{"position":[[935,4]]}},"keywords":{}}],["outlier",{"_index":1321,"title":{},"content":{"161":{"position":[[1362,7]]}},"keywords":{}}],["output",{"_index":145,"title":{},"content":{"8":{"position":[[124,6],[458,6]]},"132":{"position":[[670,7],[1317,6],[1506,6]]}},"keywords":{}}],["output_format",{"_index":178,"title":{},"content":{"8":{"position":[[688,14],[1183,13],[1656,14]]},"132":{"position":[[2323,14]]}},"keywords":{}}],["over",{"_index":89,"title":{},"content":{"4":{"position":[[93,4],[151,4]]},"9":{"position":[[900,4],[4379,4]]},"99":{"position":[[33,4],[111,4]]}},"keywords":{}}],["overlay",{"_index":331,"title":{},"content":{"9":{"position":[[2074,8],[4262,7]]},"22":{"position":[[49,7]]}},"keywords":{}}],["overlay)automat",{"_index":728,"title":{},"content":{"52":{"position":[[138,17]]}},"keywords":{}}],["overrid",{"_index":998,"title":{"109":{"position":[[0,10]]}},"content":{"111":{"position":[[136,9]]},"116":{"position":[[215,8],[433,8]]},"149":{"position":[[16,8],[109,8],[218,8]]},"150":{"position":[[167,8]]},"151":{"position":[[409,8],[501,8]]},"173":{"position":[[454,9]]}},"keywords":{}}],["overview",{"_index":428,"title":{"13":{"position":[[0,9]]}},"content":{"13":{"position":[[185,8],[373,8]]},"15":{"position":[[33,9]]},"126":{"position":[[203,9]]}},"keywords":{}}],["p",{"_index":942,"title":{"95":{"position":[[0,2]]}},"content":{},"keywords":{}}],["panliv",{"_index":732,"title":{},"content":{"52":{"position":[[261,7]]}},"keywords":{}}],["paramet",{"_index":193,"title":{},"content":{"8":{"position":[[1008,11],[1021,9],[1458,9],[2611,9]]},"9":{"position":[[2126,9]]},"61":{"position":[[5,11]]},"91":{"position":[[35,9]]},"132":{"position":[[498,10],[1711,11],[1735,10]]},"182":{"position":[[15,11],[28,9],[532,10]]}},"keywords":{}}],["parameterschart",{"_index":551,"title":{},"content":{"30":{"position":[[62,15]]}},"keywords":{}}],["parameterstest",{"_index":423,"title":{},"content":{"11":{"position":[[483,14]]}},"keywords":{}}],["particular",{"_index":1571,"title":{},"content":{"180":{"position":[[4054,10]]}},"keywords":{}}],["past",{"_index":369,"title":{},"content":{"9":{"position":[[3375,5],[3839,5]]},"99":{"position":[[42,4]]}},"keywords":{}}],["path",{"_index":647,"title":{},"content":{"43":{"position":[[472,4],[616,4]]},"132":{"position":[[1991,5]]}},"keywords":{}}],["pattern",{"_index":1366,"title":{},"content":{"164":{"position":[[540,8]]},"172":{"position":[[902,7]]},"173":{"position":[[767,8]]},"181":{"position":[[28,8]]}},"keywords":{}}],["patternsact",{"_index":1576,"title":{},"content":{"181":{"position":[[112,15]]}},"keywords":{}}],["peak",{"_index":66,"title":{"70":{"position":[[12,4]]},"126":{"position":[[20,4]]}},"content":{"3":{"position":[[24,4]]},"70":{"position":[[10,4],[95,4]]},"73":{"position":[[269,4]]},"95":{"position":[[1,4]]},"126":{"position":[[65,4]]},"138":{"position":[[313,4]]},"147":{"position":[[981,4]]},"156":{"position":[[99,5]]},"157":{"position":[[407,4],[738,4]]},"158":{"position":[[110,4],[200,4]]},"160":{"position":[[240,5]]},"161":{"position":[[202,4],[675,4]]},"162":{"position":[[336,4]]},"164":{"position":[[95,5],[661,5]]},"165":{"position":[[219,5]]},"170":{"position":[[369,4],[556,4]]},"180":{"position":[[59,4],[1285,4]]},"182":{"position":[[515,4]]}},"keywords":{}}],["peak)low",{"_index":1481,"title":{},"content":{"173":{"position":[[113,10]]}},"keywords":{}}],["peak_pric",{"_index":227,"title":{},"content":{"8":{"position":[[2150,10]]}},"keywords":{}}],["peak_price_",{"_index":1580,"title":{},"content":{"182":{"position":[[548,12]]}},"keywords":{}}],["peak_price_flex",{"_index":1361,"title":{},"content":{"164":{"position":[[191,16]]}},"keywords":{}}],["peak_price_min_distance_from_avg",{"_index":1378,"title":{},"content":{"164":{"position":[[1063,33]]}},"keywords":{}}],["peak_price_min_period_length",{"_index":1371,"title":{},"content":{"164":{"position":[[729,29]]}},"keywords":{}}],["peak_price_period",{"_index":992,"title":{},"content":{"103":{"position":[[528,18]]}},"keywords":{}}],["peak_price_period)tim",{"_index":1163,"title":{},"content":{"140":{"position":[[564,24]]}},"keywords":{}}],["pend",{"_index":1101,"title":{},"content":{"131":{"position":[[665,7]]},"132":{"position":[[758,7]]}},"keywords":{}}],["per",{"_index":268,"title":{"45":{"position":[[10,3]]}},"content":{"9":{"position":[[341,3]]},"45":{"position":[[602,3]]},"96":{"position":[[50,3],[63,3]]},"165":{"position":[[1096,3]]},"170":{"position":[[84,3]]},"172":{"position":[[130,3],[260,3],[428,3],[974,4]]},"173":{"position":[[87,3],[488,3]]},"175":{"position":[[270,3]]},"180":{"position":[[3093,3],[3600,3],[4130,3],[4312,3]]},"182":{"position":[[442,3],[506,3]]}},"keywords":{}}],["percentag",{"_index":694,"title":{},"content":{"45":{"position":[[644,10]]}},"keywords":{}}],["perfect",{"_index":452,"title":{},"content":{"17":{"position":[[514,7]]},"131":{"position":[[152,7]]},"171":{"position":[[320,7]]}},"keywords":{}}],["perfectli",{"_index":1401,"title":{},"content":{"165":{"position":[[1177,9]]}},"keywords":{}}],["perform",{"_index":414,"title":{},"content":{"11":{"position":[[247,11]]},"132":{"position":[[294,12]]}},"keywords":{}}],["period",{"_index":64,"title":{"3":{"position":[[6,8]]},"22":{"position":[[11,6]]},"44":{"position":[[17,6],[44,7]]},"45":{"position":[[14,6]]},"61":{"position":[[29,6]]},"62":{"position":[[30,6]]},"65":{"position":[[11,6]]},"69":{"position":[[37,8]]},"73":{"position":[[0,6]]},"126":{"position":[[11,6],[31,7]]},"153":{"position":[[0,6]]},"156":{"position":[[15,9]]},"177":{"position":[[3,7]]},"178":{"position":[[0,7]]}},"content":{"3":{"position":[[12,7],[35,7],[96,6],[195,6],[270,7],[403,6]]},"8":{"position":[[326,6],[1969,6],[2008,7],[2274,7],[2443,7]]},"9":{"position":[[333,7],[1541,6],[2067,6],[4193,6],[4430,7]]},"15":{"position":[[345,6]]},"22":{"position":[[95,8],[186,6],[363,6],[455,7]]},"30":{"position":[[176,6]]},"40":{"position":[[61,6]]},"41":{"position":[[124,7],[349,7],[971,6],[1191,7]]},"42":{"position":[[239,6],[858,6]]},"43":{"position":[[508,6]]},"44":{"position":[[52,6],[1437,6]]},"45":{"position":[[583,6],[606,6],[1069,6]]},"47":{"position":[[273,8]]},"52":{"position":[[94,6]]},"61":{"position":[[202,7],[234,6]]},"65":{"position":[[214,6]]},"70":{"position":[[21,6]]},"73":{"position":[[27,7]]},"77":{"position":[[298,6]]},"88":{"position":[[12,7],[214,6]]},"91":{"position":[[68,6],[108,7]]},"94":{"position":[[35,7],[119,7]]},"95":{"position":[[12,7]]},"97":{"position":[[172,6],[209,6],[263,8]]},"100":{"position":[[260,6]]},"102":{"position":[[448,7]]},"114":{"position":[[174,7],[201,8],[240,8],[398,8],[470,8],[502,7]]},"119":{"position":[[179,7]]},"121":{"position":[[274,7]]},"126":{"position":[[76,7],[92,6],[157,7],[225,7],[249,7],[322,7],[346,7],[453,6]]},"138":{"position":[[279,7]]},"145":{"position":[[185,6]]},"147":{"position":[[616,7],[752,6],[992,6]]},"149":{"position":[[1342,6]]},"154":{"position":[[102,7]]},"156":{"position":[[125,7],[207,7]]},"157":{"position":[[274,7],[895,8]]},"158":{"position":[[35,6],[121,6],[211,6],[271,6]]},"161":{"position":[[515,7],[849,7],[933,6],[962,6],[1277,6],[1460,6],[1496,7]]},"164":{"position":[[558,6],[591,6],[822,7],[988,6]]},"165":{"position":[[51,7],[270,6],[825,6],[1100,6],[1137,7]]},"166":{"position":[[148,8],[418,6],[446,7],[556,7],[633,7],[789,8],[848,7],[1068,7],[1277,7],[1447,7],[1508,8]]},"167":{"position":[[223,7],[485,7]]},"169":{"position":[[40,7],[126,7]]},"170":{"position":[[76,7],[380,8],[664,6]]},"171":{"position":[[163,7],[328,7],[392,7],[449,7]]},"172":{"position":[[1143,7],[1185,7],[1234,7],[1282,7]]},"173":{"position":[[569,7],[698,7]]},"175":{"position":[[262,7],[306,6],[337,7]]},"177":{"position":[[234,7],[254,8],[511,6]]},"178":{"position":[[21,7],[49,6]]},"179":{"position":[[103,7],[167,6],[230,6],[329,6]]},"180":{"position":[[23,6],[876,7],[1755,6],[2030,7],[2123,6],[3097,6],[3133,6],[3604,6],[3629,6],[4108,7],[4316,6]]},"182":{"position":[[434,7]]}},"keywords":{}}],["period"",{"_index":383,"title":{},"content":{"9":{"position":[[4346,12]]},"22":{"position":[[419,12]]}},"keywords":{}}],["period'",{"_index":683,"title":{},"content":{"45":{"position":[[32,8],[263,8],[673,8]]},"180":{"position":[[3340,8],[3778,8]]}},"keywords":{}}],["period)when",{"_index":1022,"title":{},"content":{"114":{"position":[[439,11]]}},"keywords":{}}],["period_filt",{"_index":225,"title":{},"content":{"8":{"position":[[2119,14]]}},"keywords":{}}],["period_interval_level_gap_count",{"_index":1516,"title":{},"content":{"179":{"position":[[715,32]]}},"keywords":{}}],["period_interval_smoothed_count",{"_index":1330,"title":{},"content":{"161":{"position":[[1663,30]]},"179":{"position":[[647,31]]}},"keywords":{}}],["period_interval_smoothed_countif",{"_index":1506,"title":{},"content":{"178":{"position":[[374,32]]}},"keywords":{}}],["perioddefault",{"_index":1397,"title":{},"content":{"165":{"position":[[963,14]]}},"keywords":{}}],["periodsdecreas",{"_index":1363,"title":{},"content":{"164":{"position":[[317,15]]}},"keywords":{}}],["periodsdefault",{"_index":1358,"title":{},"content":{"164":{"position":[[56,15]]}},"keywords":{}}],["periodsth",{"_index":1329,"title":{},"content":{"161":{"position":[[1642,10]]}},"keywords":{}}],["periodstooltip",{"_index":381,"title":{},"content":{"9":{"position":[[4308,14]]}},"keywords":{}}],["periodstransl",{"_index":314,"title":{},"content":{"9":{"position":[[1612,17]]}},"keywords":{}}],["permissionsintegr",{"_index":828,"title":{},"content":{"67":{"position":[[91,22]]}},"keywords":{}}],["person",{"_index":378,"title":{},"content":{"9":{"position":[[4067,8]]},"19":{"position":[[15,8],[222,8]]},"87":{"position":[[17,8]]}},"keywords":{}}],["phase",{"_index":1470,"title":{},"content":{"172":{"position":[[606,5]]}},"keywords":{}}],["pictur",{"_index":893,"title":{"80":{"position":[[0,7]]}},"content":{"80":{"position":[[40,7]]}},"keywords":{}}],["piec",{"_index":1502,"title":{"178":{"position":[[25,7]]}},"content":{},"keywords":{}}],["piecesmidnight",{"_index":1253,"title":{},"content":{"154":{"position":[[140,14]]}},"keywords":{}}],["piggi",{"_index":981,"title":{},"content":{"102":{"position":[[418,5]]},"114":{"position":[[341,5]]}},"keywords":{}}],["pixel",{"_index":544,"title":{},"content":{"28":{"position":[[171,6]]}},"keywords":{}}],["place",{"_index":207,"title":{},"content":{"8":{"position":[[1385,6]]}},"keywords":{}}],["plan",{"_index":431,"title":{},"content":{"13":{"position":[[256,8]]}},"keywords":{}}],["platform",{"_index":582,"title":{},"content":{"41":{"position":[[425,9]]},"42":{"position":[[278,9]]},"43":{"position":[[203,9]]},"44":{"position":[[244,9],[929,9]]},"45":{"position":[[147,9]]},"69":{"position":[[74,9]]},"70":{"position":[[124,9]]},"175":{"position":[[431,9]]},"180":{"position":[[2371,9],[2781,9],[3224,9]]}},"keywords":{}}],["plu",{"_index":1010,"title":{},"content":{"112":{"position":[[481,4]]},"116":{"position":[[395,5]]}},"keywords":{}}],["pm",{"_index":835,"title":{},"content":{"69":{"position":[[242,2]]}},"keywords":{}}],["point",{"_index":257,"title":{},"content":{"9":{"position":[[81,6],[4677,5]]},"47":{"position":[[115,6]]},"132":{"position":[[1246,6]]},"157":{"position":[[1067,6]]}},"keywords":{}}],["points_per_hour",{"_index":875,"title":{},"content":{"77":{"position":[[192,16]]}},"keywords":{}}],["poll",{"_index":749,"title":{},"content":{"55":{"position":[[275,7]]},"56":{"position":[[5,8]]},"89":{"position":[[207,5]]}},"keywords":{}}],["polling)futur",{"_index":416,"title":{},"content":{"11":{"position":[[281,14]]}},"keywords":{}}],["posit",{"_index":1027,"title":{},"content":{"115":{"position":[[131,8]]},"180":{"position":[[914,8],[1375,8]]}},"keywords":{}}],["possibl",{"_index":1234,"title":{},"content":{"150":{"position":[[369,8]]}},"keywords":{}}],["possible)very_expens",{"_index":47,"title":{},"content":{"2":{"position":[[292,23]]}},"keywords":{}}],["potenti",{"_index":934,"title":{},"content":{"91":{"position":[[127,11]]},"160":{"position":[[171,9]]}},"keywords":{}}],["practic",{"_index":130,"title":{},"content":{"5":{"position":[[306,9]]},"131":{"position":[[1443,9]]},"161":{"position":[[883,10]]}},"keywords":{}}],["precis",{"_index":946,"title":{},"content":{"96":{"position":[[27,9]]},"121":{"position":[[16,9]]}},"keywords":{}}],["predict",{"_index":1323,"title":{},"content":{"161":{"position":[[1430,10]]}},"keywords":{}}],["prefer",{"_index":1158,"title":{},"content":{"139":{"position":[[424,6]]},"160":{"position":[[377,11]]},"165":{"position":[[798,11]]}},"keywords":{}}],["prefix",{"_index":1581,"title":{},"content":{"182":{"position":[[561,6]]}},"keywords":{}}],["premium",{"_index":1543,"title":{},"content":{"180":{"position":[[740,7]]}},"keywords":{}}],["prerequisit",{"_index":295,"title":{"23":{"position":[[0,14]]},"48":{"position":[[0,14]]}},"content":{"9":{"position":[[1091,14]]}},"keywords":{}}],["preserv",{"_index":1325,"title":{},"content":{"161":{"position":[[1545,9]]}},"keywords":{}}],["prevent",{"_index":658,"title":{},"content":{"44":{"position":[[1,7]]},"94":{"position":[[82,8]]},"161":{"position":[[731,8],[1257,7]]}},"keywords":{}}],["price",{"_index":2,"title":{"1":{"position":[[0,5]]},"2":{"position":[[0,5]]},"3":{"position":[[0,5]]},"15":{"position":[[11,6]]},"22":{"position":[[5,5]]},"36":{"position":[[0,5]]},"39":{"position":[[0,5]]},"42":{"position":[[19,5]]},"43":{"position":[[34,5]]},"55":{"position":[[27,6]]},"60":{"position":[[25,5]]},"61":{"position":[[23,5]]},"65":{"position":[[5,5]]},"66":{"position":[[0,6]]},"70":{"position":[[17,6]]},"72":{"position":[[6,5]]},"75":{"position":[[0,5]]},"126":{"position":[[5,5],[25,5]]},"127":{"position":[[5,5]]},"156":{"position":[[9,5]]},"175":{"position":[[24,5]]},"180":{"position":[[9,5]]},"183":{"position":[[0,5]]}},"content":{"2":{"position":[[1,6],[89,6],[152,6],[208,6],[262,6],[337,6],[423,5]]},"3":{"position":[[6,5],[29,5],[90,5],[142,6],[189,5],[230,6]]},"4":{"position":[[87,5],[145,5],[209,5],[256,5],[340,6]]},"5":{"position":[[44,6]]},"8":{"position":[[30,5],[266,5],[320,5],[1320,6],[2002,5],[2507,6]]},"9":{"position":[[265,5],[1039,6],[1077,5],[1324,5],[1535,5],[1606,5],[2061,5],[3126,5],[3163,6],[4168,5],[4187,5],[4302,5],[4340,5],[4424,5]]},"13":{"position":[[166,6],[249,6]]},"15":{"position":[[27,5],[300,5],[339,5]]},"17":{"position":[[536,5]]},"19":{"position":[[24,5]]},"20":{"position":[[19,5],[226,5]]},"22":{"position":[[89,5],[115,5],[146,6],[180,5],[413,5]]},"30":{"position":[[170,5]]},"38":{"position":[[1,5]]},"40":{"position":[[130,5]]},"41":{"position":[[18,5],[260,5],[343,5],[390,5],[965,5],[1185,5]]},"42":{"position":[[70,5],[190,5],[1033,5]]},"43":{"position":[[58,6],[643,5],[1107,5],[1177,5],[1274,5]]},"44":{"position":[[198,6]]},"45":{"position":[[729,5],[795,5]]},"47":{"position":[[703,7]]},"52":{"position":[[13,5],[88,5]]},"55":{"position":[[12,6]]},"56":{"position":[[104,5]]},"60":{"position":[[43,5],[81,5]]},"62":{"position":[[22,5]]},"67":{"position":[[37,5]]},"70":{"position":[[15,5]]},"72":{"position":[[29,5],[98,5],[180,5],[261,5],[334,5]]},"73":{"position":[[21,5],[156,5],[274,5]]},"75":{"position":[[82,5]]},"77":{"position":[[167,6]]},"81":{"position":[[24,5],[99,5]]},"88":{"position":[[6,5],[82,7],[208,5]]},"90":{"position":[[85,5]]},"91":{"position":[[149,7]]},"92":{"position":[[54,5]]},"93":{"position":[[8,5],[103,7]]},"95":{"position":[[6,5],[57,7],[98,5]]},"97":{"position":[[21,5]]},"98":{"position":[[41,5]]},"99":{"position":[[27,5],[105,5]]},"100":{"position":[[24,5],[85,5]]},"102":{"position":[[97,5],[170,6],[265,5],[345,5],[442,5]]},"103":{"position":[[243,5],[330,5]]},"106":{"position":[[88,5],[237,5]]},"107":{"position":[[96,5]]},"108":{"position":[[85,5]]},"111":{"position":[[89,5]]},"112":{"position":[[233,5]]},"116":{"position":[[66,7]]},"119":{"position":[[122,5],[173,5]]},"120":{"position":[[181,5]]},"121":{"position":[[61,5]]},"126":{"position":[[70,5],[219,5],[282,6],[316,5],[380,6]]},"131":{"position":[[488,5],[532,5]]},"132":{"position":[[362,5],[1235,5]]},"138":{"position":[[138,5],[273,5]]},"140":{"position":[[319,5],[704,6],[743,6]]},"143":{"position":[[186,5],[473,5]]},"145":{"position":[[179,5],[467,5]]},"147":{"position":[[114,5],[248,5],[466,5],[746,5],[986,5]]},"149":{"position":[[665,5],[773,5],[1336,5],[2116,5],[2218,5]]},"152":{"position":[[159,5]]},"154":{"position":[[155,5]]},"156":{"position":[[79,6],[105,7],[119,5],[201,5]]},"157":{"position":[[40,6],[127,6],[397,5],[412,5],[543,5],[743,5],[843,5]]},"158":{"position":[[29,5],[49,7],[115,5],[139,7],[205,5],[229,7],[265,5],[285,7]]},"160":{"position":[[58,5],[226,6],[418,7]]},"161":{"position":[[49,6],[99,5],[207,6],[257,5],[378,6],[636,6],[680,6],[1090,6],[1168,5],[1201,5],[1309,7],[1527,6]]},"162":{"position":[[108,6],[247,5],[341,5]]},"164":{"position":[[82,7],[534,5],[642,7]]},"165":{"position":[[183,6],[225,6],[403,6]]},"166":{"position":[[691,5],[1293,5]]},"170":{"position":[[374,5]]},"171":{"position":[[124,7]]},"173":{"position":[[761,5]]},"175":{"position":[[283,6]]},"177":{"position":[[407,5]]},"178":{"position":[[284,5],[306,5],[440,5]]},"179":{"position":[[316,5],[693,5]]},"180":{"position":[[17,5],[64,5],[121,5],[229,6],[350,6],[441,6],[505,6],[543,6],[718,6],[940,5],[966,6],[1023,5],[1133,5],[1180,5],[1290,5],[1322,5],[1537,5],[2004,5],[2325,5],[2680,6],[3670,5],[3823,5],[3881,5],[4196,6],[4240,7],[4291,5]]},"182":{"position":[[520,6]]},"183":{"position":[[25,5]]}},"keywords":{}}],["price"",{"_index":833,"title":{},"content":{"69":{"position":[[51,11]]},"171":{"position":[[151,11]]}},"keywords":{}}],["price)api",{"_index":826,"title":{},"content":{"67":{"position":[[63,9]]}},"keywords":{}}],["price)filt",{"_index":1287,"title":{},"content":{"160":{"position":[[246,12]]}},"keywords":{}}],["price)rang",{"_index":1359,"title":{},"content":{"164":{"position":[[101,12],[667,12]]}},"keywords":{}}],["price_avg",{"_index":1511,"title":{},"content":{"179":{"position":[[290,10]]}},"keywords":{}}],["price_trend_next_3h)binari",{"_index":1162,"title":{},"content":{"140":{"position":[[503,26]]}},"keywords":{}}],["prices!consid",{"_index":813,"title":{},"content":{"65":{"position":[[94,15]]}},"keywords":{}}],["prices"",{"_index":840,"title":{},"content":{"70":{"position":[[100,12]]}},"keywords":{}}],["prices)sam",{"_index":1452,"title":{},"content":{"171":{"position":[[86,11]]}},"keywords":{}}],["pricesclick",{"_index":760,"title":{},"content":{"57":{"position":[[95,11]]},"132":{"position":[[1382,11]]}},"keywords":{}}],["pricevolatil",{"_index":1147,"title":{},"content":{"138":{"position":[[318,16]]}},"keywords":{}}],["primari",{"_index":1186,"title":{},"content":{"143":{"position":[[684,7]]},"145":{"position":[[616,7]]}},"keywords":{}}],["primarili",{"_index":260,"title":{},"content":{"9":{"position":[[161,9]]},"47":{"position":[[201,9]]}},"keywords":{}}],["problem",{"_index":1450,"title":{},"content":{"171":{"position":[[1,7]]}},"keywords":{}}],["process",{"_index":1098,"title":{"161":{"position":[[13,8]]}},"content":{"131":{"position":[[613,11]]},"173":{"position":[[181,10]]}},"keywords":{}}],["progress",{"_index":345,"title":{},"content":{"9":{"position":[[2575,13]]},"13":{"position":[[475,10],[720,11]]},"17":{"position":[[49,13],[343,11]]},"32":{"position":[[202,11]]},"51":{"position":[[478,11]]},"172":{"position":[[1088,12]]}},"keywords":{}}],["proof",{"_index":417,"title":{},"content":{"11":{"position":[[296,5]]},"139":{"position":[[252,5]]}},"keywords":{}}],["proper",{"_index":319,"title":{},"content":{"9":{"position":[[1718,6]]},"121":{"position":[[541,6]]}},"keywords":{}}],["provid",{"_index":261,"title":{},"content":{"9":{"position":[[178,9]]},"47":{"position":[[218,9]]},"58":{"position":[[152,9]]},"131":{"position":[[79,8],[229,8],[1363,8]]},"132":{"position":[[331,8]]},"140":{"position":[[14,7]]},"141":{"position":[[357,10]]},"157":{"position":[[1045,7]]},"183":{"position":[[16,8]]}},"keywords":{}}],["public",{"_index":744,"title":{},"content":{"55":{"position":[[112,12],[175,12]]}},"keywords":{}}],["publish",{"_index":738,"title":{},"content":{"55":{"position":[[23,9]]},"67":{"position":[[178,9]]}},"keywords":{}}],["pump",{"_index":684,"title":{},"content":{"45":{"position":[[109,4]]},"88":{"position":[[129,6]]},"164":{"position":[[846,4]]}},"keywords":{}}],["purpos",{"_index":136,"title":{},"content":{"8":{"position":[[1,8]]},"9":{"position":[[941,8]]},"10":{"position":[[1,8]]},"157":{"position":[[528,9]]}},"keywords":{}}],["purposebest_price_flex",{"_index":1577,"title":{},"content":{"182":{"position":[[52,22]]}},"keywords":{}}],["q",{"_index":945,"title":{"96":{"position":[[0,2]]}},"content":{},"keywords":{}}],["qualifi",{"_index":1431,"title":{},"content":{"166":{"position":[[1497,10]]}},"keywords":{}}],["qualiti",{"_index":1288,"title":{},"content":{"160":{"position":[[262,7]]},"161":{"position":[[481,7],[1046,7]]},"165":{"position":[[24,9]]},"166":{"position":[[1202,7],[1366,7]]},"182":{"position":[[216,7],[285,7]]}},"keywords":{}}],["quarter",{"_index":6,"title":{},"content":{"1":{"position":[[28,7]]},"56":{"position":[[49,7]]},"96":{"position":[[1,7]]},"121":{"position":[[1,7]]},"160":{"position":[[43,7]]}},"keywords":{}}],["queri",{"_index":707,"title":{},"content":{"45":{"position":[[1113,5]]}},"keywords":{}}],["question",{"_index":737,"title":{"53":{"position":[[23,9]]},"54":{"position":[[8,10]]},"59":{"position":[[14,10]]},"68":{"position":[[11,10]]}},"content":{},"keywords":{}}],["quick",{"_index":322,"title":{"120":{"position":[[3,5]]},"155":{"position":[[0,5]]},"182":{"position":[[0,5]]}},"content":{"9":{"position":[[1767,5]]},"13":{"position":[[173,5]]},"126":{"position":[[197,5]]},"154":{"position":[[1,5]]},"164":{"position":[[913,5]]},"170":{"position":[[588,5]]}},"keywords":{}}],["quot",{"_index":605,"title":{},"content":{"41":{"position":[[1108,10]]},"79":{"position":[[170,8],[249,8]]}},"keywords":{}}],["quot;#0000ff"",{"_index":536,"title":{},"content":{"27":{"position":[[122,19]]}},"keywords":{}}],["quot;#00c853"",{"_index":1214,"title":{},"content":{"149":{"position":[[261,19]]}},"keywords":{}}],["quot;#00ff00"",{"_index":534,"title":{},"content":{"27":{"position":[[70,19]]}},"keywords":{}}],["quot;#0288d1"",{"_index":1217,"title":{},"content":{"149":{"position":[[405,19]]}},"keywords":{}}],["quot;#d32f2f"",{"_index":1215,"title":{},"content":{"149":{"position":[[309,19]]}},"keywords":{}}],["quot;#f57c00"",{"_index":1216,"title":{},"content":{"149":{"position":[[357,19]]}},"keywords":{}}],["quot;#ff0000"",{"_index":537,"title":{},"content":{"27":{"position":[[166,19]]}},"keywords":{}}],["quot;2025",{"_index":185,"title":{},"content":{"8":{"position":[[818,10],[920,10]]},"179":{"position":[[127,10],[190,10]]}},"keywords":{}}],["quot;20:00:00"",{"_index":834,"title":{},"content":{"69":{"position":[[200,20]]}},"keywords":{}}],["quot;add",{"_index":756,"title":{},"content":{"57":{"position":[[14,9],[131,9]]}},"keywords":{}}],["quot;apexchart",{"_index":526,"title":{},"content":{"24":{"position":[[89,16]]},"49":{"position":[[32,16]]}},"keywords":{}}],["quot;best",{"_index":382,"title":{},"content":{"9":{"position":[[4329,10]]},"22":{"position":[[402,10]]},"88":{"position":[[197,10]]},"171":{"position":[[140,10]]}},"keywords":{}}],["quot;best"",{"_index":1306,"title":{},"content":{"161":{"position":[[766,16]]}},"keywords":{}}],["quot;charg",{"_index":640,"title":{},"content":{"43":{"position":[[141,12]]}},"keywords":{}}],["quot;cheap",{"_index":633,"title":{},"content":{"42":{"position":[[1008,11]]},"61":{"position":[[125,11]]}},"keywords":{}}],["quot;cheap"",{"_index":234,"title":{},"content":{"8":{"position":[[2411,18]]},"19":{"position":[[96,17]]},"41":{"position":[[80,17]]},"94":{"position":[[101,17]]}},"keywords":{}}],["quot;config",{"_index":529,"title":{},"content":{"25":{"position":[[97,12]]},"49":{"position":[[93,12]]}},"keywords":{}}],["quot;configure"",{"_index":761,"title":{},"content":{"57":{"position":[[107,21]]}},"keywords":{}}],["quot;data"",{"_index":183,"title":{},"content":{"8":{"position":[[772,17]]}},"keywords":{}}],["quot;dis",{"_index":839,"title":{},"content":{"70":{"position":[[65,13]]}},"keywords":{}}],["quot;dishwash",{"_index":576,"title":{},"content":{"41":{"position":[[236,16],[928,16]]},"69":{"position":[[22,16]]},"180":{"position":[[2301,16]]}},"keywords":{}}],["quot;don't",{"_index":1400,"title":{},"content":{"165":{"position":[[1119,11]]}},"keywords":{}}],["quot;eur"",{"_index":1107,"title":{},"content":{"131":{"position":[[962,16]]}},"keywords":{}}],["quot;ev",{"_index":637,"title":{},"content":{"43":{"position":[[87,8]]},"180":{"position":[[3170,8]]}},"keywords":{}}],["quot;expensive"",{"_index":479,"title":{},"content":{"19":{"position":[[179,21]]},"41":{"position":[[102,21]]}},"keywords":{}}],["quot;finished"",{"_index":677,"title":{},"content":{"44":{"position":[[989,20]]}},"keywords":{}}],["quot;heat",{"_index":617,"title":{},"content":{"42":{"position":[[168,10]]},"45":{"position":[[98,10]]},"180":{"position":[[2732,10]]}},"keywords":{}}],["quot;i",{"_index":1570,"title":{},"content":{"180":{"position":[[4007,8]]}},"keywords":{}}],["quot;idle"",{"_index":668,"title":{},"content":{"44":{"position":[[451,16]]}},"keywords":{}}],["quot;level"",{"_index":327,"title":{},"content":{"9":{"position":[[1977,17]]},"50":{"position":[[211,17]]}},"keywords":{}}],["quot;low"",{"_index":237,"title":{},"content":{"8":{"position":[[2472,17]]},"179":{"position":[[350,15]]}},"keywords":{}}],["quot;mediocre"",{"_index":1395,"title":{},"content":{"165":{"position":[[907,20]]},"166":{"position":[[1081,20]]},"179":{"position":[[762,20]]}},"keywords":{}}],["quot;nok")resolut",{"_index":1108,"title":{},"content":{"131":{"position":[[979,27]]}},"keywords":{}}],["quot;normal"",{"_index":798,"title":{},"content":{"62":{"position":[[262,19]]}},"keywords":{}}],["quot;off"",{"_index":596,"title":{},"content":{"41":{"position":[[786,15]]},"44":{"position":[[1497,15]]}},"keywords":{}}],["quot;on"",{"_index":586,"title":{},"content":{"41":{"position":[[500,14]]},"42":{"position":[[353,14]]},"43":{"position":[[278,14]]},"44":{"position":[[319,14],[1141,14],[1515,14],[1554,14],[1571,14]]},"45":{"position":[[222,14]]},"69":{"position":[[149,14]]},"70":{"position":[[199,14]]},"175":{"position":[[506,14]]},"177":{"position":[[66,14]]},"179":{"position":[[88,14]]},"180":{"position":[[2446,14],[2856,14],[3299,14]]}},"keywords":{}}],["quot;on"/"off"",{"_index":955,"title":{},"content":{"98":{"position":[[58,30]]}},"keywords":{}}],["quot;onli",{"_index":1311,"title":{},"content":{"161":{"position":[[1071,10]]},"165":{"position":[[377,10]]}},"keywords":{}}],["quot;price_diff_18.0%+level_any"",{"_index":1514,"title":{},"content":{"179":{"position":[[527,38]]}},"keywords":{}}],["quot;price_per_kwh"",{"_index":188,"title":{},"content":{"8":{"position":[[857,26],[959,26]]}},"keywords":{}}],["quot;sensor.tibber_*_price"",{"_index":908,"title":{},"content":{"81":{"position":[[143,33]]}},"keywords":{}}],["quot;start",{"_index":578,"title":{},"content":{"41":{"position":[[308,11]]},"44":{"position":[[158,11]]}},"keywords":{}}],["quot;start_time"",{"_index":184,"title":{},"content":{"8":{"position":[[794,23],[896,23]]}},"keywords":{}}],["quot;today"",{"_index":176,"title":{},"content":{"8":{"position":[[646,19],[1141,19],[2166,19]]},"132":{"position":[[2281,19]]}},"keywords":{}}],["quot;tomorrow"",{"_index":177,"title":{},"content":{"8":{"position":[[666,21],[1161,21],[2186,21]]},"50":{"position":[[160,20]]},"132":{"position":[[2301,21]]}},"keywords":{}}],["quot;very_cheap"",{"_index":233,"title":{},"content":{"8":{"position":[[2386,24]]}},"keywords":{}}],["quot;wash",{"_index":662,"title":{},"content":{"44":{"position":[[100,13],[873,13],[1304,13]]}},"keywords":{}}],["quot;wat",{"_index":614,"title":{},"content":{"42":{"position":[[115,11]]}},"keywords":{}}],["quot;yesterday"",{"_index":715,"title":{},"content":{"50":{"position":[[137,22]]}},"keywords":{}}],["quot;zoom",{"_index":468,"title":{},"content":{"17":{"position":[[860,13]]}},"keywords":{}}],["r",{"_index":948,"title":{"97":{"position":[[0,2]]}},"content":{},"keywords":{}}],["rais",{"_index":1447,"title":{},"content":{"170":{"position":[[607,5]]}},"keywords":{}}],["rang",{"_index":149,"title":{},"content":{"8":{"position":[[180,5]]},"9":{"position":[[4174,6]]},"16":{"position":[[735,5]]},"20":{"position":[[25,6]]},"21":{"position":[[437,5]]},"51":{"position":[[983,6]]},"160":{"position":[[105,6]]},"161":{"position":[[22,5]]},"178":{"position":[[290,5]]},"180":{"position":[[946,6],[1016,6],[1029,6],[1173,6],[1186,6],[1440,5],[1484,5]]},"182":{"position":[[46,5],[93,5]]}},"keywords":{}}],["rangeno",{"_index":356,"title":{},"content":{"9":{"position":[[2947,7]]}},"keywords":{}}],["rare",{"_index":1297,"title":{},"content":{"161":{"position":[[385,6]]},"164":{"position":[[423,6]]}},"keywords":{}}],["rate",{"_index":25,"title":{"2":{"position":[[6,8]]},"19":{"position":[[0,6]]},"129":{"position":[[0,6]]}},"content":{"2":{"position":[[42,6],[365,6]]},"3":{"position":[[383,6]]},"8":{"position":[[2501,5]]},"9":{"position":[[1394,6]]},"42":{"position":[[1054,5]]},"60":{"position":[[214,7]]},"62":{"position":[[239,6]]},"72":{"position":[[267,6]]},"97":{"position":[[1,7]]},"102":{"position":[[205,6]]},"103":{"position":[[392,6]]},"106":{"position":[[165,6]]},"111":{"position":[[95,6]]},"121":{"position":[[145,7]]},"140":{"position":[[381,6]]},"147":{"position":[[472,6]]},"149":{"position":[[2122,6],[2224,6],[2283,6],[2309,7],[2363,7],[2419,7]]},"152":{"position":[[176,7]]},"179":{"position":[[391,6]]}},"keywords":{}}],["rating_level",{"_index":326,"title":{},"content":{"9":{"position":[[1959,12],[3281,12],[3998,12]]},"15":{"position":[[214,12]]},"16":{"position":[[289,12]]},"17":{"position":[[269,12]]},"50":{"position":[[193,12]]},"51":{"position":[[213,12],[633,12]]},"179":{"position":[[336,13]]}},"keywords":{}}],["rating_level_filt",{"_index":236,"title":{},"content":{"8":{"position":[[2451,20]]}},"keywords":{}}],["ratingperiod",{"_index":156,"title":{},"content":{"8":{"position":[[281,12]]}},"keywords":{}}],["re",{"_index":925,"title":{},"content":{"89":{"position":[[68,3]]},"121":{"position":[[565,4],[570,4]]}},"keywords":{}}],["re/kwh",{"_index":823,"title":{},"content":{"66":{"position":[[105,7]]}},"keywords":{}}],["reach",{"_index":1483,"title":{},"content":{"173":{"position":[[205,8],[290,5]]}},"keywords":{}}],["read",{"_index":24,"title":{},"content":{"1":{"position":[[212,8]]},"149":{"position":[[588,4]]}},"keywords":{}}],["readi",{"_index":1058,"title":{},"content":{"119":{"position":[[545,5]]},"131":{"position":[[691,5]]},"132":{"position":[[787,5]]}},"keywords":{}}],["real",{"_index":432,"title":{},"content":{"13":{"position":[[486,4]]},"17":{"position":[[14,4],[526,4]]},"161":{"position":[[1573,4]]},"178":{"position":[[435,4]]},"181":{"position":[[90,4]]}},"keywords":{}}],["realist",{"_index":1301,"title":{},"content":{"161":{"position":[[446,9]]}},"keywords":{}}],["realiti",{"_index":1574,"title":{},"content":{"180":{"position":[[4178,8]]}},"keywords":{}}],["realli",{"_index":1424,"title":{},"content":{"166":{"position":[[1107,6]]},"171":{"position":[[183,6]]}},"keywords":{}}],["recip",{"_index":837,"title":{},"content":{"69":{"position":[[351,8]]}},"keywords":{}}],["recipestroubleshoot",{"_index":1059,"title":{},"content":{"119":{"position":[[569,22]]}},"keywords":{}}],["recommend",{"_index":781,"title":{"83":{"position":[[18,14]]},"143":{"position":[[29,14]]}},"content":{"61":{"position":[[75,11]]},"150":{"position":[[10,11],[329,15]]},"164":{"position":[[438,15]]}},"keywords":{}}],["recommended)increas",{"_index":795,"title":{},"content":{"62":{"position":[[167,21]]}},"keywords":{}}],["red",{"_index":478,"title":{},"content":{"19":{"position":[[161,6]]},"20":{"position":[[190,6]]},"52":{"position":[[67,3]]},"79":{"position":[[422,3]]},"112":{"position":[[583,3]]},"140":{"position":[[750,4]]},"148":{"position":[[243,3]]},"149":{"position":[[338,3],[1150,3],[2045,3],[2465,3]]}},"keywords":{}}],["reduc",{"_index":45,"title":{},"content":{"2":{"position":[[269,7]]},"56":{"position":[[137,8]]},"156":{"position":[[228,6]]},"177":{"position":[[504,6],[572,6]]}},"keywords":{}}],["refer",{"_index":394,"title":{"182":{"position":[[6,10]]},"183":{"position":[[13,10]]}},"content":{"9":{"position":[[4890,5]]},"117":{"position":[[62,9]]},"152":{"position":[[9,9]]}},"keywords":{}}],["reflect",{"_index":972,"title":{},"content":{"102":{"position":[[67,7]]}},"keywords":{}}],["refresh",{"_index":399,"title":{},"content":{"10":{"position":[[30,7]]},"55":{"position":[[258,7]]},"131":{"position":[[517,9]]},"132":{"position":[[603,9]]}},"keywords":{}}],["regardless",{"_index":619,"title":{},"content":{"42":{"position":[[225,10]]}},"keywords":{}}],["region",{"_index":115,"title":{},"content":{"5":{"position":[[126,7]]}},"keywords":{}}],["regular",{"_index":42,"title":{},"content":{"2":{"position":[[215,8]]}},"keywords":{}}],["rel",{"_index":611,"title":{},"content":{"42":{"position":[[23,8]]},"180":{"position":[[1366,8]]}},"keywords":{}}],["relat",{"_index":913,"title":{},"content":{"81":{"position":[[248,8]]}},"keywords":{}}],["relax",{"_index":794,"title":{"168":{"position":[[14,11]]},"169":{"position":[[8,12]]},"171":{"position":[[4,10]]}},"content":{"62":{"position":[[156,10]]},"97":{"position":[[137,11]]},"126":{"position":[[480,10]]},"164":{"position":[[483,10],[1441,10]]},"166":{"position":[[96,10],[312,10],[994,10],[1531,10]]},"167":{"position":[[56,10],[174,10],[344,10]]},"169":{"position":[[59,10]]},"170":{"position":[[204,10]]},"171":{"position":[[253,11]]},"172":{"position":[[1,10],[82,10]]},"173":{"position":[[161,10],[530,7],[607,10],[666,7],[736,10],[869,11]]},"177":{"position":[[110,10],[345,10]]},"179":{"position":[[400,10],[498,10]]},"182":{"position":[[392,10]]}},"keywords":{}}],["relaxation_act",{"_index":1499,"title":{},"content":{"177":{"position":[[304,17]]},"179":{"position":[[456,18]]}},"keywords":{}}],["relaxation_attempts_best",{"_index":1410,"title":{},"content":{"166":{"position":[[246,25]]},"170":{"position":[[92,25]]},"182":{"position":[[450,24]]}},"keywords":{}}],["relaxation_attempts_peak",{"_index":1442,"title":{},"content":{"170":{"position":[[326,24]]}},"keywords":{}}],["relaxation_level",{"_index":1513,"title":{},"content":{"179":{"position":[[509,17]]}},"keywords":{}}],["relaxation_levelif",{"_index":1500,"title":{},"content":{"177":{"position":[[326,18]]}},"keywords":{}}],["relaxationcommon",{"_index":1248,"title":{},"content":{"154":{"position":[[57,16]]}},"keywords":{}}],["relev",{"_index":471,"title":{},"content":{"17":{"position":[[915,8]]},"179":{"position":[[636,10]]}},"keywords":{}}],["reli",{"_index":610,"title":{},"content":{"42":{"position":[[12,7]]}},"keywords":{}}],["reliabl",{"_index":1468,"title":{},"content":{"172":{"position":[[453,13]]}},"keywords":{}}],["remain",{"_index":348,"title":{},"content":{"9":{"position":[[2604,9]]},"13":{"position":[[505,9]]},"17":{"position":[[33,9],[483,9],[924,9]]},"51":{"position":[[865,9]]}},"keywords":{}}],["remov",{"_index":1011,"title":{},"content":{"112":{"position":[[503,6]]},"179":{"position":[[600,7]]}},"keywords":{}}],["renam",{"_index":165,"title":{},"content":{"8":{"position":[[451,6]]}},"keywords":{}}],["renew",{"_index":1537,"title":{},"content":{"180":{"position":[[612,9]]}},"keywords":{}}],["replac",{"_index":1322,"title":{},"content":{"161":{"position":[[1410,8]]}},"keywords":{}}],["repository)add",{"_index":1060,"title":{},"content":{"120":{"position":[[33,14]]}},"keywords":{}}],["repositoryissu",{"_index":1080,"title":{},"content":{"122":{"position":[[8,15]]}},"keywords":{}}],["repres",{"_index":434,"title":{},"content":{"13":{"position":[[601,14]]},"32":{"position":[[23,14]]}},"keywords":{}}],["reproduc",{"_index":1140,"title":{},"content":{"136":{"position":[[106,9]]}},"keywords":{}}],["requir",{"_index":197,"title":{"24":{"position":[[0,8]]},"25":{"position":[[0,8]]}},"content":{"8":{"position":[[1080,10]]},"9":{"position":[[525,7],[1123,9],[1177,9],[4514,8]]},"11":{"position":[[160,8]]},"21":{"position":[[445,13],[826,7]]},"47":{"position":[[336,7]]},"48":{"position":[[1,9]]},"51":{"position":[[923,7]]},"58":{"position":[[116,8]]},"94":{"position":[[25,9]]},"132":{"position":[[1026,7]]},"141":{"position":[[491,8]]},"161":{"position":[[1027,8]]},"166":{"position":[[1374,13]]},"177":{"position":[[525,11]]}},"keywords":{}}],["resolut",{"_index":201,"title":{},"content":{"8":{"position":[[1250,10]]}},"keywords":{}}],["respons",{"_index":182,"title":{},"content":{"8":{"position":[[752,8]]},"9":{"position":[[4811,8]]}},"keywords":{}}],["response_vari",{"_index":180,"title":{},"content":{"8":{"position":[[720,18],[1688,18],[2255,18]]},"9":{"position":[[2083,18],[3294,18],[3645,18]]},"50":{"position":[[246,18]]},"51":{"position":[[226,18],[646,18]]},"132":{"position":[[2355,18]]}},"keywords":{}}],["responsest",{"_index":1100,"title":{},"content":{"131":{"position":[[634,13]]}},"keywords":{}}],["restart",{"_index":411,"title":{},"content":{"11":{"position":[[152,7]]},"64":{"position":[[179,7]]},"132":{"position":[[1037,7],[1569,7]]}},"keywords":{}}],["restrict",{"_index":1433,"title":{},"content":{"167":{"position":[[146,11]]}},"keywords":{}}],["result",{"_index":1113,"title":{},"content":{"131":{"position":[[1315,6]]},"161":{"position":[[1441,7]]},"164":{"position":[[1393,8]]},"167":{"position":[[315,7]]}},"keywords":{}}],["return",{"_index":137,"title":{},"content":{"8":{"position":[[10,7],[303,6],[1313,6],[1786,7],[1844,7]]},"75":{"position":[[176,6],[264,6],[355,6],[444,6],[536,6],[596,6]]},"112":{"position":[[343,6]]},"132":{"position":[[1948,6]]},"141":{"position":[[623,6],[692,6],[916,6],[1006,6],[1039,6]]},"143":{"position":[[259,6],[546,6],[638,6]]},"147":{"position":[[306,6],[525,6],[826,6],[1068,6],[1328,6],[1538,6]]},"149":{"position":[[902,6],[959,6],[1016,6],[1069,6],[1129,6],[1154,6],[1454,6],[1538,6],[1853,6],[1911,6],[1964,6],[2024,6],[2049,6],[2328,6],[2385,6],[2439,6],[2469,6]]}},"keywords":{}}],["review",{"_index":776,"title":{},"content":{"60":{"position":[[262,6]]}},"keywords":{}}],["rgba",{"_index":1173,"title":{},"content":{"141":{"position":[[284,4]]}},"keywords":{}}],["rgba(244",{"_index":1180,"title":{},"content":{"141":{"position":[[699,10],[1013,10]]}},"keywords":{}}],["rgba(76",{"_index":1177,"title":{},"content":{"141":{"position":[[630,9],[923,9]]},"149":{"position":[[1569,9]]}},"keywords":{}}],["rich",{"_index":1090,"title":{},"content":{"126":{"position":[[432,4]]}},"keywords":{}}],["right",{"_index":1412,"title":{},"content":{"166":{"position":[[347,5]]}},"keywords":{}}],["risk",{"_index":1542,"title":{},"content":{"180":{"position":[[735,4]]}},"keywords":{}}],["robust",{"_index":635,"title":{},"content":{"43":{"position":[[6,6]]}},"keywords":{}}],["roll",{"_index":212,"title":{"16":{"position":[[3,7]]},"17":{"position":[[3,7]]},"25":{"position":[[13,7]]},"51":{"position":[[9,7]]}},"content":{"8":{"position":[[1423,7],[1493,7],[1641,7]]},"9":{"position":[[1196,7],[1444,7],[2471,7],[2533,7],[2758,8],[2783,7],[3409,7],[3534,7],[4527,7]]},"13":{"position":[[290,7],[416,7],[640,7],[687,7]]},"16":{"position":[[262,7]]},"17":{"position":[[659,7]]},"21":{"position":[[1,7],[715,7]]},"32":{"position":[[88,7],[159,7]]},"48":{"position":[[62,7]]},"49":{"position":[[150,7]]},"51":{"position":[[706,7],[902,7]]},"131":{"position":[[361,7]]}},"keywords":{}}],["rolling_window",{"_index":323,"title":{},"content":{"9":{"position":[[1907,15],[2275,16],[3557,17],[3936,15]]},"51":{"position":[[148,14]]},"131":{"position":[[1207,14]]}},"keywords":{}}],["rolling_window_autozoom",{"_index":324,"title":{},"content":{"9":{"position":[[1923,23],[2498,26],[3952,23]]},"17":{"position":[[233,23]]},"51":{"position":[[597,23]]},"131":{"position":[[1226,23]]}},"keywords":{}}],["round_decim",{"_index":205,"title":{},"content":{"8":{"position":[[1362,14]]}},"keywords":{}}],["row",{"_index":1189,"title":{},"content":{"144":{"position":[[206,4]]}},"keywords":{}}],["rowchang",{"_index":986,"title":{},"content":{"103":{"position":[[212,9]]}},"keywords":{}}],["run",{"_index":571,"title":{"69":{"position":[[9,3]]}},"content":{"41":{"position":[[165,4]]},"42":{"position":[[406,3]]},"65":{"position":[[188,3]]},"156":{"position":[[146,3]]},"157":{"position":[[691,7]]},"173":{"position":[[437,4]]},"175":{"position":[[42,3]]}},"keywords":{}}],["s",{"_index":954,"title":{"98":{"position":[[0,2]]}},"content":{},"keywords":{}}],["safe",{"_index":1416,"title":{},"content":{"166":{"position":[[643,4]]}},"keywords":{}}],["same",{"_index":343,"title":{},"content":{"9":{"position":[[2525,4]]},"11":{"position":[[478,4]]},"15":{"position":[[606,4]]},"17":{"position":[[650,5]]},"32":{"position":[[283,5]]},"51":{"position":[[177,4],[685,4]]},"143":{"position":[[366,4]]},"172":{"position":[[897,4]]},"182":{"position":[[527,4],[590,4]]}},"keywords":{}}],["satisfi",{"_index":427,"title":{},"content":{"11":{"position":[[542,9]]},"164":{"position":[[1275,10]]}},"keywords":{}}],["save",{"_index":573,"title":{},"content":{"41":{"position":[[190,7],[572,8],[1199,4],[1255,7]]},"45":{"position":[[1154,6]]},"114":{"position":[[366,4]]}},"keywords":{}}],["scale",{"_index":301,"title":{"21":{"position":[[15,8]]}},"content":{"9":{"position":[[1242,8],[1435,8],[2437,7],[2700,7],[2750,7]]},"13":{"position":[[678,8]]},"16":{"position":[[378,7]]},"17":{"position":[[415,7]]},"21":{"position":[[616,7],[704,7],[808,7]]},"32":{"position":[[136,7]]},"121":{"position":[[398,7]]},"131":{"position":[[321,7],[1196,7]]}},"keywords":{}}],["scaling)curr",{"_index":1106,"title":{},"content":{"131":{"position":[[923,17]]}},"keywords":{}}],["scaling)yaxis_max",{"_index":1105,"title":{},"content":{"131":{"position":[[860,18]]}},"keywords":{}}],["scalingperiod",{"_index":553,"title":{},"content":{"30":{"position":[[122,13]]}},"keywords":{}}],["scalingr",{"_index":361,"title":{},"content":{"9":{"position":[[3081,11]]}},"keywords":{}}],["scenario",{"_index":1279,"title":{"174":{"position":[[7,10]]},"175":{"position":[[0,8]]}},"content":{"157":{"position":[[1086,10]]}},"keywords":{}}],["scenariostroubleshoot",{"_index":1249,"title":{},"content":{"154":{"position":[[74,24]]}},"keywords":{}}],["schedul",{"_index":71,"title":{},"content":{"3":{"position":[[154,10]]},"88":{"position":[[100,10]]}},"keywords":{}}],["scheme",{"_index":1155,"title":{},"content":{"139":{"position":[[237,7]]},"148":{"position":[[451,8]]}},"keywords":{}}],["scope",{"_index":284,"title":{},"content":{"9":{"position":[[693,5]]}},"keywords":{}}],["screenshot",{"_index":374,"title":{"31":{"position":[[0,12]]}},"content":{"9":{"position":[[3864,12],[3878,11]]},"13":{"position":[[554,11]]},"15":{"position":[[256,11]]},"16":{"position":[[331,11]]},"17":{"position":[[311,11]]}},"keywords":{}}],["screenshotsautom",{"_index":1057,"title":{},"content":{"119":{"position":[[512,21]]}},"keywords":{}}],["script",{"_index":1065,"title":{},"content":{"120":{"position":[[290,8]]}},"keywords":{}}],["search",{"_index":525,"title":{},"content":{"24":{"position":[[82,6]]},"25":{"position":[[90,6]]},"49":{"position":[[82,6]]},"161":{"position":[[15,6],[160,6],[319,6]]},"164":{"position":[[45,6]]},"172":{"position":[[342,6]]},"182":{"position":[[86,6]]}},"keywords":{}}],["season",{"_index":1557,"title":{},"content":{"180":{"position":[[1682,7]]}},"keywords":{}}],["section",{"_index":1159,"title":{},"content":{"140":{"position":[[272,7]]}},"keywords":{}}],["see",{"_index":82,"title":{"55":{"position":[[12,3]]},"117":{"position":[[0,3]]},"152":{"position":[[0,3]]}},"content":{"3":{"position":[[399,3]]},"22":{"position":[[358,4]]},"61":{"position":[[230,3]]},"69":{"position":[[318,3]]},"78":{"position":[[109,3]]},"79":{"position":[[428,3]]},"90":{"position":[[99,3]]},"100":{"position":[[136,3]]},"103":{"position":[[4,3]]},"112":{"position":[[56,3]]},"116":{"position":[[250,3],[475,4]]},"121":{"position":[[406,4]]},"123":{"position":[[164,3]]},"126":{"position":[[84,3]]},"131":{"position":[[1410,3]]},"132":{"position":[[1614,3]]},"139":{"position":[[445,4]]},"140":{"position":[[71,3]]},"151":{"position":[[358,3]]},"181":{"position":[[62,4]]}},"keywords":{}}],["seem",{"_index":1423,"title":{},"content":{"166":{"position":[[1076,4]]}},"keywords":{}}],["segment",{"_index":239,"title":{},"content":{"8":{"position":[[2528,8],[2552,7]]},"9":{"position":[[288,9],[1757,8]]},"47":{"position":[[257,10]]}},"keywords":{}}],["sek",{"_index":1077,"title":{},"content":{"121":{"position":[[532,3]]}},"keywords":{}}],["select",{"_index":150,"title":{},"content":{"8":{"position":[[186,10],[1957,10],[2685,6]]},"16":{"position":[[428,10]]},"166":{"position":[[697,9],[914,9]]}},"keywords":{}}],["semi",{"_index":726,"title":{},"content":{"52":{"position":[[114,5]]}},"keywords":{}}],["sensibl",{"_index":1441,"title":{},"content":{"170":{"position":[[242,8]]}},"keywords":{}}],["sensit",{"_index":774,"title":{},"content":{"60":{"position":[[204,9]]}},"keywords":{}}],["sensor",{"_index":118,"title":{"11":{"position":[[33,7]]},"64":{"position":[[0,7]]},"103":{"position":[[18,6]]},"114":{"position":[[7,8]]},"124":{"position":[[0,7]]},"125":{"position":[[7,8]]},"127":{"position":[[11,8]]},"128":{"position":[[12,8]]},"129":{"position":[[7,8]]},"130":{"position":[[11,8]]},"140":{"position":[[6,7]]},"179":{"position":[[14,6]]}},"content":{"5":{"position":[[165,7],[273,6]]},"9":{"position":[[1498,6],[2464,6],[2727,6],[2861,6],[3001,6],[3040,6]]},"11":{"position":[[64,7],[360,6],[530,6]]},"16":{"position":[[405,7]]},"17":{"position":[[442,7]]},"21":{"position":[[82,6],[140,6],[296,6],[597,6],[670,6],[847,7]]},"30":{"position":[[87,7]]},"55":{"position":[[125,7]]},"57":{"position":[[219,7]]},"70":{"position":[[35,7]]},"81":{"position":[[30,8],[105,7]]},"87":{"position":[[128,6]]},"88":{"position":[[157,7],[165,6]]},"90":{"position":[[43,6]]},"98":{"position":[[27,6],[100,9]]},"100":{"position":[[198,7]]},"102":{"position":[[38,7],[109,7],[212,7],[301,7],[367,7]]},"103":{"position":[[21,6],[109,6],[296,6],[342,7],[399,7],[455,7],[494,7]]},"105":{"position":[[356,6]]},"114":{"position":[[8,7]]},"115":{"position":[[1,7]]},"116":{"position":[[34,6],[141,6],[516,6]]},"119":{"position":[[236,8]]},"120":{"position":[[250,7]]},"121":{"position":[[435,6]]},"126":{"position":[[14,7],[416,7]]},"131":{"position":[[72,6],[222,6],[278,6],[1170,6],[1356,6]]},"132":{"position":[[129,6],[324,6],[702,6],[1063,6],[1839,6],[2029,7],[2088,8]]},"138":{"position":[[150,8],[230,8]]},"139":{"position":[[395,6]]},"140":{"position":[[6,7],[80,6],[172,6],[288,6],[331,7],[388,7],[444,7],[488,7],[530,7],[589,7]]},"146":{"position":[[18,7]]},"147":{"position":[[46,7],[604,7]]},"149":{"position":[[597,6],[1240,6]]},"152":{"position":[[1,7],[93,7]]},"165":{"position":[[691,6],[783,6]]},"167":{"position":[[455,6]]},"170":{"position":[[628,6]]},"177":{"position":[[285,6]]},"180":{"position":[[1728,7],[3140,8],[3636,6],[4273,8]]}},"keywords":{}}],["sensor'",{"_index":1130,"title":{},"content":{"132":{"position":[[1308,8]]},"138":{"position":[[108,8]]},"140":{"position":[[679,8]]}},"keywords":{}}],["sensor.ev_battery_level",{"_index":644,"title":{},"content":{"43":{"position":[[364,23]]}},"keywords":{}}],["sensor.tibber_home_best_price_start_tim",{"_index":877,"title":{},"content":{"77":{"position":[[246,40]]}},"keywords":{}}],["sensor.tibber_home_chart_data_export",{"_index":407,"title":{},"content":{"11":{"position":[[27,36]]},"132":{"position":[[1893,36],[2145,36]]}},"keywords":{}}],["sensor.tibber_home_chart_metadata",{"_index":373,"title":{},"content":{"9":{"position":[[3772,33]]},"21":{"position":[[466,33]]}},"keywords":{}}],["sensor.tibber_home_current_interval_level",{"_index":853,"title":{},"content":{"75":{"position":[[34,41]]}},"keywords":{}}],["sensor.tibber_home_current_interval_pric",{"_index":548,"title":{},"content":{"29":{"position":[[105,41]]},"72":{"position":[[124,41]]},"77":{"position":[[111,41]]},"78":{"position":[[234,41]]},"79":{"position":[[116,41]]},"80":{"position":[[138,41]]}},"keywords":{}}],["sensor.tibber_home_current_interval_price_ct",{"_index":621,"title":{},"content":{"42":{"position":[[466,44]]},"43":{"position":[[706,44]]},"180":{"position":[[2920,44]]}},"keywords":{}}],["sensor.tibber_home_current_interval_price_level",{"_index":994,"title":{},"content":{"105":{"position":[[104,47]]},"106":{"position":[[34,47]]},"107":{"position":[[34,47]]},"110":{"position":[[36,47]]},"112":{"position":[[171,47]]},"143":{"position":[[124,47],[411,47]]},"144":{"position":[[122,47]]},"145":{"position":[[413,47]]},"146":{"position":[[81,47]]},"147":{"position":[[194,47]]},"149":{"position":[[711,47]]}},"keywords":{}}],["sensor.tibber_home_current_interval_price_level)look",{"_index":985,"title":{},"content":{"103":{"position":[[123,52]]},"140":{"position":[[186,52]]}},"keywords":{}}],["sensor.tibber_home_current_interval_price_r",{"_index":995,"title":{},"content":{"105":{"position":[[162,48]]},"106":{"position":[[110,48]]},"111":{"position":[[34,48]]},"147":{"position":[[411,48]]},"149":{"position":[[2163,48]]}},"keywords":{}}],["sensor.tibber_home_current_interval_r",{"_index":845,"title":{},"content":{"72":{"position":[[212,42]]},"78":{"position":[[278,42]]}},"keywords":{}}],["sensor.tibber_home_daily_avg_today",{"_index":885,"title":{},"content":{"78":{"position":[[398,34]]}},"keywords":{}}],["sensor.tibber_home_daily_max_today",{"_index":887,"title":{},"content":{"78":{"position":[[472,34]]}},"keywords":{}}],["sensor.tibber_home_daily_min_today",{"_index":886,"title":{},"content":{"78":{"position":[[435,34]]}},"keywords":{}}],["sensor.tibber_home_name_chart_data_exportdefault",{"_index":1114,"title":{},"content":{"132":{"position":[[12,48]]}},"keywords":{}}],["sensor.tibber_home_name_chart_metadata",{"_index":1092,"title":{},"content":{"131":{"position":[[12,38]]}},"keywords":{}}],["sensor.tibber_home_next_interval_pric",{"_index":846,"title":{},"content":{"72":{"position":[[284,38]]}},"keywords":{}}],["sensor.tibber_home_price_trend_next_3h",{"_index":1200,"title":{},"content":{"147":{"position":[[1433,38]]}},"keywords":{}}],["sensor.tibber_home_tomorrow_data",{"_index":372,"title":{},"content":{"9":{"position":[[3737,32]]}},"keywords":{}}],["sensor.tibber_home_volatility_today",{"_index":590,"title":{},"content":{"41":{"position":[[619,35]]},"43":{"position":[[568,35]]},"44":{"position":[[537,35]]},"105":{"position":[[221,35]]},"108":{"position":[[43,35]]},"146":{"position":[[139,35]]},"147":{"position":[[1229,35]]},"149":{"position":[[1689,35]]},"180":{"position":[[1835,36],[2510,35]]}},"keywords":{}}],["sensor.tibber_home_volatility_tomorrow",{"_index":1558,"title":{},"content":{"180":{"position":[[1894,39]]}},"keywords":{}}],["sensor.washing_machine_st",{"_index":667,"title":{},"content":{"44":{"position":[[415,28],[956,28]]}},"keywords":{}}],["sensor.water_heater_temperatur",{"_index":623,"title":{},"content":{"42":{"position":[[595,31]]}},"keywords":{}}],["sensorsautom",{"_index":1047,"title":{},"content":{"117":{"position":[[101,17]]},"152":{"position":[[48,17]]}},"keywords":{}}],["sensorstempl",{"_index":708,"title":{},"content":{"45":{"position":[[1128,15]]}},"keywords":{}}],["separ",{"_index":302,"title":{},"content":{"9":{"position":[[1299,8]]},"44":{"position":[[811,8]]},"45":{"position":[[1119,8]]},"57":{"position":[[210,8]]},"165":{"position":[[673,8],[750,10]]}},"keywords":{}}],["seri",{"_index":269,"title":{"19":{"position":[[16,8]]},"20":{"position":[[9,8]]}},"content":{"9":{"position":[[345,7],[1291,7],[1308,6],[4024,6],[4095,6]]},"132":{"position":[[1875,7]]}},"keywords":{}}],["serv",{"_index":1263,"title":{},"content":{"157":{"position":[[512,5]]}},"keywords":{}}],["servic",{"_index":133,"title":{"6":{"position":[[8,10]]}},"content":{"8":{"position":[[574,8],[1557,8],[2052,8],[2305,8],[2809,9]]},"9":{"position":[[385,7],[1783,8],[3185,8],[3444,8]]},"10":{"position":[[106,8]]},"15":{"position":[[118,8]]},"16":{"position":[[172,8]]},"17":{"position":[[155,8]]},"41":{"position":[[812,8],[886,8]]},"42":{"position":[[673,8],[775,8]]},"43":{"position":[[771,8],[834,8]]},"44":{"position":[[593,8],[716,8],[1166,8],[1262,8]]},"45":{"position":[[458,8]]},"47":{"position":[[53,7],[282,7],[441,7],[612,7]]},"50":{"position":[[48,8]]},"51":{"position":[[70,8],[519,8]]},"57":{"position":[[77,8]]},"69":{"position":[[255,8]]},"70":{"position":[[224,8]]},"119":{"position":[[423,8]]},"131":{"position":[[724,8],[1072,7]]},"132":{"position":[[236,7],[490,7],[820,8],[951,7],[1184,7],[1364,8],[1650,7],[1727,7],[2063,8],[2099,8],[2197,9],[2209,8]]},"175":{"position":[[531,8]]},"180":{"position":[[2600,8],[3022,8],[3535,8]]}},"keywords":{}}],["services.yaml",{"_index":252,"title":{},"content":{"8":{"position":[[2765,13]]}},"keywords":{}}],["servicesent",{"_index":1061,"title":{},"content":{"120":{"position":[[105,13]]}},"keywords":{}}],["set",{"_index":117,"title":{"164":{"position":[[6,9]]}},"content":{"5":{"position":[[158,3]]},"42":{"position":[[993,4]]},"57":{"position":[[52,8]]},"116":{"position":[[175,3]]},"119":{"position":[[85,7]]},"120":{"position":[[80,8]]},"132":{"position":[[921,10],[1339,8],[1603,9]]},"157":{"position":[[459,4]]},"166":{"position":[[57,8]]},"167":{"position":[[263,8],[396,7]]},"170":{"position":[[251,9],[309,3]]},"171":{"position":[[21,9],[36,3],[217,7]]},"173":{"position":[[674,8]]},"180":{"position":[[240,3],[392,3]]}},"keywords":{}}],["settingclean",{"_index":317,"title":{},"content":{"9":{"position":[[1686,12]]}},"keywords":{}}],["settingsconfigur",{"_index":1133,"title":{},"content":{"132":{"position":[[1488,17]]}},"keywords":{}}],["setup",{"_index":556,"title":{"34":{"position":[[8,6]]}},"content":{},"keywords":{}}],["shade",{"_index":515,"title":{},"content":{"22":{"position":[[193,8]]}},"keywords":{}}],["shift",{"_index":74,"title":{},"content":{"3":{"position":[[250,5]]},"9":{"position":[[2334,6]]}},"keywords":{}}],["short",{"_index":1503,"title":{},"content":{"178":{"position":[[15,5]]}},"keywords":{}}],["short/long",{"_index":1415,"title":{},"content":{"166":{"position":[[462,10]]}},"keywords":{}}],["shorter",{"_index":1267,"title":{},"content":{"157":{"position":[[769,7]]},"164":{"position":[[886,7]]},"166":{"position":[[625,7]]}},"keywords":{}}],["shouldn't",{"_index":1235,"title":{},"content":{"150":{"position":[[486,9]]}},"keywords":{}}],["show",{"_index":222,"title":{"64":{"position":[[8,4]]}},"content":{"8":{"position":[[1916,4]]},"9":{"position":[[1584,7],[2051,4],[4280,7],[4323,5]]},"13":{"position":[[657,5],[714,5]]},"15":{"position":[[526,7]]},"16":{"position":[[498,5],[639,5],[676,5]]},"17":{"position":[[457,6],[573,5],[628,5],[681,5],[723,5],[765,5],[806,5]]},"22":{"position":[[67,7],[396,5]]},"28":{"position":[[86,5]]},"32":{"position":[[115,5],[196,5]]},"40":{"position":[[16,4]]},"51":{"position":[[331,5],[387,5],[433,5],[845,5]]},"52":{"position":[[276,7]]},"55":{"position":[[133,4]]},"72":{"position":[[13,7]]},"73":{"position":[[1,4]]},"90":{"position":[[77,7]]},"102":{"position":[[117,4],[220,4],[309,4],[375,4]]},"114":{"position":[[84,5],[125,4],[333,5],[407,5],[479,5]]},"115":{"position":[[68,4]]},"116":{"position":[[335,5]]},"131":{"position":[[659,5]]},"132":{"position":[[752,5]]},"140":{"position":[[721,4]]},"160":{"position":[[406,4]]},"161":{"position":[[1082,4],[1568,4],[1694,5]]},"164":{"position":[[609,4],[810,4],[881,4],[1142,4],[1185,4]]},"165":{"position":[[46,4],[261,4],[326,4]]},"166":{"position":[[1424,4]]},"167":{"position":[[475,5]]},"179":{"position":[[416,6]]}},"keywords":{}}],["show_stat",{"_index":854,"title":{},"content":{"75":{"position":[[94,11]]},"107":{"position":[[108,11]]},"111":{"position":[[163,11]]},"112":{"position":[[239,11]]},"143":{"position":[[198,11],[485,11]]},"147":{"position":[[260,11],[479,11],[759,11],[999,11],[1282,11],[1492,11]]},"149":{"position":[[785,11],[1349,11],[1748,11],[2231,11]]}},"keywords":{}}],["shown",{"_index":1515,"title":{},"content":{"179":{"position":[[625,5]]}},"keywords":{}}],["signific",{"_index":1561,"title":{},"content":{"180":{"position":[[2089,11]]}},"keywords":{}}],["significantli",{"_index":1088,"title":{},"content":{"126":{"position":[[262,13],[359,13]]},"183":{"position":[[122,13],[235,13]]}},"keywords":{}}],["similar",{"_index":1554,"title":{},"content":{"180":{"position":[[1589,7]]}},"keywords":{}}],["simpl",{"_index":437,"title":{"175":{"position":[[12,6]]}},"content":{"15":{"position":[[14,6]]},"72":{"position":[[1,6]]},"141":{"position":[[151,7]]},"166":{"position":[[432,9]]}},"keywords":{}}],["simplest",{"_index":682,"title":{},"content":{"45":{"position":[[5,8]]}},"keywords":{}}],["simpli",{"_index":1278,"title":{},"content":{"157":{"position":[[1038,6]]}},"keywords":{}}],["simplic",{"_index":1184,"title":{},"content":{"141":{"position":[[1098,10]]}},"keywords":{}}],["size",{"_index":901,"title":{},"content":{"80":{"position":[[211,5]]}},"keywords":{}}],["sleep",{"_index":1023,"title":{},"content":{"114":{"position":[[487,5]]}},"keywords":{}}],["sleep/inact",{"_index":1019,"title":{},"content":{"114":{"position":[[249,14]]}},"keywords":{}}],["slider",{"_index":1443,"title":{},"content":{"170":{"position":[[394,7]]}},"keywords":{}}],["slightli",{"_index":1307,"title":{},"content":{"161":{"position":[[804,8]]},"177":{"position":[[444,8]]},"178":{"position":[[206,8]]}},"keywords":{}}],["slot",{"_index":935,"title":{},"content":{"92":{"position":[[26,4]]}},"keywords":{}}],["small",{"_index":1252,"title":{"178":{"position":[[19,5]]}},"content":{"154":{"position":[[134,5]]},"180":{"position":[[1989,5]]}},"keywords":{}}],["smart",{"_index":22,"title":{},"content":{"1":{"position":[[200,5]]},"43":{"position":[[107,5]]},"45":{"position":[[116,5]]}},"keywords":{}}],["smooth",{"_index":1314,"title":{},"content":{"161":{"position":[[1180,10],[1245,8],[1370,9],[1703,9]]},"178":{"position":[[329,9]]},"179":{"position":[[706,8]]}},"keywords":{}}],["solut",{"_index":258,"title":{},"content":{"9":{"position":[[103,8],[808,10]]},"47":{"position":[[143,8]]},"62":{"position":[[137,10]]},"119":{"position":[[612,9]]},"171":{"position":[[239,8]]},"177":{"position":[[89,10]]},"178":{"position":[[64,10]]},"180":{"position":[[4248,9]]}},"keywords":{}}],["sometim",{"_index":788,"title":{"62":{"position":[[9,9]]}},"content":{"169":{"position":[[1,10]]}},"keywords":{}}],["soon",{"_index":376,"title":{},"content":{"9":{"position":[[3897,4]]},"34":{"position":[[8,7]]},"35":{"position":[[8,7]]},"36":{"position":[[8,7]]},"39":{"position":[[8,7]]},"46":{"position":[[8,7]]},"83":{"position":[[8,7]]},"84":{"position":[[8,7]]},"85":{"position":[[8,7]]},"114":{"position":[[519,5]]},"127":{"position":[[8,7]]},"128":{"position":[[8,7]]},"129":{"position":[[8,7]]},"134":{"position":[[8,7]]},"135":{"position":[[8,7]]}},"keywords":{}}],["sort",{"_index":910,"title":{},"content":{"81":{"position":[[207,5]]}},"keywords":{}}],["space",{"_index":499,"title":{},"content":{"21":{"position":[[204,5]]}},"keywords":{}}],["span",{"_index":75,"title":{},"content":{"3":{"position":[[284,4]]},"9":{"position":[[2641,4]]},"17":{"position":[[367,4]]},"41":{"position":[[1173,6],[1248,6]]},"51":{"position":[[420,5],[744,4]]},"180":{"position":[[1055,5],[1212,5],[1543,4]]}},"keywords":{}}],["specif",{"_index":280,"title":{},"content":{"9":{"position":[[612,8]]},"13":{"position":[[74,8]]},"47":{"position":[[491,8]]},"150":{"position":[[204,8],[459,8]]},"160":{"position":[[122,8]]}},"keywords":{}}],["specifi",{"_index":996,"title":{},"content":{"107":{"position":[[167,7]]}},"keywords":{}}],["speed",{"_index":1480,"title":{},"content":{"173":{"position":[[32,5]]}},"keywords":{}}],["spike",{"_index":1272,"title":{},"content":{"157":{"position":[[849,6]]},"161":{"position":[[1174,5],[1207,6],[1404,5]]},"178":{"position":[[312,6],[423,7]]},"179":{"position":[[699,6]]}},"keywords":{}}],["split",{"_index":1251,"title":{"178":{"position":[[8,5]]}},"content":{"154":{"position":[[123,5]]},"161":{"position":[[1490,5]]},"165":{"position":[[1131,5]]}},"keywords":{}}],["spot",{"_index":1526,"title":{},"content":{"180":{"position":[[295,4]]}},"keywords":{}}],["squar",{"_index":883,"title":{},"content":{"78":{"position":[[55,7]]}},"keywords":{}}],["stabil",{"_index":98,"title":{},"content":{"4":{"position":[[262,9]]},"100":{"position":[[30,9]]}},"keywords":{}}],["stabilitybinari",{"_index":979,"title":{},"content":{"102":{"position":[[351,15]]}},"keywords":{}}],["stabl",{"_index":631,"title":{},"content":{"42":{"position":[[957,6]]},"160":{"position":[[411,6]]}},"keywords":{}}],["stack",{"_index":547,"title":{},"content":{"29":{"position":[[20,5],[69,5]]},"73":{"position":[[65,5]]},"77":{"position":[[47,5]]},"78":{"position":[[170,5],[338,5]]},"147":{"position":[[91,5],[146,5],[643,5],[1181,5]]}},"keywords":{}}],["standard",{"_index":993,"title":{"105":{"position":[[0,8]]}},"content":{"105":{"position":[[37,8]]},"148":{"position":[[39,8]]},"149":{"position":[[227,8]]},"151":{"position":[[422,8]]}},"keywords":{}}],["start",{"_index":11,"title":{"120":{"position":[[9,6]]},"155":{"position":[[6,6]]}},"content":{"1":{"position":[[88,5]]},"9":{"position":[[72,8],[4668,8]]},"41":{"position":[[945,7],[1300,5]]},"43":{"position":[[893,8]]},"44":{"position":[[352,5],[1050,7],[1391,7]]},"47":{"position":[[106,8]]},"51":{"position":[[749,6]]},"61":{"position":[[114,5]]},"69":{"position":[[228,5]]},"77":{"position":[[305,6]]},"157":{"position":[[1058,8]]},"164":{"position":[[454,5]]},"166":{"position":[[85,5],[300,5]]},"179":{"position":[[120,6],[174,5]]}},"keywords":{}}],["starthow",{"_index":1245,"title":{},"content":{"154":{"position":[[7,8]]}},"keywords":{}}],["state",{"_index":583,"title":{"115":{"position":[[0,5]]},"141":{"position":[[27,5]]}},"content":{"41":{"position":[[435,5],[732,5],[779,6]]},"42":{"position":[[288,5]]},"43":{"position":[[213,5]]},"44":{"position":[[254,5],[398,5],[444,6],[939,5],[1074,5],[1134,6]]},"45":{"position":[[157,5]]},"69":{"position":[[84,5]]},"70":{"position":[[134,5]]},"80":{"position":[[118,5],[248,5]]},"81":{"position":[[188,6],[221,5]]},"88":{"position":[[184,5]]},"90":{"position":[[50,5]]},"98":{"position":[[1,6],[111,5]]},"102":{"position":[[89,6]]},"103":{"position":[[69,6]]},"105":{"position":[[363,6]]},"112":{"position":[[389,5],[463,5],[552,5]]},"114":{"position":[[55,7],[67,6],[114,6]]},"115":{"position":[[19,6]]},"116":{"position":[[41,5],[125,6],[148,5]]},"119":{"position":[[251,7],[289,5]]},"132":{"position":[[61,6]]},"138":{"position":[[117,6]]},"139":{"position":[[402,5]]},"140":{"position":[[132,6],[688,5],[767,6]]},"141":{"position":[[201,5],[773,5]]},"143":{"position":[[305,5],[349,5],[592,5],[616,6]]},"144":{"position":[[72,5],[216,5]]},"145":{"position":[[357,5]]},"146":{"position":[[280,5],[429,5],[566,5]]},"147":{"position":[[352,5],[571,5],[872,5],[1114,5],[1374,5],[1584,5]]},"148":{"position":[[280,5]]},"149":{"position":[[536,5],[604,5],[1168,5],[1423,5],[2063,5],[2483,5]]},"150":{"position":[[243,5],[427,5]]},"151":{"position":[[609,5]]},"175":{"position":[[441,5]]},"180":{"position":[[2381,5],[2791,5],[3234,5]]}},"keywords":{}}],["state_attr",{"_index":919,"title":{},"content":{"87":{"position":[[182,12]]}},"keywords":{}}],["state_attr('binary_sensor.tibber_home_best_price_period",{"_index":687,"title":{},"content":{"45":{"position":[[348,57]]},"145":{"position":[[268,57]]},"146":{"position":[[590,57]]},"180":{"position":[[3425,57]]}},"keywords":{}}],["state_attr('sensor.tibber_home_current_interval_pric",{"_index":891,"title":{},"content":{"79":{"position":[[179,55]]}},"keywords":{}}],["state_attr('sensor.tibber_home_current_interval_price_level",{"_index":1190,"title":{},"content":{"144":{"position":[[240,61],[351,61]]},"145":{"position":[[534,61],[639,61]]},"146":{"position":[[304,61]]}},"keywords":{}}],["state_attr('sensor.tibber_home_volatility_today",{"_index":1196,"title":{},"content":{"146":{"position":[[453,49]]}},"keywords":{}}],["statement",{"_index":1183,"title":{},"content":{"141":{"position":[[740,10]]}},"keywords":{}}],["states('sensor.tibber_home_current_interval_price_ct",{"_index":602,"title":{},"content":{"41":{"position":[[982,54]]},"43":{"position":[[905,54]]}},"keywords":{}}],["states('sensor.tibber_home_volatility_today",{"_index":604,"title":{},"content":{"41":{"position":[[1062,45]]},"43":{"position":[[986,45]]}},"keywords":{}}],["states)verifi",{"_index":1239,"title":{},"content":{"151":{"position":[[214,13]]}},"keywords":{}}],["statesensor",{"_index":1046,"title":{},"content":{"117":{"position":[[49,12]]}},"keywords":{}}],["statesth",{"_index":1040,"title":{},"content":{"116":{"position":[[310,9]]}},"keywords":{}}],["static",{"_index":333,"title":{"15":{"position":[[18,9]]}},"content":{"9":{"position":[[2187,6],[3170,7]]},"13":{"position":[[139,6],[219,6],[590,8]]},"15":{"position":[[381,6]]},"32":{"position":[[12,8]]}},"keywords":{}}],["statist",{"_index":53,"title":{"4":{"position":[[0,11]]},"128":{"position":[[0,11]]}},"content":{"2":{"position":[[384,11]]},"78":{"position":[[375,10]]},"87":{"position":[[148,11]]},"95":{"position":[[194,11]]},"97":{"position":[[9,11]]},"98":{"position":[[168,10]]},"180":{"position":[[3676,11]]}},"keywords":{}}],["statu",{"_index":847,"title":{"73":{"position":[[7,6]]}},"content":{"78":{"position":[[215,6]]},"126":{"position":[[491,7]]},"147":{"position":[[120,6]]}},"keywords":{}}],["status.tibber.comintegr",{"_index":807,"title":{},"content":{"64":{"position":[[137,28]]}},"keywords":{}}],["stay",{"_index":656,"title":{},"content":{"43":{"position":[[1280,5]]},"161":{"position":[[392,4]]}},"keywords":{}}],["step",{"_index":123,"title":{"30":{"position":[[5,6]]},"161":{"position":[[0,4],[8,4]]}},"content":{"5":{"position":[[208,6]]},"11":{"position":[[334,6],[381,5]]},"132":{"position":[[566,5],[1462,4]]},"136":{"position":[[97,5]]},"170":{"position":[[156,5]]},"172":{"position":[[432,4],[739,4],[765,4],[791,4]]}},"keywords":{}}],["still",{"_index":250,"title":{},"content":{"8":{"position":[[2749,5]]},"11":{"position":[[11,5]]},"70":{"position":[[293,5]]},"173":{"position":[[431,5]]},"177":{"position":[[245,5]]}},"keywords":{}}],["stop",{"_index":659,"title":{},"content":{"44":{"position":[[26,8]]},"172":{"position":[[1292,6]]}},"keywords":{}}],["store",{"_index":251,"title":{},"content":{"8":{"position":[[2755,6]]},"132":{"position":[[692,6]]}},"keywords":{}}],["strategi",{"_index":646,"title":{"166":{"position":[[9,9]]}},"content":{"43":{"position":[[400,9]]}},"keywords":{}}],["strategy"",{"_index":639,"title":{},"content":{"43":{"position":[[113,14]]}},"keywords":{}}],["strict",{"_index":793,"title":{},"content":{"62":{"position":[[129,6]]},"91":{"position":[[61,6]]},"166":{"position":[[1465,7]]},"167":{"position":[[120,6],[190,6]]},"169":{"position":[[12,6]]},"173":{"position":[[833,7]]},"177":{"position":[[392,6]]}},"keywords":{}}],["strict)rang",{"_index":1398,"title":{},"content":{"165":{"position":[[980,14]]}},"keywords":{}}],["stricter",{"_index":1419,"title":{},"content":{"166":{"position":[[905,8],[1193,8]]}},"keywords":{}}],["struggl",{"_index":1448,"title":{},"content":{"170":{"position":[[635,9]]}},"keywords":{}}],["stuck",{"_index":1456,"title":{},"content":{"171":{"position":[[202,5]]}},"keywords":{}}],["style",{"_index":389,"title":{},"content":{"9":{"position":[[4703,8]]},"75":{"position":[[111,7]]},"80":{"position":[[180,6],[312,6]]},"112":{"position":[[314,7]]},"140":{"position":[[59,8]]},"143":{"position":[[230,7],[517,7]]},"144":{"position":[[180,6]]},"145":{"position":[[223,6],[489,6]]},"146":{"position":[[239,6]]},"147":{"position":[[277,7],[496,7],[797,7],[1039,7],[1299,7],[1509,7]]},"149":{"position":[[817,7],[1387,7],[1765,7],[2248,7]]},"151":{"position":[[79,7]]}},"keywords":{}}],["subscript",{"_index":401,"title":{"58":{"position":[[32,14]]}},"content":{"10":{"position":[[59,14],[305,15]]},"66":{"position":[[44,13]]}},"keywords":{}}],["substitut",{"_index":1170,"title":{},"content":{"141":{"position":[[128,13]]}},"keywords":{}}],["success",{"_index":1145,"title":{},"content":{"138":{"position":[[165,7],[245,7],[341,7]]},"139":{"position":[[32,7]]},"141":{"position":[[606,7]]},"148":{"position":[[94,7]]},"149":{"position":[[246,7]]},"172":{"position":[[1265,8]]}},"keywords":{}}],["such",{"_index":1562,"title":{},"content":{"180":{"position":[[2148,4]]}},"keywords":{}}],["suddenli",{"_index":1518,"title":{},"content":{"180":{"position":[[39,8]]}},"keywords":{}}],["suggest",{"_index":1104,"title":{},"content":{"131":{"position":[[816,9],[879,9]]}},"keywords":{}}],["summari",{"_index":158,"title":{},"content":{"8":{"position":[[333,9],[2019,9]]},"180":{"position":[[4077,8]]}},"keywords":{}}],["summer",{"_index":743,"title":{},"content":{"55":{"position":[[95,8]]}},"keywords":{}}],["support",{"_index":107,"title":{"5":{"position":[[11,8]]},"140":{"position":[[14,7]]}},"content":{"8":{"position":[[294,8]]},"9":{"position":[[671,7]]},"121":{"position":[[512,7]]},"141":{"position":[[106,8]]},"143":{"position":[[34,8]]},"145":{"position":[[20,7]]},"150":{"position":[[106,7]]},"151":{"position":[[63,8],[254,8]]},"165":{"position":[[497,8]]}},"keywords":{}}],["sure",{"_index":1236,"title":{},"content":{"151":{"position":[[33,4]]}},"keywords":{}}],["swing",{"_index":965,"title":{},"content":{"100":{"position":[[91,6]]}},"keywords":{}}],["switch",{"_index":445,"title":{},"content":{"16":{"position":[[53,8]]},"151":{"position":[[338,9]]},"180":{"position":[[1648,9]]}},"keywords":{}}],["switch.dishwash",{"_index":836,"title":{},"content":{"69":{"position":[[298,17]]},"175":{"position":[[574,17]]},"180":{"position":[[2635,17]]}},"keywords":{}}],["switch.dishwasher_smart_plug",{"_index":599,"title":{},"content":{"41":{"position":[[855,28]]}},"keywords":{}}],["switch.ev_charg",{"_index":650,"title":{},"content":{"43":{"position":[[814,17]]},"70":{"position":[[268,17]]},"180":{"position":[[3570,17]]}},"keywords":{}}],["switch.turn_off",{"_index":629,"title":{},"content":{"42":{"position":[[784,15]]},"70":{"position":[[233,15]]}},"keywords":{}}],["switch.turn_on",{"_index":597,"title":{},"content":{"41":{"position":[[821,14]]},"42":{"position":[[682,14]]},"43":{"position":[[780,14]]},"69":{"position":[[264,14]]},"175":{"position":[[540,14]]},"180":{"position":[[2609,14],[3031,14],[3544,14]]}},"keywords":{}}],["switch.water_heat",{"_index":627,"title":{},"content":{"42":{"position":[[716,19],[819,19]]},"180":{"position":[[3057,19]]}},"keywords":{}}],["symptom",{"_index":1497,"title":{},"content":{"177":{"position":[[1,8]]},"178":{"position":[[1,8]]},"180":{"position":[[1,8]]}},"keywords":{}}],["system",{"_index":1471,"title":{},"content":{"172":{"position":[[639,6]]}},"keywords":{}}],["t",{"_index":961,"title":{"99":{"position":[[0,2]]}},"content":{},"keywords":{}}],["tabl",{"_index":558,"title":{"38":{"position":[[0,5]]},"154":{"position":[[0,5]]}},"content":{},"keywords":{}}],["tailor",{"_index":712,"title":{},"content":{"47":{"position":[[474,8]]}},"keywords":{}}],["target",{"_index":598,"title":{},"content":{"41":{"position":[[836,7]]},"42":{"position":[[697,7],[800,7]]},"43":{"position":[[795,7]]},"44":{"position":[[615,7],[747,7],[1198,7]]},"45":{"position":[[491,7]]},"69":{"position":[[279,7]]},"70":{"position":[[249,7]]},"97":{"position":[[202,6]]},"170":{"position":[[671,6]]},"175":{"position":[[555,7]]},"182":{"position":[[427,6]]}},"keywords":{}}],["task",{"_index":1374,"title":{},"content":{"164":{"position":[[919,6]]}},"keywords":{}}],["tasks)cheap",{"_index":35,"title":{},"content":{"2":{"position":[[124,11]]}},"keywords":{}}],["tasks)peak",{"_index":72,"title":{},"content":{"3":{"position":[[178,10]]}},"keywords":{}}],["technic",{"_index":709,"title":{},"content":{"47":{"position":[[235,9]]},"181":{"position":[[41,9]]}},"keywords":{}}],["temperatur",{"_index":622,"title":{},"content":{"42":{"position":[[545,11]]},"45":{"position":[[534,12],[558,11]]}},"keywords":{}}],["templat",{"_index":297,"title":{},"content":{"9":{"position":[[1163,8],[3711,8],[4492,8]]},"13":{"position":[[402,8],[539,8]]},"16":{"position":[[146,8]]},"17":{"position":[[129,8]]},"25":{"position":[[8,8],[110,8]]},"45":{"position":[[315,8]]},"48":{"position":[[92,8]]},"49":{"position":[[106,8]]},"51":{"position":[[938,8]]},"87":{"position":[[198,10]]},"116":{"position":[[507,8]]},"131":{"position":[[1334,8]]},"139":{"position":[[367,10]]},"151":{"position":[[586,9]]},"180":{"position":[[3392,8]]}},"keywords":{}}],["term",{"_index":125,"title":{},"content":{"5":{"position":[[236,4]]},"98":{"position":[[163,4]]}},"keywords":{}}],["test",{"_index":1440,"title":{},"content":{"170":{"position":[[138,4]]}},"keywords":{}}],["text",{"_index":1025,"title":{},"content":{"115":{"position":[[14,4]]},"141":{"position":[[73,4]]},"143":{"position":[[692,4]]},"145":{"position":[[50,4],[624,4]]}},"keywords":{}}],["that'",{"_index":508,"title":{},"content":{"21":{"position":[[544,6]]}},"keywords":{}}],["themchart",{"_index":1056,"title":{},"content":{"119":{"position":[[458,9]]}},"keywords":{}}],["theme",{"_index":1151,"title":{},"content":{"139":{"position":[[129,5],[205,5],[278,6]]},"148":{"position":[[66,5]]},"149":{"position":[[29,5],[126,6],[163,5],[501,5]]},"150":{"position":[[35,5],[152,5],[193,5],[273,6],[389,5],[508,7]]},"151":{"position":[[248,5],[317,5],[348,6],[398,6],[529,5]]}},"keywords":{}}],["theme'",{"_index":1154,"title":{},"content":{"139":{"position":[[223,7]]},"148":{"position":[[410,7]]}},"keywords":{}}],["themes.yaml",{"_index":1212,"title":{},"content":{"149":{"position":[[183,14]]}},"keywords":{}}],["they'r",{"_index":1289,"title":{},"content":{"160":{"position":[[279,7]]},"161":{"position":[[796,7]]}},"keywords":{}}],["think",{"_index":1286,"title":{},"content":{"160":{"position":[[142,5]]}},"keywords":{}}],["thischeck",{"_index":1505,"title":{},"content":{"178":{"position":[[353,9]]}},"keywords":{}}],["though",{"_index":1521,"title":{},"content":{"180":{"position":[[101,6]]}},"keywords":{}}],["threshold",{"_index":63,"title":{"36":{"position":[[6,11]]},"42":{"position":[[25,10]]},"60":{"position":[[31,12]]}},"content":{"2":{"position":[[487,10]]},"19":{"position":[[30,10],[201,9]]},"42":{"position":[[214,10],[390,10],[932,9]]},"60":{"position":[[49,10],[87,10]]},"94":{"position":[[15,9]]},"97":{"position":[[124,11]]},"120":{"position":[[187,10]]},"152":{"position":[[144,10]]},"165":{"position":[[463,11],[609,10],[709,10]]},"180":{"position":[[2986,10],[4297,11]]},"182":{"position":[[224,9]]}},"keywords":{}}],["thresholdnorm",{"_index":475,"title":{},"content":{"19":{"position":[[114,15]]}},"keywords":{}}],["thresholdsbest/peak",{"_index":1071,"title":{},"content":{"121":{"position":[[200,19]]}},"keywords":{}}],["thresholdshigh",{"_index":477,"title":{},"content":{"19":{"position":[[146,14]]}},"keywords":{}}],["thresholdslevel",{"_index":379,"title":{},"content":{"9":{"position":[[4076,16]]}},"keywords":{}}],["thresholdsperiod",{"_index":1050,"title":{},"content":{"119":{"position":[[128,16]]}},"keywords":{}}],["thresholdsseason",{"_index":775,"title":{},"content":{"60":{"position":[[233,18]]}},"keywords":{}}],["thresholdsy",{"_index":772,"title":{},"content":{"60":{"position":[[180,13]]}},"keywords":{}}],["through",{"_index":1121,"title":{},"content":{"132":{"position":[[527,7],[1432,7],[1764,7]]}},"keywords":{}}],["throughout",{"_index":718,"title":{},"content":{"51":{"position":[[498,10]]}},"keywords":{}}],["thumb",{"_index":976,"title":{},"content":{"102":{"position":[[225,6]]}},"keywords":{}}],["ti",{"_index":824,"title":{},"content":{"66":{"position":[[132,5]]}},"keywords":{}}],["tibber",{"_index":109,"title":{"57":{"position":[[19,6]]},"58":{"position":[[25,6]]}},"content":{"5":{"position":[[22,6]]},"10":{"position":[[83,6],[298,6]]},"55":{"position":[[36,6]]},"57":{"position":[[88,6]]},"58":{"position":[[23,6],[125,6]]},"66":{"position":[[37,6]]},"67":{"position":[[14,6],[200,6]]},"87":{"position":[[42,7]]},"89":{"position":[[213,6]]},"119":{"position":[[101,6]]},"120":{"position":[[119,6]]},"132":{"position":[[1375,6],[1412,6]]},"183":{"position":[[5,6]]}},"keywords":{}}],["tibber'",{"_index":21,"title":{},"content":{"1":{"position":[[191,8]]}},"keywords":{}}],["tibber_prices.get_apexcharts_yaml",{"_index":254,"title":{"9":{"position":[[0,34]]}},"content":{"9":{"position":[[1792,33],[3194,33],[3453,33]]},"15":{"position":[[127,33]]},"16":{"position":[[181,33]]},"17":{"position":[[164,33]]},"47":{"position":[[19,33],[578,33]]},"50":{"position":[[57,33]]},"51":{"position":[[79,33],[528,33]]},"131":{"position":[[1105,33]]}},"keywords":{}}],["tibber_prices.get_chartdata",{"_index":135,"title":{"8":{"position":[[0,28]]}},"content":{"8":{"position":[[583,27],[1566,27],[2061,27],[2314,27],[2692,28]]},"11":{"position":[[98,27],[441,27]]},"132":{"position":[[208,27],[1622,27],[2218,27]]},"181":{"position":[[140,27]]}},"keywords":{}}],["tibber_prices.refresh_user_data",{"_index":396,"title":{"10":{"position":[[0,32]]}},"content":{"10":{"position":[[115,31]]}},"keywords":{}}],["tighten",{"_index":814,"title":{},"content":{"65":{"position":[[110,10]]}},"keywords":{}}],["time",{"_index":12,"title":{},"content":{"1":{"position":[[94,4]]},"3":{"position":[[70,4],[204,4]]},"9":{"position":[[328,4],[2614,4],[3093,4]]},"13":{"position":[[491,4]]},"17":{"position":[[19,4],[493,4],[531,4],[934,5]]},"22":{"position":[[274,4]]},"44":{"position":[[1428,5]]},"47":{"position":[[268,4]]},"51":{"position":[[875,4],[978,4]]},"52":{"position":[[292,4]]},"69":{"position":[[188,4]]},"88":{"position":[[43,4]]},"92":{"position":[[21,4]]},"95":{"position":[[20,4]]},"100":{"position":[[109,6]]},"114":{"position":[[358,4]]},"156":{"position":[[23,4]]},"160":{"position":[[100,4],[191,5],[441,5]]},"161":{"position":[[171,5],[330,5],[456,4],[757,5]]},"164":{"position":[[373,5],[1194,4]]},"167":{"position":[[298,4],[409,4]]},"172":{"position":[[852,5]]},"173":{"position":[[192,4]]},"175":{"position":[[25,4]]},"179":{"position":[[180,4],[241,4]]},"180":{"position":[[277,7]]}},"keywords":{}}],["timelin",{"_index":1280,"title":{"158":{"position":[[8,9]]}},"content":{"162":{"position":[[1,8]]}},"keywords":{}}],["timer",{"_index":1021,"title":{},"content":{"114":{"position":[[415,5]]}},"keywords":{}}],["timer/wait",{"_index":1017,"title":{},"content":{"114":{"position":[[210,13]]}},"keywords":{}}],["timesdecreas",{"_index":1380,"title":{},"content":{"164":{"position":[[1162,13]]}},"keywords":{}}],["timestamp",{"_index":918,"title":{},"content":{"87":{"position":[[135,12]]},"131":{"position":[[760,10]]},"132":{"position":[[1119,10]]}},"keywords":{}}],["timesus",{"_index":1266,"title":{},"content":{"157":{"position":[[676,8]]}},"keywords":{}}],["tip",{"_index":530,"title":{"26":{"position":[[0,4]]}},"content":{"164":{"position":[[383,4]]}},"keywords":{}}],["titl",{"_index":542,"title":{},"content":{"28":{"position":[[97,6],[114,5]]},"72":{"position":[[71,6]]},"78":{"position":[[200,6],[368,6]]},"81":{"position":[[88,6]]}},"keywords":{}}],["today",{"_index":154,"title":{},"content":{"8":{"position":[[223,6],[1125,6],[1794,5],[1864,5]]},"9":{"position":[[1861,5],[1890,6],[2169,6],[3263,5],[3919,6],[4588,7]]},"13":{"position":[[584,5]]},"15":{"position":[[196,5],[509,5]]},"16":{"position":[[682,5]]},"21":{"position":[[760,7]]},"25":{"position":[[165,7]]},"32":{"position":[[1,5],[272,5]]},"50":{"position":[[126,5]]},"51":{"position":[[337,5]]},"95":{"position":[[158,6]]},"149":{"position":[[1742,5]]}},"keywords":{}}],["today'",{"_index":364,"title":{"15":{"position":[[3,7]]}},"content":{"9":{"position":[[3155,7]]},"13":{"position":[[158,7]]},"55":{"position":[[157,7]]},"77":{"position":[[159,7]]}},"keywords":{}}],["today+tomorrow",{"_index":339,"title":{},"content":{"9":{"position":[[2369,14]]},"13":{"position":[[322,15]]},"16":{"position":[[90,15],[439,14]]}},"keywords":{}}],["todayaft",{"_index":450,"title":{},"content":{"16":{"position":[[657,10]]}},"keywords":{}}],["todayfix",{"_index":716,"title":{},"content":{"51":{"position":[[405,10]]}},"keywords":{}}],["togeth",{"_index":1005,"title":{},"content":{"112":{"position":[[26,8]]}},"keywords":{}}],["token",{"_index":765,"title":{},"content":{"58":{"position":[[54,5]]},"64":{"position":[[21,5],[43,5]]},"67":{"position":[[73,5]]},"87":{"position":[[5,6]]},"119":{"position":[[112,5]]},"120":{"position":[[130,5]]}},"keywords":{}}],["toler",{"_index":1393,"title":{},"content":{"165":{"position":[[859,9]]},"178":{"position":[[107,9]]},"179":{"position":[[793,9]]},"182":{"position":[[335,9]]}},"keywords":{}}],["tomorrow",{"_index":199,"title":{"67":{"position":[[0,8]]}},"content":{"8":{"position":[[1132,8],[1736,8],[1815,8]]},"9":{"position":[[1897,9],[2176,10],[3926,9],[4596,9]]},"13":{"position":[[210,8],[265,8]]},"15":{"position":[[458,8],[478,9]]},"21":{"position":[[768,9]]},"25":{"position":[[173,9]]},"32":{"position":[[233,8]]},"51":{"position":[[281,8],[358,8]]},"95":{"position":[[165,9]]}},"keywords":{}}],["tomorrow'",{"_index":430,"title":{"55":{"position":[[16,10]]}},"content":{"13":{"position":[[238,10]]},"15":{"position":[[534,10]]},"16":{"position":[[549,10]]},"55":{"position":[[1,10]]}},"keywords":{}}],["tomorrow)pric",{"_index":155,"title":{},"content":{"8":{"position":[[230,14]]}},"keywords":{}}],["tomorrowi",{"_index":451,"title":{},"content":{"16":{"position":[[690,9]]}},"keywords":{}}],["tomorrowwhen",{"_index":220,"title":{},"content":{"8":{"position":[[1802,12]]},"51":{"position":[[345,12]]}},"keywords":{}}],["tool",{"_index":246,"title":{},"content":{"8":{"position":[[2650,5]]},"9":{"position":[[4909,5]]},"103":{"position":[[61,5]]},"116":{"position":[[117,5],[302,5]]},"140":{"position":[[124,5]]},"151":{"position":[[206,5]]}},"keywords":{}}],["top",{"_index":494,"title":{},"content":{"20":{"position":[[197,3]]},"80":{"position":[[187,4],[319,4]]}},"keywords":{}}],["topic",{"_index":1254,"title":{"181":{"position":[[9,7]]}},"content":{"154":{"position":[[193,6]]}},"keywords":{}}],["total",{"_index":959,"title":{},"content":{"98":{"position":[[193,6]]},"172":{"position":[[229,5]]}},"keywords":{}}],["track",{"_index":110,"title":{},"content":{"5":{"position":[[38,5]]},"44":{"position":[[695,5],[1380,5]]}},"keywords":{}}],["trackerreleas",{"_index":1081,"title":{},"content":{"122":{"position":[[24,14]]}},"keywords":{}}],["trackingstatist",{"_index":1067,"title":{},"content":{"121":{"position":[[67,19]]}},"keywords":{}}],["trail",{"_index":87,"title":{},"content":{"4":{"position":[[56,8]]},"99":{"position":[[1,8]]},"183":{"position":[[85,8]]}},"keywords":{}}],["trailing/lead",{"_index":1068,"title":{},"content":{"121":{"position":[[98,16]]}},"keywords":{}}],["transform",{"_index":276,"title":{},"content":{"9":{"position":[[486,16]]}},"keywords":{}}],["transit",{"_index":681,"title":{},"content":{"44":{"position":[[1530,12]]},"180":{"position":[[1635,12]]}},"keywords":{}}],["translat",{"_index":391,"title":{},"content":{"9":{"position":[[4759,10]]},"170":{"position":[[458,10]]}},"keywords":{}}],["transpar",{"_index":727,"title":{},"content":{"52":{"position":[[120,11]]},"141":{"position":[[294,15],[1046,14]]},"149":{"position":[[1596,14]]}},"keywords":{}}],["trend",{"_index":1161,"title":{},"content":{"140":{"position":[[482,5]]},"147":{"position":[[1155,6],[1486,5]]},"161":{"position":[[1424,5]]}},"keywords":{}}],["tri",{"_index":1240,"title":{},"content":{"151":{"position":[[334,3]]},"170":{"position":[[53,3],[494,5]]},"172":{"position":[[37,6],[254,5],[646,6],[1317,3]]},"177":{"position":[[211,3],[417,3]]}},"keywords":{}}],["trick",{"_index":531,"title":{"26":{"position":[[7,7]]}},"content":{},"keywords":{}}],["trigger",{"_index":403,"title":{},"content":{"10":{"position":[[219,7]]},"41":{"position":[[414,8]]},"42":{"position":[[267,8]]},"43":{"position":[[192,8]]},"44":{"position":[[233,8],[918,8],[1411,7],[1485,8]]},"45":{"position":[[136,8]]},"69":{"position":[[63,8]]},"70":{"position":[[113,8]]},"88":{"position":[[259,9]]},"175":{"position":[[420,8]]},"180":{"position":[[2360,8],[2770,8],[3213,8]]}},"keywords":{}}],["troubleshoot",{"_index":799,"title":{"63":{"position":[[0,16]]},"116":{"position":[[0,16]]},"133":{"position":[[0,15]]},"151":{"position":[[0,16]]},"176":{"position":[[0,16]]}},"content":{"70":{"position":[[311,15]]},"123":{"position":[[11,15]]}},"keywords":{}}],["true",{"_index":229,"title":{},"content":{"8":{"position":[[2223,4],[2250,4]]},"9":{"position":[[2044,4],[3640,4],[4240,5]]},"15":{"position":[[249,4]]},"16":{"position":[[324,4]]},"17":{"position":[[304,4]]},"22":{"position":[[28,5]]},"28":{"position":[[92,4]]},"75":{"position":[[106,4]]},"81":{"position":[[236,4]]},"107":{"position":[[120,4]]},"111":{"position":[[175,4]]},"112":{"position":[[251,4]]},"143":{"position":[[210,4],[497,4]]},"147":{"position":[[272,4],[491,4],[771,4],[1011,4],[1294,4],[1504,4]]},"149":{"position":[[797,4],[1361,4],[1760,4],[2243,4]]},"166":{"position":[[183,4]]},"170":{"position":[[26,4]]},"177":{"position":[[157,4],[174,4]]},"179":{"position":[[475,4]]},"182":{"position":[[369,4]]}},"keywords":{}}],["true/fals",{"_index":1579,"title":{},"content":{"182":{"position":[[374,10]]}},"keywords":{}}],["trust",{"_index":648,"title":{},"content":{"43":{"position":[[502,5],[1092,5]]}},"keywords":{}}],["tuesday",{"_index":1453,"title":{},"content":{"171":{"position":[[110,7],[336,8]]}},"keywords":{}}],["tune",{"_index":787,"title":{},"content":{"61":{"position":[[266,6]]},"166":{"position":[[399,7],[723,4]]},"170":{"position":[[362,6]]}},"keywords":{}}],["turn",{"_index":1087,"title":{},"content":{"126":{"position":[[233,5],[330,5]]},"177":{"position":[[60,5]]}},"keywords":{}}],["tweak",{"_index":1403,"title":{"166":{"position":[[0,8]]},"171":{"position":[[37,9]]}},"content":{},"keywords":{}}],["two",{"_index":1210,"title":{},"content":{"149":{"position":[[66,3]]},"173":{"position":[[373,3]]}},"keywords":{}}],["type",{"_index":367,"title":{"18":{"position":[[18,4]]}},"content":{"9":{"position":[[3340,5],[3691,5],[3983,4]]},"28":{"position":[[33,5]]},"29":{"position":[[54,5],[84,5],[149,5]]},"32":{"position":[[295,5]]},"72":{"position":[[56,5]]},"73":{"position":[[48,5],[80,5],[198,5]]},"75":{"position":[[1,5]]},"77":{"position":[[32,5],[62,5],[213,5]]},"78":{"position":[[33,5],[78,5],[155,5],[185,5],[323,5],[353,5]]},"79":{"position":[[53,5],[95,5],[260,5],[345,5]]},"80":{"position":[[34,5],[112,5],[242,5]]},"81":{"position":[[40,5],[73,5]]},"102":{"position":[[330,5]]},"103":{"position":[[303,5]]},"105":{"position":[[69,5]]},"106":{"position":[[1,5]]},"107":{"position":[[1,5]]},"108":{"position":[[1,5]]},"110":{"position":[[1,5]]},"111":{"position":[[1,5]]},"112":{"position":[[138,5]]},"132":{"position":[[1846,5]]},"140":{"position":[[295,5]]},"143":{"position":[[91,5],[378,5]]},"144":{"position":[[87,5]]},"145":{"position":[[82,5],[371,5]]},"146":{"position":[[48,5]]},"147":{"position":[[76,5],[129,5],[161,5],[378,5],[626,5],[658,5],[898,5],[1164,5],[1196,5],[1400,5]]},"149":{"position":[[678,5],[1248,5],[1656,5],[2130,5]]}},"keywords":{}}],["typic",{"_index":104,"title":{},"content":{"4":{"position":[[366,8]]},"8":{"position":[[1760,10]]},"51":{"position":[[305,10]]},"114":{"position":[[74,9]]},"115":{"position":[[58,9]]},"140":{"position":[[711,9]]},"157":{"position":[[362,7],[1078,7]]},"162":{"position":[[16,7]]}},"keywords":{}}],["ui",{"_index":247,"title":{},"content":{"8":{"position":[[2671,2]]},"165":{"position":[[741,3]]}},"keywords":{}}],["unavail",{"_index":745,"title":{"64":{"position":[[13,14]]}},"content":{"55":{"position":[[138,11]]},"81":{"position":[[195,11]]}},"keywords":{}}],["uncertain",{"_index":1538,"title":{},"content":{"180":{"position":[[652,9]]}},"keywords":{}}],["uncertainti",{"_index":1535,"title":{},"content":{"180":{"position":[[578,12],[4213,11]]}},"keywords":{}}],["uncertaintyindepend",{"_index":1544,"title":{},"content":{"180":{"position":[[757,22]]}},"keywords":{}}],["understand",{"_index":102,"title":{"168":{"position":[[0,13]]},"179":{"position":[[0,13]]}},"content":{"4":{"position":[[318,10]]},"167":{"position":[[426,10]]},"180":{"position":[[1739,10]]}},"keywords":{}}],["unexpect",{"_index":1242,"title":{},"content":{"151":{"position":[[450,10]]}},"keywords":{}}],["uniqu",{"_index":119,"title":{},"content":{"5":{"position":[[178,6]]},"57":{"position":[[232,6]]}},"keywords":{}}],["unit",{"_index":172,"title":{},"content":{"8":{"position":[[551,5]]},"89":{"position":[[10,6],[32,5]]},"121":{"position":[[554,5]]}},"keywords":{}}],["unnecessari",{"_index":1316,"title":{},"content":{"161":{"position":[[1265,11]]}},"keywords":{}}],["until",{"_index":349,"title":{},"content":{"9":{"position":[[2619,5]]},"17":{"position":[[498,5]]},"51":{"position":[[880,5]]},"56":{"position":[[122,5]]},"169":{"position":[[100,5]]}},"keywords":{}}],["up",{"_index":1049,"title":{},"content":{"119":{"position":[[93,2]]},"164":{"position":[[151,2],[221,2]]},"165":{"position":[[1071,2]]},"172":{"position":[[371,3],[910,2],[939,3]]}},"keywords":{}}],["up/down",{"_index":977,"title":{},"content":{"102":{"position":[[232,7]]}},"keywords":{}}],["upcom",{"_index":1016,"title":{},"content":{"114":{"position":[[192,8],[231,8]]}},"keywords":{}}],["updat",{"_index":362,"title":{"56":{"position":[[31,6]]}},"content":{"9":{"position":[[3098,8]]},"10":{"position":[[268,7]]},"15":{"position":[[54,7]]},"16":{"position":[[522,7]]},"56":{"position":[[37,8]]},"89":{"position":[[198,8]]},"102":{"position":[[46,6]]},"103":{"position":[[280,7]]},"105":{"position":[[328,6]]},"107":{"position":[[132,7]]},"116":{"position":[[74,6]]},"131":{"position":[[508,8]]},"132":{"position":[[589,8],[628,7],[1018,7]]},"139":{"position":[[299,7]]},"183":{"position":[[271,8]]}},"keywords":{}}],["updates)lightweight",{"_index":1097,"title":{},"content":{"131":{"position":[[564,20]]}},"keywords":{}}],["us",{"_index":127,"title":{"41":{"position":[[0,3]]},"42":{"position":[[0,3]]},"43":{"position":[[0,3]]},"44":{"position":[[0,3]]},"45":{"position":[[0,3]]},"57":{"position":[[6,3]]},"104":{"position":[[0,5]]},"122":{"position":[[3,6]]},"141":{"position":[[8,3]]},"142":{"position":[[7,3]]},"149":{"position":[[0,5]]},"150":{"position":[[26,5]]}},"content":{"5":{"position":[[269,3],[316,3]]},"8":{"position":[[1879,6]]},"9":{"position":[[227,3],[361,3],[819,3],[1479,3],[1652,4],[3060,4],[3322,3],[3553,3],[3673,3],[4803,3]]},"11":{"position":[[17,5]]},"13":{"position":[[83,3]]},"15":{"position":[[9,4],[598,3]]},"16":{"position":[[9,4]]},"17":{"position":[[9,4]]},"21":{"position":[[588,4],[778,3]]},"43":{"position":[[157,5]]},"44":{"position":[[1358,4]]},"45":{"position":[[24,3]]},"47":{"position":[[419,3]]},"55":{"position":[[153,3]]},"57":{"position":[[6,3]]},"66":{"position":[[13,4]]},"70":{"position":[[6,3]]},"79":{"position":[[1,5]]},"88":{"position":[[236,4]]},"89":{"position":[[38,4]]},"95":{"position":[[65,3]]},"100":{"position":[[206,3]]},"103":{"position":[[38,5]]},"109":{"position":[[16,3]]},"117":{"position":[[130,3]]},"119":{"position":[[345,5],[454,3],[554,3]]},"120":{"position":[[244,5]]},"131":{"position":[[164,3],[1160,4]]},"132":{"position":[[200,3],[941,5],[2018,5]]},"139":{"position":[[1,5],[213,4],[316,3]]},"141":{"position":[[1,3],[193,3],[441,3]]},"144":{"position":[[1,3]]},"148":{"position":[[17,4]]},"149":{"position":[[90,3],[485,3],[570,5],[1419,3]]},"150":{"position":[[1,3],[61,3],[116,3],[304,3],[345,3]]},"151":{"position":[[45,5],[551,3]]},"152":{"position":[[77,3]]},"157":{"position":[[370,3],[1004,3]]},"164":{"position":[[430,7],[1291,5],[1402,3]]},"165":{"position":[[367,3],[590,3],[1109,3]]},"166":{"position":[[482,3],[990,3],[1547,5]]},"167":{"position":[[52,3],[329,3]]},"171":{"position":[[285,4],[420,4]]},"172":{"position":[[12,4]]},"173":{"position":[[661,4]]},"175":{"position":[[76,3]]},"178":{"position":[[79,5]]},"180":{"position":[[3089,3],[4258,3]]},"181":{"position":[[130,5]]}},"keywords":{}}],["usabl",{"_index":953,"title":{},"content":{"97":{"position":[[256,6]]}},"keywords":{}}],["usag",{"_index":711,"title":{},"content":{"47":{"position":[[294,7]]},"131":{"position":[[1093,6]]},"132":{"position":[[1799,6]]}},"keywords":{}}],["usefulappli",{"_index":1292,"title":{},"content":{"160":{"position":[[365,11]]}},"keywords":{}}],["user",{"_index":400,"title":{"118":{"position":[[0,4]]}},"content":{"10":{"position":[[41,4],[185,4]]},"60":{"position":[[30,6]]},"123":{"position":[[115,6]]},"157":{"position":[[298,5]]},"170":{"position":[[266,5]]}},"keywords":{}}],["users)start",{"_index":1064,"title":{},"content":{"120":{"position":[[232,11]]}},"keywords":{}}],["usual",{"_index":1110,"title":{},"content":{"131":{"position":[[1036,8]]}},"keywords":{}}],["utc",{"_index":740,"title":{},"content":{"55":{"position":[[67,3],[88,3]]}},"keywords":{}}],["v",{"_index":963,"title":{"100":{"position":[[0,2]]}},"content":{},"keywords":{}}],["valu",{"_index":768,"title":{"60":{"position":[[14,6]]},"141":{"position":[[33,6]]}},"content":{"60":{"position":[[9,6]]},"98":{"position":[[16,5]]},"115":{"position":[[117,6],[158,6],[203,6]]},"131":{"position":[[268,6],[834,5],[897,5]]},"138":{"position":[[75,6]]},"141":{"position":[[207,5]]},"143":{"position":[[355,5]]},"145":{"position":[[363,6]]},"149":{"position":[[542,5]]},"150":{"position":[[249,5],[474,6]]},"151":{"position":[[615,5]]},"157":{"position":[[945,6]]},"164":{"position":[[1314,6]]},"166":{"position":[[940,6],[1229,6]]},"170":{"position":[[351,5]]}},"keywords":{}}],["value_templ",{"_index":686,"title":{},"content":{"45":{"position":[[324,15]]},"180":{"position":[[3401,15]]}},"keywords":{}}],["values)smooth",{"_index":1327,"title":{},"content":{"161":{"position":[[1578,16]]}},"keywords":{}}],["var",{"_index":869,"title":{},"content":{"75":{"position":[[603,5]]},"112":{"position":[[382,5]]},"138":{"position":[[159,4],[191,4],[239,4],[287,4],[335,4],[376,4]]},"139":{"position":[[26,4]]},"141":{"position":[[599,5],[670,5]]},"143":{"position":[[298,5],[585,5],[677,5]]},"147":{"position":[[345,5],[564,5],[865,5],[1107,5],[1367,5],[1577,5]]},"148":{"position":[[88,4]]},"149":{"position":[[1161,5],[2056,5],[2476,5]]}},"keywords":{}}],["vari",{"_index":1492,"title":{},"content":{"173":{"position":[[776,4]]}},"keywords":{}}],["variabl",{"_index":1143,"title":{"139":{"position":[[8,11]]},"148":{"position":[[10,10]]}},"content":{"138":{"position":[[41,8]]},"139":{"position":[[11,9]]},"141":{"position":[[47,8],[119,8],[273,8]]},"148":{"position":[[52,9]]},"149":{"position":[[236,9]]},"150":{"position":[[180,9]]},"151":{"position":[[271,9],[435,9]]}},"keywords":{}}],["variant",{"_index":717,"title":{},"content":{"51":{"position":[[464,8]]}},"keywords":{}}],["variat",{"_index":569,"title":{},"content":{"41":{"position":[[24,9]]}},"keywords":{}}],["veri",{"_index":810,"title":{},"content":{"65":{"position":[[45,5]]},"138":{"position":[[399,4]]},"150":{"position":[[454,4]]},"164":{"position":[[357,4],[388,4]]},"166":{"position":[[1460,4]]}},"keywords":{}}],["versa",{"_index":1520,"title":{},"content":{"180":{"position":[[88,7]]}},"keywords":{}}],["version",{"_index":1588,"title":{},"content":{"183":{"position":[[309,8]]}},"keywords":{}}],["vertic",{"_index":312,"title":{},"content":{"9":{"position":[[1569,8],[4247,8]]},"15":{"position":[[363,9]]},"22":{"position":[[34,8]]},"29":{"position":[[11,8],[60,8]]},"77":{"position":[[38,8]]},"78":{"position":[[161,8],[329,8]]},"147":{"position":[[82,8]]}},"keywords":{}}],["very_cheap",{"_index":29,"title":{},"content":{"2":{"position":[[58,10]]},"9":{"position":[[1336,12],[4102,12]]},"20":{"position":[[66,10]]},"97":{"position":[[42,12]]},"141":{"position":[[881,12]]},"149":{"position":[[888,13]]},"165":{"position":[[166,10]]},"183":{"position":[[109,10]]}},"keywords":{}}],["very_cheap"",{"_index":783,"title":{},"content":{"61":{"position":[[139,16]]}},"keywords":{}}],["very_expens",{"_index":305,"title":{},"content":{"9":{"position":[[1375,15],[4141,15]]},"97":{"position":[[81,16]]},"141":{"position":[[963,16]]},"149":{"position":[[1111,17]]},"165":{"position":[[204,14]]}},"keywords":{}}],["very_high",{"_index":1228,"title":{},"content":{"149":{"position":[[2011,12]]}},"keywords":{}}],["via",{"_index":340,"title":{},"content":{"9":{"position":[[2445,3],[2708,3]]},"16":{"position":[[386,3]]},"17":{"position":[[423,3]]},"24":{"position":[[55,3]]},"25":{"position":[[63,3]]},"48":{"position":[[38,3],[116,3]]},"50":{"position":[[26,3]]},"87":{"position":[[178,3]]},"119":{"position":[[31,3]]},"120":{"position":[[9,3]]},"132":{"position":[[472,3]]}},"keywords":{}}],["vice",{"_index":1519,"title":{},"content":{"180":{"position":[[83,4]]}},"keywords":{}}],["view",{"_index":334,"title":{"50":{"position":[[19,5]]},"77":{"position":[[15,5]]}},"content":{"9":{"position":[[2202,6],[3178,5],[3437,5],[4582,5]]},"13":{"position":[[150,4],[230,4],[317,4],[449,4],[633,6]]},"15":{"position":[[396,4],[467,4],[515,5],[565,5]]},"16":{"position":[[29,4]]},"21":{"position":[[754,5]]},"25":{"position":[[159,5]]},"32":{"position":[[7,4],[55,5],[242,4],[278,4]]},"50":{"position":[[241,4]]}},"keywords":{}}],["visual",{"_index":142,"title":{"162":{"position":[[0,6]]}},"content":{"8":{"position":[[71,13]]},"9":{"position":[[925,14],[1015,11],[1703,14]]},"15":{"position":[[611,13]]},"16":{"position":[[594,6],[753,13]]},"20":{"position":[[245,13]]},"21":{"position":[[101,14]]},"24":{"position":[[23,13]]},"32":{"position":[[250,8]]},"47":{"position":[[679,11]]},"119":{"position":[[492,14]]},"131":{"position":[[137,14]]},"181":{"position":[[186,14]]}},"keywords":{}}],["visualizationmulti",{"_index":1075,"title":{},"content":{"121":{"position":[[484,18]]}},"keywords":{}}],["volatil",{"_index":97,"title":{"40":{"position":[[0,10]]},"41":{"position":[[27,10]]},"43":{"position":[[19,10]]},"45":{"position":[[25,11]]}},"content":{"4":{"position":[[241,12]]},"40":{"position":[[39,10]]},"41":{"position":[[44,12],[272,10],[540,10],[1048,10],[1146,10],[1222,10],[1324,10]]},"42":{"position":[[908,10]]},"43":{"position":[[34,10],[163,10],[415,10],[485,10],[628,10],[970,12],[1064,10],[1134,10]]},"44":{"position":[[474,10]]},"45":{"position":[[45,10],[291,10],[655,10],[1185,11]]},"60":{"position":[[158,10]]},"100":{"position":[[1,11],[66,10]]},"108":{"position":[[91,10],[140,10]]},"138":{"position":[[364,11]]},"147":{"position":[[1140,10],[1271,10]]},"149":{"position":[[1644,10],[1731,10],[1800,10],[1830,11],[1883,11],[1940,11],[1995,11]]},"165":{"position":[[452,10],[506,10],[698,10]]},"170":{"position":[[681,8]]},"171":{"position":[[76,9],[273,11]]},"173":{"position":[[262,8]]},"180":{"position":[[997,11],[1154,11],[1515,10],[1717,10],[1797,10],[1883,10],[1956,10],[2216,10],[2264,10],[2337,10],[2570,10],[3108,10],[3190,10],[3368,10],[3655,10],[3758,10],[4262,10],[4327,10]]}},"keywords":{}}],["volatility_high",{"_index":1390,"title":{},"content":{"165":{"position":[[566,17]]}},"keywords":{}}],["volatility_low",{"_index":1388,"title":{},"content":{"165":{"position":[[530,16]]}},"keywords":{}}],["volatility_medium",{"_index":1389,"title":{},"content":{"165":{"position":[[547,18]]}},"keywords":{}}],["volatility_today)binari",{"_index":990,"title":{},"content":{"103":{"position":[[470,23]]}},"keywords":{}}],["volatility_today)pric",{"_index":1160,"title":{},"content":{"140":{"position":[[459,22]]}},"keywords":{}}],["volatilityno",{"_index":706,"title":{},"content":{"45":{"position":[[1092,12]]}},"keywords":{}}],["vs",{"_index":980,"title":{"141":{"position":[[23,3]]}},"content":{"102":{"position":[[404,2]]}},"keywords":{}}],["wait",{"_index":987,"title":{},"content":{"103":{"position":[[233,5]]},"114":{"position":[[421,8]]},"116":{"position":[[21,4]]}},"keywords":{}}],["want",{"_index":509,"title":{},"content":{"21":{"position":[[684,4]]},"49":{"position":[[145,4]]},"60":{"position":[[194,4]]},"109":{"position":[[8,4]]},"116":{"position":[[242,4],[402,4]]},"123":{"position":[[129,4]]},"141":{"position":[[146,4]]},"149":{"position":[[8,4]]},"150":{"position":[[85,4],[140,4],[199,4]]},"151":{"position":[[469,4]]},"166":{"position":[[773,4],[1352,4]]},"173":{"position":[[151,4]]}},"keywords":{}}],["warn",{"_index":1204,"title":{},"content":{"148":{"position":[[179,7]]},"149":{"position":[[342,7]]}},"keywords":{}}],["warningsmor",{"_index":1270,"title":{},"content":{"157":{"position":[[807,12]]}},"keywords":{}}],["wash",{"_index":665,"title":{},"content":{"44":{"position":[[170,7],[361,7],[1470,4]]}},"keywords":{}}],["watch",{"_index":1420,"title":{},"content":{"166":{"position":[[929,5]]}},"keywords":{}}],["water",{"_index":618,"title":{},"content":{"42":{"position":[[179,5],[539,5]]},"157":{"position":[[724,5]]},"180":{"position":[[2743,5]]}},"keywords":{}}],["waterpeak",{"_index":1256,"title":{},"content":{"156":{"position":[[191,9]]}},"keywords":{}}],["weather",{"_index":1536,"title":{},"content":{"180":{"position":[[591,8],[1580,8]]}},"keywords":{}}],["wednesday",{"_index":1459,"title":{},"content":{"171":{"position":[[400,10]]}},"keywords":{}}],["weight",{"_index":903,"title":{},"content":{"80":{"position":[[227,7]]},"143":{"position":[[717,7]]}},"keywords":{}}],["welcom",{"_index":279,"title":{},"content":{"9":{"position":[[563,7]]},"47":{"position":[[564,8]]}},"keywords":{}}],["well",{"_index":1262,"title":{},"content":{"157":{"position":[[353,4]]}},"keywords":{}}],["were/weren't",{"_index":1438,"title":{},"content":{"167":{"position":[[493,12]]}},"keywords":{}}],["whenev",{"_index":1233,"title":{},"content":{"150":{"position":[[360,8]]}},"keywords":{}}],["whether",{"_index":974,"title":{},"content":{"102":{"position":[[162,7]]},"114":{"position":[[159,7]]}},"keywords":{}}],["wider",{"_index":1504,"title":{},"content":{"178":{"position":[[278,5]]}},"keywords":{}}],["width",{"_index":880,"title":{},"content":{"78":{"position":[[6,5]]}},"keywords":{}}],["window",{"_index":68,"title":{"16":{"position":[[15,6]]},"17":{"position":[[11,6]]},"25":{"position":[[21,6]]},"51":{"position":[[21,7]]}},"content":{"3":{"position":[[75,8],[209,7]]},"8":{"position":[[1431,6],[1501,6],[1649,6],[1931,6]]},"9":{"position":[[1204,6],[1452,6],[2243,6],[2308,6],[2479,6],[2541,7],[2767,6],[2791,6],[3421,6],[3542,6],[4535,6]]},"13":{"position":[[298,6],[424,6],[648,6],[695,6]]},"16":{"position":[[270,6]]},"17":{"position":[[597,7],[643,6],[836,7]]},"21":{"position":[[9,6],[723,6]]},"32":{"position":[[96,6],[152,6],[167,6]]},"48":{"position":[[70,6]]},"49":{"position":[[158,6]]},"51":{"position":[[910,6]]},"88":{"position":[[48,6]]},"95":{"position":[[25,6]]},"131":{"position":[[369,6]]},"156":{"position":[[28,7]]},"157":{"position":[[70,7],[166,7]]},"160":{"position":[[181,7]]},"161":{"position":[[461,8]]},"164":{"position":[[894,7]]},"173":{"position":[[825,7]]}},"keywords":{}}],["window)06:00",{"_index":457,"title":{},"content":{"17":{"position":[[667,13]]}},"keywords":{}}],["window)12:00",{"_index":460,"title":{},"content":{"17":{"position":[[709,13]]}},"keywords":{}}],["window)18:00",{"_index":463,"title":{},"content":{"17":{"position":[[751,13]]}},"keywords":{}}],["window)23:45",{"_index":464,"title":{},"content":{"17":{"position":[[792,13]]}},"keywords":{}}],["windowprogress",{"_index":719,"title":{},"content":{"51":{"position":[[714,17]]}},"keywords":{}}],["winter",{"_index":741,"title":{},"content":{"55":{"position":[[74,7]]}},"keywords":{}}],["within",{"_index":747,"title":{},"content":{"55":{"position":[[231,6]]},"93":{"position":[[29,6]]},"165":{"position":[[938,6]]},"180":{"position":[[923,6]]}},"keywords":{}}],["without",{"_index":223,"title":{"58":{"position":[[15,7]]}},"content":{"8":{"position":[[1938,7]]},"21":{"position":[[117,7]]},"41":{"position":[[1340,7]]},"114":{"position":[[455,7]]},"141":{"position":[[170,7]]}},"keywords":{}}],["wizard",{"_index":1132,"title":{},"content":{"132":{"position":[[1452,6]]}},"keywords":{}}],["won't",{"_index":1002,"title":{},"content":{"110":{"position":[[123,5]]}},"keywords":{}}],["work",{"_index":5,"title":{"58":{"position":[[10,4]]},"159":{"position":[[7,6]]},"172":{"position":[[7,5]]}},"content":{"1":{"position":[[17,5]]},"9":{"position":[[2977,5],[4617,4]]},"15":{"position":[[418,5],[488,5]]},"16":{"position":[[616,6]]},"17":{"position":[[613,6]]},"25":{"position":[[183,4]]},"41":{"position":[[1130,6]]},"42":{"position":[[850,6]]},"43":{"position":[[1048,6]]},"44":{"position":[[1350,6]]},"45":{"position":[[1056,6]]},"60":{"position":[[16,4]]},"105":{"position":[[15,4]]},"112":{"position":[[15,4]]},"120":{"position":[[218,4]]},"139":{"position":[[260,5]]},"157":{"position":[[348,4]]},"167":{"position":[[357,5]]},"171":{"position":[[54,5]]},"173":{"position":[[849,6]]}},"keywords":{}}],["worksconfigur",{"_index":1246,"title":{},"content":{"154":{"position":[[19,18]]}},"keywords":{}}],["world",{"_index":1575,"title":{},"content":{"181":{"position":[[95,5]]}},"keywords":{}}],["wrap",{"_index":546,"title":{},"content":{"29":{"position":[[1,4]]}},"keywords":{}}],["wrong",{"_index":819,"title":{"66":{"position":[[14,5]]}},"content":{"151":{"position":[[294,6]]}},"keywords":{}}],["x",{"_index":941,"title":{},"content":{"94":{"position":[[58,2]]}},"keywords":{}}],["y",{"_index":299,"title":{"21":{"position":[[8,1]]}},"content":{"9":{"position":[[1235,1],[1428,1],[1517,1],[2430,1],[2693,1],[2743,1],[2917,1],[3107,1],[3820,1],[4565,1]]},"13":{"position":[[671,1]]},"16":{"position":[[371,1]]},"17":{"position":[[408,1]]},"21":{"position":[[349,1],[697,1]]},"30":{"position":[[115,1]]},"32":{"position":[[129,1]]},"121":{"position":[[391,1]]},"131":{"position":[[314,1],[407,1],[844,1],[907,1],[1189,1],[1380,1]]}},"keywords":{}}],["yaml",{"_index":262,"title":{},"content":{"9":{"position":[[202,4],[598,4],[984,4],[4658,4],[4868,5]]},"21":{"position":[[569,4]]},"27":{"position":[[40,5]]},"50":{"position":[[309,4]]}},"keywords":{}}],["yaxis_max",{"_index":1095,"title":{},"content":{"131":{"position":[[469,9]]}},"keywords":{}}],["yaxis_min",{"_index":1094,"title":{},"content":{"131":{"position":[[455,9]]}},"keywords":{}}],["ye",{"_index":755,"title":{},"content":{"57":{"position":[[1,4]]},"70":{"position":[[1,4]]}},"keywords":{}}],["yellow",{"_index":724,"title":{},"content":{"52":{"position":[[50,6]]}},"keywords":{}}],["yesterday",{"_index":153,"title":{},"content":{"8":{"position":[[211,11],[1114,10],[1852,9]]},"9":{"position":[[1879,10],[2157,11],[4606,10]]},"16":{"position":[[645,9]]},"51":{"position":[[393,9]]},"95":{"position":[[146,11]]}},"keywords":{}}],["yesterday+today",{"_index":338,"title":{},"content":{"9":{"position":[[2349,15]]},"13":{"position":[[341,16]]},"16":{"position":[[70,15],[474,16]]}},"keywords":{}}],["yesterday/today/tomorrow",{"_index":443,"title":{},"content":{"15":{"position":[[571,26]]},"32":{"position":[[61,26]]}},"keywords":{}}],["you'll",{"_index":1434,"title":{},"content":{"167":{"position":[[207,6]]}},"keywords":{}}],["you'r",{"_index":406,"title":{},"content":{"11":{"position":[[4,6]]},"60":{"position":[[129,6]]},"126":{"position":[[36,6]]},"132":{"position":[[2001,6]]},"141":{"position":[[368,6]]},"151":{"position":[[38,6]]},"166":{"position":[[6,6],[122,6]]}},"keywords":{}}],["you'v",{"_index":1038,"title":{},"content":{"116":{"position":[[168,6]]}},"keywords":{}}],["your",{"_index":1062,"title":{},"content":{"120":{"position":[[141,5]]}},"keywords":{}}],["your_entry_id",{"_index":175,"title":{},"content":{"8":{"position":[[627,13],[1610,13],[2105,13],[2358,13]]},"9":{"position":[[1842,13],[3244,13],[3503,13]]},"10":{"position":[[163,13]]},"15":{"position":[[177,13]]},"16":{"position":[[231,13]]},"17":{"position":[[214,13]]},"50":{"position":[[107,13]]},"51":{"position":[[129,13],[578,13]]},"132":{"position":[[2262,13]]}},"keywords":{}}],["yourself",{"_index":1157,"title":{},"content":{"139":{"position":[[408,8]]}},"keywords":{}}],["zero",{"_index":1430,"title":{},"content":{"166":{"position":[[1492,4]]},"167":{"position":[[218,4]]}},"keywords":{}}],["zoom",{"_index":342,"title":{"17":{"position":[[23,4]]}},"content":{"9":{"position":[[2492,5],[2566,5]]},"13":{"position":[[436,4],[459,5],[707,4],[732,4]]},"17":{"position":[[63,5],[355,5]]},"32":{"position":[[179,4],[214,4]]},"51":{"position":[[459,4],[490,4],[732,5]]},"52":{"position":[[252,4]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/user/lunr-index.json b/user/lunr-index.json new file mode 100644 index 0000000..0057541 --- /dev/null +++ b/user/lunr-index.json @@ -0,0 +1 @@ +{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,822.282,1,952.339]],["content/0",[]],["keywords/0",[]],["title/1",[2,120.117,3,476.229]],["content/1",[3,6.877,4,5.284,5,5.175,6,8.818,7,8.399,8,4.286,9,6.062,10,6.062,11,6.062,12,4.874,13,6.062,14,12.077,15,12.077,16,12.077,17,12.077,18,6.062,19,12.077,20,12.077,21,12.077,22,9.952,23,12.077,24,10.795]],["keywords/1",[]],["title/2",[2,120.117,25,466.17]],["content/2",[2,2.018,25,5.64,26,3.405,27,8.279,28,2.875,29,5.925,30,12.889,31,4.328,32,7.632,33,8.279,34,9.262,35,9.262,36,5.035,37,7.441,38,5.925,39,4.898,40,9.262,41,7.632,42,9.262,43,9.262,44,5.711,45,7.148,46,7.148,47,9.262,48,4.328,49,6.441,50,7.632,51,6.762,52,3.667,53,5.711,54,7.148,55,8.279,56,4.328,57,4.649,58,9.262,59,5.519,60,4.232,61,9.262,62,3.345,63,4.898]],["keywords/2",[]],["title/3",[2,120.117,64,219.832]],["content/3",[2,1.983,3,4.25,12,5.297,25,4.16,26,3.496,28,2.951,33,8.499,46,7.338,49,6.612,50,7.835,52,3.764,62,4.741,64,3.629,65,4.141,66,4.344,67,4.773,68,5.511,69,9.508,70,8.499,71,8.499,72,9.508,73,7.338,74,8.499,75,6.612,76,6.083,77,9.508,78,5.486,79,9.508,80,5.169,81,8.499,82,4.074,83,5.169,84,6.083]],["keywords/3",[]],["title/4",[53,656.95,54,822.282]],["content/4",[2,1.961,3,4.531,4,4.435,31,4.737,37,8.731,48,4.737,56,6.408,59,8.171,85,9.061,86,10.137,87,8.353,88,10.012,89,11.299,90,7.824,91,10.137,92,6.485,93,10.137,94,4.848,95,7.824,96,10.137,97,4.435,98,9.061,99,7.824,100,8.353,101,7.401,102,7.401,103,10.137,104,6.485]],["keywords/4",[]],["title/5",[105,908.14,106,414.93,107,523.962]],["content/5",[2,1.212,10,5.394,76,6.875,84,6.875,92,6.875,94,5.139,106,6.515,108,6.875,109,5.534,110,9.606,111,10.746,112,6.014,113,10.746,114,7.473,115,10.746,116,8.294,117,5.534,118,3.73,119,9.606,120,3.622,121,7.846,122,1.723,123,6.875,124,9.606,125,9.606,126,10.746,127,3.262,128,10.746,129,3.562,130,8.855,131,6.014]],["keywords/5",[]],["title/6",[132,497.833,133,456.548]],["content/6",[]],["keywords/6",[]],["title/7",[132,497.833,134,579.198]],["content/7",[]],["keywords/7",[]],["title/8",[135,940.755]],["content/8",[2,1.23,3,3.925,4,1.394,7,3.851,8,1.965,9,1.599,25,1.394,26,1.171,28,0.989,31,1.488,39,1.684,54,2.458,60,2.53,64,2.052,65,1.005,68,3.686,84,2.037,104,2.037,107,1.837,108,2.037,112,1.782,121,2.325,122,2.51,127,0.728,129,1.835,132,2.587,133,4.261,134,3.994,135,7.261,136,2.458,137,6.362,138,5.01,139,3.284,140,2.847,141,5.67,142,1.731,143,1.837,144,1.782,145,4.95,146,4.563,147,2.458,148,3.185,149,1.837,150,6.053,151,4.445,152,3.981,153,5.364,154,4.913,155,3.185,156,3.185,157,2.624,158,4.95,159,3.783,160,3.185,161,4.274,162,3.185,163,4.563,164,1.599,165,3.185,166,2.624,167,3.185,168,5.537,169,5.537,170,4.274,171,4.95,172,2.624,173,2.215,174,5.414,175,5.414,176,6.566,177,6.053,178,6.566,179,7.848,180,5.364,181,4.95,182,2.847,183,3.185,184,5.537,185,4.95,186,3.542,187,3.185,188,5.537,189,3.185,190,3.185,191,3.185,192,1.898,193,6.106,194,3.686,195,3.185,196,3.185,197,1.599,198,2.12,199,4.377,200,3.185,201,3.185,202,1.837,203,3.185,204,2.624,205,3.185,206,3.185,207,3.185,208,2.12,209,2.037,210,1.837,211,1.365,212,3.783,213,1.684,214,4.274,215,1.038,216,4.043,217,2.037,218,1.964,219,2.458,220,2.847,221,1.964,222,1.171,223,2.215,224,1.782,225,3.185,226,3.185,227,3.185,228,3.185,229,2.53,230,3.185,231,1.964,232,3.185,233,3.185,234,2.458,235,1.394,236,3.185,237,2.847,238,3.185,239,4.563,240,2.624,241,2.624,242,1.731,243,3.686,244,2.847,245,2.037,246,2.215,247,2.847,248,2.458,249,3.185,250,2.325,251,2.847,252,3.185,253,3.185]],["keywords/8",[]],["title/9",[254,794.503]],["content/9",[2,1.359,4,2.043,5,1.44,8,0.648,9,0.916,10,0.916,11,1.687,12,1.885,18,0.916,25,0.799,26,3.349,28,2.376,29,2.15,31,1.57,48,0.853,52,1.33,59,1.087,60,1.535,62,3.042,64,1.4,65,2.141,67,2.344,68,4.528,74,1.631,75,1.269,78,1.053,89,2.769,94,0.873,106,2.134,107,1.053,112,1.021,114,1.269,118,2.002,120,1.133,122,2.137,127,2.351,129,2.249,132,3.171,133,2.486,134,0.992,136,1.408,138,4.352,139,2.088,141,1.408,142,2.539,143,1.053,144,3.246,149,1.053,152,2.454,153,3.41,154,4.283,159,0.94,161,1.408,163,1.504,173,2.337,174,2.88,175,2.88,180,3.41,182,1.631,193,1.269,194,1.215,197,2.912,198,2.237,199,3.456,210,1.053,212,5.007,213,3.589,214,2.594,215,2.969,216,1.332,217,1.167,218,1.125,221,1.125,222,2.133,224,1.881,229,2.134,231,1.125,235,1.47,239,2.769,240,1.504,242,0.992,243,1.215,245,1.167,246,1.269,248,3.605,254,2.88,255,2.072,256,4.454,257,2.594,258,2.15,259,4.228,260,1.631,261,1.125,262,5.238,263,1.825,264,3.004,265,1.504,266,1.631,267,1.631,268,1.053,269,5.238,270,1.504,271,1.053,272,0.799,273,1.332,274,1.825,275,1.825,276,1.825,277,1.408,278,2.65,279,1.631,280,1.332,281,0.799,282,1.825,283,1.825,284,1.825,285,1.504,286,1.504,287,1.631,288,1.825,289,1.215,290,1.504,291,1.408,292,2.347,293,1.687,294,2.072,295,1.504,296,1.825,297,2.405,298,1.827,299,6.125,300,5.794,301,4.185,302,1.332,303,3.154,304,1.777,305,2.454,306,1.825,307,4.477,308,2.002,309,1.825,310,3.605,311,2.841,312,2.237,313,2.769,314,1.825,315,1.939,316,3.36,317,1.825,318,1.408,319,1.631,320,1.631,321,1.825,322,1.125,323,4.78,324,3.605,325,3.248,326,3.109,327,1.631,328,2.539,329,1.939,330,3.41,331,3.004,332,1.504,333,2.454,334,3.456,335,1.332,336,1.825,337,1.57,338,1.504,339,1.504,340,1.939,341,2.072,342,2.237,343,1.125,344,1.825,345,1.269,346,1.631,347,1.504,348,1.408,349,1.332,350,1.408,351,1.332,352,2.454,353,1.631,354,1.332,355,1.053,356,1.825,357,1.504,358,1.631,359,1.825,360,1.269,361,1.825,362,0.916,363,0.709,364,1.332,365,4.044,366,2.694,367,1.748,368,1.332,369,3.004,370,1.167,371,1.825,372,1.825,373,1.631,374,2.337,375,0.965,376,0.94,377,0.965,378,1.504,379,1.825,380,1.021,381,1.825,382,1.408,383,1.631,384,1.825,385,1.825,386,1.053,387,1.825,388,1.825,389,1.021,390,1.825,391,1.631,392,1.504,393,1.631,394,1.332,395,1.504]],["keywords/9",[]],["title/10",[396,1151.741]],["content/10",[13,5.561,59,6.601,60,5.062,106,5.062,109,7.492,129,3.672,132,5.177,133,4.748,136,8.551,138,6.556,174,6.832,175,6.832,271,6.392,281,4.848,362,5.561,363,4.304,386,6.392,396,9.904,397,11.079,398,14.549,399,8.551,400,10.118,401,11.989,402,9.129,403,6.392]],["keywords/10",[]],["title/11",[118,183.424,138,282.984,139,313.434,404,577.789,405,577.789]],["content/11",[39,5.073,56,4.483,62,4.77,118,3.951,123,8.448,127,2.194,132,4.483,135,9.642,141,7.404,151,4.288,159,4.94,197,4.815,245,6.137,250,7.004,311,4.698,343,5.915,386,5.535,404,10.882,406,6.386,407,8.575,408,7.905,409,9.593,410,6.671,411,7.905,412,9.593,413,9.593,414,8.575,415,8.575,416,9.593,417,8.575,418,6.137,419,8.575,420,9.593,421,8.575,422,7.905,423,9.593,424,6.137,425,9.593,426,8.575,427,8.575]],["keywords/11",[]],["title/12",[129,353.142,139,476.229]],["content/12",[]],["keywords/12",[]],["title/13",[428,994.453]],["content/13",[2,1.155,4,2.955,10,3.39,12,2.726,18,3.39,56,3.156,57,3.39,65,2.131,68,5.798,88,7.479,94,3.23,122,1.983,127,1.545,131,3.78,134,3.672,139,3.019,152,3.968,154,3.78,194,4.496,199,6.103,210,3.897,212,7.111,213,5.417,215,4.034,221,4.165,222,3.766,256,3.572,259,6.932,280,4.931,292,3.558,297,5.275,299,4.024,300,4.024,301,4.165,308,4.024,322,4.165,333,9.034,334,8.844,338,5.566,339,5.566,341,6.316,342,9.193,345,7.123,348,5.213,364,4.931,365,6.103,370,4.321,374,4.697,428,7.906,429,6.754,430,4.931,431,6.754,432,4.931,433,6.038,434,6.038,435,5.566]],["keywords/13",[]],["title/14",[139,476.229,213,563.387]],["content/14",[]],["keywords/14",[]],["title/15",[2,89.223,333,577.808,364,577.808,436,378.441]],["content/15",[2,1.53,5,4.931,18,3.965,28,2.452,31,3.691,48,3.691,57,3.965,59,4.706,60,3.609,64,1.63,65,2.492,122,1.266,127,2.632,133,3.384,138,4.644,142,4.294,143,4.557,144,4.42,152,4.353,154,6.439,174,4.87,175,4.87,199,6.856,215,2.575,222,2.904,229,3.609,254,4.87,256,4.176,259,5.776,281,3.456,292,2.965,293,2.853,294,4.87,303,4.294,310,6.096,312,5.258,313,6.508,325,5.493,326,5.258,330,5.767,333,5.767,334,8.886,343,4.87,362,3.965,374,5.493,386,4.557,428,6.096,430,5.767,437,5.767,438,5.493,439,5.258,440,7.898,441,7.06,442,7.06,443,7.06,444,5.493]],["keywords/15",[]],["title/16",[68,294.412,211,300.481,212,361.085,215,228.591,370,448.574]],["content/16",[5,3.131,26,5.281,56,3.414,60,3.338,68,3.068,114,5.081,118,1.911,122,2.461,127,1.671,133,3.131,134,3.972,138,6.196,142,5.907,143,4.215,144,4.089,149,4.215,150,6.02,152,2.343,153,5.335,154,4.089,174,4.505,175,4.505,212,3.762,214,5.639,215,2.382,216,5.335,219,8.386,221,6.7,222,4.769,229,3.338,254,4.505,256,3.864,259,3.668,292,2.8,293,2.639,297,3.762,299,4.353,300,6.474,301,4.505,307,5.639,308,4.353,325,5.081,326,4.864,330,5.335,334,4.353,338,8.953,339,8.953,340,4.215,355,4.215,362,3.668,365,4.353,374,5.081,430,5.335,438,5.081,445,6.02,446,7.306,447,7.306,448,7.306,449,5.335,450,7.306,451,7.306]],["keywords/16",[]],["title/17",[68,264.296,212,324.149,215,205.208,341,388.148,342,419.051,377,332.868]],["content/17",[2,0.684,5,2.6,8,2.153,9,3.045,12,5.268,60,2.772,68,4.859,75,4.219,78,8.157,118,1.587,122,2.589,127,1.388,129,2.011,133,2.6,138,2.448,143,3.5,144,3.395,152,3.711,174,3.741,175,3.741,211,2.6,212,3.124,215,1.978,221,3.741,222,5.744,229,2.772,231,3.741,254,3.741,256,3.208,259,3.045,291,4.682,292,2.43,297,3.124,299,3.615,300,3.615,301,3.741,307,4.682,324,4.682,325,4.219,326,4.039,330,4.429,340,3.5,342,6.279,343,3.741,345,6.56,347,4.999,348,8.932,349,4.429,350,4.682,351,4.429,365,3.615,370,3.881,374,4.219,432,6.887,433,5.423,435,4.999,438,4.219,439,6.279,452,4.999,453,6.067,454,5.423,455,8.431,456,9.432,457,6.067,458,5.423,459,6.067,460,6.067,461,6.067,462,5.423,463,6.067,464,6.067,465,6.067,466,6.067,467,4.999,468,6.067,469,6.067,470,5.423,471,5.423]],["keywords/17",[]],["title/18",[28,245.655,311,387.575,367,296.271,472,791.352]],["content/18",[]],["keywords/18",[]],["title/19",[25,346.27,28,245.655,269,610.789,377,418.482]],["content/19",[2,1.332,31,5.519,36,6.421,44,7.283,52,6.004,62,4.266,63,8.02,65,3.726,114,8.214,234,9.116,311,5.784,378,12.498,473,10.558,474,7.556,475,11.811,476,9.116,477,11.811,478,7.556,479,10.558,480,11.811,481,9.116,482,11.811]],["keywords/19",[]],["title/20",[28,281.909,269,700.93,328,493.72]],["content/20",[2,1.652,29,7.162,52,4.432,57,5.619,65,3.532,83,6.086,142,6.086,147,8.64,149,6.459,354,8.174,380,6.265,474,9.371,476,8.64,478,7.162,483,10.007,484,10.007,485,11.195,486,9.225,487,7.005,488,11.195,489,9.225,490,11.195,491,9.225,492,7.162,493,11.195,494,10.007,495,11.195]],["keywords/20",[]],["title/21",[215,257.988,299,471.531,300,471.531,301,487.981]],["content/21",[4,2.748,18,3.152,26,3.562,68,4.068,118,3.971,122,3.036,127,2.216,138,2.534,142,3.414,149,3.623,152,2.014,154,3.514,197,4.863,199,3.742,208,4.181,211,2.691,212,4.989,213,5.123,215,2.047,223,4.367,255,3.872,256,3.321,259,3.152,262,4.847,298,6.43,299,5.772,300,5.772,301,7.293,307,10.262,308,7.047,334,3.742,337,2.934,341,3.872,360,6.737,373,5.613,377,3.321,386,3.623,496,4.847,497,6.28,498,6.28,499,6.28,500,15.18,501,13.296,502,4.847,503,6.737,504,5.613,505,4.017,506,5.613,507,6.28,508,6.28,509,3.514,510,5.613,511,4.181,512,4.181]],["keywords/21",[]],["title/22",[2,89.223,64,163.29,65,249.664,310,610.789]],["content/22",[2,1.836,12,3.414,26,3.11,52,3.349,62,4.367,64,3.177,65,3.814,67,6.069,82,3.625,83,4.598,122,3.067,129,2.804,139,3.781,144,4.734,204,6.97,222,4.445,229,3.865,303,4.598,312,5.631,313,6.97,330,8.827,331,7.561,352,6.176,360,5.882,382,6.528,383,7.561,454,7.561,487,4.045,513,5.411,514,6.176,515,8.458,516,7.561,517,6.528,518,8.458,519,8.458,520,8.458]],["keywords/22",[]],["title/23",[295,1061.704]],["content/23",[]],["keywords/23",[]],["title/24",[197,534.797,213,563.387]],["content/24",[0,9.877,122,2.918,142,6.957,259,6.424,292,3.297,340,7.383,521,12.797,522,7.625,523,10.208,524,11.439,525,8.52,526,11.439,527,10.545,528,11.439]],["keywords/24",[]],["title/25",[68,332.274,197,397.245,212,407.521,213,418.482]],["content/25",[5,4.797,18,5.619,62,4.043,122,2.777,152,3.59,154,6.265,199,6.67,215,3.65,259,5.619,292,3.775,297,7.544,298,6.086,334,6.67,340,6.459,365,6.67,386,6.459,441,10.007,522,6.67,523,9.371,524,10.007,525,7.453,527,9.225,528,10.007,529,10.007]],["keywords/25",[]],["title/26",[122,145.577,530,811.792,531,908.14]],["content/26",[]],["keywords/26",[]],["title/27",[278,486.768,293,384.805]],["content/27",[122,2.728,146,10.065,256,6.459,262,9.427,293,6.672,303,6.64,363,6.611,532,12.214,533,10.918,534,12.214,535,12.214,536,12.214,537,12.214,538,12.214]],["keywords/27",[]],["title/28",[139,405.947,363,352.787,539,811.792]],["content/28",[62,4.412,108,7.814,122,1.958,139,5.46,222,4.491,229,5.581,278,5.581,292,3.993,355,7.047,367,4.573,368,8.918,370,7.814,533,10.918,539,13.851,540,12.214,541,12.214,542,11.96,543,12.214,544,12.214]],["keywords/28",[]],["title/29",[292,274.518,545,634.805]],["content/29",[4,5.406,120,5.261,122,2.502,139,5.523,256,6.534,292,4.022,312,10.391,365,7.362,366,7.128,367,6.405,368,9.021,546,12.355,547,11.396,548,8.592]],["keywords/29",[]],["title/30",[92,681.56,123,681.56]],["content/30",[2,1.409,62,4.515,64,2.579,65,3.943,67,6.274,83,6.795,118,3.27,132,5.841,215,4.075,242,6.795,243,8.321,299,7.448,300,7.448,512,8.321,549,10.058,550,11.173,551,12.499,552,11.173,553,12.499]],["keywords/30",[]],["title/31",[374,896.052]],["content/31",[]],["keywords/31",[]],["title/32",[554,1288.435]],["content/32",[18,5.137,68,6.556,94,4.894,138,4.13,139,4.574,142,5.563,152,3.282,154,7.723,199,6.098,212,7.107,215,5.091,222,5.074,299,6.098,300,6.098,301,6.31,333,7.472,334,9.959,341,6.31,342,9.188,343,6.31,345,7.117,367,3.831,370,6.547,386,5.904,434,9.148,435,8.433,442,9.148,443,9.148]],["keywords/32",[]],["title/33",[62,465.377]],["content/33",[]],["keywords/33",[]],["title/34",[555,877.89,556,1065.367]],["content/34",[375,8.364,376,8.145]],["keywords/34",[]],["title/35",[62,384.805,311,521.777]],["content/35",[375,8.364,376,8.145]],["keywords/35",[]],["title/36",[2,120.117,63,563.387]],["content/36",[375,8.364,376,8.145]],["keywords/36",[]],["title/37",[129,353.142,557,497.833]],["content/37",[]],["keywords/37",[]],["title/38",[558,952.339,559,952.339]],["content/38",[2,1.638,52,5.753,60,6.639,292,3.744,560,14.531,561,11.215,562,14.531,563,14.531]],["keywords/38",[]],["title/39",[2,102.39,52,359.524,557,424.363]],["content/39",[375,8.364,376,8.145]],["keywords/39",[]],["title/40",[97,397.373,557,424.363,561,700.93]],["content/40",[2,1.496,31,6.202,64,2.739,78,7.658,97,5.807,129,4.399,152,4.256,222,4.88,329,7.658,363,5.156,380,7.428,564,10.244,565,9.23,566,13.272,567,10.937]],["keywords/40",[]],["title/41",[48,294.137,97,275.429,127,143.976,131,352.271,152,201.855,568,518.686]],["content/41",[2,1.627,5,2.384,8,3.884,11,4.424,13,4.424,31,5.113,44,3.43,48,4.118,64,2.568,65,3.927,75,6.129,94,2.66,97,6.616,114,3.869,122,2.175,132,2.6,133,3.776,138,2.245,152,4.35,194,3.704,209,3.559,211,2.384,223,3.869,224,3.113,234,4.294,311,2.725,328,3.024,403,3.21,436,2.66,479,4.973,514,4.062,557,5.113,567,4.584,568,4.584,569,5.563,570,4.062,571,3.559,572,4.973,573,10.257,574,7.99,575,3.559,576,7.262,577,4.973,578,4.973,579,7.61,580,5.084,581,5.563,582,3.43,583,3.567,584,7.417,585,2.487,586,3.21,587,6.52,588,4.294,589,4.062,590,3.43,591,3.869,592,4.973,593,5.563,594,4.584,595,5.563,596,4.973,597,3.869,598,3.21,599,5.563,600,4.584,601,4.062,602,4.973,603,3.869,604,4.973,605,4.973,606,5.563,607,4.584,608,5.563,609,5.563]],["keywords/41",[]],["title/42",[2,79.056,63,370.797,127,160.382,131,392.411,380,392.411]],["content/42",[2,1.364,5,2.789,25,2.848,31,3.041,36,7.365,52,2.577,60,4.55,63,6.396,64,2.055,78,5.745,97,2.848,117,3.352,122,2.172,132,3.041,133,4.267,159,3.352,194,4.333,211,4.267,235,4.357,311,3.187,329,5.745,380,6.768,403,3.755,487,5.784,557,3.041,565,4.526,570,4.752,571,4.164,575,4.164,582,4.013,583,2.122,584,8.7,585,2.909,586,3.755,587,7.206,589,7.27,597,4.526,598,5.745,603,6.925,610,6.508,611,5.818,612,4.998,613,4.333,614,6.508,615,6.508,616,8.901,617,5.363,618,8.205,619,6.508,620,6.508,621,5.363,622,5.818,623,6.508,624,6.508,625,7.27,626,6.508,627,8.901,628,6.508,629,5.818,630,6.508,631,5.818,632,6.508,633,5.818,634,6.508]],["keywords/42",[]],["title/43",[2,70.969,97,275.429,127,143.976,131,352.271,545,375.064,612,315.976]],["content/43",[2,1.533,5,2.396,8,3.897,11,2.807,22,4.608,28,1.736,31,4.135,36,4.811,44,3.448,48,5.131,64,1.154,65,1.764,78,3.226,97,6.874,122,2.518,127,1.279,132,2.613,133,3.792,138,2.257,152,3.521,194,3.723,211,2.396,235,5.462,329,3.226,380,3.13,403,3.226,436,2.674,444,3.889,505,5.661,557,2.613,561,4.316,565,3.889,570,6.461,575,3.578,582,3.448,583,1.823,584,8.104,585,2.5,586,3.226,587,8.618,588,6.83,589,8.017,590,3.448,597,3.889,598,3.226,600,4.608,601,4.083,602,4.999,603,3.889,604,4.999,612,4.442,613,3.723,621,4.608,635,5.592,636,3.723,637,4.999,638,8.682,639,5.592,640,5.592,641,6.83,642,5.592,643,4.999,644,5.592,645,4.608,646,4.999,647,7.91,648,8.849,649,4.999,650,4.608,651,5.592,652,4.316,653,5.592,654,5.592,655,4.083,656,4.999]],["keywords/43",[]],["title/44",[64,172.983,127,119.524,131,292.442,418,334.297,565,363.411,580,301.491,657,430.594]],["content/44",[2,0.59,5,2.244,8,1.859,11,5.278,12,2.114,44,3.229,60,2.393,64,1.733,65,1.652,76,3.35,78,4.846,97,2.292,110,7.507,122,2.367,127,1.198,132,3.924,133,5.155,138,2.114,194,3.487,211,2.244,242,4.566,302,3.824,341,5.179,377,2.77,403,6.94,418,3.35,467,4.316,557,4.913,565,5.841,574,3.824,575,5.373,578,4.682,580,6.066,582,5.179,583,4.581,584,9.143,585,2.341,586,7.597,587,7.845,589,3.824,590,3.229,592,4.682,596,4.682,598,6.066,600,4.316,601,3.824,655,3.824,657,4.316,658,4.316,659,4.682,660,5.237,661,13.167,662,10.514,663,12.028,664,5.237,665,10.514,666,5.237,667,8.398,668,5.237,669,5.237,670,5.237,671,8.398,672,5.237,673,10.514,674,7.507,675,8.398,676,8.398,677,5.237,678,5.237,679,5.237,680,5.237,681,4.682]],["keywords/44",[]],["title/45",[64,129.884,97,275.429,127,143.976,131,352.271,152,201.855,268,363.171]],["content/45",[2,1.087,5,2.675,8,3.423,10,3.134,13,3.134,22,5.144,64,2.432,94,2.986,97,5.8,122,2.297,127,1.428,132,2.917,133,2.675,134,5.243,138,2.52,152,4.594,170,9.095,171,5.581,202,3.602,235,2.732,268,3.602,272,5.156,281,2.732,289,4.156,297,3.215,302,4.558,380,3.494,403,3.602,444,4.342,557,2.917,573,5.144,574,7.042,575,3.994,580,3.602,582,3.85,583,2.035,584,5.747,585,4.311,586,3.602,587,5.747,588,9.095,598,3.602,612,4.841,617,5.144,622,8.621,636,4.156,682,6.243,683,10.534,684,5.144,685,6.243,686,5.581,687,4.819,688,8.621,689,5.581,690,6.243,691,6.243,692,4.342,693,6.243,694,6.243,695,5.581,696,6.243,697,3.994,698,8.195,699,6.243,700,4.342,701,6.243,702,4.342,703,4.558,704,6.243,705,5.144,706,6.243,707,6.243,708,6.243]],["keywords/45",[]],["title/46",[60,414.93,65,286.51,67,455.871]],["content/46",[375,8.364,376,8.145]],["keywords/46",[]],["title/47",[259,534.797,292,274.518]],["content/47",[2,0.946,4,3.672,11,4.213,12,3.387,62,5.074,64,1.732,112,4.697,122,1.345,127,1.92,129,3.985,133,6.573,138,3.387,139,3.751,142,4.562,144,6.728,173,8.361,197,4.213,224,4.697,231,7.413,239,6.915,242,4.562,254,7.413,255,5.175,256,6.357,257,6.477,258,5.369,259,7.052,260,7.502,261,5.175,264,7.502,266,7.502,271,4.842,273,6.127,277,6.477,278,5.493,279,7.502,280,6.127,281,3.672,285,6.915,286,6.915,287,7.502,289,5.587,290,6.915,292,2.162,709,7.502,710,7.502,711,6.915,712,8.392]],["keywords/47",[]],["title/48",[295,1061.704]],["content/48",[68,5.505,197,6.581,212,6.751,213,6.933,259,6.581,292,4.174,297,6.751,311,6.421,340,9.345,365,7.812,522,9.651,523,10.362]],["keywords/48",[]],["title/49",[522,767.722]],["content/49",[68,5.505,122,2.102,212,6.751,213,6.933,244,11.719,297,6.751,509,7.337,522,7.812,523,8.387,525,8.728,526,11.719,527,13.347,529,11.719,713,13.11,714,13.11]],["keywords/49",[]],["title/50",[18,397.245,129,262.313,152,253.773,334,471.531]],["content/50",[28,3.512,62,4.086,122,2.631,133,4.848,138,4.566,152,3.628,154,6.331,174,6.976,175,6.976,177,9.322,180,8.26,254,6.976,256,7.8,262,8.731,325,7.867,326,7.531,327,10.112,328,6.15,332,9.322,334,6.741,340,6.527,366,6.527,392,9.322,393,10.112,421,10.112,715,11.313]],["keywords/50",[]],["title/51",[68,332.274,129,262.313,212,407.521,370,506.261]],["content/51",[8,2.282,9,3.228,11,3.228,12,3.982,26,2.364,51,4.695,60,2.938,68,2.7,75,6.861,78,3.71,104,4.114,122,2.158,133,4.228,134,6.526,138,6.185,139,2.874,149,3.71,152,3.849,153,4.695,154,3.599,174,6.084,175,6.084,180,7.204,197,3.228,199,5.879,212,5.081,213,3.4,214,4.963,215,3.216,216,4.695,217,4.114,218,6.084,219,4.963,220,5.748,221,6.084,222,4.95,254,6.084,291,4.963,292,1.657,297,3.311,323,5.299,324,4.963,325,6.861,326,6.568,332,8.13,337,3.005,341,3.965,342,7.991,343,6.084,345,4.472,346,5.748,347,5.299,348,4.963,349,4.695,350,4.963,351,4.695,355,3.71,365,3.831,370,4.114,386,3.71,462,5.748,716,6.43,717,6.43,718,6.43,719,6.43,720,6.43,721,6.43,722,6.43]],["keywords/51",[]],["title/52",[144,721.066]],["content/52",[2,1.597,12,4.294,52,4.212,56,4.972,64,2.195,106,4.861,122,2.553,222,3.912,235,4.655,240,8.767,248,8.212,293,3.843,294,6.561,303,5.784,310,8.212,315,6.139,320,9.511,342,7.083,474,9.062,478,6.806,723,10.639,724,10.639,725,10.639,726,10.639,727,8.767,728,10.639,729,9.511,730,10.639,731,10.639,732,10.639,733,10.639]],["keywords/52",[]],["title/53",[734,791.352,735,791.352,736,791.352,737,610.789]],["content/53",[]],["keywords/53",[]],["title/54",[256,563.387,737,822.282]],["content/54",[]],["keywords/54",[]],["title/55",[2,89.223,82,339.123,430,577.808,511,526.832]],["content/55",[2,1.188,4,4.61,8,3.739,26,5.174,41,8.681,109,5.425,118,2.756,127,2.41,138,4.252,219,8.131,222,3.874,224,5.896,265,8.681,281,4.61,364,7.692,399,8.131,424,6.74,430,7.692,449,7.692,517,8.131,738,9.417,739,9.417,740,14.072,741,10.535,742,9.417,743,10.535,744,14.072,745,8.681,746,10.535,747,8.131,748,10.535,749,8.681,750,8.681]],["keywords/55",[]],["title/56",[4,397.373,138,366.51,362,455.871]],["content/56",[2,1.393,6,9.021,8,5.539,45,9.536,51,9.021,60,5.645,78,7.128,138,4.986,241,10.181,271,9.005,349,9.021,362,6.202,402,10.181,513,7.904,749,10.181,751,12.355,752,11.044,753,9.021,754,12.355]],["keywords/56",[]],["title/57",[76,506.261,106,361.57,109,407.521,127,181.007]],["content/57",[106,6.739,109,5.826,116,8.731,117,5.826,118,2.959,119,10.112,120,3.813,121,8.26,122,2.631,127,2.588,133,4.848,302,8.26,311,5.54,335,8.26,496,8.731,755,10.112,756,14.749,757,14.749,758,11.313,759,8.731,760,10.112,761,11.313,762,11.313,763,11.313]],["keywords/57",[]],["title/58",[5,339.123,109,407.521,223,550.352,401,652.094]],["content/58",[4,5.955,109,8.534,112,9.275,197,6.831,261,8.392,281,5.955,418,8.706,764,13.609,765,9.464,766,12.165,767,13.609]],["keywords/58",[]],["title/59",[62,384.805,737,822.282]],["content/59",[]],["keywords/59",[]],["title/60",[2,89.223,38,506.261,63,418.482,768,387.575]],["content/60",[2,1.597,5,4.559,8,3.776,25,4.655,36,5.784,37,5.341,44,6.561,48,6.619,63,7.491,97,4.655,122,2.553,337,4.972,351,7.768,355,6.139,363,4.133,400,7.399,406,7.083,509,5.954,513,6.806,768,5.211,769,10.639,770,9.511,771,7.083,772,10.639,773,5.479,774,10.639,775,10.639,776,10.639,777,8.767,778,10.639]],["keywords/60",[]],["title/61",[2,79.056,64,144.684,65,221.216,67,351.98,308,417.802]],["content/61",[8,3.852,11,5.449,28,3.37,64,2.962,80,5.901,82,4.652,83,5.901,84,6.944,101,7.926,122,1.74,143,6.263,152,3.481,193,7.549,209,6.944,298,5.901,304,5.74,308,6.468,328,5.901,337,6.708,487,5.191,549,6.944,633,9.703,779,10.855,780,7.226,781,7.926,782,10.855,783,10.855,784,10.855,785,8.945,786,6.075,787,8.945]],["keywords/61",[]],["title/62",[64,144.684,159,361.085,211,300.481,436,335.319,788,626.789]],["content/62",[2,1.303,3,5.166,25,5.057,28,3.587,48,5.4,80,6.283,81,10.33,152,3.706,198,7.693,258,7.393,298,6.283,377,6.111,487,5.526,750,9.523,773,5.951,777,9.523,780,7.693,789,9.523,790,11.556,791,11.556,792,11.556,793,7.693,794,5.66,795,11.556,796,11.556,797,11.556,798,11.556]],["keywords/62",[]],["title/63",[799,857.76]],["content/63",[]],["keywords/63",[]],["title/64",[118,237.563,222,333.91,745,748.33]],["content/64",[51,8.624,106,5.396,122,2.834,192,7.038,271,8.75,315,6.814,410,8.214,411,9.732,612,8.41,765,10.548,800,10.558,801,11.811,802,11.811,803,11.811,804,11.811,805,11.811,806,11.811,807,11.811]],["keywords/64",[]],["title/65",[2,89.223,64,163.29,65,249.664,152,253.773]],["content/65",[3,5.338,31,5.58,64,2.464,67,5.995,80,6.493,108,7.64,151,5.338,152,3.83,235,5.226,557,5.58,571,7.64,580,6.89,789,9.841,808,9.217,809,10.675,810,8.72,811,7.64,812,11.942,813,11.942,814,11.942,815,9.841,816,9.841,817,11.942,818,9.841]],["keywords/65",[]],["title/66",[2,102.39,698,631.573,819,811.792]],["content/66",[4,5.736,109,6.751,112,7.337,122,2.596,127,2.999,363,5.093,401,10.803,698,9.117,820,10.119,821,11.826,822,13.11,823,13.11,824,13.11,825,11.719]],["keywords/66",[]],["title/67",[138,366.51,199,541.12,352,663.081]],["content/67",[2,1.377,7,8.495,18,6.131,106,5.581,109,7.979,138,4.929,271,7.047,612,7.778,652,9.427,738,10.918,765,8.495,811,7.814,825,10.918,826,12.214,827,10.918,828,12.214,829,10.065,830,12.214,831,12.214,832,12.214]],["keywords/67",[]],["title/68",[557,497.833,737,822.282]],["content/68",[]],["keywords/68",[]],["title/69",[64,144.684,235,306.813,571,448.574,579,487.64,580,404.554]],["content/69",[11,5.561,12,4.471,65,3.495,82,4.748,122,1.776,129,3.672,132,5.177,133,4.748,403,6.392,557,6.799,575,7.088,576,9.129,580,6.392,582,6.832,583,3.612,584,8.669,585,4.952,586,6.392,587,8.669,597,7.705,598,6.392,607,9.129,773,5.705,833,9.904,834,11.079,835,11.079,836,9.129,837,11.079]],["keywords/69",[]],["title/70",[2,89.223,26,290.969,49,550.352,66,361.57]],["content/70",[2,1.224,64,2.24,66,6.559,101,7.926,118,2.84,122,1.74,127,2.483,132,5.072,133,4.652,250,7.926,281,4.75,403,6.263,557,5.072,575,6.944,580,6.263,582,6.693,583,3.539,584,8.553,586,6.263,598,6.263,629,9.703,638,7.549,650,8.945,703,7.926,755,9.703,799,7.226,838,6.693,839,10.855,840,10.855,841,10.855,842,7.926]],["keywords/70",[]],["title/71",[129,353.142,366,614.676]],["content/71",[]],["keywords/71",[]],["title/72",[2,89.223,173,550.352,292,203.911,821,577.808]],["content/72",[2,2.02,25,4.848,56,7.591,92,7.088,112,6.2,120,6.04,164,8.155,215,3.612,222,4.074,292,2.855,293,4.002,367,4.148,437,8.089,542,8.551,548,7.705,843,3.735,844,11.079,845,9.904,846,11.079]],["keywords/72",[]],["title/73",[64,187.389,292,234.004,847,700.93]],["content/73",[2,1.841,64,2.31,65,3.532,66,5.115,120,5.839,157,9.225,164,7.353,222,4.116,292,2.885,367,6.113,418,10.446,547,8.174,585,5.004,703,8.174,820,8.64,843,4.938,848,10.007,849,11.195,850,10.007]],["keywords/73",[]],["title/74",[129,262.313,278,361.57,292,203.911,851,610.789]],["content/74",[]],["keywords/74",[]],["title/75",[2,102.39,28,281.909,292,234.004]],["content/75",[2,0.884,28,2.434,31,3.664,48,3.664,73,6.051,120,2.643,122,2.8,137,10.558,164,3.936,208,10.522,229,3.582,292,3.483,293,2.832,303,4.262,367,2.935,389,4.388,502,12.199,852,5.016,853,7.84,854,5.219,855,9.431,856,13.024,857,7.008,858,15.805,859,15.805,860,11.445,861,7.84,862,7.84,863,7.84,864,7.84,865,7.84,866,7.84,867,7.84,868,7.84,869,4.835]],["keywords/75",[]],["title/76",[392,877.89,870,952.339]],["content/76",[]],["keywords/76",[]],["title/77",[334,541.12,871,908.14,872,811.792]],["content/77",[2,1.2,11,5.341,59,6.34,64,2.195,65,3.357,120,5.96,164,7.994,210,6.139,292,3.65,308,6.34,312,7.083,350,8.212,364,7.768,367,5.962,418,6.806,547,7.768,548,7.399,585,4.756,759,8.212,872,9.511,873,10.639,874,10.639,875,10.639,876,7.768,877,10.639,878,10.639]],["keywords/77",[]],["title/78",[366,614.676,879,952.339]],["content/78",[53,6.023,56,4.564,82,4.186,120,5.526,122,1.566,139,4.366,204,8.049,259,4.903,291,7.539,292,4.224,312,8.901,365,5.82,367,6.638,368,7.132,377,5.165,542,10.32,547,9.763,548,6.793,845,8.731,847,7.539,870,8.731,879,8.731,880,9.768,881,8.731,882,9.768,883,9.768,884,9.768,885,9.768,886,9.768,887,9.768]],["keywords/78",[]],["title/79",[4,397.373,293,328.016,843,306.123]],["content/79",[82,4.471,84,6.674,120,6.094,127,2.386,215,3.401,272,4.565,292,2.688,293,5.695,367,6.306,474,6.674,478,6.674,548,7.255,585,4.663,605,12.497,703,7.617,843,3.517,888,8.817,889,8.597,890,13.98,891,10.432,892,10.432]],["keywords/79",[]],["title/80",[366,523.962,893,811.792,894,811.792]],["content/80",[108,6.547,120,4.652,122,1.64,231,6.31,248,7.898,366,5.904,367,5.846,389,7.723,487,4.894,489,8.433,494,12.336,513,6.547,548,7.117,583,4.499,585,4.574,773,5.27,893,9.148,894,13.958,895,10.233,896,10.233,897,10.233,898,13.801,899,8.433,900,12.336,901,10.233,902,10.233,903,9.148,904,9.148,905,8.433]],["keywords/80",[]],["title/81",[120,266.755,215,257.988,341,487.981,906,577.808]],["content/81",[2,1.576,26,3.836,118,3.657,120,4.713,122,1.672,129,3.458,139,4.663,151,4.663,198,6.945,229,4.767,259,5.237,272,4.565,292,2.688,293,5.05,367,5.234,542,8.052,583,4.558,584,6.216,745,8.597,843,4.713,906,7.617,907,10.432,908,10.432,909,10.432,910,10.432,911,7.617,912,10.432,913,10.432,914,10.432,915,10.432]],["keywords/81",[]],["title/82",[522,767.722]],["content/82",[]],["keywords/82",[]],["title/83",[522,541.12,523,580.975,781,663.081]],["content/83",[375,8.364,376,8.145]],["keywords/83",[]],["title/84",[224,596.227,522,634.805]],["content/84",[375,8.364,376,8.145]],["keywords/84",[]],["title/85",[62,465.377]],["content/85",[375,8.364,376,8.145]],["keywords/85",[]],["title/86",[124,1151.741]],["content/86",[]],["keywords/86",[]],["title/87",[]],["content/87",[10,6.274,53,7.707,109,6.437,118,3.27,138,5.044,143,7.211,271,7.211,272,5.469,297,6.437,335,9.126,340,7.211,378,10.299,512,8.321,765,8.692,766,11.173,916,15.722,917,12.499,918,10.299,919,12.499]],["keywords/87",[]],["title/88",[920,1288.435]],["content/88",[2,1.841,12,4.518,13,5.619,26,4.116,64,3.023,65,3.532,67,5.619,68,4.7,70,10.007,71,10.007,112,6.265,118,3.832,127,2.561,382,8.64,403,6.459,557,5.231,579,7.785,583,3.65,625,8.174,638,7.785,641,8.64,684,9.225,838,6.903,921,11.195,922,11.195,923,11.195]],["keywords/88",[]],["title/89",[924,1288.435]],["content/89",[4,5.003,8,4.058,9,5.739,26,4.204,106,5.224,109,5.888,127,2.615,138,4.614,170,8.824,172,12.238,265,9.421,271,6.597,315,6.597,362,5.739,503,7.951,564,8.824,698,10.329,749,9.421,820,8.824,821,8.348,925,10.22,926,11.433,927,11.433,928,9.421,929,11.433,930,11.433]],["keywords/89",[]],["title/90",[931,1288.435]],["content/90",[2,1.478,13,6.581,28,4.07,52,5.19,82,5.618,118,3.429,215,5.28,222,4.82,363,5.093,583,4.274,643,11.719,843,6.188]],["keywords/90",[]],["title/91",[932,1288.435]],["content/91",[2,1.46,39,6.849,62,4.678,64,3.317,67,6.502,80,8.74,122,2.076,161,9.996,193,9.007,773,6.67,793,8.622,816,13.247,933,8.622,934,11.578]],["keywords/91",[]],["title/92",[]],["content/92",[2,1.534,3,6.083,8,4.83,9,6.831,12,5.492,18,6.831,112,7.616,439,9.06,935,13.609,936,16.572,937,13.609,938,12.165]],["keywords/92",[]],["title/93",[939,1288.435]],["content/93",[2,1.854,28,4.172,31,6.28,48,6.28,52,5.32,57,6.746,73,10.372,152,4.309,303,7.306,329,7.753,354,9.812,747,10.372,857,12.013]],["keywords/93",[]],["title/94",[940,1288.435]],["content/94",[36,7.127,37,6.581,57,6.581,63,6.933,64,3.342,67,6.581,152,4.204,197,6.581,202,7.564,234,10.119,304,6.933,580,7.564,658,10.803,780,8.728,941,13.11]],["keywords/94",[]],["title/95",[942,1288.435]],["content/95",[2,1.909,3,5.398,12,4.874,46,9.321,49,8.399,50,9.952,53,7.447,64,2.492,66,5.518,68,5.071,73,9.321,85,10.795,112,6.759,127,2.762,153,8.818,154,6.759,198,8.04,199,7.196,242,6.566,943,8.818,944,12.077]],["keywords/95",[]],["title/96",[945,1288.435]],["content/96",[3,6.161,6,10.064,7,9.586,8,4.892,9,6.919,60,6.298,152,4.42,210,7.953,268,9.636,946,12.321,947,11.358]],["keywords/96",[]],["title/97",[948,1288.435]],["content/97",[2,1.289,25,5.003,26,4.204,29,7.314,37,5.739,52,4.526,53,7.05,63,6.046,64,3.404,67,5.739,88,8.348,151,5.111,221,7.05,235,5.003,303,6.216,304,6.046,305,8.348,329,6.597,591,7.951,598,6.597,794,5.6,949,8.824,950,11.433,951,10.22,952,11.433,953,11.433]],["keywords/97",[]],["title/98",[954,1288.435]],["content/98",[2,1.393,13,6.202,53,7.619,56,5.773,106,5.645,118,4.083,125,11.044,315,7.128,329,7.128,583,5.088,603,8.592,768,6.051,838,7.619,955,12.355,956,12.355,957,9.021,958,11.044,959,11.044,960,11.044]],["keywords/98",[]],["title/99",[961,1288.435]],["content/99",[2,1.773,3,7.028,37,9.061,56,7.347,59,9.368,60,7.183,87,10.299,89,12.955,92,7.996,369,11.173,962,12.499]],["keywords/99",[]],["title/100",[963,1288.435]],["content/100",[0,8.551,1,9.904,2,1.64,12,4.471,31,5.177,38,7.088,48,6.799,64,2.286,67,5.561,82,4.748,83,6.023,97,6.366,98,9.904,100,9.129,118,2.898,122,2.604,127,2.534,308,6.601,958,9.904,964,11.079,965,11.079,966,11.079,967,11.079,968,11.079,969,9.904,970,9.904]],["keywords/100",[]],["title/101",[215,347.319,843,359.123]],["content/101",[]],["keywords/101",[]],["title/102",[215,347.319,843,359.123]],["content/102",[2,1.864,13,4.42,18,4.42,25,3.853,26,3.238,28,2.733,52,4.925,55,7.871,56,5.813,62,3.18,64,1.817,65,2.778,94,6.898,118,4.326,139,3.936,159,4.534,222,5.764,235,3.853,281,3.853,362,4.42,363,3.421,367,3.297,438,6.124,583,2.871,843,5.574,971,8.805,972,8.805,973,8.805,974,7.871,975,8.805,976,8.805,977,8.805,978,8.805,979,8.805,980,7.871,981,7.871,982,6.429]],["keywords/102",[]],["title/103",[118,207.012,215,257.988,612,397.245,843,266.755]],["content/103",[2,1.48,13,8.538,25,4.16,28,2.951,56,4.443,82,4.074,106,4.344,118,4.715,120,3.205,122,1.524,127,2.175,192,5.665,215,3.1,245,6.083,246,6.612,362,4.773,363,3.694,367,3.56,583,3.1,587,5.665,612,4.773,821,6.942,843,5.464,983,7.835,984,8.499,985,8.499,986,9.508,987,7.835,988,8.499,989,8.499,990,9.508,991,8.499,992,9.508]],["keywords/103",[]],["title/104",[127,181.007,215,257.988,366,456.58,843,266.755]],["content/104",[]],["keywords/104",[]],["title/105",[120,306.123,292,234.004,993,663.081]],["content/105",[5,5.061,26,5.576,106,5.396,118,3.09,120,6.307,215,3.85,292,3.043,315,6.814,362,5.929,363,4.588,367,4.422,583,3.85,585,5.28,590,7.283,843,5.112,993,8.624,994,6.814,995,8.624]],["keywords/105",[]],["title/106",[292,274.518,876,777.881]],["content/106",[2,1.812,25,5.667,28,4.021,65,4.086,120,6.162,164,8.775,367,4.849,585,5.79,876,9.457,994,7.473,995,9.457]],["keywords/106",[]],["title/107",[278,414.93,292,234.004,851,700.93]],["content/107",[2,1.46,26,4.762,28,4.021,56,6.052,120,4.366,122,2.076,164,6.502,229,5.918,281,5.667,292,3.337,362,6.502,367,4.849,843,4.366,852,8.286,854,8.622,994,7.473,996,12.952]],["keywords/107",[]],["title/108",[120,306.123,292,234.004,997,748.33]],["content/108",[2,1.478,26,4.82,28,4.07,52,5.19,97,7.087,120,5.46,122,2.102,164,6.581,292,3.378,363,5.093,367,4.908,590,8.084,843,4.419,889,10.803]],["keywords/108",[]],["title/109",[215,296.062,843,306.123,998,604.583]],["content/109",[18,7.394,127,3.369,159,7.586,215,4.802,509,8.244,843,4.965,999,10.244]],["keywords/109",[]],["title/110",[120,359.123,292,274.518]],["content/110",[18,6.831,120,6.024,122,2.182,363,5.287,367,5.095,843,5.586,994,7.852,1000,13.609,1001,13.609,1002,13.609]],["keywords/110",[]],["title/111",[278,414.93,292,234.004,851,700.93]],["content/111",[2,1.426,18,6.348,25,5.534,120,4.263,122,2.027,164,6.348,215,4.123,218,7.798,229,5.778,292,3.259,367,4.735,843,5.339,852,8.09,854,8.419,995,9.234,998,8.419,1003,12.646,1004,12.646]],["keywords/111",[]],["title/112",[215,296.062,293,328.016,545,541.12]],["content/112",[2,0.89,5,3.384,13,5.776,26,2.904,32,6.508,52,4.555,56,3.691,82,3.384,94,5.502,120,2.662,122,2.652,129,3.814,137,5.053,164,3.965,215,4.862,229,3.609,235,5.035,292,2.035,293,5.976,304,6.085,363,3.068,367,2.957,389,4.42,474,5.053,478,5.053,549,5.053,583,4.425,636,5.258,843,5.9,852,5.053,854,5.258,869,4.87,994,4.557,1005,7.898,1006,5.767,1007,13.573,1008,6.096,1009,7.06,1010,7.06,1011,7.06]],["keywords/112",[]],["title/113",[84,580.975,218,559.997,843,306.123]],["content/113",[]],["keywords/113",[]],["title/114",[118,278.693,838,656.95]],["content/114",[12,3.643,38,5.775,64,3.57,92,5.775,94,6.992,104,5.775,118,2.362,129,2.992,222,6.137,223,6.278,376,4.649,438,6.278,573,7.439,583,4.767,585,4.035,838,5.567,843,5.343,974,8.07,981,8.07,982,6.592,987,7.439,1012,9.028,1013,9.028,1014,13.07,1015,7.439,1016,12.66,1017,9.028,1018,9.028,1019,9.028,1020,9.028,1021,9.028,1022,9.028,1023,9.028,1024,8.07]],["keywords/114",[]],["title/115",[52,359.524,583,296.062,843,306.123]],["content/115",[104,6.875,106,4.91,118,2.811,122,2.565,166,8.855,222,3.951,235,4.702,303,5.842,304,5.683,315,6.2,574,7.846,583,3.503,768,7.838,773,7.343,808,8.294,843,5.395,1025,8.294,1026,10.746,1027,9.606,1028,10.746,1029,10.746,1030,10.746,1031,9.606,1032,10.746,1033,10.746,1034,10.746,1035,10.746]],["keywords/115",[]],["title/116",[799,857.76]],["content/116",[2,0.946,8,2.978,13,4.213,56,3.922,62,3.031,82,5.152,94,4.013,117,4.322,118,3.675,120,2.829,122,1.927,129,2.782,215,2.736,222,3.086,245,7.691,246,8.361,272,3.672,278,3.834,292,3.098,294,7.413,297,4.322,362,4.213,363,4.67,467,6.915,509,6.728,583,4.58,652,6.477,843,6.107,987,6.915,998,8.003,1010,7.502,1036,8.392,1037,8.392,1038,8.392,1039,6.915,1040,8.392,1041,8.392,1042,8.392,1043,6.915,1044,8.392,1045,6.477]],["keywords/116",[]],["title/117",[82,552.141]],["content/117",[52,5.127,127,2.962,129,4.293,134,7.041,215,5.241,242,7.041,293,5.806,394,9.457,557,6.052,843,5.893,906,9.457,1046,12.952,1047,11.578]],["keywords/117",[]],["title/118",[243,709.255,400,740.918]],["content/118",[]],["keywords/118",[]],["title/119",[122,170.781,243,709.255]],["content/119",[2,1.403,26,3.238,52,3.486,62,3.18,64,1.817,83,6.763,109,4.534,117,4.534,118,2.303,122,1.412,127,3.299,129,4.124,132,4.115,133,3.773,134,4.787,142,4.787,157,7.256,192,5.247,258,5.633,259,4.42,271,5.08,272,3.853,278,4.023,293,4.493,294,5.43,340,5.08,522,7.413,523,5.633,557,4.115,583,4.056,765,6.124,842,6.429,843,4.863,888,4.42,1048,8.805,1049,6.796,1050,8.805,1051,8.805,1052,8.805,1053,8.805,1054,8.805,1055,8.805,1056,8.805,1057,8.805,1058,7.256,1059,8.805]],["keywords/119",[]],["title/120",[11,455.871,122,145.577,322,559.997]],["content/120",[2,1.249,4,4.848,5,4.748,63,5.859,106,5.062,108,7.088,109,5.705,117,5.705,118,2.898,122,2.332,127,2.534,271,6.392,278,5.062,311,5.426,315,6.392,337,5.177,340,6.392,366,6.392,496,8.551,522,6.601,523,7.088,557,5.177,759,8.551,765,7.705,1060,11.079,1061,11.079,1062,11.079,1063,11.079,1064,11.079,1065,11.079]],["keywords/120",[]],["title/121",[122,145.577,143,523.962,144,508.235]],["content/121",[2,0.977,3,3.873,6,6.325,7,6.025,8,3.075,9,4.349,25,3.791,26,3.185,37,4.349,52,3.43,54,6.686,60,3.958,62,5.164,64,1.788,67,6.173,82,3.712,88,6.325,107,4.998,118,2.266,139,5.497,151,3.873,170,6.686,172,7.139,215,4.009,256,4.581,259,4.349,299,5.162,300,5.162,301,5.342,308,5.162,319,7.744,329,4.998,341,5.342,503,6.025,512,5.767,552,7.744,698,6.025,820,6.686,925,10.993,946,7.744,1066,8.663,1067,8.663,1068,8.663,1069,8.663,1070,8.663,1071,8.663,1072,8.663,1073,8.663,1074,8.663,1075,8.663,1076,8.663,1077,8.663]],["keywords/121",[]],["title/122",[122,145.577,127,207.72,1078,908.14]],["content/122",[285,12.307,315,8.617,1079,14.935,1080,14.935,1081,14.935,1082,14.935]],["keywords/122",[]],["title/123",[101,663.081,122,145.577,281,397.373]],["content/123",[82,5.484,243,8.52,245,10.208,281,5.6,286,10.545,386,7.383,400,8.9,424,8.187,509,7.162,549,8.187,612,6.424,799,8.52,842,9.344,1015,10.545,1083,12.797,1084,11.439,1085,11.439]],["keywords/123",[]],["title/124",[118,337.046]],["content/124",[]],["keywords/124",[]],["title/125",[118,278.693,838,656.95]],["content/125",[]],["keywords/125",[]],["title/126",[2,101.427,64,185.627,65,180.158,66,260.91,122,91.539]],["content/126",[2,1.888,3,4.07,37,4.57,57,6.393,62,3.288,64,3.75,65,4.018,66,4.16,67,4.57,82,3.902,83,6.924,84,8.148,99,7.027,118,3.332,198,6.061,272,3.984,322,5.614,406,6.061,428,7.027,549,5.824,580,7.348,636,6.061,773,4.688,794,4.459,815,7.502,816,7.502,838,5.614,847,7.027,1086,9.104,1087,11.384,1088,11.384,1089,8.138,1090,9.104]],["keywords/126",[]],["title/127",[0,700.93,2,102.39,118,237.563]],["content/127",[375,8.364,376,8.145]],["keywords/127",[]],["title/128",[53,656.95,118,278.693]],["content/128",[375,8.364,376,8.145]],["keywords/128",[]],["title/129",[25,466.17,118,278.693]],["content/129",[375,8.364,376,8.145]],["keywords/129",[]],["title/130",[118,278.693,1091,877.89]],["content/130",[]],["keywords/130",[]],["title/131",[139,476.229,512,709.255]],["content/131",[2,0.929,3,2.285,9,2.566,13,2.566,26,3.804,62,3.736,68,2.147,82,2.191,83,2.779,90,3.946,99,3.946,118,3.403,120,1.723,121,3.733,122,0.82,127,1.884,129,2.73,130,4.213,132,3.849,133,3.53,134,2.779,138,4.175,139,5.302,142,2.779,143,2.95,144,4.61,212,2.633,213,5.47,215,3.867,222,1.88,224,2.861,254,3.153,261,6.379,272,3.604,281,2.237,292,1.317,294,3.153,297,2.633,298,4.478,299,8.283,300,8.283,301,5.079,308,8.283,323,4.213,324,3.946,352,3.733,353,7.363,362,2.566,363,1.986,365,3.046,399,3.946,422,6.788,424,3.271,452,4.213,512,6.887,549,3.271,550,4.57,555,4.213,601,3.733,697,3.271,698,3.555,700,3.555,711,4.213,768,5.066,811,5.27,918,4.213,928,4.213,1058,4.213,1091,4.213,1092,5.112,1093,4.57,1094,5.112,1095,5.112,1096,5.112,1097,5.112,1098,4.213,1099,5.112,1100,5.112,1101,4.57,1102,7.363,1103,5.112,1104,8.237,1105,5.112,1106,5.112,1107,5.112,1108,5.112,1109,3.404,1110,5.112,1111,5.112,1112,5.112,1113,3.946]],["keywords/131",[]],["title/132",[138,366.51,139,405.947,405,748.33]],["content/132",[2,0.692,4,1.571,8,1.274,36,1.952,39,3.247,52,1.421,56,1.677,62,4.745,82,1.538,90,2.771,99,2.771,106,1.64,109,3.162,117,4.142,118,3.26,120,3.209,121,2.621,122,2.106,123,3.928,127,1.84,129,1.19,133,6.446,134,4.373,135,5.873,137,2.297,138,5.738,139,4.782,140,3.209,141,6.208,143,2.071,144,3.436,145,7.19,146,2.958,151,1.605,152,1.151,159,3.162,161,2.771,163,2.958,164,3.082,174,2.214,175,2.214,176,3.209,177,2.958,178,3.209,179,3.209,180,2.621,181,3.209,193,5.594,197,1.802,222,1.32,224,3.436,242,1.952,243,2.39,251,3.209,255,2.214,257,2.771,259,3.082,261,2.214,269,2.771,272,3.52,277,2.771,278,2.805,292,2.453,298,3.338,311,4.662,315,2.071,337,1.677,340,2.071,360,4.27,362,4.038,367,1.344,368,2.621,386,2.071,395,2.958,399,2.771,402,2.958,404,5.059,405,2.958,406,2.39,407,5.488,408,5.059,410,2.497,411,5.059,414,3.209,419,5.488,422,6.628,424,3.928,426,3.209,444,4.27,449,2.621,473,5.488,496,2.771,512,2.39,583,1.17,601,2.621,647,3.209,711,2.958,759,2.771,760,3.209,773,1.849,811,3.928,818,2.958,906,2.621,918,2.958,928,2.958,938,3.209,983,2.958,1058,2.958,1091,2.958,1101,3.209,1102,3.209,1114,3.59,1115,3.59,1116,3.59,1117,3.59,1118,3.59,1119,4.738,1120,6.139,1121,8.043,1122,3.59,1123,3.59,1124,3.59,1125,3.59,1126,3.59,1127,3.59,1128,3.59,1129,3.59,1130,2.958,1131,3.59,1132,3.59,1133,3.59,1134,3.59,1135,3.59,1136,3.59,1137,3.59]],["keywords/132",[]],["title/133",[799,857.76]],["content/133",[]],["keywords/133",[]],["title/134",[192,634.805,842,777.881]],["content/134",[375,8.364,376,8.145]],["keywords/134",[]],["title/135",[829,877.89,1138,1065.367]],["content/135",[375,8.364,376,8.145]],["keywords/135",[]],["title/136",[101,777.881,116,822.282]],["content/136",[62,5.043,84,8.933,123,8.933,424,8.933,612,7.009,829,11.506,842,10.195,1015,11.506,1084,12.482,1139,13.963,1140,13.963]],["keywords/136",[]],["title/137",[215,296.062,293,328.016,843,306.123]],["content/137",[]],["keywords/137",[]],["title/138",[888,646.773]],["content/138",[2,1.471,28,2.926,31,4.404,48,4.404,52,3.731,64,1.945,65,2.973,66,4.306,97,4.124,118,3.413,129,3.124,164,4.731,235,4.124,272,4.124,293,6.494,363,3.661,580,5.437,583,3.072,768,4.616,810,6.881,811,9.572,869,10.815,888,4.731,1130,7.766,1141,9.424,1142,6.029,1143,5.811,1144,9.424,1145,10.405,1146,9.424,1147,9.424]],["keywords/138",[]],["title/139",[1142,681.56,1143,656.95]],["content/139",[5,3.969,26,3.405,36,5.035,82,3.969,118,2.423,122,1.485,127,3.391,129,3.07,159,4.769,213,4.898,217,5.925,255,5.711,272,4.053,278,5.889,289,6.166,292,2.386,293,6.085,297,4.769,362,4.649,363,3.598,410,6.441,417,8.279,583,3.019,869,5.711,888,4.649,1014,11.521,1142,5.925,1143,5.711,1145,6.441,1148,8.279,1149,9.262,1150,8.279,1151,10.824,1152,7.632,1153,7.632,1154,8.279,1155,8.279,1156,7.148,1157,9.262,1158,7.632]],["keywords/139",[]],["title/140",[107,523.962,118,237.563,888,455.871]],["content/140",[2,1.557,13,8.653,25,3.561,28,2.526,82,3.487,104,5.206,106,3.718,118,4.776,122,1.304,192,4.849,215,2.653,217,5.206,222,2.992,245,5.206,246,5.659,261,5.018,272,6.041,273,5.942,293,2.939,304,4.303,367,3.047,389,4.554,474,5.206,478,5.206,583,4.501,888,6.93,983,6.705,984,7.274,985,7.274,988,7.274,989,7.274,991,7.274,1031,7.274,1130,6.705,1159,8.137,1160,8.137,1161,6.705,1162,8.137,1163,8.137,1164,8.137,1165,8.137,1166,7.274,1167,6.705]],["keywords/140",[]],["title/141",[127,160.382,583,228.591,768,343.411,888,351.98,980,626.789]],["content/141",[13,2.579,28,4.047,29,3.286,94,2.457,107,2.964,122,3.019,127,2.374,129,1.703,137,8.341,197,2.579,223,3.572,235,2.248,261,3.168,278,2.347,281,5.205,289,6.909,290,4.233,292,2.674,293,5.503,294,3.168,304,2.716,305,3.751,406,3.42,437,3.751,509,2.875,511,3.42,583,2.696,587,3.061,645,6.814,727,6.814,729,4.592,768,2.516,773,2.645,811,3.286,843,1.732,855,6.814,856,4.233,869,5.099,888,6.545,1008,3.965,1025,3.965,1045,9.181,1142,6.639,1143,6.399,1145,3.572,1150,7.392,1156,3.965,1168,4.233,1169,5.137,1170,5.137,1171,8.269,1172,8.269,1173,5.137,1174,8.269,1175,8.269,1176,7.392,1177,7.392,1178,7.392,1179,10.633,1180,8.269,1181,8.269,1182,8.269,1183,5.137,1184,5.137,1185,5.137]],["keywords/141",[]],["title/142",[127,207.72,366,523.962,888,455.871]],["content/142",[]],["keywords/142",[]],["title/143",[278,287.599,292,162.194,436,301.019,781,459.598,851,485.832,911,459.598]],["content/143",[2,1.213,28,3.339,56,5.026,107,4.159,120,3.626,122,2.924,129,3.565,137,8.232,164,5.399,215,2.35,229,4.915,292,3.316,293,6.296,343,4.445,367,4.027,389,6.02,523,4.611,583,4.652,768,3.53,843,5.875,852,8.232,854,7.161,869,7.935,900,6.443,903,6.443,904,6.443,994,6.206,1008,9.932,1025,5.563,1043,8.863,1186,6.443]],["keywords/143",[]],["title/144",[120,236.359,211,300.481,292,180.676,911,511.968,1187,511.968]],["content/144",[106,4.546,120,5.825,122,3.051,127,2.276,255,8.349,256,5.261,270,8.198,292,2.564,293,5.559,367,3.725,389,5.568,510,8.893,583,4.414,843,3.354,888,6.797,905,8.198,943,7.264,994,5.74,1187,9.886,1188,9.949,1189,9.949,1190,11.157]],["keywords/144",[]],["title/145",[292,203.911,377,418.482,911,577.808,997,652.094]],["content/145",[2,1.29,28,2.434,64,1.618,65,2.473,107,4.523,120,5.01,122,2.974,164,5.745,292,4.391,293,5.709,367,4.285,389,6.405,410,7.959,583,2.556,585,3.505,687,6.051,768,3.84,843,5.563,888,6.785,889,9.431,982,5.724,994,4.523,997,6.46,1025,8.833,1186,7.008,1187,9.869,1190,9.431,1191,6.46,1192,11.445]],["keywords/145",[]],["title/146",[210,404.554,292,180.676,876,511.968,911,511.968,1187,511.968]],["content/146",[76,5.498,118,2.248,120,5.227,122,3.052,215,2.802,255,8.777,292,3.668,293,5.601,367,3.217,389,4.809,410,9.899,545,5.121,583,4.64,585,3.841,590,5.299,687,6.633,876,6.275,888,7.145,905,11.729,994,4.958,1187,6.275,1190,7.081,1193,14.234,1194,8.594,1195,8.594,1196,8.594,1197,8.594]],["keywords/146",[]],["title/147",[129,301.025,242,493.72,366,523.962]],["content/147",[2,1.346,25,1.902,28,1.349,56,2.031,64,1.908,65,1.371,66,1.986,76,2.78,92,2.78,97,3.156,118,1.887,120,4.339,122,2.97,129,1.441,137,8.235,164,6.462,215,1.417,229,5.882,242,2.363,292,3.934,293,5.895,312,2.893,367,5.717,389,7.204,545,2.59,547,7.857,583,4.197,585,1.943,590,2.68,703,3.173,838,2.68,843,5.593,847,3.354,848,8.264,850,3.885,852,8.235,854,8.57,869,7.938,982,3.173,994,2.508,995,3.173,1008,9.935,1161,5.943,1191,3.581,1198,4.346,1199,4.346,1200,4.346,1201,3.885]],["keywords/147",[]],["title/148",[293,328.016,1142,580.975,1143,559.997]],["content/148",[4,4.235,26,3.559,106,4.423,127,2.214,213,5.119,217,6.192,270,7.976,277,7.471,278,4.423,293,6.541,360,6.732,474,6.192,476,7.471,478,6.192,486,7.976,491,7.976,583,3.156,811,6.192,843,3.263,869,5.969,943,7.067,993,7.067,1142,6.192,1143,5.969,1145,6.732,1151,7.067,1152,7.976,1154,8.652,1155,8.652,1167,10.949,1202,9.679,1203,9.679,1204,8.652,1205,9.679,1206,9.679,1207,9.679,1208,9.679,1209,9.679]],["keywords/148",[]],["title/149",[127,207.72,278,414.93,293,328.016]],["content/149",[2,1.058,24,2.6,25,4.528,26,1.069,28,3.683,29,1.861,31,2.39,48,2.39,56,1.359,62,1.051,64,0.6,65,0.918,97,4.885,118,1.338,120,2.778,122,3.048,127,1.885,129,2.731,137,9.895,154,1.628,159,1.498,164,4.136,211,1.246,229,3.765,235,1.273,272,1.273,278,5.944,289,3.405,292,2.419,293,5.75,303,2.781,304,1.538,305,2.124,311,3.353,367,3.085,389,4.612,436,1.391,474,6.005,476,5.284,478,5.272,483,4.572,486,2.397,491,5.641,509,1.628,583,3.373,585,1.3,590,1.793,645,2.397,727,2.397,768,1.424,811,1.861,838,1.793,843,4.205,852,5.272,854,5.486,855,2.397,856,7.735,869,4.221,888,4.136,943,2.124,982,2.124,993,2.124,994,1.678,995,2.124,998,4.557,1043,2.397,1143,1.793,1145,2.023,1151,6.017,1156,2.245,1167,4.215,1168,2.397,1176,6.119,1177,2.6,1178,2.6,1179,2.6,1191,2.397,1204,2.6,1210,2.6,1211,2.6,1212,2.908,1213,2.908,1214,2.908,1215,2.908,1216,2.908,1217,2.908,1218,2.908,1219,2.908,1220,2.908,1221,5.115,1222,5.115,1223,5.115,1224,2.908,1225,5.115,1226,2.397,1227,2.908,1228,2.908,1229,2.908,1230,2.908,1231,2.908]],["keywords/149",[]],["title/150",[127,243.683,444,740.918]],["content/150",[4,3.616,76,5.286,94,3.951,107,4.767,122,2.587,127,3.691,131,4.624,213,4.37,278,3.775,280,8.681,281,3.616,289,10.743,293,5.829,363,3.21,509,7.793,583,3.876,768,5.823,781,8.681,810,6.033,888,7.645,998,5.501,1119,6.377,1142,5.286,1143,5.095,1148,7.386,1151,12.27,1152,6.809,1153,6.809,1156,9.176,1232,8.263,1233,8.263,1234,8.263,1235,8.263]],["keywords/150",[]],["title/151",[799,857.76]],["content/151",[52,3.222,82,3.487,94,3.891,106,3.718,107,6.784,120,2.743,122,1.304,127,2.69,159,4.191,245,5.206,246,5.659,272,3.561,278,5.372,292,3.558,293,6.038,297,4.191,315,4.695,352,5.942,363,3.161,389,4.554,406,5.417,438,5.659,445,6.705,481,6.281,509,4.554,583,2.653,587,4.849,652,6.281,768,3.985,819,7.274,843,2.743,852,5.206,888,5.903,993,5.942,998,7.828,1039,6.705,1045,6.281,1142,7.522,1143,7.251,1151,11.713,1236,8.137,1237,8.137,1238,8.137,1239,8.137,1240,6.281,1241,8.137,1242,8.137,1243,8.137]],["keywords/151",[]],["title/152",[82,552.141]],["content/152",[2,1.443,25,5.6,28,3.973,63,6.767,118,4.174,127,2.927,129,4.242,134,6.957,242,6.957,293,4.622,294,7.891,355,7.383,394,9.344,549,8.187,906,9.344,1047,11.439,1244,12.797]],["keywords/152",[]],["title/153",[64,219.832,83,579.198]],["content/153",[]],["keywords/153",[]],["title/154",[558,952.339,559,952.339]],["content/154",[2,1.478,64,2.705,231,8.084,322,8.084,329,7.564,363,5.093,1245,13.11,1246,13.11,1247,13.11,1248,13.11,1249,13.11,1250,13.11,1251,10.119,1252,10.803,1253,13.11,1254,11.719]],["keywords/154",[]],["title/155",[11,534.797,322,656.95]],["content/155",[]],["keywords/155",[]],["title/156",[2,120.117,64,219.832]],["content/156",[2,1.945,4,4.848,12,4.471,45,8.551,46,8.551,51,8.089,64,3.002,65,4.59,66,5.062,68,4.652,112,6.2,122,2.332,235,4.848,304,5.859,571,7.088,579,7.705,625,8.089,638,7.705,641,8.551,786,6.2,1093,9.904,1255,11.079,1256,11.079,1257,11.079,1258,11.079]],["keywords/156",[]],["title/157",[218,656.95,337,497.833]],["content/157",[2,1.719,4,3.92,5,2.435,8,3.18,9,2.852,11,2.852,26,2.089,36,3.089,38,3.634,39,3.004,44,3.503,57,4.498,60,2.596,62,2.052,64,1.849,65,3.5,66,4.094,68,3.762,80,6.031,94,5.305,104,5.732,117,2.926,122,0.911,127,2.049,131,7.048,136,4.385,144,3.179,151,2.539,202,5.169,235,2.486,242,3.089,257,4.385,261,3.503,281,2.486,304,4.738,328,4.871,337,6.404,355,3.278,357,4.681,358,5.078,363,2.207,400,3.951,436,2.717,470,5.078,487,4.285,492,3.634,504,5.078,511,5.965,513,5.732,555,4.681,571,3.634,572,5.078,579,3.951,591,3.951,613,3.782,618,4.681,625,4.148,638,3.951,641,4.385,649,5.078,768,2.782,786,5.014,933,3.782,949,4.385,999,3.951,1089,5.078,1109,5.965,1259,5.078,1260,5.681,1261,5.078,1262,5.681,1263,5.681,1264,4.681,1265,5.681,1266,5.681,1267,4.681,1268,5.078,1269,5.078,1270,5.681,1271,5.681,1272,4.385,1273,5.681,1274,5.681,1275,5.078,1276,5.681,1277,5.681,1278,5.681,1279,4.681]],["keywords/157",[]],["title/158",[129,353.142,1280,952.339]],["content/158",[2,2.13,64,3.517,65,4.499,66,6.515,122,2.923,235,6.239,303,7.752,304,7.541,439,7.154,455,9.606,458,9.606,517,8.294,1281,10.746,1282,10.746]],["keywords/158",[]],["title/159",[5,552.141]],["content/159",[]],["keywords/159",[]],["title/160",[173,740.918,1283,1065.367]],["content/160",[2,1.695,3,4.25,4,4.16,6,6.942,7,6.612,10,4.773,12,6.066,49,6.612,57,4.773,65,3,66,4.344,68,3.992,94,4.547,149,5.486,152,3.049,202,5.486,222,3.496,280,6.942,311,4.657,591,6.612,594,7.835,613,6.33,631,8.499,655,6.942,702,6.612,786,5.321,789,7.835,809,8.499,934,8.499,947,7.835,957,6.942,1109,6.33,1158,7.835,1284,9.508,1285,9.508,1286,9.508,1287,9.508,1288,6.942,1289,8.499,1290,8.499,1291,9.508,1292,9.508,1293,8.499]],["keywords/160",[]],["title/161",[123,813.315,1098,748.33]],["content/161",[2,1.747,3,1.751,8,3.577,9,4.307,12,4.068,26,2.431,28,1.216,36,2.13,37,4.307,39,5.954,57,6.131,64,2.682,65,2.086,66,3.021,67,1.967,68,1.645,94,1.873,95,5.104,122,2.536,130,3.228,149,2.26,151,2.956,159,2.017,197,1.967,202,2.26,210,2.26,211,1.679,221,2.416,222,3.155,255,2.416,272,1.714,311,3.238,328,5.479,337,4.71,354,2.86,377,2.072,380,2.192,418,2.506,432,2.86,436,1.873,439,2.608,487,4.82,489,5.449,492,2.506,503,5.967,505,4.23,513,5.489,525,5.712,545,2.334,591,2.724,603,9.041,612,1.967,613,2.608,655,2.86,656,3.502,658,5.449,697,5.489,700,2.724,702,2.724,753,2.86,773,2.017,780,4.402,957,2.86,1006,2.86,1109,2.608,1113,3.024,1161,3.228,1168,3.228,1211,3.502,1251,3.024,1272,6.622,1288,4.828,1289,3.502,1290,3.502,1293,3.502,1294,3.228,1295,3.502,1296,3.502,1297,3.502,1298,3.502,1299,3.918,1300,3.502,1301,3.918,1302,3.502,1303,3.918,1304,3.918,1305,3.918,1306,3.918,1307,3.228,1308,3.918,1309,3.024,1310,3.918,1311,3.502,1312,3.228,1313,3.918,1314,8.305,1315,5.911,1316,3.918,1317,3.918,1318,5.104,1319,9.278,1320,5.911,1321,3.918,1322,3.918,1323,3.918,1324,3.918,1325,3.918,1326,3.502,1327,3.918,1328,3.228,1329,3.918,1330,3.502]],["keywords/161",[]],["title/162",[129,353.142,142,579.198]],["content/162",[2,1.39,8,4.374,57,6.187,59,3.999,60,3.067,65,2.118,66,3.067,80,5.542,104,4.294,122,2.675,152,2.152,186,4.294,202,3.872,209,4.294,439,4.468,487,5.894,503,10.294,505,8.806,506,11.018,513,7.885,514,4.901,516,6,692,7.09,702,4.668,742,6,752,6,1201,6,1280,6,1294,5.531,1296,6,1302,6,1319,10.157,1320,9.113,1331,6.712,1332,6.712,1333,6.712,1334,6.712,1335,6.712,1336,6.712,1337,6.712,1338,6.712,1339,6.712,1340,4.668,1341,6.712,1342,6.712,1343,6.712,1344,6,1345,7.443,1346,6,1347,6.712,1348,10.194,1349,9.113,1350,6.712,1351,6.712,1352,6.712,1353,6.712,1354,6.712,1355,10.194,1356,6.712]],["keywords/162",[]],["title/163",[62,384.805,549,681.56]],["content/163",[]],["keywords/163",[]],["title/164",[117,548.63,173,740.918]],["content/164",[2,1.083,8,5.363,9,4.821,10,2.303,11,2.303,12,3.044,13,3.786,26,1.687,37,4.821,39,6.5,48,3.524,57,3.786,64,2.295,65,3.03,66,3.446,68,1.926,95,3.541,122,2.556,127,2.197,151,3.371,202,5.541,208,6.394,209,4.825,217,2.935,222,4.519,298,4.1,304,3.988,322,2.829,328,6.048,354,3.35,355,5.541,386,2.647,427,4.101,436,2.194,487,5.32,492,4.825,502,3.541,513,6.144,514,3.35,525,3.054,530,4.101,625,3.35,636,3.054,684,3.78,697,2.935,702,3.191,705,3.78,710,4.101,753,3.35,768,2.247,771,6.394,773,2.363,780,6.394,781,3.35,786,4.221,794,3.694,810,5.507,957,3.35,1049,5.821,1113,3.541,1119,5.821,1226,3.78,1264,3.78,1267,3.78,1295,4.101,1297,4.101,1309,3.541,1312,3.78,1357,4.588,1358,4.588,1359,7.542,1360,3.35,1361,4.588,1362,4.588,1363,4.588,1364,4.588,1365,6.742,1366,3.541,1367,3.78,1368,4.588,1369,4.101,1370,3.35,1371,4.588,1372,4.588,1373,4.588,1374,4.588,1375,4.588,1376,4.588,1377,3.541,1378,4.588,1379,4.588,1380,4.588,1381,4.588,1382,4.588]],["keywords/164",[]],["title/165",[151,476.229,311,521.777]],["content/165",[2,1.255,3,6.142,18,2.867,28,3.921,29,3.654,31,2.669,36,3.105,37,2.867,38,3.654,48,2.669,52,2.261,62,2.063,63,5.887,64,2.835,65,1.802,66,2.609,83,3.105,97,4.871,100,4.706,107,3.295,118,2.354,122,2.61,127,2.546,131,5.035,147,4.408,151,4.976,208,5.99,209,5.756,211,3.856,218,3.522,222,4.093,235,5.527,247,5.105,268,3.295,302,6.569,303,3.105,304,3.02,305,4.17,318,4.408,363,2.219,380,3.196,487,4.303,570,6.569,591,3.972,747,4.408,821,4.17,951,5.105,999,6.257,1006,4.17,1049,4.408,1158,4.706,1251,4.408,1288,4.17,1311,5.105,1312,4.706,1328,4.706,1383,5.711,1384,5.711,1385,8.592,1386,5.711,1387,5.711,1388,5.711,1389,5.711,1390,5.711,1391,5.711,1392,5.711,1393,4.408,1394,7.414,1395,4.706,1396,5.105,1397,5.711,1398,5.711,1399,4.706,1400,5.711,1401,5.711,1402,5.711]],["keywords/165",[]],["title/166",[355,456.58,646,707.395,818,652.094,1403,707.395]],["content/166",[2,0.856,8,2.696,10,2.323,11,3.813,26,1.701,28,1.436,37,2.323,39,2.447,48,2.162,64,3.298,95,3.571,117,2.383,122,2.705,127,2.21,131,2.59,147,3.571,150,6.259,151,3.395,152,3.098,159,2.383,186,2.96,197,2.323,209,4.859,210,2.67,211,3.255,218,2.853,221,2.853,222,1.701,224,2.59,229,2.114,231,2.853,235,3.324,273,3.379,298,4.129,328,4.129,337,5.225,351,5.546,355,5.574,357,3.813,363,1.798,377,2.447,380,2.59,406,5.057,436,2.213,437,3.379,481,3.571,487,2.213,492,4.859,509,4.251,613,3.081,753,3.379,768,3.72,771,6.432,773,2.383,780,5.057,786,5.407,787,6.259,793,3.081,794,5.477,810,3.379,1006,3.379,1045,3.571,1109,3.081,1153,3.813,1226,3.813,1264,3.813,1267,3.813,1288,5.546,1309,3.571,1328,3.813,1360,5.546,1367,3.813,1370,5.546,1377,3.571,1385,3.571,1395,3.813,1404,4.627,1405,4.627,1406,4.627,1407,3.571,1408,9.661,1409,3.571,1410,3.813,1411,3.813,1412,4.627,1413,4.136,1414,4.136,1415,4.627,1416,4.627,1417,4.627,1418,4.627,1419,7.596,1420,4.627,1421,4.627,1422,4.627,1423,4.627,1424,4.136,1425,4.627,1426,4.136,1427,4.627,1428,3.813,1429,4.627,1430,4.136,1431,4.627]],["keywords/166",[]],["title/167",[49,631.573,192,541.12,1432,908.14]],["content/167",[5,3.384,12,4.644,28,2.452,39,4.176,48,3.691,64,2.374,102,5.767,117,5.925,118,2.066,122,3.054,127,2.632,131,4.42,151,5.143,152,2.533,159,4.067,222,2.904,224,4.42,272,3.456,337,3.691,355,6.639,360,5.493,363,3.068,511,9.928,545,4.706,612,3.965,771,5.258,780,5.258,793,7.66,794,6.648,933,5.258,999,8.002,1113,6.096,1309,6.096,1365,7.06,1414,7.06,1426,7.06,1430,7.06,1433,7.898,1434,7.898,1435,7.898,1436,7.06,1437,7.898,1438,7.898]],["keywords/167",[]],["title/168",[102,777.881,794,521.777]],["content/168",[]],["keywords/168",[]],["title/169",[794,631.028]],["content/169",[26,4.82,64,3.342,151,7.24,349,9.572,697,8.387,777,10.803,786,7.337,788,11.719,793,8.728,794,6.421,933,8.728,949,10.119,960,11.719,1439,10.803]],["keywords/169",[]],["title/170",[298,700.471]],["content/170",[2,0.807,10,3.594,28,3.979,38,4.58,64,2.645,65,2.259,66,4.89,80,6.968,83,3.892,97,3.133,117,5.511,118,1.873,122,2.44,123,4.58,151,5.729,152,3.432,166,5.9,186,9.098,211,5.492,229,3.271,268,4.131,281,3.133,298,3.892,322,4.415,337,5.989,363,2.781,391,6.4,400,4.979,424,4.58,436,3.424,511,4.767,545,6.377,598,4.131,636,4.767,692,7.443,697,4.58,768,3.507,786,4.007,787,5.9,794,3.507,815,5.9,1240,8.261,1261,6.4,1268,6.4,1340,4.979,1407,5.526,1409,5.526,1410,5.9,1411,5.9,1440,7.16,1441,7.16,1442,7.16,1443,7.16,1444,4.979,1445,7.16,1446,7.16,1447,7.16,1448,7.16,1449,7.16]],["keywords/170",[]],["title/171",[224,442.876,794,387.575,1119,610.789,1403,707.395]],["content/171",[2,0.897,5,3.41,8,2.824,10,3.994,32,6.556,38,5.09,39,4.207,64,3.088,80,8.643,97,5.062,116,6.141,117,7.019,122,2.659,127,2.646,152,3.71,211,5.841,224,4.453,258,5.09,281,3.481,382,6.141,452,6.556,505,5.09,514,8.447,786,8.375,794,3.897,833,7.112,999,5.533,1298,7.112,1318,6.141,1345,5.809,1424,7.112,1428,9.532,1450,7.956,1451,11.568,1452,7.956,1453,11.568,1454,7.956,1455,7.956,1456,7.956,1457,7.956,1458,7.956,1459,7.956,1460,7.956]],["keywords/171",[]],["title/172",[5,389.171,217,580.975,1461,811.792]],["content/172",[8,3.154,10,3.458,12,1.66,13,2.065,18,2.065,28,4.128,39,5.498,52,1.628,59,4.104,62,2.488,64,2.145,80,7.882,122,2.944,123,6.651,127,0.941,129,1.363,151,6.235,152,2.209,186,7.405,210,2.373,211,4.96,216,3.003,255,2.536,268,5.998,281,1.8,294,2.536,328,2.236,335,3.003,337,3.219,343,2.536,345,2.86,377,6.622,436,1.967,444,2.86,449,3.003,487,1.967,505,5.686,525,2.738,545,6.195,613,5.917,655,3.003,659,3.676,692,2.86,700,2.86,771,2.738,773,3.547,785,3.389,794,3.374,808,6.86,899,3.389,933,2.738,959,3.676,1009,3.676,1049,6.86,1145,2.86,1240,8.024,1294,3.389,1318,8.024,1340,2.86,1345,3.003,1346,3.676,1349,3.676,1366,3.174,1411,3.389,1444,10.412,1461,6.157,1462,4.113,1463,6.888,1464,6.888,1465,4.113,1466,4.113,1467,4.113,1468,4.113,1469,4.113,1470,4.113,1471,4.113,1472,4.113,1473,4.113,1474,4.113,1475,4.113,1476,4.113,1477,4.113,1478,7.945]],["keywords/172",[]],["title/173",[1439,748.33,1444,631.573,1479,908.14]],["content/173",[2,0.673,5,2.556,8,3.304,10,4.673,12,2.408,28,1.852,57,2.994,59,3.554,64,1.921,65,1.882,68,2.505,80,7.032,97,2.61,108,3.816,117,3.072,122,2.249,127,1.364,151,5.118,152,5.151,186,3.816,210,3.442,211,4.906,242,3.243,250,4.356,268,5.371,281,5.66,335,4.356,337,2.788,377,3.155,424,3.816,436,2.853,509,3.338,511,3.971,545,5.547,567,4.916,571,3.816,607,4.916,636,6.198,674,5.332,692,4.149,700,4.149,773,3.072,785,4.916,786,5.21,793,3.971,794,7.28,881,5.332,899,4.916,998,3.971,1006,4.356,1098,4.916,1210,5.332,1318,8.836,1340,4.149,1345,4.356,1366,4.604,1413,5.332,1444,8.996,1478,8.322,1480,5.965,1481,5.965,1482,5.965,1483,9.309,1484,5.965,1485,5.965,1486,5.965,1487,5.965,1488,5.332,1489,5.965,1490,9.309,1491,5.965,1492,5.965,1493,5.965]],["keywords/173",[]],["title/174",[192,634.805,1279,877.89]],["content/174",[]],["keywords/174",[]],["title/175",[2,70.969,65,198.587,337,294.137,436,301.019,437,459.598,1279,518.686]],["content/175",[2,0.961,8,3.026,10,4.28,12,3.441,37,4.28,57,4.28,60,3.895,62,4.391,64,2.924,122,2.722,127,1.95,129,2.826,132,3.984,133,3.653,152,3.899,202,4.919,268,4.919,281,3.73,328,6.61,337,7.22,377,4.508,403,4.919,436,5.814,492,5.454,557,5.681,571,5.454,579,5.929,582,5.257,583,2.779,584,7.245,585,3.811,586,4.919,597,5.929,598,4.919,786,4.771,836,7.025,1166,7.621,1259,7.621,1360,6.225,1370,6.225,1377,6.58,1494,8.525,1495,8.525,1496,8.525]],["keywords/175",[]],["title/176",[799,857.76]],["content/176",[]],["keywords/176",[]],["title/177",[64,219.832,933,709.255]],["content/177",[2,0.961,8,3.026,9,4.28,39,4.508,45,9.384,64,2.924,118,2.23,122,2.477,151,5.435,152,2.734,192,5.08,197,4.28,211,5.21,229,5.555,250,6.225,258,5.454,272,3.73,298,4.635,337,6.622,487,4.077,492,5.454,585,3.811,586,4.919,612,6.103,753,6.225,771,8.094,786,4.771,793,5.676,794,5.955,1039,7.025,1087,7.621,1240,9.384,1307,7.025,1360,6.225,1367,7.025,1370,6.225,1407,6.58,1409,6.58,1428,7.025,1444,5.929,1497,7.025,1498,8.525,1499,7.621,1500,8.525,1501,8.525]],["keywords/177",[]],["title/178",[64,163.29,1251,610.789,1252,652.094,1502,791.352]],["content/178",[2,1.656,3,4.07,8,3.231,26,3.348,28,3.953,39,4.815,64,2.628,108,5.824,122,2.355,127,2.082,149,5.253,151,4.07,159,4.688,192,5.425,208,6.061,211,5.458,235,3.984,258,5.824,272,3.984,273,6.648,303,4.95,318,7.027,432,6.648,487,4.354,564,7.027,612,4.57,771,6.061,957,6.648,999,6.332,1272,9.83,1300,8.138,1307,7.502,1314,7.502,1315,8.138,1360,6.648,1385,7.027,1393,7.027,1394,7.502,1399,7.502,1497,7.502,1503,9.104,1504,9.104,1505,9.104,1506,9.104]],["keywords/178",[]],["title/179",[102,663.081,118,237.563,272,397.373]],["content/179",[2,1.213,3,4.808,9,3.618,11,5.399,12,4.341,25,3.154,28,2.238,31,3.368,37,3.618,64,2.944,80,3.919,120,2.43,122,2.955,143,4.159,151,4.808,152,2.311,185,9.615,186,6.881,211,3.089,222,2.65,229,3.293,237,6.443,272,3.154,281,4.707,311,3.53,326,4.799,418,4.611,436,3.447,471,6.443,505,4.611,585,3.222,586,4.159,612,3.618,794,5.268,933,4.799,943,5.263,949,5.563,1011,6.443,1085,9.615,1109,4.799,1272,5.563,1314,5.939,1330,6.443,1393,5.563,1395,5.939,1439,8.863,1499,6.443,1507,7.208,1508,7.208,1509,7.208,1510,7.208,1511,7.208,1512,6.443,1513,7.208,1514,7.208,1515,7.208,1516,7.208]],["keywords/179",[]],["title/180",[2,89.223,78,456.58,329,456.58,363,307.418]],["content/180",[2,1.74,3,1.619,4,0.866,8,2.195,10,2.512,12,0.799,27,1.77,31,3.783,36,2.721,37,3.105,44,1.221,48,1.692,52,0.784,53,1.221,57,2.512,60,2.826,63,1.915,64,2.323,65,1.579,66,1.655,67,0.994,75,3.48,76,1.267,78,2.089,83,1.076,92,1.267,94,1.732,97,6.024,102,1.446,112,1.108,114,2.518,117,1.865,118,1.618,122,2.659,127,0.828,129,0.656,132,2.338,133,2.144,134,2.721,149,5.123,152,4.895,158,1.77,198,1.318,202,1.142,210,2.089,211,2.144,218,2.233,235,0.866,241,1.631,256,1.047,258,1.267,267,1.77,268,3.569,272,2.19,297,1.02,311,2.451,328,1.076,329,4.157,363,2.799,377,1.047,380,4.969,395,1.631,403,2.887,408,1.631,415,3.237,436,2.393,439,4.118,445,1.631,449,2.644,481,1.528,484,1.77,487,2.393,503,4.302,505,1.267,517,1.528,557,3.783,561,1.528,564,1.528,565,1.377,568,2.984,570,3.654,574,3.654,575,3.201,576,1.631,577,1.77,582,3.086,583,1.631,584,5.705,585,2.765,586,2.887,587,5.291,588,3.862,589,2.644,590,2.233,594,1.631,597,3.48,603,7.091,611,1.77,612,3.617,616,1.77,617,1.631,618,1.631,621,1.631,627,1.77,637,1.77,638,1.377,650,1.631,657,1.631,681,1.77,683,3.237,686,1.77,687,1.528,688,3.237,689,1.77,692,1.377,695,3.237,697,1.267,700,1.377,702,1.377,705,1.631,739,1.77,747,1.528,750,1.631,770,4.473,773,1.865,800,1.77,808,1.528,827,1.77,836,1.631,947,1.631,1024,1.77,1027,3.237,1252,1.631,1269,1.77,1275,1.77,1319,1.631,1326,1.77,1340,2.518,1344,1.77,1345,1.446,1394,1.631,1436,1.77,1488,3.237,1497,1.631,1512,3.237,1517,6.185,1518,1.98,1519,1.98,1520,1.98,1521,1.98,1522,3.621,1523,1.98,1524,5.004,1525,1.98,1526,1.98,1527,1.98,1528,1.98,1529,1.98,1530,3.621,1531,1.98,1532,1.98,1533,1.98,1534,3.621,1535,3.621,1536,3.621,1537,1.98,1538,1.98,1539,1.98,1540,1.98,1541,3.621,1542,1.98,1543,1.98,1544,1.98,1545,1.98,1546,5.004,1547,1.98,1548,3.621,1549,1.98,1550,1.98,1551,1.98,1552,1.98,1553,1.98,1554,1.98,1555,1.98,1556,1.98,1557,1.98,1558,1.98,1559,1.98,1560,1.98,1561,1.98,1562,1.98,1563,1.98,1564,1.98,1565,1.98,1566,1.98,1567,1.98,1568,1.98,1569,1.98,1570,1.98,1571,1.98,1572,1.98,1573,1.98,1574,1.98]],["keywords/180",[]],["title/181",[231,656.95,1254,952.339]],["content/181",[62,4.622,82,5.484,127,2.927,129,4.242,132,5.98,135,9.344,142,6.957,231,7.891,278,5.847,432,9.344,557,7.456,709,11.439,969,11.439,970,11.439,1366,9.877,1575,12.797,1576,12.797]],["keywords/181",[]],["title/182",[322,656.95,394,777.881]],["content/182",[2,0.897,8,4.838,28,2.47,57,3.994,62,2.874,63,4.207,64,1.642,66,3.635,80,6.289,149,6.674,152,3.71,186,5.09,193,9.48,202,6.674,208,9.963,209,7.401,211,3.41,229,3.635,268,6.674,298,4.326,318,6.141,328,4.326,337,5.406,343,7.133,380,4.453,436,5.532,487,3.805,492,5.09,502,6.141,525,5.297,598,4.591,697,5.09,794,3.897,1109,5.297,1288,8.447,1340,5.533,1369,7.112,1370,5.809,1377,6.141,1385,6.141,1393,6.141,1396,7.112,1399,6.556,1407,6.141,1409,6.141,1410,6.556,1444,5.533,1577,7.956,1578,7.956,1579,7.956,1580,7.956,1581,7.956]],["keywords/182",[]],["title/183",[2,102.39,28,281.909,394,663.081]],["content/183",[2,1.212,3,4.804,8,3.814,9,5.394,10,5.394,28,4.426,29,6.875,36,7.752,37,7.158,41,8.855,44,8.793,52,4.254,87,8.855,88,7.846,90,8.294,109,5.534,261,6.626,271,6.2,362,5.394,487,5.139,1088,12.746,1582,10.746,1583,10.746,1584,10.746,1585,10.746,1586,10.746,1587,10.746,1588,10.746,1589,10.746]],["keywords/183",[]]],"invertedIndex":[["",{"_index":122,"title":{"26":{"position":[[5,1]]},"119":{"position":[[0,2]]},"120":{"position":[[0,2]]},"121":{"position":[[0,1]]},"122":{"position":[[0,2]]},"123":{"position":[[0,2]]},"126":{"position":[[18,1]]}},"content":{"5":{"position":[[200,2]]},"8":{"position":[[770,1],[790,1],[792,1],[891,2],[894,1],[993,1],[995,1],[997,1],[1624,1],[1800,1],[1862,1],[2145,1],[2430,1],[2490,1],[2537,1],[2656,1]]},"9":{"position":[[1,2],[1252,1],[1867,1],[1972,1],[2049,1],[2411,1],[2602,1],[2674,1],[3320,1],[3369,1],[3371,3],[3517,1],[3593,1],[3671,1],[3806,1],[3833,1],[3835,3],[4915,1]]},"13":{"position":[[393,1],[530,1],[582,1]]},"15":{"position":[[286,1]]},"16":{"position":[[137,1],[245,1],[361,1],[655,1],[688,1]]},"17":{"position":[[120,1],[341,1],[481,1],[585,1],[693,1],[735,1],[777,1],[818,1]]},"21":{"position":[[160,23],[184,1],[186,1],[188,1],[210,1],[216,1],[218,1],[230,1],[239,1],[241,23],[315,23],[339,1],[345,1],[347,1],[371,1],[383,1],[392,1],[394,23],[427,1],[460,1]]},"22":{"position":[[121,1],[127,11],[153,1],[155,1],[157,1],[163,7],[171,1],[173,1],[202,1],[204,7],[212,1],[240,1],[242,6],[249,24]]},"24":{"position":[[45,1],[69,1],[80,1],[117,1]]},"25":{"position":[[53,1],[77,1],[88,1],[130,1]]},"27":{"position":[[90,1],[142,1],[186,1]]},"28":{"position":[[152,1]]},"29":{"position":[[178,1],[180,3]]},"41":{"position":[[526,1],[665,1],[978,3],[1037,2],[1059,2]]},"42":{"position":[[379,1],[521,1],[637,1],[754,1]]},"43":{"position":[[304,1],[398,1],[470,1],[614,1],[902,2],[960,2],[983,2],[1032,4]]},"44":{"position":[[345,1],[468,1],[669,1],[809,1],[1021,1],[1513,1],[1569,1]]},"45":{"position":[[248,1],[345,2],[426,1],[445,2],[550,1]]},"47":{"position":[[1,2]]},"49":{"position":[[11,1]]},"50":{"position":[[1,1],[132,1],[206,1]]},"51":{"position":[[163,1],[343,1],[403,1],[863,1]]},"52":{"position":[[41,1],[57,1],[71,1]]},"57":{"position":[[61,1],[86,1],[129,1]]},"60":{"position":[[169,1],[222,1],[260,1]]},"61":{"position":[[137,1]]},"64":{"position":[[35,1],[95,1],[129,1],[177,1]]},"66":{"position":[[63,1],[91,1]]},"69":{"position":[[221,1]]},"70":{"position":[[290,2]]},"75":{"position":[[139,1],[141,3],[162,3],[253,3],[341,3],[432,3],[521,3],[635,3]]},"78":{"position":[[107,1]]},"80":{"position":[[338,1]]},"81":{"position":[[245,2]]},"91":{"position":[[101,1]]},"100":{"position":[[77,1],[98,1],[133,2]]},"103":{"position":[[67,1]]},"107":{"position":[[125,1]]},"108":{"position":[[102,1]]},"110":{"position":[[109,1]]},"111":{"position":[[123,1]]},"112":{"position":[[256,1],[337,1],[339,3],[379,2],[409,3],[437,1]]},"115":{"position":[[124,1],[165,1],[210,1]]},"116":{"position":[[123,1],[308,1]]},"119":{"position":[[479,1]]},"120":{"position":[[78,1],[89,1]]},"131":{"position":[[52,1]]},"132":{"position":[[105,2],[861,2],[1348,1],[1373,1],[1807,1],[1946,1],[2073,1],[2182,1]]},"139":{"position":[[117,1]]},"140":{"position":[[130,1]]},"141":{"position":[[23,1],[229,2],[282,1],[458,1],[460,1],[535,1],[537,3],[553,1],[595,3],[666,3],[725,2],[728,3],[751,3],[755,1],[757,1],[833,1],[835,3],[851,1],[877,3],[894,2],[903,3],[959,3],[980,2],[989,3],[1061,3]]},"143":{"position":[[253,1],[255,3],[295,2],[325,3],[540,1],[542,3],[582,2],[612,3],[632,1],[634,3],[674,2],[706,3]]},"144":{"position":[[211,2],[214,1],[228,1],[237,2],[316,2],[331,1],[339,1],[348,2],[427,2],[442,1]]},"145":{"position":[[230,1],[240,1],[265,2],[340,3],[344,1],[496,1],[506,1],[531,2],[610,3],[636,2],[715,3],[719,1]]},"146":{"position":[[246,1],[292,1],[301,2],[380,2],[395,1],[441,1],[450,2],[517,2],[532,1],[578,1],[587,2],[662,2],[677,1]]},"147":{"position":[[104,1],[300,1],[302,3],[342,2],[372,3],[519,1],[521,3],[561,2],[591,3],[595,1],[820,1],[822,3],[862,2],[892,3],[1062,1],[1064,3],[1104,2],[1134,3],[1138,1],[1322,1],[1324,3],[1364,2],[1394,3],[1532,1],[1534,3],[1574,2],[1604,3]]},"149":{"position":[[216,1],[281,1],[329,1],[377,1],[425,1],[840,1],[842,3],[858,1],[884,3],[920,2],[946,3],[977,2],[1002,3],[1034,2],[1052,3],[1087,2],[1107,3],[1147,2],[1188,2],[1200,3],[1410,1],[1412,3],[1416,2],[1474,3],[1483,1],[1495,1],[1508,3],[1532,1],[1534,3],[1558,3],[1567,1],[1594,1],[1611,3],[1788,1],[1790,3],[1811,1],[1842,3],[1871,2],[1895,3],[1929,2],[1952,3],[1982,2],[2007,3],[2042,2],[2083,3],[2271,1],[2273,3],[2290,1],[2317,3],[2346,2],[2371,3],[2403,2],[2427,3],[2457,2],[2503,3]]},"150":{"position":[[59,1],[114,1],[165,1],[230,2],[302,1]]},"151":{"position":[[212,1]]},"156":{"position":[[133,2],[215,2]]},"157":{"position":[[382,2]]},"158":{"position":[[7,16],[63,16],[93,16],[153,16],[183,16],[243,16]]},"161":{"position":[[158,1],[177,1],[193,1],[317,1],[336,1],[651,1],[695,1],[713,1],[940,1],[969,1],[976,1],[1339,1],[1402,1]]},"162":{"position":[[204,1],[223,1],[263,1],[276,8],[285,16],[347,1],[358,1],[372,24]]},"164":{"position":[[142,1],[212,1],[298,1],[341,1],[380,2],[494,1],[803,1],[879,1],[1135,1],[1183,1],[1220,2]]},"165":{"position":[[156,1],[164,1],[190,1],[202,1],[259,1],[319,1],[449,2],[657,1],[1063,1]]},"166":{"position":[[188,1],[227,1],[275,1],[526,1],[564,1],[602,1],[819,1],[856,1],[881,1],[926,2],[1170,1],[1212,2],[1417,1],[1457,2]]},"167":{"position":[[1,1],[50,1],[75,1],[140,1],[158,1],[205,1],[244,1],[280,1],[324,1],[342,1],[355,1],[380,1],[414,1],[444,1],[473,1]]},"170":{"position":[[51,1],[121,1],[162,1],[190,2],[516,1]]},"171":{"position":[[52,1],[132,1],[310,1],[375,1],[434,1],[457,1]]},"172":{"position":[[200,1],[224,1],[494,1],[500,1],[506,1],[512,1],[514,3],[518,1],[556,1],[562,1],[568,1],[574,1],[576,3],[580,1],[696,1],[733,1],[759,1],[785,1],[1111,1],[1130,1],[1160,1],[1172,1],[1202,1],[1221,1],[1251,1],[1263,1],[1290,1]]},"173":{"position":[[474,1],[602,1],[647,1],[659,1],[731,1]]},"175":{"position":[[74,1],[136,1],[181,1],[229,1],[290,1],[296,1]]},"177":{"position":[[162,1],[209,1],[473,1],[570,1]]},"178":{"position":[[179,1],[256,1],[267,1]]},"179":{"position":[[27,1],[81,1],[165,1],[228,1],[268,1],[306,1],[366,1],[398,1],[480,1],[566,1],[608,1],[681,1],[750,1]]},"180":{"position":[[984,1],[1105,1],[1126,1],[1139,1],[1141,1],[1262,1],[1283,1],[1296,1],[1298,1],[1349,1],[1360,1],[1406,1],[1446,1],[1783,1],[1877,1],[1939,1],[1950,1],[1985,1],[2038,1],[2101,1],[2235,1],[2556,1],[2653,1],[2975,1],[3077,1],[3325,1],[3422,2],[3503,1],[3522,2],[3756,1],[3769,1],[3813,1],[3871,1],[3929,1],[4087,1]]}},"keywords":{}}],["0",{"_index":208,"title":{},"content":{"8":{"position":[[1392,2]]},"21":{"position":[[265,1]]},"75":{"position":[[216,3],[304,3],[395,3],[484,3],[576,3]]},"164":{"position":[[114,1],[1020,1],[1176,2]]},"165":{"position":[[978,1],[995,1]]},"178":{"position":[[407,2]]},"182":{"position":[[79,1],[210,1],[324,1],[326,1]]}},"keywords":{}}],["0.1",{"_index":1179,"title":{},"content":{"141":{"position":[[649,6],[718,6],[942,6],[1032,6]]},"149":{"position":[[1588,5]]}},"keywords":{}}],["0.2498",{"_index":191,"title":{},"content":{"8":{"position":[[986,6]]}},"keywords":{}}],["0.2534",{"_index":189,"title":{},"content":{"8":{"position":[[884,6]]}},"keywords":{}}],["00",{"_index":752,"title":{},"content":{"56":{"position":[[73,4]]},"162":{"position":[[36,2]]}},"keywords":{}}],["00:00",{"_index":439,"title":{},"content":{"15":{"position":[[401,6]]},"17":{"position":[[587,5],[621,6]]},"92":{"position":[[60,6]]},"158":{"position":[[1,5]]},"161":{"position":[[1467,5]]},"162":{"position":[[302,5]]},"180":{"position":[[73,5],[374,6],[493,7],[1243,6]]}},"keywords":{}}],["00:15",{"_index":936,"title":{},"content":{"92":{"position":[[67,6],[74,5]]}},"keywords":{}}],["00:30",{"_index":937,"title":{},"content":{"92":{"position":[[80,6]]}},"keywords":{}}],["00c853",{"_index":1229,"title":{},"content":{"149":{"position":[[2335,10]]}},"keywords":{}}],["00d4ff",{"_index":861,"title":{},"content":{"75":{"position":[[220,7]]}},"keywords":{}}],["00e676",{"_index":1218,"title":{},"content":{"149":{"position":[[909,10]]}},"keywords":{}}],["00ff00",{"_index":1149,"title":{},"content":{"139":{"position":[[81,8]]}},"keywords":{}}],["00ffa3",{"_index":860,"title":{},"content":{"75":{"position":[[208,7],[308,7]]}},"keywords":{}}],["01",{"_index":1331,"title":{},"content":{"162":{"position":[[39,2]]}},"keywords":{}}],["01:15",{"_index":1324,"title":{},"content":{"161":{"position":[[1473,5]]}},"keywords":{}}],["02",{"_index":1332,"title":{},"content":{"162":{"position":[[42,2]]}},"keywords":{}}],["03",{"_index":1333,"title":{},"content":{"162":{"position":[[45,2]]}},"keywords":{}}],["03:00",{"_index":1352,"title":{},"content":{"162":{"position":[[308,5]]}},"keywords":{}}],["04",{"_index":1334,"title":{},"content":{"162":{"position":[[48,2]]}},"keywords":{}}],["04:00",{"_index":458,"title":{},"content":{"17":{"position":[[687,5]]},"158":{"position":[[57,5]]}},"keywords":{}}],["05",{"_index":1335,"title":{},"content":{"162":{"position":[[51,2]]}},"keywords":{}}],["06",{"_index":1336,"title":{},"content":{"162":{"position":[[54,2]]}},"keywords":{}}],["06:00",{"_index":516,"title":{},"content":{"22":{"position":[[279,5]]},"162":{"position":[[397,5]]}},"keywords":{}}],["07",{"_index":1337,"title":{},"content":{"162":{"position":[[57,2]]}},"keywords":{}}],["08",{"_index":1338,"title":{},"content":{"162":{"position":[[60,2]]}},"keywords":{}}],["08:00",{"_index":1281,"title":{},"content":{"158":{"position":[[87,5]]}},"keywords":{}}],["09",{"_index":1339,"title":{},"content":{"162":{"position":[[63,2]]}},"keywords":{}}],["1",{"_index":436,"title":{"15":{"position":[[0,2]]},"62":{"position":[[28,1]]},"143":{"position":[[7,2]]},"175":{"position":[[9,2]]}},"content":{"41":{"position":[[1272,1]]},"43":{"position":[[477,2]]},"149":{"position":[[87,2]]},"157":{"position":[[62,1]]},"161":{"position":[[1,2]]},"164":{"position":[[1179,3]]},"166":{"position":[[82,2]]},"170":{"position":[[409,1]]},"172":{"position":[[694,1]]},"173":{"position":[[558,2]]},"175":{"position":[[258,1],[322,1]]},"179":{"position":[[748,1]]},"180":{"position":[[990,1],[1414,2],[2244,2]]},"182":{"position":[[422,1],[478,1]]}},"keywords":{}}],["10",{"_index":209,"title":{},"content":{"8":{"position":[[1395,3]]},"41":{"position":[[1206,2]]},"61":{"position":[[71,3]]},"162":{"position":[[66,2]]},"164":{"position":[[336,4],[1130,4]]},"165":{"position":[[630,4],[997,2]]},"166":{"position":[[878,2],[1167,2]]},"182":{"position":[[328,2],[424,2]]}},"keywords":{}}],["100",{"_index":502,"title":{},"content":{"21":{"position":[[267,3]]},"75":{"position":[[228,7],[316,7],[407,7],[496,7],[588,7]]},"164":{"position":[[116,4]]},"182":{"position":[[81,4]]}},"keywords":{}}],["10:00",{"_index":461,"title":{},"content":{"17":{"position":[[729,5]]}},"keywords":{}}],["11",{"_index":186,"title":{},"content":{"8":{"position":[[829,2],[931,2]]},"162":{"position":[[69,2]]},"166":{"position":[[272,2]]},"170":{"position":[[118,2],[153,2],[443,2],[500,3]]},"172":{"position":[[161,2],[185,2],[530,2],[592,2],[814,2]]},"173":{"position":[[9,3]]},"179":{"position":[[138,2],[201,2]]},"182":{"position":[[475,2]]}},"keywords":{}}],["11:00",{"_index":742,"title":{},"content":{"55":{"position":[[82,5]]},"162":{"position":[[403,5]]}},"keywords":{}}],["11t02:00:00+01:00"",{"_index":1507,"title":{},"content":{"179":{"position":[[141,23]]}},"keywords":{}}],["11t05:00:00+01:00"",{"_index":1508,"title":{},"content":{"179":{"position":[[204,23]]}},"keywords":{}}],["12",{"_index":1340,"title":{},"content":{"162":{"position":[[72,2]]},"170":{"position":[[411,2]]},"172":{"position":[[920,2]]},"173":{"position":[[234,3]]},"180":{"position":[[512,3],[682,2]]},"182":{"position":[[480,2]]}},"keywords":{}}],["120",{"_index":1372,"title":{},"content":{"164":{"position":[[794,3]]}},"keywords":{}}],["12:00",{"_index":517,"title":{},"content":{"22":{"position":[[285,5]]},"55":{"position":[[60,6]]},"158":{"position":[[147,5]]},"180":{"position":[[328,5]]}},"keywords":{}}],["13",{"_index":1341,"title":{},"content":{"162":{"position":[[75,2]]}},"keywords":{}}],["13:00",{"_index":219,"title":{},"content":{"8":{"position":[[1777,8]]},"16":{"position":[[631,7],[668,7]]},"51":{"position":[[322,8]]},"55":{"position":[[50,5]]}},"keywords":{}}],["14",{"_index":1342,"title":{},"content":{"162":{"position":[[78,2]]}},"keywords":{}}],["14:00",{"_index":14,"title":{},"content":{"1":{"position":[[106,6]]}},"keywords":{}}],["14:15",{"_index":15,"title":{},"content":{"1":{"position":[[113,6]]}},"keywords":{}}],["14:30",{"_index":16,"title":{},"content":{"1":{"position":[[120,6]]}},"keywords":{}}],["14:45)price",{"_index":17,"title":{},"content":{"1":{"position":[[127,12]]}},"keywords":{}}],["14h",{"_index":462,"title":{},"content":{"17":{"position":[[746,4]]},"51":{"position":[[796,4]]}},"keywords":{}}],["15",{"_index":8,"title":{},"content":{"1":{"position":[[53,3]]},"8":{"position":[[392,3],[1270,3]]},"9":{"position":[[2662,2]]},"17":{"position":[[388,2]]},"41":{"position":[[40,3],[556,3],[662,2]]},"43":{"position":[[611,2],[1086,5],[1156,5]]},"44":{"position":[[580,2]]},"45":{"position":[[442,2],[1181,3]]},"51":{"position":[[826,2]]},"55":{"position":[[238,2]]},"56":{"position":[[20,2],[78,3]]},"60":{"position":[[98,3]]},"61":{"position":[[24,2]]},"89":{"position":[[230,2]]},"92":{"position":[[11,2]]},"96":{"position":[[17,2]]},"116":{"position":[[87,2]]},"121":{"position":[[28,2]]},"132":{"position":[[643,2]]},"157":{"position":[[558,3],[643,5]]},"161":{"position":[[144,3],[195,4],[303,3],[354,4]]},"162":{"position":[[81,2],[253,4],[349,3]]},"164":{"position":[[72,3],[91,3],[139,2],[157,3],[209,2],[227,3],[465,2],[680,2],[1427,3]]},"166":{"position":[[835,3],[897,3]]},"171":{"position":[[295,3]]},"172":{"position":[[490,3],[1107,3],[1156,3]]},"173":{"position":[[587,3],[716,3]]},"175":{"position":[[133,2]]},"177":{"position":[[497,3]]},"178":{"position":[[263,3]]},"180":{"position":[[1973,4],[2553,2],[2586,3],[3519,2]]},"182":{"position":[[75,3],[150,2],[585,4]]},"183":{"position":[[47,2]]}},"keywords":{}}],["15%)attempt",{"_index":1472,"title":{},"content":{"172":{"position":[[719,11]]}},"keywords":{}}],["15%)min",{"_index":779,"title":{},"content":{"61":{"position":[[51,7]]}},"keywords":{}}],["15%each",{"_index":1495,"title":{},"content":{"175":{"position":[[298,7]]}},"keywords":{}}],["15)error",{"_index":1111,"title":{},"content":{"131":{"position":[[1045,9]]}},"keywords":{}}],["16",{"_index":1343,"title":{},"content":{"162":{"position":[[84,2]]}},"keywords":{}}],["16:00",{"_index":455,"title":{},"content":{"17":{"position":[[579,5],[771,5]]},"158":{"position":[[177,5]]}},"keywords":{}}],["17",{"_index":1344,"title":{},"content":{"162":{"position":[[87,2]]},"180":{"position":[[1193,2]]}},"keywords":{}}],["175",{"_index":1178,"title":{},"content":{"141":{"position":[[640,4],[933,4]]},"149":{"position":[[1579,4]]}},"keywords":{}}],["17t00:00:00+01:00"",{"_index":187,"title":{},"content":{"8":{"position":[[832,24]]}},"keywords":{}}],["17t00:15:00+01:00"",{"_index":190,"title":{},"content":{"8":{"position":[[934,24]]}},"keywords":{}}],["18",{"_index":505,"title":{},"content":{"21":{"position":[[418,2]]},"43":{"position":[[758,2],[1207,2]]},"161":{"position":[[1317,3],[1380,3]]},"162":{"position":[[90,2],[115,2],[184,2],[198,2]]},"171":{"position":[[430,3]]},"172":{"position":[[496,3],[1198,3],[1247,3]]},"179":{"position":[[577,3]]},"180":{"position":[[1036,2]]}},"keywords":{}}],["18%)attempt",{"_index":1473,"title":{},"content":{"172":{"position":[[744,12]]}},"keywords":{}}],["18.5",{"_index":1512,"title":{},"content":{"179":{"position":[[301,4]]},"180":{"position":[[1093,4],[1343,5]]}},"keywords":{}}],["18.6",{"_index":1548,"title":{},"content":{"180":{"position":[[1250,4],[1351,4]]}},"keywords":{}}],["180",{"_index":1510,"title":{},"content":{"179":{"position":[[264,3]]}},"keywords":{}}],["1800.0",{"_index":1565,"title":{},"content":{"180":{"position":[[3806,6]]}},"keywords":{}}],["18:00",{"_index":454,"title":{},"content":{"17":{"position":[[566,6]]},"22":{"position":[[291,5]]}},"keywords":{}}],["19",{"_index":1319,"title":{},"content":{"161":{"position":[[1321,3],[1333,2],[1384,3],[1388,3],[1396,2]]},"162":{"position":[[93,2],[118,2],[181,2]]},"180":{"position":[[1233,2]]}},"keywords":{}}],["19:00",{"_index":1353,"title":{},"content":{"162":{"position":[[319,5]]}},"keywords":{}}],["2",{"_index":211,"title":{"16":{"position":[[0,2]]},"62":{"position":[[48,3]]},"144":{"position":[[7,2]]}},"content":{"8":{"position":[[1412,1]]},"17":{"position":[[464,1]]},"21":{"position":[[22,2]]},"41":{"position":[[1274,1]]},"42":{"position":[[752,1],[765,1]]},"43":{"position":[[621,2]]},"44":{"position":[[1461,1]]},"149":{"position":[[523,2]]},"161":{"position":[[471,2]]},"165":{"position":[[1061,1],[1077,1]]},"166":{"position":[[225,1],[408,2]]},"170":{"position":[[49,1],[74,1],[518,1]]},"171":{"position":[[318,1],[383,1],[442,1]]},"172":{"position":[[108,1],[202,1],[731,1],[952,1],[1280,1]]},"173":{"position":[[567,1],[629,2],[696,1]]},"177":{"position":[[207,1],[232,1]]},"178":{"position":[[177,1],[187,1]]},"179":{"position":[[679,1]]},"180":{"position":[[1147,1],[1454,2],[2662,2]]},"182":{"position":[[420,1]]}},"keywords":{}}],["2.0",{"_index":1589,"title":{},"content":{"183":{"position":[[318,4]]}},"keywords":{}}],["2.1",{"_index":1549,"title":{},"content":{"180":{"position":[[1264,4]]}},"keywords":{}}],["2.25h",{"_index":466,"title":{},"content":{"17":{"position":[[829,6]]}},"keywords":{}}],["20",{"_index":487,"title":{},"content":{"20":{"position":[[122,2],[201,3]]},"22":{"position":[[214,25]]},"42":{"position":[[418,2],[518,2],[942,3]]},"61":{"position":[[27,3]]},"62":{"position":[[197,2]]},"80":{"position":[[192,3]]},"157":{"position":[[758,3],[829,5]]},"161":{"position":[[121,2],[189,3],[1329,3],[1392,3]]},"162":{"position":[[96,2],[121,2],[178,2]]},"164":{"position":[[289,3],[468,3],[1022,3],[1431,4]]},"165":{"position":[[647,4],[659,4]]},"166":{"position":[[816,2]]},"172":{"position":[[552,3]]},"177":{"position":[[470,2]]},"178":{"position":[[253,2]]},"180":{"position":[[1076,2],[2972,2],[3002,2]]},"182":{"position":[[212,3]]},"183":{"position":[[289,3]]}},"keywords":{}}],["20%cheap",{"_index":485,"title":{},"content":{"20":{"position":[[98,8]]}},"keywords":{}}],["20.7",{"_index":1351,"title":{},"content":{"162":{"position":[[265,5]]}},"keywords":{}}],["2025integr",{"_index":1587,"title":{},"content":{"183":{"position":[[293,15]]}},"keywords":{}}],["20:00",{"_index":1282,"title":{},"content":{"158":{"position":[[237,5]]}},"keywords":{}}],["20h",{"_index":459,"title":{},"content":{"17":{"position":[[704,4]]}},"keywords":{}}],["21",{"_index":1345,"title":{},"content":{"162":{"position":[[99,2],[175,2]]},"171":{"position":[[371,3]]},"172":{"position":[[502,3]]},"173":{"position":[[643,3]]},"180":{"position":[[1196,2]]}},"keywords":{}}],["21%)attempt",{"_index":1474,"title":{},"content":{"172":{"position":[[770,12]]}},"keywords":{}}],["2196f3",{"_index":1227,"title":{},"content":{"149":{"position":[[1918,10]]}},"keywords":{}}],["21:45",{"_index":465,"title":{},"content":{"17":{"position":[[812,5]]}},"keywords":{}}],["22",{"_index":692,"title":{},"content":{"45":{"position":[[547,2]]},"162":{"position":[[102,2],[172,2]]},"170":{"position":[[164,2],[472,2]]},"172":{"position":[[226,2]]},"173":{"position":[[70,3]]},"180":{"position":[[1039,2]]}},"keywords":{}}],["2200.0",{"_index":1567,"title":{},"content":{"180":{"position":[[3864,6]]}},"keywords":{}}],["23",{"_index":1294,"title":{},"content":{"161":{"position":[[179,2]]},"162":{"position":[[105,2]]},"172":{"position":[[558,3]]}},"keywords":{}}],["23:45",{"_index":1517,"title":{},"content":{"180":{"position":[[33,5],[381,6],[429,7],[1086,6]]}},"keywords":{}}],["23:59",{"_index":440,"title":{},"content":{"15":{"position":[[410,7]]}},"keywords":{}}],["24",{"_index":59,"title":{},"content":{"2":{"position":[[456,2]]},"4":{"position":[[107,2],[165,2]]},"9":{"position":[[2194,2]]},"10":{"position":[[209,2]]},"15":{"position":[[388,2]]},"77":{"position":[[189,2]]},"99":{"position":[[47,2],[125,2]]},"162":{"position":[[154,2]]},"172":{"position":[[508,3],[796,6]]},"173":{"position":[[317,3]]}},"keywords":{}}],["240",{"_index":1369,"title":{},"content":{"164":{"position":[[683,3]]},"182":{"position":[[153,3]]}},"keywords":{}}],["24:00",{"_index":1354,"title":{},"content":{"162":{"position":[[325,5]]}},"keywords":{}}],["24h",{"_index":88,"title":{},"content":{"4":{"position":[[65,3],[123,3]]},"13":{"position":[[146,3],[226,3]]},"97":{"position":[[107,3]]},"121":{"position":[[115,3]]},"183":{"position":[[94,3]]}},"keywords":{}}],["25",{"_index":514,"title":{},"content":{"22":{"position":[[159,3]]},"41":{"position":[[1169,3]]},"162":{"position":[[151,2]]},"164":{"position":[[293,4]]},"171":{"position":[[48,3],[98,3]]}},"keywords":{}}],["25%reduc",{"_index":796,"title":{},"content":{"62":{"position":[[200,9]]}},"keywords":{}}],["26",{"_index":1349,"title":{},"content":{"162":{"position":[[157,2],[236,2]]},"172":{"position":[[564,3]]}},"keywords":{}}],["26h",{"_index":720,"title":{},"content":{"51":{"position":[[759,4]]}},"keywords":{}}],["27",{"_index":1484,"title":{},"content":{"173":{"position":[[214,3]]}},"keywords":{}}],["28",{"_index":506,"title":{},"content":{"21":{"position":[[421,2]]},"162":{"position":[[124,2],[148,2],[160,2]]}},"keywords":{}}],["28.5",{"_index":1303,"title":{},"content":{"161":{"position":[[653,4]]}},"keywords":{}}],["29",{"_index":1346,"title":{},"content":{"162":{"position":[[127,2]]},"172":{"position":[[570,3]]}},"keywords":{}}],["29.75",{"_index":1356,"title":{},"content":{"162":{"position":[[360,6]]}},"keywords":{}}],["2h",{"_index":346,"title":{},"content":{"9":{"position":[[2589,3]]},"51":{"position":[[851,2]]}},"keywords":{}}],["3",{"_index":377,"title":{"17":{"position":[[0,2]]},"19":{"position":[[13,2]]},"145":{"position":[[7,2]]}},"content":{"9":{"position":[[4022,1]]},"21":{"position":[[31,2]]},"44":{"position":[[1463,1]]},"62":{"position":[[226,1]]},"78":{"position":[[53,1]]},"161":{"position":[[829,2]]},"166":{"position":[[715,2]]},"172":{"position":[[425,2],[735,3],[757,1],[761,3],[787,3],[843,3]]},"173":{"position":[[687,2]]},"175":{"position":[[260,1]]},"180":{"position":[[3086,2]]}},"keywords":{}}],["30",{"_index":513,"title":{},"content":{"22":{"position":[[123,3]]},"56":{"position":[[82,3]]},"60":{"position":[[60,3]]},"80":{"position":[[334,3]]},"157":{"position":[[155,2],[749,3]]},"161":{"position":[[590,2],[665,3],[709,3]]},"162":{"position":[[130,2],[145,2],[163,2]]},"164":{"position":[[650,2],[759,2],[867,3]]}},"keywords":{}}],["31",{"_index":1350,"title":{},"content":{"162":{"position":[[169,2]]}},"keywords":{}}],["31.5",{"_index":1304,"title":{},"content":{"161":{"position":[[697,4]]}},"keywords":{}}],["32",{"_index":1348,"title":{},"content":{"162":{"position":[[142,2],[166,2]]}},"keywords":{}}],["32px",{"_index":902,"title":{},"content":{"80":{"position":[[217,4]]}},"keywords":{}}],["33",{"_index":1347,"title":{},"content":{"162":{"position":[[139,2]]}},"keywords":{}}],["34",{"_index":1296,"title":{},"content":{"161":{"position":[[338,2]]},"162":{"position":[[136,2]]}},"keywords":{}}],["35",{"_index":1320,"title":{},"content":{"161":{"position":[[1325,3],[1341,2]]},"162":{"position":[[133,2],[217,2]]}},"keywords":{}}],["36",{"_index":1530,"title":{},"content":{"180":{"position":[[448,3],[662,2]]}},"keywords":{}}],["39",{"_index":1485,"title":{},"content":{"173":{"position":[[218,3]]}},"keywords":{}}],["3h",{"_index":1201,"title":{},"content":{"147":{"position":[[1483,2]]},"162":{"position":[[314,4]]}},"keywords":{}}],["4",{"_index":210,"title":{"146":{"position":[[7,2]]}},"content":{"8":{"position":[[1399,1]]},"9":{"position":[[3910,1]]},"13":{"position":[[30,1]]},"77":{"position":[[209,1]]},"96":{"position":[[37,2]]},"161":{"position":[[980,2]]},"166":{"position":[[1015,2]]},"172":{"position":[[783,1]]},"173":{"position":[[124,2]]},"180":{"position":[[1049,2],[1206,2]]}},"keywords":{}}],["40",{"_index":489,"title":{},"content":{"20":{"position":[[143,2]]},"80":{"position":[[324,3]]},"161":{"position":[[279,2],[348,3]]}},"keywords":{}}],["40%normal",{"_index":488,"title":{},"content":{"20":{"position":[[125,9]]}},"keywords":{}}],["400",{"_index":543,"title":{},"content":{"28":{"position":[[148,3]]}},"keywords":{}}],["400.0",{"_index":1569,"title":{},"content":{"180":{"position":[[3923,5]]}},"keywords":{}}],["45",{"_index":753,"title":{},"content":{"56":{"position":[[86,2]]},"161":{"position":[[923,2]]},"164":{"position":[[871,2]]},"166":{"position":[[599,2]]},"177":{"position":[[567,2]]}},"keywords":{}}],["48",{"_index":216,"title":{},"content":{"8":{"position":[[1485,2],[1923,2]]},"9":{"position":[[2300,2]]},"16":{"position":[[504,2]]},"51":{"position":[[444,2]]},"172":{"position":[[520,3]]}},"keywords":{}}],["48h",{"_index":370,"title":{"16":{"position":[[11,3]]},"51":{"position":[[17,3]]}},"content":{"9":{"position":[[3417,3]]},"13":{"position":[[313,3]]},"17":{"position":[[639,3]]},"28":{"position":[[74,3]]},"32":{"position":[[148,3]]},"51":{"position":[[416,3]]}},"keywords":{}}],["4caf50",{"_index":1225,"title":{},"content":{"149":{"position":[[1485,9],[1860,10]]}},"keywords":{}}],["4dddff",{"_index":862,"title":{},"content":{"75":{"position":[[296,7]]}},"keywords":{}}],["5",{"_index":328,"title":{"20":{"position":[[6,2]]}},"content":{"9":{"position":[[1999,1],[3595,1],[4093,1]]},"41":{"position":[[1204,1]]},"50":{"position":[[233,1]]},"61":{"position":[[69,1]]},"157":{"position":[[96,2],[192,2]]},"161":{"position":[[618,2],[671,3],[715,3],[1155,2]]},"164":{"position":[[333,2],[1061,1],[1097,1],[1127,2]]},"166":{"position":[[1186,2],[1306,2]]},"172":{"position":[[812,1]]},"175":{"position":[[227,1],[354,2]]},"180":{"position":[[1564,1]]},"182":{"position":[[207,2]]}},"keywords":{}}],["5%)rate",{"_index":782,"title":{},"content":{"61":{"position":[[96,9]]}},"keywords":{}}],["5%add",{"_index":797,"title":{},"content":{"62":{"position":[[228,5]]}},"keywords":{}}],["5%rang",{"_index":1376,"title":{},"content":{"164":{"position":[[1011,8]]}},"keywords":{}}],["50",{"_index":899,"title":{},"content":{"80":{"position":[[202,3]]},"172":{"position":[[582,3]]},"173":{"position":[[305,3]]}},"keywords":{}}],["51",{"_index":1476,"title":{},"content":{"172":{"position":[[946,4]]}},"keywords":{}}],["54",{"_index":1182,"title":{},"content":{"141":{"position":[[714,3],[1028,3]]}},"keywords":{}}],["55",{"_index":624,"title":{},"content":{"42":{"position":[[634,2]]}},"keywords":{}}],["55Β°c",{"_index":626,"title":{},"content":{"42":{"position":[[658,4]]}},"keywords":{}}],["5h",{"_index":1355,"title":{},"content":{"162":{"position":[[331,4],[409,4]]}},"keywords":{}}],["60",{"_index":492,"title":{},"content":{"20":{"position":[[169,2]]},"157":{"position":[[549,3]]},"161":{"position":[[904,2]]},"164":{"position":[[625,2],[726,2]]},"166":{"position":[[542,2],[618,2]]},"175":{"position":[[178,2]]},"177":{"position":[[592,2]]},"182":{"position":[[143,2]]}},"keywords":{}}],["60%expens",{"_index":490,"title":{},"content":{"20":{"position":[[146,12]]}},"keywords":{}}],["66bb6a",{"_index":1220,"title":{},"content":{"149":{"position":[[966,10]]}},"keywords":{}}],["67",{"_index":1181,"title":{},"content":{"141":{"position":[[710,3],[1024,3]]}},"keywords":{}}],["7",{"_index":419,"title":{},"content":{"11":{"position":[[387,1]]},"132":{"position":[[572,1],[1467,2]]}},"keywords":{}}],["7)automat",{"_index":1124,"title":{},"content":{"132":{"position":[[577,11]]}},"keywords":{}}],["7.5",{"_index":1547,"title":{},"content":{"180":{"position":[[1107,4]]}},"keywords":{}}],["7.9",{"_index":1559,"title":{},"content":{"180":{"position":[[1934,4]]}},"keywords":{}}],["78909c",{"_index":1230,"title":{},"content":{"149":{"position":[[2392,10]]}},"keywords":{}}],["8",{"_index":607,"title":{},"content":{"41":{"position":[[1245,2]]},"69":{"position":[[240,1]]},"173":{"position":[[127,1]]}},"keywords":{}}],["8.2",{"_index":695,"title":{},"content":{"45":{"position":[[693,3]]},"180":{"position":[[1872,4],[3752,3]]}},"keywords":{}}],["8.2%)day_price_min",{"_index":696,"title":{},"content":{"45":{"position":[[701,19]]}},"keywords":{}}],["80",{"_index":645,"title":{},"content":{"43":{"position":[[395,2]]},"141":{"position":[[645,3],[938,3]]},"149":{"position":[[1584,3]]}},"keywords":{}}],["80%very_expens",{"_index":493,"title":{},"content":{"20":{"position":[[172,17]]}},"keywords":{}}],["8h",{"_index":456,"title":{},"content":{"17":{"position":[[593,3],[788,3]]}},"keywords":{}}],["90",{"_index":1309,"title":{},"content":{"161":{"position":[[952,2]]},"164":{"position":[[790,3]]},"166":{"position":[[523,2]]},"167":{"position":[[367,3]]}},"keywords":{}}],["96",{"_index":947,"title":{},"content":{"96":{"position":[[60,2]]},"160":{"position":[[40,2]]},"180":{"position":[[839,2]]}},"keywords":{}}],["9e9e9",{"_index":1221,"title":{},"content":{"149":{"position":[[1023,10],[1497,10]]}},"keywords":{}}],["_",{"_index":501,"title":{},"content":{"21":{"position":[[232,3],[236,2],[385,3],[389,2]]}},"keywords":{}}],["___",{"_index":500,"title":{},"content":{"21":{"position":[[212,3],[220,4],[225,4],[341,3],[373,4],[378,4]]}},"keywords":{}}],["abov",{"_index":44,"title":{},"content":{"2":{"position":[[248,5]]},"19":{"position":[[168,5]]},"41":{"position":[[655,6]]},"43":{"position":[[604,6]]},"44":{"position":[[573,6]]},"60":{"position":[[64,5]]},"157":{"position":[[195,5]]},"180":{"position":[[2546,6]]},"183":{"position":[[205,5],[249,5]]}},"keywords":{}}],["above)or",{"_index":1044,"title":{},"content":{"116":{"position":[[489,8]]}},"keywords":{}}],["absolut",{"_index":380,"title":{"42":{"position":[[10,8]]}},"content":{"9":{"position":[[4159,8]]},"20":{"position":[[10,8]]},"40":{"position":[[121,8]]},"42":{"position":[[61,8],[205,8],[381,8]]},"43":{"position":[[49,8]]},"45":{"position":[[854,8]]},"161":{"position":[[1037,8]]},"165":{"position":[[14,9]]},"166":{"position":[[1357,8]]},"180":{"position":[[112,8],[957,8],[1313,8],[1995,8],[2671,8],[2977,8],[4282,8]]},"182":{"position":[[276,8]]}},"keywords":{}}],["accept",{"_index":1268,"title":{},"content":{"157":{"position":[[786,10]]},"170":{"position":[[402,6]]}},"keywords":{}}],["access",{"_index":916,"title":{},"content":{"87":{"position":[[26,6],[171,6]]}},"keywords":{}}],["accessst",{"_index":1127,"title":{},"content":{"132":{"position":[[729,11]]}},"keywords":{}}],["accur",{"_index":1066,"title":{},"content":{"121":{"position":[[52,8]]}},"keywords":{}}],["act",{"_index":568,"title":{"41":{"position":[[15,3]]}},"content":{"41":{"position":[[533,3]]},"180":{"position":[[2252,3],[2563,3]]}},"keywords":{}}],["action",{"_index":132,"title":{"6":{"position":[[0,7]]},"7":{"position":[[10,8]]}},"content":{"8":{"position":[[2658,7],[2787,7]]},"9":{"position":[[20,6],[249,6],[841,6],[4917,7],[4972,7]]},"10":{"position":[[232,6]]},"11":{"position":[[126,7]]},"30":{"position":[[1,7]]},"41":{"position":[[802,7]]},"42":{"position":[[663,7]]},"43":{"position":[[761,7]]},"44":{"position":[[583,7],[1156,7]]},"45":{"position":[[448,7]]},"69":{"position":[[245,7]]},"70":{"position":[[214,7]]},"119":{"position":[[415,7]]},"131":{"position":[[197,7],[1139,6]]},"175":{"position":[[521,7]]},"180":{"position":[[2590,7],[3012,7],[3525,7]]},"181":{"position":[[168,6]]}},"keywords":{}}],["action'",{"_index":1112,"title":{},"content":{"131":{"position":[[1306,8]]}},"keywords":{}}],["activ",{"_index":418,"title":{"44":{"position":[[37,6]]}},"content":{"11":{"position":[[302,7]]},"44":{"position":[[701,6]]},"58":{"position":[[16,6]]},"73":{"position":[[39,7],[162,6],[280,6]]},"77":{"position":[[372,6]]},"161":{"position":[[1717,6]]},"179":{"position":[[111,8]]}},"keywords":{}}],["active"",{"_index":923,"title":{},"content":{"88":{"position":[[221,14]]}},"keywords":{}}],["active/alert",{"_index":1012,"title":{},"content":{"114":{"position":[[93,12]]}},"keywords":{}}],["actual",{"_index":652,"title":{},"content":{"43":{"position":[[1186,8]]},"67":{"position":[[169,8]]},"116":{"position":[[50,8]]},"151":{"position":[[146,8]]}},"keywords":{}}],["ad",{"_index":1475,"title":{},"content":{"172":{"position":[[836,6]]}},"keywords":{}}],["adapt",{"_index":217,"title":{"172":{"position":[[13,9]]}},"content":{"8":{"position":[[1527,6]]},"9":{"position":[[3114,6]]},"51":{"position":[[40,6]]},"139":{"position":[[135,10]]},"140":{"position":[[666,5]]},"148":{"position":[[396,5]]},"164":{"position":[[499,6]]}},"keywords":{}}],["add",{"_index":108,"title":{},"content":{"5":{"position":[[9,3]]},"8":{"position":[[2539,3]]},"28":{"position":[[1,3]]},"65":{"position":[[165,3]]},"80":{"position":[[340,3]]},"120":{"position":[[18,4]]},"173":{"position":[[368,4]]},"178":{"position":[[99,3]]}},"keywords":{}}],["addit",{"_index":335,"title":{},"content":{"9":{"position":[[2212,10]]},"57":{"position":[[166,10]]},"87":{"position":[[95,10]]},"172":{"position":[[858,10]]},"173":{"position":[[349,10]]}},"keywords":{}}],["addition",{"_index":344,"title":{},"content":{"9":{"position":[[2553,12]]}},"keywords":{}}],["adjust",{"_index":355,"title":{"166":{"position":[[27,6]]}},"content":{"9":{"position":[[2932,6]]},"16":{"position":[[719,7]]},"28":{"position":[[154,6]]},"51":{"position":[[967,6]]},"60":{"position":[[117,6]]},"152":{"position":[[137,6]]},"157":{"position":[[928,6]]},"164":{"position":[[271,7],[772,7],[1109,7]]},"166":{"position":[[50,6],[411,6],[1018,6]]},"167":{"position":[[282,6],[385,6]]}},"keywords":{}}],["advanc",{"_index":231,"title":{"181":{"position":[[0,8]]}},"content":{"8":{"position":[[2284,8]]},"9":{"position":[[432,8]]},"17":{"position":[[79,9]]},"47":{"position":[[307,8],[395,8]]},"80":{"position":[[1,8]]},"154":{"position":[[184,8]]},"166":{"position":[[1047,11]]},"181":{"position":[[5,8]]}},"keywords":{}}],["advantag",{"_index":1150,"title":{},"content":{"139":{"position":[[104,11]]},"141":{"position":[[1071,9],[1152,10]]}},"keywords":{}}],["affect",{"_index":1328,"title":{},"content":{"161":{"position":[[1600,7]]},"165":{"position":[[818,6]]},"166":{"position":[[669,7]]}},"keywords":{}}],["aggregationcustomiz",{"_index":162,"title":{},"content":{"8":{"position":[[414,23]]}},"keywords":{}}],["ahead",{"_index":1524,"title":{},"content":{"180":{"position":[[255,5],[304,5],[671,5]]}},"keywords":{}}],["aheadrisk",{"_index":1539,"title":{},"content":{"180":{"position":[[691,9]]}},"keywords":{}}],["alert",{"_index":1274,"title":{},"content":{"157":{"position":[[873,8]]}},"keywords":{}}],["alert/veri",{"_index":1206,"title":{},"content":{"148":{"position":[[247,11]]}},"keywords":{}}],["alia",{"_index":575,"title":{},"content":{"41":{"position":[[229,6]]},"42":{"position":[[108,6]]},"43":{"position":[[80,6]]},"44":{"position":[[93,6],[866,6]]},"45":{"position":[[91,6]]},"69":{"position":[[15,6]]},"70":{"position":[[58,6]]},"180":{"position":[[2294,6],[2725,6],[3163,6]]}},"keywords":{}}],["allow",{"_index":1394,"title":{},"content":{"165":{"position":[[896,5],[1065,5]]},"178":{"position":[[181,5]]},"180":{"position":[[3979,5]]}},"keywords":{}}],["alon",{"_index":441,"title":{},"content":{"15":{"position":[[445,5]]},"25":{"position":[[209,6]]}},"keywords":{}}],["alonegener",{"_index":388,"title":{},"content":{"9":{"position":[[4643,14]]}},"keywords":{}}],["alreadi",{"_index":1408,"title":{},"content":{"166":{"position":[[190,7],[229,7],[277,7]]}},"keywords":{}}],["alway",{"_index":221,"title":{},"content":{"8":{"position":[[1909,6]]},"9":{"position":[[777,6]]},"13":{"position":[[358,6]]},"16":{"position":[[14,6],[491,6]]},"17":{"position":[[450,6]]},"51":{"position":[[426,6],[838,6]]},"97":{"position":[[245,6]]},"161":{"position":[[1538,6]]},"166":{"position":[[1517,6]]}},"keywords":{}}],["amp",{"_index":496,"title":{},"content":{"21":{"position":[[25,5]]},"57":{"position":[[71,5]]},"120":{"position":[[99,5]]},"132":{"position":[[1358,5]]}},"keywords":{}}],["analysi",{"_index":54,"title":{"4":{"position":[[12,9]]}},"content":{"2":{"position":[[396,8]]},"8":{"position":[[89,9]]},"121":{"position":[[87,8]]}},"keywords":{}}],["analyz",{"_index":1284,"title":{},"content":{"160":{"position":[[27,8]]}},"keywords":{}}],["anoth",{"_index":757,"title":{},"content":{"57":{"position":[[24,7],[141,7]]}},"keywords":{}}],["any/cheap/vcheap",{"_index":1578,"title":{},"content":{"182":{"position":[[259,16]]}},"keywords":{}}],["anyth",{"_index":1261,"title":{},"content":{"157":{"position":[[325,9]]},"170":{"position":[[293,8]]}},"keywords":{}}],["anyway",{"_index":1175,"title":{},"content":{"141":{"position":[[410,6],[508,6]]}},"keywords":{}}],["apex_config",{"_index":533,"title":{},"content":{"27":{"position":[[47,12]]},"28":{"position":[[120,12]]}},"keywords":{}}],["apexchart",{"_index":259,"title":{"47":{"position":[[0,10]]}},"content":{"9":{"position":[[120,10],[441,10],[646,10],[968,10],[1107,10],[3065,10],[4627,10]]},"13":{"position":[[194,10],[274,10],[382,10],[519,10]]},"15":{"position":[[85,10],[429,10]]},"16":{"position":[[121,10]]},"17":{"position":[[104,10]]},"21":{"position":[[782,11]]},"24":{"position":[[1,10]]},"25":{"position":[[193,10]]},"47":{"position":[[160,10],[316,10],[636,10]]},"48":{"position":[[12,10]]},"78":{"position":[[135,10]]},"81":{"position":[[275,10]]},"119":{"position":[[481,10]]},"121":{"position":[[329,10]]},"132":{"position":[[409,12],[1809,10]]}},"keywords":{}}],["apexcharts_card.upd",{"_index":1137,"title":{},"content":{"132":{"position":[[2108,22]]}},"keywords":{}}],["apexcharts_config",{"_index":332,"title":{},"content":{"9":{"position":[[2102,17]]},"50":{"position":[[265,17]]},"51":{"position":[[245,17],[665,17]]}},"keywords":{}}],["api",{"_index":271,"title":{},"content":{"9":{"position":[[393,3]]},"10":{"position":[[90,4]]},"47":{"position":[[290,3]]},"56":{"position":[[1,3],[146,3]]},"64":{"position":[[17,3],[120,3]]},"67":{"position":[[123,3]]},"87":{"position":[[1,3]]},"89":{"position":[[220,3]]},"119":{"position":[[108,3]]},"120":{"position":[[126,3]]},"183":{"position":[[12,3]]}},"keywords":{}}],["app",{"_index":832,"title":{},"content":{"67":{"position":[[207,4]]}},"keywords":{}}],["appeal",{"_index":448,"title":{},"content":{"16":{"position":[[601,6]]}},"keywords":{}}],["appear",{"_index":352,"title":{"67":{"position":[[18,9]]}},"content":{"9":{"position":[[2886,11],[4406,7]]},"22":{"position":[[442,7]]},"131":{"position":[[347,10]]},"151":{"position":[[370,6]]}},"keywords":{}}],["appli",{"_index":1168,"title":{},"content":{"141":{"position":[[33,5]]},"149":{"position":[[614,5]]},"161":{"position":[[983,5]]}},"keywords":{}}],["applianc",{"_index":572,"title":{},"content":{"41":{"position":[[170,10]]},"157":{"position":[[593,10]]}},"keywords":{}}],["appreci",{"_index":288,"title":{},"content":{"9":{"position":[[784,12]]}},"keywords":{}}],["approach",{"_index":444,"title":{"150":{"position":[[6,8]]}},"content":{"15":{"position":[[625,9]]},"43":{"position":[[13,9]]},"45":{"position":[[14,9]]},"132":{"position":[[2079,8],[2188,8]]},"172":{"position":[[26,8]]}},"keywords":{}}],["approachdis",{"_index":425,"title":{},"content":{"11":{"position":[[506,15]]}},"keywords":{}}],["approachw",{"_index":1232,"title":{},"content":{"150":{"position":[[22,12]]}},"keywords":{}}],["areasonli",{"_index":385,"title":{},"content":{"9":{"position":[[4396,9]]}},"keywords":{}}],["aren't",{"_index":1454,"title":{},"content":{"171":{"position":[[176,6]]}},"keywords":{}}],["around",{"_index":41,"title":{},"content":{"2":{"position":[[193,6]]},"55":{"position":[[43,6]]},"183":{"position":[[179,6]]}},"keywords":{}}],["array",{"_index":146,"title":{},"content":{"8":{"position":[[140,5],[160,5]]},"27":{"position":[[17,5]]},"132":{"position":[[1226,5]]}},"keywords":{}}],["array_of_array",{"_index":200,"title":{},"content":{"8":{"position":[[1217,15]]}},"keywords":{}}],["array_of_object",{"_index":179,"title":{},"content":{"8":{"position":[[703,16],[1197,16],[1233,16],[1671,16]]},"132":{"position":[[2338,16]]}},"keywords":{}}],["arraystim",{"_index":148,"title":{},"content":{"8":{"position":[[169,10]]}},"keywords":{}}],["arriv",{"_index":446,"title":{},"content":{"16":{"position":[[565,8]]}},"keywords":{}}],["ask",{"_index":736,"title":{"53":{"position":[[17,5]]}},"content":{},"keywords":{}}],["assist",{"_index":315,"title":{},"content":{"9":{"position":[[1667,9],[4783,9]]},"52":{"position":[[222,9]]},"64":{"position":[[192,9]]},"89":{"position":[[151,9]]},"98":{"position":[[129,9]]},"105":{"position":[[51,9]]},"115":{"position":[[297,9]]},"120":{"position":[[68,9]]},"122":{"position":[[49,9]]},"132":{"position":[[1582,9]]},"151":{"position":[[238,9]]}},"keywords":{}}],["assistant'",{"_index":270,"title":{},"content":{"9":{"position":[[373,11]]},"144":{"position":[[10,11]]},"148":{"position":[[27,11]]}},"keywords":{}}],["assistant.log)tibb",{"_index":831,"title":{},"content":{"67":{"position":[[148,20]]}},"keywords":{}}],["assistantsearch",{"_index":984,"title":{},"content":{"103":{"position":[[84,15]]},"140":{"position":[[147,15]]}},"keywords":{}}],["asymmetr",{"_index":1277,"title":{},"content":{"157":{"position":[[1018,10]]}},"keywords":{}}],["attach",{"_index":917,"title":{},"content":{"87":{"position":[[111,8]]}},"keywords":{}}],["attempt",{"_index":1444,"title":{"173":{"position":[[23,9]]}},"content":{"170":{"position":[[414,9]]},"172":{"position":[[93,9],[164,9],[275,8],[322,8],[595,9],[673,11],[686,7],[803,8],[869,8],[923,7]]},"173":{"position":[[13,9],[129,9],[238,9],[360,7]]},"177":{"position":[[370,9]]},"182":{"position":[[495,10]]}},"keywords":{}}],["attempts)bas",{"_index":1469,"title":{},"content":{"172":{"position":[[533,13]]}},"keywords":{}}],["attribut",{"_index":272,"title":{"179":{"position":[[21,11]]}},"content":{"9":{"position":[[415,11]]},"45":{"position":[[56,9],[613,11],[920,10]]},"79":{"position":[[22,9]]},"81":{"position":[[349,10]]},"87":{"position":[[83,11]]},"116":{"position":[[325,9]]},"119":{"position":[[362,9]]},"126":{"position":[[437,10]]},"131":{"position":[[285,11],[747,11]]},"132":{"position":[[709,10],[1046,11],[1106,11]]},"138":{"position":[[16,9]]},"139":{"position":[[335,9]]},"140":{"position":[[37,9],[96,10],[261,10]]},"149":{"position":[[456,9]]},"151":{"position":[[174,9]]},"161":{"position":[[1653,9]]},"167":{"position":[[462,10]]},"177":{"position":[[292,11]]},"178":{"position":[[363,10]]},"179":{"position":[[5,10]]},"180":{"position":[[3611,11],[3968,10],[4338,10]]}},"keywords":{}}],["attributesdynam",{"_index":1052,"title":{},"content":{"119":{"position":[[263,17]]}},"keywords":{}}],["auction",{"_index":1527,"title":{},"content":{"180":{"position":[[310,7]]}},"keywords":{}}],["auto",{"_index":341,"title":{"17":{"position":[[18,4]]},"81":{"position":[[0,4]]}},"content":{"9":{"position":[[2486,5],[3076,4]]},"13":{"position":[[431,4],[702,4]]},"21":{"position":[[803,4]]},"32":{"position":[[174,4]]},"44":{"position":[[1045,4],[1386,4]]},"51":{"position":[[454,4]]},"121":{"position":[[342,4]]}},"keywords":{}}],["autom",{"_index":557,"title":{"37":{"position":[[0,10]]},"39":{"position":[[12,12]]},"40":{"position":[[17,12]]},"68":{"position":[[0,10]]}},"content":{"41":{"position":[[149,10],[215,11],[1348,10]]},"42":{"position":[[94,11]]},"43":{"position":[[66,11]]},"44":{"position":[[9,11],[79,11],[820,11]]},"45":{"position":[[77,11]]},"65":{"position":[[169,10]]},"69":{"position":[[1,11],[322,10]]},"70":{"position":[[44,11]]},"88":{"position":[[244,11]]},"117":{"position":[[151,11]]},"119":{"position":[[558,10]]},"120":{"position":[[261,12]]},"175":{"position":[[385,10],[406,11]]},"180":{"position":[[2172,12],[2204,11],[2280,11],[2711,11],[3149,11],[3985,11]]},"181":{"position":[[68,10],[101,10]]}},"keywords":{}}],["automat",{"_index":26,"title":{"70":{"position":[[24,15]]}},"content":{"2":{"position":[[12,13]]},"3":{"position":[[47,13]]},"8":{"position":[[1513,13]]},"9":{"position":[[1051,9],[1269,9],[1465,13],[1638,13],[2320,13],[2813,13],[2899,9],[4745,13]]},"16":{"position":[[39,13],[413,9],[530,13],[705,13]]},"21":{"position":[[34,13],[574,13]]},"22":{"position":[[310,9]]},"51":{"position":[[26,13]]},"55":{"position":[[200,13],[291,13]]},"81":{"position":[[1,13]]},"88":{"position":[[20,13]]},"89":{"position":[[117,14]]},"97":{"position":[[149,9]]},"102":{"position":[[474,13]]},"105":{"position":[[20,13],[335,13]]},"107":{"position":[[140,13]]},"108":{"position":[[117,13]]},"112":{"position":[[271,13]]},"119":{"position":[[301,9]]},"121":{"position":[[237,9]]},"131":{"position":[[422,13],[1146,13],[1394,14]]},"139":{"position":[[119,9]]},"148":{"position":[[382,13]]},"149":{"position":[[471,13]]},"157":{"position":[[230,13]]},"161":{"position":[[1158,9],[1218,13]]},"164":{"position":[[506,13]]},"166":{"position":[[323,13]]},"169":{"position":[[70,13]]},"178":{"position":[[319,9]]}},"keywords":{}}],["automation/script",{"_index":421,"title":{},"content":{"11":{"position":[[412,17]]},"50":{"position":[[30,17]]}},"keywords":{}}],["automationsbest",{"_index":562,"title":{},"content":{"38":{"position":[[41,15]]}},"keywords":{}}],["automationsconfigur",{"_index":1244,"title":{},"content":{"152":{"position":[[104,24]]}},"keywords":{}}],["automationsvolatil",{"_index":560,"title":{},"content":{"38":{"position":[[13,21]]}},"keywords":{}}],["avail",{"_index":134,"title":{"7":{"position":[[0,9]]}},"content":{"8":{"position":[[1542,13],[1750,9],[1833,10]]},"9":{"position":[[2398,12]]},"13":{"position":[[566,9]]},"16":{"position":[[460,10]]},"45":{"position":[[592,9],[935,9]]},"51":{"position":[[55,13],[295,9],[376,10]]},"117":{"position":[[91,9]]},"119":{"position":[[226,9]]},"131":{"position":[[703,11]]},"132":{"position":[[799,11],[1593,9],[1701,9]]},"152":{"position":[[38,9]]},"180":{"position":[[1808,10],[3119,10],[3590,9]]}},"keywords":{}}],["averag",{"_index":37,"title":{},"content":{"2":{"position":[[144,7],[200,7],[254,7]]},"4":{"position":[[69,7],[79,7],[127,7],[137,7],[229,7]]},"60":{"position":[[108,7]]},"94":{"position":[[73,8]]},"97":{"position":[[111,8]]},"99":{"position":[[10,8],[19,7],[88,8],[97,7]]},"121":{"position":[[119,8]]},"126":{"position":[[402,7]]},"161":{"position":[[504,9],[569,8],[819,8]]},"164":{"position":[[941,8],[978,7],[1211,7]]},"165":{"position":[[283,7]]},"166":{"position":[[1039,7]]},"175":{"position":[[376,7]]},"179":{"position":[[308,7]]},"180":{"position":[[1067,8],[1118,7],[1224,8],[1275,7]]},"183":{"position":[[98,9],[255,7]]}},"keywords":{}}],["average)"",{"_index":1313,"title":{},"content":{"161":{"position":[[1139,14]]}},"keywords":{}}],["average)default",{"_index":1383,"title":{},"content":{"165":{"position":[[112,16]]}},"keywords":{}}],["averagecheap",{"_index":1582,"title":{},"content":{"183":{"position":[[142,12]]}},"keywords":{}}],["averagecheck",{"_index":1291,"title":{},"content":{"160":{"position":[[315,12]]}},"keywords":{}}],["averageexpens",{"_index":1584,"title":{},"content":{"183":{"position":[[186,16]]}},"keywords":{}}],["averagelow",{"_index":769,"title":{},"content":{"60":{"position":[[70,10]]}},"keywords":{}}],["averagenorm",{"_index":1583,"title":{},"content":{"183":{"position":[[163,13]]}},"keywords":{}}],["averagepeak",{"_index":1089,"title":{},"content":{"126":{"position":[[304,11]]},"157":{"position":[[115,11]]}},"keywords":{}}],["averagerelax",{"_index":1260,"title":{},"content":{"157":{"position":[[211,18]]}},"keywords":{}}],["averagetrail",{"_index":58,"title":{},"content":{"2":{"position":[[440,15]]}},"keywords":{}}],["averageus",{"_index":61,"title":{},"content":{"2":{"position":[[464,11]]}},"keywords":{}}],["averagevery_expens",{"_index":1585,"title":{},"content":{"183":{"position":[[211,21]]}},"keywords":{}}],["averagevolatil",{"_index":978,"title":{},"content":{"102":{"position":[[283,17]]}},"keywords":{}}],["avg",{"_index":1302,"title":{},"content":{"161":{"position":[[585,4]]},"162":{"position":[[231,4]]}},"keywords":{}}],["avoid",{"_index":49,"title":{"70":{"position":[[6,5]]},"167":{"position":[[19,6]]}},"content":{"2":{"position":[[344,6]]},"3":{"position":[[241,5]]},"95":{"position":[[72,5]]},"160":{"position":[[426,5]]}},"keywords":{}}],["awar",{"_index":561,"title":{"40":{"position":[[11,5]]}},"content":{"38":{"position":[[35,5]]},"43":{"position":[[174,5]]},"180":{"position":[[2227,6]]}},"keywords":{}}],["aware"",{"_index":1563,"title":{},"content":{"180":{"position":[[3201,11]]}},"keywords":{}}],["axi",{"_index":300,"title":{"21":{"position":[[10,4]]}},"content":{"9":{"position":[[1237,4],[1430,4],[1519,4],[2432,4],[2695,4],[2745,4],[2919,4],[3109,4],[3822,4]]},"13":{"position":[[673,4]]},"16":{"position":[[373,4],[700,4]]},"17":{"position":[[410,4]]},"21":{"position":[[351,4],[699,4]]},"30":{"position":[[117,4]]},"32":{"position":[[131,4]]},"121":{"position":[[393,4]]},"131":{"position":[[316,4],[409,4],[846,4],[909,4],[1191,4],[1382,4]]}},"keywords":{}}],["axis)fix",{"_index":387,"title":{},"content":{"9":{"position":[[4567,10]]}},"keywords":{}}],["b",{"_index":920,"title":{"88":{"position":[[0,2]]}},"content":{},"keywords":{}}],["back",{"_index":253,"title":{},"content":{"8":{"position":[[2799,6]]}},"keywords":{}}],["background",{"_index":855,"title":{},"content":{"75":{"position":[[127,11],[615,10]]},"141":{"position":[[523,11],[821,11]]},"149":{"position":[[1520,11]]}},"keywords":{}}],["backward",{"_index":1117,"title":{},"content":{"132":{"position":[[154,8]]}},"keywords":{}}],["badg",{"_index":905,"title":{},"content":{"80":{"position":[[254,5]]},"144":{"position":[[222,5]]},"146":{"position":[[286,5],[435,5],[572,5]]}},"keywords":{}}],["balanc",{"_index":1413,"title":{},"content":{"166":{"position":[[353,7]]},"173":{"position":[[23,8]]}},"keywords":{}}],["band",{"_index":313,"title":{},"content":{"9":{"position":[[1578,5],[4256,5]]},"15":{"position":[[373,7]]},"22":{"position":[[43,5]]}},"keywords":{}}],["bank",{"_index":982,"title":{},"content":{"102":{"position":[[424,4]]},"114":{"position":[[347,4]]},"145":{"position":[[208,4]]},"147":{"position":[[792,4]]},"149":{"position":[[1382,4]]}},"keywords":{}}],["bare",{"_index":1522,"title":{},"content":{"180":{"position":[[127,6],[1328,6]]}},"keywords":{}}],["base",{"_index":52,"title":{"39":{"position":[[6,5]]},"115":{"position":[[6,5]]}},"content":{"2":{"position":[[375,5]]},"3":{"position":[[334,5]]},"9":{"position":[[2384,5],[4053,5]]},"19":{"position":[[1,5],[247,5]]},"20":{"position":[[1,5]]},"22":{"position":[[330,5]]},"38":{"position":[[7,5]]},"42":{"position":[[1039,5]]},"52":{"position":[[203,5]]},"90":{"position":[[34,5]]},"93":{"position":[[80,5]]},"97":{"position":[[98,5]]},"102":{"position":[[240,5],[336,5]]},"108":{"position":[[131,5]]},"112":{"position":[[454,5],[543,5]]},"117":{"position":[[40,5]]},"119":{"position":[[295,5]]},"121":{"position":[[186,5]]},"132":{"position":[[664,5]]},"138":{"position":[[95,5]]},"151":{"position":[[596,5]]},"165":{"position":[[517,5]]},"172":{"position":[[480,4]]},"180":{"position":[[899,5]]},"183":{"position":[[75,6]]}},"keywords":{}}],["basic",{"_index":173,"title":{"72":{"position":[[0,5]]},"160":{"position":[[4,5]]},"164":{"position":[[0,5]]}},"content":{"8":{"position":[[558,5]]},"9":{"position":[[39,5],[962,5]]},"47":{"position":[[73,5],[630,5]]}},"keywords":{}}],["batteri",{"_index":643,"title":{},"content":{"43":{"position":[[312,7]]},"90":{"position":[[63,7]]}},"keywords":{}}],["becom",{"_index":1381,"title":{},"content":{"164":{"position":[[1356,6]]}},"keywords":{}}],["bedefault",{"_index":1375,"title":{},"content":{"164":{"position":[[1000,10]]}},"keywords":{}}],["befor",{"_index":449,"title":{},"content":{"16":{"position":[[624,6]]},"55":{"position":[[105,6]]},"132":{"position":[[766,7]]},"172":{"position":[[357,6]]},"180":{"position":[[458,6],[522,6]]}},"keywords":{}}],["behavior",{"_index":218,"title":{"113":{"position":[[5,8]]},"157":{"position":[[8,9]]}},"content":{"8":{"position":[[1720,9]]},"9":{"position":[[3027,9]]},"51":{"position":[[182,8],[265,9]]},"111":{"position":[[154,8]]},"165":{"position":[[844,9]]},"166":{"position":[[40,9]]},"180":{"position":[[194,8],[4098,9]]}},"keywords":{}}],["behavioricon",{"_index":915,"title":{},"content":{"81":{"position":[[321,12]]}},"keywords":{}}],["below",{"_index":36,"title":{},"content":{"2":{"position":[[138,5]]},"19":{"position":[[85,5]]},"42":{"position":[[199,5],[511,6],[627,6],[652,5]]},"43":{"position":[[388,6],[751,6]]},"60":{"position":[[102,5]]},"94":{"position":[[61,5]]},"132":{"position":[[1672,5]]},"139":{"position":[[459,7]]},"157":{"position":[[99,5]]},"161":{"position":[[813,5]]},"165":{"position":[[277,5]]},"180":{"position":[[1112,5],[1269,5],[2965,6]]},"183":{"position":[[136,5],[157,5]]}},"keywords":{}}],["below/abov",{"_index":1312,"title":{},"content":{"161":{"position":[[1127,11]]},"164":{"position":[[1199,11]]},"165":{"position":[[100,11]]}},"keywords":{}}],["benefit",{"_index":409,"title":{},"content":{"11":{"position":[[135,9]]}},"keywords":{}}],["best",{"_index":65,"title":{"22":{"position":[[0,4]]},"46":{"position":[[0,4]]},"61":{"position":[[18,4]]},"65":{"position":[[0,4]]},"126":{"position":[[0,4]]},"175":{"position":[[19,4]]}},"content":{"3":{"position":[[1,4],[85,4]]},"8":{"position":[[1997,4]]},"9":{"position":[[1601,4],[2056,4],[4182,4],[4297,4],[4419,4]]},"13":{"position":[[112,4]]},"15":{"position":[[334,4]]},"19":{"position":[[212,4]]},"20":{"position":[[206,4]]},"22":{"position":[[84,4],[175,4]]},"30":{"position":[[165,4]]},"41":{"position":[[255,4],[338,4],[960,4],[1180,4]]},"43":{"position":[[1102,4]]},"44":{"position":[[193,4]]},"69":{"position":[[46,4]]},"73":{"position":[[151,4]]},"77":{"position":[[293,4]]},"88":{"position":[[1,4]]},"102":{"position":[[437,4]]},"106":{"position":[[232,4]]},"126":{"position":[[57,4],[214,4]]},"138":{"position":[[268,4]]},"145":{"position":[[174,4]]},"147":{"position":[[741,4]]},"149":{"position":[[1331,4]]},"156":{"position":[[73,5],[114,4]]},"157":{"position":[[35,4],[392,4],[538,4]]},"158":{"position":[[24,4],[260,4]]},"160":{"position":[[220,5]]},"161":{"position":[[44,4],[631,4]]},"162":{"position":[[242,4]]},"164":{"position":[[76,5],[636,5],[1388,4]]},"165":{"position":[[177,5]]},"170":{"position":[[547,4]]},"173":{"position":[[104,4]]},"180":{"position":[[12,4],[1128,4],[2320,4]]}},"keywords":{}}],["best/peak",{"_index":157,"title":{},"content":{"8":{"position":[[310,9]]},"73":{"position":[[11,9]]},"119":{"position":[[163,9]]}},"keywords":{}}],["best/worst",{"_index":1364,"title":{},"content":{"164":{"position":[[362,10]]}},"keywords":{}}],["best_pric",{"_index":226,"title":{},"content":{"8":{"position":[[2134,10]]}},"keywords":{}}],["best_price_flex",{"_index":1360,"title":{},"content":{"164":{"position":[[122,16]]},"166":{"position":[[799,16],[861,16]]},"175":{"position":[[116,16]]},"177":{"position":[[453,16]]},"178":{"position":[[236,16]]}},"keywords":{}}],["best_price_max_level",{"_index":1385,"title":{},"content":{"165":{"position":[[233,21],[291,21],[1001,21]]},"166":{"position":[[1389,21]]},"178":{"position":[[117,21]]},"182":{"position":[[234,20]]}},"keywords":{}}],["best_price_max_level_gap_count",{"_index":1399,"title":{},"content":{"165":{"position":[[1029,31]]},"178":{"position":[[145,31]]},"182":{"position":[[293,30]]}},"keywords":{}}],["best_price_min_distance_from_avg",{"_index":1377,"title":{},"content":{"164":{"position":[[1027,33]]},"166":{"position":[[1133,33]]},"175":{"position":[[193,33]]},"182":{"position":[[174,32]]}},"keywords":{}}],["best_price_min_period_length",{"_index":1370,"title":{},"content":{"164":{"position":[[696,29]]},"166":{"position":[[493,29],[569,29]]},"175":{"position":[[148,29]]},"177":{"position":[[537,29]]},"182":{"position":[[114,28]]}},"keywords":{}}],["best_price_period",{"_index":991,"title":{},"content":{"103":{"position":[[509,18]]},"140":{"position":[[545,18]]}},"keywords":{}}],["best_price_progress",{"_index":1165,"title":{},"content":{"140":{"position":[[633,20]]}},"keywords":{}}],["best_price_time_until_start",{"_index":1164,"title":{},"content":{"140":{"position":[[604,28]]}},"keywords":{}}],["better",{"_index":1119,"title":{"171":{"position":[[18,6]]}},"content":{"132":{"position":[[287,6],[971,6]]},"150":{"position":[[382,6]]},"164":{"position":[[966,6],[1155,6]]}},"keywords":{}}],["between",{"_index":114,"title":{},"content":{"5":{"position":[[118,7]]},"9":{"position":[[2341,7]]},"16":{"position":[[62,7]]},"19":{"position":[[138,7]]},"41":{"position":[[72,7]]},"180":{"position":[[1658,7],[2022,7]]}},"keywords":{}}],["beyond",{"_index":283,"title":{},"content":{"9":{"position":[[682,6]]}},"keywords":{}}],["binari",{"_index":838,"title":{"114":{"position":[[0,6]]},"125":{"position":[[0,6]]}},"content":{"70":{"position":[[28,6]]},"88":{"position":[[150,6]]},"98":{"position":[[93,6]]},"114":{"position":[[1,6]]},"126":{"position":[[7,6]]},"147":{"position":[[597,6]]},"149":{"position":[[1233,6]]}},"keywords":{}}],["binary_sensor.dishwasher_door",{"_index":595,"title":{},"content":{"41":{"position":[[749,29]]}},"keywords":{}}],["binary_sensor.tibber_home_best_price_period",{"_index":585,"title":{},"content":{"41":{"position":[[452,43]]},"42":{"position":[[305,43]]},"43":{"position":[[230,43]]},"44":{"position":[[271,43]]},"45":{"position":[[174,43],[953,43]]},"69":{"position":[[101,43]]},"73":{"position":[[101,43]]},"77":{"position":[[322,43]]},"79":{"position":[[281,43]]},"80":{"position":[[268,43]]},"105":{"position":[[267,43]]},"106":{"position":[[182,43]]},"114":{"position":[[279,43]]},"145":{"position":[[124,43]]},"146":{"position":[[185,43]]},"147":{"position":[[691,43]]},"149":{"position":[[1281,43]]},"175":{"position":[[458,43]]},"177":{"position":[[10,43]]},"179":{"position":[[37,43]]},"180":{"position":[[2398,43],[2808,43],[3251,43],[3689,44]]}},"keywords":{}}],["binary_sensor.tibber_home_peak_price_period",{"_index":703,"title":{},"content":{"45":{"position":[[1001,44]]},"70":{"position":[[151,43]]},"73":{"position":[[219,43]]},"79":{"position":[[366,43]]},"147":{"position":[[931,43]]}},"keywords":{}}],["blue",{"_index":476,"title":{},"content":{"19":{"position":[[130,7]]},"20":{"position":[[135,7]]},"148":{"position":[[153,4]]},"149":{"position":[[434,4],[1932,4],[2406,4]]}},"keywords":{}}],["bold",{"_index":904,"title":{},"content":{"80":{"position":[[235,4]]},"143":{"position":[[725,4]]}},"keywords":{}}],["bolt",{"_index":1001,"title":{},"content":{"110":{"position":[[104,4]]}},"keywords":{}}],["boost",{"_index":693,"title":{},"content":{"45":{"position":[[552,5]]}},"keywords":{}}],["border",{"_index":1169,"title":{},"content":{"141":{"position":[[86,9]]}},"keywords":{}}],["both",{"_index":636,"title":{},"content":{"43":{"position":[[29,4]]},"45":{"position":[[948,4]]},"112":{"position":[[430,5]]},"126":{"position":[[411,4]]},"164":{"position":[[1229,4]]},"170":{"position":[[389,4]]},"173":{"position":[[99,4],[442,4]]}},"keywords":{}}],["bottom",{"_index":484,"title":{},"content":{"20":{"position":[[91,6]]},"180":{"position":[[1426,6]]}},"keywords":{}}],["bound",{"_index":353,"title":{},"content":{"9":{"position":[[2909,7]]},"131":{"position":[[414,7],[1387,6]]}},"keywords":{}}],["boundari",{"_index":241,"title":{},"content":{"8":{"position":[[2560,10]]},"56":{"position":[[62,10]]},"180":{"position":[[4161,9]]}},"keywords":{}}],["boundariesadapt",{"_index":79,"title":{},"content":{"3":{"position":[[318,15]]}},"keywords":{}}],["boundaryus",{"_index":632,"title":{},"content":{"42":{"position":[[980,12]]}},"keywords":{}}],["boundsbest",{"_index":309,"title":{},"content":{"9":{"position":[[1524,10]]}},"keywords":{}}],["box",{"_index":358,"title":{},"content":{"9":{"position":[[2994,3]]},"157":{"position":[[12,4]]}},"keywords":{}}],["brief",{"_index":1276,"title":{},"content":{"157":{"position":[[909,5]]}},"keywords":{}}],["bright",{"_index":1219,"title":{},"content":{"149":{"position":[[923,6]]}},"keywords":{}}],["budget",{"_index":482,"title":{},"content":{"19":{"position":[[261,6]]}},"keywords":{}}],["buffer",{"_index":1540,"title":{},"content":{"180":{"position":[[701,7]]}},"keywords":{}}],["build",{"_index":290,"title":{},"content":{"9":{"position":[[860,5]]},"47":{"position":[[461,5]]},"141":{"position":[[375,8]]}},"keywords":{}}],["built",{"_index":510,"title":{},"content":{"21":{"position":[[794,5]]},"144":{"position":[[22,5]]}},"keywords":{}}],["button",{"_index":851,"title":{"74":{"position":[[7,6]]},"107":{"position":[[7,6]]},"111":{"position":[[10,6]]},"143":{"position":[[17,6]]}},"content":{},"keywords":{}}],["button.press",{"_index":669,"title":{},"content":{"44":{"position":[[602,12]]}},"keywords":{}}],["button.washing_machine_eco_program",{"_index":670,"title":{},"content":{"44":{"position":[[634,34]]}},"keywords":{}}],["c",{"_index":924,"title":{"89":{"position":[[0,2]]}},"content":{},"keywords":{}}],["cach",{"_index":402,"title":{},"content":{"10":{"position":[[198,6]]},"56":{"position":[[115,6]]},"132":{"position":[[340,6]]}},"keywords":{}}],["calcul",{"_index":83,"title":{"153":{"position":[[7,11]]}},"content":{"3":{"position":[[410,11]]},"20":{"position":[[32,11]]},"22":{"position":[[370,11]]},"30":{"position":[[136,11]]},"61":{"position":[[241,11]]},"100":{"position":[[231,11]]},"119":{"position":[[145,11],[191,10]]},"126":{"position":[[99,11],[169,10]]},"131":{"position":[[436,10]]},"165":{"position":[[832,11]]},"170":{"position":[[561,13]]},"180":{"position":[[819,10]]}},"keywords":{}}],["call",{"_index":422,"title":{},"content":{"11":{"position":[[435,5]]},"131":{"position":[[733,4],[1080,4]]},"132":{"position":[[780,6],[829,4],[1192,4]]}},"keywords":{}}],["captur",{"_index":1300,"title":{},"content":{"161":{"position":[[438,7]]},"178":{"position":[[269,8]]}},"keywords":{}}],["card",{"_index":292,"title":{"29":{"position":[[21,6]]},"47":{"position":[[11,6]]},"72":{"position":[[20,5]]},"73":{"position":[[14,6]]},"74":{"position":[[14,4]]},"75":{"position":[[12,5]]},"105":{"position":[[16,6]]},"106":{"position":[[7,5]]},"107":{"position":[[14,5]]},"108":{"position":[[16,5]]},"110":{"position":[[10,6]]},"111":{"position":[[17,5]]},"143":{"position":[[24,4]]},"144":{"position":[[19,4]]},"145":{"position":[[19,6]]},"146":{"position":[[17,4]]}},"content":{"9":{"position":[[979,4],[1118,4],[1172,4],[3364,4],[3720,4],[3827,5],[4501,4],[4638,4]]},"13":{"position":[[205,4],[285,4],[411,4],[548,4]]},"15":{"position":[[96,4],[440,4]]},"16":{"position":[[132,4],[155,4]]},"17":{"position":[[115,4],[138,4]]},"24":{"position":[[12,5]]},"25":{"position":[[17,5],[204,4]]},"28":{"position":[[12,4],[57,4]]},"29":{"position":[[75,6],[173,4]]},"38":{"position":[[82,5]]},"47":{"position":[[647,4]]},"48":{"position":[[23,4],[101,4]]},"51":{"position":[[947,4]]},"72":{"position":[[8,4]]},"73":{"position":[[71,6]]},"75":{"position":[[21,4],[119,5],[610,4]]},"77":{"position":[[53,6],[86,4]]},"78":{"position":[[69,6],[102,4],[176,6],[344,6]]},"79":{"position":[[81,4]]},"81":{"position":[[67,5]]},"105":{"position":[[61,6]]},"107":{"position":[[21,4]]},"108":{"position":[[30,4]]},"111":{"position":[[21,4]]},"112":{"position":[[158,4]]},"116":{"position":[[201,5],[456,4]]},"131":{"position":[[1343,4]]},"132":{"position":[[403,5],[429,6],[1820,4],[1870,4]]},"139":{"position":[[362,4]]},"141":{"position":[[101,4],[515,5],[813,5]]},"143":{"position":[[19,4],[111,4],[398,4]]},"144":{"position":[[40,4]]},"145":{"position":[[14,5],[111,4],[235,4],[244,4],[400,4],[501,4],[510,4]]},"146":{"position":[[251,4],[400,4],[537,4]]},"147":{"position":[[97,6],[152,6],[181,4],[398,4],[649,6],[678,4],[918,4],[1187,6],[1216,4],[1420,4]]},"149":{"position":[[698,4],[1268,4],[1512,5],[1676,4],[2150,4]]},"151":{"position":[[53,4],[107,4],[581,4]]}},"keywords":{}}],["card"",{"_index":527,"title":{},"content":{"24":{"position":[[106,10]]},"25":{"position":[[119,10]]},"49":{"position":[[49,10],[115,10]]}},"keywords":{}}],["card_mod",{"_index":1187,"title":{"144":{"position":[[29,9]]},"146":{"position":[[27,9]]}},"content":{"144":{"position":[[50,8],[170,9]]},"145":{"position":[[28,8],[213,9],[479,9]]},"146":{"position":[[229,9]]}},"keywords":{}}],["card_mod)check",{"_index":1237,"title":{},"content":{"151":{"position":[[115,14]]}},"keywords":{}}],["care",{"_index":1425,"title":{},"content":{"166":{"position":[[1215,8]]}},"keywords":{}}],["case",{"_index":131,"title":{"41":{"position":[[4,5]]},"42":{"position":[[4,5]]},"43":{"position":[[4,5]]},"44":{"position":[[4,5]]},"45":{"position":[[4,5]]}},"content":{"5":{"position":[[320,5]]},"13":{"position":[[87,6]]},"150":{"position":[[5,4]]},"157":{"position":[[374,6],[685,5],[867,5],[1008,5]]},"165":{"position":[[371,5],[1113,5]]},"166":{"position":[[486,5]]},"167":{"position":[[374,5]]}},"keywords":{}}],["cash",{"_index":1007,"title":{},"content":{"112":{"position":[[302,4],[476,4],[498,4]]}},"keywords":{}}],["cash/money",{"_index":973,"title":{},"content":{"102":{"position":[[132,10]]}},"keywords":{}}],["catch",{"_index":1271,"title":{},"content":{"157":{"position":[[835,7]]}},"keywords":{}}],["caus",{"_index":800,"title":{},"content":{"64":{"position":[[8,7]]},"180":{"position":[[203,6]]}},"keywords":{}}],["caution/expensive)var",{"_index":1205,"title":{},"content":{"148":{"position":[[203,23]]}},"keywords":{}}],["cautionari",{"_index":1029,"title":{},"content":{"115":{"position":[[172,10]]}},"keywords":{}}],["certain",{"_index":275,"title":{},"content":{"9":{"position":[[478,7]]}},"keywords":{}}],["cet",{"_index":739,"title":{},"content":{"55":{"position":[[56,3]]},"180":{"position":[[334,3]]}},"keywords":{}}],["chang",{"_index":363,"title":{"28":{"position":[[0,8]]},"180":{"position":[[30,8]]}},"content":{"9":{"position":[[3137,7]]},"10":{"position":[[289,8]]},"27":{"position":[[92,6],[144,6],[188,6]]},"40":{"position":[[136,8]]},"60":{"position":[[252,7]]},"66":{"position":[[124,7]]},"90":{"position":[[27,6]]},"102":{"position":[[467,6]]},"103":{"position":[[249,8]]},"105":{"position":[[370,7]]},"108":{"position":[[109,7]]},"110":{"position":[[129,6]]},"112":{"position":[[263,7]]},"116":{"position":[[10,9],[59,6]]},"131":{"position":[[543,7]]},"138":{"position":[[87,7]]},"139":{"position":[[155,6]]},"150":{"position":[[496,6]]},"151":{"position":[[11,8]]},"154":{"position":[[176,7]]},"157":{"position":[[318,6]]},"165":{"position":[[774,8]]},"166":{"position":[[651,7]]},"167":{"position":[[252,6]]},"170":{"position":[[286,6]]},"180":{"position":[[48,7],[134,8],[1335,7],[1384,7],[2057,7]]}},"keywords":{}}],["changesdynam",{"_index":1053,"title":{},"content":{"119":{"position":[[316,14]]}},"keywords":{}}],["changesmor",{"_index":412,"title":{},"content":{"11":{"position":[[187,11]]}},"keywords":{}}],["changingif",{"_index":1037,"title":{},"content":{"116":{"position":[[157,10]]}},"keywords":{}}],["charg",{"_index":638,"title":{},"content":{"43":{"position":[[96,8],[884,8],[1167,6],[1262,8]]},"70":{"position":[[79,8]]},"88":{"position":[[139,9]]},"156":{"position":[[167,6]]},"157":{"position":[[714,9]]},"180":{"position":[[3179,8]]}},"keywords":{}}],["chart",{"_index":139,"title":{"11":{"position":[[15,5]]},"12":{"position":[[0,5]]},"14":{"position":[[4,5]]},"28":{"position":[[9,5]]},"131":{"position":[[0,5]]},"132":{"position":[[0,5]]}},"content":{"8":{"position":[[44,5],[486,5],[1890,6]]},"9":{"position":[[875,6],[2880,5],[4274,5]]},"13":{"position":[[42,5]]},"22":{"position":[[61,5]]},"28":{"position":[[133,6]]},"29":{"position":[[194,5]]},"32":{"position":[[289,5]]},"47":{"position":[[467,6]]},"51":{"position":[[15,5]]},"78":{"position":[[113,5]]},"81":{"position":[[258,5]]},"102":{"position":[[324,5]]},"121":{"position":[[357,5],[452,5]]},"131":{"position":[[96,5],[248,5],[341,5],[1418,5]]},"132":{"position":[[347,5],[397,5],[678,5],[1078,5],[1470,5]]}},"keywords":{}}],["chart_data",{"_index":181,"title":{},"content":{"8":{"position":[[739,10],[1707,10]]},"132":{"position":[[2374,10]]}},"keywords":{}}],["chart_metadata",{"_index":307,"title":{},"content":{"9":{"position":[[1483,14],[2449,14],[2712,14],[2846,14]]},"16":{"position":[[390,14]]},"17":{"position":[[427,14]]},"21":{"position":[[67,14],[125,14],[281,14],[655,14]]}},"keywords":{}}],["cheap",{"_index":235,"title":{"69":{"position":[[31,5]]}},"content":{"8":{"position":[[2437,5]]},"9":{"position":[[1349,6],[4115,6]]},"42":{"position":[[79,5],[136,5]]},"43":{"position":[[429,5],[662,5],[1195,5],[1286,5]]},"45":{"position":[[577,5]]},"52":{"position":[[43,6]]},"65":{"position":[[51,5]]},"97":{"position":[[55,6]]},"102":{"position":[[181,5]]},"112":{"position":[[491,6],[576,6]]},"115":{"position":[[32,6]]},"138":{"position":[[184,6]]},"141":{"position":[[907,8]]},"149":{"position":[[950,8]]},"156":{"position":[[67,5]]},"157":{"position":[[670,5]]},"158":{"position":[[42,6],[278,6]]},"165":{"position":[[158,5],[313,5],[359,5],[1023,5]]},"166":{"position":[[1411,5],[1441,5]]},"178":{"position":[[139,5]]},"180":{"position":[[2751,5]]}},"keywords":{}}],["cheap"",{"_index":1402,"title":{},"content":{"165":{"position":[[1187,11]]}},"keywords":{}}],["cheap/expens",{"_index":1006,"title":{},"content":{"112":{"position":[[285,16]]},"161":{"position":[[1101,15]]},"165":{"position":[[64,15]]},"166":{"position":[[1114,17]]},"173":{"position":[[809,15]]}},"keywords":{}}],["cheap/expensive"",{"_index":1387,"title":{},"content":{"165":{"position":[[426,21]]}},"keywords":{}}],["cheaper",{"_index":1166,"title":{},"content":{"140":{"position":[[696,7]]},"175":{"position":[[357,7]]}},"keywords":{}}],["cheapest",{"_index":1259,"title":{},"content":{"157":{"position":[[53,8]]},"175":{"position":[[16,8]]}},"keywords":{}}],["cheapest/peak",{"_index":1072,"title":{},"content":{"121":{"position":[[260,13]]}},"keywords":{}}],["cheapyou'r",{"_index":1455,"title":{},"content":{"171":{"position":[[190,11]]}},"keywords":{}}],["check",{"_index":612,"title":{"43":{"position":[[40,6]]},"103":{"position":[[7,5]]}},"content":{"42":{"position":[[48,5],[533,5]]},"43":{"position":[[23,5],[306,5]]},"45":{"position":[[250,5],[1144,6]]},"64":{"position":[[37,5],[97,5],[131,5]]},"67":{"position":[[1,6],[193,6]]},"103":{"position":[[262,5]]},"123":{"position":[[1,5]]},"136":{"position":[[1,5]]},"161":{"position":[[832,5]]},"167":{"position":[[449,5]]},"177":{"position":[[101,5],[263,5]]},"178":{"position":[[296,5]]},"179":{"position":[[19,6]]},"180":{"position":[[1707,5],[1785,5],[2665,5],[3327,5],[4000,6]]}},"keywords":{}}],["child(1",{"_index":1194,"title":{},"content":{"146":{"position":[[271,8]]}},"keywords":{}}],["child(2",{"_index":1195,"title":{},"content":{"146":{"position":[[420,8]]}},"keywords":{}}],["child(3",{"_index":1197,"title":{},"content":{"146":{"position":[[557,8]]}},"keywords":{}}],["chip",{"_index":890,"title":{},"content":{"79":{"position":[[75,5],[86,6]]}},"keywords":{}}],["choos",{"_index":1479,"title":{"173":{"position":[[0,8]]}},"content":{},"keywords":{}}],["chosen",{"_index":1033,"title":{},"content":{"115":{"position":[[247,6]]}},"keywords":{}}],["circl",{"_index":1199,"title":{},"content":{"147":{"position":[[1032,6]]}},"keywords":{}}],["class",{"_index":956,"title":{},"content":{"98":{"position":[[117,6]]}},"keywords":{}}],["classif",{"_index":329,"title":{"180":{"position":[[15,14]]}},"content":{"9":{"position":[[2007,14],[3603,14]]},"40":{"position":[[68,15]]},"42":{"position":[[32,15],[865,14]]},"43":{"position":[[515,14]]},"93":{"position":[[14,14]]},"97":{"position":[[27,14]]},"98":{"position":[[139,14]]},"121":{"position":[[171,14]]},"154":{"position":[[161,14]]},"180":{"position":[[860,15],[2042,14],[2130,14],[2696,14],[4020,14]]}},"keywords":{}}],["classifi",{"_index":27,"title":{},"content":{"2":{"position":[[26,10]]},"180":{"position":[[888,10]]}},"keywords":{}}],["classification"",{"_index":620,"title":{},"content":{"42":{"position":[[246,20]]}},"keywords":{}}],["classificationon",{"_index":651,"title":{},"content":{"43":{"position":[[1113,16]]}},"keywords":{}}],["clean",{"_index":729,"title":{},"content":{"52":{"position":[[175,5]]},"141":{"position":[[159,5]]}},"keywords":{}}],["clear",{"_index":674,"title":{},"content":{"44":{"position":[[832,5],[1028,5]]},"173":{"position":[[803,5]]}},"keywords":{}}],["clearli",{"_index":1379,"title":{},"content":{"164":{"position":[[1147,7]]}},"keywords":{}}],["climate.heat_pump",{"_index":691,"title":{},"content":{"45":{"position":[[510,17]]}},"keywords":{}}],["climate.set_temperatur",{"_index":690,"title":{},"content":{"45":{"position":[[467,23]]}},"keywords":{}}],["close",{"_index":594,"title":{},"content":{"41":{"position":[[712,6]]},"160":{"position":[[197,5]]},"180":{"position":[[318,6]]}},"keywords":{}}],["code",{"_index":294,"title":{},"content":{"9":{"position":[[1067,6],[1285,5]]},"15":{"position":[[294,5]]},"52":{"position":[[7,5]]},"116":{"position":[[263,5],[374,4]]},"119":{"position":[[382,5]]},"131":{"position":[[950,4]]},"141":{"position":[[165,4]]},"152":{"position":[[87,5]]},"172":{"position":[[443,5]]}},"keywords":{}}],["color",{"_index":293,"title":{"27":{"position":[[12,7]]},"79":{"position":[[5,5]]},"112":{"position":[[23,7]]},"137":{"position":[[13,6]]},"148":{"position":[[4,5]]},"149":{"position":[[13,7]]}},"content":{"9":{"position":[[1061,5],[1279,5],[4695,7]]},"15":{"position":[[288,5]]},"16":{"position":[[574,5]]},"27":{"position":[[10,6],[60,7],[114,5],[158,5],[215,5]]},"52":{"position":[[1,5]]},"72":{"position":[[48,6]]},"75":{"position":[[626,8]]},"79":{"position":[[44,7],[437,6],[457,5]]},"81":{"position":[[334,6],[343,5]]},"112":{"position":[[48,7],[77,6],[131,5],[330,6],[400,8],[537,5]]},"117":{"position":[[14,6],[23,5]]},"119":{"position":[[336,6],[376,5]]},"138":{"position":[[69,5],[173,6],[203,6],[253,6],[299,6],[349,6],[388,6]]},"139":{"position":[[40,6],[68,6],[148,6],[231,5],[438,6]]},"140":{"position":[[659,6]]},"141":{"position":[[78,7],[256,5],[329,6],[547,5],[588,6],[614,8],[659,6],[683,8]]},"143":{"position":[[56,7],[79,5],[246,6],[316,8],[371,5],[533,6],[603,8],[625,6],[697,8]]},"144":{"position":[[78,7],[230,6],[341,6]]},"145":{"position":[[55,7],[69,5],[258,6],[524,6],[629,6]]},"146":{"position":[[39,7],[294,6],[443,6],[580,6]]},"147":{"position":[[67,7],[293,6],[363,8],[512,6],[582,8],[813,6],[883,8],[1055,6],[1125,8],[1315,6],[1385,8],[1525,6],[1595,8]]},"148":{"position":[[102,6],[144,6],[187,6],[234,6],[291,6],[336,6],[445,5]]},"149":{"position":[[35,6],[148,6],[254,6],[302,6],[350,6],[398,6],[507,7],[629,7],[654,6],[833,6],[1179,8],[1222,6],[1403,6],[1633,6],[1781,6],[2074,8],[2105,6],[2264,6],[2494,8]]},"150":{"position":[[52,6],[158,6],[223,6],[295,6],[468,5]]},"151":{"position":[[20,6],[282,6],[306,6],[461,6],[484,7],[514,6]]},"152":{"position":[[81,5]]}},"keywords":{}}],["column",{"_index":882,"title":{},"content":{"78":{"position":[[44,8]]}},"keywords":{}}],["combin",{"_index":545,"title":{"29":{"position":[[0,9]]},"43":{"position":[[10,8]]},"112":{"position":[[0,9]]}},"content":{"146":{"position":[[1,7]]},"147":{"position":[[27,9]]},"161":{"position":[[1628,8]]},"167":{"position":[[83,7]]},"170":{"position":[[174,13],[482,11]]},"172":{"position":[[117,12],[211,12],[242,11],[961,12]]},"173":{"position":[[74,12],[389,12]]}},"keywords":{}}],["combinations)rememb",{"_index":1489,"title":{},"content":{"173":{"position":[[321,22]]}},"keywords":{}}],["combo",{"_index":1445,"title":{},"content":{"170":{"position":[[527,7]]}},"keywords":{}}],["come",{"_index":375,"title":{},"content":{"9":{"position":[[3890,6]]},"34":{"position":[[1,6]]},"35":{"position":[[1,6]]},"36":{"position":[[1,6]]},"39":{"position":[[1,6]]},"46":{"position":[[1,6]]},"83":{"position":[[1,6]]},"84":{"position":[[1,6]]},"85":{"position":[[1,6]]},"127":{"position":[[1,6]]},"128":{"position":[[1,6]]},"129":{"position":[[1,6]]},"134":{"position":[[1,6]]},"135":{"position":[[1,6]]}},"keywords":{}}],["common",{"_index":192,"title":{"134":{"position":[[0,6]]},"167":{"position":[[0,6]]},"174":{"position":[[0,6]]}},"content":{"8":{"position":[[1001,6]]},"64":{"position":[[1,6]]},"103":{"position":[[289,6]]},"119":{"position":[[594,6]]},"140":{"position":[[281,6]]},"177":{"position":[[82,6]]},"178":{"position":[[57,6]]}},"keywords":{}}],["commun",{"_index":285,"title":{},"content":{"9":{"position":[[720,9]]},"47":{"position":[[507,9]]},"122":{"position":[[59,9]]}},"keywords":{}}],["compact",{"_index":871,"title":{"77":{"position":[[0,7]]}},"content":{},"keywords":{}}],["compar",{"_index":55,"title":{},"content":{"2":{"position":[[405,9]]},"102":{"position":[[271,8]]}},"keywords":{}}],["comparison",{"_index":472,"title":{"18":{"position":[[0,11]]}},"content":{},"keywords":{}}],["compat",{"_index":277,"title":{},"content":{"9":{"position":[[511,10]]},"47":{"position":[[379,11]]},"132":{"position":[[163,14]]},"148":{"position":[[72,14]]}},"keywords":{}}],["complet",{"_index":242,"title":{"147":{"position":[[0,8]]}},"content":{"8":{"position":[[2573,8]]},"9":{"position":[[94,8]]},"30":{"position":[[16,8]]},"44":{"position":[[124,8],[854,9]]},"47":{"position":[[134,8]]},"95":{"position":[[110,8]]},"117":{"position":[[74,8]]},"132":{"position":[[1684,8]]},"147":{"position":[[10,8]]},"152":{"position":[[21,8]]},"157":{"position":[[608,8]]},"173":{"position":[[42,12]]}},"keywords":{}}],["complete"",{"_index":676,"title":{},"content":{"44":{"position":[[903,14],[1324,14]]}},"keywords":{}}],["complex",{"_index":1174,"title":{},"content":{"141":{"position":[[384,7],[1123,7]]}},"keywords":{}}],["compon",{"_index":929,"title":{},"content":{"89":{"position":[[161,9]]}},"keywords":{}}],["comprehens",{"_index":282,"title":{},"content":{"9":{"position":[[632,13]]}},"keywords":{}}],["concept",{"_index":1,"title":{"0":{"position":[[5,8]]}},"content":{"100":{"position":[[152,8]]}},"keywords":{}}],["conceptsperiod",{"_index":968,"title":{},"content":{"100":{"position":[[216,14]]}},"keywords":{}}],["condit",{"_index":587,"title":{},"content":{"41":{"position":[[515,10],[583,10],[721,10]]},"42":{"position":[[368,10],[430,10],[559,10]]},"43":{"position":[[293,10],[328,10],[444,10],[458,11],[532,10],[670,10]]},"44":{"position":[[334,10],[387,10],[501,10],[1010,10],[1063,10]]},"45":{"position":[[237,10],[304,10]]},"69":{"position":[[164,10],[177,10]]},"103":{"position":[[222,10]]},"141":{"position":[[392,11]]},"151":{"position":[[555,11]]},"180":{"position":[[1597,10],[2461,10],[2474,10],[2871,10],[2884,10],[3314,10],[3381,10]]}},"keywords":{}}],["config",{"_index":365,"title":{},"content":{"9":{"position":[[3313,6],[3391,6],[3664,6],[3855,6],[4485,6]]},"13":{"position":[[395,6],[532,6]]},"16":{"position":[[139,6]]},"17":{"position":[[122,6]]},"25":{"position":[[1,6]]},"29":{"position":[[200,6]]},"48":{"position":[[85,6]]},"51":{"position":[[931,6]]},"78":{"position":[[146,6]]},"131":{"position":[[1327,6]]}},"keywords":{}}],["config/hom",{"_index":830,"title":{},"content":{"67":{"position":[[134,13]]}},"keywords":{}}],["configur",{"_index":62,"title":{"33":{"position":[[0,13]]},"35":{"position":[[0,13]]},"59":{"position":[[0,13]]},"85":{"position":[[0,14]]},"163":{"position":[[0,13]]}},"content":{"2":{"position":[[476,10]]},"3":{"position":[[348,13],[435,14]]},"9":{"position":[[53,13],[657,13],[758,14],[989,13],[2798,14],[2962,14],[4442,10]]},"11":{"position":[[173,13],[367,13]]},"19":{"position":[[41,11]]},"22":{"position":[[344,13],[467,10]]},"25":{"position":[[39,13]]},"28":{"position":[[17,14]]},"30":{"position":[[155,9]]},"47":{"position":[[87,13],[545,14],[652,13]]},"50":{"position":[[12,13]]},"91":{"position":[[21,13]]},"102":{"position":[[493,13]]},"116":{"position":[[461,13]]},"119":{"position":[[44,9]]},"121":{"position":[[287,12],[363,14],[458,13]]},"126":{"position":[[184,11]]},"131":{"position":[[102,13],[254,13],[1267,13]]},"132":{"position":[[459,12],[516,10],[1004,13],[1256,10],[1275,14],[1294,9],[1394,9],[1753,10]]},"136":{"position":[[78,14]]},"149":{"position":[[169,13]]},"157":{"position":[[959,13]]},"165":{"position":[[724,9]]},"172":{"position":[[71,10],[1023,10]]},"175":{"position":[[58,14],[94,13]]},"181":{"position":[[14,13]]},"182":{"position":[[1,13]]}},"keywords":{}}],["configurationor",{"_index":1243,"title":{},"content":{"151":{"position":[[535,15]]}},"keywords":{}}],["configurations)config",{"_index":296,"title":{},"content":{"9":{"position":[[1141,21]]}},"keywords":{}}],["configurationsdynam",{"_index":914,"title":{},"content":{"81":{"position":[[286,21]]}},"keywords":{}}],["configuredsensor",{"_index":1051,"title":{},"content":{"119":{"position":[[206,17]]}},"keywords":{}}],["conflict",{"_index":1422,"title":{},"content":{"166":{"position":[[959,8]]}},"keywords":{}}],["connect",{"_index":804,"title":{},"content":{"64":{"position":[[84,10]]}},"keywords":{}}],["consecut",{"_index":69,"title":{},"content":{"3":{"position":[[105,11]]}},"keywords":{}}],["consid",{"_index":408,"title":{},"content":{"11":{"position":[[72,8]]},"132":{"position":[[932,8],[2037,8]]},"180":{"position":[[2105,8]]}},"keywords":{}}],["consist",{"_index":1153,"title":{},"content":{"139":{"position":[[184,10]]},"150":{"position":[[41,10]]},"166":{"position":[[760,12]]}},"keywords":{}}],["const",{"_index":1176,"title":{},"content":{"141":{"position":[[541,5],[839,5]]},"149":{"position":[[846,5],[1794,5],[2277,5]]}},"keywords":{}}],["consum",{"_index":1120,"title":{},"content":{"132":{"position":[[385,8],[1825,9]]}},"keywords":{}}],["consumpt",{"_index":46,"title":{},"content":{"2":{"position":[[277,11]]},"3":{"position":[[256,12]]},"95":{"position":[[84,12]]},"156":{"position":[[235,11]]}},"keywords":{}}],["consumption)expens",{"_index":43,"title":{},"content":{"2":{"position":[[224,21]]}},"keywords":{}}],["contain",{"_index":1141,"title":{},"content":{"138":{"position":[[26,8]]}},"keywords":{}}],["content",{"_index":559,"title":{"38":{"position":[[9,9]]},"154":{"position":[[9,9]]}},"content":{},"keywords":{}}],["context",{"_index":86,"title":{},"content":{"4":{"position":[[46,8]]}},"keywords":{}}],["contextpric",{"_index":1069,"title":{},"content":{"121":{"position":[[132,12]]}},"keywords":{}}],["continu",{"_index":655,"title":{},"content":{"43":{"position":[[1252,9]]},"44":{"position":[[1586,10]]},"160":{"position":[[89,10]]},"161":{"position":[[1449,10]]},"172":{"position":[[827,8]]}},"keywords":{}}],["contract",{"_index":825,"title":{},"content":{"66":{"position":[[158,10]]},"67":{"position":[[43,8]]}},"keywords":{}}],["contractapi",{"_index":764,"title":{},"content":{"58":{"position":[[42,11]]}},"keywords":{}}],["contractscomparison",{"_index":113,"title":{},"content":{"5":{"position":[[98,19]]}},"keywords":{}}],["contribut",{"_index":286,"title":{},"content":{"9":{"position":[[730,13]]},"47":{"position":[[517,13]]},"123":{"position":[[137,10]]}},"keywords":{}}],["control",{"_index":161,"title":{},"content":{"8":{"position":[[374,8],[508,8]]},"9":{"position":[[892,7]]},"91":{"position":[[45,11]]},"132":{"position":[[978,7]]}},"keywords":{}}],["convers",{"_index":927,"title":{},"content":{"89":{"position":[[106,10]]}},"keywords":{}}],["convert",{"_index":1172,"title":{},"content":{"141":{"position":[[244,7],[469,10]]}},"keywords":{}}],["coordin",{"_index":928,"title":{},"content":{"89":{"position":[[133,12]]},"131":{"position":[[551,12]]},"132":{"position":[[616,11]]}},"keywords":{}}],["copi",{"_index":393,"title":{},"content":{"9":{"position":[[4846,7]]},"50":{"position":[[290,4]]}},"keywords":{}}],["core",{"_index":0,"title":{"0":{"position":[[0,4]]},"127":{"position":[[0,4]]}},"content":{"24":{"position":[[18,4]]},"100":{"position":[[147,4]]}},"keywords":{}}],["correct",{"_index":827,"title":{},"content":{"67":{"position":[[83,7]]},"180":{"position":[[186,7]]}},"keywords":{}}],["correctlysom",{"_index":1241,"title":{},"content":{"151":{"position":[[377,13]]}},"keywords":{}}],["count",{"_index":950,"title":{},"content":{"97":{"position":[[216,5]]}},"keywords":{}}],["creat",{"_index":467,"title":{},"content":{"17":{"position":[[850,7]]},"44":{"position":[[671,6]]},"116":{"position":[[498,6]]}},"keywords":{}}],["criteria",{"_index":809,"title":{},"content":{"65":{"position":[[36,8]]},"160":{"position":[[131,9]]}},"keywords":{}}],["criteriarelax",{"_index":790,"title":{},"content":{"62":{"position":[[64,18]]}},"keywords":{}}],["critic",{"_index":1491,"title":{},"content":{"173":{"position":[[511,9]]}},"keywords":{}}],["css",{"_index":1142,"title":{"139":{"position":[[4,3]]},"148":{"position":[[0,3]]}},"content":{"138":{"position":[[37,3]]},"139":{"position":[[7,3]]},"141":{"position":[[43,3],[115,3],[269,3]]},"148":{"position":[[48,3]]},"150":{"position":[[176,3]]},"151":{"position":[[267,3],[431,3]]}},"keywords":{}}],["ct",{"_index":503,"title":{},"content":{"21":{"position":[[271,2],[424,2]]},"89":{"position":[[55,3]]},"121":{"position":[[560,4]]},"161":{"position":[[1336,2],[1344,2],[1399,2]]},"162":{"position":[[201,2],[220,2],[239,2],[271,4],[367,4]]},"180":{"position":[[1052,2],[1209,2],[1356,3],[3957,2]]}},"keywords":{}}],["ct/kwh",{"_index":603,"title":{},"content":{"41":{"position":[[1040,7]]},"42":{"position":[[421,6],[946,7]]},"43":{"position":[[963,6]]},"98":{"position":[[50,7]]},"161":{"position":[[124,6],[182,6],[282,6],[341,6],[593,6],[658,6],[702,6]]},"180":{"position":[[1042,6],[1079,6],[1098,6],[1199,6],[1236,6],[1255,6],[3005,6],[3840,8],[3898,8]]}},"keywords":{}}],["ct/kwh)handl",{"_index":653,"title":{},"content":{"43":{"position":[[1210,14]]}},"keywords":{}}],["ct/kwh)stabl",{"_index":1553,"title":{},"content":{"180":{"position":[[1566,13]]}},"keywords":{}}],["ct/kwhnok/sek",{"_index":822,"title":{},"content":{"66":{"position":[[77,13]]}},"keywords":{}}],["ct/kwhon",{"_index":606,"title":{},"content":{"41":{"position":[[1209,8]]}},"keywords":{}}],["ct/kwhuser",{"_index":608,"title":{},"content":{"41":{"position":[[1276,10]]}},"keywords":{}}],["ct/ΓΈre",{"_index":171,"title":{},"content":{"8":{"position":[[542,8],[1330,6]]},"45":{"position":[[904,8]]}},"keywords":{}}],["ct/ΓΈre)day_price_max",{"_index":699,"title":{},"content":{"45":{"position":[[764,22]]}},"keywords":{}}],["ct/ΓΈre)day_price_span",{"_index":701,"title":{},"content":{"45":{"position":[[830,23]]}},"keywords":{}}],["currenc",{"_index":698,"title":{"66":{"position":[[20,9]]}},"content":{"45":{"position":[[755,8],[821,8],[895,8]]},"66":{"position":[[18,8]]},"89":{"position":[[1,8],[23,8]]},"121":{"position":[[503,8]]},"131":{"position":[[941,8]]}},"keywords":{}}],["current",{"_index":56,"title":{},"content":{"2":{"position":[[415,7]]},"4":{"position":[[201,7],[332,7]]},"11":{"position":[[352,7]]},"13":{"position":[[365,7]]},"16":{"position":[[21,7]]},"52":{"position":[[284,7]]},"72":{"position":[[21,7],[78,7],[172,7]]},"78":{"position":[[207,7]]},"98":{"position":[[8,7]]},"99":{"position":[[61,7],[139,7]]},"102":{"position":[[81,7],[257,7]]},"103":{"position":[[28,9]]},"107":{"position":[[88,7]]},"112":{"position":[[225,7]]},"116":{"position":[[345,7]]},"132":{"position":[[2008,9]]},"143":{"position":[[178,7],[465,7]]},"147":{"position":[[106,7]]},"149":{"position":[[765,7]]}},"keywords":{}}],["current_interval_price_level)pric",{"_index":988,"title":{},"content":{"103":{"position":[[357,34]]},"140":{"position":[[346,34]]}},"keywords":{}}],["current_interval_price_rating)volatil",{"_index":989,"title":{},"content":{"103":{"position":[[414,40]]},"140":{"position":[[403,40]]}},"keywords":{}}],["custom",{"_index":278,"title":{"27":{"position":[[0,11]]},"74":{"position":[[0,6]]},"107":{"position":[[0,6]]},"111":{"position":[[3,6]]},"143":{"position":[[10,6]]},"149":{"position":[[6,6]]}},"content":{"9":{"position":[[540,14],[574,9],[801,6],[4685,9]]},"28":{"position":[[107,6]]},"47":{"position":[[351,13],[404,14]]},"116":{"position":[[181,6]]},"119":{"position":[[408,6]]},"120":{"position":[[26,6]]},"132":{"position":[[422,6],[1212,6]]},"139":{"position":[[271,6],[431,6]]},"141":{"position":[[800,6]]},"148":{"position":[[438,6]]},"149":{"position":[[141,6],[283,6],[331,6],[379,6],[427,6],[494,6],[647,6],[1215,6],[1626,6],[2098,6]]},"150":{"position":[[145,6]]},"151":{"position":[[72,6],[391,6]]},"181":{"position":[[179,6]]}},"keywords":{}}],["custom:apexchart",{"_index":368,"title":{},"content":{"9":{"position":[[3346,17]]},"28":{"position":[[39,17]]},"29":{"position":[[155,17]]},"78":{"position":[[84,17]]},"132":{"position":[[1852,17]]}},"keywords":{}}],["custom:auto",{"_index":907,"title":{},"content":{"81":{"position":[[46,11]]}},"keywords":{}}],["custom:button",{"_index":852,"title":{},"content":{"75":{"position":[[7,13]]},"107":{"position":[[7,13]]},"111":{"position":[[7,13]]},"112":{"position":[[144,13]]},"143":{"position":[[5,13],[97,13],[384,13]]},"147":{"position":[[167,13],[384,13],[664,13],[904,13],[1202,13],[1406,13]]},"149":{"position":[[684,13],[1254,13],[1662,13],[2136,13]]},"151":{"position":[[93,13]]}},"keywords":{}}],["custom:config",{"_index":371,"title":{},"content":{"9":{"position":[[3697,13]]}},"keywords":{}}],["custom:mini",{"_index":873,"title":{},"content":{"77":{"position":[[68,11]]}},"keywords":{}}],["custom:mushroom",{"_index":889,"title":{},"content":{"79":{"position":[[59,15]]},"108":{"position":[[7,15]]},"145":{"position":[[88,15],[377,15]]}},"keywords":{}}],["cycl",{"_index":661,"title":{},"content":{"44":{"position":[[39,5],[708,5],[848,5],[897,5],[1318,5]]}},"keywords":{}}],["cycle"",{"_index":664,"title":{},"content":{"44":{"position":[[133,11]]}},"keywords":{}}],["cycleonli",{"_index":680,"title":{},"content":{"44":{"position":[[1475,9]]}},"keywords":{}}],["cycles)decreas",{"_index":1373,"title":{},"content":{"164":{"position":[[851,15]]}},"keywords":{}}],["cyclesstrict",{"_index":1265,"title":{},"content":{"157":{"position":[[623,14]]}},"keywords":{}}],["cycleswon't",{"_index":679,"title":{},"content":{"44":{"position":[[1399,11]]}},"keywords":{}}],["d",{"_index":931,"title":{"90":{"position":[[0,2]]}},"content":{},"keywords":{}}],["d32f2f",{"_index":1231,"title":{},"content":{"149":{"position":[[2446,10]]}},"keywords":{}}],["daili",{"_index":57,"title":{},"content":{"2":{"position":[[434,5]]},"13":{"position":[[179,5]]},"15":{"position":[[21,5]]},"20":{"position":[[49,5]]},"93":{"position":[[89,5]]},"94":{"position":[[67,5]]},"126":{"position":[[298,5],[396,5]]},"157":{"position":[[109,5],[205,5]]},"160":{"position":[[210,5]]},"161":{"position":[[79,5],[110,5],[237,5],[268,5],[563,5],[579,5]]},"162":{"position":[[187,5],[206,5],[225,5]]},"164":{"position":[[181,5],[251,5]]},"173":{"position":[[781,6]]},"175":{"position":[[370,5]]},"180":{"position":[[1061,5],[1218,5],[1791,5]]},"182":{"position":[[104,5]]}},"keywords":{}}],["dark",{"_index":483,"title":{},"content":{"20":{"position":[[77,5]]},"149":{"position":[[2349,4],[2460,4]]}},"keywords":{}}],["dashboard",{"_index":366,"title":{"71":{"position":[[0,9]]},"78":{"position":[[8,10]]},"80":{"position":[[17,10]]},"104":{"position":[[28,10]]},"142":{"position":[[30,10]]},"147":{"position":[[9,9]]}},"content":{"9":{"position":[[3329,10],[3680,10],[4832,10]]},"29":{"position":[[30,9]]},"50":{"position":[[333,10]]},"80":{"position":[[22,10]]},"120":{"position":[[274,11]]}},"keywords":{}}],["dashboardsact",{"_index":1054,"title":{},"content":{"119":{"position":[[388,17]]}},"keywords":{}}],["data",{"_index":138,"title":{"11":{"position":[[21,4]]},"56":{"position":[[38,6]]},"67":{"position":[[9,4]]},"132":{"position":[[6,4]]}},"content":{"8":{"position":[[36,4],[611,5],[1537,4],[1594,5],[1745,4],[1824,4],[2089,5],[2342,5]]},"9":{"position":[[173,4],[271,5],[312,4],[909,4],[1752,4],[1826,5],[2393,4],[2942,4],[3132,4],[3228,5],[3487,5]]},"10":{"position":[[46,4],[147,5],[190,4]]},"15":{"position":[[161,5],[545,5]]},"16":{"position":[[215,5],[423,4],[516,5],[560,4],[730,4]]},"17":{"position":[[198,5]]},"21":{"position":[[366,4]]},"32":{"position":[[316,6]]},"41":{"position":[[913,5]]},"43":{"position":[[861,5]]},"44":{"position":[[1289,5]]},"45":{"position":[[528,5]]},"47":{"position":[[213,4]]},"50":{"position":[[91,5]]},"51":{"position":[[50,4],[113,5],[290,4],[367,4],[562,5],[690,4]]},"55":{"position":[[226,4]]},"56":{"position":[[110,4]]},"67":{"position":[[188,4]]},"87":{"position":[[106,4]]},"89":{"position":[[180,4]]},"131":{"position":[[538,4],[608,4],[697,5]]},"132":{"position":[[368,4],[598,4],[684,4],[793,5],[1084,4],[1139,4],[1241,4],[1476,4],[2131,5],[2246,5]]}},"keywords":{}}],["data/inact",{"_index":1209,"title":{},"content":{"148":{"position":[[360,14]]}},"keywords":{}}],["data_gener",{"_index":1135,"title":{},"content":{"132":{"position":[[1930,15]]}},"keywords":{}}],["dataaft",{"_index":746,"title":{},"content":{"55":{"position":[[165,9]]}},"keywords":{}}],["dataautom",{"_index":128,"title":{},"content":{"5":{"position":[[280,14]]}},"keywords":{}}],["dataautomat",{"_index":1096,"title":{},"content":{"131":{"position":[[494,13]]}},"keywords":{}}],["dataset",{"_index":944,"title":{},"content":{"95":{"position":[[119,7]]}},"keywords":{}}],["day",{"_index":152,"title":{"41":{"position":[[38,5]]},"45":{"position":[[21,3]]},"50":{"position":[[15,3]]},"65":{"position":[[28,4]]}},"content":{"8":{"position":[[207,3],[641,4],[1093,3],[1097,4],[1454,3],[1631,5],[1953,3],[2161,4]]},"9":{"position":[[1856,4],[2122,3],[2152,4],[3258,4],[3524,5],[4578,3]]},"13":{"position":[[471,3],[515,3],[629,3]]},"15":{"position":[[191,4],[472,5],[561,3]]},"16":{"position":[[252,5]]},"17":{"position":[[43,3],[75,3],[228,4]]},"21":{"position":[[750,3]]},"25":{"position":[[155,3]]},"32":{"position":[[51,3]]},"40":{"position":[[50,4]]},"41":{"position":[[4,4],[369,4],[1157,4],[1233,4],[1335,4]]},"43":{"position":[[496,3],[1075,4],[1145,4]]},"45":{"position":[[41,3],[272,3],[682,3],[742,3],[808,3]]},"50":{"position":[[121,4]]},"51":{"position":[[143,4],[513,4],[592,4]]},"61":{"position":[[223,5]]},"62":{"position":[[28,4]]},"65":{"position":[[57,6]]},"93":{"position":[[38,3]]},"94":{"position":[[144,5]]},"96":{"position":[[67,5]]},"132":{"position":[[2276,4]]},"160":{"position":[[6,4]]},"162":{"position":[[24,4]]},"166":{"position":[[370,4],[1299,5],[1478,4]]},"167":{"position":[[239,4]]},"170":{"position":[[88,3],[690,5]]},"171":{"position":[[233,4],[465,3]]},"172":{"position":[[264,4],[630,4]]},"173":{"position":[[91,3],[271,4],[492,3],[526,3],[554,3],[625,3],[683,3],[793,4]]},"175":{"position":[[35,3],[274,3]]},"177":{"position":[[413,3]]},"179":{"position":[[487,3]]},"180":{"position":[[251,3],[300,3],[370,3],[415,3],[479,3],[714,3],[780,5],[791,3],[986,3],[1143,3],[1410,3],[1450,3],[1526,5],[2153,4],[2275,4],[3104,3],[3349,3],[3651,3],[3787,3],[3836,3],[3894,3],[4134,4],[4192,3],[4236,3],[4323,3]]},"182":{"position":[[446,3],[510,3]]}},"keywords":{}}],["day'",{"_index":705,"title":{},"content":{"45":{"position":[[1086,5]]},"164":{"position":[[528,5]]},"180":{"position":[[934,5]]}},"keywords":{}}],["day?"",{"_index":1572,"title":{},"content":{"180":{"position":[[4065,10]]}},"keywords":{}}],["day_price_max",{"_index":1566,"title":{},"content":{"180":{"position":[[3849,14]]}},"keywords":{}}],["day_price_min",{"_index":1564,"title":{},"content":{"180":{"position":[[3791,14]]}},"keywords":{}}],["day_price_span",{"_index":1568,"title":{},"content":{"180":{"position":[[3907,15]]}},"keywords":{}}],["day_volatility_",{"_index":688,"title":{},"content":{"45":{"position":[[406,19],[626,17]]},"180":{"position":[[3483,19],[3734,17]]}},"keywords":{}}],["dayal",{"_index":1528,"title":{},"content":{"180":{"position":[[343,6]]}},"keywords":{}}],["daysabsolut",{"_index":630,"title":{},"content":{"42":{"position":[[919,12]]}},"keywords":{}}],["daysmarket",{"_index":1555,"title":{},"content":{"180":{"position":[[1624,10]]}},"keywords":{}}],["dc143c",{"_index":868,"title":{},"content":{"75":{"position":[[580,7]]}},"keywords":{}}],["debug",{"_index":1138,"title":{"135":{"position":[[0,5]]}},"content":{},"keywords":{}}],["decent",{"_index":1458,"title":{},"content":{"171":{"position":[[385,6]]}},"keywords":{}}],["decim",{"_index":206,"title":{},"content":{"8":{"position":[[1377,7]]}},"keywords":{}}],["decis",{"_index":480,"title":{},"content":{"19":{"position":[[231,8]]}},"keywords":{}}],["decreas",{"_index":351,"title":{},"content":{"9":{"position":[[2646,9]]},"17":{"position":[[372,9]]},"51":{"position":[[783,9]]},"60":{"position":[[224,8]]},"166":{"position":[[604,8],[883,8]]}},"keywords":{}}],["deep",{"_index":969,"title":{},"content":{"100":{"position":[[245,4]]},"181":{"position":[[51,4]]}},"keywords":{}}],["default",{"_index":337,"title":{"157":{"position":[[0,7]]},"175":{"position":[[30,10]]}},"content":{"9":{"position":[[2250,8],[4011,10]]},"21":{"position":[[533,10]]},"51":{"position":[[191,9]]},"60":{"position":[[1,7]]},"61":{"position":[[42,8],[87,8]]},"120":{"position":[[209,8]]},"132":{"position":[[876,7]]},"157":{"position":[[339,8],[433,9],[482,8],[980,8],[1029,8]]},"161":{"position":[[148,9],[307,9],[621,9],[895,8]]},"166":{"position":[[32,7],[198,8],[237,8],[285,8]]},"167":{"position":[[333,8]]},"170":{"position":[[143,9],[229,7],[432,7]]},"172":{"position":[[150,7],[817,9]]},"173":{"position":[[1,7]]},"175":{"position":[[80,8],[138,9],[183,9],[231,9]]},"177":{"position":[[179,9],[489,7],[584,7]]},"182":{"position":[[38,7],[568,10]]}},"keywords":{}}],["default)relax",{"_index":784,"title":{},"content":{"61":{"position":[[156,20]]}},"keywords":{}}],["defaultentry_id",{"_index":195,"title":{},"content":{"8":{"position":[[1043,15]]}},"keywords":{}}],["defer",{"_index":1257,"title":{},"content":{"156":{"position":[[250,5]]}},"keywords":{}}],["defin",{"_index":1211,"title":{},"content":{"149":{"position":[[134,6]]},"161":{"position":[[4,6]]}},"keywords":{}}],["definitionssensor",{"_index":126,"title":{},"content":{"5":{"position":[[241,18]]}},"keywords":{}}],["delay",{"_index":628,"title":{},"content":{"42":{"position":[[738,6]]}},"keywords":{}}],["deliveri",{"_index":1532,"title":{},"content":{"180":{"position":[[529,8]]}},"keywords":{}}],["deliveryearli",{"_index":1531,"title":{},"content":{"180":{"position":[[465,13]]}},"keywords":{}}],["demand",{"_index":415,"title":{},"content":{"11":{"position":[[263,6]]},"180":{"position":[[600,7],[1675,6]]}},"keywords":{}}],["demonstr",{"_index":263,"title":{},"content":{"9":{"position":[[207,12]]}},"keywords":{}}],["depend",{"_index":438,"title":{},"content":{"15":{"position":[[71,13]]},"16":{"position":[[107,13]]},"17":{"position":[[90,13]]},"102":{"position":[[149,9]]},"114":{"position":[[146,9]]},"151":{"position":[[323,10]]}},"keywords":{}}],["dependenciesrol",{"_index":336,"title":{},"content":{"9":{"position":[[2223,19]]}},"keywords":{}}],["dependenciestoday",{"_index":429,"title":{},"content":{"13":{"position":[[121,17]]}},"keywords":{}}],["depth",{"_index":966,"title":{},"content":{"100":{"position":[[166,5]]}},"keywords":{}}],["descript",{"_index":194,"title":{},"content":{"8":{"position":[[1031,11],[2621,13]]},"9":{"position":[[4929,12]]},"13":{"position":[[100,11]]},"41":{"position":[[295,12]]},"42":{"position":[[155,12]]},"43":{"position":[[128,12]]},"44":{"position":[[145,12]]}},"keywords":{}}],["design",{"_index":1042,"title":{},"content":{"116":{"position":[[362,6]]}},"keywords":{}}],["desktop",{"_index":879,"title":{"78":{"position":[[0,7]]}},"content":{"78":{"position":[[23,8]]}},"keywords":{}}],["despit",{"_index":566,"title":{},"content":{"40":{"position":[[105,7]]}},"keywords":{}}],["detail",{"_index":84,"title":{"113":{"position":[[14,8]]}},"content":{"3":{"position":[[426,8]]},"5":{"position":[[227,8]]},"8":{"position":[[2602,8]]},"61":{"position":[[257,8]]},"79":{"position":[[448,8]]},"126":{"position":[[123,8],[460,8]]},"136":{"position":[[44,8]]}},"keywords":{}}],["detect",{"_index":67,"title":{"46":{"position":[[10,10]]},"61":{"position":[[36,11]]}},"content":{"3":{"position":[[61,8]]},"9":{"position":[[1592,8],[4288,8],[4457,8]]},"22":{"position":[[75,8],[320,9]]},"30":{"position":[[183,9]]},"65":{"position":[[205,8]]},"88":{"position":[[34,8]]},"91":{"position":[[75,9]]},"94":{"position":[[91,9]]},"97":{"position":[[179,9]]},"100":{"position":[[267,9]]},"121":{"position":[[225,9],[247,9]]},"126":{"position":[[48,8]]},"161":{"position":[[1232,8]]},"180":{"position":[[1698,7]]}},"keywords":{}}],["detectedcan",{"_index":520,"title":{},"content":{"22":{"position":[[482,11]]}},"keywords":{}}],["detectionapexchart",{"_index":563,"title":{},"content":{"38":{"position":[[62,19]]}},"keywords":{}}],["develop",{"_index":245,"title":{},"content":{"8":{"position":[[2640,9]]},"9":{"position":[[4899,9]]},"11":{"position":[[310,12]]},"103":{"position":[[51,9]]},"116":{"position":[[107,9],[292,9]]},"123":{"position":[[151,12],[172,9]]},"140":{"position":[[114,9]]},"151":{"position":[[196,9]]}},"keywords":{}}],["developer.tibber.com",{"_index":766,"title":{},"content":{"58":{"position":[[65,20]]},"87":{"position":[[60,21]]}},"keywords":{}}],["developer.tibber.com)configur",{"_index":1063,"title":{},"content":{"120":{"position":[[150,30]]}},"keywords":{}}],["developer.tibber.comno",{"_index":802,"title":{},"content":{"64":{"position":[[52,22]]}},"keywords":{}}],["deviat",{"_index":96,"title":{},"content":{"4":{"position":[[215,8]]}},"keywords":{}}],["devic",{"_index":759,"title":{},"content":{"57":{"position":[[63,7]]},"77":{"position":[[22,8]]},"120":{"position":[[91,7]]},"132":{"position":[[1350,7]]}},"keywords":{}}],["diagnost",{"_index":1091,"title":{"130":{"position":[[0,10]]}},"content":{"131":{"position":[[211,10]]},"132":{"position":[[313,10]]}},"keywords":{}}],["differ",{"_index":94,"title":{},"content":{"4":{"position":[[179,10]]},"5":{"position":[[57,9]]},"9":{"position":[[317,10]]},"13":{"position":[[32,9]]},"32":{"position":[[306,9]]},"41":{"position":[[61,10]]},"45":{"position":[[863,10]]},"102":{"position":[[122,9],[314,9],[380,9]]},"112":{"position":[[439,9],[527,9]]},"114":{"position":[[25,9],[45,9],[130,9]]},"116":{"position":[[407,9]]},"141":{"position":[[319,9]]},"150":{"position":[[285,9]]},"151":{"position":[[474,9]]},"157":{"position":[[423,9],[464,9],[518,9]]},"160":{"position":[[300,9]]},"161":{"position":[[544,9]]},"180":{"position":[[2010,11],[3931,10]]}},"keywords":{}}],["differences"",{"_index":581,"title":{},"content":{"41":{"position":[[396,17]]}},"keywords":{}}],["direct",{"_index":1144,"title":{},"content":{"138":{"position":[[62,6]]}},"keywords":{}}],["directli",{"_index":289,"title":{},"content":{"9":{"position":[[848,8]]},"45":{"position":[[66,9]]},"47":{"position":[[449,8]]},"139":{"position":[[345,8]]},"141":{"position":[[56,8],[213,8],[779,8]]},"149":{"position":[[548,9],[1429,9]]},"150":{"position":[[76,8],[131,8],[255,8],[319,8],[433,8]]}},"keywords":{}}],["disabl",{"_index":360,"title":{},"content":{"9":{"position":[[3050,9]]},"21":{"position":[[147,11],[643,7]]},"22":{"position":[[497,8]]},"132":{"position":[[68,8],[864,8]]},"148":{"position":[[327,8]]},"167":{"position":[[166,7]]}},"keywords":{}}],["disabled)opt",{"_index":1384,"title":{},"content":{"165":{"position":[[133,18]]}},"keywords":{}}],["disabledflex",{"_index":791,"title":{},"content":{"62":{"position":[[86,12]]}},"keywords":{}}],["discard",{"_index":1308,"title":{},"content":{"161":{"position":[[942,9]]}},"keywords":{}}],["dishwash",{"_index":579,"title":{"69":{"position":[[13,10]]}},"content":{"41":{"position":[[320,10],[684,10],[1306,10]]},"88":{"position":[[111,12]]},"156":{"position":[[155,11]]},"157":{"position":[[699,11]]},"175":{"position":[[46,10]]}},"keywords":{}}],["display",{"_index":821,"title":{"72":{"position":[[12,7]]}},"content":{"66":{"position":[[65,8],[93,8]]},"89":{"position":[[47,7]]},"103":{"position":[[188,9]]},"165":{"position":[[790,7]]}},"keywords":{}}],["distanc",{"_index":780,"title":{},"content":{"61":{"position":[[59,9]]},"62":{"position":[[113,8]]},"94":{"position":[[5,9]]},"161":{"position":[[489,9],[608,9]]},"164":{"position":[[927,8],[1250,8],[1336,8]]},"166":{"position":[[973,8],[1025,8]]},"167":{"position":[[96,8]]}},"keywords":{}}],["distribut",{"_index":495,"title":{},"content":{"20":{"position":[[232,12]]}},"keywords":{}}],["div.entity:nth",{"_index":1193,"title":{},"content":{"146":{"position":[[256,14],[405,14],[542,14]]}},"keywords":{}}],["dive",{"_index":970,"title":{},"content":{"100":{"position":[[250,4]]},"181":{"position":[[56,5]]}},"keywords":{}}],["document",{"_index":243,"title":{"118":{"position":[[5,13]]},"119":{"position":[[3,14]]}},"content":{"8":{"position":[[2582,14],[2732,13]]},"9":{"position":[[4875,14]]},"30":{"position":[[25,13]]},"123":{"position":[[182,14]]},"132":{"position":[[1658,13]]}},"keywords":{}}],["doesn't",{"_index":1392,"title":{},"content":{"165":{"position":[[810,7]]}},"keywords":{}}],["don't",{"_index":511,"title":{"55":{"position":[[4,5]]}},"content":{"21":{"position":[[820,5]]},"141":{"position":[[462,6]]},"157":{"position":[[304,5],[989,5]]},"167":{"position":[[3,5],[77,5],[160,5],[246,5]]},"170":{"position":[[272,5]]},"173":{"position":[[863,5]]}},"keywords":{}}],["door",{"_index":593,"title":{},"content":{"41":{"position":[[707,4]]}},"keywords":{}}],["down",{"_index":806,"title":{},"content":{"64":{"position":[[124,4]]}},"keywords":{}}],["download",{"_index":528,"title":{},"content":{"24":{"position":[[119,8]]},"25":{"position":[[132,8]]}},"keywords":{}}],["dramat",{"_index":1550,"title":{},"content":{"180":{"position":[[1392,13]]}},"keywords":{}}],["dropdowneach",{"_index":763,"title":{},"content":{"57":{"position":[[187,12]]}},"keywords":{}}],["due",{"_index":266,"title":{},"content":{"9":{"position":[[277,3]]},"47":{"position":[[228,3]]}},"keywords":{}}],["durat",{"_index":1109,"title":{},"content":{"131":{"position":[[1016,8]]},"157":{"position":[[576,8],[777,8]]},"160":{"position":[[328,8]]},"161":{"position":[[838,9]]},"166":{"position":[[677,9]]},"179":{"position":[[270,8]]},"182":{"position":[[165,8]]}},"keywords":{}}],["duration_minut",{"_index":1509,"title":{},"content":{"179":{"position":[[246,17]]}},"keywords":{}}],["dure",{"_index":580,"title":{"44":{"position":[[30,6]]},"69":{"position":[[24,6]]}},"content":{"41":{"position":[[331,6],[953,6]]},"44":{"position":[[186,6],[1450,6],[1547,6]]},"45":{"position":[[570,6]]},"65":{"position":[[192,6]]},"69":{"position":[[39,6]]},"70":{"position":[[88,6]]},"94":{"position":[[127,6]]},"126":{"position":[[242,6],[339,6]]},"138":{"position":[[306,6]]}},"keywords":{}}],["dynam",{"_index":215,"title":{"16":{"position":[[22,10]]},"17":{"position":[[28,10]]},"21":{"position":[[0,7]]},"81":{"position":[[14,7]]},"101":{"position":[[0,7]]},"102":{"position":[[9,7]]},"103":{"position":[[29,7]]},"104":{"position":[[6,7]]},"109":{"position":[[11,7]]},"112":{"position":[[15,7]]},"137":{"position":[[0,7]]}},"content":{"8":{"position":[[1477,7]]},"9":{"position":[[1227,7],[2292,7],[2422,7],[2685,7],[2735,7],[3428,8],[3812,7],[4557,7]]},"13":{"position":[[305,7],[441,7],[663,7]]},"15":{"position":[[46,7]]},"16":{"position":[[363,7]]},"17":{"position":[[400,7]]},"21":{"position":[[608,7]]},"25":{"position":[[31,7]]},"30":{"position":[[107,7]]},"32":{"position":[[103,9],[121,7],[184,9]]},"51":{"position":[[7,7],[955,11]]},"72":{"position":[[40,7]]},"79":{"position":[[36,7]]},"90":{"position":[[1,7],[103,7]]},"103":{"position":[[314,7]]},"105":{"position":[[1,7]]},"109":{"position":[[48,7]]},"111":{"position":[[146,7]]},"112":{"position":[[1,7],[40,7],[64,7],[114,7]]},"116":{"position":[[228,7]]},"117":{"position":[[1,7],[134,7]]},"121":{"position":[[383,7],[444,7]]},"131":{"position":[[88,7],[306,7],[399,7],[1181,7]]},"140":{"position":[[51,7]]},"143":{"position":[[43,7]]},"146":{"position":[[31,7]]},"147":{"position":[[59,7]]}},"keywords":{}}],["e.g",{"_index":13,"title":{},"content":{"1":{"position":[[99,6]]},"10":{"position":[[276,6]]},"41":{"position":[[1162,6],[1238,6]]},"45":{"position":[[686,6]]},"88":{"position":[[190,6]]},"90":{"position":[[56,6]]},"98":{"position":[[34,6]]},"102":{"position":[[411,6]]},"103":{"position":[[116,6],[350,6],[407,6],[463,6],[502,6]]},"112":{"position":[[469,6],[558,6]]},"116":{"position":[[379,6]]},"131":{"position":[[955,6]]},"140":{"position":[[179,6],[339,6],[396,6],[452,6],[496,6],[538,6],[597,6]]},"141":{"position":[[262,6]]},"164":{"position":[[830,6],[902,6]]},"172":{"position":[[712,6]]}},"keywords":{}}],["each",{"_index":10,"title":{},"content":{"1":{"position":[[68,4]]},"5":{"position":[[135,4]]},"9":{"position":[[1319,4]]},"13":{"position":[[55,4]]},"45":{"position":[[1064,4]]},"87":{"position":[[123,4]]},"160":{"position":[[1,4]]},"164":{"position":[[523,4]]},"166":{"position":[[365,4]]},"170":{"position":[[539,4]]},"171":{"position":[[460,4]]},"172":{"position":[[625,4],[847,4]]},"173":{"position":[[344,4],[521,4]]},"175":{"position":[[30,4]]},"180":{"position":[[338,4],[786,4],[3624,4]]},"183":{"position":[[42,4]]}},"keywords":{}}],["earli",{"_index":1269,"title":{},"content":{"157":{"position":[[801,5]]},"180":{"position":[[4230,5]]}},"keywords":{}}],["earlierus",{"_index":1273,"title":{},"content":{"157":{"position":[[856,10]]}},"keywords":{}}],["easi",{"_index":1126,"title":{},"content":{"132":{"position":[[724,4]]}},"keywords":{}}],["easier",{"_index":1414,"title":{},"content":{"166":{"position":[[380,6]]},"167":{"position":[[416,6]]}},"keywords":{}}],["easiest",{"_index":1406,"title":{},"content":{"166":{"position":[[107,10]]}},"keywords":{}}],["econom",{"_index":1560,"title":{},"content":{"180":{"position":[[2076,12]]}},"keywords":{}}],["ecosystem",{"_index":1035,"title":{},"content":{"115":{"position":[[307,10]]}},"keywords":{}}],["edit",{"_index":532,"title":{},"content":{"27":{"position":[[1,4]]}},"keywords":{}}],["effect",{"_index":435,"title":{},"content":{"13":{"position":[[737,6]]},"17":{"position":[[883,6]]},"32":{"position":[[219,6]]}},"keywords":{}}],["electr",{"_index":112,"title":{},"content":{"5":{"position":[[86,11]]},"8":{"position":[[18,11]]},"9":{"position":[[1027,11]]},"47":{"position":[[691,11]]},"58":{"position":[[30,11],[140,11]]},"66":{"position":[[146,11]]},"72":{"position":[[86,11]]},"88":{"position":[[70,11]]},"92":{"position":[[42,11]]},"95":{"position":[[45,11]]},"156":{"position":[[41,11]]},"180":{"position":[[217,11]]}},"keywords":{}}],["element",{"_index":894,"title":{"80":{"position":[[8,8]]}},"content":{"80":{"position":[[48,8],[100,9],[349,11]]}},"keywords":{}}],["empti",{"_index":498,"title":{},"content":{"21":{"position":[[198,5]]}},"keywords":{}}],["enabl",{"_index":298,"title":{"170":{"position":[[7,7]]}},"content":{"9":{"position":[[1219,7],[4548,8]]},"21":{"position":[[303,10],[508,7],[522,7]]},"25":{"position":[[23,7]]},"61":{"position":[[182,7]]},"62":{"position":[[149,6]]},"131":{"position":[[297,8],[1295,6]]},"132":{"position":[[95,8],[903,7]]},"164":{"position":[[476,6],[1452,8]]},"166":{"position":[[1309,6],[1524,6]]},"170":{"position":[[218,7]]},"177":{"position":[[124,7]]},"182":{"position":[[385,6]]}},"keywords":{}}],["enable_min_periods_best",{"_index":1407,"title":{},"content":{"166":{"position":[[158,24]]},"170":{"position":[[1,24]]},"177":{"position":[[132,24]]},"182":{"position":[[345,23]]}},"keywords":{}}],["enabledfallback",{"_index":359,"title":{},"content":{"9":{"position":[[3011,15]]}},"keywords":{}}],["end",{"_index":1085,"title":{},"content":{"123":{"position":[[111,3]]},"179":{"position":[[185,4],[237,3]]}},"keywords":{}}],["endpoint",{"_index":1055,"title":{},"content":{"119":{"position":[[432,10]]}},"keywords":{}}],["energi",{"_index":33,"title":{},"content":{"2":{"position":[[107,6]]},"3":{"position":[[165,6]]}},"keywords":{}}],["enjoy",{"_index":812,"title":{},"content":{"65":{"position":[[80,5]]}},"keywords":{}}],["enough",{"_index":613,"title":{},"content":{"42":{"position":[[85,7]]},"43":{"position":[[435,6]]},"157":{"position":[[267,6]]},"160":{"position":[[352,6]]},"161":{"position":[[870,6]]},"166":{"position":[[141,6]]},"172":{"position":[[1136,6],[1178,6],[1227,6]]}},"keywords":{}}],["enough"",{"_index":616,"title":{},"content":{"42":{"position":[[142,12],[1020,12]]},"180":{"position":[[2757,12]]}},"keywords":{}}],["enrich",{"_index":85,"title":{},"content":{"4":{"position":[[17,8]]},"95":{"position":[[185,8]]}},"keywords":{}}],["ensur",{"_index":591,"title":{},"content":{"41":{"position":[[677,6]]},"97":{"position":[[233,7]]},"157":{"position":[[585,7]]},"160":{"position":[[272,6]]},"161":{"position":[[474,6]]},"165":{"position":[[761,7]]}},"keywords":{}}],["entir",{"_index":19,"title":{},"content":{"1":{"position":[[158,6]]}},"keywords":{}}],["entiti",{"_index":120,"title":{"81":{"position":[[5,8]]},"105":{"position":[[9,6]]},"108":{"position":[[9,6]]},"110":{"position":[[3,6]]},"144":{"position":[[10,8]]}},"content":{"5":{"position":[[185,6]]},"9":{"position":[[408,6],[3725,9]]},"29":{"position":[[90,6],[97,7]]},"57":{"position":[[239,6]]},"72":{"position":[[62,8],[104,9],[116,7],[204,7],[276,7]]},"73":{"position":[[86,6],[93,7],[204,6],[211,7]]},"75":{"position":[[26,7]]},"77":{"position":[[91,9],[103,7],[226,9],[238,7],[314,7]]},"78":{"position":[[191,8],[222,9],[359,8],[386,9]]},"79":{"position":[[101,6],[108,7],[266,6],[273,7],[351,6],[358,7]]},"80":{"position":[[130,7],[260,7]]},"81":{"position":[[58,8],[79,8]]},"103":{"position":[[205,6]]},"105":{"position":[[75,8],[84,9],[96,7],[154,7],[213,7],[259,7]]},"106":{"position":[[14,9],[26,7],[102,7],[174,7]]},"107":{"position":[[26,7]]},"108":{"position":[[23,6],[35,7]]},"110":{"position":[[7,8],[16,9],[28,7]]},"111":{"position":[[26,7]]},"112":{"position":[[163,7]]},"116":{"position":[[282,6]]},"131":{"position":[[1,6]]},"132":{"position":[[1,6],[914,6],[1885,7],[2137,7]]},"143":{"position":[[116,7],[403,7]]},"144":{"position":[[31,8],[93,8],[102,9],[114,7],[199,6]]},"145":{"position":[[104,6],[116,7],[393,6],[405,7]]},"146":{"position":[[61,9],[73,7],[131,7],[177,7]]},"147":{"position":[[186,7],[403,7],[683,7],[923,7],[1221,7],[1425,7]]},"149":{"position":[[703,7],[1273,7],[1681,7],[2155,7]]},"151":{"position":[[139,6]]},"179":{"position":[[29,7]]}},"keywords":{}}],["entity.attributes.data",{"_index":1136,"title":{},"content":{"132":{"position":[[1955,23]]}},"keywords":{}}],["entity.attributes.icon_color",{"_index":1008,"title":{},"content":{"112":{"position":[[350,28]]},"141":{"position":[[555,29]]},"143":{"position":[[266,28],[553,28],[645,28]]},"147":{"position":[[313,28],[532,28],[833,28],[1075,28],[1335,28],[1545,28]]}},"keywords":{}}],["entity.st",{"_index":856,"title":{},"content":{"75":{"position":[[148,13],[239,13],[327,13],[418,13],[507,13]]},"141":{"position":[[853,13]]},"149":{"position":[[860,13],[1461,12],[1545,12],[1813,13],[2292,13]]}},"keywords":{}}],["entity_id",{"_index":584,"title":{},"content":{"41":{"position":[[441,10],[608,10],[738,10],[844,10]]},"42":{"position":[[294,10],[455,10],[584,10],[705,10],[808,10]]},"43":{"position":[[219,10],[353,10],[557,10],[695,10],[803,10]]},"44":{"position":[[260,10],[404,10],[526,10],[623,10],[755,10],[945,10],[1080,10],[1206,10]]},"45":{"position":[[163,10],[499,10]]},"69":{"position":[[90,10],[287,10]]},"70":{"position":[[140,10],[257,10]]},"81":{"position":[[132,10]]},"175":{"position":[[447,10],[563,10]]},"180":{"position":[[2387,10],[2499,10],[2624,10],[2797,10],[2909,10],[3046,10],[3240,10],[3559,10]]}},"keywords":{}}],["entri",{"_index":196,"title":{},"content":{"8":{"position":[[1071,5]]}},"keywords":{}}],["entry_id",{"_index":174,"title":{},"content":{"8":{"position":[[617,9],[1600,9],[2095,9],[2348,9]]},"9":{"position":[[1832,9],[3234,9],[3493,9]]},"10":{"position":[[153,9]]},"15":{"position":[[167,9]]},"16":{"position":[[221,9]]},"17":{"position":[[204,9]]},"50":{"position":[[97,9]]},"51":{"position":[[119,9],[568,9]]},"132":{"position":[[2252,9]]}},"keywords":{}}],["epex",{"_index":1525,"title":{},"content":{"180":{"position":[[290,4]]}},"keywords":{}}],["error",{"_index":811,"title":{},"content":{"65":{"position":[[72,5]]},"67":{"position":[[127,6]]},"131":{"position":[[718,5],[1055,5]]},"132":{"position":[[814,5],[1167,5]]},"138":{"position":[[197,5],[293,5],[382,5]]},"141":{"position":[[677,5]]},"148":{"position":[[228,5]]},"149":{"position":[[296,5]]}},"keywords":{}}],["escal",{"_index":1457,"title":{},"content":{"171":{"position":[[353,9]]}},"keywords":{}}],["especi",{"_index":1255,"title":{},"content":{"156":{"position":[[56,10]]}},"keywords":{}}],["essenti",{"_index":1093,"title":{},"content":{"131":{"position":[[238,9]]},"156":{"position":[[260,9]]}},"keywords":{}}],["etc",{"_index":938,"title":{},"content":{"92":{"position":[[87,6]]},"132":{"position":[[436,6]]}},"keywords":{}}],["eur",{"_index":820,"title":{},"content":{"66":{"position":[[59,3]]},"73":{"position":[[188,3]]},"89":{"position":[[63,4]]},"121":{"position":[[522,4]]}},"keywords":{}}],["eur/nok",{"_index":169,"title":{},"content":{"8":{"position":[[523,9],[1348,7]]}},"keywords":{}}],["ev",{"_index":641,"title":{},"content":{"43":{"position":[[154,2],[881,2]]},"88":{"position":[[136,2]]},"156":{"position":[[179,3]]},"157":{"position":[[711,2]]}},"keywords":{}}],["evalu",{"_index":1573,"title":{},"content":{"180":{"position":[[4120,9]]}},"keywords":{}}],["even",{"_index":1275,"title":{},"content":{"157":{"position":[[904,4]]},"180":{"position":[[96,4]]}},"keywords":{}}],["exact",{"_index":1032,"title":{},"content":{"115":{"position":[[231,5]]}},"keywords":{}}],["exactli",{"_index":1298,"title":{},"content":{"161":{"position":[[400,7]]},"171":{"position":[[474,7]]}},"keywords":{}}],["exampl",{"_index":129,"title":{"12":{"position":[[6,8]]},"37":{"position":[[11,8]]},"50":{"position":[[0,8]]},"51":{"position":[[0,8]]},"71":{"position":[[10,8]]},"74":{"position":[[19,9]]},"147":{"position":[[19,8]]},"158":{"position":[[0,7]]},"162":{"position":[[7,8]]}},"content":{"5":{"position":[[295,8]]},"8":{"position":[[564,8],[1983,8]]},"9":{"position":[[45,7],[1003,7],[1773,8],[3146,8],[3400,8]]},"10":{"position":[[96,8]]},"17":{"position":[[554,8]]},"22":{"position":[[105,8]]},"40":{"position":[[7,8]]},"47":{"position":[[79,7],[666,8]]},"69":{"position":[[333,8]]},"81":{"position":[[264,8]]},"112":{"position":[[94,9],[105,8]]},"114":{"position":[[270,8]]},"116":{"position":[[480,8]]},"117":{"position":[[119,8]]},"119":{"position":[[468,8],[534,8]]},"131":{"position":[[1424,8],[1453,9]]},"132":{"position":[[1791,7]]},"138":{"position":[[128,8]]},"139":{"position":[[450,8]]},"141":{"position":[[418,7]]},"143":{"position":[[65,8],[331,8]]},"147":{"position":[[19,7]]},"149":{"position":[[638,8],[1206,8],[1617,8],[2089,8]]},"152":{"position":[[66,8]]},"172":{"position":[[1080,7]]},"175":{"position":[[396,8]]},"180":{"position":[[974,8]]},"181":{"position":[[79,8]]}},"keywords":{}}],["examples)chart",{"_index":1074,"title":{},"content":{"121":{"position":[[411,14]]}},"keywords":{}}],["examples.md",{"_index":884,"title":{},"content":{"78":{"position":[[119,11]]}},"keywords":{}}],["except",{"_index":103,"title":{},"content":{"4":{"position":[[351,11]]}},"keywords":{}}],["exception",{"_index":30,"title":{},"content":{"2":{"position":[[71,13],[318,13]]}},"keywords":{}}],["exclud",{"_index":909,"title":{},"content":{"81":{"position":[[177,8]]}},"keywords":{}}],["exhaust",{"_index":1501,"title":{},"content":{"177":{"position":[[356,9]]}},"keywords":{}}],["exist",{"_index":1015,"title":{},"content":{"114":{"position":[[182,5]]},"123":{"position":[[39,8]]},"136":{"position":[[7,8]]}},"keywords":{}}],["expect",{"_index":1024,"title":{},"content":{"114":{"position":[[510,8]]},"180":{"position":[[4089,8]]}},"keywords":{}}],["expens",{"_index":304,"title":{},"content":{"9":{"position":[[1364,10],[4130,10]]},"61":{"position":[[213,9]]},"94":{"position":[[134,9]]},"97":{"position":[[70,10]]},"112":{"position":[[515,11],[592,10]]},"115":{"position":[[47,10]]},"140":{"position":[[733,9]]},"141":{"position":[[993,12]]},"149":{"position":[[1056,12]]},"156":{"position":[[89,9]]},"157":{"position":[[145,9],[885,9]]},"158":{"position":[[128,10],[218,10]]},"164":{"position":[[166,9],[236,9]]},"165":{"position":[[192,9]]}},"keywords":{}}],["expensive)best",{"_index":725,"title":{},"content":{"52":{"position":[[73,14]]}},"keywords":{}}],["expensive/high)var",{"_index":1207,"title":{},"content":{"148":{"position":[[259,19]]}},"keywords":{}}],["expensivebinari",{"_index":1146,"title":{},"content":{"138":{"position":[[214,15]]}},"keywords":{}}],["expensivepric",{"_index":975,"title":{},"content":{"102":{"position":[[190,14]]}},"keywords":{}}],["expert",{"_index":1429,"title":{},"content":{"166":{"position":[[1329,9]]}},"keywords":{}}],["explan",{"_index":1086,"title":{},"content":{"126":{"position":[[132,11]]}},"keywords":{}}],["explanationssensor",{"_index":967,"title":{},"content":{"100":{"position":[[172,19]]}},"keywords":{}}],["export",{"_index":405,"title":{"11":{"position":[[26,6]]},"132":{"position":[[11,7]]}},"content":{"132":{"position":[[1481,6]]}},"keywords":{}}],["expos",{"_index":395,"title":{},"content":{"9":{"position":[[4956,7]]},"132":{"position":[[1070,7]]},"180":{"position":[[3643,7]]}},"keywords":{}}],["extend",{"_index":1464,"title":{},"content":{"172":{"position":[[331,6],[883,9]]}},"keywords":{}}],["extrem",{"_index":1487,"title":{},"content":{"173":{"position":[[252,9]]}},"keywords":{}}],["f",{"_index":932,"title":{"91":{"position":[[0,2]]}},"content":{},"keywords":{}}],["f44336",{"_index":1223,"title":{},"content":{"149":{"position":[[1136,10],[2031,10]]}},"keywords":{}}],["factor",{"_index":1382,"title":{},"content":{"164":{"position":[[1376,7]]}},"keywords":{}}],["fail",{"_index":1102,"title":{},"content":{"131":{"position":[[738,7],[1085,6]]},"132":{"position":[[834,7]]}},"keywords":{}}],["faileddata",{"_index":1129,"title":{},"content":{"132":{"position":[[1197,10]]}},"keywords":{}}],["fallback",{"_index":1224,"title":{},"content":{"149":{"position":[[1191,8]]}},"keywords":{}}],["fals",{"_index":204,"title":{},"content":{"8":{"position":[[1356,5]]},"22":{"position":[[533,5]]},"78":{"position":[[63,5]]}},"keywords":{}}],["faq",{"_index":734,"title":{"53":{"position":[[0,3]]}},"content":{},"keywords":{}}],["far",{"_index":1357,"title":{},"content":{"164":{"position":[[25,3]]}},"keywords":{}}],["fast",{"_index":1099,"title":{},"content":{"131":{"position":[[629,4]]}},"keywords":{}}],["favor",{"_index":70,"title":{},"content":{"3":{"position":[[132,9]]},"88":{"position":[[60,9]]}},"keywords":{}}],["featur",{"_index":144,"title":{"52":{"position":[[0,9]]},"121":{"position":[[6,9]]}},"content":{"8":{"position":[[104,9]]},"9":{"position":[[131,9],[452,8],[1258,9],[4712,8]]},"15":{"position":[[275,9]]},"16":{"position":[[350,9]]},"17":{"position":[[330,9]]},"22":{"position":[[299,9]]},"47":{"position":[[171,9],[327,8]]},"131":{"position":[[58,8],[388,9]]},"132":{"position":[[115,8],[448,9]]},"157":{"position":[[503,8]]}},"keywords":{}}],["feedback",{"_index":1446,"title":{},"content":{"170":{"position":[[594,9]]}},"keywords":{}}],["fetch",{"_index":265,"title":{},"content":{"9":{"position":[[259,5]]},"55":{"position":[[214,7]]},"89":{"position":[[185,8]]}},"keywords":{}}],["fetchederror",{"_index":1128,"title":{},"content":{"132":{"position":[[1153,13]]}},"keywords":{}}],["fetchedyaxis_min",{"_index":1103,"title":{},"content":{"131":{"position":[[798,17]]}},"keywords":{}}],["few",{"_index":777,"title":{},"content":{"60":{"position":[[275,3]]},"62":{"position":[[40,3]]},"169":{"position":[[36,3]]}},"keywords":{}}],["fewer",{"_index":1463,"title":{},"content":{"172":{"position":[[269,5],[289,5]]}},"keywords":{}}],["ff4500",{"_index":867,"title":{},"content":{"75":{"position":[[568,7]]}},"keywords":{}}],["ff6b00",{"_index":866,"title":{},"content":{"75":{"position":[[488,7]]}},"keywords":{}}],["ff8c00",{"_index":865,"title":{},"content":{"75":{"position":[[476,7]]}},"keywords":{}}],["ff9800",{"_index":1222,"title":{},"content":{"149":{"position":[[1076,10],[1971,10]]}},"keywords":{}}],["ffb800",{"_index":864,"title":{},"content":{"75":{"position":[[399,7]]}},"keywords":{}}],["ffd700",{"_index":863,"title":{},"content":{"75":{"position":[[387,7]]}},"keywords":{}}],["field",{"_index":163,"title":{},"content":{"8":{"position":[[438,5],[465,6]]},"9":{"position":[[4949,6]]},"132":{"position":[[1530,5]]}},"keywords":{}}],["filter",{"_index":151,"title":{"165":{"position":[[9,8]]}},"content":{"8":{"position":[[197,6],[245,10],[256,6],[1976,6],[2293,10]]},"11":{"position":[[208,9]]},"65":{"position":[[121,7]]},"81":{"position":[[113,7]]},"97":{"position":[[189,7]]},"121":{"position":[[300,7]]},"132":{"position":[[1521,8]]},"157":{"position":[[252,7]]},"161":{"position":[[998,8],[1061,7]]},"164":{"position":[[1259,7],[1345,6]]},"165":{"position":[[7,6],[485,6],[880,8]]},"166":{"position":[[982,7],[1322,6]]},"167":{"position":[[133,6],[197,7]]},"169":{"position":[[19,7],[92,7]]},"170":{"position":[[167,6],[475,6],[520,6]]},"172":{"position":[[110,6],[204,6],[235,6],[954,6],[1009,7],[1060,6],[1122,7],[1213,7]]},"173":{"position":[[382,6],[447,6],[841,7]]},"177":{"position":[[269,7],[380,7]]},"178":{"position":[[91,7]]},"179":{"position":[[426,6],[593,6]]}},"keywords":{}}],["filter)remov",{"_index":1477,"title":{},"content":{"172":{"position":[[1040,13]]}},"keywords":{}}],["find",{"_index":786,"title":{},"content":{"61":{"position":[[197,4]]},"156":{"position":[[17,5]]},"157":{"position":[[47,5],[134,5]]},"160":{"position":[[166,4]]},"164":{"position":[[300,4],[343,4]]},"166":{"position":[[133,7],[337,5],[1272,4]]},"169":{"position":[[27,4]]},"170":{"position":[[60,4]]},"171":{"position":[[134,5],[312,5],[377,5],[436,5]]},"173":{"position":[[561,5],[690,5]]},"175":{"position":[[7,4]]},"177":{"position":[[218,4]]}},"keywords":{}}],["fine",{"_index":1417,"title":{},"content":{"166":{"position":[[718,4]]}},"keywords":{}}],["first",{"_index":818,"title":{"166":{"position":[[34,7]]}},"content":{"65":{"position":[[199,5]]},"132":{"position":[[774,5]]}},"keywords":{}}],["fit",{"_index":504,"title":{},"content":{"21":{"position":[[356,6]]},"157":{"position":[[995,3]]}},"keywords":{}}],["fix",{"_index":18,"title":{"50":{"position":[[9,5]]}},"content":{"1":{"position":[[144,5]]},"9":{"position":[[2146,5]]},"13":{"position":[[623,5]]},"15":{"position":[[555,5]]},"21":{"position":[[744,5]]},"25":{"position":[[149,5]]},"32":{"position":[[45,5]]},"67":{"position":[[57,5]]},"92":{"position":[[36,5]]},"102":{"position":[[21,5]]},"109":{"position":[[22,5]]},"110":{"position":[[111,5]]},"111":{"position":[[125,5]]},"165":{"position":[[594,5]]},"172":{"position":[[416,5]]}},"keywords":{}}],["flag",{"_index":675,"title":{},"content":{"44":{"position":[[838,4],[1034,4]]}},"keywords":{}}],["flat",{"_index":1428,"title":{},"content":{"166":{"position":[[1288,4]]},"171":{"position":[[118,5],[345,7]]},"177":{"position":[[402,4]]}},"keywords":{}}],["flex",{"_index":80,"title":{},"content":{"3":{"position":[[362,6]]},"61":{"position":[[18,5]]},"62":{"position":[[189,4]]},"65":{"position":[[136,5]]},"91":{"position":[[1,4],[96,4]]},"157":{"position":[[562,6],[638,4],[762,6]]},"162":{"position":[[258,4],[353,4]]},"170":{"position":[[123,4],[446,4],[504,4]]},"171":{"position":[[40,4],[102,4],[290,4],[366,4],[425,4]]},"172":{"position":[[188,4],[295,4],[485,4],[547,4],[707,4],[1102,4],[1151,4],[1193,4],[1242,4]]},"173":{"position":[[420,4],[582,4],[638,4],[711,4]]},"179":{"position":[[581,5]]},"182":{"position":[[483,4],[579,5]]}},"keywords":{}}],["flex)high",{"_index":1486,"title":{},"content":{"173":{"position":[[222,11]]}},"keywords":{}}],["flexibl",{"_index":39,"title":{},"content":{"2":{"position":[[169,8]]},"8":{"position":[[115,8]]},"11":{"position":[[199,8]]},"91":{"position":[[6,14]]},"132":{"position":[[271,11],[990,13]]},"157":{"position":[[820,8]]},"161":{"position":[[28,14],[131,12],[289,12],[365,12],[417,11]]},"164":{"position":[[1,12],[398,11],[1234,11],[1302,11],[1415,11]]},"166":{"position":[[728,11]]},"167":{"position":[[18,11]]},"171":{"position":[[486,11]]},"172":{"position":[[46,11],[391,11],[654,11],[979,11]]},"177":{"position":[[432,11]]},"178":{"position":[[224,11]]}},"keywords":{}}],["flip",{"_index":565,"title":{"44":{"position":[[24,5]]}},"content":{"40":{"position":[[88,4]]},"42":{"position":[[884,4]]},"43":{"position":[[1234,5]]},"44":{"position":[[59,5],[1444,5]]},"180":{"position":[[1762,4]]}},"keywords":{}}],["flips"",{"_index":666,"title":{},"content":{"44":{"position":[[221,11]]}},"keywords":{}}],["float(0",{"_index":689,"title":{},"content":{"45":{"position":[[428,8]]},"180":{"position":[[3505,8]]}},"keywords":{}}],["flow",{"_index":473,"title":{},"content":{"19":{"position":[[64,6]]},"132":{"position":[[484,5],[1784,5]]}},"keywords":{}}],["flow)creat",{"_index":420,"title":{},"content":{"11":{"position":[[400,11]]}},"keywords":{}}],["focu",{"_index":433,"title":{},"content":{"13":{"position":[[496,5]]},"17":{"position":[[24,5]]}},"keywords":{}}],["focus",{"_index":470,"title":{},"content":{"17":{"position":[[895,7]]},"157":{"position":[[649,7]]}},"keywords":{}}],["font",{"_index":900,"title":{},"content":{"80":{"position":[[206,4],[222,4]]},"143":{"position":[[712,4]]}},"keywords":{}}],["forc",{"_index":397,"title":{},"content":{"10":{"position":[[10,6]]}},"keywords":{}}],["forecast",{"_index":1534,"title":{},"content":{"180":{"position":[[569,8],[633,9]]}},"keywords":{}}],["format",{"_index":141,"title":{},"content":{"8":{"position":[[59,7],[131,8],[761,7]]},"9":{"position":[[914,6]]},"11":{"position":[[222,10]]},"132":{"position":[[1267,6],[1324,7],[1513,7]]}},"keywords":{}}],["found",{"_index":933,"title":{"177":{"position":[[11,6]]}},"content":{"91":{"position":[[116,6]]},"157":{"position":[[286,5]]},"167":{"position":[[506,5]]},"169":{"position":[[137,6]]},"172":{"position":[[1274,5]]},"179":{"position":[[568,5]]}},"keywords":{}}],["foundperiod",{"_index":1250,"title":{},"content":{"154":{"position":[[110,12]]}},"keywords":{}}],["fragment",{"_index":1317,"title":{},"content":{"161":{"position":[[1284,14]]}},"keywords":{}}],["free",{"_index":767,"title":{},"content":{"58":{"position":[[106,5]]}},"keywords":{}}],["frequent",{"_index":735,"title":{"53":{"position":[[6,10]]}},"content":{},"keywords":{}}],["friendli",{"_index":140,"title":{},"content":{"8":{"position":[[50,8]]},"132":{"position":[[353,8]]}},"keywords":{}}],["frontend",{"_index":524,"title":{},"content":{"24":{"position":[[71,8]]},"25":{"position":[[79,8]]}},"keywords":{}}],["frontendsearch",{"_index":713,"title":{},"content":{"49":{"position":[[13,14]]}},"keywords":{}}],["full",{"_index":291,"title":{},"content":{"9":{"position":[[887,4]]},"17":{"position":[[634,4]]},"51":{"position":[[439,4]]},"78":{"position":[[1,4]]}},"keywords":{}}],["further",{"_index":1465,"title":{},"content":{"172":{"position":[[349,7]]}},"keywords":{}}],["futur",{"_index":1014,"title":{},"content":{"114":{"position":[[167,6],[391,6],[463,6]]},"139":{"position":[[245,6],[289,6]]}},"keywords":{}}],["galleri",{"_index":554,"title":{"32":{"position":[[0,8]]}},"content":{},"keywords":{}}],["gap",{"_index":318,"title":{},"content":{"9":{"position":[[1699,3]]},"165":{"position":[[855,3]]},"178":{"position":[[103,3]]},"182":{"position":[[331,3]]}},"keywords":{}}],["gapstransl",{"_index":730,"title":{},"content":{"52":{"position":[[181,14]]}},"keywords":{}}],["gener",{"_index":256,"title":{"54":{"position":[[0,7]]}},"content":{"9":{"position":[[27,9],[192,9],[588,9],[950,9],[3381,9],[3845,9],[4858,9]]},"13":{"position":[[21,8]]},"15":{"position":[[107,9]]},"16":{"position":[[161,9]]},"17":{"position":[[144,9]]},"21":{"position":[[559,9]]},"27":{"position":[[30,9]]},"29":{"position":[[184,9]]},"47":{"position":[[61,9],[620,9]]},"50":{"position":[[3,8],[299,9]]},"121":{"position":[[347,9]]},"144":{"position":[[191,7]]},"180":{"position":[[622,10]]}},"keywords":{}}],["genuin",{"_index":649,"title":{},"content":{"43":{"position":[[652,9]]},"157":{"position":[[660,9]]}},"keywords":{}}],["get",{"_index":116,"title":{"136":{"position":[[0,7]]}},"content":{"5":{"position":[[145,4]]},"57":{"position":[[205,4]]},"171":{"position":[[469,4]]}},"keywords":{}}],["get_apexcharts_yaml",{"_index":550,"title":{},"content":{"30":{"position":[[42,19]]},"131":{"position":[[177,19]]}},"keywords":{}}],["get_chartdata",{"_index":264,"title":{},"content":{"9":{"position":[[235,13],[827,13]]},"47":{"position":[[427,13]]}},"keywords":{}}],["github",{"_index":1079,"title":{},"content":{"122":{"position":[[1,6]]}},"keywords":{}}],["give",{"_index":1009,"title":{},"content":{"112":{"position":[[420,5]]},"172":{"position":[[364,6]]}},"keywords":{}}],["glanc",{"_index":876,"title":{"106":{"position":[[0,6]]},"146":{"position":[[10,6]]}},"content":{"77":{"position":[[219,6]]},"106":{"position":[[7,6]]},"146":{"position":[[54,6]]}},"keywords":{}}],["glossari",{"_index":124,"title":{"86":{"position":[[0,8]]}},"content":{"5":{"position":[[216,8]]}},"keywords":{}}],["go",{"_index":983,"title":{},"content":{"103":{"position":[[45,2]]},"132":{"position":[[1333,2]]},"140":{"position":[[108,2]]}},"keywords":{}}],["goal",{"_index":1494,"title":{},"content":{"175":{"position":[[1,5]]}},"keywords":{}}],["good",{"_index":38,"title":{"60":{"position":[[9,4]]}},"content":{"2":{"position":[[159,5]]},"100":{"position":[[100,4]]},"114":{"position":[[352,5]]},"157":{"position":[[1053,4]]},"165":{"position":[[958,4]]},"170":{"position":[[193,4]]},"171":{"position":[[444,4]]}},"keywords":{}}],["good/cheap/low)var",{"_index":1202,"title":{},"content":{"148":{"position":[[117,20]]}},"keywords":{}}],["gracefulli",{"_index":654,"title":{},"content":{"43":{"position":[[1240,11]]}},"keywords":{}}],["gradient",{"_index":447,"title":{},"content":{"16":{"position":[[580,9]]}},"keywords":{}}],["gradient(135deg",{"_index":859,"title":{},"content":{"75":{"position":[[191,16],[279,16],[370,16],[459,16],[551,16]]}},"keywords":{}}],["graph",{"_index":350,"title":{},"content":{"9":{"position":[[2635,5]]},"17":{"position":[[361,5]]},"51":{"position":[[738,5]]},"77":{"position":[[80,5]]}},"keywords":{}}],["graph_span",{"_index":540,"title":{},"content":{"28":{"position":[[62,11]]}},"keywords":{}}],["gray",{"_index":1167,"title":{},"content":{"140":{"position":[[774,5]]},"148":{"position":[[300,4],[351,4]]},"149":{"position":[[1037,4],[2411,4]]}},"keywords":{}}],["great",{"_index":32,"title":{},"content":{"2":{"position":[[96,6]]},"112":{"position":[[20,5]]},"171":{"position":[[60,5]]}},"keywords":{}}],["green",{"_index":474,"title":{},"content":{"19":{"position":[[76,8]]},"20":{"position":[[83,7],[114,7]]},"52":{"position":[[34,6],[132,5]]},"79":{"position":[[337,5]]},"112":{"position":[[565,5]]},"140":{"position":[[726,6]]},"148":{"position":[[111,5]]},"149":{"position":[[290,5],[930,5],[986,5],[1874,5],[2354,5]]}},"keywords":{}}],["grid",{"_index":881,"title":{},"content":{"78":{"position":[[39,4]]},"173":{"position":[[64,5]]}},"keywords":{}}],["gt",{"_index":588,"title":{},"content":{"41":{"position":[[551,4]]},"43":{"position":[[876,4],[1080,5]]},"45":{"position":[[340,4],[437,4],[1175,5]]},"180":{"position":[[2581,4],[3417,4],[3514,4]]}},"keywords":{}}],["gt;10",{"_index":1426,"title":{},"content":{"166":{"position":[[1236,9]]},"167":{"position":[[105,9]]}},"keywords":{}}],["gt;25",{"_index":1421,"title":{},"content":{"166":{"position":[[947,7]]}},"keywords":{}}],["gt;30",{"_index":1365,"title":{},"content":{"164":{"position":[[410,9],[1321,10]]},"167":{"position":[[33,7]]}},"keywords":{}}],["guid",{"_index":549,"title":{"163":{"position":[[14,6]]}},"content":{"30":{"position":[[9,6],[148,6]]},"61":{"position":[[273,6]]},"112":{"position":[[84,5]]},"123":{"position":[[96,6]]},"126":{"position":[[111,5]]},"131":{"position":[[1433,5]]},"152":{"position":[[129,5]]}},"keywords":{}}],["guide)tooltip",{"_index":518,"title":{},"content":{"22":{"position":[[382,13]]}},"keywords":{}}],["guidegithub",{"_index":841,"title":{},"content":{"70":{"position":[[327,11]]}},"keywords":{}}],["guidesearch",{"_index":1083,"title":{},"content":{"123":{"position":[[27,11]]}},"keywords":{}}],["guideunderstand",{"_index":1247,"title":{},"content":{"154":{"position":[[38,18]]}},"keywords":{}}],["ha",{"_index":410,"title":{},"content":{"11":{"position":[[149,2]]},"64":{"position":[[103,2]]},"132":{"position":[[1034,2]]},"139":{"position":[[296,2]]},"145":{"position":[[232,2],[498,2]]},"146":{"position":[[248,2],[397,2],[534,2]]}},"keywords":{}}],["hac",{"_index":523,"title":{"83":{"position":[[0,4]]}},"content":{"24":{"position":[[59,4],[64,4]]},"25":{"position":[[67,4],[72,4]]},"48":{"position":[[42,4],[120,4]]},"49":{"position":[[6,4]]},"119":{"position":[[35,4]]},"120":{"position":[[13,4]]},"143":{"position":[[29,4]]}},"keywords":{}}],["handl",{"_index":564,"title":{},"content":{"40":{"position":[[28,6]]},"89":{"position":[[98,7]]},"178":{"position":[[346,6]]},"180":{"position":[[2160,8]]}},"keywords":{}}],["happen",{"_index":750,"title":{},"content":{"55":{"position":[[283,7]]},"62":{"position":[[6,7]]},"180":{"position":[[153,8]]}},"keywords":{}}],["happi",{"_index":1404,"title":{},"content":{"166":{"position":[[17,5]]}},"keywords":{}}],["hard",{"_index":1467,"title":{},"content":{"172":{"position":[[437,5]]}},"keywords":{}}],["hardcod",{"_index":1148,"title":{},"content":{"139":{"position":[[58,9]]},"150":{"position":[[213,9]]}},"keywords":{}}],["have",{"_index":971,"title":{},"content":{"102":{"position":[[12,6]]}},"keywords":{}}],["header",{"_index":541,"title":{},"content":{"28":{"position":[[78,7]]}},"keywords":{}}],["heat",{"_index":625,"title":{},"content":{"42":{"position":[[644,4],[756,4]]},"88":{"position":[[124,4]]},"156":{"position":[[186,4]]},"157":{"position":[[730,7]]},"164":{"position":[[841,4]]}},"keywords":{}}],["heater",{"_index":615,"title":{},"content":{"42":{"position":[[127,6]]}},"keywords":{}}],["heating"",{"_index":685,"title":{},"content":{"45":{"position":[[122,13]]}},"keywords":{}}],["heavi",{"_index":50,"title":{},"content":{"2":{"position":[[351,5]]},"3":{"position":[[172,5]]},"95":{"position":[[78,5]]}},"keywords":{}}],["height",{"_index":539,"title":{"28":{"position":[[15,7]]}},"content":{"28":{"position":[[140,7],[161,6]]}},"keywords":{}}],["help",{"_index":101,"title":{"123":{"position":[[8,6]]},"136":{"position":[[8,5]]}},"content":{"4":{"position":[[308,5]]},"61":{"position":[[190,6]]},"70":{"position":[[304,5]]}},"keywords":{}}],["here",{"_index":1411,"title":{},"content":{"166":{"position":[[306,5]]},"170":{"position":[[302,5]]},"172":{"position":[[1299,4]]}},"keywords":{}}],["here'",{"_index":1198,"title":{},"content":{"147":{"position":[[1,6]]}},"keywords":{}}],["high",{"_index":48,"title":{"41":{"position":[[22,4]]}},"content":{"2":{"position":[[332,4]]},"4":{"position":[[296,5]]},"9":{"position":[[4045,5]]},"15":{"position":[[327,6]]},"41":{"position":[[266,5],[1141,4]]},"43":{"position":[[410,4],[480,4],[1059,4]]},"60":{"position":[[38,4],[153,4]]},"62":{"position":[[17,4]]},"75":{"position":[[436,7]]},"93":{"position":[[64,5]]},"100":{"position":[[54,6],[61,4]]},"138":{"position":[[404,4]]},"149":{"position":[[1956,7],[2431,7]]},"164":{"position":[[393,4],[1297,4]]},"165":{"position":[[652,4]]},"166":{"position":[[1224,4]]},"167":{"position":[[91,4]]},"180":{"position":[[2259,4],[2331,5]]}},"keywords":{}}],["high)dynam",{"_index":306,"title":{},"content":{"9":{"position":[[1415,12]]}},"keywords":{}}],["high/low",{"_index":1556,"title":{},"content":{"180":{"position":[[1666,8]]}},"keywords":{}}],["high/very_expens",{"_index":538,"title":{},"content":{"27":{"position":[[195,19]]}},"keywords":{}}],["higher",{"_index":816,"title":{},"content":{"65":{"position":[[142,6]]},"91":{"position":[[89,6],[142,6]]},"126":{"position":[[373,6]]}},"keywords":{}}],["highest",{"_index":73,"title":{},"content":{"3":{"position":[[222,7]]},"75":{"position":[[525,10]]},"93":{"position":[[70,9]]},"95":{"position":[[37,7]]}},"keywords":{}}],["highlight",{"_index":310,"title":{"22":{"position":[[18,11]]}},"content":{"9":{"position":[[1548,11],[4200,11],[4384,11]]},"15":{"position":[[352,10]]},"52":{"position":[[101,12]]}},"keywords":{}}],["highlight_best_pric",{"_index":330,"title":{},"content":{"9":{"position":[[2022,21],[3618,21],[4218,21]]},"15":{"position":[[227,21]]},"16":{"position":[[302,21]]},"17":{"position":[[282,21]]},"22":{"position":[[6,21],[511,21]]}},"keywords":{}}],["hit",{"_index":1449,"title":{},"content":{"170":{"position":[[648,3]]}},"keywords":{}}],["home",{"_index":106,"title":{"5":{"position":[[6,4]]},"57":{"position":[[26,7]]}},"content":{"5":{"position":[[29,5],[140,4]]},"9":{"position":[[368,4],[1662,4],[4778,4]]},"10":{"position":[[51,7]]},"52":{"position":[[217,4]]},"57":{"position":[[177,4],[200,4]]},"64":{"position":[[187,4]]},"67":{"position":[[21,4]]},"89":{"position":[[146,4]]},"98":{"position":[[124,4]]},"103":{"position":[[79,4]]},"105":{"position":[[46,4]]},"115":{"position":[[292,4]]},"120":{"position":[[63,4]]},"132":{"position":[[1577,4]]},"140":{"position":[[142,4]]},"144":{"position":[[5,4]]},"148":{"position":[[22,4]]},"151":{"position":[[233,4]]}},"keywords":{}}],["home"",{"_index":758,"title":{},"content":{"57":{"position":[[32,10]]}},"keywords":{}}],["home"select",{"_index":762,"title":{},"content":{"57":{"position":[[149,16]]}},"keywords":{}}],["homenavig",{"_index":1131,"title":{},"content":{"132":{"position":[[1419,12]]}},"keywords":{}}],["horizont",{"_index":848,"title":{},"content":{"73":{"position":[[54,10]]},"147":{"position":[[135,10],[632,10],[1170,10]]}},"keywords":{}}],["hour",{"_index":60,"title":{"46":{"position":[[5,4]]}},"content":{"2":{"position":[[459,4]]},"8":{"position":[[1488,4],[1926,4]]},"9":{"position":[[2197,4],[2303,4]]},"10":{"position":[[212,6]]},"15":{"position":[[391,4]]},"16":{"position":[[507,5]]},"17":{"position":[[466,5]]},"38":{"position":[[57,4]]},"42":{"position":[[745,6],[767,5]]},"44":{"position":[[1465,4]]},"51":{"position":[[447,5]]},"56":{"position":[[57,4]]},"96":{"position":[[54,5]]},"99":{"position":[[50,5],[128,5]]},"121":{"position":[[220,4]]},"157":{"position":[[64,5]]},"162":{"position":[[30,5]]},"175":{"position":[[324,4]]},"180":{"position":[[452,5],[516,5],[665,5],[685,5]]}},"keywords":{}}],["hourli",{"_index":7,"title":{},"content":{"1":{"position":[[36,6]]},"8":{"position":[[407,6],[1282,6]]},"67":{"position":[[30,6]]},"96":{"position":[[9,7]]},"121":{"position":[[9,6]]},"160":{"position":[[51,6]]}},"keywords":{}}],["hours_to_show",{"_index":874,"title":{},"content":{"77":{"position":[[174,14]]}},"keywords":{}}],["hourscross",{"_index":77,"title":{},"content":{"3":{"position":[[298,10]]}},"keywords":{}}],["hourslead",{"_index":91,"title":{},"content":{"4":{"position":[[110,12]]}},"keywords":{}}],["hourspric",{"_index":93,"title":{},"content":{"4":{"position":[[168,10]]}},"keywords":{}}],["hover",{"_index":384,"title":{},"content":{"9":{"position":[[4370,8]]}},"keywords":{}}],["how)beauti",{"_index":1073,"title":{},"content":{"121":{"position":[[315,13]]}},"keywords":{}}],["hui",{"_index":1188,"title":{},"content":{"144":{"position":[[187,3]]}},"keywords":{}}],["icon",{"_index":843,"title":{"79":{"position":[[0,4]]},"101":{"position":[[8,5]]},"102":{"position":[[17,7]]},"103":{"position":[[37,6]]},"104":{"position":[[14,5]]},"109":{"position":[[19,6]]},"113":{"position":[[0,4]]},"115":{"position":[[12,6]]},"137":{"position":[[8,4]]}},"content":{"72":{"position":[[186,5]]},"73":{"position":[[169,5],[287,5]]},"79":{"position":[[432,4]]},"81":{"position":[[308,5],[316,4]]},"90":{"position":[[9,6],[16,5],[71,5],[111,6]]},"102":{"position":[[27,5],[59,4],[143,5],[390,5],[461,5]]},"103":{"position":[[14,4],[183,4],[275,4],[322,6]]},"105":{"position":[[9,5],[317,5]]},"107":{"position":[[127,4]]},"108":{"position":[[104,4]]},"109":{"position":[[28,4]]},"110":{"position":[[84,5],[117,5]]},"111":{"position":[[102,5],[131,4]]},"112":{"position":[[9,5],[72,4],[122,4],[258,4],[307,6],[322,5],[395,4],[449,4]]},"114":{"position":[[35,5],[140,5],[264,4],[493,4]]},"115":{"position":[[73,5],[220,5],[237,5]]},"116":{"position":[[1,4],[188,4],[236,4],[258,4],[320,4],[369,4],[417,6],[442,5],[537,4]]},"117":{"position":[[9,4],[34,5],[142,5]]},"119":{"position":[[281,5],[311,4],[331,4]]},"141":{"position":[[65,7]]},"143":{"position":[[51,4],[74,4],[215,5],[238,5],[311,4],[340,4],[502,5],[525,5],[598,4]]},"144":{"position":[[63,4]]},"145":{"position":[[41,4],[64,4],[192,5],[253,4],[348,4],[519,4]]},"147":{"position":[[285,5],[358,4],[504,5],[577,4],[776,5],[805,5],[878,4],[1016,5],[1047,5],[1120,4],[1307,5],[1380,4],[1517,5],[1590,4]]},"148":{"position":[[286,4]]},"149":{"position":[[802,5],[825,5],[1174,4],[1366,5],[1395,5],[1773,5],[2069,4],[2256,5],[2489,4]]},"151":{"position":[[1,5]]}},"keywords":{}}],["icon_color",{"_index":888,"title":{"138":{"position":[[8,12]]},"140":{"position":[[22,12]]},"141":{"position":[[12,10]]},"142":{"position":[[11,10]]}},"content":{"79":{"position":[[11,10],[158,11],[235,13],[325,11],[410,11]]},"119":{"position":[[351,10]]},"138":{"position":[[5,10]]},"139":{"position":[[324,10]]},"140":{"position":[[26,10],[243,10],[306,11]]},"141":{"position":[[5,10],[346,10],[445,11],[480,10],[1084,10]]},"144":{"position":[[302,13],[413,13]]},"145":{"position":[[326,13],[596,13],[701,13]]},"146":{"position":[[366,13],[503,13],[648,13]]},"149":{"position":[[94,10],[445,10],[576,11],[1443,10]]},"150":{"position":[[65,10],[120,10],[308,10],[349,10]]},"151":{"position":[[163,10],[632,10]]}},"keywords":{}}],["iconno",{"_index":1018,"title":{},"content":{"114":{"position":[[224,6]]}},"keywords":{}}],["iconoff",{"_index":1013,"title":{},"content":{"114":{"position":[[106,7]]}},"keywords":{}}],["iconshigher/wors",{"_index":1028,"title":{},"content":{"115":{"position":[[140,17]]}},"keywords":{}}],["iconsnormal/averag",{"_index":1030,"title":{},"content":{"115":{"position":[[183,19]]}},"keywords":{}}],["id",{"_index":121,"title":{},"content":{"5":{"position":[[192,4]]},"8":{"position":[[1077,2]]},"57":{"position":[[246,3]]},"131":{"position":[[8,3]]},"132":{"position":[[8,3]]}},"keywords":{}}],["idea",{"_index":1283,"title":{"160":{"position":[[10,5]]}},"content":{},"keywords":{}}],["ideal",{"_index":921,"title":{},"content":{"88":{"position":[[90,5]]}},"keywords":{}}],["ident",{"_index":442,"title":{},"content":{"15":{"position":[[494,11]]},"32":{"position":[[259,9]]}},"keywords":{}}],["identifi",{"_index":1285,"title":{},"content":{"160":{"position":[[78,10]]}},"keywords":{}}],["idl",{"_index":592,"title":{},"content":{"41":{"position":[[698,4]]},"44":{"position":[[380,4]]}},"keywords":{}}],["if/els",{"_index":1171,"title":{},"content":{"141":{"position":[[178,7],[500,7]]}},"keywords":{}}],["ignor",{"_index":657,"title":{"44":{"position":[[10,6]]}},"content":{"44":{"position":[[205,6]]},"180":{"position":[[2114,8]]}},"keywords":{}}],["imag",{"_index":896,"title":{},"content":{"80":{"position":[[57,6]]}},"keywords":{}}],["immedi",{"_index":398,"title":{},"content":{"10":{"position":[[20,9],[258,9]]}},"keywords":{}}],["impact",{"_index":1437,"title":{},"content":{"167":{"position":[[437,6]]}},"keywords":{}}],["import",{"_index":255,"title":{},"content":{"9":{"position":[[4,10],[4467,9]]},"21":{"position":[[625,10]]},"47":{"position":[[4,10]]},"132":{"position":[[843,9]]},"139":{"position":[[94,9]]},"144":{"position":[[319,11],[430,11]]},"146":{"position":[[383,11],[520,11],[665,11]]},"161":{"position":[[1506,10]]},"172":{"position":[[376,10]]}},"keywords":{}}],["imposs",{"_index":1427,"title":{},"content":{"166":{"position":[[1258,10]]}},"keywords":{}}],["improv",{"_index":287,"title":{},"content":{"9":{"position":[[749,8]]},"47":{"position":[[536,8]]}},"keywords":{}}],["in"",{"_index":469,"title":{},"content":{"17":{"position":[[874,8]]}},"keywords":{}}],["in_head",{"_index":274,"title":{},"content":{"9":{"position":[[467,10]]}},"keywords":{}}],["includ",{"_index":198,"title":{},"content":{"8":{"position":[[1105,8]]},"9":{"position":[[2413,8],[2676,8]]},"62":{"position":[[253,8]]},"81":{"position":[[121,8]]},"95":{"position":[[175,9]]},"126":{"position":[[424,7]]},"180":{"position":[[725,7]]}},"keywords":{}}],["include_level",{"_index":228,"title":{},"content":{"8":{"position":[[2208,14]]}},"keywords":{}}],["include_rating_level",{"_index":230,"title":{},"content":{"8":{"position":[[2228,21]]}},"keywords":{}}],["increas",{"_index":771,"title":{},"content":{"60":{"position":[[171,8]]},"164":{"position":[[280,8],[781,8],[1118,8]]},"166":{"position":[[528,8],[821,8],[1172,8]]},"167":{"position":[[9,8]]},"172":{"position":[[300,10]]},"177":{"position":[[421,10],[475,8]]},"178":{"position":[[215,8]]}},"keywords":{}}],["increment",{"_index":1466,"title":{},"content":{"172":{"position":[[403,9]]}},"keywords":{}}],["independ",{"_index":1490,"title":{},"content":{"173":{"position":[[496,13],[538,14]]}},"keywords":{}}],["indic",{"_index":99,"title":{},"content":{"4":{"position":[[272,9]]},"126":{"position":[[22,8]]},"131":{"position":[[648,10]]},"132":{"position":[[741,10]]}},"keywords":{}}],["info",{"_index":943,"title":{},"content":{"95":{"position":[[104,5]]},"144":{"position":[[333,5]]},"148":{"position":[[139,4]]},"149":{"position":[[393,4]]},"179":{"position":[[411,4]]}},"keywords":{}}],["informational)var",{"_index":1203,"title":{},"content":{"148":{"position":[[158,19]]}},"keywords":{}}],["informationinclud",{"_index":1139,"title":{},"content":{"136":{"position":[[53,18]]}},"keywords":{}}],["initi",{"_index":555,"title":{"34":{"position":[[0,7]]}},"content":{"131":{"position":[[673,17]]},"157":{"position":[[474,7]]}},"keywords":{}}],["inlin",{"_index":249,"title":{},"content":{"8":{"position":[[2725,6]]}},"keywords":{}}],["input_boolean",{"_index":671,"title":{},"content":{"44":{"position":[[678,13],[1363,13]]}},"keywords":{}}],["input_boolean.turn_off",{"_index":678,"title":{},"content":{"44":{"position":[[1175,22]]}},"keywords":{}}],["input_boolean.turn_on",{"_index":672,"title":{},"content":{"44":{"position":[[725,21]]}},"keywords":{}}],["input_boolean.washing_machine_auto_start",{"_index":673,"title":{},"content":{"44":{"position":[[766,42],[1091,42],[1217,42]]}},"keywords":{}}],["insert",{"_index":320,"title":{},"content":{"9":{"position":[[1730,9]]},"52":{"position":[[161,9]]}},"keywords":{}}],["insert_nul",{"_index":238,"title":{},"content":{"8":{"position":[[2514,13]]}},"keywords":{}}],["inspect",{"_index":1238,"title":{},"content":{"151":{"position":[[184,8]]}},"keywords":{}}],["instal",{"_index":522,"title":{"49":{"position":[[0,13]]},"82":{"position":[[0,12]]},"83":{"position":[[5,12]]},"84":{"position":[[7,13]]}},"content":{"24":{"position":[[47,7]]},"25":{"position":[[55,7]]},"48":{"position":[[30,7],[108,7]]},"49":{"position":[[130,7]]},"119":{"position":[[1,12],[23,7]]},"120":{"position":[[1,7]]}},"keywords":{}}],["install(opt",{"_index":714,"title":{},"content":{"49":{"position":[[64,17]]}},"keywords":{}}],["instead",{"_index":159,"title":{"62":{"position":[[37,7]]}},"content":{"8":{"position":[[343,7],[1337,7],[2029,7]]},"9":{"position":[[397,7]]},"11":{"position":[[270,7]]},"42":{"position":[[1,7]]},"102":{"position":[[1,7]]},"109":{"position":[[33,7]]},"132":{"position":[[244,8],[959,7]]},"139":{"position":[[47,7]]},"149":{"position":[[559,7]]},"151":{"position":[[621,7]]},"161":{"position":[[1479,7]]},"166":{"position":[[1005,8]]},"167":{"position":[[67,7]]},"178":{"position":[[29,7]]}},"keywords":{}}],["integr",{"_index":4,"title":{"56":{"position":[[19,11]]},"79":{"position":[[11,12]]}},"content":{"1":{"position":[[5,11]]},"4":{"position":[[5,11]]},"8":{"position":[[1059,11]]},"9":{"position":[[146,11],[707,12],[2827,9]]},"13":{"position":[[5,11]]},"21":{"position":[[48,9]]},"29":{"position":[[40,12]]},"47":{"position":[[186,11]]},"55":{"position":[[188,11]]},"58":{"position":[[91,11]]},"66":{"position":[[1,11]]},"89":{"position":[[86,11]]},"120":{"position":[[48,11]]},"132":{"position":[[186,13]]},"148":{"position":[[5,11]]},"150":{"position":[[395,12]]},"156":{"position":[[5,11]]},"157":{"position":[[21,12],[447,11]]},"160":{"position":[[15,11]]},"180":{"position":[[1822,12]]}},"keywords":{}}],["integration'",{"_index":1122,"title":{},"content":{"132":{"position":[[539,13]]}},"keywords":{}}],["integrationconfigur",{"_index":1048,"title":{},"content":{"119":{"position":[[58,24]]}},"keywords":{}}],["intens",{"_index":34,"title":{},"content":{"2":{"position":[[114,9]]}},"keywords":{}}],["interact",{"_index":895,"title":{},"content":{"80":{"position":[[10,11]]}},"keywords":{}}],["interfer",{"_index":609,"title":{},"content":{"41":{"position":[[1359,12]]}},"keywords":{}}],["intern",{"_index":1391,"title":{},"content":{"165":{"position":[[600,8]]}},"keywords":{}}],["internet",{"_index":803,"title":{},"content":{"64":{"position":[[75,8]]}},"keywords":{}}],["interpret",{"_index":1156,"title":{},"content":{"139":{"position":[[381,9]]},"141":{"position":[[763,9]]},"149":{"position":[[526,9]]},"150":{"position":[[233,9],[413,9]]}},"keywords":{}}],["interv",{"_index":3,"title":{"1":{"position":[[6,10]]}},"content":{"1":{"position":[[43,9],[73,8]]},"3":{"position":[[117,9]]},"4":{"position":[[32,8]]},"8":{"position":[[383,8],[1261,8],[1289,8],[2040,10]]},"62":{"position":[[44,9]]},"65":{"position":[[16,9]]},"92":{"position":[[1,9]]},"95":{"position":[[136,9]]},"96":{"position":[[40,9]]},"99":{"position":[[69,9],[147,9]]},"121":{"position":[[38,9]]},"126":{"position":[[469,10]]},"131":{"position":[[1007,8]]},"160":{"position":[[64,9]]},"161":{"position":[[1614,9]]},"165":{"position":[[80,9],[347,8],[928,9],[1086,9],[1162,8]]},"178":{"position":[[196,9]]},"179":{"position":[[372,9],[783,9]]},"180":{"position":[[419,9],[483,9]]},"183":{"position":[[57,9]]}},"keywords":{}}],["intervalsrel",{"_index":1545,"title":{},"content":{"180":{"position":[[842,17]]}},"keywords":{}}],["intervalsresolut",{"_index":160,"title":{},"content":{"8":{"position":[[354,19]]}},"keywords":{}}],["intervalsynchron",{"_index":20,"title":{},"content":{"1":{"position":[[165,20]]}},"keywords":{}}],["intuit",{"_index":1034,"title":{},"content":{"115":{"position":[[260,9]]}},"keywords":{}}],["invalid",{"_index":801,"title":{},"content":{"64":{"position":[[27,7]]}},"keywords":{}}],["isn't",{"_index":951,"title":{},"content":{"97":{"position":[[222,5]]},"165":{"position":[[1171,5]]}},"keywords":{}}],["isol",{"_index":1315,"title":{},"content":{"161":{"position":[[1192,8],[1353,8]]},"178":{"position":[[414,8]]}},"keywords":{}}],["issu",{"_index":842,"title":{"134":{"position":[[7,7]]}},"content":{"70":{"position":[[339,6]]},"119":{"position":[[601,6]]},"123":{"position":[[65,5]]},"136":{"position":[[33,5]]}},"keywords":{}}],["issuesopen",{"_index":1084,"title":{},"content":{"123":{"position":[[48,10]]},"136":{"position":[[16,10]]}},"keywords":{}}],["it'",{"_index":507,"title":{},"content":{"21":{"position":[[516,5]]}},"keywords":{}}],["itdefault",{"_index":1368,"title":{},"content":{"164":{"position":[[614,10]]}},"keywords":{}}],["jump",{"_index":1533,"title":{},"content":{"180":{"position":[[550,4]]}},"keywords":{}}],["keep",{"_index":785,"title":{},"content":{"61":{"position":[[177,4]]},"172":{"position":[[878,4]]},"173":{"position":[[176,4]]}},"keywords":{}}],["kept",{"_index":1310,"title":{},"content":{"161":{"position":[[971,4]]}},"keywords":{}}],["key",{"_index":143,"title":{"121":{"position":[[2,3]]}},"content":{"8":{"position":[[100,3]]},"9":{"position":[[1254,3]]},"15":{"position":[[271,3]]},"16":{"position":[[346,3]]},"17":{"position":[[326,3]]},"61":{"position":[[1,3]]},"87":{"position":[[33,3]]},"131":{"position":[[384,3]]},"132":{"position":[[444,3]]},"179":{"position":[[1,3]]}},"keywords":{}}],["know",{"_index":704,"title":{},"content":{"45":{"position":[[1076,5]]}},"keywords":{}}],["l",{"_index":939,"title":{"93":{"position":[[0,2]]}},"content":{},"keywords":{}}],["label",{"_index":248,"title":{},"content":{"8":{"position":[[2674,6]]},"9":{"position":[[1630,7],[4359,5],[4734,6]]},"52":{"position":[[196,6]]},"80":{"position":[[124,5]]}},"keywords":{}}],["labelonli",{"_index":519,"title":{},"content":{"22":{"position":[[432,9]]}},"keywords":{}}],["languag",{"_index":316,"title":{},"content":{"9":{"position":[[1677,8],[4793,8]]}},"keywords":{}}],["languageinteract",{"_index":731,"title":{},"content":{"52":{"position":[[232,19]]}},"keywords":{}}],["larg",{"_index":964,"title":{},"content":{"100":{"position":[[79,5]]}},"keywords":{}}],["last",{"_index":90,"title":{},"content":{"4":{"position":[[102,4]]},"131":{"position":[[793,4]]},"132":{"position":[[1148,4]]},"183":{"position":[[266,4]]}},"keywords":{}}],["late",{"_index":1541,"title":{},"content":{"180":{"position":[[709,4],[4187,4]]}},"keywords":{}}],["layout",{"_index":870,"title":{"76":{"position":[[9,8]]}},"content":{"78":{"position":[[12,6]]}},"keywords":{}}],["lead",{"_index":962,"title":{},"content":{"99":{"position":[[80,7]]}},"keywords":{}}],["learn",{"_index":552,"title":{},"content":{"30":{"position":[[95,5]]},"121":{"position":[[308,6]]}},"keywords":{}}],["left",{"_index":898,"title":{},"content":{"80":{"position":[[196,5],[328,5]]}},"keywords":{}}],["legaci",{"_index":1115,"title":{},"content":{"132":{"position":[[108,6]]}},"keywords":{}}],["length",{"_index":1367,"title":{},"content":{"164":{"position":[[565,7]]},"166":{"position":[[425,6]]},"177":{"position":[[518,6]]}},"keywords":{}}],["less",{"_index":1295,"title":{},"content":{"161":{"position":[[223,4]]},"164":{"position":[[231,4]]}},"keywords":{}}],["let",{"_index":1299,"title":{},"content":{"161":{"position":[[429,4]]}},"keywords":{}}],["level",{"_index":28,"title":{"18":{"position":[[12,5]]},"19":{"position":[[7,5]]},"20":{"position":[[0,5]]},"75":{"position":[[6,5]]},"183":{"position":[[6,6]]}},"content":{"2":{"position":[[49,7]]},"3":{"position":[[390,7]]},"8":{"position":[[272,5]]},"9":{"position":[[1083,6],[1330,5],[2001,5],[3587,5],[3597,5],[3977,5]]},"15":{"position":[[306,6]]},"43":{"position":[[320,5]]},"50":{"position":[[235,5]]},"61":{"position":[[106,7]]},"62":{"position":[[246,6]]},"75":{"position":[[88,5]]},"90":{"position":[[91,7]]},"93":{"position":[[1,6]]},"102":{"position":[[103,5]]},"103":{"position":[[336,5]]},"106":{"position":[[94,5]]},"107":{"position":[[102,5]]},"108":{"position":[[151,5]]},"138":{"position":[[144,5]]},"140":{"position":[[325,5]]},"141":{"position":[[845,5],[870,6],[897,5],[952,6],[983,5]]},"143":{"position":[[192,5],[479,5]]},"145":{"position":[[473,5]]},"147":{"position":[[254,5]]},"149":{"position":[[671,5],[779,5],[852,5],[877,6],[939,6],[995,6],[1045,6],[1100,6]]},"152":{"position":[[165,6]]},"161":{"position":[[1054,6]]},"165":{"position":[[1,5],[479,5],[523,6],[874,5]]},"166":{"position":[[1316,5]]},"167":{"position":[[127,5]]},"170":{"position":[[128,6],[451,6],[509,6]]},"172":{"position":[[58,6],[134,6],[193,6],[666,6],[991,7],[1034,5],[1054,5]]},"173":{"position":[[425,5]]},"178":{"position":[[85,5],[446,6]]},"179":{"position":[[587,5]]},"182":{"position":[[488,6]]},"183":{"position":[[31,6],[68,6]]}},"keywords":{}}],["level=ani",{"_index":1478,"title":{},"content":{"172":{"position":[[1067,11],[1162,9],[1253,9]]},"173":{"position":[[476,10],[649,9]]}},"keywords":{}}],["level_filt",{"_index":232,"title":{},"content":{"8":{"position":[[2372,13]]}},"keywords":{}}],["level_typ",{"_index":325,"title":{},"content":{"9":{"position":[[1947,11],[3269,11],[3575,11]]},"15":{"position":[[202,11]]},"16":{"position":[[277,11]]},"17":{"position":[[257,11]]},"50":{"position":[[181,11]]},"51":{"position":[[201,11],[621,11]]}},"keywords":{}}],["levels/r",{"_index":723,"title":{},"content":{"52":{"position":[[19,14]]}},"keywords":{}}],["librari",{"_index":521,"title":{},"content":{"24":{"position":[[37,7]]}},"keywords":{}}],["librarycurr",{"_index":167,"title":{},"content":{"8":{"position":[[492,15]]}},"keywords":{}}],["light",{"_index":486,"title":{},"content":{"20":{"position":[[107,6]]},"148":{"position":[[345,5]]},"149":{"position":[[980,5]]}},"keywords":{}}],["light/dark",{"_index":1152,"title":{},"content":{"139":{"position":[[167,10]]},"148":{"position":[[418,10]]},"150":{"position":[[90,10]]}},"keywords":{}}],["limit",{"_index":710,"title":{},"content":{"47":{"position":[[245,11]]},"164":{"position":[[1367,8]]}},"keywords":{}}],["line",{"_index":1004,"title":{},"content":{"111":{"position":[[118,4]]}},"keywords":{}}],["linear",{"_index":858,"title":{},"content":{"75":{"position":[[183,7],[271,7],[362,7],[451,7],[543,7]]}},"keywords":{}}],["link",{"_index":1078,"title":{"122":{"position":[[10,6]]}},"content":{},"keywords":{}}],["list",{"_index":906,"title":{"81":{"position":[[22,6]]}},"content":{"81":{"position":[[15,4]]},"117":{"position":[[83,4]]},"132":{"position":[[1693,4]]},"152":{"position":[[30,4]]}},"keywords":{}}],["load",{"_index":51,"title":{},"content":{"2":{"position":[[357,6]]},"51":{"position":[[695,7]]},"56":{"position":[[150,5]]},"64":{"position":[[170,6]]},"156":{"position":[[270,5]]}},"keywords":{}}],["loads)norm",{"_index":40,"title":{},"content":{"2":{"position":[[178,12]]}},"keywords":{}}],["local",{"_index":634,"title":{},"content":{"42":{"position":[[1048,5]]}},"keywords":{}}],["local/electricity_dashboard_bg.png",{"_index":897,"title":{},"content":{"80":{"position":[[64,35]]}},"keywords":{}}],["locationsdiffer",{"_index":111,"title":{},"content":{"5":{"position":[[67,18]]}},"keywords":{}}],["log",{"_index":829,"title":{"135":{"position":[[6,8]]}},"content":{"67":{"position":[[114,4]]},"136":{"position":[[72,5]]}},"keywords":{}}],["logic",{"_index":1045,"title":{},"content":{"116":{"position":[[542,5]]},"141":{"position":[[186,5],[404,5],[807,5],[1131,6]]},"151":{"position":[[567,5]]},"166":{"position":[[707,6]]}},"keywords":{}}],["logic"",{"_index":642,"title":{},"content":{"43":{"position":[[180,11]]}},"keywords":{}}],["long",{"_index":957,"title":{},"content":{"98":{"position":[[158,4]]},"160":{"position":[[347,4]]},"161":{"position":[[865,4]]},"164":{"position":[[584,4]]},"178":{"position":[[44,4]]}},"keywords":{}}],["longal",{"_index":1496,"title":{},"content":{"175":{"position":[[329,7]]}},"keywords":{}}],["longer",{"_index":1264,"title":{},"content":{"157":{"position":[[569,6]]},"164":{"position":[[815,6]]},"166":{"position":[[549,6]]}},"keywords":{}}],["look",{"_index":1039,"title":{},"content":{"116":{"position":[[270,4]]},"151":{"position":[[289,4]]},"177":{"position":[[277,4]]}},"keywords":{}}],["lookback",{"_index":347,"title":{},"content":{"9":{"position":[[2593,8]]},"17":{"position":[[472,8]]},"51":{"position":[[854,8]]}},"keywords":{}}],["loosen",{"_index":949,"title":{},"content":{"97":{"position":[[159,9]]},"157":{"position":[[244,7]]},"169":{"position":[[84,7]]},"179":{"position":[[433,9]]}},"keywords":{}}],["lose",{"_index":1185,"title":{},"content":{"141":{"position":[[1142,4]]}},"keywords":{}}],["lot",{"_index":497,"title":{},"content":{"21":{"position":[[190,4]]}},"keywords":{}}],["lovelac",{"_index":392,"title":{"76":{"position":[[0,8]]}},"content":{"9":{"position":[[4823,8]]},"50":{"position":[[324,8]]}},"keywords":{}}],["low",{"_index":31,"title":{},"content":{"2":{"position":[[85,3]]},"4":{"position":[[282,5]]},"8":{"position":[[2497,3]]},"9":{"position":[[1401,5],[4031,5]]},"15":{"position":[[313,5]]},"19":{"position":[[72,3]]},"40":{"position":[[35,3]]},"41":{"position":[[14,3],[1218,3],[1320,3]]},"42":{"position":[[904,3]]},"43":{"position":[[624,3],[1130,3]]},"65":{"position":[[90,3]]},"75":{"position":[[257,6]]},"93":{"position":[[51,4]]},"100":{"position":[[40,5]]},"138":{"position":[[360,3]]},"149":{"position":[[1846,6],[2321,6]]},"165":{"position":[[620,4]]},"179":{"position":[[387,3]]},"180":{"position":[[992,4],[1149,4],[1511,3],[1879,3],[1946,3],[1952,3]]}},"keywords":{}}],["low/normal/high",{"_index":1070,"title":{},"content":{"121":{"position":[[155,15]]}},"keywords":{}}],["low/very_cheap",{"_index":535,"title":{},"content":{"27":{"position":[[99,14]]}},"keywords":{}}],["lower",{"_index":815,"title":{},"content":{"65":{"position":[[129,6]]},"126":{"position":[[276,5]]},"170":{"position":[[575,5]]}},"keywords":{}}],["lower/bett",{"_index":1026,"title":{},"content":{"115":{"position":[[104,12]]}},"keywords":{}}],["lowest",{"_index":857,"title":{},"content":{"75":{"position":[[166,9]]},"93":{"position":[[42,8]]}},"keywords":{}}],["lowmin",{"_index":792,"title":{},"content":{"62":{"position":[[106,6]]}},"keywords":{}}],["lt",{"_index":570,"title":{},"content":{"41":{"position":[[34,5]]},"42":{"position":[[413,4]]},"43":{"position":[[1150,5],[1201,5]]},"165":{"position":[[625,4],[642,4]]},"180":{"position":[[1558,5],[1967,5],[2997,4]]}},"keywords":{}}],["m",{"_index":940,"title":{"94":{"position":[[0,2]]}},"content":{},"keywords":{}}],["machin",{"_index":663,"title":{},"content":{"44":{"position":[[114,7],[178,7],[369,7],[887,7]]}},"keywords":{}}],["maintain",{"_index":1116,"title":{},"content":{"132":{"position":[[139,10]]}},"keywords":{}}],["major",{"_index":168,"title":{},"content":{"8":{"position":[[517,5],[1401,7]]}},"keywords":{}}],["make",{"_index":481,"title":{},"content":{"19":{"position":[[240,6]]},"151":{"position":[[28,4]]},"166":{"position":[[1250,4]]},"180":{"position":[[2194,4]]}},"keywords":{}}],["manag",{"_index":930,"title":{},"content":{"89":{"position":[[171,8]]}},"keywords":{}}],["mani",{"_index":273,"title":{},"content":{"9":{"position":[[427,4]]},"47":{"position":[[302,4]]},"140":{"position":[[1,4]]},"166":{"position":[[1473,4]]},"178":{"position":[[10,4]]}},"keywords":{}}],["manual",{"_index":224,"title":{"84":{"position":[[0,6]]},"171":{"position":[[30,6]]}},"content":{"8":{"position":[[1946,6]]},"9":{"position":[[533,6],[2955,6]]},"41":{"position":[[1291,8]]},"47":{"position":[[344,6]]},"55":{"position":[[251,6]]},"131":{"position":[[1260,6]]},"132":{"position":[[86,8],[894,8]]},"166":{"position":[[392,6]]},"167":{"position":[[41,8]]},"171":{"position":[[14,6]]}},"keywords":{}}],["map",{"_index":892,"title":{},"content":{"79":{"position":[[463,8]]}},"keywords":{}}],["mark",{"_index":1305,"title":{},"content":{"161":{"position":[[740,7]]}},"keywords":{}}],["marker",{"_index":733,"title":{},"content":{"52":{"position":[[269,6]]}},"keywords":{}}],["market",{"_index":770,"title":{},"content":{"60":{"position":[[141,6]]},"180":{"position":[[261,7],[270,6],[4171,6]]}},"keywords":{}}],["match",{"_index":166,"title":{},"content":{"8":{"position":[[475,5]]},"115":{"position":[[84,5]]},"170":{"position":[[317,8]]}},"keywords":{}}],["materi",{"_index":1041,"title":{},"content":{"116":{"position":[[353,8]]}},"keywords":{}}],["mathemat",{"_index":1523,"title":{},"content":{"180":{"position":[[171,14]]}},"keywords":{}}],["matrix",{"_index":1461,"title":{"172":{"position":[[23,8]]}},"content":{"172":{"position":[[19,6],[612,7]]}},"keywords":{}}],["max",{"_index":702,"title":{},"content":{"45":{"position":[[874,4]]},"160":{"position":[[236,3]]},"161":{"position":[[274,4]]},"162":{"position":[[212,4]]},"164":{"position":[[257,3]]},"180":{"position":[[3942,4]]}},"keywords":{}}],["maximum",{"_index":700,"title":{},"content":{"45":{"position":[[787,7]]},"131":{"position":[[889,7]]},"161":{"position":[[243,7]]},"172":{"position":[[931,7]]},"173":{"position":[[309,7]]},"180":{"position":[[3873,7]]}},"keywords":{}}],["mdi:alert",{"_index":850,"title":{},"content":{"73":{"position":[[293,9]]},"147":{"position":[[1022,9]]}},"keywords":{}}],["mdi:cash",{"_index":1043,"title":{},"content":{"116":{"position":[[386,8]]},"143":{"position":[[221,8],[508,8]]},"149":{"position":[[808,8]]}},"keywords":{}}],["mdi:chart",{"_index":1003,"title":{},"content":{"111":{"position":[[108,9]]}},"keywords":{}}],["mdi:curr",{"_index":849,"title":{},"content":{"73":{"position":[[175,12]]}},"keywords":{}}],["mdi:flash",{"_index":844,"title":{},"content":{"72":{"position":[[192,9]]}},"keywords":{}}],["mdi:lightn",{"_index":1000,"title":{},"content":{"110":{"position":[[90,13]]}},"keywords":{}}],["mdi:piggi",{"_index":1191,"title":{},"content":{"145":{"position":[[198,9]]},"147":{"position":[[782,9]]},"149":{"position":[[1372,9]]}},"keywords":{}}],["mean",{"_index":808,"title":{},"content":{"65":{"position":[[6,5]]},"115":{"position":[[94,8]]},"172":{"position":[[179,5],[284,4],[472,6]]},"180":{"position":[[1978,6]]}},"keywords":{}}],["meaning",{"_index":574,"title":{},"content":{"41":{"position":[[202,11],[379,10],[560,11]]},"44":{"position":[[488,10]]},"45":{"position":[[280,10],[1164,10]]},"115":{"position":[[274,10]]},"180":{"position":[[1770,11],[3357,10],[4035,10]]}},"keywords":{}}],["meaningfulli",{"_index":1290,"title":{},"content":{"160":{"position":[[287,12]]},"161":{"position":[[531,12]]}},"keywords":{}}],["measur",{"_index":958,"title":{},"content":{"98":{"position":[[179,13]]},"100":{"position":[[13,7]]}},"keywords":{}}],["mediocr",{"_index":1293,"title":{},"content":{"160":{"position":[[432,8]]},"161":{"position":[[748,8]]}},"keywords":{}}],["medium",{"_index":100,"title":{},"content":{"4":{"position":[[288,7]]},"100":{"position":[[46,7]]},"165":{"position":[[635,6]]}},"keywords":{}}],["meet",{"_index":789,"title":{},"content":{"62":{"position":[[54,4]]},"65":{"position":[[26,4]]},"160":{"position":[[117,4]]}},"keywords":{}}],["menu",{"_index":1123,"title":{},"content":{"132":{"position":[[561,4]]}},"keywords":{}}],["messag",{"_index":601,"title":{},"content":{"41":{"position":[[919,8]]},"43":{"position":[[867,8]]},"44":{"position":[[1295,8]]},"131":{"position":[[1061,7]]},"132":{"position":[[1173,7]]}},"keywords":{}}],["met",{"_index":952,"title":{},"content":{"97":{"position":[[228,4]]}},"keywords":{}}],["metadata",{"_index":512,"title":{"131":{"position":[[6,9]]}},"content":{"21":{"position":[[838,8]]},"30":{"position":[[78,8]]},"87":{"position":[[160,10]]},"121":{"position":[[426,8]]},"131":{"position":[[116,8],[585,8],[780,8]]},"132":{"position":[[1094,8]]}},"keywords":{}}],["meter",{"_index":23,"title":{},"content":{"1":{"position":[[206,5]]}},"keywords":{}}],["method",{"_index":911,"title":{"143":{"position":[[0,6]]},"144":{"position":[[0,6]]},"145":{"position":[[0,6]]},"146":{"position":[[0,6]]}},"content":{"81":{"position":[[213,7]]}},"keywords":{}}],["mid",{"_index":660,"title":{},"content":{"44":{"position":[[35,3]]}},"keywords":{}}],["middle/top",{"_index":1551,"title":{},"content":{"180":{"position":[[1466,10]]}},"keywords":{}}],["midnight",{"_index":78,"title":{"180":{"position":[[0,8]]}},"content":{"3":{"position":[[309,8]]},"9":{"position":[[2625,9]]},"17":{"position":[[504,9],[695,8],[737,8],[779,8],[820,8]]},"40":{"position":[[96,8]]},"42":{"position":[[892,8],[971,8]]},"43":{"position":[[1225,8]]},"44":{"position":[[68,9],[212,8]]},"51":{"position":[[886,8]]},"56":{"position":[[128,8]]},"180":{"position":[[558,9],[4139,8]]}},"keywords":{}}],["midnightupd",{"_index":722,"title":{},"content":{"51":{"position":[[804,15]]}},"keywords":{}}],["migrat",{"_index":404,"title":{"11":{"position":[[0,9]]}},"content":{"11":{"position":[[81,9],[324,9]]},"132":{"position":[[1981,9],[2046,9]]}},"keywords":{}}],["mild",{"_index":1482,"title":{},"content":{"173":{"position":[[156,4]]}},"keywords":{}}],["min",{"_index":202,"title":{},"content":{"8":{"position":[[1274,4]]},"45":{"position":[[881,4]]},"94":{"position":[[1,3]]},"157":{"position":[[553,4],[753,4]]},"160":{"position":[[216,3]]},"161":{"position":[[116,4]]},"162":{"position":[[193,4]]},"164":{"position":[[187,3],[798,4],[874,4]]},"175":{"position":[[292,3]]},"180":{"position":[[3949,4]]},"182":{"position":[[110,3],[146,3]]}},"keywords":{}}],["min/max",{"_index":354,"title":{},"content":{"9":{"position":[[2924,7]]},"20":{"position":[[55,9]]},"93":{"position":[[95,7]]},"161":{"position":[[408,8]]},"164":{"position":[[34,7]]}},"keywords":{}}],["min/max/avg",{"_index":1326,"title":{},"content":{"161":{"position":[[1555,12]]},"180":{"position":[[807,11]]}},"keywords":{}}],["min_dist",{"_index":81,"title":{},"content":{"3":{"position":[[369,13]]},"62":{"position":[[210,12]]}},"keywords":{}}],["min_distance)or",{"_index":817,"title":{},"content":{"65":{"position":[[149,15]]}},"keywords":{}}],["min_periods_best",{"_index":1409,"title":{},"content":{"166":{"position":[[207,17]]},"170":{"position":[[31,17]]},"177":{"position":[[189,17]]},"182":{"position":[[403,16]]}},"keywords":{}}],["minim",{"_index":567,"title":{},"content":{"40":{"position":[[113,7]]},"41":{"position":[[135,8]]},"173":{"position":[[197,7]]}},"keywords":{}}],["minimum",{"_index":697,"title":{},"content":{"45":{"position":[[721,7]]},"131":{"position":[[826,7]]},"161":{"position":[[85,7],[600,7],[915,7]]},"164":{"position":[[550,7]]},"169":{"position":[[108,7]]},"170":{"position":[[656,7]]},"180":{"position":[[3815,7]]},"182":{"position":[[157,7]]}},"keywords":{}}],["minor",{"_index":170,"title":{},"content":{"8":{"position":[[536,5],[1414,7]]},"45":{"position":[[749,5],[815,5],[889,5]]},"89":{"position":[[17,5]]},"121":{"position":[[548,5]]}},"keywords":{}}],["minor_curr",{"_index":203,"title":{},"content":{"8":{"position":[[1298,14]]}},"keywords":{}}],["minut",{"_index":9,"title":{},"content":{"1":{"position":[[57,9]]},"8":{"position":[[396,7]]},"9":{"position":[[2665,8]]},"17":{"position":[[391,8]]},"51":{"position":[[829,8]]},"89":{"position":[[233,8]]},"92":{"position":[[14,6]]},"96":{"position":[[20,6]]},"121":{"position":[[31,6]]},"131":{"position":[[1028,7]]},"157":{"position":[[158,7]]},"161":{"position":[[907,7],[926,6],[955,6]]},"164":{"position":[[628,7],[653,7],[687,7]]},"177":{"position":[[595,7]]},"179":{"position":[[282,7]]},"183":{"position":[[50,6]]}},"keywords":{}}],["minutes)attribut",{"_index":1125,"title":{},"content":{"132":{"position":[[646,17]]}},"keywords":{}}],["minutes)cach",{"_index":754,"title":{},"content":{"56":{"position":[[89,14]]}},"keywords":{}}],["minutes)check",{"_index":1036,"title":{},"content":{"116":{"position":[[90,13]]}},"keywords":{}}],["minutesno",{"_index":748,"title":{},"content":{"55":{"position":[[241,9]]}},"keywords":{}}],["minutessensor",{"_index":751,"title":{},"content":{"56":{"position":[[23,13]]}},"keywords":{}}],["miss",{"_index":321,"title":{},"content":{"9":{"position":[[1744,7]]}},"keywords":{}}],["mistak",{"_index":1432,"title":{"167":{"position":[[7,8]]}},"content":{},"keywords":{}}],["mix",{"_index":1460,"title":{},"content":{"171":{"position":[[411,8]]}},"keywords":{}}],["mobil",{"_index":872,"title":{"77":{"position":[[8,6]]}},"content":{"77":{"position":[[15,6]]}},"keywords":{}}],["mod",{"_index":1192,"title":{},"content":{"145":{"position":[[249,3],[515,3]]}},"keywords":{}}],["mode",{"_index":213,"title":{"14":{"position":[[10,6]]},"24":{"position":[[17,6]]},"25":{"position":[[28,5]]}},"content":{"8":{"position":[[1438,5]]},"9":{"position":[[1211,5],[1459,5],[2774,7],[3912,6],[4542,5]]},"13":{"position":[[48,6],[95,4]]},"21":{"position":[[16,5],[730,6]]},"48":{"position":[[77,6]]},"49":{"position":[[165,4]]},"51":{"position":[[917,5]]},"131":{"position":[[376,6],[599,4],[1250,6]]},"139":{"position":[[178,5]]},"148":{"position":[[429,4]]},"150":{"position":[[101,4]]}},"keywords":{}}],["moder",{"_index":1226,"title":{},"content":{"149":{"position":[[1899,11]]},"164":{"position":[[1406,8]]},"166":{"position":[[740,11]]}},"keywords":{}}],["momentl",{"_index":1529,"title":{},"content":{"180":{"position":[[404,10]]}},"keywords":{}}],["monday",{"_index":1451,"title":{},"content":{"171":{"position":[[69,6],[266,6]]}},"keywords":{}}],["money)when",{"_index":1020,"title":{},"content":{"114":{"position":[[371,10]]}},"keywords":{}}],["monitor",{"_index":453,"title":{},"content":{"17":{"position":[[542,11]]}},"keywords":{}}],["month",{"_index":778,"title":{},"content":{"60":{"position":[[279,6]]}},"keywords":{}}],["more",{"_index":773,"title":{},"content":{"60":{"position":[[199,4]]},"62":{"position":[[234,4]]},"69":{"position":[[346,4]]},"80":{"position":[[344,4]]},"91":{"position":[[103,4]]},"115":{"position":[[126,4],[167,4]]},"126":{"position":[[503,5]]},"132":{"position":[[266,4]]},"141":{"position":[[732,4]]},"161":{"position":[[65,4]]},"164":{"position":[[161,4]]},"166":{"position":[[843,4]]},"172":{"position":[[317,4],[1321,5]]},"173":{"position":[[377,4]]},"180":{"position":[[647,4],[4208,4]]}},"keywords":{}}],["more/few",{"_index":1418,"title":{},"content":{"166":{"position":[[778,10]]}},"keywords":{}}],["more/long",{"_index":1362,"title":{},"content":{"164":{"position":[[305,11]]}},"keywords":{}}],["morn",{"_index":721,"title":{},"content":{"51":{"position":[[771,7]]}},"keywords":{}}],["much",{"_index":95,"title":{},"content":{"4":{"position":[[196,4]]},"161":{"position":[[60,4],[218,4]]},"164":{"position":[[961,4]]},"166":{"position":[[375,4]]}},"keywords":{}}],["multi",{"_index":105,"title":{"5":{"position":[[0,5]]}},"content":{},"keywords":{}}],["multipl",{"_index":76,"title":{"57":{"position":[[10,8]]}},"content":{"3":{"position":[[289,8]]},"5":{"position":[[13,8]]},"44":{"position":[[1419,8]]},"146":{"position":[[9,8]]},"147":{"position":[[37,8]]},"150":{"position":[[264,8]]},"180":{"position":[[1615,8]]}},"keywords":{}}],["mushroom",{"_index":997,"title":{"108":{"position":[[0,8]]},"145":{"position":[[10,8]]}},"content":{"145":{"position":[[5,8]]}},"keywords":{}}],["my_custom_them",{"_index":1213,"title":{},"content":{"149":{"position":[[199,16]]}},"keywords":{}}],["n",{"_index":1462,"title":{},"content":{"172":{"position":[[44,1]]}},"keywords":{}}],["name",{"_index":164,"title":{},"content":{"8":{"position":[[444,6]]},"72":{"position":[[166,5],[255,5],[323,5]]},"73":{"position":[[145,5],[263,5]]},"75":{"position":[[76,5]]},"77":{"position":[[153,5],[287,5],[366,5]]},"106":{"position":[[82,5],[159,5],[226,5]]},"107":{"position":[[82,5]]},"108":{"position":[[79,5]]},"111":{"position":[[83,5]]},"112":{"position":[[219,5]]},"132":{"position":[[1219,6],[1536,6]]},"138":{"position":[[50,4]]},"143":{"position":[[172,5],[459,5]]},"145":{"position":[[168,5],[461,5]]},"147":{"position":[[242,5],[460,5],[735,5],[975,5],[1265,5],[1472,5]]},"149":{"position":[[759,5],[1325,5],[1725,5],[2212,5]]}},"keywords":{}}],["narrow",{"_index":1546,"title":{},"content":{"180":{"position":[[1009,6],[1166,6],[1551,6]]}},"keywords":{}}],["natur",{"_index":267,"title":{},"content":{"9":{"position":[[298,6]]},"180":{"position":[[4153,7]]}},"keywords":{}}],["near",{"_index":1488,"title":{},"content":{"173":{"position":[[296,4]]},"180":{"position":[[1417,4],[1457,4]]}},"keywords":{}}],["need",{"_index":281,"title":{"123":{"position":[[3,4]]}},"content":{"9":{"position":[[621,6]]},"10":{"position":[[253,4]]},"15":{"position":[[62,7]]},"45":{"position":[[1105,4]]},"47":{"position":[[500,6]]},"55":{"position":[[266,6]]},"58":{"position":[[9,5]]},"70":{"position":[[299,4]]},"102":{"position":[[507,7]]},"107":{"position":[[159,4]]},"123":{"position":[[74,6]]},"131":{"position":[[1281,6]]},"141":{"position":[[236,4],[314,4],[795,4],[1118,4]]},"150":{"position":[[449,4]]},"157":{"position":[[310,4]]},"170":{"position":[[278,4]]},"171":{"position":[[501,6]]},"172":{"position":[[1309,4]]},"173":{"position":[[618,6],[632,5],[747,6],[881,8]]},"175":{"position":[[108,7]]},"179":{"position":[[447,8],[491,6]]}},"keywords":{}}],["neededal",{"_index":390,"title":{},"content":{"9":{"position":[[4724,9]]}},"keywords":{}}],["networktibb",{"_index":805,"title":{},"content":{"64":{"position":[[106,13]]}},"keywords":{}}],["neutral",{"_index":1031,"title":{},"content":{"115":{"position":[[212,7]]},"140":{"position":[[759,7]]}},"keywords":{}}],["neutral/normal)var",{"_index":1208,"title":{},"content":{"148":{"position":[[305,20]]}},"keywords":{}}],["never",{"_index":1498,"title":{},"content":{"177":{"position":[[54,5]]}},"keywords":{}}],["new",{"_index":424,"title":{},"content":{"11":{"position":[[502,3]]},"55":{"position":[[222,3]]},"123":{"position":[[61,3]]},"131":{"position":[[54,3]]},"132":{"position":[[182,3],[2184,3]]},"136":{"position":[[29,3]]},"170":{"position":[[198,5]]},"173":{"position":[[416,3]]}},"keywords":{}}],["next",{"_index":92,"title":{"30":{"position":[[0,4]]}},"content":{"4":{"position":[[160,4]]},"5":{"position":[[203,4]]},"72":{"position":[[329,4]]},"99":{"position":[[120,4]]},"114":{"position":[[434,4]]},"147":{"position":[[1478,4]]},"180":{"position":[[365,4]]}},"keywords":{}}],["nok",{"_index":1076,"title":{},"content":{"121":{"position":[[527,4]]}},"keywords":{}}],["nok/sek",{"_index":926,"title":{},"content":{"89":{"position":[[76,9]]}},"keywords":{}}],["non",{"_index":1258,"title":{},"content":{"156":{"position":[[256,3]]}},"keywords":{}}],["none",{"_index":960,"title":{},"content":{"98":{"position":[[203,6]]},"169":{"position":[[52,6]]}},"keywords":{}}],["normal",{"_index":303,"title":{},"content":{"9":{"position":[[1356,7],[1407,7],[4037,7],[4122,7]]},"15":{"position":[[319,7]]},"22":{"position":[[139,6]]},"27":{"position":[[151,6]]},"52":{"position":[[59,7]]},"75":{"position":[[345,9]]},"93":{"position":[[56,7]]},"97":{"position":[[62,7]]},"115":{"position":[[39,7]]},"149":{"position":[[1006,9],[2375,9]]},"158":{"position":[[80,6],[170,6]]},"165":{"position":[[1079,6]]},"178":{"position":[[189,6]]}},"keywords":{}}],["note",{"_index":386,"title":{},"content":{"9":{"position":[[4477,6]]},"10":{"position":[[179,5]]},"11":{"position":[[342,4]]},"15":{"position":[[452,5]]},"21":{"position":[[738,5]]},"25":{"position":[[143,5]]},"32":{"position":[[227,5]]},"51":{"position":[[896,5]]},"123":{"position":[[84,5]]},"132":{"position":[[853,6]]},"164":{"position":[[1223,5]]}},"keywords":{}}],["noteshom",{"_index":1082,"title":{},"content":{"122":{"position":[[39,9]]}},"keywords":{}}],["notifi",{"_index":1386,"title":{},"content":{"165":{"position":[[388,6]]}},"keywords":{}}],["notify.mobile_app",{"_index":600,"title":{},"content":{"41":{"position":[[895,17]]},"43":{"position":[[843,17]]},"44":{"position":[[1271,17]]}},"keywords":{}}],["novemb",{"_index":1586,"title":{},"content":{"183":{"position":[[280,8]]}},"keywords":{}}],["now",{"_index":878,"title":{},"content":{"77":{"position":[[379,3]]}},"keywords":{}}],["null",{"_index":240,"title":{},"content":{"8":{"position":[[2543,5]]},"9":{"position":[[1725,4]]},"52":{"position":[[156,4]]}},"keywords":{}}],["number",{"_index":1439,"title":{"173":{"position":[[13,6]]}},"content":{"169":{"position":[[116,6]]},"179":{"position":[[683,6],[752,6]]}},"keywords":{}}],["numer",{"_index":912,"title":{},"content":{"81":{"position":[[227,8]]}},"keywords":{}}],["numeric_st",{"_index":589,"title":{},"content":{"41":{"position":[[594,13]]},"42":{"position":[[441,13],[570,13]]},"43":{"position":[[339,13],[543,13],[681,13]]},"44":{"position":[[512,13]]},"180":{"position":[[2485,13],[2895,13]]}},"keywords":{}}],["object",{"_index":147,"title":{},"content":{"8":{"position":[[149,7]]},"20":{"position":[[216,9]]},"165":{"position":[[414,11]]},"166":{"position":[[1429,11]]}},"keywords":{}}],["observ",{"_index":1436,"title":{},"content":{"167":{"position":[[307,7]]},"180":{"position":[[1300,12]]}},"keywords":{}}],["occur",{"_index":1552,"title":{},"content":{"180":{"position":[[1502,7]]}},"keywords":{}}],["offer",{"_index":1118,"title":{},"content":{"132":{"position":[[259,6]]}},"keywords":{}}],["old",{"_index":426,"title":{},"content":{"11":{"position":[[526,3]]},"132":{"position":[[2075,3]]}},"keywords":{}}],["omit",{"_index":214,"title":{},"content":{"8":{"position":[[1445,4],[1626,4]]},"9":{"position":[[2264,7],[3519,4]]},"16":{"position":[[247,4]]},"51":{"position":[[168,4]]}},"keywords":{}}],["on",{"_index":999,"title":{},"content":{"109":{"position":[[56,4]]},"157":{"position":[[915,4]]},"165":{"position":[[343,3],[1158,3]]},"167":{"position":[[289,3],[392,3]]},"171":{"position":[[213,3]]},"178":{"position":[[40,3]]}},"keywords":{}}],["on/off",{"_index":922,"title":{},"content":{"88":{"position":[[177,6]]}},"keywords":{}}],["onc",{"_index":1435,"title":{},"content":{"167":{"position":[[275,4]]}},"keywords":{}}],["only)"",{"_index":577,"title":{},"content":{"41":{"position":[[283,11]]},"180":{"position":[[2348,11]]}},"keywords":{}}],["open",{"_index":244,"title":{},"content":{"8":{"position":[[2635,4]]},"49":{"position":[[1,4]]}},"keywords":{}}],["optim",{"_index":308,"title":{"61":{"position":[[9,8]]}},"content":{"9":{"position":[[1509,7],[2872,7]]},"13":{"position":[[60,9]]},"16":{"position":[[745,7]]},"21":{"position":[[93,7],[429,7],[689,7]]},"61":{"position":[[34,7]]},"77":{"position":[[1,9]]},"100":{"position":[[116,13]]},"121":{"position":[[476,7]]},"131":{"position":[[129,7],[333,7],[447,7],[851,8],[914,8],[1372,7]]}},"keywords":{}}],["option",{"_index":311,"title":{"18":{"position":[[23,8]]},"35":{"position":[[14,8]]},"165":{"position":[[0,8]]}},"content":{"9":{"position":[[1560,8],[1869,9],[2136,8],[3988,8]]},"11":{"position":[[392,7]]},"19":{"position":[[56,7]]},"41":{"position":[[667,9]]},"42":{"position":[[523,9]]},"48":{"position":[[48,8]]},"57":{"position":[[43,7]]},"120":{"position":[[198,10]]},"132":{"position":[[476,7],[553,7],[1444,7],[1776,7]]},"149":{"position":[[70,8],[80,6],[516,6]]},"160":{"position":[[391,9]]},"161":{"position":[[989,8],[1016,10]]},"179":{"position":[[610,8]]},"180":{"position":[[2237,6],[2655,6],[3079,6]]}},"keywords":{}}],["optionsbett",{"_index":413,"title":{},"content":{"11":{"position":[[233,13]]}},"keywords":{}}],["optionssav",{"_index":1134,"title":{},"content":{"132":{"position":[[1553,11]]}},"keywords":{}}],["orang",{"_index":491,"title":{},"content":{"20":{"position":[[159,9]]},"148":{"position":[[196,6]]},"149":{"position":[[386,6],[1090,6],[1985,6]]}},"keywords":{}}],["order",{"_index":1405,"title":{},"content":{"166":{"position":[[74,6]]}},"keywords":{}}],["origin",{"_index":1318,"title":{},"content":{"161":{"position":[[1300,8],[1518,8]]},"171":{"position":[[299,10]]},"172":{"position":[[698,8],[1000,8],[1113,8],[1204,8]]},"173":{"position":[[464,9],[591,10],[720,10]]}},"keywords":{}}],["other",{"_index":1493,"title":{},"content":{"173":{"position":[[856,6]]}},"keywords":{}}],["otherwis",{"_index":1396,"title":{},"content":{"165":{"position":[[948,9]]},"182":{"position":[[595,10]]}},"keywords":{}}],["out",{"_index":357,"title":{},"content":{"9":{"position":[[2983,3]]},"157":{"position":[[1,3]]},"166":{"position":[[935,4]]}},"keywords":{}}],["outlier",{"_index":1321,"title":{},"content":{"161":{"position":[[1362,7]]}},"keywords":{}}],["output",{"_index":145,"title":{},"content":{"8":{"position":[[124,6],[458,6]]},"132":{"position":[[670,7],[1317,6],[1506,6]]}},"keywords":{}}],["output_format",{"_index":178,"title":{},"content":{"8":{"position":[[688,14],[1183,13],[1656,14]]},"132":{"position":[[2323,14]]}},"keywords":{}}],["over",{"_index":89,"title":{},"content":{"4":{"position":[[93,4],[151,4]]},"9":{"position":[[900,4],[4379,4]]},"99":{"position":[[33,4],[111,4]]}},"keywords":{}}],["overlay",{"_index":331,"title":{},"content":{"9":{"position":[[2074,8],[4262,7]]},"22":{"position":[[49,7]]}},"keywords":{}}],["overlay)automat",{"_index":728,"title":{},"content":{"52":{"position":[[138,17]]}},"keywords":{}}],["overrid",{"_index":998,"title":{"109":{"position":[[0,10]]}},"content":{"111":{"position":[[136,9]]},"116":{"position":[[215,8],[433,8]]},"149":{"position":[[16,8],[109,8],[218,8]]},"150":{"position":[[167,8]]},"151":{"position":[[409,8],[501,8]]},"173":{"position":[[454,9]]}},"keywords":{}}],["overview",{"_index":428,"title":{"13":{"position":[[0,9]]}},"content":{"13":{"position":[[185,8],[373,8]]},"15":{"position":[[33,9]]},"126":{"position":[[203,9]]}},"keywords":{}}],["p",{"_index":942,"title":{"95":{"position":[[0,2]]}},"content":{},"keywords":{}}],["panliv",{"_index":732,"title":{},"content":{"52":{"position":[[261,7]]}},"keywords":{}}],["paramet",{"_index":193,"title":{},"content":{"8":{"position":[[1008,11],[1021,9],[1458,9],[2611,9]]},"9":{"position":[[2126,9]]},"61":{"position":[[5,11]]},"91":{"position":[[35,9]]},"132":{"position":[[498,10],[1711,11],[1735,10]]},"182":{"position":[[15,11],[28,9],[532,10]]}},"keywords":{}}],["parameterschart",{"_index":551,"title":{},"content":{"30":{"position":[[62,15]]}},"keywords":{}}],["parameterstest",{"_index":423,"title":{},"content":{"11":{"position":[[483,14]]}},"keywords":{}}],["particular",{"_index":1571,"title":{},"content":{"180":{"position":[[4054,10]]}},"keywords":{}}],["past",{"_index":369,"title":{},"content":{"9":{"position":[[3375,5],[3839,5]]},"99":{"position":[[42,4]]}},"keywords":{}}],["path",{"_index":647,"title":{},"content":{"43":{"position":[[472,4],[616,4]]},"132":{"position":[[1991,5]]}},"keywords":{}}],["pattern",{"_index":1366,"title":{},"content":{"164":{"position":[[540,8]]},"172":{"position":[[902,7]]},"173":{"position":[[767,8]]},"181":{"position":[[28,8]]}},"keywords":{}}],["patternsact",{"_index":1576,"title":{},"content":{"181":{"position":[[112,15]]}},"keywords":{}}],["peak",{"_index":66,"title":{"70":{"position":[[12,4]]},"126":{"position":[[20,4]]}},"content":{"3":{"position":[[24,4]]},"70":{"position":[[10,4],[95,4]]},"73":{"position":[[269,4]]},"95":{"position":[[1,4]]},"126":{"position":[[65,4]]},"138":{"position":[[313,4]]},"147":{"position":[[981,4]]},"156":{"position":[[99,5]]},"157":{"position":[[407,4],[738,4]]},"158":{"position":[[110,4],[200,4]]},"160":{"position":[[240,5]]},"161":{"position":[[202,4],[675,4]]},"162":{"position":[[336,4]]},"164":{"position":[[95,5],[661,5]]},"165":{"position":[[219,5]]},"170":{"position":[[369,4],[556,4]]},"180":{"position":[[59,4],[1285,4]]},"182":{"position":[[515,4]]}},"keywords":{}}],["peak)low",{"_index":1481,"title":{},"content":{"173":{"position":[[113,10]]}},"keywords":{}}],["peak_pric",{"_index":227,"title":{},"content":{"8":{"position":[[2150,10]]}},"keywords":{}}],["peak_price_",{"_index":1580,"title":{},"content":{"182":{"position":[[548,12]]}},"keywords":{}}],["peak_price_flex",{"_index":1361,"title":{},"content":{"164":{"position":[[191,16]]}},"keywords":{}}],["peak_price_min_distance_from_avg",{"_index":1378,"title":{},"content":{"164":{"position":[[1063,33]]}},"keywords":{}}],["peak_price_min_period_length",{"_index":1371,"title":{},"content":{"164":{"position":[[729,29]]}},"keywords":{}}],["peak_price_period",{"_index":992,"title":{},"content":{"103":{"position":[[528,18]]}},"keywords":{}}],["peak_price_period)tim",{"_index":1163,"title":{},"content":{"140":{"position":[[564,24]]}},"keywords":{}}],["pend",{"_index":1101,"title":{},"content":{"131":{"position":[[665,7]]},"132":{"position":[[758,7]]}},"keywords":{}}],["per",{"_index":268,"title":{"45":{"position":[[10,3]]}},"content":{"9":{"position":[[341,3]]},"45":{"position":[[602,3]]},"96":{"position":[[50,3],[63,3]]},"165":{"position":[[1096,3]]},"170":{"position":[[84,3]]},"172":{"position":[[130,3],[260,3],[428,3],[974,4]]},"173":{"position":[[87,3],[488,3]]},"175":{"position":[[270,3]]},"180":{"position":[[3093,3],[3600,3],[4130,3],[4312,3]]},"182":{"position":[[442,3],[506,3]]}},"keywords":{}}],["percentag",{"_index":694,"title":{},"content":{"45":{"position":[[644,10]]}},"keywords":{}}],["perfect",{"_index":452,"title":{},"content":{"17":{"position":[[514,7]]},"131":{"position":[[152,7]]},"171":{"position":[[320,7]]}},"keywords":{}}],["perfectli",{"_index":1401,"title":{},"content":{"165":{"position":[[1177,9]]}},"keywords":{}}],["perform",{"_index":414,"title":{},"content":{"11":{"position":[[247,11]]},"132":{"position":[[294,12]]}},"keywords":{}}],["period",{"_index":64,"title":{"3":{"position":[[6,8]]},"22":{"position":[[11,6]]},"44":{"position":[[17,6],[44,7]]},"45":{"position":[[14,6]]},"61":{"position":[[29,6]]},"62":{"position":[[30,6]]},"65":{"position":[[11,6]]},"69":{"position":[[37,8]]},"73":{"position":[[0,6]]},"126":{"position":[[11,6],[31,7]]},"153":{"position":[[0,6]]},"156":{"position":[[15,9]]},"177":{"position":[[3,7]]},"178":{"position":[[0,7]]}},"content":{"3":{"position":[[12,7],[35,7],[96,6],[195,6],[270,7],[403,6]]},"8":{"position":[[326,6],[1969,6],[2008,7],[2274,7],[2443,7]]},"9":{"position":[[333,7],[1541,6],[2067,6],[4193,6],[4430,7]]},"15":{"position":[[345,6]]},"22":{"position":[[95,8],[186,6],[363,6],[455,7]]},"30":{"position":[[176,6]]},"40":{"position":[[61,6]]},"41":{"position":[[124,7],[349,7],[971,6],[1191,7]]},"42":{"position":[[239,6],[858,6]]},"43":{"position":[[508,6]]},"44":{"position":[[52,6],[1437,6]]},"45":{"position":[[583,6],[606,6],[1069,6]]},"47":{"position":[[273,8]]},"52":{"position":[[94,6]]},"61":{"position":[[202,7],[234,6]]},"65":{"position":[[214,6]]},"70":{"position":[[21,6]]},"73":{"position":[[27,7]]},"77":{"position":[[298,6]]},"88":{"position":[[12,7],[214,6]]},"91":{"position":[[68,6],[108,7]]},"94":{"position":[[35,7],[119,7]]},"95":{"position":[[12,7]]},"97":{"position":[[172,6],[209,6],[263,8]]},"100":{"position":[[260,6]]},"102":{"position":[[448,7]]},"114":{"position":[[174,7],[201,8],[240,8],[398,8],[470,8],[502,7]]},"119":{"position":[[179,7]]},"121":{"position":[[274,7]]},"126":{"position":[[76,7],[92,6],[157,7],[225,7],[249,7],[322,7],[346,7],[453,6]]},"138":{"position":[[279,7]]},"145":{"position":[[185,6]]},"147":{"position":[[616,7],[752,6],[992,6]]},"149":{"position":[[1342,6]]},"154":{"position":[[102,7]]},"156":{"position":[[125,7],[207,7]]},"157":{"position":[[274,7],[895,8]]},"158":{"position":[[35,6],[121,6],[211,6],[271,6]]},"161":{"position":[[515,7],[849,7],[933,6],[962,6],[1277,6],[1460,6],[1496,7]]},"164":{"position":[[558,6],[591,6],[822,7],[988,6]]},"165":{"position":[[51,7],[270,6],[825,6],[1100,6],[1137,7]]},"166":{"position":[[148,8],[418,6],[446,7],[556,7],[633,7],[789,8],[848,7],[1068,7],[1277,7],[1447,7],[1508,8]]},"167":{"position":[[223,7],[485,7]]},"169":{"position":[[40,7],[126,7]]},"170":{"position":[[76,7],[380,8],[664,6]]},"171":{"position":[[163,7],[328,7],[392,7],[449,7]]},"172":{"position":[[1143,7],[1185,7],[1234,7],[1282,7]]},"173":{"position":[[569,7],[698,7]]},"175":{"position":[[262,7],[306,6],[337,7]]},"177":{"position":[[234,7],[254,8],[511,6]]},"178":{"position":[[21,7],[49,6]]},"179":{"position":[[103,7],[167,6],[230,6],[329,6]]},"180":{"position":[[23,6],[876,7],[1755,6],[2030,7],[2123,6],[3097,6],[3133,6],[3604,6],[3629,6],[4108,7],[4316,6]]},"182":{"position":[[434,7]]}},"keywords":{}}],["period"",{"_index":383,"title":{},"content":{"9":{"position":[[4346,12]]},"22":{"position":[[419,12]]}},"keywords":{}}],["period'",{"_index":683,"title":{},"content":{"45":{"position":[[32,8],[263,8],[673,8]]},"180":{"position":[[3340,8],[3778,8]]}},"keywords":{}}],["period)when",{"_index":1022,"title":{},"content":{"114":{"position":[[439,11]]}},"keywords":{}}],["period_filt",{"_index":225,"title":{},"content":{"8":{"position":[[2119,14]]}},"keywords":{}}],["period_interval_level_gap_count",{"_index":1516,"title":{},"content":{"179":{"position":[[715,32]]}},"keywords":{}}],["period_interval_smoothed_count",{"_index":1330,"title":{},"content":{"161":{"position":[[1663,30]]},"179":{"position":[[647,31]]}},"keywords":{}}],["period_interval_smoothed_countif",{"_index":1506,"title":{},"content":{"178":{"position":[[374,32]]}},"keywords":{}}],["perioddefault",{"_index":1397,"title":{},"content":{"165":{"position":[[963,14]]}},"keywords":{}}],["periodsdecreas",{"_index":1363,"title":{},"content":{"164":{"position":[[317,15]]}},"keywords":{}}],["periodsdefault",{"_index":1358,"title":{},"content":{"164":{"position":[[56,15]]}},"keywords":{}}],["periodsth",{"_index":1329,"title":{},"content":{"161":{"position":[[1642,10]]}},"keywords":{}}],["periodstooltip",{"_index":381,"title":{},"content":{"9":{"position":[[4308,14]]}},"keywords":{}}],["periodstransl",{"_index":314,"title":{},"content":{"9":{"position":[[1612,17]]}},"keywords":{}}],["permissionsintegr",{"_index":828,"title":{},"content":{"67":{"position":[[91,22]]}},"keywords":{}}],["person",{"_index":378,"title":{},"content":{"9":{"position":[[4067,8]]},"19":{"position":[[15,8],[222,8]]},"87":{"position":[[17,8]]}},"keywords":{}}],["phase",{"_index":1470,"title":{},"content":{"172":{"position":[[606,5]]}},"keywords":{}}],["pictur",{"_index":893,"title":{"80":{"position":[[0,7]]}},"content":{"80":{"position":[[40,7]]}},"keywords":{}}],["piec",{"_index":1502,"title":{"178":{"position":[[25,7]]}},"content":{},"keywords":{}}],["piecesmidnight",{"_index":1253,"title":{},"content":{"154":{"position":[[140,14]]}},"keywords":{}}],["piggi",{"_index":981,"title":{},"content":{"102":{"position":[[418,5]]},"114":{"position":[[341,5]]}},"keywords":{}}],["pixel",{"_index":544,"title":{},"content":{"28":{"position":[[171,6]]}},"keywords":{}}],["place",{"_index":207,"title":{},"content":{"8":{"position":[[1385,6]]}},"keywords":{}}],["plan",{"_index":431,"title":{},"content":{"13":{"position":[[256,8]]}},"keywords":{}}],["platform",{"_index":582,"title":{},"content":{"41":{"position":[[425,9]]},"42":{"position":[[278,9]]},"43":{"position":[[203,9]]},"44":{"position":[[244,9],[929,9]]},"45":{"position":[[147,9]]},"69":{"position":[[74,9]]},"70":{"position":[[124,9]]},"175":{"position":[[431,9]]},"180":{"position":[[2371,9],[2781,9],[3224,9]]}},"keywords":{}}],["plu",{"_index":1010,"title":{},"content":{"112":{"position":[[481,4]]},"116":{"position":[[395,5]]}},"keywords":{}}],["pm",{"_index":835,"title":{},"content":{"69":{"position":[[242,2]]}},"keywords":{}}],["point",{"_index":257,"title":{},"content":{"9":{"position":[[81,6],[4677,5]]},"47":{"position":[[115,6]]},"132":{"position":[[1246,6]]},"157":{"position":[[1067,6]]}},"keywords":{}}],["points_per_hour",{"_index":875,"title":{},"content":{"77":{"position":[[192,16]]}},"keywords":{}}],["poll",{"_index":749,"title":{},"content":{"55":{"position":[[275,7]]},"56":{"position":[[5,8]]},"89":{"position":[[207,5]]}},"keywords":{}}],["polling)futur",{"_index":416,"title":{},"content":{"11":{"position":[[281,14]]}},"keywords":{}}],["posit",{"_index":1027,"title":{},"content":{"115":{"position":[[131,8]]},"180":{"position":[[914,8],[1375,8]]}},"keywords":{}}],["possibl",{"_index":1234,"title":{},"content":{"150":{"position":[[369,8]]}},"keywords":{}}],["possible)very_expens",{"_index":47,"title":{},"content":{"2":{"position":[[292,23]]}},"keywords":{}}],["potenti",{"_index":934,"title":{},"content":{"91":{"position":[[127,11]]},"160":{"position":[[171,9]]}},"keywords":{}}],["practic",{"_index":130,"title":{},"content":{"5":{"position":[[306,9]]},"131":{"position":[[1443,9]]},"161":{"position":[[883,10]]}},"keywords":{}}],["precis",{"_index":946,"title":{},"content":{"96":{"position":[[27,9]]},"121":{"position":[[16,9]]}},"keywords":{}}],["predict",{"_index":1323,"title":{},"content":{"161":{"position":[[1430,10]]}},"keywords":{}}],["prefer",{"_index":1158,"title":{},"content":{"139":{"position":[[424,6]]},"160":{"position":[[377,11]]},"165":{"position":[[798,11]]}},"keywords":{}}],["prefix",{"_index":1581,"title":{},"content":{"182":{"position":[[561,6]]}},"keywords":{}}],["premium",{"_index":1543,"title":{},"content":{"180":{"position":[[740,7]]}},"keywords":{}}],["prerequisit",{"_index":295,"title":{"23":{"position":[[0,14]]},"48":{"position":[[0,14]]}},"content":{"9":{"position":[[1091,14]]}},"keywords":{}}],["preserv",{"_index":1325,"title":{},"content":{"161":{"position":[[1545,9]]}},"keywords":{}}],["prevent",{"_index":658,"title":{},"content":{"44":{"position":[[1,7]]},"94":{"position":[[82,8]]},"161":{"position":[[731,8],[1257,7]]}},"keywords":{}}],["price",{"_index":2,"title":{"1":{"position":[[0,5]]},"2":{"position":[[0,5]]},"3":{"position":[[0,5]]},"15":{"position":[[11,6]]},"22":{"position":[[5,5]]},"36":{"position":[[0,5]]},"39":{"position":[[0,5]]},"42":{"position":[[19,5]]},"43":{"position":[[34,5]]},"55":{"position":[[27,6]]},"60":{"position":[[25,5]]},"61":{"position":[[23,5]]},"65":{"position":[[5,5]]},"66":{"position":[[0,6]]},"70":{"position":[[17,6]]},"72":{"position":[[6,5]]},"75":{"position":[[0,5]]},"126":{"position":[[5,5],[25,5]]},"127":{"position":[[5,5]]},"156":{"position":[[9,5]]},"175":{"position":[[24,5]]},"180":{"position":[[9,5]]},"183":{"position":[[0,5]]}},"content":{"2":{"position":[[1,6],[89,6],[152,6],[208,6],[262,6],[337,6],[423,5]]},"3":{"position":[[6,5],[29,5],[90,5],[142,6],[189,5],[230,6]]},"4":{"position":[[87,5],[145,5],[209,5],[256,5],[340,6]]},"5":{"position":[[44,6]]},"8":{"position":[[30,5],[266,5],[320,5],[1320,6],[2002,5],[2507,6]]},"9":{"position":[[265,5],[1039,6],[1077,5],[1324,5],[1535,5],[1606,5],[2061,5],[3126,5],[3163,6],[4168,5],[4187,5],[4302,5],[4340,5],[4424,5]]},"13":{"position":[[166,6],[249,6]]},"15":{"position":[[27,5],[300,5],[339,5]]},"17":{"position":[[536,5]]},"19":{"position":[[24,5]]},"20":{"position":[[19,5],[226,5]]},"22":{"position":[[89,5],[115,5],[146,6],[180,5],[413,5]]},"30":{"position":[[170,5]]},"38":{"position":[[1,5]]},"40":{"position":[[130,5]]},"41":{"position":[[18,5],[260,5],[343,5],[390,5],[965,5],[1185,5]]},"42":{"position":[[70,5],[190,5],[1033,5]]},"43":{"position":[[58,6],[643,5],[1107,5],[1177,5],[1274,5]]},"44":{"position":[[198,6]]},"45":{"position":[[729,5],[795,5]]},"47":{"position":[[703,7]]},"52":{"position":[[13,5],[88,5]]},"55":{"position":[[12,6]]},"56":{"position":[[104,5]]},"60":{"position":[[43,5],[81,5]]},"62":{"position":[[22,5]]},"67":{"position":[[37,5]]},"70":{"position":[[15,5]]},"72":{"position":[[29,5],[98,5],[180,5],[261,5],[334,5]]},"73":{"position":[[21,5],[156,5],[274,5]]},"75":{"position":[[82,5]]},"77":{"position":[[167,6]]},"81":{"position":[[24,5],[99,5]]},"88":{"position":[[6,5],[82,7],[208,5]]},"90":{"position":[[85,5]]},"91":{"position":[[149,7]]},"92":{"position":[[54,5]]},"93":{"position":[[8,5],[103,7]]},"95":{"position":[[6,5],[57,7],[98,5]]},"97":{"position":[[21,5]]},"98":{"position":[[41,5]]},"99":{"position":[[27,5],[105,5]]},"100":{"position":[[24,5],[85,5]]},"102":{"position":[[97,5],[170,6],[265,5],[345,5],[442,5]]},"103":{"position":[[243,5],[330,5]]},"106":{"position":[[88,5],[237,5]]},"107":{"position":[[96,5]]},"108":{"position":[[85,5]]},"111":{"position":[[89,5]]},"112":{"position":[[233,5]]},"116":{"position":[[66,7]]},"119":{"position":[[122,5],[173,5]]},"120":{"position":[[181,5]]},"121":{"position":[[61,5]]},"126":{"position":[[70,5],[219,5],[282,6],[316,5],[380,6]]},"131":{"position":[[488,5],[532,5]]},"132":{"position":[[362,5],[1235,5]]},"138":{"position":[[138,5],[273,5]]},"140":{"position":[[319,5],[704,6],[743,6]]},"143":{"position":[[186,5],[473,5]]},"145":{"position":[[179,5],[467,5]]},"147":{"position":[[114,5],[248,5],[466,5],[746,5],[986,5]]},"149":{"position":[[665,5],[773,5],[1336,5],[2116,5],[2218,5]]},"152":{"position":[[159,5]]},"154":{"position":[[155,5]]},"156":{"position":[[79,6],[105,7],[119,5],[201,5]]},"157":{"position":[[40,6],[127,6],[397,5],[412,5],[543,5],[743,5],[843,5]]},"158":{"position":[[29,5],[49,7],[115,5],[139,7],[205,5],[229,7],[265,5],[285,7]]},"160":{"position":[[58,5],[226,6],[418,7]]},"161":{"position":[[49,6],[99,5],[207,6],[257,5],[378,6],[636,6],[680,6],[1090,6],[1168,5],[1201,5],[1309,7],[1527,6]]},"162":{"position":[[108,6],[247,5],[341,5]]},"164":{"position":[[82,7],[534,5],[642,7]]},"165":{"position":[[183,6],[225,6],[403,6]]},"166":{"position":[[691,5],[1293,5]]},"170":{"position":[[374,5]]},"171":{"position":[[124,7]]},"173":{"position":[[761,5]]},"175":{"position":[[283,6]]},"177":{"position":[[407,5]]},"178":{"position":[[284,5],[306,5],[440,5]]},"179":{"position":[[316,5],[693,5]]},"180":{"position":[[17,5],[64,5],[121,5],[229,6],[350,6],[441,6],[505,6],[543,6],[718,6],[940,5],[966,6],[1023,5],[1133,5],[1180,5],[1290,5],[1322,5],[1537,5],[2004,5],[2325,5],[2680,6],[3670,5],[3823,5],[3881,5],[4196,6],[4240,7],[4291,5]]},"182":{"position":[[520,6]]},"183":{"position":[[25,5]]}},"keywords":{}}],["price"",{"_index":833,"title":{},"content":{"69":{"position":[[51,11]]},"171":{"position":[[151,11]]}},"keywords":{}}],["price)api",{"_index":826,"title":{},"content":{"67":{"position":[[63,9]]}},"keywords":{}}],["price)filt",{"_index":1287,"title":{},"content":{"160":{"position":[[246,12]]}},"keywords":{}}],["price)rang",{"_index":1359,"title":{},"content":{"164":{"position":[[101,12],[667,12]]}},"keywords":{}}],["price_avg",{"_index":1511,"title":{},"content":{"179":{"position":[[290,10]]}},"keywords":{}}],["price_trend_next_3h)binari",{"_index":1162,"title":{},"content":{"140":{"position":[[503,26]]}},"keywords":{}}],["prices!consid",{"_index":813,"title":{},"content":{"65":{"position":[[94,15]]}},"keywords":{}}],["prices"",{"_index":840,"title":{},"content":{"70":{"position":[[100,12]]}},"keywords":{}}],["prices)sam",{"_index":1452,"title":{},"content":{"171":{"position":[[86,11]]}},"keywords":{}}],["pricesclick",{"_index":760,"title":{},"content":{"57":{"position":[[95,11]]},"132":{"position":[[1382,11]]}},"keywords":{}}],["pricevolatil",{"_index":1147,"title":{},"content":{"138":{"position":[[318,16]]}},"keywords":{}}],["primari",{"_index":1186,"title":{},"content":{"143":{"position":[[684,7]]},"145":{"position":[[616,7]]}},"keywords":{}}],["primarili",{"_index":260,"title":{},"content":{"9":{"position":[[161,9]]},"47":{"position":[[201,9]]}},"keywords":{}}],["problem",{"_index":1450,"title":{},"content":{"171":{"position":[[1,7]]}},"keywords":{}}],["process",{"_index":1098,"title":{"161":{"position":[[13,8]]}},"content":{"131":{"position":[[613,11]]},"173":{"position":[[181,10]]}},"keywords":{}}],["progress",{"_index":345,"title":{},"content":{"9":{"position":[[2575,13]]},"13":{"position":[[475,10],[720,11]]},"17":{"position":[[49,13],[343,11]]},"32":{"position":[[202,11]]},"51":{"position":[[478,11]]},"172":{"position":[[1088,12]]}},"keywords":{}}],["proof",{"_index":417,"title":{},"content":{"11":{"position":[[296,5]]},"139":{"position":[[252,5]]}},"keywords":{}}],["proper",{"_index":319,"title":{},"content":{"9":{"position":[[1718,6]]},"121":{"position":[[541,6]]}},"keywords":{}}],["provid",{"_index":261,"title":{},"content":{"9":{"position":[[178,9]]},"47":{"position":[[218,9]]},"58":{"position":[[152,9]]},"131":{"position":[[79,8],[229,8],[1363,8]]},"132":{"position":[[331,8]]},"140":{"position":[[14,7]]},"141":{"position":[[357,10]]},"157":{"position":[[1045,7]]},"183":{"position":[[16,8]]}},"keywords":{}}],["public",{"_index":744,"title":{},"content":{"55":{"position":[[112,12],[175,12]]}},"keywords":{}}],["publish",{"_index":738,"title":{},"content":{"55":{"position":[[23,9]]},"67":{"position":[[178,9]]}},"keywords":{}}],["pump",{"_index":684,"title":{},"content":{"45":{"position":[[109,4]]},"88":{"position":[[129,6]]},"164":{"position":[[846,4]]}},"keywords":{}}],["purpos",{"_index":136,"title":{},"content":{"8":{"position":[[1,8]]},"9":{"position":[[941,8]]},"10":{"position":[[1,8]]},"157":{"position":[[528,9]]}},"keywords":{}}],["purposebest_price_flex",{"_index":1577,"title":{},"content":{"182":{"position":[[52,22]]}},"keywords":{}}],["q",{"_index":945,"title":{"96":{"position":[[0,2]]}},"content":{},"keywords":{}}],["qualifi",{"_index":1431,"title":{},"content":{"166":{"position":[[1497,10]]}},"keywords":{}}],["qualiti",{"_index":1288,"title":{},"content":{"160":{"position":[[262,7]]},"161":{"position":[[481,7],[1046,7]]},"165":{"position":[[24,9]]},"166":{"position":[[1202,7],[1366,7]]},"182":{"position":[[216,7],[285,7]]}},"keywords":{}}],["quarter",{"_index":6,"title":{},"content":{"1":{"position":[[28,7]]},"56":{"position":[[49,7]]},"96":{"position":[[1,7]]},"121":{"position":[[1,7]]},"160":{"position":[[43,7]]}},"keywords":{}}],["queri",{"_index":707,"title":{},"content":{"45":{"position":[[1113,5]]}},"keywords":{}}],["question",{"_index":737,"title":{"53":{"position":[[23,9]]},"54":{"position":[[8,10]]},"59":{"position":[[14,10]]},"68":{"position":[[11,10]]}},"content":{},"keywords":{}}],["quick",{"_index":322,"title":{"120":{"position":[[3,5]]},"155":{"position":[[0,5]]},"182":{"position":[[0,5]]}},"content":{"9":{"position":[[1767,5]]},"13":{"position":[[173,5]]},"126":{"position":[[197,5]]},"154":{"position":[[1,5]]},"164":{"position":[[913,5]]},"170":{"position":[[588,5]]}},"keywords":{}}],["quot",{"_index":605,"title":{},"content":{"41":{"position":[[1108,10]]},"79":{"position":[[170,8],[249,8]]}},"keywords":{}}],["quot;#0000ff"",{"_index":536,"title":{},"content":{"27":{"position":[[122,19]]}},"keywords":{}}],["quot;#00c853"",{"_index":1214,"title":{},"content":{"149":{"position":[[261,19]]}},"keywords":{}}],["quot;#00ff00"",{"_index":534,"title":{},"content":{"27":{"position":[[70,19]]}},"keywords":{}}],["quot;#0288d1"",{"_index":1217,"title":{},"content":{"149":{"position":[[405,19]]}},"keywords":{}}],["quot;#d32f2f"",{"_index":1215,"title":{},"content":{"149":{"position":[[309,19]]}},"keywords":{}}],["quot;#f57c00"",{"_index":1216,"title":{},"content":{"149":{"position":[[357,19]]}},"keywords":{}}],["quot;#ff0000"",{"_index":537,"title":{},"content":{"27":{"position":[[166,19]]}},"keywords":{}}],["quot;2025",{"_index":185,"title":{},"content":{"8":{"position":[[818,10],[920,10]]},"179":{"position":[[127,10],[190,10]]}},"keywords":{}}],["quot;20:00:00"",{"_index":834,"title":{},"content":{"69":{"position":[[200,20]]}},"keywords":{}}],["quot;add",{"_index":756,"title":{},"content":{"57":{"position":[[14,9],[131,9]]}},"keywords":{}}],["quot;apexchart",{"_index":526,"title":{},"content":{"24":{"position":[[89,16]]},"49":{"position":[[32,16]]}},"keywords":{}}],["quot;best",{"_index":382,"title":{},"content":{"9":{"position":[[4329,10]]},"22":{"position":[[402,10]]},"88":{"position":[[197,10]]},"171":{"position":[[140,10]]}},"keywords":{}}],["quot;best"",{"_index":1306,"title":{},"content":{"161":{"position":[[766,16]]}},"keywords":{}}],["quot;charg",{"_index":640,"title":{},"content":{"43":{"position":[[141,12]]}},"keywords":{}}],["quot;cheap",{"_index":633,"title":{},"content":{"42":{"position":[[1008,11]]},"61":{"position":[[125,11]]}},"keywords":{}}],["quot;cheap"",{"_index":234,"title":{},"content":{"8":{"position":[[2411,18]]},"19":{"position":[[96,17]]},"41":{"position":[[80,17]]},"94":{"position":[[101,17]]}},"keywords":{}}],["quot;config",{"_index":529,"title":{},"content":{"25":{"position":[[97,12]]},"49":{"position":[[93,12]]}},"keywords":{}}],["quot;configure"",{"_index":761,"title":{},"content":{"57":{"position":[[107,21]]}},"keywords":{}}],["quot;data"",{"_index":183,"title":{},"content":{"8":{"position":[[772,17]]}},"keywords":{}}],["quot;dis",{"_index":839,"title":{},"content":{"70":{"position":[[65,13]]}},"keywords":{}}],["quot;dishwash",{"_index":576,"title":{},"content":{"41":{"position":[[236,16],[928,16]]},"69":{"position":[[22,16]]},"180":{"position":[[2301,16]]}},"keywords":{}}],["quot;don't",{"_index":1400,"title":{},"content":{"165":{"position":[[1119,11]]}},"keywords":{}}],["quot;eur"",{"_index":1107,"title":{},"content":{"131":{"position":[[962,16]]}},"keywords":{}}],["quot;ev",{"_index":637,"title":{},"content":{"43":{"position":[[87,8]]},"180":{"position":[[3170,8]]}},"keywords":{}}],["quot;expensive"",{"_index":479,"title":{},"content":{"19":{"position":[[179,21]]},"41":{"position":[[102,21]]}},"keywords":{}}],["quot;finished"",{"_index":677,"title":{},"content":{"44":{"position":[[989,20]]}},"keywords":{}}],["quot;heat",{"_index":617,"title":{},"content":{"42":{"position":[[168,10]]},"45":{"position":[[98,10]]},"180":{"position":[[2732,10]]}},"keywords":{}}],["quot;i",{"_index":1570,"title":{},"content":{"180":{"position":[[4007,8]]}},"keywords":{}}],["quot;idle"",{"_index":668,"title":{},"content":{"44":{"position":[[451,16]]}},"keywords":{}}],["quot;level"",{"_index":327,"title":{},"content":{"9":{"position":[[1977,17]]},"50":{"position":[[211,17]]}},"keywords":{}}],["quot;low"",{"_index":237,"title":{},"content":{"8":{"position":[[2472,17]]},"179":{"position":[[350,15]]}},"keywords":{}}],["quot;mediocre"",{"_index":1395,"title":{},"content":{"165":{"position":[[907,20]]},"166":{"position":[[1081,20]]},"179":{"position":[[762,20]]}},"keywords":{}}],["quot;nok")resolut",{"_index":1108,"title":{},"content":{"131":{"position":[[979,27]]}},"keywords":{}}],["quot;normal"",{"_index":798,"title":{},"content":{"62":{"position":[[262,19]]}},"keywords":{}}],["quot;off"",{"_index":596,"title":{},"content":{"41":{"position":[[786,15]]},"44":{"position":[[1497,15]]}},"keywords":{}}],["quot;on"",{"_index":586,"title":{},"content":{"41":{"position":[[500,14]]},"42":{"position":[[353,14]]},"43":{"position":[[278,14]]},"44":{"position":[[319,14],[1141,14],[1515,14],[1554,14],[1571,14]]},"45":{"position":[[222,14]]},"69":{"position":[[149,14]]},"70":{"position":[[199,14]]},"175":{"position":[[506,14]]},"177":{"position":[[66,14]]},"179":{"position":[[88,14]]},"180":{"position":[[2446,14],[2856,14],[3299,14]]}},"keywords":{}}],["quot;on"/"off"",{"_index":955,"title":{},"content":{"98":{"position":[[58,30]]}},"keywords":{}}],["quot;onli",{"_index":1311,"title":{},"content":{"161":{"position":[[1071,10]]},"165":{"position":[[377,10]]}},"keywords":{}}],["quot;price_diff_18.0%+level_any"",{"_index":1514,"title":{},"content":{"179":{"position":[[527,38]]}},"keywords":{}}],["quot;price_per_kwh"",{"_index":188,"title":{},"content":{"8":{"position":[[857,26],[959,26]]}},"keywords":{}}],["quot;sensor.tibber_*_price"",{"_index":908,"title":{},"content":{"81":{"position":[[143,33]]}},"keywords":{}}],["quot;start",{"_index":578,"title":{},"content":{"41":{"position":[[308,11]]},"44":{"position":[[158,11]]}},"keywords":{}}],["quot;start_time"",{"_index":184,"title":{},"content":{"8":{"position":[[794,23],[896,23]]}},"keywords":{}}],["quot;today"",{"_index":176,"title":{},"content":{"8":{"position":[[646,19],[1141,19],[2166,19]]},"132":{"position":[[2281,19]]}},"keywords":{}}],["quot;tomorrow"",{"_index":177,"title":{},"content":{"8":{"position":[[666,21],[1161,21],[2186,21]]},"50":{"position":[[160,20]]},"132":{"position":[[2301,21]]}},"keywords":{}}],["quot;very_cheap"",{"_index":233,"title":{},"content":{"8":{"position":[[2386,24]]}},"keywords":{}}],["quot;wash",{"_index":662,"title":{},"content":{"44":{"position":[[100,13],[873,13],[1304,13]]}},"keywords":{}}],["quot;wat",{"_index":614,"title":{},"content":{"42":{"position":[[115,11]]}},"keywords":{}}],["quot;yesterday"",{"_index":715,"title":{},"content":{"50":{"position":[[137,22]]}},"keywords":{}}],["quot;zoom",{"_index":468,"title":{},"content":{"17":{"position":[[860,13]]}},"keywords":{}}],["r",{"_index":948,"title":{"97":{"position":[[0,2]]}},"content":{},"keywords":{}}],["rais",{"_index":1447,"title":{},"content":{"170":{"position":[[607,5]]}},"keywords":{}}],["rang",{"_index":149,"title":{},"content":{"8":{"position":[[180,5]]},"9":{"position":[[4174,6]]},"16":{"position":[[735,5]]},"20":{"position":[[25,6]]},"21":{"position":[[437,5]]},"51":{"position":[[983,6]]},"160":{"position":[[105,6]]},"161":{"position":[[22,5]]},"178":{"position":[[290,5]]},"180":{"position":[[946,6],[1016,6],[1029,6],[1173,6],[1186,6],[1440,5],[1484,5]]},"182":{"position":[[46,5],[93,5]]}},"keywords":{}}],["rangeno",{"_index":356,"title":{},"content":{"9":{"position":[[2947,7]]}},"keywords":{}}],["rare",{"_index":1297,"title":{},"content":{"161":{"position":[[385,6]]},"164":{"position":[[423,6]]}},"keywords":{}}],["rate",{"_index":25,"title":{"2":{"position":[[6,8]]},"19":{"position":[[0,6]]},"129":{"position":[[0,6]]}},"content":{"2":{"position":[[42,6],[365,6]]},"3":{"position":[[383,6]]},"8":{"position":[[2501,5]]},"9":{"position":[[1394,6]]},"42":{"position":[[1054,5]]},"60":{"position":[[214,7]]},"62":{"position":[[239,6]]},"72":{"position":[[267,6]]},"97":{"position":[[1,7]]},"102":{"position":[[205,6]]},"103":{"position":[[392,6]]},"106":{"position":[[165,6]]},"111":{"position":[[95,6]]},"121":{"position":[[145,7]]},"140":{"position":[[381,6]]},"147":{"position":[[472,6]]},"149":{"position":[[2122,6],[2224,6],[2283,6],[2309,7],[2363,7],[2419,7]]},"152":{"position":[[176,7]]},"179":{"position":[[391,6]]}},"keywords":{}}],["rating_level",{"_index":326,"title":{},"content":{"9":{"position":[[1959,12],[3281,12],[3998,12]]},"15":{"position":[[214,12]]},"16":{"position":[[289,12]]},"17":{"position":[[269,12]]},"50":{"position":[[193,12]]},"51":{"position":[[213,12],[633,12]]},"179":{"position":[[336,13]]}},"keywords":{}}],["rating_level_filt",{"_index":236,"title":{},"content":{"8":{"position":[[2451,20]]}},"keywords":{}}],["ratingperiod",{"_index":156,"title":{},"content":{"8":{"position":[[281,12]]}},"keywords":{}}],["re",{"_index":925,"title":{},"content":{"89":{"position":[[68,3]]},"121":{"position":[[565,4],[570,4]]}},"keywords":{}}],["re/kwh",{"_index":823,"title":{},"content":{"66":{"position":[[105,7]]}},"keywords":{}}],["reach",{"_index":1483,"title":{},"content":{"173":{"position":[[205,8],[290,5]]}},"keywords":{}}],["read",{"_index":24,"title":{},"content":{"1":{"position":[[212,8]]},"149":{"position":[[588,4]]}},"keywords":{}}],["readi",{"_index":1058,"title":{},"content":{"119":{"position":[[545,5]]},"131":{"position":[[691,5]]},"132":{"position":[[787,5]]}},"keywords":{}}],["real",{"_index":432,"title":{},"content":{"13":{"position":[[486,4]]},"17":{"position":[[14,4],[526,4]]},"161":{"position":[[1573,4]]},"178":{"position":[[435,4]]},"181":{"position":[[90,4]]}},"keywords":{}}],["realist",{"_index":1301,"title":{},"content":{"161":{"position":[[446,9]]}},"keywords":{}}],["realiti",{"_index":1574,"title":{},"content":{"180":{"position":[[4178,8]]}},"keywords":{}}],["realli",{"_index":1424,"title":{},"content":{"166":{"position":[[1107,6]]},"171":{"position":[[183,6]]}},"keywords":{}}],["recip",{"_index":837,"title":{},"content":{"69":{"position":[[351,8]]}},"keywords":{}}],["recipestroubleshoot",{"_index":1059,"title":{},"content":{"119":{"position":[[569,22]]}},"keywords":{}}],["recommend",{"_index":781,"title":{"83":{"position":[[18,14]]},"143":{"position":[[29,14]]}},"content":{"61":{"position":[[75,11]]},"150":{"position":[[10,11],[329,15]]},"164":{"position":[[438,15]]}},"keywords":{}}],["recommended)increas",{"_index":795,"title":{},"content":{"62":{"position":[[167,21]]}},"keywords":{}}],["red",{"_index":478,"title":{},"content":{"19":{"position":[[161,6]]},"20":{"position":[[190,6]]},"52":{"position":[[67,3]]},"79":{"position":[[422,3]]},"112":{"position":[[583,3]]},"140":{"position":[[750,4]]},"148":{"position":[[243,3]]},"149":{"position":[[338,3],[1150,3],[2045,3],[2465,3]]}},"keywords":{}}],["reduc",{"_index":45,"title":{},"content":{"2":{"position":[[269,7]]},"56":{"position":[[137,8]]},"156":{"position":[[228,6]]},"177":{"position":[[504,6],[572,6]]}},"keywords":{}}],["refer",{"_index":394,"title":{"182":{"position":[[6,10]]},"183":{"position":[[13,10]]}},"content":{"9":{"position":[[4890,5]]},"117":{"position":[[62,9]]},"152":{"position":[[9,9]]}},"keywords":{}}],["reflect",{"_index":972,"title":{},"content":{"102":{"position":[[67,7]]}},"keywords":{}}],["refresh",{"_index":399,"title":{},"content":{"10":{"position":[[30,7]]},"55":{"position":[[258,7]]},"131":{"position":[[517,9]]},"132":{"position":[[603,9]]}},"keywords":{}}],["regardless",{"_index":619,"title":{},"content":{"42":{"position":[[225,10]]}},"keywords":{}}],["region",{"_index":115,"title":{},"content":{"5":{"position":[[126,7]]}},"keywords":{}}],["regular",{"_index":42,"title":{},"content":{"2":{"position":[[215,8]]}},"keywords":{}}],["rel",{"_index":611,"title":{},"content":{"42":{"position":[[23,8]]},"180":{"position":[[1366,8]]}},"keywords":{}}],["relat",{"_index":913,"title":{},"content":{"81":{"position":[[248,8]]}},"keywords":{}}],["relax",{"_index":794,"title":{"168":{"position":[[14,11]]},"169":{"position":[[8,12]]},"171":{"position":[[4,10]]}},"content":{"62":{"position":[[156,10]]},"97":{"position":[[137,11]]},"126":{"position":[[480,10]]},"164":{"position":[[483,10],[1441,10]]},"166":{"position":[[96,10],[312,10],[994,10],[1531,10]]},"167":{"position":[[56,10],[174,10],[344,10]]},"169":{"position":[[59,10]]},"170":{"position":[[204,10]]},"171":{"position":[[253,11]]},"172":{"position":[[1,10],[82,10]]},"173":{"position":[[161,10],[530,7],[607,10],[666,7],[736,10],[869,11]]},"177":{"position":[[110,10],[345,10]]},"179":{"position":[[400,10],[498,10]]},"182":{"position":[[392,10]]}},"keywords":{}}],["relaxation_act",{"_index":1499,"title":{},"content":{"177":{"position":[[304,17]]},"179":{"position":[[456,18]]}},"keywords":{}}],["relaxation_attempts_best",{"_index":1410,"title":{},"content":{"166":{"position":[[246,25]]},"170":{"position":[[92,25]]},"182":{"position":[[450,24]]}},"keywords":{}}],["relaxation_attempts_peak",{"_index":1442,"title":{},"content":{"170":{"position":[[326,24]]}},"keywords":{}}],["relaxation_level",{"_index":1513,"title":{},"content":{"179":{"position":[[509,17]]}},"keywords":{}}],["relaxation_levelif",{"_index":1500,"title":{},"content":{"177":{"position":[[326,18]]}},"keywords":{}}],["relaxationcommon",{"_index":1248,"title":{},"content":{"154":{"position":[[57,16]]}},"keywords":{}}],["relev",{"_index":471,"title":{},"content":{"17":{"position":[[915,8]]},"179":{"position":[[636,10]]}},"keywords":{}}],["reli",{"_index":610,"title":{},"content":{"42":{"position":[[12,7]]}},"keywords":{}}],["reliabl",{"_index":1468,"title":{},"content":{"172":{"position":[[453,13]]}},"keywords":{}}],["remain",{"_index":348,"title":{},"content":{"9":{"position":[[2604,9]]},"13":{"position":[[505,9]]},"17":{"position":[[33,9],[483,9],[924,9]]},"51":{"position":[[865,9]]}},"keywords":{}}],["remov",{"_index":1011,"title":{},"content":{"112":{"position":[[503,6]]},"179":{"position":[[600,7]]}},"keywords":{}}],["renam",{"_index":165,"title":{},"content":{"8":{"position":[[451,6]]}},"keywords":{}}],["renew",{"_index":1537,"title":{},"content":{"180":{"position":[[612,9]]}},"keywords":{}}],["replac",{"_index":1322,"title":{},"content":{"161":{"position":[[1410,8]]}},"keywords":{}}],["repository)add",{"_index":1060,"title":{},"content":{"120":{"position":[[33,14]]}},"keywords":{}}],["repositoryissu",{"_index":1080,"title":{},"content":{"122":{"position":[[8,15]]}},"keywords":{}}],["repres",{"_index":434,"title":{},"content":{"13":{"position":[[601,14]]},"32":{"position":[[23,14]]}},"keywords":{}}],["reproduc",{"_index":1140,"title":{},"content":{"136":{"position":[[106,9]]}},"keywords":{}}],["requir",{"_index":197,"title":{"24":{"position":[[0,8]]},"25":{"position":[[0,8]]}},"content":{"8":{"position":[[1080,10]]},"9":{"position":[[525,7],[1123,9],[1177,9],[4514,8]]},"11":{"position":[[160,8]]},"21":{"position":[[445,13],[826,7]]},"47":{"position":[[336,7]]},"48":{"position":[[1,9]]},"51":{"position":[[923,7]]},"58":{"position":[[116,8]]},"94":{"position":[[25,9]]},"132":{"position":[[1026,7]]},"141":{"position":[[491,8]]},"161":{"position":[[1027,8]]},"166":{"position":[[1374,13]]},"177":{"position":[[525,11]]}},"keywords":{}}],["resolut",{"_index":201,"title":{},"content":{"8":{"position":[[1250,10]]}},"keywords":{}}],["respons",{"_index":182,"title":{},"content":{"8":{"position":[[752,8]]},"9":{"position":[[4811,8]]}},"keywords":{}}],["response_vari",{"_index":180,"title":{},"content":{"8":{"position":[[720,18],[1688,18],[2255,18]]},"9":{"position":[[2083,18],[3294,18],[3645,18]]},"50":{"position":[[246,18]]},"51":{"position":[[226,18],[646,18]]},"132":{"position":[[2355,18]]}},"keywords":{}}],["responsest",{"_index":1100,"title":{},"content":{"131":{"position":[[634,13]]}},"keywords":{}}],["restart",{"_index":411,"title":{},"content":{"11":{"position":[[152,7]]},"64":{"position":[[179,7]]},"132":{"position":[[1037,7],[1569,7]]}},"keywords":{}}],["restrict",{"_index":1433,"title":{},"content":{"167":{"position":[[146,11]]}},"keywords":{}}],["result",{"_index":1113,"title":{},"content":{"131":{"position":[[1315,6]]},"161":{"position":[[1441,7]]},"164":{"position":[[1393,8]]},"167":{"position":[[315,7]]}},"keywords":{}}],["return",{"_index":137,"title":{},"content":{"8":{"position":[[10,7],[303,6],[1313,6],[1786,7],[1844,7]]},"75":{"position":[[176,6],[264,6],[355,6],[444,6],[536,6],[596,6]]},"112":{"position":[[343,6]]},"132":{"position":[[1948,6]]},"141":{"position":[[623,6],[692,6],[916,6],[1006,6],[1039,6]]},"143":{"position":[[259,6],[546,6],[638,6]]},"147":{"position":[[306,6],[525,6],[826,6],[1068,6],[1328,6],[1538,6]]},"149":{"position":[[902,6],[959,6],[1016,6],[1069,6],[1129,6],[1154,6],[1454,6],[1538,6],[1853,6],[1911,6],[1964,6],[2024,6],[2049,6],[2328,6],[2385,6],[2439,6],[2469,6]]}},"keywords":{}}],["review",{"_index":776,"title":{},"content":{"60":{"position":[[262,6]]}},"keywords":{}}],["rgba",{"_index":1173,"title":{},"content":{"141":{"position":[[284,4]]}},"keywords":{}}],["rgba(244",{"_index":1180,"title":{},"content":{"141":{"position":[[699,10],[1013,10]]}},"keywords":{}}],["rgba(76",{"_index":1177,"title":{},"content":{"141":{"position":[[630,9],[923,9]]},"149":{"position":[[1569,9]]}},"keywords":{}}],["rich",{"_index":1090,"title":{},"content":{"126":{"position":[[432,4]]}},"keywords":{}}],["right",{"_index":1412,"title":{},"content":{"166":{"position":[[347,5]]}},"keywords":{}}],["risk",{"_index":1542,"title":{},"content":{"180":{"position":[[735,4]]}},"keywords":{}}],["robust",{"_index":635,"title":{},"content":{"43":{"position":[[6,6]]}},"keywords":{}}],["roll",{"_index":212,"title":{"16":{"position":[[3,7]]},"17":{"position":[[3,7]]},"25":{"position":[[13,7]]},"51":{"position":[[9,7]]}},"content":{"8":{"position":[[1423,7],[1493,7],[1641,7]]},"9":{"position":[[1196,7],[1444,7],[2471,7],[2533,7],[2758,8],[2783,7],[3409,7],[3534,7],[4527,7]]},"13":{"position":[[290,7],[416,7],[640,7],[687,7]]},"16":{"position":[[262,7]]},"17":{"position":[[659,7]]},"21":{"position":[[1,7],[715,7]]},"32":{"position":[[88,7],[159,7]]},"48":{"position":[[62,7]]},"49":{"position":[[150,7]]},"51":{"position":[[706,7],[902,7]]},"131":{"position":[[361,7]]}},"keywords":{}}],["rolling_window",{"_index":323,"title":{},"content":{"9":{"position":[[1907,15],[2275,16],[3557,17],[3936,15]]},"51":{"position":[[148,14]]},"131":{"position":[[1207,14]]}},"keywords":{}}],["rolling_window_autozoom",{"_index":324,"title":{},"content":{"9":{"position":[[1923,23],[2498,26],[3952,23]]},"17":{"position":[[233,23]]},"51":{"position":[[597,23]]},"131":{"position":[[1226,23]]}},"keywords":{}}],["round_decim",{"_index":205,"title":{},"content":{"8":{"position":[[1362,14]]}},"keywords":{}}],["row",{"_index":1189,"title":{},"content":{"144":{"position":[[206,4]]}},"keywords":{}}],["rowchang",{"_index":986,"title":{},"content":{"103":{"position":[[212,9]]}},"keywords":{}}],["run",{"_index":571,"title":{"69":{"position":[[9,3]]}},"content":{"41":{"position":[[165,4]]},"42":{"position":[[406,3]]},"65":{"position":[[188,3]]},"156":{"position":[[146,3]]},"157":{"position":[[691,7]]},"173":{"position":[[437,4]]},"175":{"position":[[42,3]]}},"keywords":{}}],["s",{"_index":954,"title":{"98":{"position":[[0,2]]}},"content":{},"keywords":{}}],["safe",{"_index":1416,"title":{},"content":{"166":{"position":[[643,4]]}},"keywords":{}}],["same",{"_index":343,"title":{},"content":{"9":{"position":[[2525,4]]},"11":{"position":[[478,4]]},"15":{"position":[[606,4]]},"17":{"position":[[650,5]]},"32":{"position":[[283,5]]},"51":{"position":[[177,4],[685,4]]},"143":{"position":[[366,4]]},"172":{"position":[[897,4]]},"182":{"position":[[527,4],[590,4]]}},"keywords":{}}],["satisfi",{"_index":427,"title":{},"content":{"11":{"position":[[542,9]]},"164":{"position":[[1275,10]]}},"keywords":{}}],["save",{"_index":573,"title":{},"content":{"41":{"position":[[190,7],[572,8],[1199,4],[1255,7]]},"45":{"position":[[1154,6]]},"114":{"position":[[366,4]]}},"keywords":{}}],["scale",{"_index":301,"title":{"21":{"position":[[15,8]]}},"content":{"9":{"position":[[1242,8],[1435,8],[2437,7],[2700,7],[2750,7]]},"13":{"position":[[678,8]]},"16":{"position":[[378,7]]},"17":{"position":[[415,7]]},"21":{"position":[[616,7],[704,7],[808,7]]},"32":{"position":[[136,7]]},"121":{"position":[[398,7]]},"131":{"position":[[321,7],[1196,7]]}},"keywords":{}}],["scaling)curr",{"_index":1106,"title":{},"content":{"131":{"position":[[923,17]]}},"keywords":{}}],["scaling)yaxis_max",{"_index":1105,"title":{},"content":{"131":{"position":[[860,18]]}},"keywords":{}}],["scalingperiod",{"_index":553,"title":{},"content":{"30":{"position":[[122,13]]}},"keywords":{}}],["scalingr",{"_index":361,"title":{},"content":{"9":{"position":[[3081,11]]}},"keywords":{}}],["scenario",{"_index":1279,"title":{"174":{"position":[[7,10]]},"175":{"position":[[0,8]]}},"content":{"157":{"position":[[1086,10]]}},"keywords":{}}],["scenariostroubleshoot",{"_index":1249,"title":{},"content":{"154":{"position":[[74,24]]}},"keywords":{}}],["schedul",{"_index":71,"title":{},"content":{"3":{"position":[[154,10]]},"88":{"position":[[100,10]]}},"keywords":{}}],["scheme",{"_index":1155,"title":{},"content":{"139":{"position":[[237,7]]},"148":{"position":[[451,8]]}},"keywords":{}}],["scope",{"_index":284,"title":{},"content":{"9":{"position":[[693,5]]}},"keywords":{}}],["screenshot",{"_index":374,"title":{"31":{"position":[[0,12]]}},"content":{"9":{"position":[[3864,12],[3878,11]]},"13":{"position":[[554,11]]},"15":{"position":[[256,11]]},"16":{"position":[[331,11]]},"17":{"position":[[311,11]]}},"keywords":{}}],["screenshotsautom",{"_index":1057,"title":{},"content":{"119":{"position":[[512,21]]}},"keywords":{}}],["script",{"_index":1065,"title":{},"content":{"120":{"position":[[290,8]]}},"keywords":{}}],["search",{"_index":525,"title":{},"content":{"24":{"position":[[82,6]]},"25":{"position":[[90,6]]},"49":{"position":[[82,6]]},"161":{"position":[[15,6],[160,6],[319,6]]},"164":{"position":[[45,6]]},"172":{"position":[[342,6]]},"182":{"position":[[86,6]]}},"keywords":{}}],["season",{"_index":1557,"title":{},"content":{"180":{"position":[[1682,7]]}},"keywords":{}}],["section",{"_index":1159,"title":{},"content":{"140":{"position":[[272,7]]}},"keywords":{}}],["see",{"_index":82,"title":{"55":{"position":[[12,3]]},"117":{"position":[[0,3]]},"152":{"position":[[0,3]]}},"content":{"3":{"position":[[399,3]]},"22":{"position":[[358,4]]},"61":{"position":[[230,3]]},"69":{"position":[[318,3]]},"78":{"position":[[109,3]]},"79":{"position":[[428,3]]},"90":{"position":[[99,3]]},"100":{"position":[[136,3]]},"103":{"position":[[4,3]]},"112":{"position":[[56,3]]},"116":{"position":[[250,3],[475,4]]},"121":{"position":[[406,4]]},"123":{"position":[[164,3]]},"126":{"position":[[84,3]]},"131":{"position":[[1410,3]]},"132":{"position":[[1614,3]]},"139":{"position":[[445,4]]},"140":{"position":[[71,3]]},"151":{"position":[[358,3]]},"181":{"position":[[62,4]]}},"keywords":{}}],["seem",{"_index":1423,"title":{},"content":{"166":{"position":[[1076,4]]}},"keywords":{}}],["segment",{"_index":239,"title":{},"content":{"8":{"position":[[2528,8],[2552,7]]},"9":{"position":[[288,9],[1757,8]]},"47":{"position":[[257,10]]}},"keywords":{}}],["sek",{"_index":1077,"title":{},"content":{"121":{"position":[[532,3]]}},"keywords":{}}],["select",{"_index":150,"title":{},"content":{"8":{"position":[[186,10],[1957,10],[2685,6]]},"16":{"position":[[428,10]]},"166":{"position":[[697,9],[914,9]]}},"keywords":{}}],["semi",{"_index":726,"title":{},"content":{"52":{"position":[[114,5]]}},"keywords":{}}],["sensibl",{"_index":1441,"title":{},"content":{"170":{"position":[[242,8]]}},"keywords":{}}],["sensit",{"_index":774,"title":{},"content":{"60":{"position":[[204,9]]}},"keywords":{}}],["sensor",{"_index":118,"title":{"11":{"position":[[33,7]]},"64":{"position":[[0,7]]},"103":{"position":[[18,6]]},"114":{"position":[[7,8]]},"124":{"position":[[0,7]]},"125":{"position":[[7,8]]},"127":{"position":[[11,8]]},"128":{"position":[[12,8]]},"129":{"position":[[7,8]]},"130":{"position":[[11,8]]},"140":{"position":[[6,7]]},"179":{"position":[[14,6]]}},"content":{"5":{"position":[[165,7],[273,6]]},"9":{"position":[[1498,6],[2464,6],[2727,6],[2861,6],[3001,6],[3040,6]]},"11":{"position":[[64,7],[360,6],[530,6]]},"16":{"position":[[405,7]]},"17":{"position":[[442,7]]},"21":{"position":[[82,6],[140,6],[296,6],[597,6],[670,6],[847,7]]},"30":{"position":[[87,7]]},"55":{"position":[[125,7]]},"57":{"position":[[219,7]]},"70":{"position":[[35,7]]},"81":{"position":[[30,8],[105,7]]},"87":{"position":[[128,6]]},"88":{"position":[[157,7],[165,6]]},"90":{"position":[[43,6]]},"98":{"position":[[27,6],[100,9]]},"100":{"position":[[198,7]]},"102":{"position":[[38,7],[109,7],[212,7],[301,7],[367,7]]},"103":{"position":[[21,6],[109,6],[296,6],[342,7],[399,7],[455,7],[494,7]]},"105":{"position":[[356,6]]},"114":{"position":[[8,7]]},"115":{"position":[[1,7]]},"116":{"position":[[34,6],[141,6],[516,6]]},"119":{"position":[[236,8]]},"120":{"position":[[250,7]]},"121":{"position":[[435,6]]},"126":{"position":[[14,7],[416,7]]},"131":{"position":[[72,6],[222,6],[278,6],[1170,6],[1356,6]]},"132":{"position":[[129,6],[324,6],[702,6],[1063,6],[1839,6],[2029,7],[2088,8]]},"138":{"position":[[150,8],[230,8]]},"139":{"position":[[395,6]]},"140":{"position":[[6,7],[80,6],[172,6],[288,6],[331,7],[388,7],[444,7],[488,7],[530,7],[589,7]]},"146":{"position":[[18,7]]},"147":{"position":[[46,7],[604,7]]},"149":{"position":[[597,6],[1240,6]]},"152":{"position":[[1,7],[93,7]]},"165":{"position":[[691,6],[783,6]]},"167":{"position":[[455,6]]},"170":{"position":[[628,6]]},"177":{"position":[[285,6]]},"180":{"position":[[1728,7],[3140,8],[3636,6],[4273,8]]}},"keywords":{}}],["sensor'",{"_index":1130,"title":{},"content":{"132":{"position":[[1308,8]]},"138":{"position":[[108,8]]},"140":{"position":[[679,8]]}},"keywords":{}}],["sensor.ev_battery_level",{"_index":644,"title":{},"content":{"43":{"position":[[364,23]]}},"keywords":{}}],["sensor.tibber_home_best_price_start_tim",{"_index":877,"title":{},"content":{"77":{"position":[[246,40]]}},"keywords":{}}],["sensor.tibber_home_chart_data_export",{"_index":407,"title":{},"content":{"11":{"position":[[27,36]]},"132":{"position":[[1893,36],[2145,36]]}},"keywords":{}}],["sensor.tibber_home_chart_metadata",{"_index":373,"title":{},"content":{"9":{"position":[[3772,33]]},"21":{"position":[[466,33]]}},"keywords":{}}],["sensor.tibber_home_current_interval_level",{"_index":853,"title":{},"content":{"75":{"position":[[34,41]]}},"keywords":{}}],["sensor.tibber_home_current_interval_pric",{"_index":548,"title":{},"content":{"29":{"position":[[105,41]]},"72":{"position":[[124,41]]},"77":{"position":[[111,41]]},"78":{"position":[[234,41]]},"79":{"position":[[116,41]]},"80":{"position":[[138,41]]}},"keywords":{}}],["sensor.tibber_home_current_interval_price_ct",{"_index":621,"title":{},"content":{"42":{"position":[[466,44]]},"43":{"position":[[706,44]]},"180":{"position":[[2920,44]]}},"keywords":{}}],["sensor.tibber_home_current_interval_price_level",{"_index":994,"title":{},"content":{"105":{"position":[[104,47]]},"106":{"position":[[34,47]]},"107":{"position":[[34,47]]},"110":{"position":[[36,47]]},"112":{"position":[[171,47]]},"143":{"position":[[124,47],[411,47]]},"144":{"position":[[122,47]]},"145":{"position":[[413,47]]},"146":{"position":[[81,47]]},"147":{"position":[[194,47]]},"149":{"position":[[711,47]]}},"keywords":{}}],["sensor.tibber_home_current_interval_price_level)look",{"_index":985,"title":{},"content":{"103":{"position":[[123,52]]},"140":{"position":[[186,52]]}},"keywords":{}}],["sensor.tibber_home_current_interval_price_r",{"_index":995,"title":{},"content":{"105":{"position":[[162,48]]},"106":{"position":[[110,48]]},"111":{"position":[[34,48]]},"147":{"position":[[411,48]]},"149":{"position":[[2163,48]]}},"keywords":{}}],["sensor.tibber_home_current_interval_r",{"_index":845,"title":{},"content":{"72":{"position":[[212,42]]},"78":{"position":[[278,42]]}},"keywords":{}}],["sensor.tibber_home_daily_avg_today",{"_index":885,"title":{},"content":{"78":{"position":[[398,34]]}},"keywords":{}}],["sensor.tibber_home_daily_max_today",{"_index":887,"title":{},"content":{"78":{"position":[[472,34]]}},"keywords":{}}],["sensor.tibber_home_daily_min_today",{"_index":886,"title":{},"content":{"78":{"position":[[435,34]]}},"keywords":{}}],["sensor.tibber_home_name_chart_data_exportdefault",{"_index":1114,"title":{},"content":{"132":{"position":[[12,48]]}},"keywords":{}}],["sensor.tibber_home_name_chart_metadata",{"_index":1092,"title":{},"content":{"131":{"position":[[12,38]]}},"keywords":{}}],["sensor.tibber_home_next_interval_pric",{"_index":846,"title":{},"content":{"72":{"position":[[284,38]]}},"keywords":{}}],["sensor.tibber_home_price_trend_next_3h",{"_index":1200,"title":{},"content":{"147":{"position":[[1433,38]]}},"keywords":{}}],["sensor.tibber_home_tomorrow_data",{"_index":372,"title":{},"content":{"9":{"position":[[3737,32]]}},"keywords":{}}],["sensor.tibber_home_volatility_today",{"_index":590,"title":{},"content":{"41":{"position":[[619,35]]},"43":{"position":[[568,35]]},"44":{"position":[[537,35]]},"105":{"position":[[221,35]]},"108":{"position":[[43,35]]},"146":{"position":[[139,35]]},"147":{"position":[[1229,35]]},"149":{"position":[[1689,35]]},"180":{"position":[[1835,36],[2510,35]]}},"keywords":{}}],["sensor.tibber_home_volatility_tomorrow",{"_index":1558,"title":{},"content":{"180":{"position":[[1894,39]]}},"keywords":{}}],["sensor.washing_machine_st",{"_index":667,"title":{},"content":{"44":{"position":[[415,28],[956,28]]}},"keywords":{}}],["sensor.water_heater_temperatur",{"_index":623,"title":{},"content":{"42":{"position":[[595,31]]}},"keywords":{}}],["sensorsautom",{"_index":1047,"title":{},"content":{"117":{"position":[[101,17]]},"152":{"position":[[48,17]]}},"keywords":{}}],["sensorstempl",{"_index":708,"title":{},"content":{"45":{"position":[[1128,15]]}},"keywords":{}}],["separ",{"_index":302,"title":{},"content":{"9":{"position":[[1299,8]]},"44":{"position":[[811,8]]},"45":{"position":[[1119,8]]},"57":{"position":[[210,8]]},"165":{"position":[[673,8],[750,10]]}},"keywords":{}}],["seri",{"_index":269,"title":{"19":{"position":[[16,8]]},"20":{"position":[[9,8]]}},"content":{"9":{"position":[[345,7],[1291,7],[1308,6],[4024,6],[4095,6]]},"132":{"position":[[1875,7]]}},"keywords":{}}],["serv",{"_index":1263,"title":{},"content":{"157":{"position":[[512,5]]}},"keywords":{}}],["servic",{"_index":133,"title":{"6":{"position":[[8,10]]}},"content":{"8":{"position":[[574,8],[1557,8],[2052,8],[2305,8],[2809,9]]},"9":{"position":[[385,7],[1783,8],[3185,8],[3444,8]]},"10":{"position":[[106,8]]},"15":{"position":[[118,8]]},"16":{"position":[[172,8]]},"17":{"position":[[155,8]]},"41":{"position":[[812,8],[886,8]]},"42":{"position":[[673,8],[775,8]]},"43":{"position":[[771,8],[834,8]]},"44":{"position":[[593,8],[716,8],[1166,8],[1262,8]]},"45":{"position":[[458,8]]},"47":{"position":[[53,7],[282,7],[441,7],[612,7]]},"50":{"position":[[48,8]]},"51":{"position":[[70,8],[519,8]]},"57":{"position":[[77,8]]},"69":{"position":[[255,8]]},"70":{"position":[[224,8]]},"119":{"position":[[423,8]]},"131":{"position":[[724,8],[1072,7]]},"132":{"position":[[236,7],[490,7],[820,8],[951,7],[1184,7],[1364,8],[1650,7],[1727,7],[2063,8],[2099,8],[2197,9],[2209,8]]},"175":{"position":[[531,8]]},"180":{"position":[[2600,8],[3022,8],[3535,8]]}},"keywords":{}}],["services.yaml",{"_index":252,"title":{},"content":{"8":{"position":[[2765,13]]}},"keywords":{}}],["servicesent",{"_index":1061,"title":{},"content":{"120":{"position":[[105,13]]}},"keywords":{}}],["set",{"_index":117,"title":{"164":{"position":[[6,9]]}},"content":{"5":{"position":[[158,3]]},"42":{"position":[[993,4]]},"57":{"position":[[52,8]]},"116":{"position":[[175,3]]},"119":{"position":[[85,7]]},"120":{"position":[[80,8]]},"132":{"position":[[921,10],[1339,8],[1603,9]]},"157":{"position":[[459,4]]},"166":{"position":[[57,8]]},"167":{"position":[[263,8],[396,7]]},"170":{"position":[[251,9],[309,3]]},"171":{"position":[[21,9],[36,3],[217,7]]},"173":{"position":[[674,8]]},"180":{"position":[[240,3],[392,3]]}},"keywords":{}}],["settingclean",{"_index":317,"title":{},"content":{"9":{"position":[[1686,12]]}},"keywords":{}}],["settingsconfigur",{"_index":1133,"title":{},"content":{"132":{"position":[[1488,17]]}},"keywords":{}}],["setup",{"_index":556,"title":{"34":{"position":[[8,6]]}},"content":{},"keywords":{}}],["shade",{"_index":515,"title":{},"content":{"22":{"position":[[193,8]]}},"keywords":{}}],["shift",{"_index":74,"title":{},"content":{"3":{"position":[[250,5]]},"9":{"position":[[2334,6]]}},"keywords":{}}],["short",{"_index":1503,"title":{},"content":{"178":{"position":[[15,5]]}},"keywords":{}}],["short/long",{"_index":1415,"title":{},"content":{"166":{"position":[[462,10]]}},"keywords":{}}],["shorter",{"_index":1267,"title":{},"content":{"157":{"position":[[769,7]]},"164":{"position":[[886,7]]},"166":{"position":[[625,7]]}},"keywords":{}}],["shouldn't",{"_index":1235,"title":{},"content":{"150":{"position":[[486,9]]}},"keywords":{}}],["show",{"_index":222,"title":{"64":{"position":[[8,4]]}},"content":{"8":{"position":[[1916,4]]},"9":{"position":[[1584,7],[2051,4],[4280,7],[4323,5]]},"13":{"position":[[657,5],[714,5]]},"15":{"position":[[526,7]]},"16":{"position":[[498,5],[639,5],[676,5]]},"17":{"position":[[457,6],[573,5],[628,5],[681,5],[723,5],[765,5],[806,5]]},"22":{"position":[[67,7],[396,5]]},"28":{"position":[[86,5]]},"32":{"position":[[115,5],[196,5]]},"40":{"position":[[16,4]]},"51":{"position":[[331,5],[387,5],[433,5],[845,5]]},"52":{"position":[[276,7]]},"55":{"position":[[133,4]]},"72":{"position":[[13,7]]},"73":{"position":[[1,4]]},"90":{"position":[[77,7]]},"102":{"position":[[117,4],[220,4],[309,4],[375,4]]},"114":{"position":[[84,5],[125,4],[333,5],[407,5],[479,5]]},"115":{"position":[[68,4]]},"116":{"position":[[335,5]]},"131":{"position":[[659,5]]},"132":{"position":[[752,5]]},"140":{"position":[[721,4]]},"160":{"position":[[406,4]]},"161":{"position":[[1082,4],[1568,4],[1694,5]]},"164":{"position":[[609,4],[810,4],[881,4],[1142,4],[1185,4]]},"165":{"position":[[46,4],[261,4],[326,4]]},"166":{"position":[[1424,4]]},"167":{"position":[[475,5]]},"179":{"position":[[416,6]]}},"keywords":{}}],["show_stat",{"_index":854,"title":{},"content":{"75":{"position":[[94,11]]},"107":{"position":[[108,11]]},"111":{"position":[[163,11]]},"112":{"position":[[239,11]]},"143":{"position":[[198,11],[485,11]]},"147":{"position":[[260,11],[479,11],[759,11],[999,11],[1282,11],[1492,11]]},"149":{"position":[[785,11],[1349,11],[1748,11],[2231,11]]}},"keywords":{}}],["shown",{"_index":1515,"title":{},"content":{"179":{"position":[[625,5]]}},"keywords":{}}],["signific",{"_index":1561,"title":{},"content":{"180":{"position":[[2089,11]]}},"keywords":{}}],["significantli",{"_index":1088,"title":{},"content":{"126":{"position":[[262,13],[359,13]]},"183":{"position":[[122,13],[235,13]]}},"keywords":{}}],["similar",{"_index":1554,"title":{},"content":{"180":{"position":[[1589,7]]}},"keywords":{}}],["simpl",{"_index":437,"title":{"175":{"position":[[12,6]]}},"content":{"15":{"position":[[14,6]]},"72":{"position":[[1,6]]},"141":{"position":[[151,7]]},"166":{"position":[[432,9]]}},"keywords":{}}],["simplest",{"_index":682,"title":{},"content":{"45":{"position":[[5,8]]}},"keywords":{}}],["simpli",{"_index":1278,"title":{},"content":{"157":{"position":[[1038,6]]}},"keywords":{}}],["simplic",{"_index":1184,"title":{},"content":{"141":{"position":[[1098,10]]}},"keywords":{}}],["size",{"_index":901,"title":{},"content":{"80":{"position":[[211,5]]}},"keywords":{}}],["sleep",{"_index":1023,"title":{},"content":{"114":{"position":[[487,5]]}},"keywords":{}}],["sleep/inact",{"_index":1019,"title":{},"content":{"114":{"position":[[249,14]]}},"keywords":{}}],["slider",{"_index":1443,"title":{},"content":{"170":{"position":[[394,7]]}},"keywords":{}}],["slightli",{"_index":1307,"title":{},"content":{"161":{"position":[[804,8]]},"177":{"position":[[444,8]]},"178":{"position":[[206,8]]}},"keywords":{}}],["slot",{"_index":935,"title":{},"content":{"92":{"position":[[26,4]]}},"keywords":{}}],["small",{"_index":1252,"title":{"178":{"position":[[19,5]]}},"content":{"154":{"position":[[134,5]]},"180":{"position":[[1989,5]]}},"keywords":{}}],["smart",{"_index":22,"title":{},"content":{"1":{"position":[[200,5]]},"43":{"position":[[107,5]]},"45":{"position":[[116,5]]}},"keywords":{}}],["smooth",{"_index":1314,"title":{},"content":{"161":{"position":[[1180,10],[1245,8],[1370,9],[1703,9]]},"178":{"position":[[329,9]]},"179":{"position":[[706,8]]}},"keywords":{}}],["solut",{"_index":258,"title":{},"content":{"9":{"position":[[103,8],[808,10]]},"47":{"position":[[143,8]]},"62":{"position":[[137,10]]},"119":{"position":[[612,9]]},"171":{"position":[[239,8]]},"177":{"position":[[89,10]]},"178":{"position":[[64,10]]},"180":{"position":[[4248,9]]}},"keywords":{}}],["sometim",{"_index":788,"title":{"62":{"position":[[9,9]]}},"content":{"169":{"position":[[1,10]]}},"keywords":{}}],["soon",{"_index":376,"title":{},"content":{"9":{"position":[[3897,4]]},"34":{"position":[[8,7]]},"35":{"position":[[8,7]]},"36":{"position":[[8,7]]},"39":{"position":[[8,7]]},"46":{"position":[[8,7]]},"83":{"position":[[8,7]]},"84":{"position":[[8,7]]},"85":{"position":[[8,7]]},"114":{"position":[[519,5]]},"127":{"position":[[8,7]]},"128":{"position":[[8,7]]},"129":{"position":[[8,7]]},"134":{"position":[[8,7]]},"135":{"position":[[8,7]]}},"keywords":{}}],["sort",{"_index":910,"title":{},"content":{"81":{"position":[[207,5]]}},"keywords":{}}],["space",{"_index":499,"title":{},"content":{"21":{"position":[[204,5]]}},"keywords":{}}],["span",{"_index":75,"title":{},"content":{"3":{"position":[[284,4]]},"9":{"position":[[2641,4]]},"17":{"position":[[367,4]]},"41":{"position":[[1173,6],[1248,6]]},"51":{"position":[[420,5],[744,4]]},"180":{"position":[[1055,5],[1212,5],[1543,4]]}},"keywords":{}}],["specif",{"_index":280,"title":{},"content":{"9":{"position":[[612,8]]},"13":{"position":[[74,8]]},"47":{"position":[[491,8]]},"150":{"position":[[204,8],[459,8]]},"160":{"position":[[122,8]]}},"keywords":{}}],["specifi",{"_index":996,"title":{},"content":{"107":{"position":[[167,7]]}},"keywords":{}}],["speed",{"_index":1480,"title":{},"content":{"173":{"position":[[32,5]]}},"keywords":{}}],["spike",{"_index":1272,"title":{},"content":{"157":{"position":[[849,6]]},"161":{"position":[[1174,5],[1207,6],[1404,5]]},"178":{"position":[[312,6],[423,7]]},"179":{"position":[[699,6]]}},"keywords":{}}],["split",{"_index":1251,"title":{"178":{"position":[[8,5]]}},"content":{"154":{"position":[[123,5]]},"161":{"position":[[1490,5]]},"165":{"position":[[1131,5]]}},"keywords":{}}],["spot",{"_index":1526,"title":{},"content":{"180":{"position":[[295,4]]}},"keywords":{}}],["squar",{"_index":883,"title":{},"content":{"78":{"position":[[55,7]]}},"keywords":{}}],["stabil",{"_index":98,"title":{},"content":{"4":{"position":[[262,9]]},"100":{"position":[[30,9]]}},"keywords":{}}],["stabilitybinari",{"_index":979,"title":{},"content":{"102":{"position":[[351,15]]}},"keywords":{}}],["stabl",{"_index":631,"title":{},"content":{"42":{"position":[[957,6]]},"160":{"position":[[411,6]]}},"keywords":{}}],["stack",{"_index":547,"title":{},"content":{"29":{"position":[[20,5],[69,5]]},"73":{"position":[[65,5]]},"77":{"position":[[47,5]]},"78":{"position":[[170,5],[338,5]]},"147":{"position":[[91,5],[146,5],[643,5],[1181,5]]}},"keywords":{}}],["standard",{"_index":993,"title":{"105":{"position":[[0,8]]}},"content":{"105":{"position":[[37,8]]},"148":{"position":[[39,8]]},"149":{"position":[[227,8]]},"151":{"position":[[422,8]]}},"keywords":{}}],["start",{"_index":11,"title":{"120":{"position":[[9,6]]},"155":{"position":[[6,6]]}},"content":{"1":{"position":[[88,5]]},"9":{"position":[[72,8],[4668,8]]},"41":{"position":[[945,7],[1300,5]]},"43":{"position":[[893,8]]},"44":{"position":[[352,5],[1050,7],[1391,7]]},"47":{"position":[[106,8]]},"51":{"position":[[749,6]]},"61":{"position":[[114,5]]},"69":{"position":[[228,5]]},"77":{"position":[[305,6]]},"157":{"position":[[1058,8]]},"164":{"position":[[454,5]]},"166":{"position":[[85,5],[300,5]]},"179":{"position":[[120,6],[174,5]]}},"keywords":{}}],["starthow",{"_index":1245,"title":{},"content":{"154":{"position":[[7,8]]}},"keywords":{}}],["state",{"_index":583,"title":{"115":{"position":[[0,5]]},"141":{"position":[[27,5]]}},"content":{"41":{"position":[[435,5],[732,5],[779,6]]},"42":{"position":[[288,5]]},"43":{"position":[[213,5]]},"44":{"position":[[254,5],[398,5],[444,6],[939,5],[1074,5],[1134,6]]},"45":{"position":[[157,5]]},"69":{"position":[[84,5]]},"70":{"position":[[134,5]]},"80":{"position":[[118,5],[248,5]]},"81":{"position":[[188,6],[221,5]]},"88":{"position":[[184,5]]},"90":{"position":[[50,5]]},"98":{"position":[[1,6],[111,5]]},"102":{"position":[[89,6]]},"103":{"position":[[69,6]]},"105":{"position":[[363,6]]},"112":{"position":[[389,5],[463,5],[552,5]]},"114":{"position":[[55,7],[67,6],[114,6]]},"115":{"position":[[19,6]]},"116":{"position":[[41,5],[125,6],[148,5]]},"119":{"position":[[251,7],[289,5]]},"132":{"position":[[61,6]]},"138":{"position":[[117,6]]},"139":{"position":[[402,5]]},"140":{"position":[[132,6],[688,5],[767,6]]},"141":{"position":[[201,5],[773,5]]},"143":{"position":[[305,5],[349,5],[592,5],[616,6]]},"144":{"position":[[72,5],[216,5]]},"145":{"position":[[357,5]]},"146":{"position":[[280,5],[429,5],[566,5]]},"147":{"position":[[352,5],[571,5],[872,5],[1114,5],[1374,5],[1584,5]]},"148":{"position":[[280,5]]},"149":{"position":[[536,5],[604,5],[1168,5],[1423,5],[2063,5],[2483,5]]},"150":{"position":[[243,5],[427,5]]},"151":{"position":[[609,5]]},"175":{"position":[[441,5]]},"180":{"position":[[2381,5],[2791,5],[3234,5]]}},"keywords":{}}],["state_attr",{"_index":919,"title":{},"content":{"87":{"position":[[182,12]]}},"keywords":{}}],["state_attr('binary_sensor.tibber_home_best_price_period",{"_index":687,"title":{},"content":{"45":{"position":[[348,57]]},"145":{"position":[[268,57]]},"146":{"position":[[590,57]]},"180":{"position":[[3425,57]]}},"keywords":{}}],["state_attr('sensor.tibber_home_current_interval_pric",{"_index":891,"title":{},"content":{"79":{"position":[[179,55]]}},"keywords":{}}],["state_attr('sensor.tibber_home_current_interval_price_level",{"_index":1190,"title":{},"content":{"144":{"position":[[240,61],[351,61]]},"145":{"position":[[534,61],[639,61]]},"146":{"position":[[304,61]]}},"keywords":{}}],["state_attr('sensor.tibber_home_volatility_today",{"_index":1196,"title":{},"content":{"146":{"position":[[453,49]]}},"keywords":{}}],["statement",{"_index":1183,"title":{},"content":{"141":{"position":[[740,10]]}},"keywords":{}}],["states('sensor.tibber_home_current_interval_price_ct",{"_index":602,"title":{},"content":{"41":{"position":[[982,54]]},"43":{"position":[[905,54]]}},"keywords":{}}],["states('sensor.tibber_home_volatility_today",{"_index":604,"title":{},"content":{"41":{"position":[[1062,45]]},"43":{"position":[[986,45]]}},"keywords":{}}],["states)verifi",{"_index":1239,"title":{},"content":{"151":{"position":[[214,13]]}},"keywords":{}}],["statesensor",{"_index":1046,"title":{},"content":{"117":{"position":[[49,12]]}},"keywords":{}}],["statesth",{"_index":1040,"title":{},"content":{"116":{"position":[[310,9]]}},"keywords":{}}],["static",{"_index":333,"title":{"15":{"position":[[18,9]]}},"content":{"9":{"position":[[2187,6],[3170,7]]},"13":{"position":[[139,6],[219,6],[590,8]]},"15":{"position":[[381,6]]},"32":{"position":[[12,8]]}},"keywords":{}}],["statist",{"_index":53,"title":{"4":{"position":[[0,11]]},"128":{"position":[[0,11]]}},"content":{"2":{"position":[[384,11]]},"78":{"position":[[375,10]]},"87":{"position":[[148,11]]},"95":{"position":[[194,11]]},"97":{"position":[[9,11]]},"98":{"position":[[168,10]]},"180":{"position":[[3676,11]]}},"keywords":{}}],["statu",{"_index":847,"title":{"73":{"position":[[7,6]]}},"content":{"78":{"position":[[215,6]]},"126":{"position":[[491,7]]},"147":{"position":[[120,6]]}},"keywords":{}}],["status.tibber.comintegr",{"_index":807,"title":{},"content":{"64":{"position":[[137,28]]}},"keywords":{}}],["stay",{"_index":656,"title":{},"content":{"43":{"position":[[1280,5]]},"161":{"position":[[392,4]]}},"keywords":{}}],["step",{"_index":123,"title":{"30":{"position":[[5,6]]},"161":{"position":[[0,4],[8,4]]}},"content":{"5":{"position":[[208,6]]},"11":{"position":[[334,6],[381,5]]},"132":{"position":[[566,5],[1462,4]]},"136":{"position":[[97,5]]},"170":{"position":[[156,5]]},"172":{"position":[[432,4],[739,4],[765,4],[791,4]]}},"keywords":{}}],["still",{"_index":250,"title":{},"content":{"8":{"position":[[2749,5]]},"11":{"position":[[11,5]]},"70":{"position":[[293,5]]},"173":{"position":[[431,5]]},"177":{"position":[[245,5]]}},"keywords":{}}],["stop",{"_index":659,"title":{},"content":{"44":{"position":[[26,8]]},"172":{"position":[[1292,6]]}},"keywords":{}}],["store",{"_index":251,"title":{},"content":{"8":{"position":[[2755,6]]},"132":{"position":[[692,6]]}},"keywords":{}}],["strategi",{"_index":646,"title":{"166":{"position":[[9,9]]}},"content":{"43":{"position":[[400,9]]}},"keywords":{}}],["strategy"",{"_index":639,"title":{},"content":{"43":{"position":[[113,14]]}},"keywords":{}}],["strict",{"_index":793,"title":{},"content":{"62":{"position":[[129,6]]},"91":{"position":[[61,6]]},"166":{"position":[[1465,7]]},"167":{"position":[[120,6],[190,6]]},"169":{"position":[[12,6]]},"173":{"position":[[833,7]]},"177":{"position":[[392,6]]}},"keywords":{}}],["strict)rang",{"_index":1398,"title":{},"content":{"165":{"position":[[980,14]]}},"keywords":{}}],["stricter",{"_index":1419,"title":{},"content":{"166":{"position":[[905,8],[1193,8]]}},"keywords":{}}],["struggl",{"_index":1448,"title":{},"content":{"170":{"position":[[635,9]]}},"keywords":{}}],["stuck",{"_index":1456,"title":{},"content":{"171":{"position":[[202,5]]}},"keywords":{}}],["style",{"_index":389,"title":{},"content":{"9":{"position":[[4703,8]]},"75":{"position":[[111,7]]},"80":{"position":[[180,6],[312,6]]},"112":{"position":[[314,7]]},"140":{"position":[[59,8]]},"143":{"position":[[230,7],[517,7]]},"144":{"position":[[180,6]]},"145":{"position":[[223,6],[489,6]]},"146":{"position":[[239,6]]},"147":{"position":[[277,7],[496,7],[797,7],[1039,7],[1299,7],[1509,7]]},"149":{"position":[[817,7],[1387,7],[1765,7],[2248,7]]},"151":{"position":[[79,7]]}},"keywords":{}}],["subscript",{"_index":401,"title":{"58":{"position":[[32,14]]}},"content":{"10":{"position":[[59,14],[305,15]]},"66":{"position":[[44,13]]}},"keywords":{}}],["substitut",{"_index":1170,"title":{},"content":{"141":{"position":[[128,13]]}},"keywords":{}}],["success",{"_index":1145,"title":{},"content":{"138":{"position":[[165,7],[245,7],[341,7]]},"139":{"position":[[32,7]]},"141":{"position":[[606,7]]},"148":{"position":[[94,7]]},"149":{"position":[[246,7]]},"172":{"position":[[1265,8]]}},"keywords":{}}],["such",{"_index":1562,"title":{},"content":{"180":{"position":[[2148,4]]}},"keywords":{}}],["suddenli",{"_index":1518,"title":{},"content":{"180":{"position":[[39,8]]}},"keywords":{}}],["suggest",{"_index":1104,"title":{},"content":{"131":{"position":[[816,9],[879,9]]}},"keywords":{}}],["summari",{"_index":158,"title":{},"content":{"8":{"position":[[333,9],[2019,9]]},"180":{"position":[[4077,8]]}},"keywords":{}}],["summer",{"_index":743,"title":{},"content":{"55":{"position":[[95,8]]}},"keywords":{}}],["support",{"_index":107,"title":{"5":{"position":[[11,8]]},"140":{"position":[[14,7]]}},"content":{"8":{"position":[[294,8]]},"9":{"position":[[671,7]]},"121":{"position":[[512,7]]},"141":{"position":[[106,8]]},"143":{"position":[[34,8]]},"145":{"position":[[20,7]]},"150":{"position":[[106,7]]},"151":{"position":[[63,8],[254,8]]},"165":{"position":[[497,8]]}},"keywords":{}}],["sure",{"_index":1236,"title":{},"content":{"151":{"position":[[33,4]]}},"keywords":{}}],["swing",{"_index":965,"title":{},"content":{"100":{"position":[[91,6]]}},"keywords":{}}],["switch",{"_index":445,"title":{},"content":{"16":{"position":[[53,8]]},"151":{"position":[[338,9]]},"180":{"position":[[1648,9]]}},"keywords":{}}],["switch.dishwash",{"_index":836,"title":{},"content":{"69":{"position":[[298,17]]},"175":{"position":[[574,17]]},"180":{"position":[[2635,17]]}},"keywords":{}}],["switch.dishwasher_smart_plug",{"_index":599,"title":{},"content":{"41":{"position":[[855,28]]}},"keywords":{}}],["switch.ev_charg",{"_index":650,"title":{},"content":{"43":{"position":[[814,17]]},"70":{"position":[[268,17]]},"180":{"position":[[3570,17]]}},"keywords":{}}],["switch.turn_off",{"_index":629,"title":{},"content":{"42":{"position":[[784,15]]},"70":{"position":[[233,15]]}},"keywords":{}}],["switch.turn_on",{"_index":597,"title":{},"content":{"41":{"position":[[821,14]]},"42":{"position":[[682,14]]},"43":{"position":[[780,14]]},"69":{"position":[[264,14]]},"175":{"position":[[540,14]]},"180":{"position":[[2609,14],[3031,14],[3544,14]]}},"keywords":{}}],["switch.water_heat",{"_index":627,"title":{},"content":{"42":{"position":[[716,19],[819,19]]},"180":{"position":[[3057,19]]}},"keywords":{}}],["symptom",{"_index":1497,"title":{},"content":{"177":{"position":[[1,8]]},"178":{"position":[[1,8]]},"180":{"position":[[1,8]]}},"keywords":{}}],["system",{"_index":1471,"title":{},"content":{"172":{"position":[[639,6]]}},"keywords":{}}],["t",{"_index":961,"title":{"99":{"position":[[0,2]]}},"content":{},"keywords":{}}],["tabl",{"_index":558,"title":{"38":{"position":[[0,5]]},"154":{"position":[[0,5]]}},"content":{},"keywords":{}}],["tailor",{"_index":712,"title":{},"content":{"47":{"position":[[474,8]]}},"keywords":{}}],["target",{"_index":598,"title":{},"content":{"41":{"position":[[836,7]]},"42":{"position":[[697,7],[800,7]]},"43":{"position":[[795,7]]},"44":{"position":[[615,7],[747,7],[1198,7]]},"45":{"position":[[491,7]]},"69":{"position":[[279,7]]},"70":{"position":[[249,7]]},"97":{"position":[[202,6]]},"170":{"position":[[671,6]]},"175":{"position":[[555,7]]},"182":{"position":[[427,6]]}},"keywords":{}}],["task",{"_index":1374,"title":{},"content":{"164":{"position":[[919,6]]}},"keywords":{}}],["tasks)cheap",{"_index":35,"title":{},"content":{"2":{"position":[[124,11]]}},"keywords":{}}],["tasks)peak",{"_index":72,"title":{},"content":{"3":{"position":[[178,10]]}},"keywords":{}}],["technic",{"_index":709,"title":{},"content":{"47":{"position":[[235,9]]},"181":{"position":[[41,9]]}},"keywords":{}}],["temperatur",{"_index":622,"title":{},"content":{"42":{"position":[[545,11]]},"45":{"position":[[534,12],[558,11]]}},"keywords":{}}],["templat",{"_index":297,"title":{},"content":{"9":{"position":[[1163,8],[3711,8],[4492,8]]},"13":{"position":[[402,8],[539,8]]},"16":{"position":[[146,8]]},"17":{"position":[[129,8]]},"25":{"position":[[8,8],[110,8]]},"45":{"position":[[315,8]]},"48":{"position":[[92,8]]},"49":{"position":[[106,8]]},"51":{"position":[[938,8]]},"87":{"position":[[198,10]]},"116":{"position":[[507,8]]},"131":{"position":[[1334,8]]},"139":{"position":[[367,10]]},"151":{"position":[[586,9]]},"180":{"position":[[3392,8]]}},"keywords":{}}],["term",{"_index":125,"title":{},"content":{"5":{"position":[[236,4]]},"98":{"position":[[163,4]]}},"keywords":{}}],["test",{"_index":1440,"title":{},"content":{"170":{"position":[[138,4]]}},"keywords":{}}],["text",{"_index":1025,"title":{},"content":{"115":{"position":[[14,4]]},"141":{"position":[[73,4]]},"143":{"position":[[692,4]]},"145":{"position":[[50,4],[624,4]]}},"keywords":{}}],["that'",{"_index":508,"title":{},"content":{"21":{"position":[[544,6]]}},"keywords":{}}],["themchart",{"_index":1056,"title":{},"content":{"119":{"position":[[458,9]]}},"keywords":{}}],["theme",{"_index":1151,"title":{},"content":{"139":{"position":[[129,5],[205,5],[278,6]]},"148":{"position":[[66,5]]},"149":{"position":[[29,5],[126,6],[163,5],[501,5]]},"150":{"position":[[35,5],[152,5],[193,5],[273,6],[389,5],[508,7]]},"151":{"position":[[248,5],[317,5],[348,6],[398,6],[529,5]]}},"keywords":{}}],["theme'",{"_index":1154,"title":{},"content":{"139":{"position":[[223,7]]},"148":{"position":[[410,7]]}},"keywords":{}}],["themes.yaml",{"_index":1212,"title":{},"content":{"149":{"position":[[183,14]]}},"keywords":{}}],["they'r",{"_index":1289,"title":{},"content":{"160":{"position":[[279,7]]},"161":{"position":[[796,7]]}},"keywords":{}}],["think",{"_index":1286,"title":{},"content":{"160":{"position":[[142,5]]}},"keywords":{}}],["thischeck",{"_index":1505,"title":{},"content":{"178":{"position":[[353,9]]}},"keywords":{}}],["though",{"_index":1521,"title":{},"content":{"180":{"position":[[101,6]]}},"keywords":{}}],["threshold",{"_index":63,"title":{"36":{"position":[[6,11]]},"42":{"position":[[25,10]]},"60":{"position":[[31,12]]}},"content":{"2":{"position":[[487,10]]},"19":{"position":[[30,10],[201,9]]},"42":{"position":[[214,10],[390,10],[932,9]]},"60":{"position":[[49,10],[87,10]]},"94":{"position":[[15,9]]},"97":{"position":[[124,11]]},"120":{"position":[[187,10]]},"152":{"position":[[144,10]]},"165":{"position":[[463,11],[609,10],[709,10]]},"180":{"position":[[2986,10],[4297,11]]},"182":{"position":[[224,9]]}},"keywords":{}}],["thresholdnorm",{"_index":475,"title":{},"content":{"19":{"position":[[114,15]]}},"keywords":{}}],["thresholdsbest/peak",{"_index":1071,"title":{},"content":{"121":{"position":[[200,19]]}},"keywords":{}}],["thresholdshigh",{"_index":477,"title":{},"content":{"19":{"position":[[146,14]]}},"keywords":{}}],["thresholdslevel",{"_index":379,"title":{},"content":{"9":{"position":[[4076,16]]}},"keywords":{}}],["thresholdsperiod",{"_index":1050,"title":{},"content":{"119":{"position":[[128,16]]}},"keywords":{}}],["thresholdsseason",{"_index":775,"title":{},"content":{"60":{"position":[[233,18]]}},"keywords":{}}],["thresholdsy",{"_index":772,"title":{},"content":{"60":{"position":[[180,13]]}},"keywords":{}}],["through",{"_index":1121,"title":{},"content":{"132":{"position":[[527,7],[1432,7],[1764,7]]}},"keywords":{}}],["throughout",{"_index":718,"title":{},"content":{"51":{"position":[[498,10]]}},"keywords":{}}],["thumb",{"_index":976,"title":{},"content":{"102":{"position":[[225,6]]}},"keywords":{}}],["ti",{"_index":824,"title":{},"content":{"66":{"position":[[132,5]]}},"keywords":{}}],["tibber",{"_index":109,"title":{"57":{"position":[[19,6]]},"58":{"position":[[25,6]]}},"content":{"5":{"position":[[22,6]]},"10":{"position":[[83,6],[298,6]]},"55":{"position":[[36,6]]},"57":{"position":[[88,6]]},"58":{"position":[[23,6],[125,6]]},"66":{"position":[[37,6]]},"67":{"position":[[14,6],[200,6]]},"87":{"position":[[42,7]]},"89":{"position":[[213,6]]},"119":{"position":[[101,6]]},"120":{"position":[[119,6]]},"132":{"position":[[1375,6],[1412,6]]},"183":{"position":[[5,6]]}},"keywords":{}}],["tibber'",{"_index":21,"title":{},"content":{"1":{"position":[[191,8]]}},"keywords":{}}],["tibber_prices.get_apexcharts_yaml",{"_index":254,"title":{"9":{"position":[[0,34]]}},"content":{"9":{"position":[[1792,33],[3194,33],[3453,33]]},"15":{"position":[[127,33]]},"16":{"position":[[181,33]]},"17":{"position":[[164,33]]},"47":{"position":[[19,33],[578,33]]},"50":{"position":[[57,33]]},"51":{"position":[[79,33],[528,33]]},"131":{"position":[[1105,33]]}},"keywords":{}}],["tibber_prices.get_chartdata",{"_index":135,"title":{"8":{"position":[[0,28]]}},"content":{"8":{"position":[[583,27],[1566,27],[2061,27],[2314,27],[2692,28]]},"11":{"position":[[98,27],[441,27]]},"132":{"position":[[208,27],[1622,27],[2218,27]]},"181":{"position":[[140,27]]}},"keywords":{}}],["tibber_prices.refresh_user_data",{"_index":396,"title":{"10":{"position":[[0,32]]}},"content":{"10":{"position":[[115,31]]}},"keywords":{}}],["tighten",{"_index":814,"title":{},"content":{"65":{"position":[[110,10]]}},"keywords":{}}],["time",{"_index":12,"title":{},"content":{"1":{"position":[[94,4]]},"3":{"position":[[70,4],[204,4]]},"9":{"position":[[328,4],[2614,4],[3093,4]]},"13":{"position":[[491,4]]},"17":{"position":[[19,4],[493,4],[531,4],[934,5]]},"22":{"position":[[274,4]]},"44":{"position":[[1428,5]]},"47":{"position":[[268,4]]},"51":{"position":[[875,4],[978,4]]},"52":{"position":[[292,4]]},"69":{"position":[[188,4]]},"88":{"position":[[43,4]]},"92":{"position":[[21,4]]},"95":{"position":[[20,4]]},"100":{"position":[[109,6]]},"114":{"position":[[358,4]]},"156":{"position":[[23,4]]},"160":{"position":[[100,4],[191,5],[441,5]]},"161":{"position":[[171,5],[330,5],[456,4],[757,5]]},"164":{"position":[[373,5],[1194,4]]},"167":{"position":[[298,4],[409,4]]},"172":{"position":[[852,5]]},"173":{"position":[[192,4]]},"175":{"position":[[25,4]]},"179":{"position":[[180,4],[241,4]]},"180":{"position":[[277,7]]}},"keywords":{}}],["timelin",{"_index":1280,"title":{"158":{"position":[[8,9]]}},"content":{"162":{"position":[[1,8]]}},"keywords":{}}],["timer",{"_index":1021,"title":{},"content":{"114":{"position":[[415,5]]}},"keywords":{}}],["timer/wait",{"_index":1017,"title":{},"content":{"114":{"position":[[210,13]]}},"keywords":{}}],["timesdecreas",{"_index":1380,"title":{},"content":{"164":{"position":[[1162,13]]}},"keywords":{}}],["timestamp",{"_index":918,"title":{},"content":{"87":{"position":[[135,12]]},"131":{"position":[[760,10]]},"132":{"position":[[1119,10]]}},"keywords":{}}],["timesus",{"_index":1266,"title":{},"content":{"157":{"position":[[676,8]]}},"keywords":{}}],["tip",{"_index":530,"title":{"26":{"position":[[0,4]]}},"content":{"164":{"position":[[383,4]]}},"keywords":{}}],["titl",{"_index":542,"title":{},"content":{"28":{"position":[[97,6],[114,5]]},"72":{"position":[[71,6]]},"78":{"position":[[200,6],[368,6]]},"81":{"position":[[88,6]]}},"keywords":{}}],["today",{"_index":154,"title":{},"content":{"8":{"position":[[223,6],[1125,6],[1794,5],[1864,5]]},"9":{"position":[[1861,5],[1890,6],[2169,6],[3263,5],[3919,6],[4588,7]]},"13":{"position":[[584,5]]},"15":{"position":[[196,5],[509,5]]},"16":{"position":[[682,5]]},"21":{"position":[[760,7]]},"25":{"position":[[165,7]]},"32":{"position":[[1,5],[272,5]]},"50":{"position":[[126,5]]},"51":{"position":[[337,5]]},"95":{"position":[[158,6]]},"149":{"position":[[1742,5]]}},"keywords":{}}],["today'",{"_index":364,"title":{"15":{"position":[[3,7]]}},"content":{"9":{"position":[[3155,7]]},"13":{"position":[[158,7]]},"55":{"position":[[157,7]]},"77":{"position":[[159,7]]}},"keywords":{}}],["today+tomorrow",{"_index":339,"title":{},"content":{"9":{"position":[[2369,14]]},"13":{"position":[[322,15]]},"16":{"position":[[90,15],[439,14]]}},"keywords":{}}],["todayaft",{"_index":450,"title":{},"content":{"16":{"position":[[657,10]]}},"keywords":{}}],["todayfix",{"_index":716,"title":{},"content":{"51":{"position":[[405,10]]}},"keywords":{}}],["togeth",{"_index":1005,"title":{},"content":{"112":{"position":[[26,8]]}},"keywords":{}}],["token",{"_index":765,"title":{},"content":{"58":{"position":[[54,5]]},"64":{"position":[[21,5],[43,5]]},"67":{"position":[[73,5]]},"87":{"position":[[5,6]]},"119":{"position":[[112,5]]},"120":{"position":[[130,5]]}},"keywords":{}}],["toler",{"_index":1393,"title":{},"content":{"165":{"position":[[859,9]]},"178":{"position":[[107,9]]},"179":{"position":[[793,9]]},"182":{"position":[[335,9]]}},"keywords":{}}],["tomorrow",{"_index":199,"title":{"67":{"position":[[0,8]]}},"content":{"8":{"position":[[1132,8],[1736,8],[1815,8]]},"9":{"position":[[1897,9],[2176,10],[3926,9],[4596,9]]},"13":{"position":[[210,8],[265,8]]},"15":{"position":[[458,8],[478,9]]},"21":{"position":[[768,9]]},"25":{"position":[[173,9]]},"32":{"position":[[233,8]]},"51":{"position":[[281,8],[358,8]]},"95":{"position":[[165,9]]}},"keywords":{}}],["tomorrow'",{"_index":430,"title":{"55":{"position":[[16,10]]}},"content":{"13":{"position":[[238,10]]},"15":{"position":[[534,10]]},"16":{"position":[[549,10]]},"55":{"position":[[1,10]]}},"keywords":{}}],["tomorrow)pric",{"_index":155,"title":{},"content":{"8":{"position":[[230,14]]}},"keywords":{}}],["tomorrowi",{"_index":451,"title":{},"content":{"16":{"position":[[690,9]]}},"keywords":{}}],["tomorrowwhen",{"_index":220,"title":{},"content":{"8":{"position":[[1802,12]]},"51":{"position":[[345,12]]}},"keywords":{}}],["tool",{"_index":246,"title":{},"content":{"8":{"position":[[2650,5]]},"9":{"position":[[4909,5]]},"103":{"position":[[61,5]]},"116":{"position":[[117,5],[302,5]]},"140":{"position":[[124,5]]},"151":{"position":[[206,5]]}},"keywords":{}}],["top",{"_index":494,"title":{},"content":{"20":{"position":[[197,3]]},"80":{"position":[[187,4],[319,4]]}},"keywords":{}}],["topic",{"_index":1254,"title":{"181":{"position":[[9,7]]}},"content":{"154":{"position":[[193,6]]}},"keywords":{}}],["total",{"_index":959,"title":{},"content":{"98":{"position":[[193,6]]},"172":{"position":[[229,5]]}},"keywords":{}}],["track",{"_index":110,"title":{},"content":{"5":{"position":[[38,5]]},"44":{"position":[[695,5],[1380,5]]}},"keywords":{}}],["trackerreleas",{"_index":1081,"title":{},"content":{"122":{"position":[[24,14]]}},"keywords":{}}],["trackingstatist",{"_index":1067,"title":{},"content":{"121":{"position":[[67,19]]}},"keywords":{}}],["trail",{"_index":87,"title":{},"content":{"4":{"position":[[56,8]]},"99":{"position":[[1,8]]},"183":{"position":[[85,8]]}},"keywords":{}}],["trailing/lead",{"_index":1068,"title":{},"content":{"121":{"position":[[98,16]]}},"keywords":{}}],["transform",{"_index":276,"title":{},"content":{"9":{"position":[[486,16]]}},"keywords":{}}],["transit",{"_index":681,"title":{},"content":{"44":{"position":[[1530,12]]},"180":{"position":[[1635,12]]}},"keywords":{}}],["translat",{"_index":391,"title":{},"content":{"9":{"position":[[4759,10]]},"170":{"position":[[458,10]]}},"keywords":{}}],["transpar",{"_index":727,"title":{},"content":{"52":{"position":[[120,11]]},"141":{"position":[[294,15],[1046,14]]},"149":{"position":[[1596,14]]}},"keywords":{}}],["trend",{"_index":1161,"title":{},"content":{"140":{"position":[[482,5]]},"147":{"position":[[1155,6],[1486,5]]},"161":{"position":[[1424,5]]}},"keywords":{}}],["tri",{"_index":1240,"title":{},"content":{"151":{"position":[[334,3]]},"170":{"position":[[53,3],[494,5]]},"172":{"position":[[37,6],[254,5],[646,6],[1317,3]]},"177":{"position":[[211,3],[417,3]]}},"keywords":{}}],["trick",{"_index":531,"title":{"26":{"position":[[7,7]]}},"content":{},"keywords":{}}],["trigger",{"_index":403,"title":{},"content":{"10":{"position":[[219,7]]},"41":{"position":[[414,8]]},"42":{"position":[[267,8]]},"43":{"position":[[192,8]]},"44":{"position":[[233,8],[918,8],[1411,7],[1485,8]]},"45":{"position":[[136,8]]},"69":{"position":[[63,8]]},"70":{"position":[[113,8]]},"88":{"position":[[259,9]]},"175":{"position":[[420,8]]},"180":{"position":[[2360,8],[2770,8],[3213,8]]}},"keywords":{}}],["troubleshoot",{"_index":799,"title":{"63":{"position":[[0,16]]},"116":{"position":[[0,16]]},"133":{"position":[[0,15]]},"151":{"position":[[0,16]]},"176":{"position":[[0,16]]}},"content":{"70":{"position":[[311,15]]},"123":{"position":[[11,15]]}},"keywords":{}}],["true",{"_index":229,"title":{},"content":{"8":{"position":[[2223,4],[2250,4]]},"9":{"position":[[2044,4],[3640,4],[4240,5]]},"15":{"position":[[249,4]]},"16":{"position":[[324,4]]},"17":{"position":[[304,4]]},"22":{"position":[[28,5]]},"28":{"position":[[92,4]]},"75":{"position":[[106,4]]},"81":{"position":[[236,4]]},"107":{"position":[[120,4]]},"111":{"position":[[175,4]]},"112":{"position":[[251,4]]},"143":{"position":[[210,4],[497,4]]},"147":{"position":[[272,4],[491,4],[771,4],[1011,4],[1294,4],[1504,4]]},"149":{"position":[[797,4],[1361,4],[1760,4],[2243,4]]},"166":{"position":[[183,4]]},"170":{"position":[[26,4]]},"177":{"position":[[157,4],[174,4]]},"179":{"position":[[475,4]]},"182":{"position":[[369,4]]}},"keywords":{}}],["true/fals",{"_index":1579,"title":{},"content":{"182":{"position":[[374,10]]}},"keywords":{}}],["trust",{"_index":648,"title":{},"content":{"43":{"position":[[502,5],[1092,5]]}},"keywords":{}}],["tuesday",{"_index":1453,"title":{},"content":{"171":{"position":[[110,7],[336,8]]}},"keywords":{}}],["tune",{"_index":787,"title":{},"content":{"61":{"position":[[266,6]]},"166":{"position":[[399,7],[723,4]]},"170":{"position":[[362,6]]}},"keywords":{}}],["turn",{"_index":1087,"title":{},"content":{"126":{"position":[[233,5],[330,5]]},"177":{"position":[[60,5]]}},"keywords":{}}],["tweak",{"_index":1403,"title":{"166":{"position":[[0,8]]},"171":{"position":[[37,9]]}},"content":{},"keywords":{}}],["two",{"_index":1210,"title":{},"content":{"149":{"position":[[66,3]]},"173":{"position":[[373,3]]}},"keywords":{}}],["type",{"_index":367,"title":{"18":{"position":[[18,4]]}},"content":{"9":{"position":[[3340,5],[3691,5],[3983,4]]},"28":{"position":[[33,5]]},"29":{"position":[[54,5],[84,5],[149,5]]},"32":{"position":[[295,5]]},"72":{"position":[[56,5]]},"73":{"position":[[48,5],[80,5],[198,5]]},"75":{"position":[[1,5]]},"77":{"position":[[32,5],[62,5],[213,5]]},"78":{"position":[[33,5],[78,5],[155,5],[185,5],[323,5],[353,5]]},"79":{"position":[[53,5],[95,5],[260,5],[345,5]]},"80":{"position":[[34,5],[112,5],[242,5]]},"81":{"position":[[40,5],[73,5]]},"102":{"position":[[330,5]]},"103":{"position":[[303,5]]},"105":{"position":[[69,5]]},"106":{"position":[[1,5]]},"107":{"position":[[1,5]]},"108":{"position":[[1,5]]},"110":{"position":[[1,5]]},"111":{"position":[[1,5]]},"112":{"position":[[138,5]]},"132":{"position":[[1846,5]]},"140":{"position":[[295,5]]},"143":{"position":[[91,5],[378,5]]},"144":{"position":[[87,5]]},"145":{"position":[[82,5],[371,5]]},"146":{"position":[[48,5]]},"147":{"position":[[76,5],[129,5],[161,5],[378,5],[626,5],[658,5],[898,5],[1164,5],[1196,5],[1400,5]]},"149":{"position":[[678,5],[1248,5],[1656,5],[2130,5]]}},"keywords":{}}],["typic",{"_index":104,"title":{},"content":{"4":{"position":[[366,8]]},"8":{"position":[[1760,10]]},"51":{"position":[[305,10]]},"114":{"position":[[74,9]]},"115":{"position":[[58,9]]},"140":{"position":[[711,9]]},"157":{"position":[[362,7],[1078,7]]},"162":{"position":[[16,7]]}},"keywords":{}}],["ui",{"_index":247,"title":{},"content":{"8":{"position":[[2671,2]]},"165":{"position":[[741,3]]}},"keywords":{}}],["unavail",{"_index":745,"title":{"64":{"position":[[13,14]]}},"content":{"55":{"position":[[138,11]]},"81":{"position":[[195,11]]}},"keywords":{}}],["uncertain",{"_index":1538,"title":{},"content":{"180":{"position":[[652,9]]}},"keywords":{}}],["uncertainti",{"_index":1535,"title":{},"content":{"180":{"position":[[578,12],[4213,11]]}},"keywords":{}}],["uncertaintyindepend",{"_index":1544,"title":{},"content":{"180":{"position":[[757,22]]}},"keywords":{}}],["understand",{"_index":102,"title":{"168":{"position":[[0,13]]},"179":{"position":[[0,13]]}},"content":{"4":{"position":[[318,10]]},"167":{"position":[[426,10]]},"180":{"position":[[1739,10]]}},"keywords":{}}],["unexpect",{"_index":1242,"title":{},"content":{"151":{"position":[[450,10]]}},"keywords":{}}],["uniqu",{"_index":119,"title":{},"content":{"5":{"position":[[178,6]]},"57":{"position":[[232,6]]}},"keywords":{}}],["unit",{"_index":172,"title":{},"content":{"8":{"position":[[551,5]]},"89":{"position":[[10,6],[32,5]]},"121":{"position":[[554,5]]}},"keywords":{}}],["unnecessari",{"_index":1316,"title":{},"content":{"161":{"position":[[1265,11]]}},"keywords":{}}],["until",{"_index":349,"title":{},"content":{"9":{"position":[[2619,5]]},"17":{"position":[[498,5]]},"51":{"position":[[880,5]]},"56":{"position":[[122,5]]},"169":{"position":[[100,5]]}},"keywords":{}}],["up",{"_index":1049,"title":{},"content":{"119":{"position":[[93,2]]},"164":{"position":[[151,2],[221,2]]},"165":{"position":[[1071,2]]},"172":{"position":[[371,3],[910,2],[939,3]]}},"keywords":{}}],["up/down",{"_index":977,"title":{},"content":{"102":{"position":[[232,7]]}},"keywords":{}}],["upcom",{"_index":1016,"title":{},"content":{"114":{"position":[[192,8],[231,8]]}},"keywords":{}}],["updat",{"_index":362,"title":{"56":{"position":[[31,6]]}},"content":{"9":{"position":[[3098,8]]},"10":{"position":[[268,7]]},"15":{"position":[[54,7]]},"16":{"position":[[522,7]]},"56":{"position":[[37,8]]},"89":{"position":[[198,8]]},"102":{"position":[[46,6]]},"103":{"position":[[280,7]]},"105":{"position":[[328,6]]},"107":{"position":[[132,7]]},"116":{"position":[[74,6]]},"131":{"position":[[508,8]]},"132":{"position":[[589,8],[628,7],[1018,7]]},"139":{"position":[[299,7]]},"183":{"position":[[271,8]]}},"keywords":{}}],["updates)lightweight",{"_index":1097,"title":{},"content":{"131":{"position":[[564,20]]}},"keywords":{}}],["us",{"_index":127,"title":{"41":{"position":[[0,3]]},"42":{"position":[[0,3]]},"43":{"position":[[0,3]]},"44":{"position":[[0,3]]},"45":{"position":[[0,3]]},"57":{"position":[[6,3]]},"104":{"position":[[0,5]]},"122":{"position":[[3,6]]},"141":{"position":[[8,3]]},"142":{"position":[[7,3]]},"149":{"position":[[0,5]]},"150":{"position":[[26,5]]}},"content":{"5":{"position":[[269,3],[316,3]]},"8":{"position":[[1879,6]]},"9":{"position":[[227,3],[361,3],[819,3],[1479,3],[1652,4],[3060,4],[3322,3],[3553,3],[3673,3],[4803,3]]},"11":{"position":[[17,5]]},"13":{"position":[[83,3]]},"15":{"position":[[9,4],[598,3]]},"16":{"position":[[9,4]]},"17":{"position":[[9,4]]},"21":{"position":[[588,4],[778,3]]},"43":{"position":[[157,5]]},"44":{"position":[[1358,4]]},"45":{"position":[[24,3]]},"47":{"position":[[419,3]]},"55":{"position":[[153,3]]},"57":{"position":[[6,3]]},"66":{"position":[[13,4]]},"70":{"position":[[6,3]]},"79":{"position":[[1,5]]},"88":{"position":[[236,4]]},"89":{"position":[[38,4]]},"95":{"position":[[65,3]]},"100":{"position":[[206,3]]},"103":{"position":[[38,5]]},"109":{"position":[[16,3]]},"117":{"position":[[130,3]]},"119":{"position":[[345,5],[454,3],[554,3]]},"120":{"position":[[244,5]]},"131":{"position":[[164,3],[1160,4]]},"132":{"position":[[200,3],[941,5],[2018,5]]},"139":{"position":[[1,5],[213,4],[316,3]]},"141":{"position":[[1,3],[193,3],[441,3]]},"144":{"position":[[1,3]]},"148":{"position":[[17,4]]},"149":{"position":[[90,3],[485,3],[570,5],[1419,3]]},"150":{"position":[[1,3],[61,3],[116,3],[304,3],[345,3]]},"151":{"position":[[45,5],[551,3]]},"152":{"position":[[77,3]]},"157":{"position":[[370,3],[1004,3]]},"164":{"position":[[430,7],[1291,5],[1402,3]]},"165":{"position":[[367,3],[590,3],[1109,3]]},"166":{"position":[[482,3],[990,3],[1547,5]]},"167":{"position":[[52,3],[329,3]]},"171":{"position":[[285,4],[420,4]]},"172":{"position":[[12,4]]},"173":{"position":[[661,4]]},"175":{"position":[[76,3]]},"178":{"position":[[79,5]]},"180":{"position":[[3089,3],[4258,3]]},"181":{"position":[[130,5]]}},"keywords":{}}],["usabl",{"_index":953,"title":{},"content":{"97":{"position":[[256,6]]}},"keywords":{}}],["usag",{"_index":711,"title":{},"content":{"47":{"position":[[294,7]]},"131":{"position":[[1093,6]]},"132":{"position":[[1799,6]]}},"keywords":{}}],["usefulappli",{"_index":1292,"title":{},"content":{"160":{"position":[[365,11]]}},"keywords":{}}],["user",{"_index":400,"title":{"118":{"position":[[0,4]]}},"content":{"10":{"position":[[41,4],[185,4]]},"60":{"position":[[30,6]]},"123":{"position":[[115,6]]},"157":{"position":[[298,5]]},"170":{"position":[[266,5]]}},"keywords":{}}],["users)start",{"_index":1064,"title":{},"content":{"120":{"position":[[232,11]]}},"keywords":{}}],["usual",{"_index":1110,"title":{},"content":{"131":{"position":[[1036,8]]}},"keywords":{}}],["utc",{"_index":740,"title":{},"content":{"55":{"position":[[67,3],[88,3]]}},"keywords":{}}],["v",{"_index":963,"title":{"100":{"position":[[0,2]]}},"content":{},"keywords":{}}],["valu",{"_index":768,"title":{"60":{"position":[[14,6]]},"141":{"position":[[33,6]]}},"content":{"60":{"position":[[9,6]]},"98":{"position":[[16,5]]},"115":{"position":[[117,6],[158,6],[203,6]]},"131":{"position":[[268,6],[834,5],[897,5]]},"138":{"position":[[75,6]]},"141":{"position":[[207,5]]},"143":{"position":[[355,5]]},"145":{"position":[[363,6]]},"149":{"position":[[542,5]]},"150":{"position":[[249,5],[474,6]]},"151":{"position":[[615,5]]},"157":{"position":[[945,6]]},"164":{"position":[[1314,6]]},"166":{"position":[[940,6],[1229,6]]},"170":{"position":[[351,5]]}},"keywords":{}}],["value_templ",{"_index":686,"title":{},"content":{"45":{"position":[[324,15]]},"180":{"position":[[3401,15]]}},"keywords":{}}],["values)smooth",{"_index":1327,"title":{},"content":{"161":{"position":[[1578,16]]}},"keywords":{}}],["var",{"_index":869,"title":{},"content":{"75":{"position":[[603,5]]},"112":{"position":[[382,5]]},"138":{"position":[[159,4],[191,4],[239,4],[287,4],[335,4],[376,4]]},"139":{"position":[[26,4]]},"141":{"position":[[599,5],[670,5]]},"143":{"position":[[298,5],[585,5],[677,5]]},"147":{"position":[[345,5],[564,5],[865,5],[1107,5],[1367,5],[1577,5]]},"148":{"position":[[88,4]]},"149":{"position":[[1161,5],[2056,5],[2476,5]]}},"keywords":{}}],["vari",{"_index":1492,"title":{},"content":{"173":{"position":[[776,4]]}},"keywords":{}}],["variabl",{"_index":1143,"title":{"139":{"position":[[8,11]]},"148":{"position":[[10,10]]}},"content":{"138":{"position":[[41,8]]},"139":{"position":[[11,9]]},"141":{"position":[[47,8],[119,8],[273,8]]},"148":{"position":[[52,9]]},"149":{"position":[[236,9]]},"150":{"position":[[180,9]]},"151":{"position":[[271,9],[435,9]]}},"keywords":{}}],["variant",{"_index":717,"title":{},"content":{"51":{"position":[[464,8]]}},"keywords":{}}],["variat",{"_index":569,"title":{},"content":{"41":{"position":[[24,9]]}},"keywords":{}}],["veri",{"_index":810,"title":{},"content":{"65":{"position":[[45,5]]},"138":{"position":[[399,4]]},"150":{"position":[[454,4]]},"164":{"position":[[357,4],[388,4]]},"166":{"position":[[1460,4]]}},"keywords":{}}],["versa",{"_index":1520,"title":{},"content":{"180":{"position":[[88,7]]}},"keywords":{}}],["version",{"_index":1588,"title":{},"content":{"183":{"position":[[309,8]]}},"keywords":{}}],["vertic",{"_index":312,"title":{},"content":{"9":{"position":[[1569,8],[4247,8]]},"15":{"position":[[363,9]]},"22":{"position":[[34,8]]},"29":{"position":[[11,8],[60,8]]},"77":{"position":[[38,8]]},"78":{"position":[[161,8],[329,8]]},"147":{"position":[[82,8]]}},"keywords":{}}],["very_cheap",{"_index":29,"title":{},"content":{"2":{"position":[[58,10]]},"9":{"position":[[1336,12],[4102,12]]},"20":{"position":[[66,10]]},"97":{"position":[[42,12]]},"141":{"position":[[881,12]]},"149":{"position":[[888,13]]},"165":{"position":[[166,10]]},"183":{"position":[[109,10]]}},"keywords":{}}],["very_cheap"",{"_index":783,"title":{},"content":{"61":{"position":[[139,16]]}},"keywords":{}}],["very_expens",{"_index":305,"title":{},"content":{"9":{"position":[[1375,15],[4141,15]]},"97":{"position":[[81,16]]},"141":{"position":[[963,16]]},"149":{"position":[[1111,17]]},"165":{"position":[[204,14]]}},"keywords":{}}],["very_high",{"_index":1228,"title":{},"content":{"149":{"position":[[2011,12]]}},"keywords":{}}],["via",{"_index":340,"title":{},"content":{"9":{"position":[[2445,3],[2708,3]]},"16":{"position":[[386,3]]},"17":{"position":[[423,3]]},"24":{"position":[[55,3]]},"25":{"position":[[63,3]]},"48":{"position":[[38,3],[116,3]]},"50":{"position":[[26,3]]},"87":{"position":[[178,3]]},"119":{"position":[[31,3]]},"120":{"position":[[9,3]]},"132":{"position":[[472,3]]}},"keywords":{}}],["vice",{"_index":1519,"title":{},"content":{"180":{"position":[[83,4]]}},"keywords":{}}],["view",{"_index":334,"title":{"50":{"position":[[19,5]]},"77":{"position":[[15,5]]}},"content":{"9":{"position":[[2202,6],[3178,5],[3437,5],[4582,5]]},"13":{"position":[[150,4],[230,4],[317,4],[449,4],[633,6]]},"15":{"position":[[396,4],[467,4],[515,5],[565,5]]},"16":{"position":[[29,4]]},"21":{"position":[[754,5]]},"25":{"position":[[159,5]]},"32":{"position":[[7,4],[55,5],[242,4],[278,4]]},"50":{"position":[[241,4]]}},"keywords":{}}],["visual",{"_index":142,"title":{"162":{"position":[[0,6]]}},"content":{"8":{"position":[[71,13]]},"9":{"position":[[925,14],[1015,11],[1703,14]]},"15":{"position":[[611,13]]},"16":{"position":[[594,6],[753,13]]},"20":{"position":[[245,13]]},"21":{"position":[[101,14]]},"24":{"position":[[23,13]]},"32":{"position":[[250,8]]},"47":{"position":[[679,11]]},"119":{"position":[[492,14]]},"131":{"position":[[137,14]]},"181":{"position":[[186,14]]}},"keywords":{}}],["visualizationmulti",{"_index":1075,"title":{},"content":{"121":{"position":[[484,18]]}},"keywords":{}}],["volatil",{"_index":97,"title":{"40":{"position":[[0,10]]},"41":{"position":[[27,10]]},"43":{"position":[[19,10]]},"45":{"position":[[25,11]]}},"content":{"4":{"position":[[241,12]]},"40":{"position":[[39,10]]},"41":{"position":[[44,12],[272,10],[540,10],[1048,10],[1146,10],[1222,10],[1324,10]]},"42":{"position":[[908,10]]},"43":{"position":[[34,10],[163,10],[415,10],[485,10],[628,10],[970,12],[1064,10],[1134,10]]},"44":{"position":[[474,10]]},"45":{"position":[[45,10],[291,10],[655,10],[1185,11]]},"60":{"position":[[158,10]]},"100":{"position":[[1,11],[66,10]]},"108":{"position":[[91,10],[140,10]]},"138":{"position":[[364,11]]},"147":{"position":[[1140,10],[1271,10]]},"149":{"position":[[1644,10],[1731,10],[1800,10],[1830,11],[1883,11],[1940,11],[1995,11]]},"165":{"position":[[452,10],[506,10],[698,10]]},"170":{"position":[[681,8]]},"171":{"position":[[76,9],[273,11]]},"173":{"position":[[262,8]]},"180":{"position":[[997,11],[1154,11],[1515,10],[1717,10],[1797,10],[1883,10],[1956,10],[2216,10],[2264,10],[2337,10],[2570,10],[3108,10],[3190,10],[3368,10],[3655,10],[3758,10],[4262,10],[4327,10]]}},"keywords":{}}],["volatility_high",{"_index":1390,"title":{},"content":{"165":{"position":[[566,17]]}},"keywords":{}}],["volatility_low",{"_index":1388,"title":{},"content":{"165":{"position":[[530,16]]}},"keywords":{}}],["volatility_medium",{"_index":1389,"title":{},"content":{"165":{"position":[[547,18]]}},"keywords":{}}],["volatility_today)binari",{"_index":990,"title":{},"content":{"103":{"position":[[470,23]]}},"keywords":{}}],["volatility_today)pric",{"_index":1160,"title":{},"content":{"140":{"position":[[459,22]]}},"keywords":{}}],["volatilityno",{"_index":706,"title":{},"content":{"45":{"position":[[1092,12]]}},"keywords":{}}],["vs",{"_index":980,"title":{"141":{"position":[[23,3]]}},"content":{"102":{"position":[[404,2]]}},"keywords":{}}],["wait",{"_index":987,"title":{},"content":{"103":{"position":[[233,5]]},"114":{"position":[[421,8]]},"116":{"position":[[21,4]]}},"keywords":{}}],["want",{"_index":509,"title":{},"content":{"21":{"position":[[684,4]]},"49":{"position":[[145,4]]},"60":{"position":[[194,4]]},"109":{"position":[[8,4]]},"116":{"position":[[242,4],[402,4]]},"123":{"position":[[129,4]]},"141":{"position":[[146,4]]},"149":{"position":[[8,4]]},"150":{"position":[[85,4],[140,4],[199,4]]},"151":{"position":[[469,4]]},"166":{"position":[[773,4],[1352,4]]},"173":{"position":[[151,4]]}},"keywords":{}}],["warn",{"_index":1204,"title":{},"content":{"148":{"position":[[179,7]]},"149":{"position":[[342,7]]}},"keywords":{}}],["warningsmor",{"_index":1270,"title":{},"content":{"157":{"position":[[807,12]]}},"keywords":{}}],["wash",{"_index":665,"title":{},"content":{"44":{"position":[[170,7],[361,7],[1470,4]]}},"keywords":{}}],["watch",{"_index":1420,"title":{},"content":{"166":{"position":[[929,5]]}},"keywords":{}}],["water",{"_index":618,"title":{},"content":{"42":{"position":[[179,5],[539,5]]},"157":{"position":[[724,5]]},"180":{"position":[[2743,5]]}},"keywords":{}}],["waterpeak",{"_index":1256,"title":{},"content":{"156":{"position":[[191,9]]}},"keywords":{}}],["weather",{"_index":1536,"title":{},"content":{"180":{"position":[[591,8],[1580,8]]}},"keywords":{}}],["wednesday",{"_index":1459,"title":{},"content":{"171":{"position":[[400,10]]}},"keywords":{}}],["weight",{"_index":903,"title":{},"content":{"80":{"position":[[227,7]]},"143":{"position":[[717,7]]}},"keywords":{}}],["welcom",{"_index":279,"title":{},"content":{"9":{"position":[[563,7]]},"47":{"position":[[564,8]]}},"keywords":{}}],["well",{"_index":1262,"title":{},"content":{"157":{"position":[[353,4]]}},"keywords":{}}],["were/weren't",{"_index":1438,"title":{},"content":{"167":{"position":[[493,12]]}},"keywords":{}}],["whenev",{"_index":1233,"title":{},"content":{"150":{"position":[[360,8]]}},"keywords":{}}],["whether",{"_index":974,"title":{},"content":{"102":{"position":[[162,7]]},"114":{"position":[[159,7]]}},"keywords":{}}],["wider",{"_index":1504,"title":{},"content":{"178":{"position":[[278,5]]}},"keywords":{}}],["width",{"_index":880,"title":{},"content":{"78":{"position":[[6,5]]}},"keywords":{}}],["window",{"_index":68,"title":{"16":{"position":[[15,6]]},"17":{"position":[[11,6]]},"25":{"position":[[21,6]]},"51":{"position":[[21,7]]}},"content":{"3":{"position":[[75,8],[209,7]]},"8":{"position":[[1431,6],[1501,6],[1649,6],[1931,6]]},"9":{"position":[[1204,6],[1452,6],[2243,6],[2308,6],[2479,6],[2541,7],[2767,6],[2791,6],[3421,6],[3542,6],[4535,6]]},"13":{"position":[[298,6],[424,6],[648,6],[695,6]]},"16":{"position":[[270,6]]},"17":{"position":[[597,7],[643,6],[836,7]]},"21":{"position":[[9,6],[723,6]]},"32":{"position":[[96,6],[152,6],[167,6]]},"48":{"position":[[70,6]]},"49":{"position":[[158,6]]},"51":{"position":[[910,6]]},"88":{"position":[[48,6]]},"95":{"position":[[25,6]]},"131":{"position":[[369,6]]},"156":{"position":[[28,7]]},"157":{"position":[[70,7],[166,7]]},"160":{"position":[[181,7]]},"161":{"position":[[461,8]]},"164":{"position":[[894,7]]},"173":{"position":[[825,7]]}},"keywords":{}}],["window)06:00",{"_index":457,"title":{},"content":{"17":{"position":[[667,13]]}},"keywords":{}}],["window)12:00",{"_index":460,"title":{},"content":{"17":{"position":[[709,13]]}},"keywords":{}}],["window)18:00",{"_index":463,"title":{},"content":{"17":{"position":[[751,13]]}},"keywords":{}}],["window)23:45",{"_index":464,"title":{},"content":{"17":{"position":[[792,13]]}},"keywords":{}}],["windowprogress",{"_index":719,"title":{},"content":{"51":{"position":[[714,17]]}},"keywords":{}}],["winter",{"_index":741,"title":{},"content":{"55":{"position":[[74,7]]}},"keywords":{}}],["within",{"_index":747,"title":{},"content":{"55":{"position":[[231,6]]},"93":{"position":[[29,6]]},"165":{"position":[[938,6]]},"180":{"position":[[923,6]]}},"keywords":{}}],["without",{"_index":223,"title":{"58":{"position":[[15,7]]}},"content":{"8":{"position":[[1938,7]]},"21":{"position":[[117,7]]},"41":{"position":[[1340,7]]},"114":{"position":[[455,7]]},"141":{"position":[[170,7]]}},"keywords":{}}],["wizard",{"_index":1132,"title":{},"content":{"132":{"position":[[1452,6]]}},"keywords":{}}],["won't",{"_index":1002,"title":{},"content":{"110":{"position":[[123,5]]}},"keywords":{}}],["work",{"_index":5,"title":{"58":{"position":[[10,4]]},"159":{"position":[[7,6]]},"172":{"position":[[7,5]]}},"content":{"1":{"position":[[17,5]]},"9":{"position":[[2977,5],[4617,4]]},"15":{"position":[[418,5],[488,5]]},"16":{"position":[[616,6]]},"17":{"position":[[613,6]]},"25":{"position":[[183,4]]},"41":{"position":[[1130,6]]},"42":{"position":[[850,6]]},"43":{"position":[[1048,6]]},"44":{"position":[[1350,6]]},"45":{"position":[[1056,6]]},"60":{"position":[[16,4]]},"105":{"position":[[15,4]]},"112":{"position":[[15,4]]},"120":{"position":[[218,4]]},"139":{"position":[[260,5]]},"157":{"position":[[348,4]]},"167":{"position":[[357,5]]},"171":{"position":[[54,5]]},"173":{"position":[[849,6]]}},"keywords":{}}],["worksconfigur",{"_index":1246,"title":{},"content":{"154":{"position":[[19,18]]}},"keywords":{}}],["world",{"_index":1575,"title":{},"content":{"181":{"position":[[95,5]]}},"keywords":{}}],["wrap",{"_index":546,"title":{},"content":{"29":{"position":[[1,4]]}},"keywords":{}}],["wrong",{"_index":819,"title":{"66":{"position":[[14,5]]}},"content":{"151":{"position":[[294,6]]}},"keywords":{}}],["x",{"_index":941,"title":{},"content":{"94":{"position":[[58,2]]}},"keywords":{}}],["y",{"_index":299,"title":{"21":{"position":[[8,1]]}},"content":{"9":{"position":[[1235,1],[1428,1],[1517,1],[2430,1],[2693,1],[2743,1],[2917,1],[3107,1],[3820,1],[4565,1]]},"13":{"position":[[671,1]]},"16":{"position":[[371,1]]},"17":{"position":[[408,1]]},"21":{"position":[[349,1],[697,1]]},"30":{"position":[[115,1]]},"32":{"position":[[129,1]]},"121":{"position":[[391,1]]},"131":{"position":[[314,1],[407,1],[844,1],[907,1],[1189,1],[1380,1]]}},"keywords":{}}],["yaml",{"_index":262,"title":{},"content":{"9":{"position":[[202,4],[598,4],[984,4],[4658,4],[4868,5]]},"21":{"position":[[569,4]]},"27":{"position":[[40,5]]},"50":{"position":[[309,4]]}},"keywords":{}}],["yaxis_max",{"_index":1095,"title":{},"content":{"131":{"position":[[469,9]]}},"keywords":{}}],["yaxis_min",{"_index":1094,"title":{},"content":{"131":{"position":[[455,9]]}},"keywords":{}}],["ye",{"_index":755,"title":{},"content":{"57":{"position":[[1,4]]},"70":{"position":[[1,4]]}},"keywords":{}}],["yellow",{"_index":724,"title":{},"content":{"52":{"position":[[50,6]]}},"keywords":{}}],["yesterday",{"_index":153,"title":{},"content":{"8":{"position":[[211,11],[1114,10],[1852,9]]},"9":{"position":[[1879,10],[2157,11],[4606,10]]},"16":{"position":[[645,9]]},"51":{"position":[[393,9]]},"95":{"position":[[146,11]]}},"keywords":{}}],["yesterday+today",{"_index":338,"title":{},"content":{"9":{"position":[[2349,15]]},"13":{"position":[[341,16]]},"16":{"position":[[70,15],[474,16]]}},"keywords":{}}],["yesterday/today/tomorrow",{"_index":443,"title":{},"content":{"15":{"position":[[571,26]]},"32":{"position":[[61,26]]}},"keywords":{}}],["you'll",{"_index":1434,"title":{},"content":{"167":{"position":[[207,6]]}},"keywords":{}}],["you'r",{"_index":406,"title":{},"content":{"11":{"position":[[4,6]]},"60":{"position":[[129,6]]},"126":{"position":[[36,6]]},"132":{"position":[[2001,6]]},"141":{"position":[[368,6]]},"151":{"position":[[38,6]]},"166":{"position":[[6,6],[122,6]]}},"keywords":{}}],["you'v",{"_index":1038,"title":{},"content":{"116":{"position":[[168,6]]}},"keywords":{}}],["your",{"_index":1062,"title":{},"content":{"120":{"position":[[141,5]]}},"keywords":{}}],["your_entry_id",{"_index":175,"title":{},"content":{"8":{"position":[[627,13],[1610,13],[2105,13],[2358,13]]},"9":{"position":[[1842,13],[3244,13],[3503,13]]},"10":{"position":[[163,13]]},"15":{"position":[[177,13]]},"16":{"position":[[231,13]]},"17":{"position":[[214,13]]},"50":{"position":[[107,13]]},"51":{"position":[[129,13],[578,13]]},"132":{"position":[[2262,13]]}},"keywords":{}}],["yourself",{"_index":1157,"title":{},"content":{"139":{"position":[[408,8]]}},"keywords":{}}],["zero",{"_index":1430,"title":{},"content":{"166":{"position":[[1492,4]]},"167":{"position":[[218,4]]}},"keywords":{}}],["zoom",{"_index":342,"title":{"17":{"position":[[23,4]]}},"content":{"9":{"position":[[2492,5],[2566,5]]},"13":{"position":[[436,4],[459,5],[707,4],[732,4]]},"17":{"position":[[63,5],[355,5]]},"32":{"position":[[179,4],[214,4]]},"51":{"position":[[459,4],[490,4],[732,5]]},"52":{"position":[[252,4]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/user/markdown-page.html b/user/markdown-page.html new file mode 100644 index 0000000..7510de4 --- /dev/null +++ b/user/markdown-page.html @@ -0,0 +1,19 @@ + + + + + +Markdown page example | Tibber Prices Integration + + + + + + + + + +

    Markdown page example

    +

    You don't need React to write simple standalone pages.

    + + \ No newline at end of file diff --git a/user/period-calculation.html b/user/period-calculation.html new file mode 100644 index 0000000..8177658 --- /dev/null +++ b/user/period-calculation.html @@ -0,0 +1,371 @@ + + + + + +Period Calculation | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Period Calculation

    +

    Learn how Best Price and Peak Price periods work, and how to configure them for your needs.

    +

    Table of Contents​

    + +
    +

    Quick Start​

    +

    What Are Price Periods?​

    +

    The integration finds time windows when electricity is especially cheap (Best Price) or expensive (Peak Price):

    +
      +
    • Best Price Periods 🟒 - When to run your dishwasher, charge your EV, or heat water
    • +
    • Peak Price Periods πŸ”΄ - When to reduce consumption or defer non-essential loads
    • +
    +

    Default Behavior​

    +

    Out of the box, the integration:

    +
      +
    1. Best Price: Finds cheapest 1-hour+ windows that are at least 5% below the daily average
    2. +
    3. Peak Price: Finds most expensive 30-minute+ windows that are at least 5% above the daily average
    4. +
    5. Relaxation: Automatically loosens filters if not enough periods are found
    6. +
    +

    Most users don't need to change anything! The defaults work well for typical use cases.

    +
    ℹ️ Why do Best Price and Peak Price have different defaults?

    The integration sets different initial defaults because the features serve different purposes:

    Best Price (60 min, 15% flex):

      +
    • Longer duration ensures appliances can complete their cycles
    • +
    • Stricter flex (15%) focuses on genuinely cheap times
    • +
    • Use case: Running dishwasher, EV charging, water heating
    • +

    Peak Price (30 min, 20% flex):

      +
    • Shorter duration acceptable for early warnings
    • +
    • More flexible (20%) catches price spikes earlier
    • +
    • Use case: Alerting to expensive periods, even brief ones
    • +

    You can adjust all these values in the configuration if the defaults don't fit your use case. The asymmetric defaults simply provide good starting points for typical scenarios.

    +

    Example Timeline​

    +
    00:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Best Price Period (cheap prices)
    04:00 β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ Normal
    08:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Peak Price Period (expensive prices)
    12:00 β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ Normal
    16:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Peak Price Period (expensive prices)
    20:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Best Price Period (cheap prices)
    +
    +

    How It Works​

    +

    The Basic Idea​

    +

    Each day, the integration analyzes all 96 quarter-hourly price intervals and identifies continuous time ranges that meet specific criteria.

    +

    Think of it like this:

    +
      +
    1. Find potential windows - Times close to the daily MIN (Best Price) or MAX (Peak Price)
    2. +
    3. Filter by quality - Ensure they're meaningfully different from average
    4. +
    5. Check duration - Must be long enough to be useful
    6. +
    7. Apply preferences - Optional: only show stable prices, avoid mediocre times
    8. +
    +

    Step-by-Step Process​

    +

    1. Define the Search Range (Flexibility)​

    +

    Best Price: How much MORE than the daily minimum can a price be?

    +
    Daily MIN: 20 ct/kWh
    Flexibility: 15% (default)
    β†’ Search for times ≀ 23 ct/kWh (20 + 15%)
    +

    Peak Price: How much LESS than the daily maximum can a price be?

    +
    Daily MAX: 40 ct/kWh
    Flexibility: -15% (default)
    β†’ Search for times β‰₯ 34 ct/kWh (40 - 15%)
    +

    Why flexibility? Prices rarely stay at exactly MIN/MAX. Flexibility lets you capture realistic time windows.

    +

    2. Ensure Quality (Distance from Average)​

    +

    Periods must be meaningfully different from the daily average:

    +
    Daily AVG: 30 ct/kWh
    Minimum distance: 5% (default)

    Best Price: Must be ≀ 28.5 ct/kWh (30 - 5%)
    Peak Price: Must be β‰₯ 31.5 ct/kWh (30 + 5%)
    +

    Why? This prevents marking mediocre times as "best" just because they're slightly below average.

    +

    3. Check Duration​

    +

    Periods must be long enough to be practical:

    +
    Default: 60 minutes minimum

    45-minute period β†’ Discarded
    90-minute period β†’ Kept βœ“
    +

    4. Apply Optional Filters​

    +

    You can optionally require:

    +
      +
    • Absolute quality (level filter) - "Only show if prices are CHEAP/EXPENSIVE (not just below/above average)"
    • +
    +

    5. Automatic Price Spike Smoothing​

    +

    Isolated price spikes are automatically detected and smoothed to prevent unnecessary period fragmentation:

    +
    Original prices: 18, 19, 35, 20, 19 ct   ← 35 ct is an isolated outlier
    Smoothed: 18, 19, 19, 20, 19 ct ← Spike replaced with trend prediction

    Result: Continuous period 00:00-01:15 instead of split periods
    +

    Important:

    +
      +
    • Original prices are always preserved (min/max/avg show real values)
    • +
    • Smoothing only affects which intervals are combined into periods
    • +
    • The attribute period_interval_smoothed_count shows if smoothing was active
    • +
    +

    Visual Example​

    +

    Timeline for a typical day:

    +
    Hour:  00  01  02  03  04  05  06  07  08  09  10  11  12  13  14  15  16  17  18  19  20  21  22  23
    Price: 18 19 20 28 29 30 35 34 33 32 30 28 25 24 26 28 30 32 31 22 21 20 19 18

    Daily MIN: 18 ct | Daily MAX: 35 ct | Daily AVG: 26 ct

    Best Price (15% flex = ≀20.7 ct):
    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
    00:00-03:00 (3h) 19:00-24:00 (5h)

    Peak Price (-15% flex = β‰₯29.75 ct):
    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
    06:00-11:00 (5h)
    +
    +

    Configuration Guide​

    +

    Basic Settings​

    +

    Flexibility​

    +

    What: How far from MIN/MAX to search for periods +Default: 15% (Best Price), -15% (Peak Price) +Range: 0-100%

    +
    best_price_flex: 15 # Can be up to 15% more expensive than daily MIN
    peak_price_flex: -15 # Can be up to 15% less expensive than daily MAX
    +

    When to adjust:

    +
      +
    • Increase (20-25%) β†’ Find more/longer periods
    • +
    • Decrease (5-10%) β†’ Find only the very best/worst times
    • +
    +

    πŸ’‘ Tip: Very high flexibility (>30%) is rarely useful. Recommendation: Start with 15-20% and enable relaxation – it adapts automatically to each day's price pattern.

    +

    Minimum Period Length​

    +

    What: How long a period must be to show it +Default: 60 minutes (Best Price), 30 minutes (Peak Price) +Range: 15-240 minutes

    +
    best_price_min_period_length: 60
    peak_price_min_period_length: 30
    +

    When to adjust:

    +
      +
    • Increase (90-120 min) β†’ Only show longer periods (e.g., for heat pump cycles)
    • +
    • Decrease (30-45 min) β†’ Show shorter windows (e.g., for quick tasks)
    • +
    +

    Distance from Average​

    +

    What: How much better than average a period must be +Default: 5% +Range: 0-20%

    +
    best_price_min_distance_from_avg: 5
    peak_price_min_distance_from_avg: 5
    +

    When to adjust:

    +
      +
    • Increase (5-10%) β†’ Only show clearly better times
    • +
    • Decrease (0-1%) β†’ Show any time below/above average
    • +
    +

    ℹ️ Note: Both flexibility and distance filters must be satisfied. When using high flexibility values (>30%), the distance filter may become the limiting factor. For best results, use moderate flexibility (15-20%) with relaxation enabled.

    +

    Optional Filters​

    +

    Level Filter (Absolute Quality)​

    +

    What: Only show periods with CHEAP/EXPENSIVE intervals (not just below/above average) +Default: any (disabled) +Options: any | cheap | very_cheap (Best Price) | expensive | very_expensive (Peak Price)

    +
    best_price_max_level: any      # Show any period below average
    best_price_max_level: cheap # Only show if at least one interval is CHEAP
    +

    Use case: "Only notify me when prices are objectively cheap/expensive"

    +

    ℹ️ Volatility Thresholds: The level filter also supports volatility-based levels (volatility_low, volatility_medium, volatility_high). These use fixed internal thresholds (LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%) that are separate from the sensor volatility thresholds you configure in the UI. This separation ensures that changing sensor display preferences doesn't affect period calculation behavior.

    +

    Gap Tolerance (for Level Filter)​

    +

    What: Allow some "mediocre" intervals within an otherwise good period +Default: 0 (strict) +Range: 0-10

    +
    best_price_max_level: cheap
    best_price_max_level_gap_count: 2 # Allow up to 2 NORMAL intervals per period
    +

    Use case: "Don't split periods just because one interval isn't perfectly CHEAP"

    +

    Tweaking Strategy: What to Adjust First?​

    +

    When you're not happy with the default behavior, adjust settings in this order:

    +

    1. Start with Relaxation (Easiest)​

    +

    If you're not finding enough periods:

    +
    enable_min_periods_best: true   # Already default!
    min_periods_best: 2 # Already default!
    relaxation_attempts_best: 11 # Already default!
    +

    Why start here? Relaxation automatically finds the right balance for each day. Much easier than manual tuning.

    +

    2. Adjust Period Length (Simple)​

    +

    If periods are too short/long for your use case:

    +
    best_price_min_period_length: 90  # Increase from 60 for longer periods
    # OR
    best_price_min_period_length: 45 # Decrease from 60 for shorter periods
    +

    Safe to change: This only affects duration, not price selection logic.

    +

    3. Fine-tune Flexibility (Moderate)​

    +

    If you consistently want more/fewer periods:

    +
    best_price_flex: 20  # Increase from 15% for more periods
    # OR
    best_price_flex: 10 # Decrease from 15% for stricter selection
    +

    ⚠️ Watch out: Values >25% may conflict with distance filter. Use relaxation instead.

    +

    4. Adjust Distance from Average (Advanced)​

    +

    Only if periods seem "mediocre" (not really cheap/expensive):

    +
    best_price_min_distance_from_avg: 10  # Increase from 5% for stricter quality
    +

    ⚠️ Careful: High values (>10%) can make it impossible to find periods on flat price days.

    +

    5. Enable Level Filter (Expert)​

    +

    Only if you want absolute quality requirements:

    +
    best_price_max_level: cheap  # Only show objectively CHEAP periods
    +

    ⚠️ Very strict: Many days may have zero qualifying periods. Always enable relaxation when using this!

    +

    Common Mistakes to Avoid​

    +

    ❌ Don't increase flexibility to >30% manually β†’ Use relaxation instead +❌ Don't combine high distance (>10%) with strict level filter β†’ Too restrictive +❌ Don't disable relaxation with strict filters β†’ You'll get zero periods on some days +❌ Don't change all settings at once β†’ Adjust one at a time and observe results

    +

    βœ… Do use defaults + relaxation β†’ Works for 90% of cases +βœ… Do adjust one setting at a time β†’ Easier to understand impact +βœ… Do check sensor attributes β†’ Shows why periods were/weren't found

    +
    +

    Understanding Relaxation​

    +

    What Is Relaxation?​

    +

    Sometimes, strict filters find too few periods (or none). Relaxation automatically loosens filters until a minimum number of periods is found.

    +

    How to Enable​

    +
    enable_min_periods_best: true
    min_periods_best: 2 # Try to find at least 2 periods per day
    relaxation_attempts_best: 11 # Flex levels to test (default: 11 steps = 22 filter combinations)
    +

    ℹ️ Good news: Relaxation is enabled by default with sensible settings. Most users don't need to change anything here!

    +

    Set the matching relaxation_attempts_peak value when tuning Peak Price periods. Both sliders accept 1-12 attempts, and the default of 11 flex levels translates to 22 filter-combination tries (11 flex levels Γ— 2 filter combos) for each of Best and Peak calculations. Lower it for quick feedback, or raise it when either sensor struggles to hit the minimum-period target on volatile days.

    +

    Why Relaxation Is Better Than Manual Tweaking​

    +

    Problem with manual settings:

    +
      +
    • You set flex to 25% β†’ Works great on Monday (volatile prices)
    • +
    • Same 25% flex on Tuesday (flat prices) β†’ Finds "best price" periods that aren't really cheap
    • +
    • You're stuck with one setting for all days
    • +
    +

    Solution with relaxation:

    +
      +
    • Monday (volatile): Uses flex 15% (original) β†’ Finds 2 perfect periods βœ“
    • +
    • Tuesday (flat): Escalates to flex 21% β†’ Finds 2 decent periods βœ“
    • +
    • Wednesday (mixed): Uses flex 18% β†’ Finds 2 good periods βœ“
    • +
    +

    Each day gets exactly the flexibility it needs!

    +

    How It Works (Adaptive Matrix)​

    +

    Relaxation uses a matrix approach - trying N flexibility levels (your configured relaxation attempts) with 2 filter combinations per level. With the default of 11 attempts, that means 11 flex levels Γ— 2 filter combinations = 22 total filter-combination tries per day; fewer attempts mean fewer flex increases, while more attempts extend the search further before giving up.

    +

    Important: The flexibility increment is fixed at 3% per step (hard-coded for reliability). This means:

    +
      +
    • Base flex 15% β†’ 18% β†’ 21% β†’ 24% β†’ ... β†’ 48% (with 11 attempts)
    • +
    • Base flex 20% β†’ 23% β†’ 26% β†’ 29% β†’ ... β†’ 50% (with 11 attempts)
    • +
    +

    Phase Matrix​

    +

    For each day, the system tries:

    +

    Flexibility Levels (Attempts):

    +
      +
    1. Attempt 1 = Original flex (e.g., 15%)
    2. +
    3. Attempt 2 = +3% step (18%)
    4. +
    5. Attempt 3 = +3% step (21%)
    6. +
    7. Attempt 4 = +3% step (24%)
    8. +
    9. … Attempts 5-11 (default) continue adding +3% each time
    10. +
    11. … Additional attempts keep extending the same pattern up to the 12-attempt maximum (up to 51%)
    12. +
    +

    2 Filter Combinations (per flexibility level):

    +
      +
    1. Original filters (your configured level filter)
    2. +
    3. Remove level filter (level=any)
    4. +
    +

    Example progression:

    +
    Flex 15% + Original filters β†’ Not enough periods
    Flex 15% + Level=any β†’ Not enough periods
    Flex 18% + Original filters β†’ Not enough periods
    Flex 18% + Level=any β†’ SUCCESS! Found 2 periods βœ“
    (stops here - no need to try more)
    +

    Choosing the Number of Attempts​

    +
      +
    • Default (11 attempts) balances speed and completeness for most grids (22 combinations per day for both Best and Peak)
    • +
    • Lower (4-8 attempts) if you only want mild relaxation and keep processing time minimal (reaches ~27-39% flex)
    • +
    • Higher (12 attempts) for extremely volatile days when you must reach near the 50% maximum (24 combinations)
    • +
    • Remember: each additional attempt adds two more filter combinations because every new flex level still runs both filter overrides (original + level=any)
    • +
    +

    Per-Day Independence​

    +

    Critical: Each day relaxes independently:

    +
    Day 1: Finds 2 periods with flex 15% (original) β†’ No relaxation needed
    Day 2: Needs flex 21% + level=any β†’ Uses relaxed settings
    Day 3: Finds 2 periods with flex 15% (original) β†’ No relaxation needed
    +

    Why? Price patterns vary daily. Some days have clear cheap/expensive windows (strict filters work), others don't (relaxation needed).

    +
    +

    Common Scenarios​

    +

    Scenario 1: Simple Best Price (Default)​

    +

    Goal: Find the cheapest time each day to run dishwasher

    +

    Configuration:

    +
    # Use defaults - no configuration needed!
    best_price_flex: 15 # (default)
    best_price_min_period_length: 60 # (default)
    best_price_min_distance_from_avg: 5 # (default)
    +

    What you get:

    +
      +
    • 1-3 periods per day with prices ≀ MIN + 15%
    • +
    • Each period at least 1 hour long
    • +
    • All periods at least 5% cheaper than daily average
    • +
    +

    Automation example:

    +
    automation:
    - trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    action:
    - service: switch.turn_on
    target:
    entity_id: switch.dishwasher
    +
    +

    Troubleshooting​

    +

    No Periods Found​

    +

    Symptom: binary_sensor.tibber_home_best_price_period never turns "on"

    +

    Common Solutions:

    +
      +
    1. +

      Check if relaxation is enabled

      +
      enable_min_periods_best: true  # Should be true (default)
      min_periods_best: 2 # Try to find at least 2 periods
      +
    2. +
    3. +

      If still no periods, check filters

      +
        +
      • Look at sensor attributes: relaxation_active and relaxation_level
      • +
      • If relaxation exhausted all attempts: Filters too strict or flat price day
      • +
      +
    4. +
    5. +

      Try increasing flexibility slightly

      +
      best_price_flex: 20  # Increase from default 15%
      +
    6. +
    7. +

      Or reduce period length requirement

      +
      best_price_min_period_length: 45  # Reduce from default 60 minutes
      +
    8. +
    +

    Periods Split Into Small Pieces​

    +

    Symptom: Many short periods instead of one long period

    +

    Common Solutions:

    +
      +
    1. +

      If using level filter, add gap tolerance

      +
      best_price_max_level: cheap
      best_price_max_level_gap_count: 2 # Allow 2 NORMAL intervals
      +
    2. +
    3. +

      Slightly increase flexibility

      +
      best_price_flex: 20  # From 15% β†’ captures wider price range
      +
    4. +
    5. +

      Check for price spikes

      +
        +
      • Automatic smoothing should handle this
      • +
      • Check attribute: period_interval_smoothed_count
      • +
      • If 0: Not isolated spikes, but real price levels
      • +
      +
    6. +
    +

    Understanding Sensor Attributes​

    +

    Key attributes to check:

    +
    # Entity: binary_sensor.tibber_home_best_price_period

    # When "on" (period active):
    start: "2025-11-11T02:00:00+01:00" # Period start time
    end: "2025-11-11T05:00:00+01:00" # Period end time
    duration_minutes: 180 # Duration in minutes
    price_avg: 18.5 # Average price in the period
    rating_level: "LOW" # All intervals have LOW rating

    # Relaxation info (shows if filter loosening was needed):
    relaxation_active: true # This day needed relaxation
    relaxation_level: "price_diff_18.0%+level_any" # Found at 18% flex, level filter removed

    # Optional (only shown when relevant):
    period_interval_smoothed_count: 2 # Number of price spikes smoothed
    period_interval_level_gap_count: 1 # Number of "mediocre" intervals tolerated
    +

    Midnight Price Classification Changes​

    +

    Symptom: A Best Price period at 23:45 suddenly changes to Peak Price at 00:00 (or vice versa), even though the absolute price barely changed.

    +

    Why This Happens:

    +

    This is mathematically correct behavior caused by how electricity prices are set in the day-ahead market:

    +

    Market Timing:

    +
      +
    • The EPEX SPOT Day-Ahead auction closes at 12:00 CET each day
    • +
    • All prices for the next day (00:00-23:45) are set at this moment
    • +
    • Late-day intervals (23:45) are priced ~36 hours before delivery
    • +
    • Early-day intervals (00:00) are priced ~12 hours before delivery
    • +
    +

    Why Prices Jump at Midnight:

    +
      +
    1. Forecast Uncertainty: Weather, demand, and renewable generation forecasts are more uncertain 36 hours ahead than 12 hours ahead
    2. +
    3. Risk Buffer: Late-day prices include a risk premium for this uncertainty
    4. +
    5. Independent Days: Each day has its own min/max/avg calculated from its 96 intervals
    6. +
    7. Relative Classification: Periods are classified based on their position within the day's price range, not absolute prices
    8. +
    +

    Example:

    +
    # Day 1 (low volatility, narrow range)
    Price range: 18-22 ct/kWh (4 ct span)
    Daily average: 20 ct/kWh
    23:45: 18.5 ct/kWh β†’ 7.5% below average β†’ BEST PRICE βœ…

    # Day 2 (low volatility, narrow range)
    Price range: 17-21 ct/kWh (4 ct span)
    Daily average: 19 ct/kWh
    00:00: 18.6 ct/kWh β†’ 2.1% below average β†’ PEAK PRICE ❌

    # Observation: Absolute price barely changed (18.5 β†’ 18.6 ct)
    # But relative position changed dramatically:
    # - Day 1: Near the bottom of the range
    # - Day 2: Near the middle/top of the range
    +

    When This Occurs:

    +
      +
    • Low-volatility days: When price span is narrow (< 5 ct/kWh)
    • +
    • Stable weather: Similar conditions across multiple days
    • +
    • Market transitions: Switching between high/low demand seasons
    • +
    +

    How to Detect:

    +

    Check the volatility sensors to understand if a period flip is meaningful:

    +
    # Check daily volatility (available in integration)
    sensor.tibber_home_volatility_today: 8.2% # Low volatility
    sensor.tibber_home_volatility_tomorrow: 7.9% # Also low

    # Low volatility (< 15%) means:
    # - Small absolute price differences between periods
    # - Classification changes may not be economically significant
    # - Consider ignoring period classification on such days
    +

    Handling in Automations:

    +

    You can make your automations volatility-aware:

    +
    # Option 1: Only act on high-volatility days
    automation:
    - alias: "Dishwasher - Best Price (High Volatility Only)"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    - condition: numeric_state
    entity_id: sensor.tibber_home_volatility_today
    above: 15 # Only act if volatility > 15%
    action:
    - service: switch.turn_on
    entity_id: switch.dishwasher

    # Option 2: Check absolute price, not just classification
    automation:
    - alias: "Heat Water - Cheap Enough"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    - condition: numeric_state
    entity_id: sensor.tibber_home_current_interval_price_ct
    below: 20 # Absolute threshold: < 20 ct/kWh
    action:
    - service: switch.turn_on
    entity_id: switch.water_heater

    # Option 3: Use per-period day volatility (available on period sensors)
    automation:
    - alias: "EV Charging - Volatility-Aware"
    trigger:
    - platform: state
    entity_id: binary_sensor.tibber_home_best_price_period
    to: "on"
    condition:
    # Check if the period's day has meaningful volatility
    - condition: template
    value_template: >
    {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }}
    action:
    - service: switch.turn_on
    entity_id: switch.ev_charger
    +

    Available Per-Period Attributes:

    +

    Each period sensor exposes day volatility and price statistics:

    +
    binary_sensor.tibber_home_best_price_period:
    day_volatility_%: 8.2 # Volatility % of the period's day
    day_price_min: 1800.0 # Minimum price of the day (ct/kWh)
    day_price_max: 2200.0 # Maximum price of the day (ct/kWh)
    day_price_span: 400.0 # Difference (max - min) in ct
    +

    These attributes allow automations to check: "Is the classification meaningful on this particular day?"

    +

    Summary:

    +
      +
    • βœ… Expected behavior: Periods are evaluated per-day, midnight is a natural boundary
    • +
    • βœ… Market reality: Late-day prices have more uncertainty than early-day prices
    • +
    • βœ… Solution: Use volatility sensors, absolute price thresholds, or per-period day volatility attributes
    • +
    +
    +

    Advanced Topics​

    +

    For advanced configuration patterns and technical deep-dive, see:

    +
      +
    • Automation Examples - Real-world automation patterns
    • +
    • Actions - Using the tibber_prices.get_chartdata action for custom visualizations
    • +
    +

    Quick Reference​

    +

    Configuration Parameters:

    +
    ParameterDefaultRangePurpose
    best_price_flex15%0-100%Search range from daily MIN
    best_price_min_period_length60 min15-240Minimum duration
    best_price_min_distance_from_avg5%0-20%Quality threshold
    best_price_max_levelanyany/cheap/vcheapAbsolute quality
    best_price_max_level_gap_count00-10Gap tolerance
    enable_min_periods_besttruetrue/falseEnable relaxation
    min_periods_best21-10Target periods per day
    relaxation_attempts_best111-12Flex levels (attempts) per day
    +

    Peak Price: Same parameters with peak_price_* prefix (defaults: flex=-15%, same otherwise)

    +

    Price Levels Reference​

    +

    The Tibber API provides price levels for each 15-minute interval:

    +

    Levels (based on trailing 24h average):

    +
      +
    • VERY_CHEAP - Significantly below average
    • +
    • CHEAP - Below average
    • +
    • NORMAL - Around average
    • +
    • EXPENSIVE - Above average
    • +
    • VERY_EXPENSIVE - Significantly above average
    • +
    +
    +

    Last updated: November 20, 2025 +Integration version: 2.0+

    + + \ No newline at end of file diff --git a/user/search-doc-1764985265728.json b/user/search-doc-1764985265728.json new file mode 100644 index 0000000..120cd90 --- /dev/null +++ b/user/search-doc-1764985265728.json @@ -0,0 +1 @@ +{"searchDocs":[{"title":"Core Concepts","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/concepts","content":"","keywords":"","version":"Next 🚧"},{"title":"Price Intervals​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#price-intervals","content":" The integration works with quarter-hourly intervals (15 minutes): Each interval has a start time (e.g., 14:00, 14:15, 14:30, 14:45)Prices are fixed for the entire intervalSynchronized with Tibber's smart meter readings ","version":"Next 🚧","tagName":"h2"},{"title":"Price Ratings​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#price-ratings","content":" Prices are automatically classified into rating levels: VERY_CHEAP - Exceptionally low prices (great for energy-intensive tasks)CHEAP - Below average prices (good for flexible loads)NORMAL - Around average prices (regular consumption)EXPENSIVE - Above average prices (reduce consumption if possible)VERY_EXPENSIVE - Exceptionally high prices (avoid heavy loads) Rating is based on statistical analysis comparing current price to: Daily averageTrailing 24-hour averageUser-configured thresholds ","version":"Next 🚧","tagName":"h2"},{"title":"Price Periods​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#price-periods","content":" Best Price Periods and Peak Price Periods are automatically detected time windows: Best Price Period - Consecutive intervals with favorable prices (for scheduling energy-heavy tasks)Peak Price Period - Time windows with highest prices (to avoid or shift consumption) Periods can: Span multiple hoursCross midnight boundariesAdapt based on your configuration (flex, min_distance, rating levels) See Period Calculation for detailed configuration. ","version":"Next 🚧","tagName":"h2"},{"title":"Statistical Analysis​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#statistical-analysis","content":" The integration enriches every interval with context: Trailing 24h Average - Average price over the last 24 hoursLeading 24h Average - Average price over the next 24 hoursPrice Difference - How much current price deviates from average (in %)Volatility - Price stability indicator (LOW, MEDIUM, HIGH) This helps you understand if current prices are exceptional or typical. ","version":"Next 🚧","tagName":"h2"},{"title":"Multi-Home Support​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#multi-home-support","content":" You can add multiple Tibber homes to track prices for: Different locationsDifferent electricity contractsComparison between regions Each home gets its own set of sensors with unique entity IDs. πŸ’‘ Next Steps: Glossary - Detailed term definitionsSensors - How to use sensor dataAutomation Examples - Practical use cases ","version":"Next 🚧","tagName":"h2"},{"title":"Actions (Services)","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/actions","content":"","keywords":"","version":"Next 🚧"},{"title":"Available Actions​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#available-actions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"tibber_prices.get_chartdata​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#tibber_pricesget_chartdata","content":" Purpose: Returns electricity price data in chart-friendly formats for visualization and analysis. Key Features: Flexible Output Formats: Array of objects or array of arraysTime Range Selection: Filter by day (yesterday, today, tomorrow)Price Filtering: Filter by price level or ratingPeriod Support: Return best/peak price period summaries instead of intervalsResolution Control: Interval (15-minute) or hourly aggregationCustomizable Field Names: Rename output fields to match your chart libraryCurrency Control: Major (EUR/NOK) or minor (ct/ΓΈre) units Basic Example: service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID day: ["today", "tomorrow"] output_format: array_of_objects response_variable: chart_data Response Format: { "data": [ { "start_time": "2025-11-17T00:00:00+01:00", "price_per_kwh": 0.2534 }, { "start_time": "2025-11-17T00:15:00+01:00", "price_per_kwh": 0.2498 } ] } Common Parameters: Parameter\tDescription\tDefaultentry_id\tIntegration entry ID (required)\t- day\tDays to include: yesterday, today, tomorrow\t["today", "tomorrow"] output_format\tarray_of_objects or array_of_arrays\tarray_of_objects resolution\tinterval (15-min) or hourly\tinterval minor_currency\tReturn prices in ct/ΓΈre instead of EUR/NOK\tfalse round_decimals\tDecimal places (0-10)\t4 (major) or 2 (minor) Rolling Window Mode: Omit the day parameter to get a dynamic 48-hour rolling window that automatically adapts to data availability: service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID # Omit 'day' for rolling window output_format: array_of_objects response_variable: chart_data Behavior: When tomorrow data available (typically after ~13:00): Returns today + tomorrowWhen tomorrow data not available: Returns yesterday + today This is useful for charts that should always show a 48-hour window without manual day selection. Period Filter Example: Get best price periods as summaries instead of intervals: service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID period_filter: best_price # or peak_price day: ["today", "tomorrow"] include_level: true include_rating_level: true response_variable: periods Advanced Filtering: service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID level_filter: ["VERY_CHEAP", "CHEAP"] # Only cheap periods rating_level_filter: ["LOW"] # Only low-rated prices insert_nulls: segments # Add nulls at segment boundaries Complete Documentation: For detailed parameter descriptions, open Developer Tools β†’ Actions (the UI label) and select tibber_prices.get_chartdata. The inline documentation is still stored in services.yaml because actions are backed by services. ","version":"Next 🚧","tagName":"h3"},{"title":"tibber_prices.get_apexcharts_yaml​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#tibber_pricesget_apexcharts_yaml","content":" ⚠️ IMPORTANT: This action generates a basic example configuration as a starting point, NOT a complete solution for all ApexCharts features. This integration is primarily a data provider. The generated YAML demonstrates how to use the get_chartdata action to fetch price data. Due to the segmented nature of our data (different time periods per series) and the use of Home Assistant's service API instead of entity attributes, many advanced ApexCharts features (like in_header, certain transformations) are not compatible or require manual customization. You are welcome to customize the generated YAML for your specific needs, but comprehensive ApexCharts configuration support is beyond the scope of this integration. Community contributions with improved configurations are always appreciated! For custom solutions: Use the get_chartdata action directly to build your own charts with full control over the data format and visualization. Purpose: Generates a basic ApexCharts card YAML configuration example for visualizing electricity prices with automatic color-coding by price level. Prerequisites: ApexCharts Card (required for all configurations)Config Template Card (required only for rolling window modes - enables dynamic Y-axis scaling) ✨ Key Features: Automatic Color-Coded Series: Separate series for each price level (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) or rating (LOW, NORMAL, HIGH)Dynamic Y-Axis Scaling: Rolling window modes automatically use chart_metadata sensor for optimal Y-axis boundsBest Price Period Highlights: Optional vertical bands showing detected best price periodsTranslated Labels: Automatically uses your Home Assistant language settingClean Gap Visualization: Proper NULL insertion for missing data segments Quick Example: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: today # Optional: yesterday, today, tomorrow, rolling_window, rolling_window_autozoom level_type: rating_level # or "level" for 5-level classification highlight_best_price: true # Show best price period overlays response_variable: apexcharts_config Day Parameter Options: Fixed days (yesterday, today, tomorrow): Static 24-hour views, no additional dependenciesRolling Window (default when omitted or rolling_window): Dynamic 48-hour window that automatically shifts between yesterday+today and today+tomorrow based on data availability ✨ Includes dynamic Y-axis scaling via chart_metadata sensor Rolling Window (Auto-Zoom) (rolling_window_autozoom): Same as rolling window, but additionally zooms in progressively (2h lookback + remaining time until midnight, graph span decreases every 15 minutes) ✨ Includes dynamic Y-axis scaling via chart_metadata sensor Dynamic Y-Axis Scaling (Rolling Window Modes): Rolling window configurations automatically integrate with the chart_metadata sensor for optimal chart appearance: Automatic bounds: Y-axis min/max adjust to data rangeNo manual configuration: Works out of the box if sensor is enabledFallback behavior: If sensor is disabled, uses ApexCharts auto-scalingReal-time updates: Y-axis adapts when price data changes Example: Today's Prices (Static View) service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: today level_type: rating_level response_variable: config # Use in dashboard: type: custom:apexcharts-card # ... paste generated config Example: Rolling 48h Window (Dynamic View) service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID # Omit 'day' for rolling window (or use 'rolling_window') level_type: level # 5-level classification highlight_best_price: true response_variable: config # Use in dashboard: type: custom:config-template-card entities: - sensor.tibber_home_tomorrow_data - sensor.tibber_home_chart_metadata # For dynamic Y-axis card: # ... paste generated config Screenshots: Screenshots coming soon for all 4 modes: today, tomorrow, rolling_window, rolling_window_autozoom Level Type Options: rating_level (default): 3 series (LOW, NORMAL, HIGH) - based on your personal thresholdslevel: 5 series (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) - absolute price ranges Best Price Period Highlights: When highlight_best_price: true: Vertical bands overlay the chart showing detected best price periodsTooltip shows "Best Price Period" label when hovering over highlighted areasOnly appears when best price periods are configured and detected Important Notes: Config Template Card is only required for rolling window modes (enables dynamic Y-axis)Fixed day views (today, tomorrow, yesterday) work with ApexCharts Card aloneGenerated YAML is a starting point - customize colors, styling, features as neededAll labels are automatically translated to your Home Assistant language Use the response in Lovelace dashboards by copying the generated YAML. Documentation: Refer to Developer Tools β†’ Actions for descriptions of the fields exposed by this action. ","version":"Next 🚧","tagName":"h3"},{"title":"tibber_prices.refresh_user_data​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#tibber_pricesrefresh_user_data","content":" Purpose: Forces an immediate refresh of user data (homes, subscriptions) from the Tibber API. Example: service: tibber_prices.refresh_user_data data: entry_id: YOUR_ENTRY_ID Note: User data is cached for 24 hours. Trigger this action only when you need immediate updates (e.g., after changing Tibber subscriptions). ","version":"Next 🚧","tagName":"h3"},{"title":"Migration from Chart Data Export Sensor​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#migration-from-chart-data-export-sensor","content":" If you're still using the sensor.tibber_home_chart_data_export sensor, consider migrating to the tibber_prices.get_chartdata action: Benefits: No HA restart required for configuration changesMore flexible filtering and formatting optionsBetter performance (on-demand instead of polling)Future-proof (active development) Migration Steps: Note your current sensor configuration (Step 7 in Options Flow)Create automation/script that calls tibber_prices.get_chartdata with the same parametersTest the new approachDisable the old sensor when satisfied ","version":"Next 🚧","tagName":"h2"},{"title":"Chart Examples","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/chart-examples","content":"","keywords":"","version":"Next 🚧"},{"title":"Overview​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#overview","content":" The integration can generate 4 different chart modes, each optimized for specific use cases: Mode\tDescription\tBest For\tDependenciesToday\tStatic 24h view of today's prices\tQuick daily overview\tApexCharts Card Tomorrow\tStatic 24h view of tomorrow's prices\tPlanning tomorrow\tApexCharts Card Rolling Window\tDynamic 48h view (today+tomorrow or yesterday+today)\tAlways-current overview\tApexCharts + Config Template Card Rolling Window Auto-Zoom\tDynamic view that zooms in as day progresses\tReal-time focus on remaining day\tApexCharts + Config Template Card Screenshots available for: βœ… Today (static) - Representative of all fixed day viewsβœ… Rolling Window - Shows dynamic Y-axis scalingβœ… Rolling Window Auto-Zoom - Shows progressive zoom effect ","version":"Next 🚧","tagName":"h2"},{"title":"All Chart Modes​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#all-chart-modes","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Today's Prices (Static)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#1-todays-prices-static","content":" When to use: Simple daily price overview, no dynamic updates needed. Dependencies: ApexCharts Card only Generate: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: today level_type: rating_level highlight_best_price: true Screenshot: Key Features: βœ… Color-coded price levels (LOW, NORMAL, HIGH)βœ… Best price period highlights (vertical bands)βœ… Static 24-hour view (00:00 - 23:59)βœ… Works with ApexCharts Card alone Note: Tomorrow view (day: tomorrow) works identically to Today view, just showing tomorrow's data. All fixed day views (yesterday/today/tomorrow) use the same visualization approach. ","version":"Next 🚧","tagName":"h3"},{"title":"2. Rolling 48h Window (Dynamic)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#2-rolling-48h-window-dynamic","content":" When to use: Always-current view that automatically switches between yesterday+today and today+tomorrow. Dependencies: ApexCharts Card + Config Template Card Generate: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID # Omit 'day' for rolling window level_type: rating_level highlight_best_price: true Screenshot: Key Features: βœ… Dynamic Y-axis scaling via chart_metadata sensorβœ… Automatic data selection: today+tomorrow (when available) or yesterday+todayβœ… Always shows 48 hours of dataβœ… Updates automatically when tomorrow's data arrivesβœ… Color gradients for visual appeal How it works: Before ~13:00: Shows yesterday + todayAfter ~13:00: Shows today + tomorrowY-axis automatically adjusts to data range for optimal visualization ","version":"Next 🚧","tagName":"h3"},{"title":"3. Rolling Window Auto-Zoom (Dynamic)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#3-rolling-window-auto-zoom-dynamic","content":" When to use: Real-time focus on remaining day - progressively zooms in as day advances. Dependencies: ApexCharts Card + Config Template Card Generate: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: rolling_window_autozoom level_type: rating_level highlight_best_price: true Screenshot: Key Features: βœ… Progressive zoom: Graph span decreases every 15 minutesβœ… Dynamic Y-axis scaling via chart_metadata sensorβœ… Always shows: 2 hours lookback + remaining time until midnightβœ… Perfect for real-time price monitoringβœ… Example: At 18:00, shows 16:00 β†’ 00:00 (8h window) How it works: 00:00: Shows full 48h window (same as rolling window)06:00: Shows 04:00 β†’ midnight (20h window)12:00: Shows 10:00 β†’ midnight (14h window)18:00: Shows 16:00 β†’ midnight (8h window)23:45: Shows 21:45 β†’ midnight (2.25h window) This creates a "zooming in" effect that focuses on the most relevant remaining time. ","version":"Next 🚧","tagName":"h3"},{"title":"Comparison: Level Type Options​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#comparison-level-type-options","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Rating Level (3 series)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#rating-level-3-series","content":" Based on your personal price thresholds (configured in Options Flow): LOW (Green): Below your "cheap" thresholdNORMAL (Blue): Between thresholdsHIGH (Red): Above your "expensive" threshold Best for: Personal decision-making based on your budget ","version":"Next 🚧","tagName":"h3"},{"title":"Level (5 series)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#level-5-series","content":" Based on absolute price ranges (calculated from daily min/max): VERY_CHEAP (Dark Green): Bottom 20%CHEAP (Light Green): 20-40%NORMAL (Blue): 40-60%EXPENSIVE (Orange): 60-80%VERY_EXPENSIVE (Red): Top 20% Best for: Objective price distribution visualization ","version":"Next 🚧","tagName":"h3"},{"title":"Dynamic Y-Axis Scaling​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#dynamic-y-axis-scaling","content":" Rolling window modes (2 & 3) automatically integrate with the chart_metadata sensor for optimal visualization: Without chart_metadata sensor (disabled): β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ ← Lots of empty space β”‚ ___ β”‚ β”‚ ___/ \\___ β”‚ β”‚_/ \\_ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ 0 100 ct With chart_metadata sensor (enabled): β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ___ β”‚ ← Y-axis fitted to data β”‚ ___/ \\___ β”‚ β”‚_/ \\_ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ 18 28 ct ← Optimal range Requirements: βœ… The sensor.tibber_home_chart_metadata must be enabled (it's enabled by default!)βœ… That's it! The generated YAML automatically uses the sensor for dynamic scaling Important: Do NOT disable the chart_metadata sensor if you want optimal Y-axis scaling in rolling window modes! Note: Fixed day views (today, tomorrow) use ApexCharts' built-in auto-scaling and don't require the metadata sensor. ","version":"Next 🚧","tagName":"h2"},{"title":"Best Price Period Highlights​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#best-price-period-highlights","content":" When highlight_best_price: true, vertical bands overlay the chart showing detected best price periods: Example: Price β”‚ 30β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” Normal prices β”‚ β”‚ β”‚ 25β”‚ β–“β–“β–“β–“β–“β–“β”‚ β”‚ ← Best price period (shaded) β”‚ β–“β–“β–“β–“β–“β–“β”‚ β”‚ 20│─────▓▓▓▓▓▓│─────────│ β”‚ β–“β–“β–“β–“β–“β–“ └─────────────────────── Time 06:00 12:00 18:00 Features: Automatic detection based on your configuration (see Period Calculation Guide)Tooltip shows "Best Price Period" labelOnly appears when periods are configured and detectedCan be disabled with highlight_best_price: false ","version":"Next 🚧","tagName":"h2"},{"title":"Prerequisites​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#prerequisites","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Required for All Modes​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#required-for-all-modes","content":" ApexCharts Card: Core visualization library # Install via HACS HACS β†’ Frontend β†’ Search "ApexCharts Card" β†’ Download ","version":"Next 🚧","tagName":"h3"},{"title":"Required for Rolling Window Modes Only​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#required-for-rolling-window-modes-only","content":" Config Template Card: Enables dynamic configuration # Install via HACS HACS β†’ Frontend β†’ Search "Config Template Card" β†’ Download Note: Fixed day views (today, tomorrow) work with ApexCharts Card alone! ","version":"Next 🚧","tagName":"h3"},{"title":"Tips & Tricks​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#tips--tricks","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Customizing Colors​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#customizing-colors","content":" Edit the colors array in the generated YAML: apex_config: colors: - "#00FF00" # Change LOW/VERY_CHEAP color - "#0000FF" # Change NORMAL color - "#FF0000" # Change HIGH/VERY_EXPENSIVE color ","version":"Next 🚧","tagName":"h3"},{"title":"Changing Chart Height​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#changing-chart-height","content":" Add to the card configuration: type: custom:apexcharts-card graph_span: 48h header: show: true title: My Custom Title apex_config: chart: height: 400 # Adjust height in pixels ","version":"Next 🚧","tagName":"h3"},{"title":"Combining with Other Cards​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#combining-with-other-cards","content":" Wrap in a vertical stack for dashboard integration: type: vertical-stack cards: - type: entity entity: sensor.tibber_home_current_interval_price - type: custom:apexcharts-card # ... generated chart config ","version":"Next 🚧","tagName":"h3"},{"title":"Next Steps​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#next-steps","content":" Actions Guide: Complete documentation of get_apexcharts_yaml parametersChart Metadata Sensor: Learn about dynamic Y-axis scalingPeriod Calculation Guide: Configure best price period detection ","version":"Next 🚧","tagName":"h2"},{"title":"Screenshots​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#screenshots","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Gallery​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#gallery","content":" Today View (Static) - Representative of all fixed day views (yesterday/today/tomorrow) Rolling Window (Dynamic) - Shows dynamic Y-axis scaling and 48h window Rolling Window Auto-Zoom (Dynamic) - Shows progressive zoom effect Note: Tomorrow view is visually identical to Today view (same chart type, just different data). ","version":"Next 🚧","tagName":"h3"},{"title":"Configuration","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/configuration","content":"","keywords":"","version":"Next 🚧"},{"title":"Initial Setup​","type":1,"pageTitle":"Configuration","url":"/hass.tibber_prices/user/configuration#initial-setup","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Configuration Options​","type":1,"pageTitle":"Configuration","url":"/hass.tibber_prices/user/configuration#configuration-options","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Price Thresholds​","type":1,"pageTitle":"Configuration","url":"/hass.tibber_prices/user/configuration#price-thresholds","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Automation Examples","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/automation-examples","content":"","keywords":"","version":"Next 🚧"},{"title":"Table of Contents​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#table-of-contents","content":" Price-Based AutomationsVolatility-Aware AutomationsBest Hour DetectionApexCharts Cards ","version":"Next 🚧","tagName":"h2"},{"title":"Price-Based Automations​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#price-based-automations","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Volatility-Aware Automations​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#volatility-aware-automations","content":" These examples show how to handle low-volatility days where period classifications may flip at midnight despite minimal absolute price changes. ","version":"Next 🚧","tagName":"h2"},{"title":"Use Case: Only Act on High-Volatility Days​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-only-act-on-high-volatility-days","content":" On days with low price variation (< 15% volatility), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when the savings are meaningful: automation: - alias: "Dishwasher - Best Price (High Volatility Only)" description: "Start dishwasher during Best Price period, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Only act if volatility > 15% (meaningful savings) - condition: numeric_state entity_id: sensor.tibber_home_volatility_today above: 15 # Optional: Ensure dishwasher is idle and door closed - condition: state entity_id: binary_sensor.dishwasher_door state: "off" action: - service: switch.turn_on target: entity_id: switch.dishwasher_smart_plug - service: notify.mobile_app data: message: "Dishwasher started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ states('sensor.tibber_home_volatility_today') }}%)" Why this works: On high-volatility days (e.g., 25% span), Best Price periods save 5-10 ct/kWhOn low-volatility days (e.g., 8% span), savings are only 1-2 ct/kWhUser can manually start dishwasher on low-volatility days without automation interference ","version":"Next 🚧","tagName":"h3"},{"title":"Use Case: Absolute Price Threshold​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-absolute-price-threshold","content":" Instead of relying on relative classification, check if the absolute price is cheap enough: automation: - alias: "Water Heater - Cheap Enough" description: "Heat water when price is below absolute threshold, regardless of period classification" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Absolute threshold: Only run if < 20 ct/kWh - condition: numeric_state entity_id: sensor.tibber_home_current_interval_price_ct below: 20 # Optional: Check water temperature - condition: numeric_state entity_id: sensor.water_heater_temperature below: 55 # Only heat if below 55Β°C action: - service: switch.turn_on target: entity_id: switch.water_heater - delay: hours: 2 # Heat for 2 hours - service: switch.turn_off target: entity_id: switch.water_heater Why this works: Period classification can flip at midnight on low-volatility daysAbsolute threshold (20 ct/kWh) is stable across midnight boundaryUser sets their own "cheap enough" price based on local rates ","version":"Next 🚧","tagName":"h3"},{"title":"Use Case: Combined Volatility and Price Check​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-combined-volatility-and-price-check","content":" Most robust approach: Check both volatility and absolute price: automation: - alias: "EV Charging - Smart Strategy" description: "Charge EV using volatility-aware logic" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Check battery level - condition: numeric_state entity_id: sensor.ev_battery_level below: 80 # Strategy: High volatility OR cheap enough - condition: or conditions: # Path 1: High volatility day - trust period classification - condition: numeric_state entity_id: sensor.tibber_home_volatility_today above: 15 # Path 2: Low volatility but price is genuinely cheap - condition: numeric_state entity_id: sensor.tibber_home_current_interval_price_ct below: 18 action: - service: switch.turn_on target: entity_id: switch.ev_charger - service: notify.mobile_app data: message: > EV charging started: {{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh (Volatility: {{ states('sensor.tibber_home_volatility_today') }}%) Why this works: On high-volatility days (> 15%): Trust the Best Price classificationOn low-volatility days (< 15%): Only charge if price is actually cheap (< 18 ct/kWh)Handles midnight flips gracefully: Continues charging if price stays cheap ","version":"Next 🚧","tagName":"h3"},{"title":"Use Case: Ignore Period Flips During Active Period​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-ignore-period-flips-during-active-period","content":" Prevent automations from stopping mid-cycle when a period flips at midnight: automation: - alias: "Washing Machine - Complete Cycle" description: "Start washing machine during Best Price, ignore midnight flips" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Only start if washing machine is idle - condition: state entity_id: sensor.washing_machine_state state: "idle" # And volatility is meaningful - condition: numeric_state entity_id: sensor.tibber_home_volatility_today above: 15 action: - service: button.press target: entity_id: button.washing_machine_eco_program # Create input_boolean to track active cycle - service: input_boolean.turn_on target: entity_id: input_boolean.washing_machine_auto_started # Separate automation: Clear flag when cycle completes - alias: "Washing Machine - Cycle Complete" trigger: - platform: state entity_id: sensor.washing_machine_state to: "finished" condition: # Only clear flag if we auto-started it - condition: state entity_id: input_boolean.washing_machine_auto_started state: "on" action: - service: input_boolean.turn_off target: entity_id: input_boolean.washing_machine_auto_started - service: notify.mobile_app data: message: "Washing cycle complete" Why this works: Uses input_boolean to track auto-started cyclesWon't trigger multiple times if period flips during the 2-3 hour wash cycleOnly triggers on "off" β†’ "on" transitions, not during "on" β†’ "on" continuity ","version":"Next 🚧","tagName":"h3"},{"title":"Use Case: Per-Period Day Volatility​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-per-period-day-volatility","content":" The simplest approach: Use the period's day volatility attribute directly: automation: - alias: "Heat Pump - Smart Heating" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Check if the PERIOD'S DAY has meaningful volatility - condition: template value_template: > {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }} action: - service: climate.set_temperature target: entity_id: climate.heat_pump data: temperature: 22 # Boost temperature during cheap period Available per-period attributes: day_volatility_%: Percentage volatility of the period's day (e.g., 8.2 for 8.2%)day_price_min: Minimum price of the day in minor currency (ct/ΓΈre)day_price_max: Maximum price of the day in minor currency (ct/ΓΈre)day_price_span: Absolute difference (max - min) in minor currency (ct/ΓΈre) These attributes are available on both binary_sensor.tibber_home_best_price_period and binary_sensor.tibber_home_peak_price_period. Why this works: Each period knows its day's volatilityNo need to query separate sensorsTemplate checks if saving is meaningful (> 15% volatility) ","version":"Next 🚧","tagName":"h3"},{"title":"Best Hour Detection​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#best-hour-detection","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"ApexCharts Cards​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#apexcharts-cards","content":" ⚠️ IMPORTANT: The tibber_prices.get_apexcharts_yaml service generates a basic example configuration as a starting point. It is NOT a complete solution for all ApexCharts features. This integration is primarily a data provider. Due to technical limitations (segmented time periods, service API usage), many advanced ApexCharts features require manual customization or may not be compatible. For advanced customization: Use the get_chartdata service directly to build charts tailored to your specific needs. Community contributions with improved configurations are welcome! The tibber_prices.get_apexcharts_yaml service generates basic ApexCharts card configuration examples for visualizing electricity prices. ","version":"Next 🚧","tagName":"h2"},{"title":"Prerequisites​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#prerequisites","content":" Required: ApexCharts Card - Install via HACS Optional (for rolling window mode): Config Template Card - Install via HACS ","version":"Next 🚧","tagName":"h3"},{"title":"Installation​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#installation","content":" Open HACS β†’ FrontendSearch for "ApexCharts Card" and install(Optional) Search for "Config Template Card" and install if you want rolling window mode ","version":"Next 🚧","tagName":"h3"},{"title":"Example: Fixed Day View​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#example-fixed-day-view","content":" # Generate configuration via automation/script service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: today # or "yesterday", "tomorrow" level_type: rating_level # or "level" for 5-level view response_variable: apexcharts_config Then copy the generated YAML into your Lovelace dashboard. ","version":"Next 🚧","tagName":"h3"},{"title":"Example: Rolling 48h Window​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#example-rolling-48h-window","content":" For a dynamic chart that automatically adapts to data availability: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: rolling_window # Or omit for same behavior (default) level_type: rating_level response_variable: apexcharts_config Behavior: When tomorrow data available (typically after ~13:00): Shows today + tomorrowWhen tomorrow data not available: Shows yesterday + todayFixed 48h span: Always shows full 48 hours Auto-Zoom Variant: For progressive zoom-in throughout the day: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: rolling_window_autozoom level_type: rating_level response_variable: apexcharts_config Same data loading as rolling windowProgressive zoom: Graph span starts at ~26h in the morning and decreases to ~14h by midnightUpdates every 15 minutes: Always shows 2h lookback + remaining time until midnight Note: Rolling window modes require Config Template Card to dynamically adjust the time range. ","version":"Next 🚧","tagName":"h3"},{"title":"Features​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#features","content":" Color-coded price levels/ratings (green = cheap, yellow = normal, red = expensive)Best price period highlighting (semi-transparent green overlay)Automatic NULL insertion for clean gapsTranslated labels based on your Home Assistant languageInteractive zoom and panLive marker showing current time ","version":"Next 🚧","tagName":"h3"},{"title":"FAQ - Frequently Asked Questions","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/faq","content":"","keywords":"","version":"Next 🚧"},{"title":"General Questions​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#general-questions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Why don't I see tomorrow's prices yet?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#why-dont-i-see-tomorrows-prices-yet","content":" Tomorrow's prices are published by Tibber around 13:00 CET (12:00 UTC in winter, 11:00 UTC in summer). Before publication: Sensors show unavailable or use today's dataAfter publication: Integration automatically fetches new data within 15 minutesNo manual refresh needed - polling happens automatically ","version":"Next 🚧","tagName":"h3"},{"title":"How often does the integration update data?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#how-often-does-the-integration-update-data","content":" API Polling: Every 15 minutesSensor Updates: On quarter-hour boundaries (00, 15, 30, 45 minutes)Cache: Price data cached until midnight (reduces API load) ","version":"Next 🚧","tagName":"h3"},{"title":"Can I use multiple Tibber homes?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#can-i-use-multiple-tibber-homes","content":" Yes! Use the "Add another home" option: Settings β†’ Devices & Services β†’ Tibber PricesClick "Configure" β†’ "Add another home"Select additional home from dropdownEach home gets separate sensors with unique entity IDs ","version":"Next 🚧","tagName":"h3"},{"title":"Does this work without a Tibber subscription?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#does-this-work-without-a-tibber-subscription","content":" No, you need: Active Tibber electricity contractAPI token from developer.tibber.com The integration is free, but requires Tibber as your electricity provider. ","version":"Next 🚧","tagName":"h3"},{"title":"Configuration Questions​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#configuration-questions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"What are good values for price thresholds?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#what-are-good-values-for-price-thresholds","content":" Default values work for most users: High Price Threshold: 30% above averageLow Price Threshold: 15% below average Adjust if: You're in a market with high volatility β†’ increase thresholdsYou want more sensitive ratings β†’ decrease thresholdsSeasonal changes β†’ review every few months ","version":"Next 🚧","tagName":"h3"},{"title":"How do I optimize Best Price Period detection?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#how-do-i-optimize-best-price-period-detection","content":" Key parameters: Flex: 15-20% is optimal (default 15%)Min Distance: 5-10% recommended (default 5%)Rating Levels: Start with "CHEAP + VERY_CHEAP" (default)Relaxation: Keep enabled (helps find periods on expensive days) See Period Calculation for detailed tuning guide. ","version":"Next 🚧","tagName":"h3"},{"title":"Why do I sometimes only get 1 period instead of 2?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#why-do-i-sometimes-only-get-1-period-instead-of-2","content":" This happens on high-price days when: Few intervals meet your criteriaRelaxation is disabledFlex is too lowMin Distance is too strict Solutions: Enable relaxation (recommended)Increase flex to 20-25%Reduce min_distance to 3-5%Add more rating levels (include "NORMAL") ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#troubleshooting","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Sensors show \"unavailable\"​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#sensors-show-unavailable","content":" Common causes: API Token invalid β†’ Check token at developer.tibber.comNo internet connection β†’ Check HA networkTibber API down β†’ Check status.tibber.comIntegration not loaded β†’ Restart Home Assistant ","version":"Next 🚧","tagName":"h3"},{"title":"Best Price Period is ON all day​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#best-price-period-is-on-all-day","content":" This means all intervals meet your criteria (very cheap day!): Not an error - enjoy the low prices!Consider tightening filters (lower flex, higher min_distance)Or add automation to only run during first detected period ","version":"Next 🚧","tagName":"h3"},{"title":"Prices are in wrong currency​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#prices-are-in-wrong-currency","content":" Integration uses currency from your Tibber subscription: EUR β†’ displays in ct/kWhNOK/SEK β†’ displays in ΓΈre/kWh Cannot be changed (tied to your electricity contract). ","version":"Next 🚧","tagName":"h3"},{"title":"Tomorrow data not appearing at all​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#tomorrow-data-not-appearing-at-all","content":" Check: Your Tibber home has hourly price contract (not fixed price)API token has correct permissionsIntegration logs for API errors (/config/home-assistant.log)Tibber actually published data (check Tibber app) ","version":"Next 🚧","tagName":"h3"},{"title":"Automation Questions​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#automation-questions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"How do I run dishwasher during cheap period?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#how-do-i-run-dishwasher-during-cheap-period","content":" automation: - alias: "Dishwasher during Best Price" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: - condition: time after: "20:00:00" # Only start after 8 PM action: - service: switch.turn_on target: entity_id: switch.dishwasher See Automation Examples for more recipes. ","version":"Next 🚧","tagName":"h3"},{"title":"Can I avoid peak prices automatically?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#can-i-avoid-peak-prices-automatically","content":" Yes! Use Peak Price Period binary sensor: automation: - alias: "Disable charging during peak prices" trigger: - platform: state entity_id: binary_sensor.tibber_home_peak_price_period to: "on" action: - service: switch.turn_off target: entity_id: switch.ev_charger πŸ’‘ Still need help? Troubleshooting GuideGitHub Issues ","version":"Next 🚧","tagName":"h3"},{"title":"Dashboard Examples","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/dashboard-examples","content":"","keywords":"","version":"Next 🚧"},{"title":"Basic Price Display Card​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#basic-price-display-card","content":" Simple card showing current price with dynamic color: type: entities title: Current Electricity Price entities: - entity: sensor.tibber_home_current_interval_price name: Current Price icon: mdi:flash - entity: sensor.tibber_home_current_interval_rating name: Price Rating - entity: sensor.tibber_home_next_interval_price name: Next Price ","version":"Next 🚧","tagName":"h2"},{"title":"Period Status Cards​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#period-status-cards","content":" Show when best/peak price periods are active: type: horizontal-stack cards: - type: entity entity: binary_sensor.tibber_home_best_price_period name: Best Price Active icon: mdi:currency-eur-off - type: entity entity: binary_sensor.tibber_home_peak_price_period name: Peak Price Active icon: mdi:alert ","version":"Next 🚧","tagName":"h2"},{"title":"Custom Button Card Examples​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#custom-button-card-examples","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Price Level Card​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#price-level-card","content":" type: custom:button-card entity: sensor.tibber_home_current_interval_level name: Price Level show_state: true styles: card: - background: | [[[ if (entity.state === 'LOWEST') return 'linear-gradient(135deg, #00ffa3 0%, #00d4ff 100%)'; if (entity.state === 'LOW') return 'linear-gradient(135deg, #4dddff 0%, #00ffa3 100%)'; if (entity.state === 'NORMAL') return 'linear-gradient(135deg, #ffd700 0%, #ffb800 100%)'; if (entity.state === 'HIGH') return 'linear-gradient(135deg, #ff8c00 0%, #ff6b00 100%)'; if (entity.state === 'HIGHEST') return 'linear-gradient(135deg, #ff4500 0%, #dc143c 100%)'; return 'var(--card-background-color)'; ]]] ","version":"Next 🚧","tagName":"h3"},{"title":"Lovelace Layouts​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#lovelace-layouts","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Compact Mobile View​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#compact-mobile-view","content":" Optimized for mobile devices: type: vertical-stack cards: - type: custom:mini-graph-card entities: - entity: sensor.tibber_home_current_interval_price name: Today's Prices hours_to_show: 24 points_per_hour: 4 - type: glance entities: - entity: sensor.tibber_home_best_price_start_time name: Best Period Starts - entity: binary_sensor.tibber_home_best_price_period name: Active Now ","version":"Next 🚧","tagName":"h3"},{"title":"Desktop Dashboard​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#desktop-dashboard","content":" Full-width layout for desktop: type: grid columns: 3 square: false cards: - type: custom:apexcharts-card # See chart-examples.md for ApexCharts config - type: vertical-stack cards: - type: entities title: Current Status entities: - sensor.tibber_home_current_interval_price - sensor.tibber_home_current_interval_rating - type: vertical-stack cards: - type: entities title: Statistics entities: - sensor.tibber_home_daily_avg_today - sensor.tibber_home_daily_min_today - sensor.tibber_home_daily_max_today ","version":"Next 🚧","tagName":"h3"},{"title":"Icon Color Integration​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#icon-color-integration","content":" Using the icon_color attribute for dynamic colors: type: custom:mushroom-chips-card chips: - type: entity entity: sensor.tibber_home_current_interval_price icon_color: "{{ state_attr('sensor.tibber_home_current_interval_price', 'icon_color') }}" - type: entity entity: binary_sensor.tibber_home_best_price_period icon_color: green - type: entity entity: binary_sensor.tibber_home_peak_price_period icon_color: red See Icon Colors for detailed color mapping. ","version":"Next 🚧","tagName":"h2"},{"title":"Picture Elements Dashboard​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#picture-elements-dashboard","content":" Advanced interactive dashboard: type: picture-elements image: /local/electricity_dashboard_bg.png elements: - type: state-label entity: sensor.tibber_home_current_interval_price style: top: 20% left: 50% font-size: 32px font-weight: bold - type: state-badge entity: binary_sensor.tibber_home_best_price_period style: top: 40% left: 30% # Add more elements... ","version":"Next 🚧","tagName":"h2"},{"title":"Auto-Entities Dynamic Lists​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#auto-entities-dynamic-lists","content":" Automatically list all price sensors: type: custom:auto-entities card: type: entities title: All Price Sensors filter: include: - entity_id: "sensor.tibber_*_price" exclude: - state: unavailable sort: method: state numeric: true πŸ’‘ Related: Chart Examples - ApexCharts configurationsDynamic Icons - Icon behaviorIcon Colors - Color attributes ","version":"Next 🚧","tagName":"h2"},{"title":"Installation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/installation","content":"","keywords":"","version":"Next 🚧"},{"title":"HACS Installation (Recommended)​","type":1,"pageTitle":"Installation","url":"/hass.tibber_prices/user/installation#hacs-installation-recommended","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Manual Installation​","type":1,"pageTitle":"Installation","url":"/hass.tibber_prices/user/installation#manual-installation","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Configuration​","type":1,"pageTitle":"Installation","url":"/hass.tibber_prices/user/installation#configuration","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Glossary","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/glossary","content":"","keywords":"","version":"Next 🚧"},{"title":"A​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#a","content":" API Token: Your personal access key from Tibber. Get it at developer.tibber.com. Attributes: Additional data attached to each sensor (timestamps, statistics, metadata). Access via state_attr() in templates. ","version":"Next 🚧","tagName":"h2"},{"title":"B​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#b","content":" Best Price Period: Automatically detected time window with favorable electricity prices. Ideal for scheduling dishwashers, heat pumps, EV charging. Binary Sensor: Sensor with ON/OFF state (e.g., "Best Price Period Active"). Used in automations as triggers. ","version":"Next 🚧","tagName":"h2"},{"title":"C​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#c","content":" Currency Units: Minor currency units used for display (ct for EUR, ΓΈre for NOK/SEK). Integration handles conversion automatically. Coordinator: Home Assistant component managing data fetching and updates. Polls Tibber API every 15 minutes. ","version":"Next 🚧","tagName":"h2"},{"title":"D​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#d","content":" Dynamic Icons: Icons that change based on sensor state (e.g., battery icons showing price level). See Dynamic Icons. ","version":"Next 🚧","tagName":"h2"},{"title":"F​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#f","content":" Flex (Flexibility): Configuration parameter controlling how strict period detection is. Higher flex = more periods found, but potentially at higher prices. ","version":"Next 🚧","tagName":"h2"},{"title":"I​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#i","content":" Interval: 15-minute time slot with fixed electricity price (00:00-00:15, 00:15-00:30, etc.). ","version":"Next 🚧","tagName":"h2"},{"title":"L​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#l","content":" Level: Price classification within a day (LOWEST, LOW, NORMAL, HIGH, HIGHEST). Based on daily min/max prices. ","version":"Next 🚧","tagName":"h2"},{"title":"M​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#m","content":" Min Distance: Threshold requiring periods to be at least X% below daily average. Prevents detecting "cheap" periods during expensive days. ","version":"Next 🚧","tagName":"h2"},{"title":"P​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#p","content":" Peak Price Period: Time window with highest electricity prices. Use to avoid heavy consumption. Price Info: Complete dataset with all intervals (yesterday, today, tomorrow) including enriched statistics. ","version":"Next 🚧","tagName":"h2"},{"title":"Q​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#q","content":" Quarter-Hourly: 15-minute precision (4 intervals per hour, 96 per day). ","version":"Next 🚧","tagName":"h2"},{"title":"R​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#r","content":" Rating: Statistical price classification (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Based on 24h averages and thresholds. Relaxation: Automatic loosening of period detection filters when target period count isn't met. Ensures you always get usable periods. ","version":"Next 🚧","tagName":"h2"},{"title":"S​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#s","content":" State: Current value of a sensor (e.g., price in ct/kWh, "ON"/"OFF" for binary sensors). State Class: Home Assistant classification for long-term statistics (MEASUREMENT, TOTAL, or none). ","version":"Next 🚧","tagName":"h2"},{"title":"T​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#t","content":" Trailing Average: Average price over the past 24 hours from current interval. Leading Average: Average price over the next 24 hours from current interval. ","version":"Next 🚧","tagName":"h2"},{"title":"V​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#v","content":" Volatility: Measure of price stability (LOW, MEDIUM, HIGH). High volatility = large price swings = good for timing optimization. πŸ’‘ See Also: Core Concepts - In-depth explanationsSensors - How sensors use these conceptsPeriod Calculation - Deep dive into period detection ","version":"Next 🚧","tagName":"h2"},{"title":"Dynamic Icons","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/dynamic-icons","content":"","keywords":"","version":"Next 🚧"},{"title":"What are Dynamic Icons?​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#what-are-dynamic-icons","content":" Instead of having a fixed icon, some sensors update their icon to reflect their current state: Price level sensors show different cash/money icons depending on whether prices are cheap or expensivePrice rating sensors show thumbs up/down based on how the current price compares to averageVolatility sensors show different chart types based on price stabilityBinary sensors show different icons when ON vs OFF (e.g., piggy bank when in best price period) The icons change automatically - no configuration needed! ","version":"Next 🚧","tagName":"h2"},{"title":"How to Check if a Sensor Has Dynamic Icons​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#how-to-check-if-a-sensor-has-dynamic-icons","content":" To see which icon a sensor currently uses: Go to Developer Tools β†’ States in Home AssistantSearch for your sensor (e.g., sensor.tibber_home_current_interval_price_level)Look at the icon displayed in the entity rowChange conditions (wait for price changes) and check if the icon updates Common sensor types with dynamic icons: Price level sensors (e.g., current_interval_price_level)Price rating sensors (e.g., current_interval_price_rating)Volatility sensors (e.g., volatility_today)Binary sensors (e.g., best_price_period, peak_price_period) ","version":"Next 🚧","tagName":"h2"},{"title":"Using Dynamic Icons in Your Dashboard​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#using-dynamic-icons-in-your-dashboard","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Standard Entity Cards​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#standard-entity-cards","content":" Dynamic icons work automatically in standard Home Assistant cards: type: entities entities: - entity: sensor.tibber_home_current_interval_price_level - entity: sensor.tibber_home_current_interval_price_rating - entity: sensor.tibber_home_volatility_today - entity: binary_sensor.tibber_home_best_price_period The icons will update automatically as the sensor states change. ","version":"Next 🚧","tagName":"h3"},{"title":"Glance Card​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#glance-card","content":" type: glance entities: - entity: sensor.tibber_home_current_interval_price_level name: Price Level - entity: sensor.tibber_home_current_interval_price_rating name: Rating - entity: binary_sensor.tibber_home_best_price_period name: Best Price ","version":"Next 🚧","tagName":"h3"},{"title":"Custom Button Card​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#custom-button-card","content":" type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price Level show_state: true # Icon updates automatically - no need to specify it! ","version":"Next 🚧","tagName":"h3"},{"title":"Mushroom Entity Card​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#mushroom-entity-card","content":" type: custom:mushroom-entity-card entity: sensor.tibber_home_volatility_today name: Price Volatility # Icon changes automatically based on volatility level ","version":"Next 🚧","tagName":"h3"},{"title":"Overriding Dynamic Icons​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#overriding-dynamic-icons","content":" If you want to use a fixed icon instead of the dynamic one: ","version":"Next 🚧","tagName":"h2"},{"title":"In Entity Cards​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#in-entity-cards","content":" type: entities entities: - entity: sensor.tibber_home_current_interval_price_level icon: mdi:lightning-bolt # Fixed icon, won't change ","version":"Next 🚧","tagName":"h3"},{"title":"In Custom Button Card​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#in-custom-button-card","content":" type: custom:button-card entity: sensor.tibber_home_current_interval_price_rating name: Price Rating icon: mdi:chart-line # Fixed icon overrides dynamic behavior show_state: true ","version":"Next 🚧","tagName":"h3"},{"title":"Combining with Dynamic Colors​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#combining-with-dynamic-colors","content":" Dynamic icons work great together with dynamic colors! See the Dynamic Icon Colors Guide for examples. Example: Dynamic icon AND color type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price show_state: true # Icon changes automatically (cheap/expensive cash icons) styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] This gives you both: βœ… Different icon based on state (e.g., cash-plus when cheap, cash-remove when expensive)βœ… Different color based on state (e.g., green when cheap, red when expensive) ","version":"Next 🚧","tagName":"h2"},{"title":"Icon Behavior Details​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#icon-behavior-details","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Binary Sensors​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#binary-sensors","content":" Binary sensors may have different icons for different states: ON state: Typically shows an active/alert iconOFF state: May show different icons depending on whether future periods exist Has upcoming periods: Timer/waiting iconNo upcoming periods: Sleep/inactive icon Example: binary_sensor.tibber_home_best_price_period When ON: Shows a piggy bank (good time to save money)When OFF with future periods: Shows a timer (waiting for next period)When OFF without future periods: Shows a sleep icon (no periods expected soon) ","version":"Next 🚧","tagName":"h3"},{"title":"State-Based Icons​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#state-based-icons","content":" Sensors with text states (like cheap, normal, expensive) typically show icons that match the meaning: Lower/better values β†’ More positive iconsHigher/worse values β†’ More cautionary iconsNormal/average values β†’ Neutral icons The exact icons are chosen to be intuitive and meaningful in the Home Assistant ecosystem. ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#troubleshooting","content":" Icon not changing: Wait for the sensor state to actually change (prices update every 15 minutes)Check in Developer Tools β†’ States that the sensor state is changingIf you've set a custom icon in your card, it will override the dynamic icon Want to see the icon code: Look at the entity in Developer Tools β†’ StatesThe icon attribute shows the current Material Design icon code (e.g., mdi:cash-plus) Want different icons: You can override icons in your card configuration (see examples above)Or create a template sensor with your own icon logic ","version":"Next 🚧","tagName":"h2"},{"title":"See Also​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#see-also","content":" Dynamic Icon Colors - Color your icons based on stateSensors Reference - Complete list of available sensorsAutomation Examples - Use dynamic icons in automations ","version":"Next 🚧","tagName":"h2"},{"title":"User Documentation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/intro","content":"","keywords":"","version":"Next 🚧"},{"title":"πŸ“š Documentation​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-documentation","content":" Installation - How to install via HACS and configure the integrationConfiguration - Setting up your Tibber API token and price thresholdsPeriod Calculation - How Best/Peak Price periods are calculated and configuredSensors - Available sensors, their states, and attributesDynamic Icons - State-based automatic icon changesDynamic Icon Colors - Using icon_color attribute for color-coded dashboardsActions - Custom actions (service endpoints) and how to use themChart Examples - ✨ ApexCharts visualizations with screenshotsAutomation Examples - Ready-to-use automation recipesTroubleshooting - Common issues and solutions ","version":"Next 🚧","tagName":"h2"},{"title":"πŸš€ Quick Start​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-quick-start","content":" Install via HACS (add as custom repository)Add Integration in Home Assistant β†’ Settings β†’ Devices & ServicesEnter Tibber API Token (get yours at developer.tibber.com)Configure Price Thresholds (optional, defaults work for most users)Start Using Sensors in automations, dashboards, and scripts! ","version":"Next 🚧","tagName":"h2"},{"title":"✨ Key Features​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-key-features","content":" Quarter-hourly precision - 15-minute intervals for accurate price trackingStatistical analysis - Trailing/leading 24h averages for contextPrice ratings - LOW/NORMAL/HIGH classification based on your thresholdsBest/Peak hour detection - Automatic detection of cheapest/peak periods with configurable filters (learn how)Beautiful ApexCharts - Auto-generated chart configurations with dynamic Y-axis scaling (see examples)Chart metadata sensor - Dynamic chart configuration for optimal visualizationMulti-currency support - EUR, NOK, SEK with proper minor units (ct, ΓΈre, ΓΆre) ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ”— Useful Links​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-useful-links","content":" GitHub RepositoryIssue TrackerRelease NotesHome Assistant Community ","version":"Next 🚧","tagName":"h2"},{"title":"🀝 Need Help?​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-need-help","content":" Check the Troubleshooting GuideSearch existing issuesOpen a new issue if needed Note: These guides are for end users. If you want to contribute to development, see the Developer Documentation. ","version":"Next 🚧","tagName":"h2"},{"title":"Sensors","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/sensors","content":"","keywords":"","version":"Next 🚧"},{"title":"Binary Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#binary-sensors","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Best Price Period & Peak Price Period​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#best-price-period--peak-price-period","content":" These binary sensors indicate when you're in a detected best or peak price period. See the Period Calculation Guide for a detailed explanation of how these periods are calculated and configured. Quick overview: Best Price Period: Turns ON during periods with significantly lower prices than the daily averagePeak Price Period: Turns ON during periods with significantly higher prices than the daily average Both sensors include rich attributes with period details, intervals, relaxation status, and more. ","version":"Next 🚧","tagName":"h3"},{"title":"Core Price Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#core-price-sensors","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Statistical Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#statistical-sensors","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Rating Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#rating-sensors","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Diagnostic Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#diagnostic-sensors","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Chart Metadata​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#chart-metadata","content":" Entity ID: sensor.tibber_home_NAME_chart_metadata ✨ New Feature: This sensor provides dynamic chart configuration metadata for optimal visualization. Perfect for use with the get_apexcharts_yaml action! This diagnostic sensor provides essential chart configuration values as sensor attributes, enabling dynamic Y-axis scaling and optimal chart appearance in rolling window modes. Key Features: Dynamic Y-Axis Bounds: Automatically calculates optimal yaxis_min and yaxis_max for your price dataAutomatic Updates: Refreshes when price data changes (coordinator updates)Lightweight: Metadata-only mode (no data processing) for fast responseState Indicator: Shows pending (initialization), ready (data available), or error (service call failed) Attributes: timestamp: When the metadata was last fetchedyaxis_min: Suggested minimum value for Y-axis (optimal scaling)yaxis_max: Suggested maximum value for Y-axis (optimal scaling)currency: Currency code (e.g., "EUR", "NOK")resolution: Interval duration in minutes (usually 15)error: Error message if service call failed Usage: The tibber_prices.get_apexcharts_yaml action automatically uses this sensor for dynamic Y-axis scaling in rolling_window and rolling_window_autozoom modes! No manual configuration needed - just enable the action's result with config-template-card and the sensor provides optimal Y-axis bounds automatically. See the Chart Examples Guide for practical examples! ","version":"Next 🚧","tagName":"h3"},{"title":"Chart Data Export​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#chart-data-export","content":" Entity ID: sensor.tibber_home_NAME_chart_data_exportDefault State: Disabled (must be manually enabled) ⚠️ Legacy Feature: This sensor is maintained for backward compatibility. For new integrations, use the tibber_prices.get_chartdata service instead, which offers more flexibility and better performance. This diagnostic sensor provides cached chart-friendly price data that can be consumed by chart cards (ApexCharts, custom cards, etc.). Key Features: Configurable via Options Flow: Service parameters can be configured through the integration's options menu (Step 7 of 7)Automatic Updates: Data refreshes on coordinator updates (every 15 minutes)Attribute-Based Output: Chart data is stored in sensor attributes for easy accessState Indicator: Shows pending (before first call), ready (data available), or error (service call failed) Important Notes: ⚠️ Disabled by default - must be manually enabled in entity settings⚠️ Consider using the service instead for better control and flexibility⚠️ Configuration updates require HA restart Attributes: The sensor exposes chart data with metadata in attributes: timestamp: When the data was last fetchederror: Error message if service call faileddata (or custom name): Array of price data points in configured format Configuration: To configure the sensor's output format: Go to Settings β†’ Devices & Services β†’ Tibber PricesClick Configure on your Tibber homeNavigate through the options wizard to Step 7: Chart Data Export SettingsConfigure output format, filters, field names, and other optionsSave and restart Home Assistant Available Settings: See the tibber_prices.get_chartdata service documentation below for a complete list of available parameters. All service parameters can be configured through the options flow. Example Usage: # ApexCharts card consuming the sensor type: custom:apexcharts-card series: - entity: sensor.tibber_home_chart_data_export data_generator: | return entity.attributes.data; Migration Path: If you're currently using this sensor, consider migrating to the service: # Old approach (sensor) - service: apexcharts_card.update data: entity: sensor.tibber_home_chart_data_export # New approach (service) - service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID day: ["today", "tomorrow"] output_format: array_of_objects response_variable: chart_data ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/troubleshooting","content":"","keywords":"","version":"Next 🚧"},{"title":"Common Issues​","type":1,"pageTitle":"Troubleshooting","url":"/hass.tibber_prices/user/troubleshooting#common-issues","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Debug Logging​","type":1,"pageTitle":"Troubleshooting","url":"/hass.tibber_prices/user/troubleshooting#debug-logging","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Getting Help​","type":1,"pageTitle":"Troubleshooting","url":"/hass.tibber_prices/user/troubleshooting#getting-help","content":" Check existing issuesOpen a new issue with detailed informationInclude logs, configuration, and steps to reproduce ","version":"Next 🚧","tagName":"h2"},{"title":"Dynamic Icon Colors","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/icon-colors","content":"","keywords":"","version":"Next 🚧"},{"title":"What is icon_color?​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#what-is-icon_color","content":" The icon_color attribute contains a CSS variable name (not a direct color value) that changes based on the sensor's state. For example: Price level sensors: var(--success-color) for cheap, var(--error-color) for expensiveBinary sensors: var(--success-color) when in best price period, var(--error-color) during peak priceVolatility: var(--success-color) for low volatility, var(--error-color) for very high ","version":"Next 🚧","tagName":"h2"},{"title":"Why CSS Variables?​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#why-css-variables","content":" Using CSS variables like var(--success-color) instead of hardcoded colors (like #00ff00) has important advantages: βœ… Automatic theme adaptation - Colors change with light/dark modeβœ… Consistent with your theme - Uses your theme's color schemeβœ… Future-proof - Works with custom themes and future HA updates You can use the icon_color attribute directly in your card templates, or interpret the sensor state yourself if you prefer custom colors (see examples below). ","version":"Next 🚧","tagName":"h3"},{"title":"Which Sensors Support icon_color?​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#which-sensors-support-icon_color","content":" Many sensors provide the icon_color attribute for dynamic styling. To see if a sensor has this attribute: Go to Developer Tools β†’ States in Home AssistantSearch for your sensor (e.g., sensor.tibber_home_current_interval_price_level)Look for icon_color in the attributes section Common sensor types with icon_color: Price level sensors (e.g., current_interval_price_level)Price rating sensors (e.g., current_interval_price_rating)Volatility sensors (e.g., volatility_today)Price trend sensors (e.g., price_trend_next_3h)Binary sensors (e.g., best_price_period, peak_price_period)Timing sensors (e.g., best_price_time_until_start, best_price_progress) The colors adapt to the sensor's state - cheaper prices typically show green, expensive prices red, and neutral states gray. ","version":"Next 🚧","tagName":"h2"},{"title":"When to Use icon_color vs. State Value​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#when-to-use-icon_color-vs-state-value","content":" Use icon_color when: βœ… You can apply the CSS variable directly (icons, text colors, borders)βœ… Your card supports CSS variable substitutionβœ… You want simple, clean code without if/else logic Use the state value directly when: ⚠️ You need to convert the color (e.g., CSS variable β†’ RGBA with transparency)⚠️ You need different colors than what icon_color provides⚠️ You're building complex conditional logic anyway Example of when NOT to use icon_color: # ❌ DON'T: Converting icon_color requires if/else anyway card: - background: | [[[ const color = entity.attributes.icon_color; if (color === 'var(--success-color)') return 'rgba(76, 175, 80, 0.1)'; if (color === 'var(--error-color)') return 'rgba(244, 67, 54, 0.1)'; // ... more if statements ]]] # βœ… DO: Interpret state directly if you need custom logic card: - background: | [[[ const level = entity.state; if (level === 'very_cheap' || level === 'cheap') return 'rgba(76, 175, 80, 0.1)'; if (level === 'very_expensive' || level === 'expensive') return 'rgba(244, 67, 54, 0.1)'; return 'transparent'; ]]] The advantage of icon_color is simplicity - if you need complex logic, you lose that advantage. ","version":"Next 🚧","tagName":"h2"},{"title":"How to Use icon_color in Your Dashboard​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#how-to-use-icon_color-in-your-dashboard","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Method 1: Custom Button Card (Recommended)​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#method-1-custom-button-card-recommended","content":" The custom:button-card from HACS supports dynamic icon colors. Example: Icon color only type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price Level show_state: true icon: mdi:cash styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] Example: Icon AND state value with same color type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price Level show_state: true icon: mdi:cash styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] state: - color: | [[[ return entity.attributes.icon_color || 'var(--primary-text-color)'; ]]] - font-weight: bold ","version":"Next 🚧","tagName":"h3"},{"title":"Method 2: Entities Card with card_mod​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#method-2-entities-card-with-card_mod","content":" Use Home Assistant's built-in entities card with card_mod for icon and state colors: type: entities entities: - entity: sensor.tibber_home_current_interval_price_level card_mod: style: hui-generic-entity-row: $: | state-badge { color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important; } .info { color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important; } ","version":"Next 🚧","tagName":"h3"},{"title":"Method 3: Mushroom Cards​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#method-3-mushroom-cards","content":" The Mushroom cards support card_mod for icon and text colors: Icon color only: type: custom:mushroom-entity-card entity: binary_sensor.tibber_home_best_price_period name: Best Price Period icon: mdi:piggy-bank card_mod: style: | ha-card { --card-mod-icon-color: {{ state_attr('binary_sensor.tibber_home_best_price_period', 'icon_color') }}; } Icon and state value: type: custom:mushroom-entity-card entity: sensor.tibber_home_current_interval_price_level name: Price Level card_mod: style: | ha-card { --card-mod-icon-color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }}; --primary-text-color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }}; } ","version":"Next 🚧","tagName":"h3"},{"title":"Method 4: Glance Card with card_mod​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#method-4-glance-card-with-card_mod","content":" Combine multiple sensors with dynamic colors: type: glance entities: - entity: sensor.tibber_home_current_interval_price_level - entity: sensor.tibber_home_volatility_today - entity: binary_sensor.tibber_home_best_price_period card_mod: style: | ha-card div.entity:nth-child(1) state-badge { color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important; } ha-card div.entity:nth-child(2) state-badge { color: {{ state_attr('sensor.tibber_home_volatility_today', 'icon_color') }} !important; } ha-card div.entity:nth-child(3) state-badge { color: {{ state_attr('binary_sensor.tibber_home_best_price_period', 'icon_color') }} !important; } ","version":"Next 🚧","tagName":"h3"},{"title":"Complete Dashboard Example​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#complete-dashboard-example","content":" Here's a complete example combining multiple sensors with dynamic colors: type: vertical-stack cards: # Current price status - type: horizontal-stack cards: - type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Price Level show_state: true styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] - type: custom:button-card entity: sensor.tibber_home_current_interval_price_rating name: Price Rating show_state: true styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] # Binary sensors for periods - type: horizontal-stack cards: - type: custom:button-card entity: binary_sensor.tibber_home_best_price_period name: Best Price Period show_state: true icon: mdi:piggy-bank styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] - type: custom:button-card entity: binary_sensor.tibber_home_peak_price_period name: Peak Price Period show_state: true icon: mdi:alert-circle styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] # Volatility and trends - type: horizontal-stack cards: - type: custom:button-card entity: sensor.tibber_home_volatility_today name: Volatility show_state: true styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] - type: custom:button-card entity: sensor.tibber_home_price_trend_next_3h name: Next 3h Trend show_state: true styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] ","version":"Next 🚧","tagName":"h2"},{"title":"CSS Color Variables​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#css-color-variables","content":" The integration uses Home Assistant's standard CSS variables for theme compatibility: var(--success-color) - Green (good/cheap/low)var(--info-color) - Blue (informational)var(--warning-color) - Orange (caution/expensive)var(--error-color) - Red (alert/very expensive/high)var(--state-icon-color) - Gray (neutral/normal)var(--disabled-color) - Light gray (no data/inactive) These automatically adapt to your theme's light/dark mode and custom color schemes. ","version":"Next 🚧","tagName":"h2"},{"title":"Using Custom Colors​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#using-custom-colors","content":" If you want to override the theme colors with your own, you have two options: Option 1: Use icon_color but Override in Your Theme​ Define custom colors in your theme configuration (themes.yaml): my_custom_theme: # Override standard variables success-color: "#00C853" # Custom green error-color: "#D32F2F" # Custom red warning-color: "#F57C00" # Custom orange info-color: "#0288D1" # Custom blue The icon_color attribute will automatically use your custom theme colors. Option 2: Interpret State Value Directly​ Instead of using icon_color, read the sensor state and apply your own colors: Example: Custom colors for price level type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price Level show_state: true icon: mdi:cash styles: icon: - color: | [[[ const level = entity.state; if (level === 'very_cheap') return '#00E676'; // Bright green if (level === 'cheap') return '#66BB6A'; // Light green if (level === 'normal') return '#9E9E9E'; // Gray if (level === 'expensive') return '#FF9800'; // Orange if (level === 'very_expensive') return '#F44336'; // Red return 'var(--state-icon-color)'; // Fallback ]]] Example: Custom colors for binary sensor type: custom:button-card entity: binary_sensor.tibber_home_best_price_period name: Best Price Period show_state: true icon: mdi:piggy-bank styles: icon: - color: | [[[ // Use state directly, not icon_color return entity.state === 'on' ? '#4CAF50' : '#9E9E9E'; ]]] card: - background: | [[[ return entity.state === 'on' ? 'rgba(76, 175, 80, 0.1)' : 'transparent'; ]]] Example: Custom colors for volatility type: custom:button-card entity: sensor.tibber_home_volatility_today name: Volatility Today show_state: true styles: icon: - color: | [[[ const volatility = entity.state; if (volatility === 'low') return '#4CAF50'; // Green if (volatility === 'moderate') return '#2196F3'; // Blue if (volatility === 'high') return '#FF9800'; // Orange if (volatility === 'very_high') return '#F44336'; // Red return 'var(--state-icon-color)'; ]]] Example: Custom colors for price rating type: custom:button-card entity: sensor.tibber_home_current_interval_price_rating name: Price Rating show_state: true styles: icon: - color: | [[[ const rating = entity.state; if (rating === 'low') return '#00C853'; // Dark green if (rating === 'normal') return '#78909C'; // Blue-gray if (rating === 'high') return '#D32F2F'; // Dark red return 'var(--state-icon-color)'; ]]] ","version":"Next 🚧","tagName":"h3"},{"title":"Which Approach Should You Use?​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#which-approach-should-you-use","content":" Use Case\tRecommended ApproachWant theme-consistent colors\tβœ… Use icon_color directly Want light/dark mode support\tβœ… Use icon_color directly Want custom theme colors\tβœ… Override CSS variables in theme Want specific hardcoded colors\t⚠️ Interpret state value directly Multiple themes with different colors\tβœ… Use icon_color directly Recommendation: Use icon_color whenever possible for better theme integration. Only interpret the state directly if you need very specific color values that shouldn't change with themes. ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#troubleshooting","content":" Icons not changing color: Make sure you're using a card that supports custom styling (like custom:button-card or card_mod)Check that the entity actually has the icon_color attribute (inspect in Developer Tools β†’ States)Verify your Home Assistant theme supports the CSS variables Colors look wrong: The colors are theme-dependent. Try switching themes to see if they appear correctlySome custom themes may override the standard CSS variables with unexpected colors Want different colors? You can override the colors in your theme configurationOr use conditional logic in your card templates based on the state value instead of icon_color ","version":"Next 🚧","tagName":"h2"},{"title":"See Also​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#see-also","content":" Sensors Reference - Complete list of available sensorsAutomation Examples - Use color-coded sensors in automationsConfiguration Guide - Adjust thresholds for price levels and ratings ","version":"Next 🚧","tagName":"h2"},{"title":"Period Calculation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/period-calculation","content":"","keywords":"","version":"Next 🚧"},{"title":"Table of Contents​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#table-of-contents","content":" Quick StartHow It WorksConfiguration GuideUnderstanding RelaxationCommon ScenariosTroubleshooting No Periods FoundPeriods Split Into Small PiecesMidnight Price Classification Changes Advanced Topics ","version":"Next 🚧","tagName":"h2"},{"title":"Quick Start​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#quick-start","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"What Are Price Periods?​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#what-are-price-periods","content":" The integration finds time windows when electricity is especially cheap (Best Price) or expensive (Peak Price): Best Price Periods 🟒 - When to run your dishwasher, charge your EV, or heat waterPeak Price Periods πŸ”΄ - When to reduce consumption or defer non-essential loads ","version":"Next 🚧","tagName":"h3"},{"title":"Default Behavior​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#default-behavior","content":" Out of the box, the integration: Best Price: Finds cheapest 1-hour+ windows that are at least 5% below the daily averagePeak Price: Finds most expensive 30-minute+ windows that are at least 5% above the daily averageRelaxation: Automatically loosens filters if not enough periods are found Most users don't need to change anything! The defaults work well for typical use cases. ℹ️ Why do Best Price and Peak Price have different defaults? The integration sets different initial defaults because the features serve different purposes: Best Price (60 min, 15% flex): Longer duration ensures appliances can complete their cyclesStricter flex (15%) focuses on genuinely cheap timesUse case: Running dishwasher, EV charging, water heating Peak Price (30 min, 20% flex): Shorter duration acceptable for early warningsMore flexible (20%) catches price spikes earlierUse case: Alerting to expensive periods, even brief ones You can adjust all these values in the configuration if the defaults don't fit your use case. The asymmetric defaults simply provide good starting points for typical scenarios. ","version":"Next 🚧","tagName":"h3"},{"title":"Example Timeline​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#example-timeline","content":" 00:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Best Price Period (cheap prices) 04:00 β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ Normal 08:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Peak Price Period (expensive prices) 12:00 β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ Normal 16:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Peak Price Period (expensive prices) 20:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Best Price Period (cheap prices) ","version":"Next 🚧","tagName":"h3"},{"title":"How It Works​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#how-it-works","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"The Basic Idea​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#the-basic-idea","content":" Each day, the integration analyzes all 96 quarter-hourly price intervals and identifies continuous time ranges that meet specific criteria. Think of it like this: Find potential windows - Times close to the daily MIN (Best Price) or MAX (Peak Price)Filter by quality - Ensure they're meaningfully different from averageCheck duration - Must be long enough to be usefulApply preferences - Optional: only show stable prices, avoid mediocre times ","version":"Next 🚧","tagName":"h3"},{"title":"Step-by-Step Process​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#step-by-step-process","content":" 1. Define the Search Range (Flexibility)​ Best Price: How much MORE than the daily minimum can a price be? Daily MIN: 20 ct/kWh Flexibility: 15% (default) β†’ Search for times ≀ 23 ct/kWh (20 + 15%) Peak Price: How much LESS than the daily maximum can a price be? Daily MAX: 40 ct/kWh Flexibility: -15% (default) β†’ Search for times β‰₯ 34 ct/kWh (40 - 15%) Why flexibility? Prices rarely stay at exactly MIN/MAX. Flexibility lets you capture realistic time windows. 2. Ensure Quality (Distance from Average)​ Periods must be meaningfully different from the daily average: Daily AVG: 30 ct/kWh Minimum distance: 5% (default) Best Price: Must be ≀ 28.5 ct/kWh (30 - 5%) Peak Price: Must be β‰₯ 31.5 ct/kWh (30 + 5%) Why? This prevents marking mediocre times as "best" just because they're slightly below average. 3. Check Duration​ Periods must be long enough to be practical: Default: 60 minutes minimum 45-minute period β†’ Discarded 90-minute period β†’ Kept βœ“ 4. Apply Optional Filters​ You can optionally require: Absolute quality (level filter) - "Only show if prices are CHEAP/EXPENSIVE (not just below/above average)" 5. Automatic Price Spike Smoothing​ Isolated price spikes are automatically detected and smoothed to prevent unnecessary period fragmentation: Original prices: 18, 19, 35, 20, 19 ct ← 35 ct is an isolated outlier Smoothed: 18, 19, 19, 20, 19 ct ← Spike replaced with trend prediction Result: Continuous period 00:00-01:15 instead of split periods Important: Original prices are always preserved (min/max/avg show real values)Smoothing only affects which intervals are combined into periodsThe attribute period_interval_smoothed_count shows if smoothing was active ","version":"Next 🚧","tagName":"h3"},{"title":"Visual Example​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#visual-example","content":" Timeline for a typical day: Hour: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Price: 18 19 20 28 29 30 35 34 33 32 30 28 25 24 26 28 30 32 31 22 21 20 19 18 Daily MIN: 18 ct | Daily MAX: 35 ct | Daily AVG: 26 ct Best Price (15% flex = ≀20.7 ct): β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 00:00-03:00 (3h) 19:00-24:00 (5h) Peak Price (-15% flex = β‰₯29.75 ct): β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 06:00-11:00 (5h) ","version":"Next 🚧","tagName":"h3"},{"title":"Configuration Guide​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#configuration-guide","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Basic Settings​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#basic-settings","content":" Flexibility​ What: How far from MIN/MAX to search for periodsDefault: 15% (Best Price), -15% (Peak Price)Range: 0-100% best_price_flex: 15 # Can be up to 15% more expensive than daily MIN peak_price_flex: -15 # Can be up to 15% less expensive than daily MAX When to adjust: Increase (20-25%) β†’ Find more/longer periodsDecrease (5-10%) β†’ Find only the very best/worst times πŸ’‘ Tip: Very high flexibility (>30%) is rarely useful. Recommendation: Start with 15-20% and enable relaxation – it adapts automatically to each day's price pattern. Minimum Period Length​ What: How long a period must be to show itDefault: 60 minutes (Best Price), 30 minutes (Peak Price)Range: 15-240 minutes best_price_min_period_length: 60 peak_price_min_period_length: 30 When to adjust: Increase (90-120 min) β†’ Only show longer periods (e.g., for heat pump cycles)Decrease (30-45 min) β†’ Show shorter windows (e.g., for quick tasks) Distance from Average​ What: How much better than average a period must beDefault: 5%Range: 0-20% best_price_min_distance_from_avg: 5 peak_price_min_distance_from_avg: 5 When to adjust: Increase (5-10%) β†’ Only show clearly better timesDecrease (0-1%) β†’ Show any time below/above average ℹ️ Note: Both flexibility and distance filters must be satisfied. When using high flexibility values (>30%), the distance filter may become the limiting factor. For best results, use moderate flexibility (15-20%) with relaxation enabled. ","version":"Next 🚧","tagName":"h3"},{"title":"Optional Filters​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#optional-filters","content":" Level Filter (Absolute Quality)​ What: Only show periods with CHEAP/EXPENSIVE intervals (not just below/above average)Default: any (disabled)Options: any | cheap | very_cheap (Best Price) | expensive | very_expensive (Peak Price) best_price_max_level: any # Show any period below average best_price_max_level: cheap # Only show if at least one interval is CHEAP Use case: "Only notify me when prices are objectively cheap/expensive" ℹ️ Volatility Thresholds: The level filter also supports volatility-based levels (volatility_low, volatility_medium, volatility_high). These use fixed internal thresholds (LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%) that are separate from the sensor volatility thresholds you configure in the UI. This separation ensures that changing sensor display preferences doesn't affect period calculation behavior. Gap Tolerance (for Level Filter)​ What: Allow some "mediocre" intervals within an otherwise good periodDefault: 0 (strict)Range: 0-10 best_price_max_level: cheap best_price_max_level_gap_count: 2 # Allow up to 2 NORMAL intervals per period Use case: "Don't split periods just because one interval isn't perfectly CHEAP" ","version":"Next 🚧","tagName":"h3"},{"title":"Tweaking Strategy: What to Adjust First?​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#tweaking-strategy-what-to-adjust-first","content":" When you're not happy with the default behavior, adjust settings in this order: 1. Start with Relaxation (Easiest)​ If you're not finding enough periods: enable_min_periods_best: true # Already default! min_periods_best: 2 # Already default! relaxation_attempts_best: 11 # Already default! Why start here? Relaxation automatically finds the right balance for each day. Much easier than manual tuning. 2. Adjust Period Length (Simple)​ If periods are too short/long for your use case: best_price_min_period_length: 90 # Increase from 60 for longer periods # OR best_price_min_period_length: 45 # Decrease from 60 for shorter periods Safe to change: This only affects duration, not price selection logic. 3. Fine-tune Flexibility (Moderate)​ If you consistently want more/fewer periods: best_price_flex: 20 # Increase from 15% for more periods # OR best_price_flex: 10 # Decrease from 15% for stricter selection ⚠️ Watch out: Values >25% may conflict with distance filter. Use relaxation instead. 4. Adjust Distance from Average (Advanced)​ Only if periods seem "mediocre" (not really cheap/expensive): best_price_min_distance_from_avg: 10 # Increase from 5% for stricter quality ⚠️ Careful: High values (>10%) can make it impossible to find periods on flat price days. 5. Enable Level Filter (Expert)​ Only if you want absolute quality requirements: best_price_max_level: cheap # Only show objectively CHEAP periods ⚠️ Very strict: Many days may have zero qualifying periods. Always enable relaxation when using this! ","version":"Next 🚧","tagName":"h3"},{"title":"Common Mistakes to Avoid​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#common-mistakes-to-avoid","content":" ❌ Don't increase flexibility to >30% manually β†’ Use relaxation instead ❌ Don't combine high distance (>10%) with strict level filter β†’ Too restrictive ❌ Don't disable relaxation with strict filters β†’ You'll get zero periods on some days ❌ Don't change all settings at once β†’ Adjust one at a time and observe results βœ… Do use defaults + relaxation β†’ Works for 90% of cases βœ… Do adjust one setting at a time β†’ Easier to understand impact βœ… Do check sensor attributes β†’ Shows why periods were/weren't found ","version":"Next 🚧","tagName":"h3"},{"title":"Understanding Relaxation​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#understanding-relaxation","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"What Is Relaxation?​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#what-is-relaxation","content":" Sometimes, strict filters find too few periods (or none). Relaxation automatically loosens filters until a minimum number of periods is found. ","version":"Next 🚧","tagName":"h3"},{"title":"How to Enable​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#how-to-enable","content":" enable_min_periods_best: true min_periods_best: 2 # Try to find at least 2 periods per day relaxation_attempts_best: 11 # Flex levels to test (default: 11 steps = 22 filter combinations) ℹ️ Good news: Relaxation is enabled by default with sensible settings. Most users don't need to change anything here! Set the matching relaxation_attempts_peak value when tuning Peak Price periods. Both sliders accept 1-12 attempts, and the default of 11 flex levels translates to 22 filter-combination tries (11 flex levels Γ— 2 filter combos) for each of Best and Peak calculations. Lower it for quick feedback, or raise it when either sensor struggles to hit the minimum-period target on volatile days. ","version":"Next 🚧","tagName":"h3"},{"title":"Why Relaxation Is Better Than Manual Tweaking​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#why-relaxation-is-better-than-manual-tweaking","content":" Problem with manual settings: You set flex to 25% β†’ Works great on Monday (volatile prices)Same 25% flex on Tuesday (flat prices) β†’ Finds "best price" periods that aren't really cheapYou're stuck with one setting for all days Solution with relaxation: Monday (volatile): Uses flex 15% (original) β†’ Finds 2 perfect periods βœ“Tuesday (flat): Escalates to flex 21% β†’ Finds 2 decent periods βœ“Wednesday (mixed): Uses flex 18% β†’ Finds 2 good periods βœ“ Each day gets exactly the flexibility it needs! ","version":"Next 🚧","tagName":"h3"},{"title":"How It Works (Adaptive Matrix)​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#how-it-works-adaptive-matrix","content":" Relaxation uses a matrix approach - trying N flexibility levels (your configured relaxation attempts) with 2 filter combinations per level. With the default of 11 attempts, that means 11 flex levels Γ— 2 filter combinations = 22 total filter-combination tries per day; fewer attempts mean fewer flex increases, while more attempts extend the search further before giving up. Important: The flexibility increment is fixed at 3% per step (hard-coded for reliability). This means: Base flex 15% β†’ 18% β†’ 21% β†’ 24% β†’ ... β†’ 48% (with 11 attempts)Base flex 20% β†’ 23% β†’ 26% β†’ 29% β†’ ... β†’ 50% (with 11 attempts) Phase Matrix​ For each day, the system tries: Flexibility Levels (Attempts): Attempt 1 = Original flex (e.g., 15%)Attempt 2 = +3% step (18%)Attempt 3 = +3% step (21%)Attempt 4 = +3% step (24%)… Attempts 5-11 (default) continue adding +3% each time… Additional attempts keep extending the same pattern up to the 12-attempt maximum (up to 51%) 2 Filter Combinations (per flexibility level): Original filters (your configured level filter)Remove level filter (level=any) Example progression: Flex 15% + Original filters β†’ Not enough periods Flex 15% + Level=any β†’ Not enough periods Flex 18% + Original filters β†’ Not enough periods Flex 18% + Level=any β†’ SUCCESS! Found 2 periods βœ“ (stops here - no need to try more) ","version":"Next 🚧","tagName":"h3"},{"title":"Choosing the Number of Attempts​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#choosing-the-number-of-attempts","content":" Default (11 attempts) balances speed and completeness for most grids (22 combinations per day for both Best and Peak)Lower (4-8 attempts) if you only want mild relaxation and keep processing time minimal (reaches ~27-39% flex)Higher (12 attempts) for extremely volatile days when you must reach near the 50% maximum (24 combinations)Remember: each additional attempt adds two more filter combinations because every new flex level still runs both filter overrides (original + level=any) Per-Day Independence​ Critical: Each day relaxes independently: Day 1: Finds 2 periods with flex 15% (original) β†’ No relaxation needed Day 2: Needs flex 21% + level=any β†’ Uses relaxed settings Day 3: Finds 2 periods with flex 15% (original) β†’ No relaxation needed Why? Price patterns vary daily. Some days have clear cheap/expensive windows (strict filters work), others don't (relaxation needed). ","version":"Next 🚧","tagName":"h3"},{"title":"Common Scenarios​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#common-scenarios","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Scenario 1: Simple Best Price (Default)​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#scenario-1-simple-best-price-default","content":" Goal: Find the cheapest time each day to run dishwasher Configuration: # Use defaults - no configuration needed! best_price_flex: 15 # (default) best_price_min_period_length: 60 # (default) best_price_min_distance_from_avg: 5 # (default) What you get: 1-3 periods per day with prices ≀ MIN + 15%Each period at least 1 hour longAll periods at least 5% cheaper than daily average Automation example: automation: - trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" action: - service: switch.turn_on target: entity_id: switch.dishwasher ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#troubleshooting","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"No Periods Found​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#no-periods-found","content":" Symptom: binary_sensor.tibber_home_best_price_period never turns "on" Common Solutions: Check if relaxation is enabled enable_min_periods_best: true # Should be true (default) min_periods_best: 2 # Try to find at least 2 periods If still no periods, check filters Look at sensor attributes: relaxation_active and relaxation_levelIf relaxation exhausted all attempts: Filters too strict or flat price day Try increasing flexibility slightly best_price_flex: 20 # Increase from default 15% Or reduce period length requirement best_price_min_period_length: 45 # Reduce from default 60 minutes ","version":"Next 🚧","tagName":"h3"},{"title":"Periods Split Into Small Pieces​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#periods-split-into-small-pieces","content":" Symptom: Many short periods instead of one long period Common Solutions: If using level filter, add gap tolerance best_price_max_level: cheap best_price_max_level_gap_count: 2 # Allow 2 NORMAL intervals Slightly increase flexibility best_price_flex: 20 # From 15% β†’ captures wider price range Check for price spikes Automatic smoothing should handle thisCheck attribute: period_interval_smoothed_countIf 0: Not isolated spikes, but real price levels ","version":"Next 🚧","tagName":"h3"},{"title":"Understanding Sensor Attributes​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#understanding-sensor-attributes","content":" Key attributes to check: # Entity: binary_sensor.tibber_home_best_price_period # When "on" (period active): start: "2025-11-11T02:00:00+01:00" # Period start time end: "2025-11-11T05:00:00+01:00" # Period end time duration_minutes: 180 # Duration in minutes price_avg: 18.5 # Average price in the period rating_level: "LOW" # All intervals have LOW rating # Relaxation info (shows if filter loosening was needed): relaxation_active: true # This day needed relaxation relaxation_level: "price_diff_18.0%+level_any" # Found at 18% flex, level filter removed # Optional (only shown when relevant): period_interval_smoothed_count: 2 # Number of price spikes smoothed period_interval_level_gap_count: 1 # Number of "mediocre" intervals tolerated ","version":"Next 🚧","tagName":"h3"},{"title":"Midnight Price Classification Changes​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#midnight-price-classification-changes","content":" Symptom: A Best Price period at 23:45 suddenly changes to Peak Price at 00:00 (or vice versa), even though the absolute price barely changed. Why This Happens: This is mathematically correct behavior caused by how electricity prices are set in the day-ahead market: Market Timing: The EPEX SPOT Day-Ahead auction closes at 12:00 CET each dayAll prices for the next day (00:00-23:45) are set at this momentLate-day intervals (23:45) are priced ~36 hours before deliveryEarly-day intervals (00:00) are priced ~12 hours before delivery Why Prices Jump at Midnight: Forecast Uncertainty: Weather, demand, and renewable generation forecasts are more uncertain 36 hours ahead than 12 hours aheadRisk Buffer: Late-day prices include a risk premium for this uncertaintyIndependent Days: Each day has its own min/max/avg calculated from its 96 intervalsRelative Classification: Periods are classified based on their position within the day's price range, not absolute prices Example: # Day 1 (low volatility, narrow range) Price range: 18-22 ct/kWh (4 ct span) Daily average: 20 ct/kWh 23:45: 18.5 ct/kWh β†’ 7.5% below average β†’ BEST PRICE βœ… # Day 2 (low volatility, narrow range) Price range: 17-21 ct/kWh (4 ct span) Daily average: 19 ct/kWh 00:00: 18.6 ct/kWh β†’ 2.1% below average β†’ PEAK PRICE ❌ # Observation: Absolute price barely changed (18.5 β†’ 18.6 ct) # But relative position changed dramatically: # - Day 1: Near the bottom of the range # - Day 2: Near the middle/top of the range When This Occurs: Low-volatility days: When price span is narrow (< 5 ct/kWh)Stable weather: Similar conditions across multiple daysMarket transitions: Switching between high/low demand seasons How to Detect: Check the volatility sensors to understand if a period flip is meaningful: # Check daily volatility (available in integration) sensor.tibber_home_volatility_today: 8.2% # Low volatility sensor.tibber_home_volatility_tomorrow: 7.9% # Also low # Low volatility (< 15%) means: # - Small absolute price differences between periods # - Classification changes may not be economically significant # - Consider ignoring period classification on such days Handling in Automations: You can make your automations volatility-aware: # Option 1: Only act on high-volatility days automation: - alias: "Dishwasher - Best Price (High Volatility Only)" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: - condition: numeric_state entity_id: sensor.tibber_home_volatility_today above: 15 # Only act if volatility > 15% action: - service: switch.turn_on entity_id: switch.dishwasher # Option 2: Check absolute price, not just classification automation: - alias: "Heat Water - Cheap Enough" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: - condition: numeric_state entity_id: sensor.tibber_home_current_interval_price_ct below: 20 # Absolute threshold: < 20 ct/kWh action: - service: switch.turn_on entity_id: switch.water_heater # Option 3: Use per-period day volatility (available on period sensors) automation: - alias: "EV Charging - Volatility-Aware" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Check if the period's day has meaningful volatility - condition: template value_template: > {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }} action: - service: switch.turn_on entity_id: switch.ev_charger Available Per-Period Attributes: Each period sensor exposes day volatility and price statistics: binary_sensor.tibber_home_best_price_period: day_volatility_%: 8.2 # Volatility % of the period's day day_price_min: 1800.0 # Minimum price of the day (ct/kWh) day_price_max: 2200.0 # Maximum price of the day (ct/kWh) day_price_span: 400.0 # Difference (max - min) in ct These attributes allow automations to check: "Is the classification meaningful on this particular day?" Summary: βœ… Expected behavior: Periods are evaluated per-day, midnight is a natural boundaryβœ… Market reality: Late-day prices have more uncertainty than early-day pricesβœ… Solution: Use volatility sensors, absolute price thresholds, or per-period day volatility attributes ","version":"Next 🚧","tagName":"h3"},{"title":"Advanced Topics​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#advanced-topics","content":" For advanced configuration patterns and technical deep-dive, see: Automation Examples - Real-world automation patternsActions - Using the tibber_prices.get_chartdata action for custom visualizations ","version":"Next 🚧","tagName":"h2"},{"title":"Quick Reference​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#quick-reference","content":" Configuration Parameters: Parameter\tDefault\tRange\tPurposebest_price_flex\t15%\t0-100%\tSearch range from daily MIN best_price_min_period_length\t60 min\t15-240\tMinimum duration best_price_min_distance_from_avg\t5%\t0-20%\tQuality threshold best_price_max_level\tany\tany/cheap/vcheap\tAbsolute quality best_price_max_level_gap_count\t0\t0-10\tGap tolerance enable_min_periods_best\ttrue\ttrue/false\tEnable relaxation min_periods_best\t2\t1-10\tTarget periods per day relaxation_attempts_best\t11\t1-12\tFlex levels (attempts) per day Peak Price: Same parameters with peak_price_* prefix (defaults: flex=-15%, same otherwise) ","version":"Next 🚧","tagName":"h3"},{"title":"Price Levels Reference​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#price-levels-reference","content":" The Tibber API provides price levels for each 15-minute interval: Levels (based on trailing 24h average): VERY_CHEAP - Significantly below averageCHEAP - Below averageNORMAL - Around averageEXPENSIVE - Above averageVERY_EXPENSIVE - Significantly above average Last updated: November 20, 2025Integration version: 2.0+ ","version":"Next 🚧","tagName":"h3"}],"options":{"id":"default"}} \ No newline at end of file diff --git a/user/search-doc.json b/user/search-doc.json new file mode 100644 index 0000000..120cd90 --- /dev/null +++ b/user/search-doc.json @@ -0,0 +1 @@ +{"searchDocs":[{"title":"Core Concepts","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/concepts","content":"","keywords":"","version":"Next 🚧"},{"title":"Price Intervals​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#price-intervals","content":" The integration works with quarter-hourly intervals (15 minutes): Each interval has a start time (e.g., 14:00, 14:15, 14:30, 14:45)Prices are fixed for the entire intervalSynchronized with Tibber's smart meter readings ","version":"Next 🚧","tagName":"h2"},{"title":"Price Ratings​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#price-ratings","content":" Prices are automatically classified into rating levels: VERY_CHEAP - Exceptionally low prices (great for energy-intensive tasks)CHEAP - Below average prices (good for flexible loads)NORMAL - Around average prices (regular consumption)EXPENSIVE - Above average prices (reduce consumption if possible)VERY_EXPENSIVE - Exceptionally high prices (avoid heavy loads) Rating is based on statistical analysis comparing current price to: Daily averageTrailing 24-hour averageUser-configured thresholds ","version":"Next 🚧","tagName":"h2"},{"title":"Price Periods​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#price-periods","content":" Best Price Periods and Peak Price Periods are automatically detected time windows: Best Price Period - Consecutive intervals with favorable prices (for scheduling energy-heavy tasks)Peak Price Period - Time windows with highest prices (to avoid or shift consumption) Periods can: Span multiple hoursCross midnight boundariesAdapt based on your configuration (flex, min_distance, rating levels) See Period Calculation for detailed configuration. ","version":"Next 🚧","tagName":"h2"},{"title":"Statistical Analysis​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#statistical-analysis","content":" The integration enriches every interval with context: Trailing 24h Average - Average price over the last 24 hoursLeading 24h Average - Average price over the next 24 hoursPrice Difference - How much current price deviates from average (in %)Volatility - Price stability indicator (LOW, MEDIUM, HIGH) This helps you understand if current prices are exceptional or typical. ","version":"Next 🚧","tagName":"h2"},{"title":"Multi-Home Support​","type":1,"pageTitle":"Core Concepts","url":"/hass.tibber_prices/user/concepts#multi-home-support","content":" You can add multiple Tibber homes to track prices for: Different locationsDifferent electricity contractsComparison between regions Each home gets its own set of sensors with unique entity IDs. πŸ’‘ Next Steps: Glossary - Detailed term definitionsSensors - How to use sensor dataAutomation Examples - Practical use cases ","version":"Next 🚧","tagName":"h2"},{"title":"Actions (Services)","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/actions","content":"","keywords":"","version":"Next 🚧"},{"title":"Available Actions​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#available-actions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"tibber_prices.get_chartdata​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#tibber_pricesget_chartdata","content":" Purpose: Returns electricity price data in chart-friendly formats for visualization and analysis. Key Features: Flexible Output Formats: Array of objects or array of arraysTime Range Selection: Filter by day (yesterday, today, tomorrow)Price Filtering: Filter by price level or ratingPeriod Support: Return best/peak price period summaries instead of intervalsResolution Control: Interval (15-minute) or hourly aggregationCustomizable Field Names: Rename output fields to match your chart libraryCurrency Control: Major (EUR/NOK) or minor (ct/ΓΈre) units Basic Example: service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID day: ["today", "tomorrow"] output_format: array_of_objects response_variable: chart_data Response Format: { "data": [ { "start_time": "2025-11-17T00:00:00+01:00", "price_per_kwh": 0.2534 }, { "start_time": "2025-11-17T00:15:00+01:00", "price_per_kwh": 0.2498 } ] } Common Parameters: Parameter\tDescription\tDefaultentry_id\tIntegration entry ID (required)\t- day\tDays to include: yesterday, today, tomorrow\t["today", "tomorrow"] output_format\tarray_of_objects or array_of_arrays\tarray_of_objects resolution\tinterval (15-min) or hourly\tinterval minor_currency\tReturn prices in ct/ΓΈre instead of EUR/NOK\tfalse round_decimals\tDecimal places (0-10)\t4 (major) or 2 (minor) Rolling Window Mode: Omit the day parameter to get a dynamic 48-hour rolling window that automatically adapts to data availability: service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID # Omit 'day' for rolling window output_format: array_of_objects response_variable: chart_data Behavior: When tomorrow data available (typically after ~13:00): Returns today + tomorrowWhen tomorrow data not available: Returns yesterday + today This is useful for charts that should always show a 48-hour window without manual day selection. Period Filter Example: Get best price periods as summaries instead of intervals: service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID period_filter: best_price # or peak_price day: ["today", "tomorrow"] include_level: true include_rating_level: true response_variable: periods Advanced Filtering: service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID level_filter: ["VERY_CHEAP", "CHEAP"] # Only cheap periods rating_level_filter: ["LOW"] # Only low-rated prices insert_nulls: segments # Add nulls at segment boundaries Complete Documentation: For detailed parameter descriptions, open Developer Tools β†’ Actions (the UI label) and select tibber_prices.get_chartdata. The inline documentation is still stored in services.yaml because actions are backed by services. ","version":"Next 🚧","tagName":"h3"},{"title":"tibber_prices.get_apexcharts_yaml​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#tibber_pricesget_apexcharts_yaml","content":" ⚠️ IMPORTANT: This action generates a basic example configuration as a starting point, NOT a complete solution for all ApexCharts features. This integration is primarily a data provider. The generated YAML demonstrates how to use the get_chartdata action to fetch price data. Due to the segmented nature of our data (different time periods per series) and the use of Home Assistant's service API instead of entity attributes, many advanced ApexCharts features (like in_header, certain transformations) are not compatible or require manual customization. You are welcome to customize the generated YAML for your specific needs, but comprehensive ApexCharts configuration support is beyond the scope of this integration. Community contributions with improved configurations are always appreciated! For custom solutions: Use the get_chartdata action directly to build your own charts with full control over the data format and visualization. Purpose: Generates a basic ApexCharts card YAML configuration example for visualizing electricity prices with automatic color-coding by price level. Prerequisites: ApexCharts Card (required for all configurations)Config Template Card (required only for rolling window modes - enables dynamic Y-axis scaling) ✨ Key Features: Automatic Color-Coded Series: Separate series for each price level (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) or rating (LOW, NORMAL, HIGH)Dynamic Y-Axis Scaling: Rolling window modes automatically use chart_metadata sensor for optimal Y-axis boundsBest Price Period Highlights: Optional vertical bands showing detected best price periodsTranslated Labels: Automatically uses your Home Assistant language settingClean Gap Visualization: Proper NULL insertion for missing data segments Quick Example: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: today # Optional: yesterday, today, tomorrow, rolling_window, rolling_window_autozoom level_type: rating_level # or "level" for 5-level classification highlight_best_price: true # Show best price period overlays response_variable: apexcharts_config Day Parameter Options: Fixed days (yesterday, today, tomorrow): Static 24-hour views, no additional dependenciesRolling Window (default when omitted or rolling_window): Dynamic 48-hour window that automatically shifts between yesterday+today and today+tomorrow based on data availability ✨ Includes dynamic Y-axis scaling via chart_metadata sensor Rolling Window (Auto-Zoom) (rolling_window_autozoom): Same as rolling window, but additionally zooms in progressively (2h lookback + remaining time until midnight, graph span decreases every 15 minutes) ✨ Includes dynamic Y-axis scaling via chart_metadata sensor Dynamic Y-Axis Scaling (Rolling Window Modes): Rolling window configurations automatically integrate with the chart_metadata sensor for optimal chart appearance: Automatic bounds: Y-axis min/max adjust to data rangeNo manual configuration: Works out of the box if sensor is enabledFallback behavior: If sensor is disabled, uses ApexCharts auto-scalingReal-time updates: Y-axis adapts when price data changes Example: Today's Prices (Static View) service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: today level_type: rating_level response_variable: config # Use in dashboard: type: custom:apexcharts-card # ... paste generated config Example: Rolling 48h Window (Dynamic View) service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID # Omit 'day' for rolling window (or use 'rolling_window') level_type: level # 5-level classification highlight_best_price: true response_variable: config # Use in dashboard: type: custom:config-template-card entities: - sensor.tibber_home_tomorrow_data - sensor.tibber_home_chart_metadata # For dynamic Y-axis card: # ... paste generated config Screenshots: Screenshots coming soon for all 4 modes: today, tomorrow, rolling_window, rolling_window_autozoom Level Type Options: rating_level (default): 3 series (LOW, NORMAL, HIGH) - based on your personal thresholdslevel: 5 series (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE) - absolute price ranges Best Price Period Highlights: When highlight_best_price: true: Vertical bands overlay the chart showing detected best price periodsTooltip shows "Best Price Period" label when hovering over highlighted areasOnly appears when best price periods are configured and detected Important Notes: Config Template Card is only required for rolling window modes (enables dynamic Y-axis)Fixed day views (today, tomorrow, yesterday) work with ApexCharts Card aloneGenerated YAML is a starting point - customize colors, styling, features as neededAll labels are automatically translated to your Home Assistant language Use the response in Lovelace dashboards by copying the generated YAML. Documentation: Refer to Developer Tools β†’ Actions for descriptions of the fields exposed by this action. ","version":"Next 🚧","tagName":"h3"},{"title":"tibber_prices.refresh_user_data​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#tibber_pricesrefresh_user_data","content":" Purpose: Forces an immediate refresh of user data (homes, subscriptions) from the Tibber API. Example: service: tibber_prices.refresh_user_data data: entry_id: YOUR_ENTRY_ID Note: User data is cached for 24 hours. Trigger this action only when you need immediate updates (e.g., after changing Tibber subscriptions). ","version":"Next 🚧","tagName":"h3"},{"title":"Migration from Chart Data Export Sensor​","type":1,"pageTitle":"Actions (Services)","url":"/hass.tibber_prices/user/actions#migration-from-chart-data-export-sensor","content":" If you're still using the sensor.tibber_home_chart_data_export sensor, consider migrating to the tibber_prices.get_chartdata action: Benefits: No HA restart required for configuration changesMore flexible filtering and formatting optionsBetter performance (on-demand instead of polling)Future-proof (active development) Migration Steps: Note your current sensor configuration (Step 7 in Options Flow)Create automation/script that calls tibber_prices.get_chartdata with the same parametersTest the new approachDisable the old sensor when satisfied ","version":"Next 🚧","tagName":"h2"},{"title":"Chart Examples","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/chart-examples","content":"","keywords":"","version":"Next 🚧"},{"title":"Overview​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#overview","content":" The integration can generate 4 different chart modes, each optimized for specific use cases: Mode\tDescription\tBest For\tDependenciesToday\tStatic 24h view of today's prices\tQuick daily overview\tApexCharts Card Tomorrow\tStatic 24h view of tomorrow's prices\tPlanning tomorrow\tApexCharts Card Rolling Window\tDynamic 48h view (today+tomorrow or yesterday+today)\tAlways-current overview\tApexCharts + Config Template Card Rolling Window Auto-Zoom\tDynamic view that zooms in as day progresses\tReal-time focus on remaining day\tApexCharts + Config Template Card Screenshots available for: βœ… Today (static) - Representative of all fixed day viewsβœ… Rolling Window - Shows dynamic Y-axis scalingβœ… Rolling Window Auto-Zoom - Shows progressive zoom effect ","version":"Next 🚧","tagName":"h2"},{"title":"All Chart Modes​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#all-chart-modes","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"1. Today's Prices (Static)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#1-todays-prices-static","content":" When to use: Simple daily price overview, no dynamic updates needed. Dependencies: ApexCharts Card only Generate: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: today level_type: rating_level highlight_best_price: true Screenshot: Key Features: βœ… Color-coded price levels (LOW, NORMAL, HIGH)βœ… Best price period highlights (vertical bands)βœ… Static 24-hour view (00:00 - 23:59)βœ… Works with ApexCharts Card alone Note: Tomorrow view (day: tomorrow) works identically to Today view, just showing tomorrow's data. All fixed day views (yesterday/today/tomorrow) use the same visualization approach. ","version":"Next 🚧","tagName":"h3"},{"title":"2. Rolling 48h Window (Dynamic)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#2-rolling-48h-window-dynamic","content":" When to use: Always-current view that automatically switches between yesterday+today and today+tomorrow. Dependencies: ApexCharts Card + Config Template Card Generate: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID # Omit 'day' for rolling window level_type: rating_level highlight_best_price: true Screenshot: Key Features: βœ… Dynamic Y-axis scaling via chart_metadata sensorβœ… Automatic data selection: today+tomorrow (when available) or yesterday+todayβœ… Always shows 48 hours of dataβœ… Updates automatically when tomorrow's data arrivesβœ… Color gradients for visual appeal How it works: Before ~13:00: Shows yesterday + todayAfter ~13:00: Shows today + tomorrowY-axis automatically adjusts to data range for optimal visualization ","version":"Next 🚧","tagName":"h3"},{"title":"3. Rolling Window Auto-Zoom (Dynamic)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#3-rolling-window-auto-zoom-dynamic","content":" When to use: Real-time focus on remaining day - progressively zooms in as day advances. Dependencies: ApexCharts Card + Config Template Card Generate: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: rolling_window_autozoom level_type: rating_level highlight_best_price: true Screenshot: Key Features: βœ… Progressive zoom: Graph span decreases every 15 minutesβœ… Dynamic Y-axis scaling via chart_metadata sensorβœ… Always shows: 2 hours lookback + remaining time until midnightβœ… Perfect for real-time price monitoringβœ… Example: At 18:00, shows 16:00 β†’ 00:00 (8h window) How it works: 00:00: Shows full 48h window (same as rolling window)06:00: Shows 04:00 β†’ midnight (20h window)12:00: Shows 10:00 β†’ midnight (14h window)18:00: Shows 16:00 β†’ midnight (8h window)23:45: Shows 21:45 β†’ midnight (2.25h window) This creates a "zooming in" effect that focuses on the most relevant remaining time. ","version":"Next 🚧","tagName":"h3"},{"title":"Comparison: Level Type Options​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#comparison-level-type-options","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Rating Level (3 series)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#rating-level-3-series","content":" Based on your personal price thresholds (configured in Options Flow): LOW (Green): Below your "cheap" thresholdNORMAL (Blue): Between thresholdsHIGH (Red): Above your "expensive" threshold Best for: Personal decision-making based on your budget ","version":"Next 🚧","tagName":"h3"},{"title":"Level (5 series)​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#level-5-series","content":" Based on absolute price ranges (calculated from daily min/max): VERY_CHEAP (Dark Green): Bottom 20%CHEAP (Light Green): 20-40%NORMAL (Blue): 40-60%EXPENSIVE (Orange): 60-80%VERY_EXPENSIVE (Red): Top 20% Best for: Objective price distribution visualization ","version":"Next 🚧","tagName":"h3"},{"title":"Dynamic Y-Axis Scaling​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#dynamic-y-axis-scaling","content":" Rolling window modes (2 & 3) automatically integrate with the chart_metadata sensor for optimal visualization: Without chart_metadata sensor (disabled): β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ ← Lots of empty space β”‚ ___ β”‚ β”‚ ___/ \\___ β”‚ β”‚_/ \\_ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ 0 100 ct With chart_metadata sensor (enabled): β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ ___ β”‚ ← Y-axis fitted to data β”‚ ___/ \\___ β”‚ β”‚_/ \\_ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ 18 28 ct ← Optimal range Requirements: βœ… The sensor.tibber_home_chart_metadata must be enabled (it's enabled by default!)βœ… That's it! The generated YAML automatically uses the sensor for dynamic scaling Important: Do NOT disable the chart_metadata sensor if you want optimal Y-axis scaling in rolling window modes! Note: Fixed day views (today, tomorrow) use ApexCharts' built-in auto-scaling and don't require the metadata sensor. ","version":"Next 🚧","tagName":"h2"},{"title":"Best Price Period Highlights​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#best-price-period-highlights","content":" When highlight_best_price: true, vertical bands overlay the chart showing detected best price periods: Example: Price β”‚ 30β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” Normal prices β”‚ β”‚ β”‚ 25β”‚ β–“β–“β–“β–“β–“β–“β”‚ β”‚ ← Best price period (shaded) β”‚ β–“β–“β–“β–“β–“β–“β”‚ β”‚ 20│─────▓▓▓▓▓▓│─────────│ β”‚ β–“β–“β–“β–“β–“β–“ └─────────────────────── Time 06:00 12:00 18:00 Features: Automatic detection based on your configuration (see Period Calculation Guide)Tooltip shows "Best Price Period" labelOnly appears when periods are configured and detectedCan be disabled with highlight_best_price: false ","version":"Next 🚧","tagName":"h2"},{"title":"Prerequisites​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#prerequisites","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Required for All Modes​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#required-for-all-modes","content":" ApexCharts Card: Core visualization library # Install via HACS HACS β†’ Frontend β†’ Search "ApexCharts Card" β†’ Download ","version":"Next 🚧","tagName":"h3"},{"title":"Required for Rolling Window Modes Only​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#required-for-rolling-window-modes-only","content":" Config Template Card: Enables dynamic configuration # Install via HACS HACS β†’ Frontend β†’ Search "Config Template Card" β†’ Download Note: Fixed day views (today, tomorrow) work with ApexCharts Card alone! ","version":"Next 🚧","tagName":"h3"},{"title":"Tips & Tricks​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#tips--tricks","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Customizing Colors​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#customizing-colors","content":" Edit the colors array in the generated YAML: apex_config: colors: - "#00FF00" # Change LOW/VERY_CHEAP color - "#0000FF" # Change NORMAL color - "#FF0000" # Change HIGH/VERY_EXPENSIVE color ","version":"Next 🚧","tagName":"h3"},{"title":"Changing Chart Height​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#changing-chart-height","content":" Add to the card configuration: type: custom:apexcharts-card graph_span: 48h header: show: true title: My Custom Title apex_config: chart: height: 400 # Adjust height in pixels ","version":"Next 🚧","tagName":"h3"},{"title":"Combining with Other Cards​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#combining-with-other-cards","content":" Wrap in a vertical stack for dashboard integration: type: vertical-stack cards: - type: entity entity: sensor.tibber_home_current_interval_price - type: custom:apexcharts-card # ... generated chart config ","version":"Next 🚧","tagName":"h3"},{"title":"Next Steps​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#next-steps","content":" Actions Guide: Complete documentation of get_apexcharts_yaml parametersChart Metadata Sensor: Learn about dynamic Y-axis scalingPeriod Calculation Guide: Configure best price period detection ","version":"Next 🚧","tagName":"h2"},{"title":"Screenshots​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#screenshots","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Gallery​","type":1,"pageTitle":"Chart Examples","url":"/hass.tibber_prices/user/chart-examples#gallery","content":" Today View (Static) - Representative of all fixed day views (yesterday/today/tomorrow) Rolling Window (Dynamic) - Shows dynamic Y-axis scaling and 48h window Rolling Window Auto-Zoom (Dynamic) - Shows progressive zoom effect Note: Tomorrow view is visually identical to Today view (same chart type, just different data). ","version":"Next 🚧","tagName":"h3"},{"title":"Configuration","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/configuration","content":"","keywords":"","version":"Next 🚧"},{"title":"Initial Setup​","type":1,"pageTitle":"Configuration","url":"/hass.tibber_prices/user/configuration#initial-setup","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Configuration Options​","type":1,"pageTitle":"Configuration","url":"/hass.tibber_prices/user/configuration#configuration-options","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Price Thresholds​","type":1,"pageTitle":"Configuration","url":"/hass.tibber_prices/user/configuration#price-thresholds","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Automation Examples","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/automation-examples","content":"","keywords":"","version":"Next 🚧"},{"title":"Table of Contents​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#table-of-contents","content":" Price-Based AutomationsVolatility-Aware AutomationsBest Hour DetectionApexCharts Cards ","version":"Next 🚧","tagName":"h2"},{"title":"Price-Based Automations​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#price-based-automations","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Volatility-Aware Automations​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#volatility-aware-automations","content":" These examples show how to handle low-volatility days where period classifications may flip at midnight despite minimal absolute price changes. ","version":"Next 🚧","tagName":"h2"},{"title":"Use Case: Only Act on High-Volatility Days​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-only-act-on-high-volatility-days","content":" On days with low price variation (< 15% volatility), the difference between "cheap" and "expensive" periods is minimal. This automation only runs appliances when the savings are meaningful: automation: - alias: "Dishwasher - Best Price (High Volatility Only)" description: "Start dishwasher during Best Price period, but only on days with meaningful price differences" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Only act if volatility > 15% (meaningful savings) - condition: numeric_state entity_id: sensor.tibber_home_volatility_today above: 15 # Optional: Ensure dishwasher is idle and door closed - condition: state entity_id: binary_sensor.dishwasher_door state: "off" action: - service: switch.turn_on target: entity_id: switch.dishwasher_smart_plug - service: notify.mobile_app data: message: "Dishwasher started during Best Price period ({{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh, volatility {{ states('sensor.tibber_home_volatility_today') }}%)" Why this works: On high-volatility days (e.g., 25% span), Best Price periods save 5-10 ct/kWhOn low-volatility days (e.g., 8% span), savings are only 1-2 ct/kWhUser can manually start dishwasher on low-volatility days without automation interference ","version":"Next 🚧","tagName":"h3"},{"title":"Use Case: Absolute Price Threshold​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-absolute-price-threshold","content":" Instead of relying on relative classification, check if the absolute price is cheap enough: automation: - alias: "Water Heater - Cheap Enough" description: "Heat water when price is below absolute threshold, regardless of period classification" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Absolute threshold: Only run if < 20 ct/kWh - condition: numeric_state entity_id: sensor.tibber_home_current_interval_price_ct below: 20 # Optional: Check water temperature - condition: numeric_state entity_id: sensor.water_heater_temperature below: 55 # Only heat if below 55Β°C action: - service: switch.turn_on target: entity_id: switch.water_heater - delay: hours: 2 # Heat for 2 hours - service: switch.turn_off target: entity_id: switch.water_heater Why this works: Period classification can flip at midnight on low-volatility daysAbsolute threshold (20 ct/kWh) is stable across midnight boundaryUser sets their own "cheap enough" price based on local rates ","version":"Next 🚧","tagName":"h3"},{"title":"Use Case: Combined Volatility and Price Check​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-combined-volatility-and-price-check","content":" Most robust approach: Check both volatility and absolute price: automation: - alias: "EV Charging - Smart Strategy" description: "Charge EV using volatility-aware logic" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Check battery level - condition: numeric_state entity_id: sensor.ev_battery_level below: 80 # Strategy: High volatility OR cheap enough - condition: or conditions: # Path 1: High volatility day - trust period classification - condition: numeric_state entity_id: sensor.tibber_home_volatility_today above: 15 # Path 2: Low volatility but price is genuinely cheap - condition: numeric_state entity_id: sensor.tibber_home_current_interval_price_ct below: 18 action: - service: switch.turn_on target: entity_id: switch.ev_charger - service: notify.mobile_app data: message: > EV charging started: {{ states('sensor.tibber_home_current_interval_price_ct') }} ct/kWh (Volatility: {{ states('sensor.tibber_home_volatility_today') }}%) Why this works: On high-volatility days (> 15%): Trust the Best Price classificationOn low-volatility days (< 15%): Only charge if price is actually cheap (< 18 ct/kWh)Handles midnight flips gracefully: Continues charging if price stays cheap ","version":"Next 🚧","tagName":"h3"},{"title":"Use Case: Ignore Period Flips During Active Period​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-ignore-period-flips-during-active-period","content":" Prevent automations from stopping mid-cycle when a period flips at midnight: automation: - alias: "Washing Machine - Complete Cycle" description: "Start washing machine during Best Price, ignore midnight flips" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Only start if washing machine is idle - condition: state entity_id: sensor.washing_machine_state state: "idle" # And volatility is meaningful - condition: numeric_state entity_id: sensor.tibber_home_volatility_today above: 15 action: - service: button.press target: entity_id: button.washing_machine_eco_program # Create input_boolean to track active cycle - service: input_boolean.turn_on target: entity_id: input_boolean.washing_machine_auto_started # Separate automation: Clear flag when cycle completes - alias: "Washing Machine - Cycle Complete" trigger: - platform: state entity_id: sensor.washing_machine_state to: "finished" condition: # Only clear flag if we auto-started it - condition: state entity_id: input_boolean.washing_machine_auto_started state: "on" action: - service: input_boolean.turn_off target: entity_id: input_boolean.washing_machine_auto_started - service: notify.mobile_app data: message: "Washing cycle complete" Why this works: Uses input_boolean to track auto-started cyclesWon't trigger multiple times if period flips during the 2-3 hour wash cycleOnly triggers on "off" β†’ "on" transitions, not during "on" β†’ "on" continuity ","version":"Next 🚧","tagName":"h3"},{"title":"Use Case: Per-Period Day Volatility​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#use-case-per-period-day-volatility","content":" The simplest approach: Use the period's day volatility attribute directly: automation: - alias: "Heat Pump - Smart Heating" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Check if the PERIOD'S DAY has meaningful volatility - condition: template value_template: > {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }} action: - service: climate.set_temperature target: entity_id: climate.heat_pump data: temperature: 22 # Boost temperature during cheap period Available per-period attributes: day_volatility_%: Percentage volatility of the period's day (e.g., 8.2 for 8.2%)day_price_min: Minimum price of the day in minor currency (ct/ΓΈre)day_price_max: Maximum price of the day in minor currency (ct/ΓΈre)day_price_span: Absolute difference (max - min) in minor currency (ct/ΓΈre) These attributes are available on both binary_sensor.tibber_home_best_price_period and binary_sensor.tibber_home_peak_price_period. Why this works: Each period knows its day's volatilityNo need to query separate sensorsTemplate checks if saving is meaningful (> 15% volatility) ","version":"Next 🚧","tagName":"h3"},{"title":"Best Hour Detection​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#best-hour-detection","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"ApexCharts Cards​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#apexcharts-cards","content":" ⚠️ IMPORTANT: The tibber_prices.get_apexcharts_yaml service generates a basic example configuration as a starting point. It is NOT a complete solution for all ApexCharts features. This integration is primarily a data provider. Due to technical limitations (segmented time periods, service API usage), many advanced ApexCharts features require manual customization or may not be compatible. For advanced customization: Use the get_chartdata service directly to build charts tailored to your specific needs. Community contributions with improved configurations are welcome! The tibber_prices.get_apexcharts_yaml service generates basic ApexCharts card configuration examples for visualizing electricity prices. ","version":"Next 🚧","tagName":"h2"},{"title":"Prerequisites​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#prerequisites","content":" Required: ApexCharts Card - Install via HACS Optional (for rolling window mode): Config Template Card - Install via HACS ","version":"Next 🚧","tagName":"h3"},{"title":"Installation​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#installation","content":" Open HACS β†’ FrontendSearch for "ApexCharts Card" and install(Optional) Search for "Config Template Card" and install if you want rolling window mode ","version":"Next 🚧","tagName":"h3"},{"title":"Example: Fixed Day View​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#example-fixed-day-view","content":" # Generate configuration via automation/script service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: today # or "yesterday", "tomorrow" level_type: rating_level # or "level" for 5-level view response_variable: apexcharts_config Then copy the generated YAML into your Lovelace dashboard. ","version":"Next 🚧","tagName":"h3"},{"title":"Example: Rolling 48h Window​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#example-rolling-48h-window","content":" For a dynamic chart that automatically adapts to data availability: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: rolling_window # Or omit for same behavior (default) level_type: rating_level response_variable: apexcharts_config Behavior: When tomorrow data available (typically after ~13:00): Shows today + tomorrowWhen tomorrow data not available: Shows yesterday + todayFixed 48h span: Always shows full 48 hours Auto-Zoom Variant: For progressive zoom-in throughout the day: service: tibber_prices.get_apexcharts_yaml data: entry_id: YOUR_ENTRY_ID day: rolling_window_autozoom level_type: rating_level response_variable: apexcharts_config Same data loading as rolling windowProgressive zoom: Graph span starts at ~26h in the morning and decreases to ~14h by midnightUpdates every 15 minutes: Always shows 2h lookback + remaining time until midnight Note: Rolling window modes require Config Template Card to dynamically adjust the time range. ","version":"Next 🚧","tagName":"h3"},{"title":"Features​","type":1,"pageTitle":"Automation Examples","url":"/hass.tibber_prices/user/automation-examples#features","content":" Color-coded price levels/ratings (green = cheap, yellow = normal, red = expensive)Best price period highlighting (semi-transparent green overlay)Automatic NULL insertion for clean gapsTranslated labels based on your Home Assistant languageInteractive zoom and panLive marker showing current time ","version":"Next 🚧","tagName":"h3"},{"title":"FAQ - Frequently Asked Questions","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/faq","content":"","keywords":"","version":"Next 🚧"},{"title":"General Questions​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#general-questions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Why don't I see tomorrow's prices yet?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#why-dont-i-see-tomorrows-prices-yet","content":" Tomorrow's prices are published by Tibber around 13:00 CET (12:00 UTC in winter, 11:00 UTC in summer). Before publication: Sensors show unavailable or use today's dataAfter publication: Integration automatically fetches new data within 15 minutesNo manual refresh needed - polling happens automatically ","version":"Next 🚧","tagName":"h3"},{"title":"How often does the integration update data?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#how-often-does-the-integration-update-data","content":" API Polling: Every 15 minutesSensor Updates: On quarter-hour boundaries (00, 15, 30, 45 minutes)Cache: Price data cached until midnight (reduces API load) ","version":"Next 🚧","tagName":"h3"},{"title":"Can I use multiple Tibber homes?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#can-i-use-multiple-tibber-homes","content":" Yes! Use the "Add another home" option: Settings β†’ Devices & Services β†’ Tibber PricesClick "Configure" β†’ "Add another home"Select additional home from dropdownEach home gets separate sensors with unique entity IDs ","version":"Next 🚧","tagName":"h3"},{"title":"Does this work without a Tibber subscription?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#does-this-work-without-a-tibber-subscription","content":" No, you need: Active Tibber electricity contractAPI token from developer.tibber.com The integration is free, but requires Tibber as your electricity provider. ","version":"Next 🚧","tagName":"h3"},{"title":"Configuration Questions​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#configuration-questions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"What are good values for price thresholds?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#what-are-good-values-for-price-thresholds","content":" Default values work for most users: High Price Threshold: 30% above averageLow Price Threshold: 15% below average Adjust if: You're in a market with high volatility β†’ increase thresholdsYou want more sensitive ratings β†’ decrease thresholdsSeasonal changes β†’ review every few months ","version":"Next 🚧","tagName":"h3"},{"title":"How do I optimize Best Price Period detection?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#how-do-i-optimize-best-price-period-detection","content":" Key parameters: Flex: 15-20% is optimal (default 15%)Min Distance: 5-10% recommended (default 5%)Rating Levels: Start with "CHEAP + VERY_CHEAP" (default)Relaxation: Keep enabled (helps find periods on expensive days) See Period Calculation for detailed tuning guide. ","version":"Next 🚧","tagName":"h3"},{"title":"Why do I sometimes only get 1 period instead of 2?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#why-do-i-sometimes-only-get-1-period-instead-of-2","content":" This happens on high-price days when: Few intervals meet your criteriaRelaxation is disabledFlex is too lowMin Distance is too strict Solutions: Enable relaxation (recommended)Increase flex to 20-25%Reduce min_distance to 3-5%Add more rating levels (include "NORMAL") ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#troubleshooting","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Sensors show \"unavailable\"​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#sensors-show-unavailable","content":" Common causes: API Token invalid β†’ Check token at developer.tibber.comNo internet connection β†’ Check HA networkTibber API down β†’ Check status.tibber.comIntegration not loaded β†’ Restart Home Assistant ","version":"Next 🚧","tagName":"h3"},{"title":"Best Price Period is ON all day​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#best-price-period-is-on-all-day","content":" This means all intervals meet your criteria (very cheap day!): Not an error - enjoy the low prices!Consider tightening filters (lower flex, higher min_distance)Or add automation to only run during first detected period ","version":"Next 🚧","tagName":"h3"},{"title":"Prices are in wrong currency​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#prices-are-in-wrong-currency","content":" Integration uses currency from your Tibber subscription: EUR β†’ displays in ct/kWhNOK/SEK β†’ displays in ΓΈre/kWh Cannot be changed (tied to your electricity contract). ","version":"Next 🚧","tagName":"h3"},{"title":"Tomorrow data not appearing at all​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#tomorrow-data-not-appearing-at-all","content":" Check: Your Tibber home has hourly price contract (not fixed price)API token has correct permissionsIntegration logs for API errors (/config/home-assistant.log)Tibber actually published data (check Tibber app) ","version":"Next 🚧","tagName":"h3"},{"title":"Automation Questions​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#automation-questions","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"How do I run dishwasher during cheap period?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#how-do-i-run-dishwasher-during-cheap-period","content":" automation: - alias: "Dishwasher during Best Price" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: - condition: time after: "20:00:00" # Only start after 8 PM action: - service: switch.turn_on target: entity_id: switch.dishwasher See Automation Examples for more recipes. ","version":"Next 🚧","tagName":"h3"},{"title":"Can I avoid peak prices automatically?​","type":1,"pageTitle":"FAQ - Frequently Asked Questions","url":"/hass.tibber_prices/user/faq#can-i-avoid-peak-prices-automatically","content":" Yes! Use Peak Price Period binary sensor: automation: - alias: "Disable charging during peak prices" trigger: - platform: state entity_id: binary_sensor.tibber_home_peak_price_period to: "on" action: - service: switch.turn_off target: entity_id: switch.ev_charger πŸ’‘ Still need help? Troubleshooting GuideGitHub Issues ","version":"Next 🚧","tagName":"h3"},{"title":"Dashboard Examples","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/dashboard-examples","content":"","keywords":"","version":"Next 🚧"},{"title":"Basic Price Display Card​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#basic-price-display-card","content":" Simple card showing current price with dynamic color: type: entities title: Current Electricity Price entities: - entity: sensor.tibber_home_current_interval_price name: Current Price icon: mdi:flash - entity: sensor.tibber_home_current_interval_rating name: Price Rating - entity: sensor.tibber_home_next_interval_price name: Next Price ","version":"Next 🚧","tagName":"h2"},{"title":"Period Status Cards​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#period-status-cards","content":" Show when best/peak price periods are active: type: horizontal-stack cards: - type: entity entity: binary_sensor.tibber_home_best_price_period name: Best Price Active icon: mdi:currency-eur-off - type: entity entity: binary_sensor.tibber_home_peak_price_period name: Peak Price Active icon: mdi:alert ","version":"Next 🚧","tagName":"h2"},{"title":"Custom Button Card Examples​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#custom-button-card-examples","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Price Level Card​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#price-level-card","content":" type: custom:button-card entity: sensor.tibber_home_current_interval_level name: Price Level show_state: true styles: card: - background: | [[[ if (entity.state === 'LOWEST') return 'linear-gradient(135deg, #00ffa3 0%, #00d4ff 100%)'; if (entity.state === 'LOW') return 'linear-gradient(135deg, #4dddff 0%, #00ffa3 100%)'; if (entity.state === 'NORMAL') return 'linear-gradient(135deg, #ffd700 0%, #ffb800 100%)'; if (entity.state === 'HIGH') return 'linear-gradient(135deg, #ff8c00 0%, #ff6b00 100%)'; if (entity.state === 'HIGHEST') return 'linear-gradient(135deg, #ff4500 0%, #dc143c 100%)'; return 'var(--card-background-color)'; ]]] ","version":"Next 🚧","tagName":"h3"},{"title":"Lovelace Layouts​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#lovelace-layouts","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Compact Mobile View​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#compact-mobile-view","content":" Optimized for mobile devices: type: vertical-stack cards: - type: custom:mini-graph-card entities: - entity: sensor.tibber_home_current_interval_price name: Today's Prices hours_to_show: 24 points_per_hour: 4 - type: glance entities: - entity: sensor.tibber_home_best_price_start_time name: Best Period Starts - entity: binary_sensor.tibber_home_best_price_period name: Active Now ","version":"Next 🚧","tagName":"h3"},{"title":"Desktop Dashboard​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#desktop-dashboard","content":" Full-width layout for desktop: type: grid columns: 3 square: false cards: - type: custom:apexcharts-card # See chart-examples.md for ApexCharts config - type: vertical-stack cards: - type: entities title: Current Status entities: - sensor.tibber_home_current_interval_price - sensor.tibber_home_current_interval_rating - type: vertical-stack cards: - type: entities title: Statistics entities: - sensor.tibber_home_daily_avg_today - sensor.tibber_home_daily_min_today - sensor.tibber_home_daily_max_today ","version":"Next 🚧","tagName":"h3"},{"title":"Icon Color Integration​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#icon-color-integration","content":" Using the icon_color attribute for dynamic colors: type: custom:mushroom-chips-card chips: - type: entity entity: sensor.tibber_home_current_interval_price icon_color: "{{ state_attr('sensor.tibber_home_current_interval_price', 'icon_color') }}" - type: entity entity: binary_sensor.tibber_home_best_price_period icon_color: green - type: entity entity: binary_sensor.tibber_home_peak_price_period icon_color: red See Icon Colors for detailed color mapping. ","version":"Next 🚧","tagName":"h2"},{"title":"Picture Elements Dashboard​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#picture-elements-dashboard","content":" Advanced interactive dashboard: type: picture-elements image: /local/electricity_dashboard_bg.png elements: - type: state-label entity: sensor.tibber_home_current_interval_price style: top: 20% left: 50% font-size: 32px font-weight: bold - type: state-badge entity: binary_sensor.tibber_home_best_price_period style: top: 40% left: 30% # Add more elements... ","version":"Next 🚧","tagName":"h2"},{"title":"Auto-Entities Dynamic Lists​","type":1,"pageTitle":"Dashboard Examples","url":"/hass.tibber_prices/user/dashboard-examples#auto-entities-dynamic-lists","content":" Automatically list all price sensors: type: custom:auto-entities card: type: entities title: All Price Sensors filter: include: - entity_id: "sensor.tibber_*_price" exclude: - state: unavailable sort: method: state numeric: true πŸ’‘ Related: Chart Examples - ApexCharts configurationsDynamic Icons - Icon behaviorIcon Colors - Color attributes ","version":"Next 🚧","tagName":"h2"},{"title":"Installation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/installation","content":"","keywords":"","version":"Next 🚧"},{"title":"HACS Installation (Recommended)​","type":1,"pageTitle":"Installation","url":"/hass.tibber_prices/user/installation#hacs-installation-recommended","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Manual Installation​","type":1,"pageTitle":"Installation","url":"/hass.tibber_prices/user/installation#manual-installation","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Configuration​","type":1,"pageTitle":"Installation","url":"/hass.tibber_prices/user/installation#configuration","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Glossary","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/glossary","content":"","keywords":"","version":"Next 🚧"},{"title":"A​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#a","content":" API Token: Your personal access key from Tibber. Get it at developer.tibber.com. Attributes: Additional data attached to each sensor (timestamps, statistics, metadata). Access via state_attr() in templates. ","version":"Next 🚧","tagName":"h2"},{"title":"B​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#b","content":" Best Price Period: Automatically detected time window with favorable electricity prices. Ideal for scheduling dishwashers, heat pumps, EV charging. Binary Sensor: Sensor with ON/OFF state (e.g., "Best Price Period Active"). Used in automations as triggers. ","version":"Next 🚧","tagName":"h2"},{"title":"C​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#c","content":" Currency Units: Minor currency units used for display (ct for EUR, ΓΈre for NOK/SEK). Integration handles conversion automatically. Coordinator: Home Assistant component managing data fetching and updates. Polls Tibber API every 15 minutes. ","version":"Next 🚧","tagName":"h2"},{"title":"D​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#d","content":" Dynamic Icons: Icons that change based on sensor state (e.g., battery icons showing price level). See Dynamic Icons. ","version":"Next 🚧","tagName":"h2"},{"title":"F​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#f","content":" Flex (Flexibility): Configuration parameter controlling how strict period detection is. Higher flex = more periods found, but potentially at higher prices. ","version":"Next 🚧","tagName":"h2"},{"title":"I​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#i","content":" Interval: 15-minute time slot with fixed electricity price (00:00-00:15, 00:15-00:30, etc.). ","version":"Next 🚧","tagName":"h2"},{"title":"L​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#l","content":" Level: Price classification within a day (LOWEST, LOW, NORMAL, HIGH, HIGHEST). Based on daily min/max prices. ","version":"Next 🚧","tagName":"h2"},{"title":"M​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#m","content":" Min Distance: Threshold requiring periods to be at least X% below daily average. Prevents detecting "cheap" periods during expensive days. ","version":"Next 🚧","tagName":"h2"},{"title":"P​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#p","content":" Peak Price Period: Time window with highest electricity prices. Use to avoid heavy consumption. Price Info: Complete dataset with all intervals (yesterday, today, tomorrow) including enriched statistics. ","version":"Next 🚧","tagName":"h2"},{"title":"Q​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#q","content":" Quarter-Hourly: 15-minute precision (4 intervals per hour, 96 per day). ","version":"Next 🚧","tagName":"h2"},{"title":"R​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#r","content":" Rating: Statistical price classification (VERY_CHEAP, CHEAP, NORMAL, EXPENSIVE, VERY_EXPENSIVE). Based on 24h averages and thresholds. Relaxation: Automatic loosening of period detection filters when target period count isn't met. Ensures you always get usable periods. ","version":"Next 🚧","tagName":"h2"},{"title":"S​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#s","content":" State: Current value of a sensor (e.g., price in ct/kWh, "ON"/"OFF" for binary sensors). State Class: Home Assistant classification for long-term statistics (MEASUREMENT, TOTAL, or none). ","version":"Next 🚧","tagName":"h2"},{"title":"T​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#t","content":" Trailing Average: Average price over the past 24 hours from current interval. Leading Average: Average price over the next 24 hours from current interval. ","version":"Next 🚧","tagName":"h2"},{"title":"V​","type":1,"pageTitle":"Glossary","url":"/hass.tibber_prices/user/glossary#v","content":" Volatility: Measure of price stability (LOW, MEDIUM, HIGH). High volatility = large price swings = good for timing optimization. πŸ’‘ See Also: Core Concepts - In-depth explanationsSensors - How sensors use these conceptsPeriod Calculation - Deep dive into period detection ","version":"Next 🚧","tagName":"h2"},{"title":"Dynamic Icons","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/dynamic-icons","content":"","keywords":"","version":"Next 🚧"},{"title":"What are Dynamic Icons?​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#what-are-dynamic-icons","content":" Instead of having a fixed icon, some sensors update their icon to reflect their current state: Price level sensors show different cash/money icons depending on whether prices are cheap or expensivePrice rating sensors show thumbs up/down based on how the current price compares to averageVolatility sensors show different chart types based on price stabilityBinary sensors show different icons when ON vs OFF (e.g., piggy bank when in best price period) The icons change automatically - no configuration needed! ","version":"Next 🚧","tagName":"h2"},{"title":"How to Check if a Sensor Has Dynamic Icons​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#how-to-check-if-a-sensor-has-dynamic-icons","content":" To see which icon a sensor currently uses: Go to Developer Tools β†’ States in Home AssistantSearch for your sensor (e.g., sensor.tibber_home_current_interval_price_level)Look at the icon displayed in the entity rowChange conditions (wait for price changes) and check if the icon updates Common sensor types with dynamic icons: Price level sensors (e.g., current_interval_price_level)Price rating sensors (e.g., current_interval_price_rating)Volatility sensors (e.g., volatility_today)Binary sensors (e.g., best_price_period, peak_price_period) ","version":"Next 🚧","tagName":"h2"},{"title":"Using Dynamic Icons in Your Dashboard​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#using-dynamic-icons-in-your-dashboard","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Standard Entity Cards​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#standard-entity-cards","content":" Dynamic icons work automatically in standard Home Assistant cards: type: entities entities: - entity: sensor.tibber_home_current_interval_price_level - entity: sensor.tibber_home_current_interval_price_rating - entity: sensor.tibber_home_volatility_today - entity: binary_sensor.tibber_home_best_price_period The icons will update automatically as the sensor states change. ","version":"Next 🚧","tagName":"h3"},{"title":"Glance Card​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#glance-card","content":" type: glance entities: - entity: sensor.tibber_home_current_interval_price_level name: Price Level - entity: sensor.tibber_home_current_interval_price_rating name: Rating - entity: binary_sensor.tibber_home_best_price_period name: Best Price ","version":"Next 🚧","tagName":"h3"},{"title":"Custom Button Card​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#custom-button-card","content":" type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price Level show_state: true # Icon updates automatically - no need to specify it! ","version":"Next 🚧","tagName":"h3"},{"title":"Mushroom Entity Card​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#mushroom-entity-card","content":" type: custom:mushroom-entity-card entity: sensor.tibber_home_volatility_today name: Price Volatility # Icon changes automatically based on volatility level ","version":"Next 🚧","tagName":"h3"},{"title":"Overriding Dynamic Icons​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#overriding-dynamic-icons","content":" If you want to use a fixed icon instead of the dynamic one: ","version":"Next 🚧","tagName":"h2"},{"title":"In Entity Cards​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#in-entity-cards","content":" type: entities entities: - entity: sensor.tibber_home_current_interval_price_level icon: mdi:lightning-bolt # Fixed icon, won't change ","version":"Next 🚧","tagName":"h3"},{"title":"In Custom Button Card​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#in-custom-button-card","content":" type: custom:button-card entity: sensor.tibber_home_current_interval_price_rating name: Price Rating icon: mdi:chart-line # Fixed icon overrides dynamic behavior show_state: true ","version":"Next 🚧","tagName":"h3"},{"title":"Combining with Dynamic Colors​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#combining-with-dynamic-colors","content":" Dynamic icons work great together with dynamic colors! See the Dynamic Icon Colors Guide for examples. Example: Dynamic icon AND color type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price show_state: true # Icon changes automatically (cheap/expensive cash icons) styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] This gives you both: βœ… Different icon based on state (e.g., cash-plus when cheap, cash-remove when expensive)βœ… Different color based on state (e.g., green when cheap, red when expensive) ","version":"Next 🚧","tagName":"h2"},{"title":"Icon Behavior Details​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#icon-behavior-details","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Binary Sensors​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#binary-sensors","content":" Binary sensors may have different icons for different states: ON state: Typically shows an active/alert iconOFF state: May show different icons depending on whether future periods exist Has upcoming periods: Timer/waiting iconNo upcoming periods: Sleep/inactive icon Example: binary_sensor.tibber_home_best_price_period When ON: Shows a piggy bank (good time to save money)When OFF with future periods: Shows a timer (waiting for next period)When OFF without future periods: Shows a sleep icon (no periods expected soon) ","version":"Next 🚧","tagName":"h3"},{"title":"State-Based Icons​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#state-based-icons","content":" Sensors with text states (like cheap, normal, expensive) typically show icons that match the meaning: Lower/better values β†’ More positive iconsHigher/worse values β†’ More cautionary iconsNormal/average values β†’ Neutral icons The exact icons are chosen to be intuitive and meaningful in the Home Assistant ecosystem. ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#troubleshooting","content":" Icon not changing: Wait for the sensor state to actually change (prices update every 15 minutes)Check in Developer Tools β†’ States that the sensor state is changingIf you've set a custom icon in your card, it will override the dynamic icon Want to see the icon code: Look at the entity in Developer Tools β†’ StatesThe icon attribute shows the current Material Design icon code (e.g., mdi:cash-plus) Want different icons: You can override icons in your card configuration (see examples above)Or create a template sensor with your own icon logic ","version":"Next 🚧","tagName":"h2"},{"title":"See Also​","type":1,"pageTitle":"Dynamic Icons","url":"/hass.tibber_prices/user/dynamic-icons#see-also","content":" Dynamic Icon Colors - Color your icons based on stateSensors Reference - Complete list of available sensorsAutomation Examples - Use dynamic icons in automations ","version":"Next 🚧","tagName":"h2"},{"title":"User Documentation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/intro","content":"","keywords":"","version":"Next 🚧"},{"title":"πŸ“š Documentation​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-documentation","content":" Installation - How to install via HACS and configure the integrationConfiguration - Setting up your Tibber API token and price thresholdsPeriod Calculation - How Best/Peak Price periods are calculated and configuredSensors - Available sensors, their states, and attributesDynamic Icons - State-based automatic icon changesDynamic Icon Colors - Using icon_color attribute for color-coded dashboardsActions - Custom actions (service endpoints) and how to use themChart Examples - ✨ ApexCharts visualizations with screenshotsAutomation Examples - Ready-to-use automation recipesTroubleshooting - Common issues and solutions ","version":"Next 🚧","tagName":"h2"},{"title":"πŸš€ Quick Start​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-quick-start","content":" Install via HACS (add as custom repository)Add Integration in Home Assistant β†’ Settings β†’ Devices & ServicesEnter Tibber API Token (get yours at developer.tibber.com)Configure Price Thresholds (optional, defaults work for most users)Start Using Sensors in automations, dashboards, and scripts! ","version":"Next 🚧","tagName":"h2"},{"title":"✨ Key Features​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-key-features","content":" Quarter-hourly precision - 15-minute intervals for accurate price trackingStatistical analysis - Trailing/leading 24h averages for contextPrice ratings - LOW/NORMAL/HIGH classification based on your thresholdsBest/Peak hour detection - Automatic detection of cheapest/peak periods with configurable filters (learn how)Beautiful ApexCharts - Auto-generated chart configurations with dynamic Y-axis scaling (see examples)Chart metadata sensor - Dynamic chart configuration for optimal visualizationMulti-currency support - EUR, NOK, SEK with proper minor units (ct, ΓΈre, ΓΆre) ","version":"Next 🚧","tagName":"h2"},{"title":"πŸ”— Useful Links​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-useful-links","content":" GitHub RepositoryIssue TrackerRelease NotesHome Assistant Community ","version":"Next 🚧","tagName":"h2"},{"title":"🀝 Need Help?​","type":1,"pageTitle":"User Documentation","url":"/hass.tibber_prices/user/intro#-need-help","content":" Check the Troubleshooting GuideSearch existing issuesOpen a new issue if needed Note: These guides are for end users. If you want to contribute to development, see the Developer Documentation. ","version":"Next 🚧","tagName":"h2"},{"title":"Sensors","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/sensors","content":"","keywords":"","version":"Next 🚧"},{"title":"Binary Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#binary-sensors","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Best Price Period & Peak Price Period​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#best-price-period--peak-price-period","content":" These binary sensors indicate when you're in a detected best or peak price period. See the Period Calculation Guide for a detailed explanation of how these periods are calculated and configured. Quick overview: Best Price Period: Turns ON during periods with significantly lower prices than the daily averagePeak Price Period: Turns ON during periods with significantly higher prices than the daily average Both sensors include rich attributes with period details, intervals, relaxation status, and more. ","version":"Next 🚧","tagName":"h3"},{"title":"Core Price Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#core-price-sensors","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Statistical Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#statistical-sensors","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Rating Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#rating-sensors","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Diagnostic Sensors​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#diagnostic-sensors","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Chart Metadata​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#chart-metadata","content":" Entity ID: sensor.tibber_home_NAME_chart_metadata ✨ New Feature: This sensor provides dynamic chart configuration metadata for optimal visualization. Perfect for use with the get_apexcharts_yaml action! This diagnostic sensor provides essential chart configuration values as sensor attributes, enabling dynamic Y-axis scaling and optimal chart appearance in rolling window modes. Key Features: Dynamic Y-Axis Bounds: Automatically calculates optimal yaxis_min and yaxis_max for your price dataAutomatic Updates: Refreshes when price data changes (coordinator updates)Lightweight: Metadata-only mode (no data processing) for fast responseState Indicator: Shows pending (initialization), ready (data available), or error (service call failed) Attributes: timestamp: When the metadata was last fetchedyaxis_min: Suggested minimum value for Y-axis (optimal scaling)yaxis_max: Suggested maximum value for Y-axis (optimal scaling)currency: Currency code (e.g., "EUR", "NOK")resolution: Interval duration in minutes (usually 15)error: Error message if service call failed Usage: The tibber_prices.get_apexcharts_yaml action automatically uses this sensor for dynamic Y-axis scaling in rolling_window and rolling_window_autozoom modes! No manual configuration needed - just enable the action's result with config-template-card and the sensor provides optimal Y-axis bounds automatically. See the Chart Examples Guide for practical examples! ","version":"Next 🚧","tagName":"h3"},{"title":"Chart Data Export​","type":1,"pageTitle":"Sensors","url":"/hass.tibber_prices/user/sensors#chart-data-export","content":" Entity ID: sensor.tibber_home_NAME_chart_data_exportDefault State: Disabled (must be manually enabled) ⚠️ Legacy Feature: This sensor is maintained for backward compatibility. For new integrations, use the tibber_prices.get_chartdata service instead, which offers more flexibility and better performance. This diagnostic sensor provides cached chart-friendly price data that can be consumed by chart cards (ApexCharts, custom cards, etc.). Key Features: Configurable via Options Flow: Service parameters can be configured through the integration's options menu (Step 7 of 7)Automatic Updates: Data refreshes on coordinator updates (every 15 minutes)Attribute-Based Output: Chart data is stored in sensor attributes for easy accessState Indicator: Shows pending (before first call), ready (data available), or error (service call failed) Important Notes: ⚠️ Disabled by default - must be manually enabled in entity settings⚠️ Consider using the service instead for better control and flexibility⚠️ Configuration updates require HA restart Attributes: The sensor exposes chart data with metadata in attributes: timestamp: When the data was last fetchederror: Error message if service call faileddata (or custom name): Array of price data points in configured format Configuration: To configure the sensor's output format: Go to Settings β†’ Devices & Services β†’ Tibber PricesClick Configure on your Tibber homeNavigate through the options wizard to Step 7: Chart Data Export SettingsConfigure output format, filters, field names, and other optionsSave and restart Home Assistant Available Settings: See the tibber_prices.get_chartdata service documentation below for a complete list of available parameters. All service parameters can be configured through the options flow. Example Usage: # ApexCharts card consuming the sensor type: custom:apexcharts-card series: - entity: sensor.tibber_home_chart_data_export data_generator: | return entity.attributes.data; Migration Path: If you're currently using this sensor, consider migrating to the service: # Old approach (sensor) - service: apexcharts_card.update data: entity: sensor.tibber_home_chart_data_export # New approach (service) - service: tibber_prices.get_chartdata data: entry_id: YOUR_ENTRY_ID day: ["today", "tomorrow"] output_format: array_of_objects response_variable: chart_data ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/troubleshooting","content":"","keywords":"","version":"Next 🚧"},{"title":"Common Issues​","type":1,"pageTitle":"Troubleshooting","url":"/hass.tibber_prices/user/troubleshooting#common-issues","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Debug Logging​","type":1,"pageTitle":"Troubleshooting","url":"/hass.tibber_prices/user/troubleshooting#debug-logging","content":" Coming soon... ","version":"Next 🚧","tagName":"h2"},{"title":"Getting Help​","type":1,"pageTitle":"Troubleshooting","url":"/hass.tibber_prices/user/troubleshooting#getting-help","content":" Check existing issuesOpen a new issue with detailed informationInclude logs, configuration, and steps to reproduce ","version":"Next 🚧","tagName":"h2"},{"title":"Dynamic Icon Colors","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/icon-colors","content":"","keywords":"","version":"Next 🚧"},{"title":"What is icon_color?​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#what-is-icon_color","content":" The icon_color attribute contains a CSS variable name (not a direct color value) that changes based on the sensor's state. For example: Price level sensors: var(--success-color) for cheap, var(--error-color) for expensiveBinary sensors: var(--success-color) when in best price period, var(--error-color) during peak priceVolatility: var(--success-color) for low volatility, var(--error-color) for very high ","version":"Next 🚧","tagName":"h2"},{"title":"Why CSS Variables?​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#why-css-variables","content":" Using CSS variables like var(--success-color) instead of hardcoded colors (like #00ff00) has important advantages: βœ… Automatic theme adaptation - Colors change with light/dark modeβœ… Consistent with your theme - Uses your theme's color schemeβœ… Future-proof - Works with custom themes and future HA updates You can use the icon_color attribute directly in your card templates, or interpret the sensor state yourself if you prefer custom colors (see examples below). ","version":"Next 🚧","tagName":"h3"},{"title":"Which Sensors Support icon_color?​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#which-sensors-support-icon_color","content":" Many sensors provide the icon_color attribute for dynamic styling. To see if a sensor has this attribute: Go to Developer Tools β†’ States in Home AssistantSearch for your sensor (e.g., sensor.tibber_home_current_interval_price_level)Look for icon_color in the attributes section Common sensor types with icon_color: Price level sensors (e.g., current_interval_price_level)Price rating sensors (e.g., current_interval_price_rating)Volatility sensors (e.g., volatility_today)Price trend sensors (e.g., price_trend_next_3h)Binary sensors (e.g., best_price_period, peak_price_period)Timing sensors (e.g., best_price_time_until_start, best_price_progress) The colors adapt to the sensor's state - cheaper prices typically show green, expensive prices red, and neutral states gray. ","version":"Next 🚧","tagName":"h2"},{"title":"When to Use icon_color vs. State Value​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#when-to-use-icon_color-vs-state-value","content":" Use icon_color when: βœ… You can apply the CSS variable directly (icons, text colors, borders)βœ… Your card supports CSS variable substitutionβœ… You want simple, clean code without if/else logic Use the state value directly when: ⚠️ You need to convert the color (e.g., CSS variable β†’ RGBA with transparency)⚠️ You need different colors than what icon_color provides⚠️ You're building complex conditional logic anyway Example of when NOT to use icon_color: # ❌ DON'T: Converting icon_color requires if/else anyway card: - background: | [[[ const color = entity.attributes.icon_color; if (color === 'var(--success-color)') return 'rgba(76, 175, 80, 0.1)'; if (color === 'var(--error-color)') return 'rgba(244, 67, 54, 0.1)'; // ... more if statements ]]] # βœ… DO: Interpret state directly if you need custom logic card: - background: | [[[ const level = entity.state; if (level === 'very_cheap' || level === 'cheap') return 'rgba(76, 175, 80, 0.1)'; if (level === 'very_expensive' || level === 'expensive') return 'rgba(244, 67, 54, 0.1)'; return 'transparent'; ]]] The advantage of icon_color is simplicity - if you need complex logic, you lose that advantage. ","version":"Next 🚧","tagName":"h2"},{"title":"How to Use icon_color in Your Dashboard​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#how-to-use-icon_color-in-your-dashboard","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Method 1: Custom Button Card (Recommended)​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#method-1-custom-button-card-recommended","content":" The custom:button-card from HACS supports dynamic icon colors. Example: Icon color only type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price Level show_state: true icon: mdi:cash styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] Example: Icon AND state value with same color type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price Level show_state: true icon: mdi:cash styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] state: - color: | [[[ return entity.attributes.icon_color || 'var(--primary-text-color)'; ]]] - font-weight: bold ","version":"Next 🚧","tagName":"h3"},{"title":"Method 2: Entities Card with card_mod​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#method-2-entities-card-with-card_mod","content":" Use Home Assistant's built-in entities card with card_mod for icon and state colors: type: entities entities: - entity: sensor.tibber_home_current_interval_price_level card_mod: style: hui-generic-entity-row: $: | state-badge { color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important; } .info { color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important; } ","version":"Next 🚧","tagName":"h3"},{"title":"Method 3: Mushroom Cards​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#method-3-mushroom-cards","content":" The Mushroom cards support card_mod for icon and text colors: Icon color only: type: custom:mushroom-entity-card entity: binary_sensor.tibber_home_best_price_period name: Best Price Period icon: mdi:piggy-bank card_mod: style: | ha-card { --card-mod-icon-color: {{ state_attr('binary_sensor.tibber_home_best_price_period', 'icon_color') }}; } Icon and state value: type: custom:mushroom-entity-card entity: sensor.tibber_home_current_interval_price_level name: Price Level card_mod: style: | ha-card { --card-mod-icon-color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }}; --primary-text-color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }}; } ","version":"Next 🚧","tagName":"h3"},{"title":"Method 4: Glance Card with card_mod​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#method-4-glance-card-with-card_mod","content":" Combine multiple sensors with dynamic colors: type: glance entities: - entity: sensor.tibber_home_current_interval_price_level - entity: sensor.tibber_home_volatility_today - entity: binary_sensor.tibber_home_best_price_period card_mod: style: | ha-card div.entity:nth-child(1) state-badge { color: {{ state_attr('sensor.tibber_home_current_interval_price_level', 'icon_color') }} !important; } ha-card div.entity:nth-child(2) state-badge { color: {{ state_attr('sensor.tibber_home_volatility_today', 'icon_color') }} !important; } ha-card div.entity:nth-child(3) state-badge { color: {{ state_attr('binary_sensor.tibber_home_best_price_period', 'icon_color') }} !important; } ","version":"Next 🚧","tagName":"h3"},{"title":"Complete Dashboard Example​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#complete-dashboard-example","content":" Here's a complete example combining multiple sensors with dynamic colors: type: vertical-stack cards: # Current price status - type: horizontal-stack cards: - type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Price Level show_state: true styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] - type: custom:button-card entity: sensor.tibber_home_current_interval_price_rating name: Price Rating show_state: true styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] # Binary sensors for periods - type: horizontal-stack cards: - type: custom:button-card entity: binary_sensor.tibber_home_best_price_period name: Best Price Period show_state: true icon: mdi:piggy-bank styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] - type: custom:button-card entity: binary_sensor.tibber_home_peak_price_period name: Peak Price Period show_state: true icon: mdi:alert-circle styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] # Volatility and trends - type: horizontal-stack cards: - type: custom:button-card entity: sensor.tibber_home_volatility_today name: Volatility show_state: true styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] - type: custom:button-card entity: sensor.tibber_home_price_trend_next_3h name: Next 3h Trend show_state: true styles: icon: - color: | [[[ return entity.attributes.icon_color || 'var(--state-icon-color)'; ]]] ","version":"Next 🚧","tagName":"h2"},{"title":"CSS Color Variables​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#css-color-variables","content":" The integration uses Home Assistant's standard CSS variables for theme compatibility: var(--success-color) - Green (good/cheap/low)var(--info-color) - Blue (informational)var(--warning-color) - Orange (caution/expensive)var(--error-color) - Red (alert/very expensive/high)var(--state-icon-color) - Gray (neutral/normal)var(--disabled-color) - Light gray (no data/inactive) These automatically adapt to your theme's light/dark mode and custom color schemes. ","version":"Next 🚧","tagName":"h2"},{"title":"Using Custom Colors​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#using-custom-colors","content":" If you want to override the theme colors with your own, you have two options: Option 1: Use icon_color but Override in Your Theme​ Define custom colors in your theme configuration (themes.yaml): my_custom_theme: # Override standard variables success-color: "#00C853" # Custom green error-color: "#D32F2F" # Custom red warning-color: "#F57C00" # Custom orange info-color: "#0288D1" # Custom blue The icon_color attribute will automatically use your custom theme colors. Option 2: Interpret State Value Directly​ Instead of using icon_color, read the sensor state and apply your own colors: Example: Custom colors for price level type: custom:button-card entity: sensor.tibber_home_current_interval_price_level name: Current Price Level show_state: true icon: mdi:cash styles: icon: - color: | [[[ const level = entity.state; if (level === 'very_cheap') return '#00E676'; // Bright green if (level === 'cheap') return '#66BB6A'; // Light green if (level === 'normal') return '#9E9E9E'; // Gray if (level === 'expensive') return '#FF9800'; // Orange if (level === 'very_expensive') return '#F44336'; // Red return 'var(--state-icon-color)'; // Fallback ]]] Example: Custom colors for binary sensor type: custom:button-card entity: binary_sensor.tibber_home_best_price_period name: Best Price Period show_state: true icon: mdi:piggy-bank styles: icon: - color: | [[[ // Use state directly, not icon_color return entity.state === 'on' ? '#4CAF50' : '#9E9E9E'; ]]] card: - background: | [[[ return entity.state === 'on' ? 'rgba(76, 175, 80, 0.1)' : 'transparent'; ]]] Example: Custom colors for volatility type: custom:button-card entity: sensor.tibber_home_volatility_today name: Volatility Today show_state: true styles: icon: - color: | [[[ const volatility = entity.state; if (volatility === 'low') return '#4CAF50'; // Green if (volatility === 'moderate') return '#2196F3'; // Blue if (volatility === 'high') return '#FF9800'; // Orange if (volatility === 'very_high') return '#F44336'; // Red return 'var(--state-icon-color)'; ]]] Example: Custom colors for price rating type: custom:button-card entity: sensor.tibber_home_current_interval_price_rating name: Price Rating show_state: true styles: icon: - color: | [[[ const rating = entity.state; if (rating === 'low') return '#00C853'; // Dark green if (rating === 'normal') return '#78909C'; // Blue-gray if (rating === 'high') return '#D32F2F'; // Dark red return 'var(--state-icon-color)'; ]]] ","version":"Next 🚧","tagName":"h3"},{"title":"Which Approach Should You Use?​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#which-approach-should-you-use","content":" Use Case\tRecommended ApproachWant theme-consistent colors\tβœ… Use icon_color directly Want light/dark mode support\tβœ… Use icon_color directly Want custom theme colors\tβœ… Override CSS variables in theme Want specific hardcoded colors\t⚠️ Interpret state value directly Multiple themes with different colors\tβœ… Use icon_color directly Recommendation: Use icon_color whenever possible for better theme integration. Only interpret the state directly if you need very specific color values that shouldn't change with themes. ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#troubleshooting","content":" Icons not changing color: Make sure you're using a card that supports custom styling (like custom:button-card or card_mod)Check that the entity actually has the icon_color attribute (inspect in Developer Tools β†’ States)Verify your Home Assistant theme supports the CSS variables Colors look wrong: The colors are theme-dependent. Try switching themes to see if they appear correctlySome custom themes may override the standard CSS variables with unexpected colors Want different colors? You can override the colors in your theme configurationOr use conditional logic in your card templates based on the state value instead of icon_color ","version":"Next 🚧","tagName":"h2"},{"title":"See Also​","type":1,"pageTitle":"Dynamic Icon Colors","url":"/hass.tibber_prices/user/icon-colors#see-also","content":" Sensors Reference - Complete list of available sensorsAutomation Examples - Use color-coded sensors in automationsConfiguration Guide - Adjust thresholds for price levels and ratings ","version":"Next 🚧","tagName":"h2"},{"title":"Period Calculation","type":0,"sectionRef":"#","url":"/hass.tibber_prices/user/period-calculation","content":"","keywords":"","version":"Next 🚧"},{"title":"Table of Contents​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#table-of-contents","content":" Quick StartHow It WorksConfiguration GuideUnderstanding RelaxationCommon ScenariosTroubleshooting No Periods FoundPeriods Split Into Small PiecesMidnight Price Classification Changes Advanced Topics ","version":"Next 🚧","tagName":"h2"},{"title":"Quick Start​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#quick-start","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"What Are Price Periods?​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#what-are-price-periods","content":" The integration finds time windows when electricity is especially cheap (Best Price) or expensive (Peak Price): Best Price Periods 🟒 - When to run your dishwasher, charge your EV, or heat waterPeak Price Periods πŸ”΄ - When to reduce consumption or defer non-essential loads ","version":"Next 🚧","tagName":"h3"},{"title":"Default Behavior​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#default-behavior","content":" Out of the box, the integration: Best Price: Finds cheapest 1-hour+ windows that are at least 5% below the daily averagePeak Price: Finds most expensive 30-minute+ windows that are at least 5% above the daily averageRelaxation: Automatically loosens filters if not enough periods are found Most users don't need to change anything! The defaults work well for typical use cases. ℹ️ Why do Best Price and Peak Price have different defaults? The integration sets different initial defaults because the features serve different purposes: Best Price (60 min, 15% flex): Longer duration ensures appliances can complete their cyclesStricter flex (15%) focuses on genuinely cheap timesUse case: Running dishwasher, EV charging, water heating Peak Price (30 min, 20% flex): Shorter duration acceptable for early warningsMore flexible (20%) catches price spikes earlierUse case: Alerting to expensive periods, even brief ones You can adjust all these values in the configuration if the defaults don't fit your use case. The asymmetric defaults simply provide good starting points for typical scenarios. ","version":"Next 🚧","tagName":"h3"},{"title":"Example Timeline​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#example-timeline","content":" 00:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Best Price Period (cheap prices) 04:00 β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ Normal 08:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Peak Price Period (expensive prices) 12:00 β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ Normal 16:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Peak Price Period (expensive prices) 20:00 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ Best Price Period (cheap prices) ","version":"Next 🚧","tagName":"h3"},{"title":"How It Works​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#how-it-works","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"The Basic Idea​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#the-basic-idea","content":" Each day, the integration analyzes all 96 quarter-hourly price intervals and identifies continuous time ranges that meet specific criteria. Think of it like this: Find potential windows - Times close to the daily MIN (Best Price) or MAX (Peak Price)Filter by quality - Ensure they're meaningfully different from averageCheck duration - Must be long enough to be usefulApply preferences - Optional: only show stable prices, avoid mediocre times ","version":"Next 🚧","tagName":"h3"},{"title":"Step-by-Step Process​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#step-by-step-process","content":" 1. Define the Search Range (Flexibility)​ Best Price: How much MORE than the daily minimum can a price be? Daily MIN: 20 ct/kWh Flexibility: 15% (default) β†’ Search for times ≀ 23 ct/kWh (20 + 15%) Peak Price: How much LESS than the daily maximum can a price be? Daily MAX: 40 ct/kWh Flexibility: -15% (default) β†’ Search for times β‰₯ 34 ct/kWh (40 - 15%) Why flexibility? Prices rarely stay at exactly MIN/MAX. Flexibility lets you capture realistic time windows. 2. Ensure Quality (Distance from Average)​ Periods must be meaningfully different from the daily average: Daily AVG: 30 ct/kWh Minimum distance: 5% (default) Best Price: Must be ≀ 28.5 ct/kWh (30 - 5%) Peak Price: Must be β‰₯ 31.5 ct/kWh (30 + 5%) Why? This prevents marking mediocre times as "best" just because they're slightly below average. 3. Check Duration​ Periods must be long enough to be practical: Default: 60 minutes minimum 45-minute period β†’ Discarded 90-minute period β†’ Kept βœ“ 4. Apply Optional Filters​ You can optionally require: Absolute quality (level filter) - "Only show if prices are CHEAP/EXPENSIVE (not just below/above average)" 5. Automatic Price Spike Smoothing​ Isolated price spikes are automatically detected and smoothed to prevent unnecessary period fragmentation: Original prices: 18, 19, 35, 20, 19 ct ← 35 ct is an isolated outlier Smoothed: 18, 19, 19, 20, 19 ct ← Spike replaced with trend prediction Result: Continuous period 00:00-01:15 instead of split periods Important: Original prices are always preserved (min/max/avg show real values)Smoothing only affects which intervals are combined into periodsThe attribute period_interval_smoothed_count shows if smoothing was active ","version":"Next 🚧","tagName":"h3"},{"title":"Visual Example​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#visual-example","content":" Timeline for a typical day: Hour: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Price: 18 19 20 28 29 30 35 34 33 32 30 28 25 24 26 28 30 32 31 22 21 20 19 18 Daily MIN: 18 ct | Daily MAX: 35 ct | Daily AVG: 26 ct Best Price (15% flex = ≀20.7 ct): β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 00:00-03:00 (3h) 19:00-24:00 (5h) Peak Price (-15% flex = β‰₯29.75 ct): β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 06:00-11:00 (5h) ","version":"Next 🚧","tagName":"h3"},{"title":"Configuration Guide​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#configuration-guide","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Basic Settings​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#basic-settings","content":" Flexibility​ What: How far from MIN/MAX to search for periodsDefault: 15% (Best Price), -15% (Peak Price)Range: 0-100% best_price_flex: 15 # Can be up to 15% more expensive than daily MIN peak_price_flex: -15 # Can be up to 15% less expensive than daily MAX When to adjust: Increase (20-25%) β†’ Find more/longer periodsDecrease (5-10%) β†’ Find only the very best/worst times πŸ’‘ Tip: Very high flexibility (>30%) is rarely useful. Recommendation: Start with 15-20% and enable relaxation – it adapts automatically to each day's price pattern. Minimum Period Length​ What: How long a period must be to show itDefault: 60 minutes (Best Price), 30 minutes (Peak Price)Range: 15-240 minutes best_price_min_period_length: 60 peak_price_min_period_length: 30 When to adjust: Increase (90-120 min) β†’ Only show longer periods (e.g., for heat pump cycles)Decrease (30-45 min) β†’ Show shorter windows (e.g., for quick tasks) Distance from Average​ What: How much better than average a period must beDefault: 5%Range: 0-20% best_price_min_distance_from_avg: 5 peak_price_min_distance_from_avg: 5 When to adjust: Increase (5-10%) β†’ Only show clearly better timesDecrease (0-1%) β†’ Show any time below/above average ℹ️ Note: Both flexibility and distance filters must be satisfied. When using high flexibility values (>30%), the distance filter may become the limiting factor. For best results, use moderate flexibility (15-20%) with relaxation enabled. ","version":"Next 🚧","tagName":"h3"},{"title":"Optional Filters​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#optional-filters","content":" Level Filter (Absolute Quality)​ What: Only show periods with CHEAP/EXPENSIVE intervals (not just below/above average)Default: any (disabled)Options: any | cheap | very_cheap (Best Price) | expensive | very_expensive (Peak Price) best_price_max_level: any # Show any period below average best_price_max_level: cheap # Only show if at least one interval is CHEAP Use case: "Only notify me when prices are objectively cheap/expensive" ℹ️ Volatility Thresholds: The level filter also supports volatility-based levels (volatility_low, volatility_medium, volatility_high). These use fixed internal thresholds (LOW < 10%, MEDIUM < 20%, HIGH β‰₯ 20%) that are separate from the sensor volatility thresholds you configure in the UI. This separation ensures that changing sensor display preferences doesn't affect period calculation behavior. Gap Tolerance (for Level Filter)​ What: Allow some "mediocre" intervals within an otherwise good periodDefault: 0 (strict)Range: 0-10 best_price_max_level: cheap best_price_max_level_gap_count: 2 # Allow up to 2 NORMAL intervals per period Use case: "Don't split periods just because one interval isn't perfectly CHEAP" ","version":"Next 🚧","tagName":"h3"},{"title":"Tweaking Strategy: What to Adjust First?​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#tweaking-strategy-what-to-adjust-first","content":" When you're not happy with the default behavior, adjust settings in this order: 1. Start with Relaxation (Easiest)​ If you're not finding enough periods: enable_min_periods_best: true # Already default! min_periods_best: 2 # Already default! relaxation_attempts_best: 11 # Already default! Why start here? Relaxation automatically finds the right balance for each day. Much easier than manual tuning. 2. Adjust Period Length (Simple)​ If periods are too short/long for your use case: best_price_min_period_length: 90 # Increase from 60 for longer periods # OR best_price_min_period_length: 45 # Decrease from 60 for shorter periods Safe to change: This only affects duration, not price selection logic. 3. Fine-tune Flexibility (Moderate)​ If you consistently want more/fewer periods: best_price_flex: 20 # Increase from 15% for more periods # OR best_price_flex: 10 # Decrease from 15% for stricter selection ⚠️ Watch out: Values >25% may conflict with distance filter. Use relaxation instead. 4. Adjust Distance from Average (Advanced)​ Only if periods seem "mediocre" (not really cheap/expensive): best_price_min_distance_from_avg: 10 # Increase from 5% for stricter quality ⚠️ Careful: High values (>10%) can make it impossible to find periods on flat price days. 5. Enable Level Filter (Expert)​ Only if you want absolute quality requirements: best_price_max_level: cheap # Only show objectively CHEAP periods ⚠️ Very strict: Many days may have zero qualifying periods. Always enable relaxation when using this! ","version":"Next 🚧","tagName":"h3"},{"title":"Common Mistakes to Avoid​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#common-mistakes-to-avoid","content":" ❌ Don't increase flexibility to >30% manually β†’ Use relaxation instead ❌ Don't combine high distance (>10%) with strict level filter β†’ Too restrictive ❌ Don't disable relaxation with strict filters β†’ You'll get zero periods on some days ❌ Don't change all settings at once β†’ Adjust one at a time and observe results βœ… Do use defaults + relaxation β†’ Works for 90% of cases βœ… Do adjust one setting at a time β†’ Easier to understand impact βœ… Do check sensor attributes β†’ Shows why periods were/weren't found ","version":"Next 🚧","tagName":"h3"},{"title":"Understanding Relaxation​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#understanding-relaxation","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"What Is Relaxation?​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#what-is-relaxation","content":" Sometimes, strict filters find too few periods (or none). Relaxation automatically loosens filters until a minimum number of periods is found. ","version":"Next 🚧","tagName":"h3"},{"title":"How to Enable​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#how-to-enable","content":" enable_min_periods_best: true min_periods_best: 2 # Try to find at least 2 periods per day relaxation_attempts_best: 11 # Flex levels to test (default: 11 steps = 22 filter combinations) ℹ️ Good news: Relaxation is enabled by default with sensible settings. Most users don't need to change anything here! Set the matching relaxation_attempts_peak value when tuning Peak Price periods. Both sliders accept 1-12 attempts, and the default of 11 flex levels translates to 22 filter-combination tries (11 flex levels Γ— 2 filter combos) for each of Best and Peak calculations. Lower it for quick feedback, or raise it when either sensor struggles to hit the minimum-period target on volatile days. ","version":"Next 🚧","tagName":"h3"},{"title":"Why Relaxation Is Better Than Manual Tweaking​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#why-relaxation-is-better-than-manual-tweaking","content":" Problem with manual settings: You set flex to 25% β†’ Works great on Monday (volatile prices)Same 25% flex on Tuesday (flat prices) β†’ Finds "best price" periods that aren't really cheapYou're stuck with one setting for all days Solution with relaxation: Monday (volatile): Uses flex 15% (original) β†’ Finds 2 perfect periods βœ“Tuesday (flat): Escalates to flex 21% β†’ Finds 2 decent periods βœ“Wednesday (mixed): Uses flex 18% β†’ Finds 2 good periods βœ“ Each day gets exactly the flexibility it needs! ","version":"Next 🚧","tagName":"h3"},{"title":"How It Works (Adaptive Matrix)​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#how-it-works-adaptive-matrix","content":" Relaxation uses a matrix approach - trying N flexibility levels (your configured relaxation attempts) with 2 filter combinations per level. With the default of 11 attempts, that means 11 flex levels Γ— 2 filter combinations = 22 total filter-combination tries per day; fewer attempts mean fewer flex increases, while more attempts extend the search further before giving up. Important: The flexibility increment is fixed at 3% per step (hard-coded for reliability). This means: Base flex 15% β†’ 18% β†’ 21% β†’ 24% β†’ ... β†’ 48% (with 11 attempts)Base flex 20% β†’ 23% β†’ 26% β†’ 29% β†’ ... β†’ 50% (with 11 attempts) Phase Matrix​ For each day, the system tries: Flexibility Levels (Attempts): Attempt 1 = Original flex (e.g., 15%)Attempt 2 = +3% step (18%)Attempt 3 = +3% step (21%)Attempt 4 = +3% step (24%)… Attempts 5-11 (default) continue adding +3% each time… Additional attempts keep extending the same pattern up to the 12-attempt maximum (up to 51%) 2 Filter Combinations (per flexibility level): Original filters (your configured level filter)Remove level filter (level=any) Example progression: Flex 15% + Original filters β†’ Not enough periods Flex 15% + Level=any β†’ Not enough periods Flex 18% + Original filters β†’ Not enough periods Flex 18% + Level=any β†’ SUCCESS! Found 2 periods βœ“ (stops here - no need to try more) ","version":"Next 🚧","tagName":"h3"},{"title":"Choosing the Number of Attempts​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#choosing-the-number-of-attempts","content":" Default (11 attempts) balances speed and completeness for most grids (22 combinations per day for both Best and Peak)Lower (4-8 attempts) if you only want mild relaxation and keep processing time minimal (reaches ~27-39% flex)Higher (12 attempts) for extremely volatile days when you must reach near the 50% maximum (24 combinations)Remember: each additional attempt adds two more filter combinations because every new flex level still runs both filter overrides (original + level=any) Per-Day Independence​ Critical: Each day relaxes independently: Day 1: Finds 2 periods with flex 15% (original) β†’ No relaxation needed Day 2: Needs flex 21% + level=any β†’ Uses relaxed settings Day 3: Finds 2 periods with flex 15% (original) β†’ No relaxation needed Why? Price patterns vary daily. Some days have clear cheap/expensive windows (strict filters work), others don't (relaxation needed). ","version":"Next 🚧","tagName":"h3"},{"title":"Common Scenarios​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#common-scenarios","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"Scenario 1: Simple Best Price (Default)​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#scenario-1-simple-best-price-default","content":" Goal: Find the cheapest time each day to run dishwasher Configuration: # Use defaults - no configuration needed! best_price_flex: 15 # (default) best_price_min_period_length: 60 # (default) best_price_min_distance_from_avg: 5 # (default) What you get: 1-3 periods per day with prices ≀ MIN + 15%Each period at least 1 hour longAll periods at least 5% cheaper than daily average Automation example: automation: - trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" action: - service: switch.turn_on target: entity_id: switch.dishwasher ","version":"Next 🚧","tagName":"h3"},{"title":"Troubleshooting​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#troubleshooting","content":" ","version":"Next 🚧","tagName":"h2"},{"title":"No Periods Found​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#no-periods-found","content":" Symptom: binary_sensor.tibber_home_best_price_period never turns "on" Common Solutions: Check if relaxation is enabled enable_min_periods_best: true # Should be true (default) min_periods_best: 2 # Try to find at least 2 periods If still no periods, check filters Look at sensor attributes: relaxation_active and relaxation_levelIf relaxation exhausted all attempts: Filters too strict or flat price day Try increasing flexibility slightly best_price_flex: 20 # Increase from default 15% Or reduce period length requirement best_price_min_period_length: 45 # Reduce from default 60 minutes ","version":"Next 🚧","tagName":"h3"},{"title":"Periods Split Into Small Pieces​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#periods-split-into-small-pieces","content":" Symptom: Many short periods instead of one long period Common Solutions: If using level filter, add gap tolerance best_price_max_level: cheap best_price_max_level_gap_count: 2 # Allow 2 NORMAL intervals Slightly increase flexibility best_price_flex: 20 # From 15% β†’ captures wider price range Check for price spikes Automatic smoothing should handle thisCheck attribute: period_interval_smoothed_countIf 0: Not isolated spikes, but real price levels ","version":"Next 🚧","tagName":"h3"},{"title":"Understanding Sensor Attributes​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#understanding-sensor-attributes","content":" Key attributes to check: # Entity: binary_sensor.tibber_home_best_price_period # When "on" (period active): start: "2025-11-11T02:00:00+01:00" # Period start time end: "2025-11-11T05:00:00+01:00" # Period end time duration_minutes: 180 # Duration in minutes price_avg: 18.5 # Average price in the period rating_level: "LOW" # All intervals have LOW rating # Relaxation info (shows if filter loosening was needed): relaxation_active: true # This day needed relaxation relaxation_level: "price_diff_18.0%+level_any" # Found at 18% flex, level filter removed # Optional (only shown when relevant): period_interval_smoothed_count: 2 # Number of price spikes smoothed period_interval_level_gap_count: 1 # Number of "mediocre" intervals tolerated ","version":"Next 🚧","tagName":"h3"},{"title":"Midnight Price Classification Changes​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#midnight-price-classification-changes","content":" Symptom: A Best Price period at 23:45 suddenly changes to Peak Price at 00:00 (or vice versa), even though the absolute price barely changed. Why This Happens: This is mathematically correct behavior caused by how electricity prices are set in the day-ahead market: Market Timing: The EPEX SPOT Day-Ahead auction closes at 12:00 CET each dayAll prices for the next day (00:00-23:45) are set at this momentLate-day intervals (23:45) are priced ~36 hours before deliveryEarly-day intervals (00:00) are priced ~12 hours before delivery Why Prices Jump at Midnight: Forecast Uncertainty: Weather, demand, and renewable generation forecasts are more uncertain 36 hours ahead than 12 hours aheadRisk Buffer: Late-day prices include a risk premium for this uncertaintyIndependent Days: Each day has its own min/max/avg calculated from its 96 intervalsRelative Classification: Periods are classified based on their position within the day's price range, not absolute prices Example: # Day 1 (low volatility, narrow range) Price range: 18-22 ct/kWh (4 ct span) Daily average: 20 ct/kWh 23:45: 18.5 ct/kWh β†’ 7.5% below average β†’ BEST PRICE βœ… # Day 2 (low volatility, narrow range) Price range: 17-21 ct/kWh (4 ct span) Daily average: 19 ct/kWh 00:00: 18.6 ct/kWh β†’ 2.1% below average β†’ PEAK PRICE ❌ # Observation: Absolute price barely changed (18.5 β†’ 18.6 ct) # But relative position changed dramatically: # - Day 1: Near the bottom of the range # - Day 2: Near the middle/top of the range When This Occurs: Low-volatility days: When price span is narrow (< 5 ct/kWh)Stable weather: Similar conditions across multiple daysMarket transitions: Switching between high/low demand seasons How to Detect: Check the volatility sensors to understand if a period flip is meaningful: # Check daily volatility (available in integration) sensor.tibber_home_volatility_today: 8.2% # Low volatility sensor.tibber_home_volatility_tomorrow: 7.9% # Also low # Low volatility (< 15%) means: # - Small absolute price differences between periods # - Classification changes may not be economically significant # - Consider ignoring period classification on such days Handling in Automations: You can make your automations volatility-aware: # Option 1: Only act on high-volatility days automation: - alias: "Dishwasher - Best Price (High Volatility Only)" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: - condition: numeric_state entity_id: sensor.tibber_home_volatility_today above: 15 # Only act if volatility > 15% action: - service: switch.turn_on entity_id: switch.dishwasher # Option 2: Check absolute price, not just classification automation: - alias: "Heat Water - Cheap Enough" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: - condition: numeric_state entity_id: sensor.tibber_home_current_interval_price_ct below: 20 # Absolute threshold: < 20 ct/kWh action: - service: switch.turn_on entity_id: switch.water_heater # Option 3: Use per-period day volatility (available on period sensors) automation: - alias: "EV Charging - Volatility-Aware" trigger: - platform: state entity_id: binary_sensor.tibber_home_best_price_period to: "on" condition: # Check if the period's day has meaningful volatility - condition: template value_template: > {{ state_attr('binary_sensor.tibber_home_best_price_period', 'day_volatility_%') | float(0) > 15 }} action: - service: switch.turn_on entity_id: switch.ev_charger Available Per-Period Attributes: Each period sensor exposes day volatility and price statistics: binary_sensor.tibber_home_best_price_period: day_volatility_%: 8.2 # Volatility % of the period's day day_price_min: 1800.0 # Minimum price of the day (ct/kWh) day_price_max: 2200.0 # Maximum price of the day (ct/kWh) day_price_span: 400.0 # Difference (max - min) in ct These attributes allow automations to check: "Is the classification meaningful on this particular day?" Summary: βœ… Expected behavior: Periods are evaluated per-day, midnight is a natural boundaryβœ… Market reality: Late-day prices have more uncertainty than early-day pricesβœ… Solution: Use volatility sensors, absolute price thresholds, or per-period day volatility attributes ","version":"Next 🚧","tagName":"h3"},{"title":"Advanced Topics​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#advanced-topics","content":" For advanced configuration patterns and technical deep-dive, see: Automation Examples - Real-world automation patternsActions - Using the tibber_prices.get_chartdata action for custom visualizations ","version":"Next 🚧","tagName":"h2"},{"title":"Quick Reference​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#quick-reference","content":" Configuration Parameters: Parameter\tDefault\tRange\tPurposebest_price_flex\t15%\t0-100%\tSearch range from daily MIN best_price_min_period_length\t60 min\t15-240\tMinimum duration best_price_min_distance_from_avg\t5%\t0-20%\tQuality threshold best_price_max_level\tany\tany/cheap/vcheap\tAbsolute quality best_price_max_level_gap_count\t0\t0-10\tGap tolerance enable_min_periods_best\ttrue\ttrue/false\tEnable relaxation min_periods_best\t2\t1-10\tTarget periods per day relaxation_attempts_best\t11\t1-12\tFlex levels (attempts) per day Peak Price: Same parameters with peak_price_* prefix (defaults: flex=-15%, same otherwise) ","version":"Next 🚧","tagName":"h3"},{"title":"Price Levels Reference​","type":1,"pageTitle":"Period Calculation","url":"/hass.tibber_prices/user/period-calculation#price-levels-reference","content":" The Tibber API provides price levels for each 15-minute interval: Levels (based on trailing 24h average): VERY_CHEAP - Significantly below averageCHEAP - Below averageNORMAL - Around averageEXPENSIVE - Above averageVERY_EXPENSIVE - Significantly above average Last updated: November 20, 2025Integration version: 2.0+ ","version":"Next 🚧","tagName":"h3"}],"options":{"id":"default"}} \ No newline at end of file diff --git a/user/sensors.html b/user/sensors.html new file mode 100644 index 0000000..78d068d --- /dev/null +++ b/user/sensors.html @@ -0,0 +1,109 @@ + + + + + +Sensors | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Sensors

    +
    +

    Note: This guide is under construction. For now, please refer to the main README for available sensors.

    +
    +
    +

    Tip: Many sensors have dynamic icons and colors! See the Dynamic Icons Guide and Dynamic Icon Colors Guide to enhance your dashboards.

    +
    +

    Binary Sensors​

    +

    Best Price Period & Peak Price Period​

    +

    These binary sensors indicate when you're in a detected best or peak price period. See the Period Calculation Guide for a detailed explanation of how these periods are calculated and configured.

    +

    Quick overview:

    +
      +
    • Best Price Period: Turns ON during periods with significantly lower prices than the daily average
    • +
    • Peak Price Period: Turns ON during periods with significantly higher prices than the daily average
    • +
    +

    Both sensors include rich attributes with period details, intervals, relaxation status, and more.

    +

    Core Price Sensors​

    +

    Coming soon...

    +

    Statistical Sensors​

    +

    Coming soon...

    +

    Rating Sensors​

    +

    Coming soon...

    +

    Diagnostic Sensors​

    +

    Chart Metadata​

    +

    Entity ID: sensor.tibber_home_NAME_chart_metadata

    +
    +

    ✨ New Feature: This sensor provides dynamic chart configuration metadata for optimal visualization. Perfect for use with the get_apexcharts_yaml action!

    +
    +

    This diagnostic sensor provides essential chart configuration values as sensor attributes, enabling dynamic Y-axis scaling and optimal chart appearance in rolling window modes.

    +

    Key Features:

    +
      +
    • Dynamic Y-Axis Bounds: Automatically calculates optimal yaxis_min and yaxis_max for your price data
    • +
    • Automatic Updates: Refreshes when price data changes (coordinator updates)
    • +
    • Lightweight: Metadata-only mode (no data processing) for fast response
    • +
    • State Indicator: Shows pending (initialization), ready (data available), or error (service call failed)
    • +
    +

    Attributes:

    +
      +
    • timestamp: When the metadata was last fetched
    • +
    • yaxis_min: Suggested minimum value for Y-axis (optimal scaling)
    • +
    • yaxis_max: Suggested maximum value for Y-axis (optimal scaling)
    • +
    • currency: Currency code (e.g., "EUR", "NOK")
    • +
    • resolution: Interval duration in minutes (usually 15)
    • +
    • error: Error message if service call failed
    • +
    +

    Usage:

    +

    The tibber_prices.get_apexcharts_yaml action automatically uses this sensor for dynamic Y-axis scaling in rolling_window and rolling_window_autozoom modes! No manual configuration needed - just enable the action's result with config-template-card and the sensor provides optimal Y-axis bounds automatically.

    +

    See the Chart Examples Guide for practical examples!

    +
    +

    Chart Data Export​

    +

    Entity ID: sensor.tibber_home_NAME_chart_data_export +Default State: Disabled (must be manually enabled)

    +
    +

    ⚠️ Legacy Feature: This sensor is maintained for backward compatibility. For new integrations, use the tibber_prices.get_chartdata service instead, which offers more flexibility and better performance.

    +
    +

    This diagnostic sensor provides cached chart-friendly price data that can be consumed by chart cards (ApexCharts, custom cards, etc.).

    +

    Key Features:

    +
      +
    • Configurable via Options Flow: Service parameters can be configured through the integration's options menu (Step 7 of 7)
    • +
    • Automatic Updates: Data refreshes on coordinator updates (every 15 minutes)
    • +
    • Attribute-Based Output: Chart data is stored in sensor attributes for easy access
    • +
    • State Indicator: Shows pending (before first call), ready (data available), or error (service call failed)
    • +
    +

    Important Notes:

    +
      +
    • ⚠️ Disabled by default - must be manually enabled in entity settings
    • +
    • ⚠️ Consider using the service instead for better control and flexibility
    • +
    • ⚠️ Configuration updates require HA restart
    • +
    +

    Attributes:

    +

    The sensor exposes chart data with metadata in attributes:

    +
      +
    • timestamp: When the data was last fetched
    • +
    • error: Error message if service call failed
    • +
    • data (or custom name): Array of price data points in configured format
    • +
    +

    Configuration:

    +

    To configure the sensor's output format:

    +
      +
    1. Go to Settings β†’ Devices & Services β†’ Tibber Prices
    2. +
    3. Click Configure on your Tibber home
    4. +
    5. Navigate through the options wizard to Step 7: Chart Data Export Settings
    6. +
    7. Configure output format, filters, field names, and other options
    8. +
    9. Save and restart Home Assistant
    10. +
    +

    Available Settings:

    +

    See the tibber_prices.get_chartdata service documentation below for a complete list of available parameters. All service parameters can be configured through the options flow.

    +

    Example Usage:

    +
    # ApexCharts card consuming the sensor
    type: custom:apexcharts-card
    series:
    - entity: sensor.tibber_home_chart_data_export
    data_generator: |
    return entity.attributes.data;
    +

    Migration Path:

    +

    If you're currently using this sensor, consider migrating to the service:

    +
    # Old approach (sensor)
    - service: apexcharts_card.update
    data:
    entity: sensor.tibber_home_chart_data_export

    # New approach (service)
    - service: tibber_prices.get_chartdata
    data:
    entry_id: YOUR_ENTRY_ID
    day: ["today", "tomorrow"]
    output_format: array_of_objects
    response_variable: chart_data
    + + \ No newline at end of file diff --git a/user/sitemap.xml b/user/sitemap.xml new file mode 100644 index 0000000..3495937 --- /dev/null +++ b/user/sitemap.xml @@ -0,0 +1 @@ +https://jpawlowski.github.io/hass.tibber_prices/user/markdown-pageweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/weekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/actionsweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/automation-examplesweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/chart-examplesweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/conceptsweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/configurationweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/dashboard-examplesweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/dynamic-iconsweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/faqweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/glossaryweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/icon-colorsweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/installationweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/introweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/period-calculationweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/sensorsweekly0.5https://jpawlowski.github.io/hass.tibber_prices/user/troubleshootingweekly0.5 \ No newline at end of file diff --git a/user/troubleshooting.html b/user/troubleshooting.html new file mode 100644 index 0000000..5949fb4 --- /dev/null +++ b/user/troubleshooting.html @@ -0,0 +1,31 @@ + + + + + +Troubleshooting | Tibber Prices Integration + + + + + + + + + +
    Version: Next 🚧

    Troubleshooting

    +
    +

    Note: This guide is under construction.

    +
    +

    Common Issues​

    +

    Coming soon...

    +

    Debug Logging​

    +

    Coming soon...

    +

    Getting Help​

    +
      +
    • Check existing issues
    • +
    • Open a new issue with detailed information
    • +
    • Include logs, configuration, and steps to reproduce
    • +
    + + \ No newline at end of file